Commit Graph
7 Commits
Author SHA1 Message Date
fez5587andClaude Fable 5 b141900ad7 Office: company switcher tabs + active objective line
Tabs render only when more than one active company exists; objective line
shows the newest in-progress objective above the canvas.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 13:33:48 -05:00
fez5587andClaude Fable 5 f41eac033f Research room + task kinds
- Decomposition now classifies each task kind (build/research/review);
  research/review map to matching work_item types, dispatcher dispatches
  them alongside task/subtask/defect
- Office: walled research room (bookshelves, reading table, own floor)
  bottom-right; generalized room routing (per-room door waypoints);
  workers on research-type tasks walk there and read (page-flip anim)
  instead of sitting at a desk; break area moved to mid-floor

Verified live: research directive decomposed into 4 research + 1 build
task; worker rendered at the reading table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 13:20:08 -05:00
fez5587andClaude Fable 5 a0bae6dc51 Office pathing fixes: room test uses x+y, door waypoints, live typing anim
- inConf() was x-only, so the break area routed through the conference door
- door crossings now go west-waypoint -> doorway -> target (no wall clipping)
- workers face the viewer at their desk; typing anim/monitor glow computed
  from live state in the draw loop instead of waiting for the next poll

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 12:28:10 -05:00
fez5587andClaude Fable 5 b3138fb5b0 Office v1: top-down pixel office + sibling-context handoff in dispatch
- /office rebuilt Chrono Trigger style: tile map (work floor, walled
  conference room with door, break area), 4-direction sprites with walk
  cycles; employees path through the door and walk to their desk when
  working (typing anim, lit monitor), to the conference room with a "?"
  bubble when blocked on an answer, to the water cooler when idle. All
  movement derives from polled engine state only.
- Dispatcher now appends completed-sibling task reports to each task body
  so decomposed tasks are no longer blind to each other's output (fixes
  the "apply the patch task A made" capability block).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 12:24:40 -05:00
fez5587andClaude Fable 5 c2320c3dc8 Clarification answer path + pixel office v0
- POST /companies/{slug}/work-items/{id}/answer: shareholder answers a
  blocked item; answer is appended to the description and the existing
  kanban task is rerun (status=ready + updated body), or the item goes
  back to ready for fresh dispatch if it was never dispatched
- Dashboard: answer button on blocked work item rows (native prompt)
- /office: pixel-art 2D office view — one desk row per employee, avatar
  color by role, LED/typing animation driven only by real engine status,
  live event ticker (PRD 12: no fake activity)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 12:01:37 -05:00
fez5587andClaude Fable 5 fd3feb6a08 Shareholder line: directives endpoint + CEO milestone updates
- POST /companies/{slug}/directives: free-form shareholder message becomes
  an objective (reuses manager decomposition), logs directive.received
- Objective rollup now emits a CEO-voiced milestone.update event via one
  pool call (plain-text fallback if the LLM call fails)
- _chat_structured retries once on empty/invalid JSON from the pool
  (observed empty-content responses breaking protocol extraction)
- Dashboard: per-company shareholder textarea + CEO updates feed; refresh
  skips DOM rewrite while a textarea is focused

Verified end-to-end: directive -> 3 tasks -> rework after handoff block ->
rollup -> CEO milestone update; gaswatch index.html now on-brand.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 11:58:38 -05:00
fez5587andClaude Fable 5 4fd6f3fd1d Slice 1: engine dashboard + persistent company workspaces
- engine/static/index.html served at /: companies, employees, objectives,
  work items, live event feed (5s poll), global pause/resume button.
- Persistent per-company workspace on the Hermes host
  (/opt/data/farmhouse/<slug>, created via files API at company creation);
  dispatcher passes it as kanban workspace_path so artifacts persist across
  tasks instead of dying in scratch dirs.
- hermes_client.mkdir; gaswatch backfilled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 10:08:58 -05:00