Commit Graph
859 Commits
Author SHA1 Message Date
ZacharyZhang-NY 0eb1810246 Stabilize chat read-state effect against snapshot reloads
useSnapshot now memoizes the actions object so dependants don't see a
fresh reference on every render. ChatPage's mark-read effect keys off
activeSpaceId/latestActiveMessageId primitives instead of the snapshot
objects that re-allocate on reload, which prevents the markRead → reload
→ rerender loop that was deadlocking the Electron click path under
Playwright.

Also constrains HomePage agenda time to same-day activity so the
'Today' column doesn't surface a meaningless wall-clock for older tasks.
2026-05-21 20:32:25 -04:00
ZacharyZhang-NY 1f78ae6f2e Track per-employee chat read state and surface real unread counts
Adds chat_read_state migration (employee_id + space_id, last read
message + timestamp) wired through ChatService.markSpaceRead, IPC
markChatSpaceRead, and an effect in ChatPage that flushes the active
space whenever the latest message id changes.

Shell.computeBadges now derives the Messages badge from
(message.createdAt > read_state.last_read_at) minus messages the viewer
sent, so the sidebar shows true unread instead of total throughput.
2026-05-21 20:25:07 -04:00
ZacharyZhang-NY b44e0e3657 Purge wordy empty-state copy from renderer and tighten layout
Removes "Nothing pending.", "No tasks…", "Empty.", "No messages…", "No
files…", and similar status descriptions across Home/Work/Chat/Files/
Approvals/Social/Team/Settings panels — design-source never renders this
copy, and the user-frontend rule forbids status narration.

Lets the snapshot loader throw on IPC failure instead of holding a banner
string; the shell topbar handles its own crash boundary.

Fixes Team org-chart connector when only one agent is hired, switches
Settings to use one breadcrumb path, drops the unread badge until we have
read-state tracking, and snaps the Providers grid to the two-column
design spec.
2026-05-21 20:18:14 -04:00
ZacharyZhang-NY aa8046e56d Fix blank dev window by relaxing CSP for HMR
The global webRequest.onHeadersReceived CSP rewrite was attached to
session.defaultSession, which intercepts every Chromium request
(including devtools and network service internals) and crashed the
network service in dev. Drop the global override and rely on the
renderer-level meta tag, widened to allow Vite's localhost HMR
connections.
2026-05-21 19:54:09 -04:00
ZacharyZhang-NY 74266566b7 Rebuild AgentCompany-New renderer to match design spec
- Port design tokens, sidebar, topbar, and icons to inline SVG set
- Rewrite each page (Home/Team/Work/Chat/Files/Approvals/Social/Settings)
  to drive real snapshot data and match the bento, kanban, three-pane chat,
  file tree + pinned cards, approval queue, social schedule + calendar,
  and settings sub-nav layouts
- Split Chat and Settings into per-concern subcomponents so every file
  stays under 500 lines
- Add schema v4 for pinned files and scheduled posts plus IPC + service
  wiring; cover new behavior in unit tests
- Update onboarding labels and Hire form to remove ambiguity for the
  expanded e2e suite (all settings tabs + 8 routes at 1280 and 980)
2026-05-21 19:42:38 -04:00
ZacharyZhang-NY 00736d5719 Fix unused thread prop in ThreadPanel 2026-05-21 17:45:29 -04:00
ZacharyZhang-NY f262fb9385 Align chat, settings, and icons with design spec
- Chat: add 3-column layout with thread detail panel and thread reply composer
- Settings: branded provider logos, connected/available split, Agents section label
- Icons: add refresh icon (RefreshCw) to icon registry
2026-05-21 17:42:44 -04:00
ZacharyZhang-NY 5be8160c15 Add org chart SVG connector and work page view toggle
- TeamPage: add SVG connector lines between CEO and subordinate agent cards
- WorkPage: add Board/List view toggle and Filter button matching design topbar
- List view shows all tasks in table format with status/priority/assignee columns
2026-05-21 17:31:50 -04:00
ZacharyZhang-NY 8101dfdc3c Rewrite home page to match design bento layout
Replaces simple metric cards with the design's rich two-row bento grid:
- Row 1: Today (active tasks), Waiting on you (quick-approve), Monthly budget
- Row 2: In progress work, Team roster, Quarter goal (dark card with progress bar)
Personalized greeting based on time of day. All data bound to real snapshot.
2026-05-21 17:30:04 -04:00
ZacharyZhang-NY c1c7dc0d49 Align shell sidebar and icons with design spec
- Add search bar with ⌘K hint between org logo and nav in sidebar
- Move Settings nav item to bottom section above sidebar footer
- Fix minimize button icon from MoreHorizontal to Minus on non-macOS
- Replace work/social nav icons with design-spec custom SVG paths
- Add --r-xl and --shadow-md CSS tokens from design system
- Set letter-spacing -0.005em and font-feature-settings on body
2026-05-21 17:28:18 -04:00
ZacharyZhang-NY 935376f210 Record social browser governance actions 2026-05-21 09:06:24 -04:00
ZacharyZhang-NY f107ecba31 Harden PRD page coverage and migration audit 2026-05-21 09:04:36 -04:00
ZacharyZhang-NY 83a51c6881 Wire real page actions to persisted data 2026-05-21 08:54:58 -04:00
ZacharyZhang-NY 6992b3e70e Implement original onboarding bootstrap 2026-05-21 08:43:50 -04:00
ZacharyZhang-NY 49c1dd2888 Add migration verification reports 2026-05-20 23:42:53 -04:00
ZacharyZhang-NY de63df7daf Add policy governed task approvals 2026-05-20 23:40:40 -04:00
ZacharyZhang-NY 0e920b409a Add skill runtime snapshots 2026-05-20 23:38:56 -04:00
ZacharyZhang-NY c694b7fc2c Add provider gateway and collaboration records 2026-05-20 23:35:30 -04:00
ZacharyZhang-NY fcf6d90731 Rebuild AgentCompany Electron app 2026-05-20 23:27:00 -04:00
ZacharyZhang-NY bc5daa6eb8 update 2026-05-20 22:26:56 -04:00
ZacharyZhang-NY 810e2d5967 update 2026-05-15 19:40:20 -04:00
ZacharyZhang-NY 2ab001b18a fix(security): require https for trusted links 2026-05-15 02:56:25 -04:00
ZacharyZhang-NY 4e5af2b45f fix(settings): guard disabled model reads 2026-05-15 02:53:13 -04:00
ZacharyZhang-NY 0a107af014 fix(security): omit agent token fingerprints 2026-05-15 02:49:40 -04:00
ZacharyZhang-NY c20d3942a8 fix(security): sanitize credential test logs 2026-05-15 02:44:50 -04:00
ZacharyZhang-NY b92cf62c4c fix(data): canonicalize operation json fields 2026-05-15 02:36:19 -04:00
ZacharyZhang-NY 10c1f6d103 fix(api): preserve meeting patch fields 2026-05-15 02:25:24 -04:00
ZacharyZhang-NY 9d4af15d4b fix(browser): limit retained action screenshots 2026-05-15 02:21:16 -04:00
ZacharyZhang-NY b5a6a1a9ea fix(browser): settle timed out actions 2026-05-15 02:17:10 -04:00
ZacharyZhang-NY 83faa9629b fix(security): gate landing dependency audit 2026-05-15 02:12:47 -04:00
ZacharyZhang-NY 0c85dc3d32 fix(security): patch landing dependency audit 2026-05-15 02:03:34 -04:00
ZacharyZhang-NY d76040af78 fix(security): patch root dependency audit 2026-05-15 01:59:58 -04:00
ZacharyZhang-NY 7b54fe54a8 fix(security): materialize complete skill packages 2026-05-15 01:36:16 -04:00
ZacharyZhang-NY f5b3de438e fix(security): limit skill URL import reads 2026-05-15 01:18:44 -04:00
ZacharyZhang-NY 0cbaabf937 fix(security): bound skill URL redirects 2026-05-15 01:07:43 -04:00
ZacharyZhang-NY 6ae506bf73 fix(security): preserve SNI for skill URL fetches 2026-05-15 01:04:41 -04:00
ZacharyZhang-NY 254ee7c8d8 fix(security): validate credential payload reads 2026-05-15 00:57:23 -04:00
ZacharyZhang-NY 8b0b06f765 fix(security): validate bedrock endpoint URLs 2026-05-15 00:52:18 -04:00
ZacharyZhang-NY 84b92c859e fix(security): restrict local connector endpoints 2026-05-15 00:43:45 -04:00
ZacharyZhang-NY fa19e95f19 fix(security): inject provider env into model streams 2026-05-15 00:35:55 -04:00
ZacharyZhang-NY 66e24b1060 fix(security): scope managed path opening 2026-05-15 00:26:20 -04:00
ZacharyZhang-NY bde35c3518 fix(security): scope social account references 2026-05-15 00:15:37 -04:00
ZacharyZhang-NY 51d468e4c3 fix(security): scope work product creation 2026-05-15 00:00:04 -04:00
ZacharyZhang-NY d1a3d23c70 fix(security): scope skill assignments by company 2026-05-14 23:37:58 -04:00
ZacharyZhang-NY 41e1dec647 fix(security): enforce company scoped updates 2026-05-14 23:28:29 -04:00
ZacharyZhang-NY fccb0d8586 fix(runtime): serialize Fire Pass calls per credential to stop boss-build 429s
Boss build seeds one Fire Pass key for every agent. Three concurrent
agents -> three concurrent streamSimple calls against the Kimi K2.6
Turbo router -> three HTTP 429s on the overview dashboard.

Add an in-memory async semaphore keyed by (provider, sha1(apiKey)) and
acquire a slot inside `createSafePiStream` before invoking the source.
The slot is released when the stream finishes, errors, or aborts.
`fireworks-firepass` is capped at 1 concurrent call; every other
provider stays uncapped (no fallback layer, no 429 retry — flow control
prevents the burst at the source instead of recovering after).

Same code path applies to public and boss builds: only the seeded key
differs, the gate behaviour is identical.
2026-05-14 22:31:01 -04:00
ZacharyZhang-NY a532120649 feat(connectors): add Ollama and LM Studio as a local auth kind
Both servers expose OpenAI-compatible /v1/chat/completions and /v1/models,
so we route them through pi-ai's `openai-completions` API the same way
Fireworks does — but with a per-installation base URL the user enters
during onboarding instead of a hardcoded one. The shared schemas grow a
`local` credential payload carrying just the baseUrl; the credential
resolver surfaces it on `ResolvedCredential.baseUrl`, the runtime bridge
forwards it through `prepareRun`, and the worker plumbs it into
`resolveModel` so the streamed Model<openai-completions> targets the
user's server. The local-cost path short-circuits to zero in cost-writer
since users bill their own hardware, and the live model list is fetched
from the saved baseUrl by `fetchLocalConnectorModels` (Ollama and LM
Studio both speak the standard OpenAI catalog shape). Onboarding ships
a new LocalProviderCard and the Settings panel a LocalForm; both default
to the catalog's per-connector localhost URL and accept any custom URL.
2026-05-14 14:55:38 -04:00
ZacharyZhang-NY 07d9c00fab feat(connectors): upgrade Fire Pass router to Kimi K2.6 Turbo
Fireworks rolled out the kimi-k2p6-turbo router as the new Fire Pass
target; the k2p5-turbo route will start refusing Fire-Pass-only
callers. Bump the router id and display name in connector-catalog,
apikey connector definition, model-resolver, and capability-seed so
the desktop catalog, the renderer's onboarding rail, the capability
matrix, and the runtime model resolver all point at the same model.
2026-05-14 14:39:32 -04:00
ZacharyZhang-NY 0e1710065f fix(messaging): self-read receipt at send time so authors don't inflate unread counts
agent_message_reads is the per-viewer source of truth for readAt, but
the send path never recorded the author's own receipt. Every message
the board operator or an agent sent therefore counted as unread to
themselves until they happened to re-open the channel — sidebar badge,
inbox panel, and the channel sidebar all derive from the same join
table. Insert a (message_id, from_agent_id, created_at) row in the
same transaction as the message itself; the receipt becomes an
atomic part of the write rather than a deferred maintenance task.
2026-05-14 14:36:10 -04:00
ZacharyZhang-NY 2b4b8d987e fix(worker): always ack run completion to avoid leaking the active map
handleRunFinished and releaseCompletedRunWorkspaceLock both run between
receiving run-finished and posting run-completion-ack. If either throws,
the ack is skipped and the worker keeps the agent in its `active` map
forever; every subsequent wake then queues behind an `isAgentBusy` check
that never clears, and manual wakes from the UI silently fail to start.
Wrap the post-finalize work in try/catch so the ack is posted
unconditionally and the worker state machine stays consistent.
2026-05-14 14:34:16 -04:00