Releases: runsascoded/ghpr
v0.1.9
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Full Changelog: v0.1.8...v0.1.9
v0.1.8
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Full Changelog: v0.1.7...v0.1.8
v0.1.7
What's Changed
Bug Fixes
- Fix trailing newline loss in
write_description_with_link_ref— GitHub strips trailing newlines from PR descriptions, causing diff thrashing on subsequent pulls - Fix spurious
\ No newline at end of fileinrender_unified_diff— indicator now only appears when the two sides actually differ in trailing newline status
Improvements
ghpr diffandghpr push -nnow warn when showing diffs for comments authored by others (which won't be pushed without-C)ghpr pushsummary distinguishes "unchanged" comments from ownership-skipped ones, with a clear⚠hint aboutghprp -C
Testing & Docs
- Fix pytest collection (
pythonpath = ["src"]) so all test modules resolve correctly - Add tests for trailing newline handling and diff newline indicator
- Update CLAUDE.md and README.md with recent changes
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Shell Integration Fix + Improved CLI Help
Bug Fixes
- Fixed
ghprcshell function: Now uses aGHPR_DIR:marker to reliably extract the cloned directory path, fixing thecdinto cloned directory afterghpr clone
Improvements
- Better CLI help: Added docstrings to all commands so
ghpr --helpshows useful descriptions for every command - Documentation: Added note about GitHub gist MIME type limitation (videos won't preview inline; use GitHub's native upload for video files)
Full Changelog: v0.1.5...v0.1.6
v0.1.5
Critical Bug Fix + Shell Integration Improvements
This release fixes a critical bug in v0.1.4 and improves the shell integration experience.
Bug Fixes
- Critical: Fixed
clonecommand argument order bug that prevented cloning from working (introduced in decorator refactoring in v0.1.4)
Improvements
- Shell integration:
ghprcnow automaticallycds into the cloned directory (similar toghpri) - Better UX: Removed automatic browser opening when creating gist mirrors
- Shell integration:
ghpr clonenow outputs the directory path to stdout for easier scripting
Note
v0.1.4 is broken due to the clone bug. Please use v0.1.5 instead.
Full Changelog: v0.1.4...v0.1.5
v0.1.4
What's Changed
- Improve
createandinitworkflows by @ryan-williams in #5 - Improve help text, refactor command registration, and fix test assertions by @ryan-williams in #6
New Contributors
- @ryan-williams made their first contribution in #5
Full Changelog: v0.1.3...v0.1.4
v0.1.3
ghpr initcreatesgh/new/: Automatically creates and initializes thegh/new/directory- Shell integration auto-cd:
ghprifunction now automatically cd's togh/new/after init - README improvements: Added prominent examples using real PRs/Issues (marin#1773, marin#1723)
- PyPI badge: Added version badge to README
- Shell integration packaging: Shell files (
.bash,.fish) now properly included in PyPI package pullsingle commit: Changed to create one atomic commit instead of separate commits for description and commentspullIssue support: Fixed to work with Issues, not just PRs- All 92 tests passing
Full Changelog: v0.1.2...v0.1.3
v0.1.2
-
Issue Support: Fixed
pullcommand to work with Issues, not just PRs- Changed from
get_pr_metadata()toget_item_metadata()for unified handling - Properly detects item type and adjusts messaging accordingly
- Changed from
-
Single Atomic Commit: Changed to create one comprehensive commit instead of separate commits for description and comments
- Commit message format:
Pull from {issue/PR}: description, X new comment(s), Y updated comment(s) - Stages all changes then commits once at the end
- Commit message format:
-
Description Filename Handling: Uses proper
repo#number.mdformat instead of hardcodedDESCRIPTION.md -
Legacy Migration: Added support for migrating old comment filenames (
z{id}.md→z{id}-{author}.md) -
All 92 tests passing
Full Changelog: v0.1.1...v0.1.2
v0.1.1
-
Directory naming: Fixed nested
gh/gh/{number}/bug when cloning from withingh/directory- Now correctly creates
{git_root}/gh/{number}/regardless of current directory - From git root →
gh/1690/ - From
gh/→1690/ - From
gh/subdir/→../1690/
- Now correctly creates
-
Ownership check: Fixed clone command editing others' PRs/Issues
- Now only adds gist footer if current user is the PR/Issue author
- Prevents "edited by" appearing on others' PRs
-
Visible footer extraction: Made
extract_gist_footer()more permissive- Now handles both 3-line and 4-line visible footer formats
- Accepts optional blank line before "Synced with..." line
-
Added 54 new tests across 4 test modules
test_patterns.py: PR/Issue spec parsing (10 tests)test_files.py: Description file operations (20 tests)test_ownership.py: Ownership checks (6 tests)test_gist.py: Gist footer operations (18 tests)
-
Total: 92 tests, all passing
New comprehensive test coverage for:
- PR spec parsing: full URLs, owner/repo#number, just numbers
- Description file operations: finding, reading, writing with link refs
- Ownership validation: user matching for PR/Issue editing
- Gist footer handling: visible/hidden formats, extraction, addition
- Roundtrip testing: ensure write→read preserves data
Full Changelog: v0.1.0...v0.1.1
v0.1.0
First public release of ghpr:
- Clone and sync GitHub PR/Issue descriptions locally
- Bidirectional sync with GitHub
- Gist mirroring as read replica
- Comment support with draft workflow
- Image upload to gists
- Modular architecture with separate command modules
- Uses utz 0.21.3 for git utilities
Full Changelog: https://github.com/runsascoded/ghpr/commits/v0.1.0