Repository navigation
Promachos mode: chat-first view with bubbles #116
Description
Activity
- added a parent issue
on Oct 1, 2026 What: #116 is owned exclusively in the existing
feat/116-promachos-modeworktree, with one writer and one independent reviewer.
Why: The user settled the prior ownership collision and requested a fork-owned chat-first view.
So what: This dispatcher delivers one reviewed PR against main without merge; installed-build acceptance stays with the coordinator.Elon record
Requirements and who asked: User and #116 require standard/Promachos switching, designated home conversations and creation, paragraph bubbles preserving code/lists, working indicator, functional existing questions/approvals, web and desktop. This advances the Objective's Promachos bubble conversations.
Deleted: No persona delivery, mobile, new orchestration contracts, separate bot backend, extra dispatcher, or Prism role implementation. No versioning by design.
Bottleneck: Preserve existing composer/question/approval behavior without copying the upstream-churning ChatView. One worker owns the coupled UI slice; dispatcher inspects and performs integrated proof after integration.
Checked myself: Full #116 and parent #113, clean exclusive worktree at0db8b3f19549ef369a611883e111ae20760364c8, refreshed origin/main equal HEAD, prototype HTML and actual a/b/c images, existing AppSidebarLayout/_chat routing and ChatView timeline seam.Decisions and continuation
Use existing thread state and existing functional composer/question/approval paths, with Promachos presentation in fork-owned modules and minimal integration hooks. Home selection includes environment identity so multi-environment projects remain distinct. Normal conversation creation is isolated behind one function until the user instructs #115 integration. No rebase or sibling contact until instructed. Before/after and behavior screenshots are from isolated dev state; installed desktop, persona across harnesses and Prism integration remain coordinator acceptance items.
Workspace:
/Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/116-promachos-mode; branchfeat/116-promachos-mode; intended basemain. No writes to canonical checkout or inherited t3code cwd. Prior retired threads are not contacted. Exactly one PR, no merge, no scratch commits.What: UI write ownership transferred cleanly to an explicitly selected Claude Opus 5.5 worker.
Why: The user added a mandatory UI-writer model rule before implementation began.
So what: Opus exclusively writes #116; this Codex dispatcher remains responsible for acceptance proof, independent review and the single unmerged PR.Verified former worker
sub.sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-6c369303ffb1.dispatcher-7a9741a708e1.worker-3e065eb33700idle, relinquished ownership, no edits or commits. Independently verified clean branchfeat/116-promachos-modeat0db8b3f19549ef369a611883e111ae20760364c8. New workersub.sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-6c369303ffb1.dispatcher-7a9741a708e1.worker-d2451b132398returnedinstanceId: claudeAgent,model: claude-opus-5-5from spawn_thread. No competing writer.Prototype a/c owns the visual target; b rooms belong only to Spectrum. No fake agents or read receipts. Real action handlers stay intact. #121 person-picker sidebar consumes our contained AppSidebarLayout integration seam. #115 conversation creation seam remains unwired until user instruction.
Setup proof:
pnpm exec vp ipassed, prepare passed (Node 26 versus requested 24 engine warning). Bun absent; Python sqlite opened the source read-only and completedVACUUM INTOto task-local.t3/userdata/state.sqlite. No live database writes, no server started, no port 3773 operations. T3 preview is available. If GitHub image upload is unavailable, updated common authorizes evidence paths under/tmp/promachos-coord/evidence/116/for coordinator upload.What: The #116 candidate is being rebased onto current main before final proof and independent review.
Why: The merged #120 right-panel surface switch changes the shared ChatView integration.
So what: #116 retains normal conversation creation until explicit authorization to wire merged #115.Durable #115 seam, supplied by the user: dispatch normal
thread.turn.startwith a new top-levelthreadId,bootstrap.createThreadwith valid placeholdermodelSelection, andprismRole: "promachos". The server replaces the model with the first eligible role model. Inspect the configured Promachos role list: an EMPTY list starts normally withoutprismRole, so unconfigured users can talk. A configured list that refuses capacity must show the refusal message, with no silent normal fallback. Empty or all-ineligible server role lists produceOrchestrationDispatchCommandError.This is a future contract, not authorization to wire. Wire only after the user confirms PR #125 merged and after rebasing. Current implementation keeps the single
useStartPromachosConversationfunction as the normal entry seam. No persona changes.- added 6 commits that reference this issue
on Oct 1, 2026 What: Promachos mode shows home conversations in paragraph bubbles and starts configured conversations through Prism.
Why: The coding timeline is noisy for conversation, and Promachos needs his configured role model when a conversation starts.
So what: This PR is review-ready with current-head CI, real-home proof and independent approval. The coordinator owns installed acceptance and evidence upload. No merge.PR: #128. Advances the current Objective, Promachos chats in bubbles. Candidate
3700bb61179c4ad2353a84d78016f488057c57adis based on main6acb2cf4887eeb709c499bed67ac018a6cb0a8e4, including merged #115, #120, #126 and #129. Earlier candidates and unwired handoffs are superseded.Fork-owned mode, home picker and conversation components keep upstream hooks small. Home selection includes environment identity. Markdown bubbles use one existing parser: fenced and indented code, lists, tables and shared reference definitions remain valid. The existing composer question and approval cards render inline with their real handlers, and remain attached to the composer when a retained timeline belongs to another thread. The shared right panel is reused. Outbound bubbles use theme foreground/background colors and invert in dark mode.
The single creation entry opens a normal home draft. Its first send wraps the existing
thread.turn.start: a non-empty configured Promachos list addsprismRole: "promachos"to a new top-levelbootstrap.createThread, retaining a valid placeholder model. The server selects the eligible role model. An empty list starts normally without the role. Refusal stays visible and restores the draft without a normal fallback. Configured Promachos disables multi-model fan-out consistently across composer, send and workspace controls; returning to Code restores the saved selection.Requirements and who asked: User and #116 require mode switching, home conversations, paragraph bubbles with intact Markdown, working indicator and functional inline cards; the user authorized the merged #115 role seam and real-home proof.
Deleted: Persona authorship, Spectrum rooms, fake agents/read receipts, mobile, new Markdown dependency and duplicated card handlers.
Bottleneck: Prove the real creation/refusal seam and thread-owned cards without widening ChatView churn.
Checked myself: Inspected prototype a/c/a-dark and HTML; actual parser cases including indented-code blank lines and shared references; real-home dispatch, persisted server model and harmless replies; refusal/no fallback; saved-selection transitions; light/dark bubbles and existing card dispatch/right panel. Fixed observed sidebar overflow and reviewed portal and selection bugs through the sole Opus writer.Proof:
- On final HEAD, in
apps/web:pnpm exec tsc --noEmitpasses;pnpm exec vp test run src/components/promachos src/components/ChatView.logic.test.ts src/components/chat/MessagesTimeline.test.tsx src/components/chat/ComposerPendingApprovalPanel.test.tsx src/components/chat/ComposerPendingUserInputPanel.test.tsxpasses 231 tests in 8 files. Targeted lint passes with no errors/warnings in Promachos and ChatView.bash scripts/fork-check.shpasses.git diff --checkpasses. - Behavioral tests decode recorded commands with the real contract. They cover empty/configured lists, top-level/existing/child threads, unchanged refusal with one dispatch, and effective saved selection. Markdown tests parse actual Markdown, including indented code and shared definitions; removing the plugin makes all five fail. The portal regression fails under the old ownership behavior.
- Primary integrated T3 preview used isolated worktree
.t3, seeded via read-onlyVACUUM INTO. Actual/Users/lukaszmaj/dev/promachoswas added through the UI and selected as home. Its instruction/direction files were read only. Home HEAD remainsc2441fcb3ad0e1c3fef93c01b378f597bfe1f858, clean; provider prompts explicitly prohibited tools/file changes and persona quotations. - Empty list: real normal bootstrap created thread
c2cf0687-79ca-4422-bfc5-0a4c0151f01ain real-home projectff8fbcd0-3b04-4ee5-9482-0eb15aaebce3, noprismRole, harmless real reply in two bubbles. - Configured list: one bootstrap for thread
a73ab281-89ac-4345-9ac1-c7f420db4132carried the role and valid Codex/GPT-6.1-Sol placeholder. Read-only DB inspection confirmed the server selected Codex/GPT-6-Luna from the role list; the real reply was two paragraphs and one blank-line-preserving fenced block. The screenshot's composer model is the placeholder, not proof of server model selection. - Refusal on final rebased HEAD: isolated all-ineligible model fixture returned exactly
No eligible model for this role and lane: codex/promachos-proof-unavailable (model not offered).The draft was restored and captured one role dispatch with no fallback. This exercises the real server refusal path; no real subscription was exhausted to manufacture a capacity limit. - Saved multi-model choice in Code became one effective model in configured Promachos. Workspace changed current checkout → new worktree → current checkout; Code restored both saved models. No worktree or provider turn was launched for this selector check.
- Refreshed post-rebase real-home light/dark and Code/Promachos views preserve narrow paragraph bubbles and whole code. Earlier unchanged UI proof covers 208/256px switch fit, home filtering/persistence, static working indicator, rich Markdown and right-panel open/close. Question selection and approval decline emitted existing response commands with correct thread/request identity; fixture requests had no bound provider, so provider resumption remains installed acceptance.
Current-head CI completed SUCCESS on the exact candidate: Check, Test, all three server shards, Rust and Release Smoke pass. Fork Stack Model and Native fingerprint diff pass. CI owns complete repository checks; no local repo-wide proof is claimed. Prior runs are superseded for readiness. Marking ready retriggered ancillary Native fingerprint/label jobs on the same head; these reruns are pending at handoff, while the complete CI run remains SUCCESS.
Independent approve: exact HEAD
3700bb61179c4ad2353a84d78016f488057c57adagainst6acb2cf4887eeb709c499bed67ac018a6cb0a8e4, reviewer threadsub.sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-6c369303ffb1.dispatcher-7a9741a708e1.reviewer-f849a17bc606. GitHubreview/independentis success on this SHA. Older reviews are superseded.Evidence fallback is explicitly authorized. GitHub binary upload is unavailable through exposed tools; the coordinator uploads these files. No proof assets are committed. Primary real-home files:
/tmp/promachos-coord/evidence/116/real-home-standard-before.png/tmp/promachos-coord/evidence/116/real-home-after.png/tmp/promachos-coord/evidence/116/real-home-prism-routing.png(same real reply image; routing independently verified by dispatch and persisted model)/tmp/promachos-coord/evidence/116/real-home-dark.png/tmp/promachos-coord/evidence/116/real-home-refusal.png
Supplemental earlier card/Markdown fixtures:
/tmp/promachos-coord/evidence/116/inline-question.png,inline-approval.png,promachos-after.png, andcards-and-switching.mp4. The coordinator personally inspectedreal-home-after.pngandreal-home-refusal.png, plus the earlier rich-block and question files. Synthetic proof home is supplemental only.Reversible assumptions: mode/home are local client preferences; bubbles apply to home threads only while enabled; no shortcut/command-palette entry. Persona remains user-owned. #121 sidebar seam stays contained in
AppSidebarLayout.tsx's Promachos branch andPromachosSidebar.tsx.Agent Observer comment was refreshed with
syncthenpublish --task toolboxmd/chromeria#116 --repo toolboxmd/chromeria --pr 128. Attribution/usage coverage gap: 75 sessions have usage bound to no task and 0 responses are attributed. Displayed $0.00 is not a measured actual total. Observer repair is outside #116.Open coordinator acceptance: installed desktop after merge, real installed question/approval provider resumption, and evidence upload. #115 is wired, not deferred. The isolated dev server was stopped through its retained session after capturing listener PIDs 10332/10325; ports 14668/6628 are free. Writer/reviewer are confirmed idle, and the clean branch/worktree remain for this open PR. No merge/installation. No versioning by design. Website impact: none, fork application UI only.
UI implementation: Claude Opus 5.5 through T3 Code Claude harness. Coordination/proof: GPT-6.1-Sol through T3 Code Codex harness. Independent review: Prism-selected GPT-6-Luna through Codex.
- On final HEAD, in
- added 15 commits that reference this issue
on Oct 1, 2026
What: Chromeria has a Promachos mode: a chat-first view of the Promachos's conversations with his replies as bubbles.
Why: The user wants to talk to the Promachos like a colleague, and the standard thread view shows work logs and full-width markdown.
So what: An agent builds it; the user reviews the look in the desktop app.
Parent
#113
Outcome
A switch moves between the standard view and Promachos mode. Promachos mode lists the conversations in the project the user designates as the Promachos home, using Chromeria's familiar layout; his replies show as bubbles, one per short paragraph, tool activity collapses to a working indicator, and question and approval cards appear in chat.
Elon record
/tmp/bots-prototype/shows the intended look.ChatView.tsxchurn upstream (241 commits in 90 days), which is why the view lives in new files.Acceptance criteria
Non-goals
AGENTS.md).Blocked by
None
Required proof