diff --git a/.gitignore b/.gitignore index 7e2a6e64..c9dda0a6 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ yarn-debug.log* yarn-error.log* CLAUDE.md build/release/AgentCompany-0.4.61-arm64.dmg +CLAUDE.md +CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md index b9fc0c64..92dc03fa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -121,3 +121,35 @@ Do not make direct repo edits outside a GSD workflow unless the user explicitly > Profile not yet configured. Run `/gsd:profile-user` to generate your developer profile. > This section is managed by `generate-claude-profile` -- do not edit manually. + +## Design Context + +### Users +Builders and operators who want to spin up autonomous AI companies without managing infrastructure. They arrive with a goal, expect the system to self-organize, and watch their AI workforce execute. They care about output quality and want to feel like they're running something real — not playing with a demo. + +### Brand Personality +**Bold, futuristic, ambitious.** AgentCompany is the command layer for the next era of work. The interface should project quiet authority — this is a serious tool that happens to do something extraordinary. + +### Emotional Goal +**Professional pride.** The user should feel "I built something real." The interface should reinforce that their AI company is a legitimate operation — not a toy, not a gimmick, but a functioning organization they orchestrated. + +### Aesthetic Direction +- **Reference**: Notion — content-first layout, gentle hierarchy, flexible workspace feel +- **Accent**: Steel slate (#4a5d7a light, #7b9cc4 dark) — formal, authoritative, professional +- **Theme**: Full light + dark mode via CSS custom properties +- **Typography**: System sans-serif for UI, JetBrains Mono for code/data +- **Icons**: Phosphor (regular + fill weights), 16-18px standard +- **Motion**: Framer Motion with cubic-bezier(0.16, 1, 0.3, 1), reduced-motion aware + +### Anti-References (what this must NOT be) +- **Not toy/demo**: No cartoon illustrations, rainbow gradients, or playful AI mascots +- **Not enterprise bloat**: No overwhelming dashboards, feature overload, or Salesforce-style complexity +- **Not generic SaaS**: No cookie-cutter component libraries, stock photo energy, or bland templates +- **Not sci-fi gimmick**: No glowing neon, Matrix terminals, or over-the-top futuristic theming + +### Design Principles +1. **Content over chrome** — Information density is a feature. Every element earns its place. No decorative filler. +2. **Quiet authority** — The interface should feel confident without shouting. Subtle borders, restrained color, generous whitespace. +3. **Real, not theatrical** — Agent activity should feel like watching a real company operate, not a sci-fi simulation. Status over spectacle. +4. **Desktop-native craft** — Keyboard-first, focus rings, platform-aware shortcuts, proper window management. No web-app-in-a-wrapper feel. +5. **Accessible by default** — Reduced motion, color contrast, semantic HTML, focus traps. Not an afterthought. diff --git a/build/electron-builder.runtime.json b/build/electron-builder.runtime.json index 91600a1d..342ceaff 100644 --- a/build/electron-builder.runtime.json +++ b/build/electron-builder.runtime.json @@ -4,7 +4,7 @@ "output": "/Users/zacharyzhang/Documents/Github/AgentCompany/build/release" }, "extraMetadata": { - "version": "0.4.61" + "version": "0.4.77" }, "mac": { "hardenedRuntime": false, diff --git a/build/release/latest-mac.yml b/build/release/latest-mac.yml index 2860d5a6..02ec8654 100644 --- a/build/release/latest-mac.yml +++ b/build/release/latest-mac.yml @@ -1,11 +1,8 @@ -version: 0.4.61 +version: 0.4.77 files: - - url: AgentCompany-0.4.61-arm64-mac.zip - sha512: 9qHqwpYcc4lCuAfqazR5duwAIYvMoMWufWtw+Wm1gyVGfwyb58szRmzgWHBErYHx/51eQHZL7i6RhJswmIvIrg== - size: 113638909 - - url: AgentCompany-0.4.61-arm64.dmg - sha512: tuE2rcS0lPGMvB0lOnxX3udIl+oESrZWqRrYXuzIV7gsBfp8NL26fLxjppt6BhQbVT6GeKHi7p7OdViZKxYL2Q== - size: 118393537 -path: AgentCompany-0.4.61-arm64-mac.zip -sha512: 9qHqwpYcc4lCuAfqazR5duwAIYvMoMWufWtw+Wm1gyVGfwyb58szRmzgWHBErYHx/51eQHZL7i6RhJswmIvIrg== -releaseDate: '2026-03-23T16:31:23.663Z' + - url: AgentCompany-0.4.77-arm64-mac.zip + sha512: rM2oPamJ0mHhH4bkIrcdJT+raflsJpiKI331HDD/flZvGnB0L3zveHEjkG6eZkIvpQOh78d9/HjPRUuB2lGZ+w== + size: 113614712 +path: AgentCompany-0.4.77-arm64-mac.zip +sha512: rM2oPamJ0mHhH4bkIrcdJT+raflsJpiKI331HDD/flZvGnB0L3zveHEjkG6eZkIvpQOh78d9/HjPRUuB2lGZ+w== +releaseDate: '2026-03-23T20:26:33.820Z' diff --git a/package.json b/package.json index 3e473846..0b863a48 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "agent-company", - "version": "0.4.61", + "version": "0.4.77", "private": true, "type": "module", "description": "Cross-platform Electron desktop control plane for local-first AI agent companies.", diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 6842f41e..1434acf8 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -1,7 +1,6 @@ import { useCallback, useEffect, useMemo, useRef } from "react"; import { AnimatePresence, motion } from "framer-motion"; import { - ArrowClockwise, CaretUpDown, ChatCircle, Check, @@ -15,7 +14,7 @@ import { MagnifyingGlass, Megaphone, Plus, - Robot, + UsersThree, ShieldCheck, Trash, UserPlus, @@ -23,6 +22,7 @@ import { Target, SidebarSimple, TerminalWindow, + CircleNotch, WarningCircle, X, } from "@phosphor-icons/react"; @@ -77,6 +77,7 @@ import { CommunicationHub } from "./components/communication"; import { HiringPipeline } from "./components/hiring"; import { DocumentCenter, KnowledgeBaseManager, MeetingsManager, SprintManager } from "./components/company-operations"; import { ActionButton, ErrorBoundary, ListFrame, ListRow, Modal, Panel, SectionButton, Select, StatusPill, useFocusTrap, useReducedMotion } from "./components/ui"; +import ToastContainer from "./components/Toast"; import { unwrap } from "./lib/desktop"; import { formatMoney, formatTime } from "./lib/formatters"; @@ -90,7 +91,7 @@ type PaletteAction = { const sidebarNavDefs: NavItemDef[] = [ { id: "overview", labelKey: "nav.overview", icon: SquaresFour }, - { id: "agents", labelKey: "nav.agents", icon: Robot }, + { id: "agents", labelKey: "nav.agents", icon: UsersThree }, { id: "tasks", labelKey: "nav.work", icon: ListChecks }, { id: "communication", labelKey: "nav.communication", icon: ChatCircle }, { id: "documents", labelKey: "nav.documents", icon: FileText }, @@ -101,8 +102,8 @@ const sidebarNavDefs: NavItemDef[] = [ export function App() { const reducedMotion = useReducedMotion(); const noMotion = { duration: 0 }; - const pageTransition = reducedMotion ? noMotion : { duration: 0.24, ease: [0.16, 1, 0.3, 1] as const }; - const panelTransition = reducedMotion ? noMotion : { duration: 0.22, ease: [0.16, 1, 0.3, 1] as const }; + const pageTransition = reducedMotion ? noMotion : { duration: 0.32, ease: [0.16, 1, 0.3, 1] as const }; + const panelTransition = reducedMotion ? noMotion : { duration: 0.28, ease: [0.16, 1, 0.3, 1] as const }; // -- Zustand store bindings (replaces 31 useState calls) -- const locale = useAppStore((s) => s.locale); @@ -556,24 +557,11 @@ export function App() { setInitialOnboardingLocked(false); await refresh(); setError(null); + setSection("overview"); if (summary.runId) { - setSection("runs"); setSelectedRunId(summary.runId); - setConsoleOpen(true); - return; - } - if (summary.taskId) { - setSection("tasks"); - setSelectedTaskId(summary.taskId); - return; - } - if (summary.projectId) { - setSection("projects"); - setSelectedProjectId(summary.projectId); - return; } if (summary.leadAgentId) { - setSection("agents"); setSelectedAgentId(summary.leadAgentId); } }, [refresh]); @@ -582,8 +570,9 @@ export function App() { return ( -
- {t("app.loading")} +
+ + {t("app.loading")}
@@ -616,7 +605,7 @@ export function App() {
-