Commit Graph
1037 Commits
Author SHA1 Message Date
ZacharyZhang-NYandClaude Opus 4.8 e58d23bfdc Bring onboarding typography onto the unified scale
The first-run flow still carried its own sizes: a 34px hero, 13/12.5px
intros and helper text, 13px control icons. Restrain the hero to the 24px
display step and move intros/errors to 14px, helper text to 13px, and the
provider/workspace icons to the 16–18px standard. Structure was already
clean (two-pane, single cards) — this is purely scale alignment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 20:15:22 -04:00
ZacharyZhang-NYandClaude Opus 4.8 2c17842345 Verify the inter-agent reply loop end-to-end
Audit of the "agents barely communicate / nothing runs" reports: the
bootstrap run, hiring, delegation, channel messages, file handoffs, and
heartbeat continuation are already covered by autonomous-run.test. The one
untested link was the round trip — an @mention actually waking a teammate
who then replies. This test drives a scripted CEO that hires an engineer
and @mentions them in #engineering, asserts the mention created a queued
chat_mention run for that engineer, executes it, and confirms the engineer
replies inside the same thread (two senders, one thread). The orchestration
is sound; real-world silence is a function of the model's tool-use, not the
control plane.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 20:10:09 -04:00
ZacharyZhang-NYandClaude Opus 4.8 08f39b4f3a Make the Files tree show real file counts, not agent counts
The "Spaces" section badged each department with its agent count, so an
org with one CEO and zero files showed "Executive 1". Clicking it filtered
to that department's files and revealed nothing — the tree advertised a
folder that opened empty. collectDepartments now counts files per
department and omits departments with none, so every badge equals what the
section contains. Unit-tested for file-based counting and empty omission.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:58:56 -04:00
ZacharyZhang-NYandClaude Opus 4.8 edb6dded74 Stop the Runs list from overflowing its pane
The run rows used a .nav-row class that was never defined, so the button
had no width or flex constraint: long run titles pushed the row past the
340px pane and forced a horizontal scrollbar with the title clipped.
Define .nav-row as a constrained selectable row (width:100%, min-width:0)
so the inner title ellipsizes in place. Align the pane and detail
typography to the 14/12 scale while here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:55:26 -04:00
ZacharyZhang-NYandClaude Opus 4.8 8b6b8ba4b7 Refocus the Home dashboard and make metric tiles interactive
The home page was 13 cards deep with empty roll-ups (Today, In progress,
Team duplicated other pages) and a stark full-black goal card that fought
the rest of the surface. Now:
- Three intent cards lead — Quarter goal (light, integrated), Monthly
  budget, and Waiting-on-you with a real "all caught up" empty state.
- A four-up metric strip (workload, run activity, success rate, token
  usage) replaces the redundant budget chart. Each tile lifts on hover
  and its header shows a live readout of the hovered datum.
- Activity (agent runs, recent messages) closes the page.
No data wiring or approval logic changed; HomePage drops 500 → 344 lines.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:51:25 -04:00
ZacharyZhang-NYandClaude Opus 4.8 ea9f27916e Simplify the sidebar into a led primary group + demoted rest
The flat 13-item list read as clutter and reused icons (Team/Meetings,
Work/Sprints, Inbox/Approvals all shared a glyph). Now:
- Primary group leads with the core loop: Home, Work, Team, Messages,
  Runs, Files, Approvals.
- A divider demotes the occasional surfaces: Inbox, Documents,
  Knowledge, Meetings, Sprints, Social — still one click away, nothing
  orphaned (search can't route to several of them).
- Distinct calendar/target/inbox/folder icons end the collisions.
- Every nav glyph is the 18px icon bound in a 24px box; the collapsed
  rail centers icons instead of hiding them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:44:59 -04:00
ZacharyZhang-NYandClaude Opus 4.8 02c9da6fe9 Unify the design system: Geist, 4px grid, restrained scale
Establish one token system across the shell and primitives:
- Typography: vendor Geist (variable woff2, self-hosted, CSP-clean);
  body 14/16px, title 18px, captions 12px; drop oversized headings.
- Color: primary #181818, secondary #6A6A6A over a pure-neutral ramp.
- Spacing: strict 4px grid via --sp-* tokens.
- Radius: 8 → 40 scale (--r-sm..--r-2xl, --r-full).
- Icons: 18px glyph, 1.5 stroke, 24px bound by default.

Sweeps tokens through styles.css, components.css, and overlays.css so
buttons, inputs, cards, pills, menus, the sidebar, topbar, and page
titles all read from the same scale. No page logic touched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:39:23 -04:00
ZacharyZhang-NYandClaude Opus 4.8 56dbca3bf7 Make migration-report test robust to symlinked tmpdir
The rollback pack canonicalizes the source path via realpathSync.native
(correct: it resolves symlinks before comparing). On macOS tmpdir() is
/var → /private/var, so the test's raw legacyPath never matched. Compare
against the canonical path instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 19:39:11 -04:00
ZacharyZhang-NY 1fa1990abb update 2026-06-10 19:05:05 -04:00
ZacharyZhang-NY d8e9779678 Add a motion system: feedback, overlays, and view transitions
Every interactive control now acknowledges input: buttons and icon
buttons press down (scale on :active) and ease their hover states, nav
items, menu rows, segmented controls, cards, table rows, and inputs
transition over shared motion tokens (120/200/280ms, ease-out curves).
Dialogs and popovers enter with a short rise + fade over a fading
backdrop; switching routes and onboarding steps plays a quiet view
entrance keyed on the route/step. State pills cross-fade their tones
as runs progress. All motion collapses under prefers-reduced-motion.
PRODUCT.md captures the register and design principles guiding this.
2026-06-09 21:57:47 -04:00
ZacharyZhang-NY de9e6a9fa3 Push live updates to the UI while agent runs execute
Engine-side writes - hires, delegated tasks, chat messages, run state -
only reached the renderer after a run finished: the queue worker sent
one snapshot-changed at the end, and nothing fired at claim time, so
the window sat frozen for the minutes a CEO run takes unless the user
reloaded by hand. The execution service now takes a notifyDataChanged
callback, the agent loop fires it after every tool-bearing iteration,
and the worker announces the claim itself, so the UI follows the
company working in real time.
2026-06-09 21:51:29 -04:00
ZacharyZhang-NY 921c5b4456 Harden recovery and department paths after adversarial review
Interrupted runs now return to the queue instead of failing - an app
shutdown is not a model error and must not spend the task's bounded
retry budget. Startup work moves behind the single-instance lock so a
losing second instance can never run recovery against the live
instance's database. Background provider requests that died before
receiving an external response id now fail at boot (the background
worker can only resume accepted ones). Agent updates resolve the
department through the same canonical lookup as hires, replacing the
free-text write and its invented "General" default.
2026-06-09 21:36:18 -04:00
ZacharyZhang-NY b4e17cbd35 Fail runs whose first turn carries no text and no tool calls
A reasoning-heavy model can burn the whole max_tokens budget on
thinking blocks; the parsed turn then has neither text nor tool calls
and the loop treated it as a successful completion, marking a run done
when nothing happened. Such a first turn now fails the run so the
failure is visible and the heartbeat retries; later empty-text turns
after real tool work still complete normally.
2026-06-09 21:22:44 -04:00
ZacharyZhang-NY d6d6656428 Make the hire_agent department contract explicit
The CEO's first run hired five reports into departments "general" and
"engineering"; the hiring-policy lookup was exact-match against the
seeded names (Executive, Engineering, ...), so every hire failed and
the kickoff produced nothing. The tool schema now enumerates the
canonical departments, the policy lookup matches case-insensitively
and stores the canonical name on the agent, and an unknown department
error lists the valid choices so the model can self-correct.
2026-06-09 21:21:01 -04:00
ZacharyZhang-NY 2dd4f3976a Enforce deadlines across the whole provider request lifecycle
The abort timer was cleared as soon as fetch resolved with headers, so
a server that stalled the response body hung the request forever - and
one hung run froze the autonomous queue behind the worker re-entrancy
guard. JSON requests now carry a header deadline plus a longer body
deadline on one abort controller, and event streams fail when no chunk
arrives within an idle window, cancelling the reader. Timeouts surface
as ProviderHttpError so the run records a clear failure and the
heartbeat retries.
2026-06-09 21:18:51 -04:00
ZacharyZhang-NY f15ed8cb6f Recover interrupted runs and requests at boot
A task_run still marked running at startup has no executor - the
single-instance app that owned it is gone - yet nothing failed it, the
queue worker only claims queued rows, and the heartbeat excludes tasks
with a running run, so one interrupted shutdown wedged the company
forever. Boot now fails orphaned running runs and their in-flight
foreground provider requests (auditably), which hands the task back to
the heartbeat for an automatic retry. Background provider requests are
untouched; the background worker resumes those by external id.
2026-06-09 21:16:42 -04:00
ZacharyZhang-NY 4e47da4d6b Route goal kickoffs through task policy and revive waiting goals on hire
Adversarial review of the kickoff feature surfaced two gaps. First, the
kickoff task was inserted with raw SQL, so a workspace-bound kickoff
carried requires_filesystem without the execution approval every other
task receives - manual runs failed and review-mode orgs had no approval
trail. Kickoffs (in-app and onboarding) now go through createTask and
its policy gates. Second, a goal created before any agent existed
stayed inert forever; creating an agent now operationalizes every
active goal that has no task yet. Goal owners must be active agents:
an archived owner falls back to the top-level agent and the owner
dropdown only offers active agents.
2026-06-09 20:38:35 -04:00
ZacharyZhang-NY cfbe5e1c8e Split oversized modules along domain seams
Every source file is now under 500 lines. Task prompt construction
moves from task-execution-service into task-prompts; goal assignee
resolution moves from organization-service into goal-kickoff; the
shared command types become a domain-structured shared/commands
directory with unchanged import paths; the provider adapter contract
types move to provider-adapter-contract, re-exported through
provider-adapters so callers keep a single public surface.
2026-06-09 20:19:34 -04:00
ZacharyZhang-NY f964d052e2 Fix all renderer lint errors
Remove dead imports and unused values across pages; replace the
MentionTextarea index-reset effect with an event-time reset; compute
budget chart segment offsets in a pure helper instead of mutating a
render-scope variable; drop the manual memoization the compiler could
not preserve in BillingPanel.
2026-06-09 20:11:47 -04:00
ZacharyZhang-NY a65347b91f Cut governance bureaucracy from settings and sidebar
Settings shrinks from 14 tabs to the five that serve the product:
Workspace, Billing, Providers, Skills, Migration. The deleted panels
(Members/IAM, Models, Policies, Operations, SDLC, Compliance, Profile,
Notifications, Security) were read-only governance tables and raw
audit-log dumps with no old-app counterpart. The Automation page goes
too: its rules stored empty conditions and no engine ever executed
them. Sidebar reordered to match the old app hierarchy (Home, Inbox,
Work, Approvals first). Backend services and schema are untouched.
2026-06-09 20:07:28 -04:00
ZacharyZhang-NY 3704cec19b Kick off goal execution when a goal is created
A goal created from the Work page only wrote a goals row; nothing ever
read it, so the company never started working on it. Creating a goal now
produces an "Operationalize goal" kickoff task for the chosen owner (or
the top-level agent when unowned) and re-enables that agent's heartbeat,
so the autonomous queue worker starts the run - the same activation
contract the previous runtime had via goal_activated wakes and CEO
bootstrap. Onboarding shares the same kickoff module instead of its own
copy.
2026-06-09 20:03:09 -04:00
ZacharyZhang-NY bd9807ca8d Add Inbox page with standup and performance views
Inbox page has three tabs: Inbox (filterable by approvals, failures,
blocked, messages — shows chronological items with agent attribution),
Standup (per-agent daily summary with tasks/runs counts), and
Performance (company metrics with success rate, throughput, and
per-agent breakdown table).
2026-06-07 18:13:22 -04:00
ZacharyZhang-NY 157a677a31 Expand billing panel with cost breakdown and budget utilization
BillingPanel now shows: stat tiles (allocation, cap, requests, failures),
token usage summary (input/output chars), budget utilization progress
bar, per-agent cost breakdown table (budget, requests, I/O chars), and
per-provider activity table. Replaced the minimal single-table view.
2026-06-07 18:11:00 -04:00
ZacharyZhang-NY 55842d12a1 Add hiring pipeline with four-stage board view
HiringPipeline component shows agents across stages: Pending Approval,
Approved, Active, and Rejected. Each stage column shows agent cards
with role, department, and approval timing. Stage assignment is derived
from the agent's lifecycle and associated hire approval state.
2026-06-07 18:08:48 -04:00
ZacharyZhang-NY 2c12f68b4e Add five SVG dashboard charts to homepage
AgentWorkloadChart (bar), BudgetUtilizationChart (stacked bar),
RunActivityChart (7-day bar), SuccessRateChart (ring gauge), and
CostTrendChart (7-day line). Pure SVG, no external charting library.
Charts render from snapshot data in the DashboardCharts module.
2026-06-07 18:07:13 -04:00
ZacharyZhang-NY dfc45f5fde Add dedicated Run Center with queue, detail, and log viewer
Two-pane RunsPage: left pane shows searchable, filterable run queue
(by status: queued/running/completed/failed). Right pane shows full
run detail: agent, provider, trigger, timing, duration, execution
context, error messages for failures, and provider request response
text as a scrollable log viewer.
2026-06-07 18:04:35 -04:00
ZacharyZhang-NY ed9b3a3dd1 Add meetings, sprints, and approval decision notes
Migration 042 creates meetings and sprints tables, adds decision_notes
to approvals. Full-stack: MeetingService, SprintService, IPC channels,
preload bridge, domain types. UI: MeetingsPage with scheduling and
type filtering, SprintsPage with progress tracking, ApprovalDetailDialog
with decision notes textarea.
2026-06-07 18:01:58 -04:00
ZacharyZhang-NY 75e5d17a86 Implement full task inspector with subtasks, activity, and inline edit
Migration 041 adds parent_task_id to tasks for subtask hierarchy.
TaskDetailDialog now has three tabs: Overview (description, assignee,
project, goal, workspace, runs with error messages), Subtasks (child
tasks with status), and Activity (audit events and approval history).
Inline edit overlay covers title, description, assignee, risk, priority,
and parent task. Task delete is available from the dialog footer.
2026-06-07 17:55:59 -04:00
ZacharyZhang-NY 7a36a12d08 Add create_document tool to agent runtime
Agents can now create versioned company documents (PRD, spec, memo,
report, runbook, proposal, policy, guide) via the create_document tool.
Documents are persisted in the documents table and visible in the
Documents page.
2026-06-07 17:51:12 -04:00
ZacharyZhang-NY d50f0d8d1f Add Documents, Knowledge Base, and Automation pages
Three new pages in the sidebar navigation: Documents (CRUD with type
filtering, inline editing, status lifecycle), Knowledge Base (card grid
with category/importance filters, create/delete), and Automation (rule
table with trigger/action/priority/enable toggle, create/edit/delete).
Each page connects to the corresponding backend service from the
previous commit.
2026-06-07 17:49:39 -04:00
ZacharyZhang-NY b5b8f3ba3c Add document, knowledge, and automation subsystems
Migration 040 creates documents, knowledge_entries, and automation_rules
tables. Full-stack services (DocumentService, KnowledgeService,
AutomationService), IPC handlers, preload bridge, desktop-api types,
and domain records wired into the snapshot. UI pages follow next.
2026-06-07 17:46:55 -04:00
ZacharyZhang-NY 3b115e8bec Show projects under goals in timeline view
The timeline view now displays project pills under each goal with their
task completion counts, plus a section for unlinked tasks.
2026-06-07 17:41:18 -04:00
ZacharyZhang-NY a7fff3a122 Extend agent editor with department and budget fields
UpdateAgentInput now includes department and budgetCents. The edit dialog
on the Team page shows department and monthly budget alongside the
existing role, title, seniority, provider, and model fields.
2026-06-07 17:39:47 -04:00
ZacharyZhang-NY 22568866e8 Add workspace creation to settings panel
The workspace settings panel now includes an Add button that opens a
dialog with name, local path (with directory picker), and optional
project binding. Supports creating secondary workspaces beyond the
initial bootstrap workspace.
2026-06-07 17:38:09 -04:00
ZacharyZhang-NY 5f92cd0d75 Add goal, project, and workspace CRUD
Full-stack: IPC channels, command types, OrganizationService methods,
IPC handlers, preload bridge, desktop-api types, and UI dialogs on the
Work page. Users can now create goals and projects directly instead of
relying on the onboarding bootstrap.
2026-06-07 17:36:25 -04:00
ZacharyZhang-NY 2ef721774f Add agent run activity and recent messages to homepage
The homepage now shows two activity cards: recent agent runs (with
state, trigger, and timing) and recent chat messages (with sender,
channel, and message preview). Gives the operator real-time visibility
into what agents are doing.
2026-06-07 17:32:55 -04:00
ZacharyZhang-NY 8f4ccc1b7a Extract MentionTextarea and add @mention to thread replies
Shared MentionTextarea component provides @mention autocomplete in both
the channel composer and the thread reply composer. Type @ to see agents
and employees, arrow-navigate, Enter to select.
2026-06-07 17:29:51 -04:00
ZacharyZhang-NY 1997b4aea5 Add manager select to hire dialog
The hire dialog now shows a manager dropdown so new agents can be placed
under an existing agent in the org hierarchy.
2026-06-07 17:25:51 -04:00
ZacharyZhang-NY 3799f73069 Add @mention autocomplete to chat composer
Type @ in the message composer to see a dropdown of agents and employees.
Arrow keys navigate, Enter/Tab selects, Escape dismisses. The selected
handle is inserted at the cursor position.
2026-06-07 17:24:40 -04:00
ZacharyZhang-NY 477a0dff4a Inject chat thread context into agent task prompts
When a task_run is triggered by a chat @mention, the agent now receives
the full thread transcript (up to 20 messages) in its prompt so it
understands what it is replying to and can use the correct thread_id.
2026-06-07 17:22:21 -04:00
ZacharyZhang-NY 44f31b49fb Wake agents on @mention in chat messages
Agents were deaf to @mentions — only /agent slash commands triggered a
task_run. Now ChatService.sendMessage auto-wakes every mentioned agent
(skipping self-mentions and /agent which already handles it) by creating
a queued task_run through ChatAgentWakeService.wakeFromMention.
2026-06-07 17:20:58 -04:00
ZacharyZhang-NY abe578b1a0 Harden provider security and build dependencies 2026-06-07 14:04:32 -04:00
ZacharyZhang-NY 67d2cf5649 Split oversized renderer components 2026-06-07 13:52:42 -04:00
ZacharyZhang-NY 91d9b76281 Enable thread file attachments 2026-06-07 13:45:45 -04:00
ZacharyZhang-NY d5a7665893 Create project collaboration surface 2026-06-07 13:41:53 -04:00
ZacharyZhang-NY 3f34d1cf65 Create runnable agents from hire form 2026-06-07 13:37:36 -04:00
ZacharyZhang-NY 8eec454927 Queue agent runs from chat mentions 2026-06-07 13:34:27 -04:00
ZacharyZhang-NY ab546f822d Enable autonomous file handoffs 2026-06-07 13:25:28 -04:00
ZacharyZhang-NY 87dfa9345b Add zoom controls and Ctrl/Cmd-wheel zoom to the org chart 2026-05-30 16:27:22 -04:00
ZacharyZhang-NY afd96fe42c Rebuild the org chart with a real tidy-tree layout and centered connectors 2026-05-30 15:52:49 -04:00