Commit Graph
1163 Commits
Author SHA1 Message Date
ZacharyZhang-NY 2bb2acd635 Grow a real OKR company: officers, departments, ranks - and a stable chart
Researched how OKR-run companies cascade (company objective -> C-suite
officers per function -> department objectives -> individual key
results) and encoded that shape into how the CEO builds the org.

- hire_agent gains seniority (director/lead/staff; c_suite stays
  reserved for the CEO's privileges) and a business-card title, so the
  CEO hires a CTO/CFO/CMO as directors instead of a flat pool of ICs
- CEO persona + goal kickoff now direct the OKR cascade: hire 2-4
  officers, hand each a department objective, let them build teams;
  department heads get their own doctrine (hire leads/staff, cascade
  key results as tasks, report up)
- Migration 050 adds Finance and Sales to every org's canonical
  departments (backfilled for existing DBs) so a real C-suite has
  somewhere to hire
- Org chart viewport is a fixed-height scroll region: zooming rescales
  the diagram inside it instead of resizing the card
- Unit test drives a live three-level chain: CEO -> CTO (director) ->
  Engineering Manager (lead) -> staff, with rank/title persisted
2026-07-08 21:47:07 -04:00
ZacharyZhang-NY c3924af9ac Office life: everyone roams, meetings convene in pairs, card follows agent
- The detail card now rides beside the clicked agent (flipping and
  clamping at viewport edges via a pure cardPositionFor helper) instead
  of pinning to the top-right corner; it follows a walking agent
- Every agent - the CEO and busy agents included - periodically visits
  the coffee machine, snack bar, and restroom; work status no longer
  recalls a walker mid-break
- The office convenes meetings around the meeting table every few
  minutes: at least two settled attendees walk over, dwell together on
  distinct table spots, and head back; a solo office never meets
- Meeting spots ship as lane-wired amenities so pathing stays correct
  by construction; floor-plan invariants (collider-free, reachable)
  cover them automatically
- e2e asserts the card opens beside the sprite, not in a corner
2026-07-08 21:40:53 -04:00
ZacharyZhang-NY e55b8b85b0 Make every identity editable: agent and operator names plus avatars
- Migration 049: avatar_emoji/avatar_color on agents and employees
- updateAgent accepts a new name (mention-name validated) and avatar;
  new updateEmployeeProfile renames the operator and sets their avatar
- Avatars are emoji-on-color tiles (renderer CSP blocks remote images);
  an AvatarDirectoryContext built from the snapshot lets the shared
  Avatar component honor custom looks at every call site - chat rows,
  conversation list, org chart, office card, sidebar - without
  threading props through pages
- Team edit dialog gains Name + avatar editor (CEO included); the
  sidebar foot opens an Edit-profile dialog for the operator
- e2e: rename an agent to a new mention handle with an emoji avatar,
  edit the operator profile, both verified in the live shell
2026-07-08 21:33:23 -04:00
ZacharyZhang-NY 86aa6fdb29 Ship skills built-in: bundle the catalogue, assign per hire, force humanizer
Skills no longer come from the user's ~/.agents library - most users have
none, and the CEO branch that compiled the entire catalogue into its
prompt overflowed the model context (1.1MB) and failed every CEO run.

- Bundle "built-in skills/" with the app (extraResources) and stage it
  at startup into <profile>/builtin-skills as one dir-per-skill copy -
  both bundle shapes (SKILL.md dirs and flat category .md files)
  normalize into the same importable layout
- Import the staged catalogue per org at startup and inside onboarding,
  so the CEO's first run already carries it
- Forced house style: resolveRuntimeSnapshot unions the humanizer skill
  into every agent's runtime (CEO included) as a resolution rule - no
  binding row to forget, delete, or bypass; revoke_skill refuses it
- CEO staffs hires with skills: hire_agent accepts a skills array,
  grant_skill/revoke_skill adjust later, list_skills now shows
  descriptions from skill frontmatter
- Kill the c_suite compile-all branch; everyone resolves bindings-only,
  capped at 200k chars with omissions named in the prompt
- Remove the Skills settings page and its import/sync/test IPC surface;
  drop ~/.agents discovery and the AGENTCOMPANY_NEW_SKILLS_ROOT seam in
  favor of AGENTCOMPANY_NEW_BUILTIN_SKILLS_DIR
- Tests: staging/import/forced-resolution/cap units, real-bundle CI
  check, e2e asserts the tab is gone and the catalogue self-imports
2026-07-08 21:18:50 -04:00
ZacharyZhang-NY 55c043f8b4 Answer plain user messages in channels via a channel-anchor wake
A human message in a channel woke agents only through @mentions, DM
counterparts, or prior thread participants - and the flat composer
always sends threadId=null, so typing in #general summoned nobody and
the room stayed silent.

- Track which agents each wake path summoned in one woken set (also
  prevents latent double-wakes between the paths)
- When a non-slash human message in a channel wakes nobody, wake the
  channel's most senior active agent member with an enabled provider
  (c_suite > director > lead > staff, then hire date); they can pull
  teammates in with @mentions
- Log when a channel has no runnable agent so silence is diagnosable
- Integration test: plain #general message wakes the CEO who replies;
  an explicit mention still wakes exactly one agent
2026-07-08 20:58:17 -04:00
ZacharyZhang-NY 349547a0de Resume parked work when a provider's monthly limit is raised
The heartbeat scheduler enqueued runs even while a provider's monthly
usage window was full, so every task burned its 3-attempt retry budget
on instant quota failures within seconds and stayed dead forever -
raising the limit (or restarting) never revived anything.

- Park tasks (skip enqueue) while their provider is at its
  monthly_request_limit instead of creating runs doomed to fail
- Exclude quota-blocked failures from the 3-attempt retry budget,
  retroactively reviving tasks abandoned by past filled windows
- Share the gate message as PROVIDER_MONTHLY_LIMIT_MESSAGE and log
  quota-block transitions once per state change for diagnosability
- Ignore landing/ (self-contained Next.js sub-project) and
  built-in skills/ (prompt content) in eslint so verify:ci lints only
  application code
2026-07-08 20:51:24 -04:00
ZacharyZhang-NY 8e01317a46 Update release-links.generated.ts 2026-07-08 01:34:26 -04:00
ZacharyZhang-NY 95fd09f911 update 2026-07-08 01:22:02 -04:00
ZacharyZhang-NY b37bdc07e8 Update electron-builder.yml 2026-07-08 01:14:46 -04:00
ZacharyZhang-NY d833ff4776 Move release manifest into lib/ to fix dependency direction
Architecture review (hai-architecture / APoSD) of the shipped redesign found one
structural smell: the shared lib/ layer imported the release manifest from
components/ — data in the presentation layer, dependency pointing the wrong way.
- move components/release-links.generated.ts -> lib/; update the four importers
  and the README. lib/ no longer imports from components/.
- downloads.ts: reuse PlatformDownload["id"] instead of re-declaring the union.

No behavior change (download counter + tracked hrefs identical); build + e2e 12/12.
2026-07-08 01:11:23 -04:00
ZacharyZhang-NY 74e2d3fed6 Update .gitignore 2026-07-08 01:07:53 -04:00
ZacharyZhang-NY 208ba8b38d Ship Windows 1.0.0 and drop Linux from the download page
- release-links: bump to 1.0.0; Windows now points at AgentCompany-1.0.0-x64.exe
  (signed x64 NSIS, uploaded to R2); remove the Linux platform. macOS stays on
  0.4.182 until the 1.0.0 mac build is ready.
- platform-support / product-narrative / footer / layout / faq: remove Linux
  from availability copy, the FAQ, JSON-LD, and footer download links
- e2e: adjust the tracked-download-link count (macOS x2 + Windows = 3)
2026-07-08 01:00:50 -04:00
ZacharyZhang-NY a61f5de90e update 2026-07-08 00:50:14 -04:00
ZacharyZhang-NY 52937c6c88 Fix stale favicon: version icon URLs and stop immutable-caching brand assets
The old favicon/logo were pinned by `Cache-Control: immutable` (1 year), so
browsers never refetched the new glass-bloom mark.
- _headers: favicon.ico + icon.png now cache for a day (revalidating), not
  immutable; drop dead /screenshots + /assets rules; cache /images for a week
- version icon references (?v=2) so existing immutable caches are busted now
- add a modern PNG icon link (/icon.png) that browsers prefer over the .ico
- remove the dead root _headers duplicate (only public/_headers ships)
2026-07-08 00:00:39 -04:00
ZacharyZhang-NY 90c4be807e Update the landing logo and favicon to the new glass-bloom mark
- icon-mark: render the glass-bloom app icon as the nav and footer logo (from
  resources/icon.png)
- public/icon.png: 180px, serves the apple-touch icon, JSON-LD logo, and logo
- public/favicon.ico: 16/32/48 multi-resolution from the new icon
- remove the old unused assets/icon.svg
2026-07-07 23:50:52 -04:00
ZacharyZhang-NY 2e8121d8b9 Give product screenshots a painterly atmospheric stage
Float each screenshot over an ambient wash painted from its own colours (a tiny
blurred thumbnail), layered with the aurora, a designed green->teal gradient,
and fine film grain — the "based on our real product screenshot" treatment.
- ui/art-stage: reusable atmospheric stage (ambient LQIP + aurora + grain + a
  floating shot with depth)
- hero + bento: swap the flat frames for ArtStage
- public/images/ambient: per-screenshot colour-wash thumbnails (<250B each)
- remove the now-unused media-frame

e2e green (12 passed).
2026-07-07 23:16:56 -04:00
ZacharyZhang-NY 8f1a5f1f4e Enrich the landing page with a bento grid and aurora atmosphere
Close the flat-vs-adaline gap by adding depth and motion to our product shots:
- bento: replace the flat stacked features with a varied 12-column grid (org
  chart, cost, office, messages, connectors, plus a local-first highlight card),
  each with a corner glow and hover
- showcase: a dark aurora "Set the goal" statement band (Newsreader serif over a
  drifting northern-lights glow) for a light -> dark -> light rhythm
- hero + footer: aurora glow staging behind the dashboard and under the CTA
- ui/aurora + globals: mint/teal/lime drift-animated glow tokens
- remove the superseded flat feature components

e2e green (12 passed); build verified.
2026-07-07 22:57:54 -04:00
ZacharyZhang-NY 4f0d03ad72 Add Playwright e2e suite for the landing page
- playwright.config.ts: desktop (1440) + mobile (Pixel 5) projects, static
  webServer over the exported out/; a PW_CHROME env override for the browser
- tests/e2e: render + all core sections, tracked download hrefs with no R2
  exposure, the live counter (mocked function), theme toggle, image loading,
  zero console errors, and responsive nav (desktop links / mobile menu reveal)
- navbar: hide the closed mobile menu with `invisible` so its links stay out of
  the tab order and the accessibility tree, not merely clipped
- add the test:e2e script and ignore test-results/ + playwright-report/
2026-07-07 22:30:33 -04:00
ZacharyZhang-NY 72e3abacf9 Rebuild footer, finalize structure, and refresh social metadata
- footer: dark #050e11 band with an Instrument Serif display CTA, an inverted
  Download button, link columns (tracked download hrefs preserved) and copyright
- structure: move icon-mark to brand/, theme provider+toggle to theme/,
  site-constants to lib/; sections/layout/ui/brand/theme now fully separated
- button: add an inverted variant for dark surfaces
- metadata: point OpenGraph/Twitter at a 1200x630 og.jpg and the JSON-LD
  screenshot at dashboard.webp; drop the old /screenshots references
- remove orphans: framer-motion (replaced by CSS + IntersectionObserver),
  ascii-background, and the seven superseded product screenshots
- add @playwright/test for the e2e suite
2026-07-07 22:24:33 -04:00
ZacharyZhang-NY 39de74320c Rebuild download section in adaline style
- adaline heading + version/count line + three platform cards with Reicon
  download icons (components/sections)
- preserve all business logic verbatim: the /api/download-stats count fetch with
  seeded fallback, and every asset link routed through getTrackedDownloadHref
  (/api/download?asset=...) so downloads stay counted and the real R2 URLs
  remain behind the server redirect
2026-07-07 22:17:48 -04:00
ZacharyZhang-NY 32e521beae Restyle runtimes, how-it-works, and FAQ in adaline style
- runtimes: bordered "supported runtimes" strip, text-based for consistency
  (Reicon brand coverage is partial); all eight runtimes preserved
- how-it-works: centered heading + clean numbered stepper for the seven-step
  first-run flow; drop the framer-motion terminal demo
- faq: adaline accordion (grid-rows expand, Reicon plus icon); all answers
  preserved, including the platform-support-derived ones
- move all three into components/sections and remove the old flat components
2026-07-07 22:14:24 -04:00
ZacharyZhang-NY c0f677ccc9 Rebuild navbar, hero, and feature sections in adaline style
- navbar: sticky, transparent to blur-on-scroll, wordmark + mono nav links +
  theme toggle + Download CTA, Reicon Menu/Xmark icons (components/layout)
- theme-toggle: Reicon Sun/Moon icons
- hero: meadow badge, tight Instrument Sans headline, Download + How-it-works
  CTAs, availability line, framed dashboard shot (components/sections)
- features: five stacked heading-over-panel sections mapping the org chart,
  office, messages, connectors and cost-control screens
- ui/media-frame: shared framed product-shot panel
- reveal: progressive enhancement — content is visible without JS and only
  hidden once the js class is present, then revealed on scroll
- remove the superseded flat navbar/hero/features components

Verified: next build green; desktop + mobile screenshots reviewed.
2026-07-07 22:08:31 -04:00
ZacharyZhang-NY b1e2374c7b Rebuild landing design system on the adaline pebble/meadow palette
Foundation for the adaline-based landing rebuild:
- globals.css: warm-cream light theme + Material-3 dark theme mapped onto the
  existing CSS-var names; CSS-keyframe entrance + IntersectionObserver reveal
  motion (to replace framer-motion incrementally)
- layout.tsx: self-host Instrument Sans/Serif, Newsreader and JetBrains Mono via
  next/font/google; drop the external Google Fonts <link>
- _headers: tighten CSP style/font-src to 'self' now that fonts are local
- components/ui: Container, Reveal, Eyebrow, Badge, Button, SectionHeading
- lib/landing-content.ts: feature-section copy for the six product screens
- public/images: six product screenshots optimized to WebP
- add reicon-react/reicon-brands (bundled, CSP-safe SVG icons)

Business logic (D1 download counter, platform metadata, theme, SEO) unchanged.
2026-07-07 21:41:12 -04:00
ZacharyZhang-NY 8265612206 recover landing 2026-07-07 21:10:31 -04:00
ZacharyZhang-NY 3b2401de60 Update .gitignore 2026-07-07 20:31:48 -04:00
ZacharyZhang-NY 155c08b16d Language picker on the onboarding welcome step; agents work in the app language 2026-07-07 15:59:16 -04:00
ZacharyZhang-NY ea9418a6e0 Replace the app icon with the glass bloom mark 2026-07-07 15:19:42 -04:00
ZacharyZhang-NY 297f266bab New app icon: indigo squircle with the agent org-chart glyph 2026-07-07 14:55:05 -04:00
ZacharyZhang-NY a95859a9f7 Brief agents on their connectors, skills, and the CEO's grant authority; CEO predicate follows role_level 2026-07-07 14:19:08 -04:00
ZacharyZhang-NY 3e4c7c81a2 Localize the renderer UI into Chinese behind the language setting 2026-07-07 13:22:19 -04:00
ZacharyZhang-NY d404e1e72a Pin the UI locale to the language setting and add theme + language selectors with a dark palette 2026-07-07 12:28:06 -04:00
ZacharyZhang-NY b30b9a3bc1 Work list titles clip instead of colliding; timeline becomes segmented status bars per goal and project 2026-07-07 12:16:36 -04:00
ZacharyZhang-NY 38bd3588e7 Connected connectors can be deleted and reconnected; mirror sweeps stale rows and ops serialize per org 2026-07-07 12:09:31 -04:00
ZacharyZhang-NY eb16baff50 Flatten the sidebar: Office under Team, Connectors under Approvals, no divider 2026-07-07 11:44:15 -04:00
ZacharyZhang-NY defe8f12b1 Make the CEO the grant authority: implicit all-access, agent-tool grants, no manual assignment UI 2026-07-07 11:24:28 -04:00
ZacharyZhang-NY 934fa71486 Add a post-launch connectors step to onboarding 2026-07-07 11:15:03 -04:00
ZacharyZhang-NY 3669b5dfc6 Ignore .DS_Store 2026-07-07 11:07:05 -04:00
ZacharyZhang-NY 00e05054ca Mirror the Composio project's auth configs as the connector catalog with logo.dev icons 2026-07-07 11:06:07 -04:00
ZacharyZhang-NY dde449d226 Hardcode the Composio key in app source; drop cred.txt and build-time injection 2026-07-07 10:03:26 -04:00
ZacharyZhang-NY ae27317aad Commit cred.txt so every checkout builds with the Composio key 2026-07-07 10:00:31 -04:00
ZacharyZhang-NY 0ec13e3e3a Remove threads from Messages: every conversation is flat
All messages already render chronologically in the channel pane, so the
thread affordance only duplicated them behind a second view. The reply
chip, the in-place thread pane, and the thread composer are gone;
ChatThreadView is deleted and the thread props are removed from the
conversation, timeline, and message-row chain. Message writes are
untouched.
2026-07-07 01:58:11 -04:00
ZacharyZhang-NY d19573187c Fix connector Connect: use the link flow and surface failures
Root cause found by probing the live API: Composio v3 rejects
POST /connected_accounts for Composio-managed OAuth auth configs with a
400 pointing at POST /connected_accounts/link, and the renderer threw
the failure away inside a .then, so clicking Connect did nothing and no
browser opened.

- createConnectedAccount now calls POST /connected_accounts/link with
  auth_config_id and user_id and reads connected_account_id and
  redirect_url; the local mirror records INITIALIZING until the poll
  adopts Composio's real status.
- Connect failures (and a blocked external-URL open) now show as a
  single line on the page instead of vanishing.
2026-07-07 01:53:22 -04:00
ZacharyZhang-NY a2de132083 Embed the Composio key in the app bundle instead of shipping cred.txt
Root cause of the recurring 401: a revoked key was hardcoded in
startup-recovery.ts and onboarding-service.ts and reseeded into
composio_settings on every launch, and the interim fix shipped cred.txt
as a visible file under resources/.

- electron.vite.config.ts reads the gitignored cred.txt at build time
  and injects the key into the main-process bundle as
  __COMPOSIO_API_KEY__; no credential file is packaged and the key is
  not user-visible or configurable. The renderer bundle never sees it.
- Delete both hardcoded-key seeders; migration 046 purges stored
  api_key and never-read toolkits rows while keeping entity_id and
  auth_config state.
- Stop shipping composio_settings in the renderer snapshot.
2026-07-07 01:40:19 -04:00
ZacharyZhang-NY 2d43950123 Read skills from the global and workspace .agents/skills directories
- Discover skill directories under ~/.agents/skills and each
  workspace''s .agents/skills; a directory qualifies with a full
  skill.manifest.json or just a SKILL.md, whose manifest is derived
  (frontmatter name or the directory name). Paths resolve per platform
  on Windows, macOS, and Linux.
- Sync at startup for every organization and again when the Skills
  page opens; skills the org already carries are skipped, and one
  broken directory cannot block the rest.
- AGENTCOMPANY_NEW_SKILLS_ROOT points tests at a temporary library
  (overriding USERPROFILE crashes Electron on Windows).
2026-07-07 01:21:33 -04:00
ZacharyZhang-NY 256e0680c6 Ship Composio as a built-in integration and trim Settings
- Resolve the API key from cred.txt at the project root in development
  and the packaged resources directory in production; the file is the
  source of truth, so a rotated key replaces the stored one. Fixes the
  401 packaged builds hit when a stale database key won.
- Remove the user-facing Composio key editor; the key ships with the
  product and is not configurable.
- Remove the Migration console from Settings.
- Remove the Connectors and Home refresh buttons; connector statuses
  sync when the page opens.
2026-07-07 01:20:21 -04:00
ZacharyZhang-NY 947cd8605b Center the CEO screen and meeting whiteboard between their windows
Both hung overlapping the right-hand window; each now sits centered in the
gap between the two window frames.
2026-07-07 00:46:20 -04:00
ZacharyZhang-NY 370582df90 Drop the Documents surface - Files already owns that ground
Documents duplicated what Files surfaces; the nav item, route, and page go.
Agent-authored documents keep flowing through the document service,
deliverable review, and search.
2026-07-07 00:46:20 -04:00
ZacharyZhang-NY 8fef89a22e Let a rotated cred.txt key win over the stale stored one
The credential file only seeded the database when it was empty, so once a
key was stored, rotating it in cred.txt changed nothing and Composio kept
rejecting the dead stored key with 401 - while the file held a freshly
generated, verified-working key. The file is now the source of truth
whenever it exists: a differing key replaces the stored one on resolution,
and packaged installs without the file keep managing the key in Settings.
Four resolution contract tests pin seed, rotation, settings-only, and
absent cases; the Connectors error line truncates instead of wrapping the
raw API response across the page.
2026-07-07 00:46:19 -04:00
ZacharyZhang-NY 62e663ed90 Open threads in place - the duplicate side panel is gone
The right-hand thread panel repeated exactly what the flat timeline already
showed. Opening a thread now focuses the center pane itself: back control,
board state, the root message with its replies, board intervention
controls, and a thread reply composer - one conversation surface, never
two. The release contract also catches up with the icon shipping inside
the package, a pin the icon commit should have updated.
2026-07-07 00:35:42 -04:00
ZacharyZhang-NY 3246ea5f98 Give AgentCompany its own face: the pixel office tower icon
A new icon generated for the brand: an isometric pixel-art office building
with warm lit windows and the app's violet-blue accent wall on deep indigo -
the office floor is the product's signature, now it is the identity too.
The generated artwork is rebuilt into a clean 1024 square master
(resources/icon.png, Linux and the packaged base), a Big Sur rounded
variant with transparent corners for macOS (icon-mac.png), and a
multi-size Windows icon.ico (16-256). electron-builder wires each platform
to its variant, the icon ships inside the package, and Windows/Linux
windows carry it at runtime including dev. Verified by extracting the icon
back out of a packaged AgentCompany.exe.
2026-07-07 00:15:12 -04:00