Repository navigation
feat(plannotator-tui): add image attachments and multi-reply feedback - #73
Closed
MaterAnime wants to merge 5 commits into
Closed
MaterAnime wants to merge 5 commits into
MaterAnime wants to merge 5 commits into
Conversation
added 5 commits
September 14, 2026 00:55
… instruction additions
…olidate contracts
backnotprop
added a commit
that referenced
this pull request
Oct 27, 2026
`I` (attach-image) opens a one-line path prompt for the selected note, or the selected block's note in the document. It accepts typed, pasted and dropped paths: quotes, `~`, `file://`, shell-escaped spaces, and paths relative to the document's folder. Missing files and non-image extensions are refused with the reason; a path already on the note is ignored. `D` (remove-image) drops the last image. Both are rebindable. Paths are stored under the annotation's `plannotator_tui.images`, omitted when empty, so older records load unchanged. Adding or removing an image makes a sent note pending again. Feedback and `--export` list each image as `Image: <absolute path>` under its note, the rail marks notes with images, and the feedback archive counts them. Files are referenced, never copied or uploaded. Rebuilt from #73. Co-authored-by: MaterAnime <272887717+MaterAnime@users.noreply.github.com>
backnotprop
added a commit
that referenced
this pull request
Oct 27, 2026
`I` (attach-image) opens a one-line path prompt for the selected note, or the selected block's note in the document. It accepts typed, pasted and dropped paths: quotes, `~`, `file://`, shell-escaped spaces, and paths relative to the document's folder. Missing files and non-image extensions are refused with the reason; a path already on the note is ignored. `D` (remove-image) drops the last image. Both are rebindable. Paths are stored under the annotation's `plannotator_tui.images`, omitted when empty, so older records load unchanged. Adding or removing an image makes a sent note pending again. Feedback and `--export` list each image as `Image: <absolute path>` under its note, the rail marks notes with images, and the feedback archive counts them. Files are referenced, never copied or uploaded. Rebuilt from #73. Co-authored-by: MaterAnime <272887717+MaterAnime@users.noreply.github.com>
backnotprop
added a commit
that referenced
this pull request
Oct 27, 2026
`I` (attach-image) opens a one-line path prompt for the selected note, or the selected block's note in the document. It accepts typed, pasted and dropped paths: quotes, `~`, `file://`, shell-escaped spaces, and paths relative to the document's folder. Missing files and non-image extensions are refused with the reason; a path already on the note is ignored. `D` (remove-image) drops the last image. Both are rebindable. Paths are stored under the annotation's `plannotator_tui.images`, omitted when empty, so older records load unchanged. Adding or removing an image makes a sent note pending again. Feedback and `--export` list each image as `Image: <absolute path>` under its note, the rail marks notes with images, and the feedback archive counts them. Files are referenced, never copied or uploaded. Rebuilt from #73. Co-authored-by: MaterAnime <272887717+MaterAnime@users.noreply.github.com>
Contributor
|
Thank you @MaterAnime! The image-attachment half of this was rebuilt on current main in #113, with you as co-author on the commit (the multi-reply half had already shipped). Closing this in favor of that. |
mchowning
pushed a commit
to mchowning/plannotator-tui
that referenced
this pull request
Oct 28, 2026
`I` (attach-image) opens a one-line path prompt for the selected note, or the selected block's note in the document. It accepts typed, pasted and dropped paths: quotes, `~`, `file://`, shell-escaped spaces, and paths relative to the document's folder. Missing files and non-image extensions are refused with the reason; a path already on the note is ignored. `D` (remove-image) drops the last image. Both are rebindable. Paths are stored under the annotation's `plannotator_tui.images`, omitted when empty, so older records load unchanged. Adding or removing an image makes a sent note pending again. Feedback and `--export` list each image as `Image: <absolute path>` under its note, the rail marks notes with images, and the feedback archive counts them. Files are referenced, never copied or uploaded. Rebuilt from plannotator#73. Co-authored-by: MaterAnime <272887717+MaterAnime@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Get the already-implemented plannotator-tui image-annotation work onto a reviewed PR path. The feature adds image-backed annotation/review feedback so Herdr Annotate can eventually let a user include screenshots or pasted images with comments, plus multi-reply feedback aggregation and an Omarchy/Herdr workaround for unreliable selected-terminal-text capture. Preserve that work and produce a PR URL with checks green.
What Changed
Risk Assessment
✅ Low: The changes are bounded to the accepted feature scope, preserve existing delivery boundaries, and address the previously reported defects without introducing substantiated material issues.
Testing
Built the app, passed three focused regression tests, and drove image and multi-reply workflows through the real TUI with isolated storage. Captured an actual terminal screenshot, clipboard exports, and persisted records. All driven scenarios passed; Herdr-specific shortcuts and delivery were not exercised. No full suite, lint, or publication phases ran.
~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/26-real-terminal.png)Evidence: Local attachment export
Evidence: Remote attachment export
Evidence: Persisted annotations
Evidence: File feedback history
Evidence: Combined multi-reply clipboard output
Evidence: Multi-reply feedback history
~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/05-nonimage.svg)Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
cargo build -p plannotator-tuipython ~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/drive.pypython ~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/scenarios.pypython ~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/messages.py— passed after separating Escape and subsequent keystrokes in the driver.cargo test -p plannotator-tui remote_image_destinations_preserve_markdown_delimiterscargo test -p plannotator-tui local_image_destinations_preserve_unix_backslashescargo test -p plannotator-tui parent_components_follow_symlink_targetsUsed isolated tmux sessions to paste a quoted relative image path and reject a directory named directory.png.python ~/.no-mistakes/evidence/01M2F73R8506QH9AHH4BR4DC5E/visual.py— captured the actual foot terminal window using grim.Inspected exported Markdown, OSC 52 clipboard contents, persisted annotations, feedback history, and terminal captures; removed generated worktree data and build outputs.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.