Commit Graph
871 Commits
Author SHA1 Message Date
ZacharyZhang-NY 8a1389bcbc feat(new): track provider health state 2026-05-23 13:57:56 -04:00
ZacharyZhang-NY 3a0f80d9a7 feat(new): enforce chat membership integrity 2026-05-23 13:54:57 -04:00
ZacharyZhang-NY 04e77d8905 feat(new): harden skill revisions 2026-05-23 13:50:45 -04:00
ZacharyZhang-NY 9aa4bdf600 chore(new): keep renderer modules bounded 2026-05-23 13:35:26 -04:00
ZacharyZhang-NY e7eb829b48 Expose OAuth and account providers in onboarding
The provider step was filtered to API_KEY only, which hid GitHub
Copilot, Google Antigravity, and GPT account from the founding-CEO
runtime picker even though they are first-class providers in the
catalog. Show every non-cloud provider, render an "Access token" field
in place of the API-key field for OAuth and account auths, and surface
a button that opens the provider's official sign-in page via the new
openExternalUrl IPC (validated to http(s) only).

OnboardingService.resolveProvider now accepts any non-cloud auth type.
Cloud providers still route through Settings since their multi-field
config does not fit the linear onboarding step.
2026-05-21 22:15:15 -04:00
ZacharyZhang-NY 2c3760ca11 Add canonical per-provider model lists with picker UI
The catalog only carried one defaultModel string per provider, which
forced users to type model ids by hand and made the onboarding /
providers panel feel like the original AgentCompany was missing models.

- src/shared/provider-models.ts holds the canonical id/name list per
  provider key (~165 entries across OpenAI, Anthropic, xAI, Groq,
  GitHub Copilot, Antigravity, GPT account, Azure, Bedrock, Vertex)
- ProviderCatalogEntry now exposes a models[] array
- Onboarding ProviderStep renders a <select> populated from the active
  provider's catalog instead of a freeform text input
- ProvidersPanel connect dialog uses the same picker for API key,
  OAuth, and account auth flows
- TeamPage hire dialog adds a <datalist> with every catalog model so
  manual entry is autocompletable
2026-05-21 21:39:36 -04:00
ZacharyZhang-NY dc791ec984 Replace one-secret provider dialog with per-auth-type fields
OAuth, account, and cloud providers previously fell into the same
password input as API key providers, which made them impossible to
connect properly. Split the connect dialog by auth type:

- api_key: secret + model (unchanged)
- oauth_pkce / account_subscription: button that opens the provider's
  official sign-in URL in a session-partitioned BrowserWindow, then a
  paste field for the access token returned by the provider
- cloud: multi-field form (base URL, region, project, deployment,
  credential) serialized into the encrypted secret payload

Each catalog entry now carries signInUrl and credentialHelp so the
dialog can render the right instructions without baking copy into the
renderer.

Backed by a new launchProviderSignIn IPC method on ProviderService that
opens a hardened popup (nodeIntegration off, contextIsolation on,
sandbox on, permission denies) and records an audit event.
2026-05-21 21:34:18 -04:00
ZacharyZhang-NY f2ac1be5de Add org switcher with create, switch, and delete
The sidebar org button was inert: clicking it did nothing. Add a real
dropdown menu listing every organization, a "New organization" entry
that re-enters onboarding without resetting the database, and a per-org
delete affordance with inline confirmation. Active org is now persisted
in a single-row app_state table so the snapshot keeps a stable
selection across restarts and the renderer drives switching via two new
IPC channels (setActiveOrganization, deleteOrganization).

- migration 006 adds app_state(id=1, active_org_id, updated_at)
- snapshot resolves active org from app_state with the first-org fallback
- OrganizationService gains setActive + delete + bootstrap upsert
- new OrgSwitcher renderer component keeps Shell.tsx lean
2026-05-21 21:30:00 -04:00
ZacharyZhang-NY 060fddf852 Remove unused thread status hint from thread panel
The empty-thread "No replies yet." / "Thread {state}" line was status
text — disallowed by the no-status rule — and the design uses the
textarea placeholder "Reply in thread…" for the same affordance. Drop
the line and the now-unused thread prop.
2026-05-21 21:12:39 -04:00
ZacharyZhang-NY ea3f1cbb94 Stop double-counting agents in the Models panel
The previous logic seeded each provider-default row with the count of
agents whose modelId matched the provider model, then iterated agents
again and incremented that same row. CEOs bound to the provider default
were counted twice. Seed default rows with zero and let the agent loop
populate counts once.
2026-05-21 20:56:12 -04:00
ZacharyZhang-NY a334ea336a Scope sidebar collapse media query to primary sidebar only
The narrow-viewport collapse rule was hiding nav-item labels everywhere,
including the chat channel list, settings sub-nav, and files tree. The
collapse is only meant for the primary aside; scope the selectors so
secondary panes keep their labels at narrow widths.
2026-05-21 20:54:12 -04:00
ZacharyZhang-NY b9a1b4c6d7 Split schema.ts into per-version migration modules
schema.ts was 507 lines once chat_read_state landed. Each migration now
lives in its own file under src/main/database/migrations and the
installer iterates a declarative MIGRATIONS list. Schema file is back
under the 500-line component ceiling without changing behaviour.
2026-05-21 20:37:21 -04:00
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