Skip to content

feat: add a Feedback panel that hands canvas notes to a coding agent - #44

Closed
pat-mw wants to merge 1 commit into
flowtricks:mainfrom
pat-mw:feat/visual-feedback
Closed

pat-mw wants to merge 1 commit into
flowtricks:mainfrom
pat-mw:feat/visual-feedback

Conversation

@pat-mw

@pat-mw pat-mw commented Oct 20, 2026

Copy link
Copy Markdown

Notes pin to the current canvas selection and live in one file, .stacki/feedback.json, inside the open project (git-excluded with the rest of .stacki/). Claude Code reads that file with its own Read tool, edits the project, and flips each item's "done"; Stacki re-reads it on window focus, when the tab opens, and before every write. No server, port or watcher: the file is the interface, because the agent can already read the project.

  • shared/ipc/feedback.ts: the item and file parsers (version 1, bounded, ids unique). Agent-appended items may omit createdAt and use keys: [].
  • feedback:read / feedback:write: one channel pair through the usual six touch points. Main resolves each item's file:line trail from its selection keys with selectionTrail on every read and write, and writes through writeProjectText so the write is atomic like every project write.
  • Every renderer change reads the file fresh, applies itself, then writes, so an agent's done flips made in the meantime are not overwritten.
  • Feedback rail tab (M), with Copy for agent rendering the handoff text.
  • Numbered pins on the canvas for open notes at the current drill-in level; their paths join the frame's tracked set so it measures them.

shortcut: pins are index paths, not handle-carried spans; a structural edit above a pinned node moves the pin to its neighbour. Upgrade by storing a byte span mapped with shared/engine/mapSpan.ts if notes start living across editing sessions.

Notes pin to the current canvas selection and live in one file,
.stacki/feedback.json, inside the open project (git-excluded with the rest
of .stacki/). Claude Code reads that file with its own Read tool, edits the
project, and flips each item's "done"; Stacki re-reads it on window focus,
when the tab opens, and before every write. No server, port or watcher:
the file is the interface, because the agent can already read the project.

- shared/ipc/feedback.ts: the item and file parsers (version 1, bounded,
  ids unique). Agent-appended items may omit createdAt and use keys: [].
- feedback:read / feedback:write: one channel pair through the usual six
  touch points. Main resolves each item's file:line trail from its
  selection keys with selectionTrail on every read and write, and writes
  through writeProjectText so the write is atomic like every project write.
- Every renderer change reads the file fresh, applies itself, then writes,
  so an agent's done flips made in the meantime are not overwritten.
- Feedback rail tab (M), with Copy for agent rendering the handoff text.
- Numbered pins on the canvas for open notes at the current drill-in level;
  their paths join the frame's tracked set so it measures them.

shortcut: pins are index paths, not handle-carried spans; a structural edit
above a pinned node moves the pin to its neighbour. Upgrade by storing a
byte span mapped with shared/engine/mapSpan.ts if notes start living across
editing sessions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DAFvSVVtdvBZHDz2thvb12
@pat-mw
pat-mw marked this pull request as draft October 20, 2026 11:28
@pat-mw pat-mw closed this Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants