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)
This commit is contained in:
ZacharyZhang-NY committed 2026-05-21 19:42:38 -04:00
1 parent 00736d5719
commit 74266566b7
47 files changed
+4609 -1552

No files matched your search

+30 -1
View File
@@ -1,6 +1,6 @@
import type { DatabaseSync } from "node:sqlite";
const SCHEMA_VERSION = 3;
const SCHEMA_VERSION = 4;
export function installSchema(db: DatabaseSync): void {
db.exec(`
@@ -455,5 +455,34 @@ export function installSchema(db: DatabaseSync): void {
insert into schema_migrations(version, name, applied_at)
values (3, 'onboarding_execution_schema', datetime('now'));
`);
currentVersion = 3;
}
if (currentVersion < 4) {
db.exec(`
alter table file_objects add column pinned integer not null default 0;
alter table file_objects add column space_id text;
alter table file_objects add column updated_at text;
create table if not exists scheduled_posts (
id text primary key,
org_id text not null references organizations(id) on delete cascade,
social_account_id text not null references social_accounts(id) on delete cascade,
body_md text not null,
scheduled_for text not null,
state text not null,
approval_id text references approvals(id) on delete set null,
created_by_employee_id text references employees(id) on delete set null,
created_at text not null,
updated_at text not null
);
create index if not exists idx_files_org_pinned on file_objects(org_id, pinned);
create index if not exists idx_scheduled_posts_org_state on scheduled_posts(org_id, state);
create index if not exists idx_scheduled_posts_account_date on scheduled_posts(social_account_id, scheduled_for);
insert into schema_migrations(version, name, applied_at)
values (4, 'files_pinned_and_scheduled_posts', datetime('now'));
`);
}
}