You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Why does plannotator-tui re-implement Plannotator's logic instead of sharing one engine?
#2989
Hi! I use Plannotator and plannotator-tui (through Herdr Annotate) side by side every day, and I keep a personal fork of both to try out the review loop discussed in #1116.
Working on both clients, I keep writing the same behaviour twice: once in TypeScript for the browser, once in Rust for the terminal. Upstream already does it in several places:
reading an agent's last message: plannotator-tui-hosts re-implements session-log.ts and codex-session.ts ("knowledge copied, not code", decision 8 in plannotator-tui's docs/decisions.md);
finding an annotation's words again in a document that changed: resolve.rs follows Plannotator's own resolver;
the feedback archive, written by both apps in one format (packages/shared/feedback-archive.ts names both writers);
and soon the shared review state of plannotator-tui#59, which both apps will read and write.
In my fork, keeping a comment thread in place when the agent rewrites its passage (its lines followed through a line diff, as crit does) meant writing the same algorithm twice, plus a shared table of cases so the two cannot drift.
Decision 8 gives one reason: a standalone app cannot depend on the Plannotator CLI (a Bun + browser install). I'd like to understand the motivations more broadly:
Is the separation a deliberate long-term design (a terminal app that works without Plannotator installed), or a consequence of how the TUI started?
Would you consider one engine both clients use, for example the plannotator CLI exposing the review state, anchoring and feedback composition as commands with a versioned JSON contract, the TUI keeping rendering and input?
If not, is there a preferred way to keep the two implementations in step (shared fixtures, conformance tests)?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Hi! I use Plannotator and plannotator-tui (through Herdr Annotate) side by side every day, and I keep a personal fork of both to try out the review loop discussed in #1116.
Working on both clients, I keep writing the same behaviour twice: once in TypeScript for the browser, once in Rust for the terminal. Upstream already does it in several places:
plannotator-tui-hostsre-implementssession-log.tsandcodex-session.ts("knowledge copied, not code", decision 8 in plannotator-tui'sdocs/decisions.md);resolve.rsfollows Plannotator's own resolver;packages/shared/feedback-archive.tsnames both writers);In my fork, keeping a comment thread in place when the agent rewrites its passage (its lines followed through a line diff, as crit does) meant writing the same algorithm twice, plus a shared table of cases so the two cannot drift.
Decision 8 gives one reason: a standalone app cannot depend on the Plannotator CLI (a Bun + browser install). I'd like to understand the motivations more broadly:
plannotatorCLI exposing the review state, anchoring and feedback composition as commands with a versioned JSON contract, the TUI keeping rendering and input?Thanks for both tools!
All reactions