Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
47a35d5
chore(beads): persist issue state — close 6 completed, add Harness ev…
hamchowderr Jun 18, 2026
998a6a3
fix(web): mobile responsiveness + theme/toolbox contrast refinement
hamchowderr Jun 19, 2026
bd59335
refactor(agents): local fastembed for catalog + RAG embeddings (384d)
hamchowderr Jun 19, 2026
68d9f98
chore(beads): persist issue state (mobile, theme, embeddings)
hamchowderr Jun 19, 2026
1ec5143
chore(agents): add embeddings:reindex migration for the 1536->384 dim…
hamchowderr Jun 19, 2026
b1beb42
chore(beads): persist embeddings migration runbook
hamchowderr Jun 19, 2026
331f61b
chore(beads): sync export state
hamchowderr Jun 19, 2026
7c47f06
chore(beads): correct deployment context (Coolify/Docker, not bare PM2)
hamchowderr Jun 19, 2026
6fa7639
chore(beads): add data-dashboards epic + phase issues
hamchowderr Jun 19, 2026
4c42326
chore(beads): sync issue state on feature branch
hamchowderr Jun 19, 2026
d707e2d
feat(agents): app_data_snapshot table + append-only snapshot library …
hamchowderr Jun 19, 2026
1e3def9
feat(agents): poll-driven append-only snapshots for dashboards (P1)
hamchowderr Jun 19, 2026
6ab7b18
feat(agents): dashboard snapshot read endpoint + unit tests (P1 compl…
hamchowderr Jun 19, 2026
d6059e1
test(agents): real behavioral verification for dashboard snapshots
hamchowderr Jun 19, 2026
9329345
feat(web): dashboards in-app view — spec-driven renderer (P2 slice)
hamchowderr Jun 19, 2026
a89f104
feat(agents+web): chat-driven dashboard creation (artifact foundation)
hamchowderr Jun 19, 2026
abf9ce8
chore(beads): file P1 chat tool-schema bug, hot-reload + canvas/trend…
hamchowderr Jun 19, 2026
ab5dae9
chore(beads): claim foreman-2aj0 + record tool-schema fix investigation
hamchowderr Jun 19, 2026
dbe5269
wip(agents): tool-schema sanitizer for Anthropic additionalProperties…
hamchowderr Jun 19, 2026
707b274
chore(beads): record foreman-2aj0 fix findings + push branches
hamchowderr Jun 19, 2026
76a6c38
fix(foreman-2aj0): make tool schemas Anthropic-valid via JSON-string …
hamchowderr Jun 19, 2026
c122058
merge(fix): bring Anthropic tool-schema fix (foreman-2aj0) into dashb…
hamchowderr Jun 19, 2026
2ea050b
merge(refinement): consolidate UI polish + fastembed + pins into the …
hamchowderr Jun 19, 2026
8687eb5
fix(web): neutralize preset sidebar-accent + remove Delete-all from s…
hamchowderr Jun 19, 2026
cf23b70
fix(web): proper model selector logo + name; more defined composer
hamchowderr Jun 19, 2026
ba9b613
fix(web): add Dashboards to sidebar, footer breathing room, defined c…
hamchowderr Jun 19, 2026
eca1ba8
feat(web): real multi-model selector + fixes (dashboards route, hydra…
hamchowderr Jun 19, 2026
2bc96cc
fix(web): use the Zapier logo for the sidebar brand mark (not the F)
hamchowderr Jun 19, 2026
44a9fb8
fix(web): Zapier asterisk logo + spaced-out model selector cards
hamchowderr Jun 19, 2026
9d45aec
fix(agents): cost logger reports the actual per-call model, not the s…
hamchowderr Jun 19, 2026
c690f69
fix(web): clean straight sidebar/chat divider (was a faint, curved ha…
hamchowderr Jun 19, 2026
11ef88c
feat(web): floating-card chat surface (subtle)
hamchowderr Jun 19, 2026
b901c58
fix(web): chat UI polish — card shadow, header title, sidebar false-a…
hamchowderr Jun 20, 2026
467d43c
fix(web): repair pre-existing type error in model-selector-compact
hamchowderr Jun 20, 2026
d34f451
refactor(web): adopt vendored shadcn primitives across the app (forem…
hamchowderr Jun 20, 2026
465d95b
chore(beads): UI-consistency epic (foreman-to5b) + 13 issues, 5 close…
hamchowderr Jun 20, 2026
27e028b
fix(web): square up the collapsed sidebar Zapier mark (foreman-pcmm)
hamchowderr Jun 20, 2026
4962cbd
fix(web): use the Zapier logo on the home page brand mark, not the 'F…
hamchowderr Jun 20, 2026
d87b2ee
fix(web): lock the landing brand to Foreman orange under any theme pr…
hamchowderr Jun 20, 2026
4f4e047
feat(web): personalized time-of-day chat greeting (foreman-1k9u)
hamchowderr Jun 20, 2026
c67333c
feat(web): Settings -> Profile display-name field (foreman-jbtq)
hamchowderr Jun 20, 2026
90f6f4a
feat(web+agents): context-window usage gauge in the chat composer (fo…
hamchowderr Jun 20, 2026
7124559
feat(web): archive conversations (non-destructive hide alongside delete)
hamchowderr Jun 20, 2026
7035f00
feat(web): search conversations by title + message content
hamchowderr Jun 20, 2026
e3d08ca
fix(web): blend sidebar into the canvas; drop the hard divider
hamchowderr Jun 20, 2026
12b8812
fix(agents): show real conversation titles in the sidebar
hamchowderr Jun 20, 2026
f84cdcd
fix(agents): search the generated thread title, not just message content
hamchowderr Jun 20, 2026
00afd97
feat(web): onboarding — Zapier logo + capture display name
hamchowderr Jun 20, 2026
e477014
fix(agents): coerce stringified open-object params nested in arrays
hamchowderr Jun 20, 2026
c51685f
feat(web): onboarding demo builds a real, tailored table
hamchowderr Jun 20, 2026
bbe69fe
fix(web): onboarding demo batches row inserts into one create-table-r…
hamchowderr Jun 20, 2026
4acee2f
chore(beads): close greeting/display-name epic (foreman-ndwr) — verif…
hamchowderr Jun 20, 2026
321d6c3
fix(web): stop run-history row overflowing on mobile with long error_…
hamchowderr Jun 20, 2026
7efc425
chore(beads): close run-history overflow (foreman-sse0)
hamchowderr Jun 20, 2026
19d0614
chore(beads): close mobile-responsiveness task (foreman-py1n)
hamchowderr Jun 20, 2026
e3916ac
chore(beads): sync (remember agent-browser-mobile)
hamchowderr Jun 20, 2026
c868ed4
feat(dashboards): public sharing — share tokens + logged-out /d/[toke…
hamchowderr Jun 20, 2026
ddd8faf
chore(beads): sync (dashboards Phase 3 in progress)
hamchowderr Jun 20, 2026
e550c6b
chore(beads): close dashboards Phase 3 public sharing (foreman-sjyc)
hamchowderr Jun 20, 2026
a7bae36
chore(beads): close foreman-sjyc (dashboards Phase 3, verified live)
hamchowderr Jun 20, 2026
127dd6c
feat(dashboards): bound app_data_snapshot growth with a retention pru…
hamchowderr Jun 20, 2026
f692053
chore(beads): close dashboards epic c0p5 + retention 34nm
hamchowderr Jun 20, 2026
e97370e
chore(beads): close dashboards epic + session issues (c0p5/sjyc/34nm/…
hamchowderr Jun 21, 2026
ff2795e
fix(zapier): migrate off deprecated SDK input-field aliases (foreman-…
hamchowderr Jun 22, 2026
228429c
docs(zapier): record 0.76.0 durable re-confirmation + F1 resolution
hamchowderr Jun 22, 2026
fb50b4b
chore(zapier): bump SDK 0.79.0 + CLI 0.60.0; exclude in-flow connecti…
hamchowderr Jun 25, 2026
9e62e00
chore(beads): close foreman-9t9g (Zapier SDK 0.79.0 bump)
hamchowderr Jun 25, 2026
aba78da
test(zapier): validate 0.79.0 live; fix list-table shape assertions
hamchowderr Jun 25, 2026
7776e5d
docs(zapier): durable wall moved on 0.79.0 — 14 scope-walled, 4 early…
hamchowderr Jun 25, 2026
fb34100
feat(zapier): adopt getConnectionStartUrl + relay deprecation notices…
hamchowderr Jun 25, 2026
a55039f
chore(beads): record durable-run early-access request draft on forema…
hamchowderr Jun 25, 2026
1f7db3e
docs(zapier): record durable early-access intake URL (next-gen-zaps)
hamchowderr Jun 25, 2026
3dac165
chore(beads): record next-gen-zaps early-access request submitted (fo…
hamchowderr Jun 25, 2026
9cc7970
fix(vector): self-heal index dimension on the 1536->384 embedder swit…
hamchowderr Jun 25, 2026
7891510
chore(beads): refine workflow-removal epic (keep/remove split) + file…
hamchowderr Jun 25, 2026
82b24fb
feat(agents): remove hand-rolled workflow engine (code + schema)
hamchowderr Jun 25, 2026
57ec322
docs: schema & identity cleanup plan of record (foreman-qhbp)
hamchowderr Jun 25, 2026
fa51547
refactor(db): decompose foreman_core monolith into NextBase-style dom…
hamchowderr Jun 25, 2026
67a4b25
refactor(db): drop the dead NextBase marketing/feedback CMS
hamchowderr Jun 25, 2026
150cd0f
docs(db): de-brand schema cleanup language (drop template name)
hamchowderr Jun 25, 2026
e402362
chore: add supabase postgres best-practices agent skill
hamchowderr Jun 25, 2026
cff4687
perf(db): add covering indexes for all 19 unindexed foreign keys
hamchowderr Jun 25, 2026
654d298
security(db): enable RLS on the remaining service-role tables (unifor…
hamchowderr Jun 25, 2026
44be9bd
feat(db): workspace_id wiring foundation - runtime tables gain a tenant
hamchowderr Jun 25, 2026
7a32d7b
feat(agents): workspace resolution layer in identity (foreman-qhbp)
hamchowderr Jun 25, 2026
a0fc24e
feat(agents): thread workspaceId through middleware + /chat RequestCo…
hamchowderr Jun 25, 2026
b572cc9
feat(db,agents): scope stored_agent to workspace (foreman-qhbp)
hamchowderr Jun 25, 2026
173df5c
feat(db,agents): scope dashboards to workspace (foreman-qhbp)
hamchowderr Jun 25, 2026
96e1172
feat(db,agents): workspace Zapier connection-mode resolution (foreman…
hamchowderr Jun 25, 2026
fe1ebaa
chore(beads): file workspace UI step 5 (foreman-c24s)
hamchowderr Jun 25, 2026
fc6790e
chore(beads): scope step 5 as NextBase port + restyle (foreman-c24s)
hamchowderr Jun 25, 2026
b6d0db5
chore(zapier): confirm durable-run early-access grant is live (forema…
hamchowderr Jun 25, 2026
83281d2
chore(zapier): re-test confirms full durable+workflow read surface is…
hamchowderr Jun 26, 2026
cbcd468
chore(zapier): prove workflow DEFINE works end-to-end (foreman-13mw)
hamchowderr Jun 26, 2026
71a932a
chore(beads): file durable/workflow rebuild + setup guide (foreman-l7xq)
hamchowderr Jun 26, 2026
15aa1d7
chore(beads): next-gen Zaps toolchain PoC setup complete (foreman-l7xq)
hamchowderr Jun 26, 2026
bf0468d
chore(beads): capstone proven - full durable workflow loop end-to-end…
hamchowderr Jun 26, 2026
8e5c31c
feat(agents): workspace management API routes (foreman-c24s)
hamchowderr Jun 26, 2026
4a60bcb
feat(web): workspace management UI — switcher + manager (foreman-c24s)
hamchowderr Jun 26, 2026
a8f9256
feat: designate workspace shared Zapier connection (foreman-c24s)
hamchowderr Jun 26, 2026
71e6d00
chore(beads): close foreman-c24s + multi-tenant epic foreman-qhbp
hamchowderr Jun 26, 2026
26cb590
feat(agents): durable + trigger-inbox lib + agent authoring tools (fo…
hamchowderr Jun 26, 2026
0fabf15
feat(agents): workspace-scoped automation persistence + routes (forem…
hamchowderr Jun 26, 2026
9e667d0
feat(agents): trigger-inbox poll worker (foreman-37e6)
hamchowderr Jun 26, 2026
2d07212
feat(web): /automations UI + trigger-inbox visibility (foreman-ut8n)
hamchowderr Jun 26, 2026
96b59a9
test(durable): live smoke test for the durable rebuild (foreman-hnbx)
hamchowderr Jun 26, 2026
f1cd64a
test(durable): prove full inbox→worker→durable loop live + fix servic…
hamchowderr Jun 26, 2026
6c4e8ff
feat(agents): durable run-status reconcile — started → finished/faile…
hamchowderr Jun 26, 2026
a2d3749
feat(agents): bounded stuck-run cap + map the durable failure lifecycle
hamchowderr Jun 26, 2026
8466912
feat(web): live run-status polling + run output/error drill-down (for…
hamchowderr Jun 26, 2026
482cb10
fix(db): grant service_role on all public tables — auth/workspace res…
hamchowderr Jun 26, 2026
bb875b8
feat(web): drop 'alpha' branding, use Zapier mark, add not-affiliated…
hamchowderr Jun 26, 2026
11ae5c0
feat(web): homepage Automations section + swap hero agent avatar to Z…
hamchowderr Jun 26, 2026
cf72ed3
feat(web): homepage "More in Foreman" section — Dashboards, Workspace…
hamchowderr Jun 26, 2026
c4eb127
feat(web): Foreman vs Zapier Sidekick comparison page (foreman-zfxb)
hamchowderr Jun 26, 2026
a921a9a
feat(web): scroll-aware transparent nav + richer automations demo
hamchowderr Jun 26, 2026
078f2f7
feat(web): rename comparison to Zapier Shared Brain + sharpen differe…
hamchowderr Jun 26, 2026
e66fac1
feat(web): honest Shared Brain comparison matrix, multi-app hero, 10k…
hamchowderr Jun 26, 2026
7cd04a0
chore(beads): sync export-state
hamchowderr Jun 26, 2026
f637ef7
fix(web): onboarding — use Zapier logo + correct app count to 10,000+
hamchowderr Jun 26, 2026
b3bc323
feat(web): shared app nav + restructure Automations/Dashboards + new …
hamchowderr Jun 26, 2026
ffafb8c
feat(agents,web): workspace-wide aggregate inbox endpoint
hamchowderr Jun 26, 2026
d6ae7cb
feat(web): unify app sections under the shared sidebar shell
hamchowderr Jun 26, 2026
a1f02e3
feat(web): fold Settings + Editor into the shared sidebar shell
hamchowderr Jun 26, 2026
cda5be2
feat(web): move Settings to the sidebar footer (by the user menu)
hamchowderr Jun 26, 2026
7de971f
fix(web): Settings lives in the account menu; New chat -> /chat (not …
hamchowderr Jun 26, 2026
a1f5836
feat(web): Web Preview AI Elements component (inline live-preview ifr…
hamchowderr Jun 26, 2026
ccebccd
feat(agents,web): preview_app — agent builds a live page in the sandb…
hamchowderr Jun 26, 2026
7eec178
fix(agents): relative imports in preview spike (Mastra bundler left @…
hamchowderr Jun 26, 2026
41a8952
fix(agents): typecheck-clean @foreman/agents + Haiku preview-builder
hamchowderr Jun 26, 2026
ff038de
feat(web): use the official Vercel AI Elements web-preview component
hamchowderr Jun 26, 2026
2dbdbed
feat(web): preview opens in a side panel (AI Elements Artifact)
hamchowderr Jun 26, 2026
8f1265a
feat(agents): polished house style + reliable charts for the preview …
hamchowderr Jun 26, 2026
3a804a8
feat(web,agents): live build feed for preview_app
hamchowderr Jun 26, 2026
6fde60c
fix(web): preview chip/panel borders blend (apply make-interfaces-fee…
hamchowderr Jun 26, 2026
0709a4e
feat(agents): real shadcn harness — agent builds a live React app (fo…
hamchowderr Jun 26, 2026
0a25e2f
fix(web,agents): preview panel polish — 50/50, rounded, no scrollbar
hamchowderr Jun 26, 2026
081c450
feat(web): draggable chat|preview split (shadcn Resizable) + blended …
hamchowderr Jun 26, 2026
e4d6ed3
feat(agents): preview template exposes the full shadcn registry + dat…
hamchowderr Jun 26, 2026
c633ee2
feat(agents): self-heal — preview fixes its own build errors (foreman…
hamchowderr Jun 27, 2026
354af36
feat(web): add AI Elements Sandbox + Terminal + Task components
hamchowderr Jun 27, 2026
cab81f9
feat(web,agents): Sandbox preview — Preview / Code / Terminal tabs
hamchowderr Jun 27, 2026
52f044f
fix(web): soften the preview Sandbox borders (foreground/10, no hard …
hamchowderr Jun 27, 2026
a6de6b3
feat(agents): shadcn as a Mastra Agent Skill on the preview-builder (…
hamchowderr Jun 27, 2026
9b90042
fix(web): drop duplicate sidebar-collapse trigger from AppShell heade…
hamchowderr Jun 27, 2026
86c51cc
chore(beads): sync issue mirror (foreman-qdna, foreman-88oj)
hamchowderr Jun 27, 2026
ba69f56
chore(beads): Shared Brain parity epics (foreman-2vpb + aqjx/wl54/gp4…
hamchowderr Jun 27, 2026
b19e666
feat(agents): per-tenant workspace filesystem (foreman-jgme)
hamchowderr Jun 27, 2026
37bf468
chore(beads): jgme self-host increment note
hamchowderr Jun 27, 2026
92ebbf9
feat(agents): documents API over the per-tenant Workspace (foreman-aqjx)
hamchowderr Jun 27, 2026
b79ef84
chore(beads): aqjx documents API slice note
hamchowderr Jun 27, 2026
d25a608
feat(agents): save_document tool — write knowledge docs to the Worksp…
hamchowderr Jun 27, 2026
67dfd63
feat(web): KnowledgePanel — view workspace documents in the preview s…
hamchowderr Jun 27, 2026
c03810f
chore(beads): knowledge viewer verified live + versioning epic (forem…
hamchowderr Jun 27, 2026
3323f78
chore(beads): versioning-via-Mastra-BlobStore + doc sharing + agent c…
hamchowderr Jun 27, 2026
b437827
feat(docs): document versioning on the Mastra BlobStore primitive (fo…
hamchowderr Jun 27, 2026
76ce1cb
chore(beads): close foreman-udji — document versioning verified live e2e
hamchowderr Jun 27, 2026
5658690
feat(knowledge): agent cites docs with AI Elements inline-citation (f…
hamchowderr Jun 27, 2026
acab0d2
chore(beads): close foreman-ugu3 — agent doc citations verified live
hamchowderr Jun 27, 2026
e9d188b
feat(knowledge): public-link sharing for documents (foreman-jz14)
hamchowderr Jun 27, 2026
550993e
chore(beads): close foreman-jz14 (public-link sharing) + file dashboa…
hamchowderr Jun 27, 2026
f8da012
fix(web): allow logged-out access to public dashboard share page /d/ …
hamchowderr Jun 27, 2026
ca4fe05
chore(beads): close foreman-ybif
hamchowderr Jun 27, 2026
bc3fd95
feat(knowledge): document Spaces — shared-by-default + personal (priv…
hamchowderr Jun 27, 2026
dcafec7
feat(web): surface document Space (Private/Shared) in the KnowledgePa…
hamchowderr Jun 27, 2026
34653b2
chore(beads): close foreman-5e4f (document Spaces shared+private)
hamchowderr Jun 27, 2026
0cdcbd0
feat(workspaces): invite teammates into your (solo) workspace → make …
hamchowderr Jun 27, 2026
fd2cdc0
chore(beads): close foreman-swfe (membership/invite flow)
hamchowderr Jun 27, 2026
6840953
feat(web): rename user-facing Dashboards → Apps (built data-apps) (fo…
hamchowderr Jun 27, 2026
bd540ba
chore(beads): close foreman-m6se (Dashboards→Apps rename)
hamchowderr Jun 27, 2026
8e4dfaf
feat(chat): workspace-visible (read-only) chat sharing (foreman-28cz)
hamchowderr Jun 27, 2026
3c12e12
feat(web): chat visibility UI — share to Team + read-only for teammat…
hamchowderr Jun 27, 2026
d3b980a
chore(beads): close foreman-28cz (chat visibility + teammate sharing)
hamchowderr Jun 27, 2026
133d4e1
feat(db): workspace-scoped RLS policies (defense-in-depth) (foreman-5…
hamchowderr Jun 27, 2026
9728404
chore(beads): close foreman-5e6p (workspace-scoped RLS policies)
hamchowderr Jun 27, 2026
aefbeee
feat(chat): public (logged-out) share link for chats (foreman-mk25)
hamchowderr Jun 27, 2026
5ca17bb
feat(web): public chat share link UI — create/copy/revoke + /c page (…
hamchowderr Jun 27, 2026
35483d2
chore(beads): close foreman-mk25 (public chat share link)
hamchowderr Jun 27, 2026
8233833
feat(chat): collaborative writing — teammates continue a shared chat …
hamchowderr Jun 27, 2026
60feba7
feat(web): let teammates compose in shared chats; owner-only header c…
hamchowderr Jun 27, 2026
4b3fdb5
chore(beads): close foreman-whkr (collaborative chat writing); file f…
hamchowderr Jun 27, 2026
1a25552
fix(chat): derive /chat user identity from the auth token, not body.r…
hamchowderr Jun 27, 2026
64c5160
chore(beads): close foreman-tss9 (/chat auth hardening)
hamchowderr Jun 27, 2026
77b5435
chore: gitignore local dev-server logs (*-dev.log)
hamchowderr Jun 27, 2026
20cb417
feat(dashboards): list a workspace's apps that have data (foreman-djo7)
hamchowderr Jun 27, 2026
55f185e
fix(web): Apps page defaults to a real app, not hardcoded "hubspot" (…
hamchowderr Jun 27, 2026
66c2f25
chore(beads): close foreman-djo7 (Apps page hardcoded-hubspot fix)
hamchowderr Jun 27, 2026
b8e67fd
feat(web): show a workspace's documents on the Workspaces page (forem…
hamchowderr Jun 27, 2026
c31ff4a
chore(beads): close foreman-f8jb (docs on Workspaces page)
hamchowderr Jun 27, 2026
259bde6
feat(web): Documents in the sidebar — dedicated /documents page (fore…
hamchowderr Jun 27, 2026
009437a
chore(beads): close foreman-iznn (Documents sidebar nav)
hamchowderr Jun 27, 2026
bdd9613
feat(documents): POST /documents/import — create a doc from a text/ma…
hamchowderr Jun 27, 2026
a490b97
feat(web): Import button on the Documents page (.md/.txt) (foreman-iz…
hamchowderr Jun 27, 2026
4a64cf1
chore(beads): close foreman-71fc (document file import)
hamchowderr Jun 27, 2026
e85a1d3
feat(web): global Cmd+K command palette (foreman-tm8e)
hamchowderr Jun 28, 2026
0a3d7fe
feat(web): Skeleton loaders for content loading states (foreman-d2na)
hamchowderr Jun 28, 2026
dd8d086
chore(beads): command palette (tm8e) + skeleton sweep (d2na) + Next b…
hamchowderr Jun 28, 2026
3c0aa9a
chore: integrate Fallow dead-code analysis
hamchowderr Jun 28, 2026
cddd630
chore(scripts): scrub machine/account-specific values + drop orphaned…
hamchowderr Jun 28, 2026
fc2bce3
docs(scripts): add a scripts reference for packages/agents/scripts
hamchowderr Jun 28, 2026
607c201
chore(web): remove 22 unused shadcn UI primitives (Fallow dead-code)
hamchowderr Jun 28, 2026
2ad249d
chore(web): remove 6 more unused files (Fallow dead-code)
hamchowderr Jun 28, 2026
eb59f58
revert(web): restore 19 shadcn UI primitives with real uses in Foreman
hamchowderr Jun 28, 2026
b535f76
chore(beads): epic + 6 tasks to incorporate restored shadcn primitive…
hamchowderr Jun 28, 2026
7501859
feat(apps): rename Dashboards→Apps + searchable picker; non-blocking …
hamchowderr Jun 28, 2026
68b4f27
chore(deps): bump Zapier SDK to 0.81.0, CLI to 0.62.0
hamchowderr Jul 4, 2026
356ddf4
refactor(trigger-inbox): migrate name -> key for SDK 0.81.0 deprecation
hamchowderr Jul 4, 2026
a543fb8
chore(beads): track Zapier SDK bump (foreman-b6x2) + name->key migrat…
hamchowderr Jul 4, 2026
d5f6acb
chore(skills): de-duplicate vendored skills; make .claude/skills the …
hamchowderr Jul 4, 2026
2d1fd49
chore(git): stop tracking .claude/settings.local.json (machine-local)
hamchowderr Jul 4, 2026
e740bf9
docs(claude): audit + correct CLAUDE.md against the current codebase
hamchowderr Jul 4, 2026
f3dd831
chore(rules): add rules/ folder of coding conventions, wired into CLA…
hamchowderr Jul 5, 2026
aad83fe
chore(beads): re-close foreman-b6x2 (SDK bump) — prior close was clob…
hamchowderr Jul 5, 2026
f73e961
chore(beads): close 8 already-shipped issues + supersede ezsm (reconc…
hamchowderr Jul 5, 2026
4895c80
chore(beads): resync issues.jsonl from DB after bd 1.1.0 upgrade
hamchowderr Jul 5, 2026
d890cd5
chore(beads): close 12 done + 2 superseded (code-verified reconciliat…
hamchowderr Jul 5, 2026
a4b6511
chore(beads): revert to shared-server mode after clean restart
hamchowderr Jul 5, 2026
4bcf240
chore(beads): supersede tbjb + 22c3 (signals subsystem removed by bazc)
hamchowderr Jul 5, 2026
c4a5cfb
chore(deps): bump next 16.2.4→16.2.10; clean-reinstall dedupes postcs…
hamchowderr Jul 5, 2026
61714a8
feat(zapier): handle 4 remaining SDK error classes in handleSdkError …
hamchowderr Jul 5, 2026
17f88b1
test(apps): repoint api-routes test to /apps/* after Dashboards→Apps …
hamchowderr Jul 5, 2026
cd977cf
ci(db-types): retry supabase start on ECR pull rate-limit (foreman-x8rj)
hamchowderr Jul 5, 2026
989d31b
fix(agents): drop @/ alias for relative imports in src (foreman-gw5n)
hamchowderr Jul 5, 2026
930d9d8
ci(db-types): pull only db+meta instead of retrying full ECR start (f…
hamchowderr Jul 5, 2026
9f3704d
chore(ci): bump pinned Supabase CLI 2.107.0→2.109.0 (foreman-llj3)
hamchowderr Jul 5, 2026
8848dbc
feat(web): wire user avatars via the Avatar primitive (foreman-3f1v)
hamchowderr Jul 5, 2026
f6d94d0
feat(web): use the ui/kbd component for the Search ⌘K hint (foreman-p…
hamchowderr Jul 5, 2026
ad99062
feat(web): paginate the automation runs list (foreman-8zqj)
hamchowderr Jul 5, 2026
6acc5f1
feat(web): right-click context menus on chat-history rows (foreman-t09r)
hamchowderr Jul 5, 2026
7c51a4c
feat(web): progress bars for preview build feed + file import (forema…
hamchowderr Jul 5, 2026
0d2b344
feat(automations): surface durable retry detail + failed trigger inbox
hamchowderr Jul 5, 2026
d6dbb6e
feat(automations): opt-in event-level dedup on possible_duplicate_data
hamchowderr Jul 5, 2026
746717f
feat(automations): cancel a running durable run (route + UI)
hamchowderr Jul 5, 2026
90f531e
feat(automations): surface durable human-approval waiting state
hamchowderr Jul 5, 2026
3b96a36
fix(preview): drop dead references/ pointer in shadcn skill + add qdn…
hamchowderr Jul 5, 2026
0b109fe
fix(preview): harden shadcn skill imports + faithful qdna probe
hamchowderr Jul 5, 2026
21ca849
docs(zapier): durable wall is OPEN on 0.81.0 — verified live E2E + ca…
hamchowderr Jul 5, 2026
4960503
docs(zapier): scope durable-open claim to client-creds; per-user PKCE…
hamchowderr Jul 5, 2026
ccdf803
docs(zapier): durable OPEN on both auth paths — per-user PKCE verifie…
hamchowderr Jul 5, 2026
23e823c
feat(automations): approve/deny human-approval durable gates (zfnj)
hamchowderr Jul 5, 2026
f96112a
feat(automations): inbox intelligence — prioritization + teammate agg…
hamchowderr Jul 5, 2026
a4b1f1d
feat(automations): scheduling engine — worker fires scheduled automat…
hamchowderr Jul 5, 2026
b431c21
feat(automations): daily digest — deterministic synthesis into the in…
hamchowderr Jul 5, 2026
c6564b6
feat(automations): create scheduled + digest automations; accurate pr…
hamchowderr Jul 5, 2026
161a884
feat(automations): opt-in LLM narrative for the daily digest (foreman…
hamchowderr Jul 5, 2026
583e7c2
refactor(automations): rebuild scheduling + digest on Mastra Workflow…
hamchowderr Jul 5, 2026
524be9c
refactor(storage): drop DuckDB — Postgres backs every Mastra domain i…
hamchowderr Jul 5, 2026
ce87451
feat(agents): knowledge semantic search over shared docs (foreman-aqj…
hamchowderr Jul 5, 2026
9b5cf52
chore(biome): pin 2.4.16 exact + exclude tool config & lockfile from …
hamchowderr Jul 6, 2026
26ce785
fix(db-types): regenerate without runtime-created Mastra tables
hamchowderr Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 33 additions & 0 deletions .beads/cc-task-map.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"version": 1,
"entries": [
{
"bd_id": "foreman-4jbc",
"cc_task_id": null,
"title": "Sidebar reads as out-of-place grey/black slab with hard divider",
"created_at": "2026-06-20T19:26:24.249Z",
"updated_at": "2026-06-20T19:26:24.249Z"
},
{
"bd_id": "foreman-qhbp",
"cc_task_id": null,
"title": "Migrations cleanup + identity/tenancy unification onto NextBase model",
"created_at": "2026-06-25T19:14:53.805Z",
"updated_at": "2026-06-25T19:14:53.805Z"
},
{
"bd_id": null,
"cc_task_id": "1",
"title": "RLS policies via is_workspace_member() — defense-in-depth for the workspace_id",
"created_at": "2026-06-27T17:15:53.406Z",
"updated_at": "2026-06-27T17:28:51.271Z"
},
{
"bd_id": null,
"cc_task_id": "2",
"title": "Public (logged-out) chat share link — conversation_share token table,",
"created_at": "2026-06-27T18:02:40.593Z",
"updated_at": "2026-06-27T18:22:37.486Z"
}
]
}
2 changes: 1 addition & 1 deletion .beads/export-state.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"last_dolt_commit":"o8vu7a0cluhbge8dvgcci6eteo0vknre","timestamp":"2026-06-16T10:04:37.662891-07:00","issues":256,"memories":0}
{"last_dolt_commit":"3p94daefk053r8a406sg6o8l98j7249f","timestamp":"2026-07-04T19:54:25.7388155-07:00","issues":418,"memories":0}
280 changes: 221 additions & 59 deletions .beads/issues.jsonl

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion .beads/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
"backend": "dolt",
"dolt_mode": "server",
"dolt_database": "foreman",
"project_id": "47c0db0f-fd99-4f5f-863c-de5bb1b033dd"
"project_id": "47c0db0f-fd99-4f5f-863c-de5bb1b033dd",
"braynee_seen_bd_version": "1.1.0"
}
100 changes: 0 additions & 100 deletions .claude/settings.local.json

This file was deleted.

148 changes: 148 additions & 0 deletions .claude/skills/make-interfaces-feel-better/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
name: make-interfaces-feel-better
description: Design engineering principles for making interfaces feel polished. Use when building UI components, reviewing frontend code, implementing animations, hover states, shadows, borders, typography, micro-interactions, enter/exit animations, or any visual detail work. Triggers on UI polish, design details, "make it feel better", "feels off", stagger animations, border radius, optical alignment, font smoothing, tabular numbers, image outlines, box shadows.
---

# Details that make interfaces feel better

Great interfaces rarely come from a single thing. It's usually a collection of small details that compound into a great experience. Apply these principles when building or reviewing UI code.

## Quick Reference

| Category | When to Use |
| --- | --- |
| [Typography](typography.md) | Text wrapping, font smoothing, tabular numbers |
| [Surfaces](surfaces.md) | Border radius, optical alignment, shadows, image outlines, hit areas |
| [Animations](animations.md) | Interruptible animations, enter/exit transitions, icon animations, scale on press |
| [Performance](performance.md) | Transition specificity, `will-change` usage |

## Core Principles

### 1. Concentric Border Radius

Outer radius = inner radius + padding. Mismatched radii on nested elements is the most common thing that makes interfaces feel off.

### 2. Optical Over Geometric Alignment

When geometric centering looks off, align optically. Buttons with icons, play triangles, and asymmetric icons all need manual adjustment.

### 3. Shadows Over Borders

Layer multiple transparent `box-shadow` values for natural depth. Shadows adapt to any background; solid borders don't.

### 4. Interruptible Animations

Use CSS transitions for interactive state changes — they can be interrupted mid-animation. Reserve keyframes for staged sequences that run once.

### 5. Split and Stagger Enter Animations

Don't animate a single container. Break content into semantic chunks and stagger each with ~100ms delay.

### 6. Subtle Exit Animations

Use a small fixed `translateY` instead of full height. Exits should be softer than enters.

### 7. Contextual Icon Animations

Animate icons with `opacity`, `scale`, and `blur` instead of toggling visibility. Use exactly these values: scale from `0.25` to `1`, opacity from `0` to `1`, blur from `4px` to `0px`. If the project has `motion` or `framer-motion` in `package.json`, use `transition: { type: "spring", duration: 0.3, bounce: 0 }` — bounce must always be `0`. If no motion library is installed, keep both icons in the DOM (one absolute-positioned) and cross-fade with CSS transitions using `cubic-bezier(0.2, 0, 0, 1)` — this gives both enter and exit animations without any dependency.

### 8. Font Smoothing

Apply `-webkit-font-smoothing: antialiased` to the root layout on macOS for crisper text.

### 9. Tabular Numbers

Use `font-variant-numeric: tabular-nums` for any dynamically updating numbers to prevent layout shift.

### 10. Text Wrapping

Use `text-wrap: balance` on headings. Use `text-wrap: pretty` for body text to avoid orphans.

### 11. Image Outlines

Add a subtle `1px` outline with low opacity to images for consistent depth. The color must be pure black in light mode (`rgba(0, 0, 0, 0.1)`) and pure white in dark mode (`rgba(255, 255, 255, 0.1)`) — never a near-black like slate, zinc, or any tinted neutral. A tinted outline picks up the surface color underneath it and reads as dirt on the image edge.

### 12. Scale on Press

A subtle `scale(0.96)` on click gives buttons tactile feedback. Always use `0.96`. Never use a value smaller than `0.95` — anything below feels exaggerated. Add a `static` prop to disable it when motion would be distracting.

### 13. Skip Animation on Page Load

Use `initial={false}` on `AnimatePresence` to prevent enter animations on first render. Verify it doesn't break intentional entrance animations.

### 14. Never Use `transition: all`

Always specify exact properties: `transition-property: scale, opacity`. Tailwind's `transition-transform` covers `transform, translate, scale, rotate`.

### 15. Use `will-change` Sparingly

Only for `transform`, `opacity`, `filter` — properties the GPU can composite. Never use `will-change: all`. Only add when you notice first-frame stutter.

### 16. Minimum Hit Area

Interactive elements need at least 40×40px hit area. Extend with a pseudo-element if the visible element is smaller. Never let hit areas of two elements overlap.

## Common Mistakes

| Mistake | Fix |
| --- | --- |
| Same border radius on parent and child | Calculate `outerRadius = innerRadius + padding` |
| Icons look off-center | Adjust optically with padding or fix SVG directly |
| Hard borders between sections | Use layered `box-shadow` with transparency |
| Jarring enter/exit animations | Split, stagger, and keep exits subtle |
| Numbers cause layout shift | Apply `tabular-nums` |
| Heavy text on macOS | Apply `antialiased` to root |
| Animation plays on page load | Add `initial={false}` to `AnimatePresence` |
| `transition: all` on elements | Specify exact properties |
| First-frame animation stutter | Add `will-change: transform` (sparingly) |
| Tiny hit areas on small controls | Extend with pseudo-element to 40×40px |

## Review Output Format

Always present changes as a markdown table with **Before** and **After** columns. Include every change you made — not just a subset. Never list findings as separate "Before:" / "After:" lines outside of a table. Group changes by principle using a heading above each table, and keep each row focused on a single diff so the reader can scan the whole list quickly.

### Example

#### Concentric border radius
| Before | After |
| --- | --- |
| `rounded-xl` on card + `rounded-xl` on inner button (`p-2`) | `rounded-2xl` on card (`12 + 8`), `rounded-lg` on inner button |
| `border-radius: 16px` on both nested surfaces | Outer `24px`, inner `16px` with `8px` padding |

#### Tabular numbers
| Before | After |
| --- | --- |
| `<span>{count}</span>` on animated counter | `<span className="tabular-nums">{count}</span>` |
| Default numerals on timer | Added `font-variant-numeric: tabular-nums` to root |

#### Scale on press
| Before | After |
| --- | --- |
| `<button className="...">` | Added `active:scale-[0.96] transition-transform` |
| `scale(0.9)` on press | Raised to `scale(0.96)` — anything below `0.95` feels exaggerated |

Rows should cite the specific file and the specific property that changed when it isn't obvious from the snippet. If a principle was reviewed but nothing needed to change, omit that table entirely — empty tables add noise.

## Review Checklist

- [ ] Nested rounded elements use concentric border radius
- [ ] Icons are optically centered, not just geometrically
- [ ] Shadows used instead of borders where appropriate
- [ ] Enter animations are split and staggered
- [ ] Exit animations are subtle
- [ ] Dynamic numbers use tabular-nums
- [ ] Font smoothing is applied
- [ ] Headings use text-wrap: balance
- [ ] Images have subtle outlines
- [ ] Buttons use scale on press where appropriate
- [ ] AnimatePresence uses `initial={false}` for default-state elements
- [ ] No `transition: all` — only specific properties
- [ ] `will-change` only on transform/opacity/filter, never `all`
- [ ] Interactive elements have at least 40×40px hit area

## Reference Files

- [typography.md](typography.md) — Text wrapping, font smoothing, tabular numbers
- [surfaces.md](surfaces.md) — Border radius, optical alignment, shadows, image outlines
- [animations.md](animations.md) — Interruptible animations, enter/exit transitions, icon animations, scale on press
- [performance.md](performance.md) — Transition specificity, `will-change` usage
Loading
Loading