Built in public · Changelog
How Supernova learned the job.
Product panorama
One deal, one continuous operating loop.
Seventeen agents live in the product today, two squads (7 sales-side, 10 delivery-side), propose-only, a named human at every gate. Everything below ships; nothing is a mock.
Sell
Daily Brief, Email Drafter, Call Notes, Deal Check, Meeting Prep, Promise Tracker and Enrich run the deal desk, evidence attached.
Spec
A won deal births the project; Persona Researcher and Spec Writer read the real corpus and draft the use-case tree, every requirement quoting its source.
Model
Data Modeler, Role Definer and Page Architect ratchet ontology, roles and the page atlas forward, one approved artifact feeding the next.
Design
Designer codifies the design language; Mock Builder renders one mock per page wearing the approved tokens.
Run
E2E Writer specs the tests; Tech Stack Advisor and Impact Analyst guard the plan; delivery runs five-state stories, bugs, QA gates and release exit criteria.
Audit
Every run is a session you can open: model calls, tool calls, cost, the audit trail behind every artifact.
19
Jul 2026
Sunday
1 shipped
Design01:16 ISTThe design language comes home: dealflow's founder ivory/white pair, back-ported
The user pointed at dealflow_nextjs ("steal the design language, do a 10000% job") - and its DESIGN.md carries a lineage note that made the job precise: dealflow ADOPTED antino4's Daylight…
The design language comes home: dealflow's founder ivory/white pair, back-ported
The user pointed at dealflow_nextjs ("steal the design language, do a 10000% job") - and its DESIGN.md carries a lineage note that made the job precise: dealflow ADOPTED antino4's Daylight…
The user pointed at dealflow_nextjs ("steal the design language, do a 10000% job") - and its DESIGN.md carries a lineage note that made the job precise: dealflow ADOPTED antino4's Daylight on 18-Jul, then refined it to the founder's ivory + white pair the same day. This ports the refinement back. Page stays ivory #faf6f0; cards flip from bone to TRUE WHITE lifting off it (superseding yesterday's inversion); the canvas drops a step under the page (#f5efe6) so the grain ladder reads canvas < page < washes < white. Three laws came with the values: solid warm neutrals never alpha-of-ink (borders are #e9dfcd solid - an espresso-alpha hairline composites to cold grey on ivory); the neutral hover wash #eee6d9 is never clay (chrome must not flare orange); and --primary is now SOLID CLAY #b4551c with a white label whose hover DEEPENS (#a34108) - on dark, muted clay #d97757 whose hover BRIGHTENS, the lightness-flipped twin. The radius ladder went from one scaled knob to fixed rungs (6 pills / 8 inputs / 10 menus / 12 cards / 16 dialogs), the Button took dealflow's full behavior set (borderless fills, hover lift + shadow deepen, press scale 0.97, icon micro-scales, disabled muted-wash instead of ghosting, link variant's 45-degree arrow), and globals gained their enforcement layers verbatim: hairline discipline on every card/overlay data-slot, the focus-collapses-to-1px-hairline rule, themed scrollbars, recharts re-inking. Dark got dealflow's ladder too (cards #282320 two steps over canvas, popovers #2e2823, brighter muted ink #c9c2b3). Landing verified intact; suite 24 green.
17
Jul 2026
Friday
2 shipped
Design17:56 ISTThe tech-lead journey becomes the product: gate, memory, pipeline, designer, and the first commit from the platform
One sprint in three rounds (commit 717941b + the tests/docs follow-up), everything live-fired on SalerySe.
The tech-lead journey becomes the product: gate, memory, pipeline, designer, and the first commit from the platform
One sprint in three rounds (commit 717941b + the tests/docs follow-up), everything live-fired on SalerySe.
One sprint in three rounds (commit 717941b + the tests/docs follow-up), everything live-fired on SalerySe.
- The feedback gate, everywhere:
changesetsis the spine - feedback in, the Impact Analyst's played-back understanding + structured blast radius out (every affected use case / story / test / entity / persona / role / page / mock named with MODIFY/ADD/REMOVE), and NOTHING mutates until the tech lead acknowledges. Approve applies across all affected artifacts in one synchronized pass (spines regenerate stories+tests together; the ontology revises as a set; docs catch up); Discard leaves the memory untouched. Superseding, FAILED-midway honesty, and full audit (CHANGESET_PROPOSED/APPLIED/REJECTED). The sharedFeedbackGatecomponent replaced both instant-apply fine-tune boxes and gave the ontology its first feedback affordance. - Everything versions, nothing overwrites:
use_case_versions(whole spine snapshots),ontology_versions/personas_versions/product_roles_versions/page_defs_versions(coherent sets),page_mocks_versions,e2e_specs_versions,doc_versions- all with automatic BASELINES so the first gated change preserves the state it found. Live-verified: ontology v1 baseline vs v2 diff shows exactly the acknowledged FeedbackLog change (artifact_type enum + 3 relations) and nine untouched entities byte-identical. - The memory grew from 4 artifacts to 7: personas (Persona Researcher: corpus + live web_search, every pain point EVIDENCED with a corpus quote or RESEARCHED with a source, never attributed to the client - 6 personas, 8 evidenced + 9 researched pains on SalerySe), product roles (Role Definer: what the product GRANTS, personas map N:1, permissions name ontology entities), and page definitions (Page Architect: owner role, purpose, primary actions, entities shown, stories served - 10 pages across 3 roles). Plus "add a use case" through the gate (a brief becomes ADD items the apply executes via draftSingleUseCase) and gap-targeted test generation ("Cover 4 untested criteria" wrote exactly 4, gaps to zero).
- The pipeline: the menu order IS the journey - Research → Use cases → Ontology → Roles → Design → Pages → Mocks → E2E tests → Planning - enforced as a RATCHET (
projects.phase): locked surfaces say exactly what unlocks them, "Complete phase" checks prerequisites server-side (design cannot complete without the designer's approval), completed phases stay editable forever because mock feedback must reach back into use cases. PhaseStepper on the Overview; PHASE_COMPLETED audited. - The DESIGNER is a real actor (user's call, option A): a new login role with its own
/designerworkspace OWNING the design language + mocks (write); both surfaces are read-only for the tech lead, who keeps one governance control (assign the designer). The designer's approval records approver + version and opens the mocks phase. Routing rule: a designer proposal whose ripple reaches beyond design/mocks stays PENDING for the tech lead's acknowledgment - each side approves what it owns. - Mock Builder: one sanitized static HTML mock per page definition wearing the approved tokens (CSS variables re-scoped from the preview css), rendered only in sandbox="" iframes, defense-in-depth stripping of scripts/handlers/external loads. E2E Writer: one Playwright spec file per use case from stories + ACs + pages; every data-testid it invents is the implementation contract; specs ship into the scaffold as
tests/e2e/with config + devDep. Planning: stories → sprints → releases → milestones, pure CRUD, one-sprint-per-story. Team & stakeholders:project_memberswith side + escalation ladder on the Overview. - The git connector + the first commit (round 1, live-fired): GitHub org
antinoai, org-scoped fine-grained PAT validated against the API before storing (card on/admin/integrations, expiry surfaced), andantinoai/salerysecreated by the platform with ONE parentless commitb569a4c- author the tech lead, committer "Supernova Platform" - carrying the runnable scaffold: Next + Tailwind v4 + Drizzle,src/db/schema.tsCOMPILED from the acknowledged ontology, the generatedglobals.css,docs/(now eight files incl. PERSONAS/ROLES), brand assets. GitHub quirk learned: git/blobs 409s on empty repos → auto_init + force-move main onto our parentless commit. - Tests:
tests/e2e/pipeline.spec.ts(12 tests, all green) covers nav-order-as-pipeline, the stepper, phase locks, read-only enforcement on design/mocks for the TL, docs listing, designer workspace + both role bounces; global-setup gained tech_lead + designer storage states (the designer seeded idempotently asdesigner.e2e@antino.io).tests/e2e/live-fire.spec.ts(LIVE_FIRE=1) walks the ENTIRE ratchet with real agent runs: Role Definer → designer assign + approve → Mock Builder → E2E Writer → sprint on the plan board.
Design01:32 ISTThe design language gets a fine-tune loop, versioning, and the FULL component wall
Versioning, because the user called it super-important: every Designer run (first generation or a refine) writes a COMPLETE row to design_versions - the whole DESIGN.md, the whole token…
The design language gets a fine-tune loop, versioning, and the FULL component wall
Versioning, because the user called it super-important: every Designer run (first generation or a refine) writes a COMPLETE row to design_versions - the whole DESIGN.md, the whole token…
- Versioning, because the user called it super-important: every Designer run (first generation or a refine) writes a COMPLETE row to
design_versions- the whole DESIGN.md, the whole token CSS, the feedback that caused it, who, when.projects.design_md/cssstay the current-truth cache; the history is never overwritten. The DESIGN.md card wears a v-badge; a Versions ladder on the page shows each version with its feedback quote and effect. Existing SalerySe artifacts backfilled as v1. - The fine-tune loop (same idiom as use cases): plain language into the panel beside DESIGN.md; Designer regenerates BOTH artifacts with the note woven through and reports an "effect" sentence. Audited DESIGN_REFINED with the quote; agent_run_summary verdict REFINED.
- The preview wall now carries the whole kit, not 15 components: 50+ across Buttons/ButtonGroup/Toggle/Kbd/Spinner, Badge/Avatar/Item, all form controls (InputGroup, NativeSelect, InputOTP, Combobox, Field), Calendar, Tabs/Accordion/Collapsible, Alert/Progress/Skeleton/Empty, Dialog/AlertDialog/Sheet/Drawer, Tooltip/Popover/HoverCard/DropdownMenu, Menubar/ContextMenu, Command, NavigationMenu/Breadcrumb/Pagination, Separator/AspectRatio/ScrollArea, Resizable/Carousel, Chart (series colors bridged to client tokens), a contained Sidebar demo, Sonner triggers, and Supernova's conversation primitives (Bubble/Message/Attachment/Marker). The monolith was split into
preview/sections/*(user's ask), one file per family. - Portaled content wears the client's skin too: menus, dialogs, tooltips, and pickers mount at <body> - outside the scope - so every *Content carries the scope class (with the dark flag). Verified live: the Actions dropdown and the Edit-employee dialog both open in SalerySe's dark teal-charcoal, not Supernova's cream.
- Live-fired the refine as Naman: "swap marigold for warm amber #B45309, radius down to 6px, keep the teal" -> v2 in 138s / $0.22 on Sonnet. The tokens came back EXACTLY as asked (--accent #B45309, --radius 0.375rem, teal untouched), and the effect note volunteered that it moved the accent foreground to white to hold AA contrast. The wall renders v2: squarer buttons, amber accents, teal kept, both themes.
- Follow-up (user: "we should have everything"): the last two holdouts joined the wall - MessageScroller as a live pinned-to-latest feed, DirectionProvider as the same controls rendered LTR and RTL side by side (a behavioral component demonstrated by its behavior). All 59 kit components now show. Sidebar tokens joined the bridge so the contained sidebar demo wears client colors too.
14
Jul 2026
Tuesday
4 shipped
Design19:35 ISTEvery page polished for espresso: two systemic sweeps + borderless chips
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
Every page polished for espresso: two systemic sweeps + borderless chips
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
- Shadow sweep: 111 hardcoded shadow literals (93× the same raised string) across 50+ files replaced with the theme-aware
shadow-rest / raised / floattokens, so every card now has real depth on espresso and the warm tint on cream. Only deliberate one-offs remain (sidebar ring, the changelog glow, kbd inset). - Central dark tint layer (globals.css): the ~110 light-assuming status tints (
bg-amber-100 text-amber-700chips, icon tiles, banners) are remapped once, in one place, for.dark/.section-dark— pale washes become translucent hue washes, emphasis text brightens to shades tuned to the dark Daylight palette. The shared status maps (leadStatus/leadTemp/dealStage) ride it with zero call-site changes. - Chips lose their borders (Daylight rule): Badge
outline→ tone wash; Buttonoutline→ raised tone step + shadow (no hairline); Kbd and Alert borderless. Badge grew semantic tones (success/warning/danger/info/clay/neutral) so pages converge on ONE chip language instead of hand-rolled spans.
Verified on the espresso app: Pipeline (kanban chips as hue washes), the deal hub (stage gate, MEDDPICC, timeline), Accounts. Also fixed a banned em dash in the pipeline briefing sentence.
Design16:02 ISTApp-wide em-dash sweep (design copy rule 17)
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code…
App-wide em-dash sweep (design copy rule 17)
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code…
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code comments (skipped lines starting //, *, /*, and em dashes sitting in trailing line comments) and left the empty-value '—' table glyphs alone (a legit convention, not prose). Builds clean (tsc 0). A few start-of-text-node cases ({' '}— …) the line sweep missed are being caught by hand as spotted.
Design15:51 ISTLead-hub polish + the company→account reality
Fixes from a live QA pass on the AE lead hub:
Lead-hub polish + the company→account reality
Fixes from a live QA pass on the AE lead hub:
Fixes from a live QA pass on the AE lead hub:
- Company is clickable, and never dead-ends. A lead's
companyis free text; only 44% map to a real Account (measured: 8,528 of 19,476; 56% don't). So the company links to the account hub when one exists (getLeadnow returnscompanyAccountId), otherwise to that company's leads (/ae/leads?q=). The accounts search also got a real empty state: "No account named X, see leads at X →" instead of a blank. - Details shows only fields that have a value (the
Fieldprimitive returns null when empty, and renders internalhrefs vianext/linksame-tab). - Right-rail cards are equal width —
LeadActionshadlg:self-start, which shrank it to content inside the flex column; noww-full. - Design-system exemplar: the daily briefing elevated (hero headline, ladder body tones, tone-wash separation not
border-b), a toast standard (src/lib/ui/toast.ts), and a deterministic em-dash sanitizer on the Briefer. See DESIGN.md 16-18.
Design14:23 ISTRecording page v3: three jobs, three tabs (10/10 pass)
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three…
Recording page v3: three jobs, three tabs (10/10 pass)
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three…
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three different jobs — act on it, mine it, read it — so the page is now Overview / Signals / Transcript tabs with a persistent context rail. What made it sing:
- Parse the structure inside insight strings instead of dumping flat bullets. "Owner (Org) — task" → numbered checklist with initials avatars (clay = Antino, sky = prospect); "Title — detail" → semibold lead-in + muted detail. Same
InsightTextparser across Signals. - Talk time / share of voice — computed from the word-level timestamps (
proshort_transcript_segments): a stacked bar + % per speaker (e.g. prospect 55% — a healthy discovery signal). Duration ("24-min call") now in the header sentence and on the video card. - Turns, not fragments — 272 utterances merged into 69 speaker turns, per-speaker stable colors, timestamps; transcript flows on the surface in its own tab (no boxed inner scroll).
- The video is the anchor — the rail leads with a real thumbnail card (play overlay + duration badge → recording URL), then Linked in CRM, then participants with avatars + external count.
getRecordingTranscript gained end_sec. Register: product (earned familiarity — Gong-class patterns, Daylight language).
12
Jul 2026
Sunday
3 shipped
Design22:09 ISTThe page philosophy: whole app re-skinned to the landing (ultracode)
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every…
The page philosophy: whole app re-skinned to the landing (ultracode)
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every…
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every app page via ultracode workflows.
The philosophy (now the app-wide rule): a page header is a mono eyebrow (clay dot) → a big font-light title → one full-width briefing sentence weaving the key numbers as prose (clay for the key metric) — not a grid of KPI stat-tiles (DESIGN principle 10, "briefing > scoreboard"). Attention is a Pulse only on what's wrong/slipping — never an alarm-number board. Cards lift, never border; sections carry mono eyebrows; numbers are font-mono tabular-nums; entrance/hover motion is reduced-motion-safe (animate-in, never the buggy Reveal wrapper).
Color: the 8-hue entity palette was bright/saturated/cool (#008300 green, #2a78d6 blue, #e34948 red…), clashing on warm cream. Retuned all three sources — the --color-entity-* CSS vars, the JS base/text hexes in entity-colors.ts, and the ENTITY_RAMPS pie ramps in charts.tsx — to muted, cohesive Daylight hues (deal=clay, lead=sage, account=slate-blue, task=amber + muted violet/teal/rose/rust). Buttons: the Button default variant is now the landing's clay pill, so auth + app primary CTAs match the site.
Rollout (workflows): the command page as the exemplar (briefing header + pulses + warm charts + a real horizontal-stacked-bar RepScoreboard) → batch 1 (10 home/admin pages) → batch 2/3 (17 SDR+AE pages) → settings (5 role pages). Every batch preserved functionality — verified in-browser as Anisha (AE): the AE Desk, Pipeline (deal peek still opens), the Deal hub (peek timeline + stage-gate + action rail all intact, "Advance stage" now clay), and settings (change-password form intact). ~40 pages, TSC clean throughout. Note: keep concurrent workflow count modest — running several at once alongside the sibling session starved the dev server once.
Design20:27 ISTLanding rebuilt as the founding-story arc (Company Brain), 10/10 polish
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM…
Landing rebuilt as the founding-story arc (Company Brain), 10/10 polish
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM…
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM resignation, four fault lines, the harness, the Company Brain, "priced like bread not oven-hours") and artifacts-library.html (the real product: a contract-to-production platform, Stages 0→6, maker→gate→checker, artifacts pinned to real standards) — rebuilt / as the full narrative arc: Hero → 11:47 email → four fault lines → the harness (translation chain) → the Company Brain reveal → the living pipeline (0→6 + HITL evidence gate) → the Rosetta-Stone moat → proof (85%+, ontology beats model) → new-world finale + CTA → Apple-style FAQ. Retired the sales-only sections; retitled "Sales OS" → "the Company Brain". Built + polished via two ultracode workflows (5-section build, then a 9-agent 10/10 polish pass against a shared design rubric). Hard lesson: the Reveal scroll-wrapper left sections invisible — all landing sections are now plain server components. Verified end-to-end: zero inter-section gaps (measured via DOM), TSC clean, every section renders. New ember starburst brand mark + favicon (clay→amber on espresso, the deck's collapse→burst motif) replaces the violet nova. Design language unified — app now shares the landing's warm Daylight tokens (.app-theme = :root).
Design18:53 ISTOne design language: app adopts the landing's Daylight tokens
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the…
One design language: app adopts the landing's Daylight tokens
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the…
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the design language of app pages and landing page different — merge this; I want the landing's design language in all the pages." So .app-theme in globals.css now mirrors the :root Daylight layer: cream page, warm #fbfaf4 cards, espresso ink, clay `#c2613f` on primary/ring/links. One softening — --accent (dense shadcn hover surface) stays a warm neutral #efece2, not clay, so dropdown/ghost hovers don't flare orange. .app-canvas warmed (espresso dots + cream wash). Landing look unchanged (merge, not restyle). Verified on /design: raw tokens render the full warm Daylight palette + clay. Prior "app = shadcn zinc" decision reversed (memory + design-page copy updated); DESIGN.md "Daylight" now governs the app too.
07
Jul 2026
Tuesday
3 shipped
Design12:48 ISTSidebar app shell, shadcn light theme, org chart redesign, full company mapped, Zoho + sales-process absorbed
Sidebar app shell for every role (AppSidebar + AppShell rewrite): shadcn Sidebar (collapsible to an icon rail), role-aware nav with icons from ROLE_NAV (src/lib/nav.ts), an inline SVG logo…
Sidebar app shell, shadcn light theme, org chart redesign, full company mapped, Zoho + sales-process absorbed
Sidebar app shell for every role (AppSidebar + AppShell rewrite): shadcn Sidebar (collapsible to an icon rail), role-aware nav with icons from ROLE_NAV (src/lib/nav.ts), an inline SVG logo…
- Sidebar app shell for every role (
AppSidebar+AppShellrewrite): shadcnSidebar(collapsible to an icon rail), role-aware nav with icons fromROLE_NAV(src/lib/nav.ts), an inline SVG logo mark (components/logo.tsx) +src/app/icon.svgfavicon, breadcrumbs in the header (AppBreadcrumbs), and a user dropdown with sign-out. Replaces the old top-nav;nav-links.tsxdeleted. All five role layouts now just render<AppShell user={user}>. - Pure shadcn LIGHT theme for the app, scoped to
.app-themeon the shell wrapper (globals.css): redefines the standard shadcn tokens and the legacy antino tokens (--ink*,--panel*,--clay*,--sage/rust/amber, sidebar tokens) to zinc/neutral light values. The marketing landing + public pages (:root,.dark,.section-dark) are untouched. Deep Daylight styling is deferred; DESIGN.md's warm-cream rules now apply to marketing only, not the app. - All logged-in pages are full width — removed every
mx-auto max-w-*wrapper (admin home/users/org/audit/settings, role homes, settings panel). - Admin home rebuilt into a real overview (people counts briefing + recent-activity + pending-invites cards; no placeholder). Audit/settings full-width; audit maps
::1/127.0.0.1→localhost. - Users table: sortable columns, shadcn
Selectfor role, a searchable combobox (select2-style) for manager across all people. - Org chart redesigned as a top-down boxed hierarchy (
org-tree.tsx): level-colored boxes + connector lines, leaf reports grouped into bulleted boxes, search with highlight, collapse/expand + expand-all/collapse-all, auto-collapse on large trees.page.tsxnow roots founders/admins (fixes the bug that hid Radhakanth & Rajesh). - Notification bell golden rule:
recentNotifications()returns the latest 5 unread only (badge still shows total unread). - Full company reporting tree loaded (
scripts/apply-designation-tree.ts, idempotent + audited): reads the HR designation sheet's RM column (scripts/data/reporting-lines.json), setsmanager_idfor IT/Operations/Product while sales keeps the org-chart image tree (Sales/Marketing rows skipped). Aligned the two founder codes (RadhakanthANTINO306, RajeshANTINO57) so their reports resolve. 210 manager changes applied; org chart went from 20 → 230 of 234 placed. - Sales domain absorbed into
docs/SALES-PROCESS.md(statuses, temperature, opportunity stages, 8-phase flow, processes, tasks, SLAs, RACI) and linked in the docs index. - Zoho CRM explored (read-only) and stress-tested against the doc — fault lines found: missing Discovery/Solution-Validation deal stages, temperature ~8% populated, forecast discipline unused (Best Case=1 / Committed=0), 77% of leads stuck in
Open, a parallel undisciplined Contacts-status funnel, and bulk-enriched data vs. curated ICP. Zoho OAuth creds stored in.env(gitignored). - Fixes found via live Chrome verification: root-layout inline
<script>→<noscript>fallback (kills the React-19 script error + the original hydration warning);TooltipProvideradded to the shell (sidebar tooltips were crashing); org-tree invalid<li>-in-<li>nesting → divs. tsc green; interactive checks (sorting, bell, dropdown) verified. - Monochrome cleanup pass: replaced every leftover warm token in the app (
sage/rust/amber/clay) with shadcn-native patterns — status chips →Badgevariants (secondary / destructive / outline), form errors + delete →destructive, success →foreground, notification badge/dot/link →primary/muted-foreground, audit action pill →secondary. Org chart stays intentionally color-coded by level. The scalable win: statuses now render through the sharedBadgecomponent, not hand-rolled colored spans. - Org chart made scalable for the full 234-person tree (
org-tree.tsx), and turned horizontal (left-to-right): root on the left, each level a column to the right, siblings stacked vertically, so a large org grows down the page (natural scroll) instead of sprawling sideways. Auto-collapse to the top 3 tiers on large trees (opens as an overview, not a wall), Expand-all / Collapse-all controls, stray leadership split into their own row, and single leaf reports render as boxes instead of a "Reports (1)" list. Large report groups flow into multiple columns (2 at >10, 3 at >24) so a 40-person team is a compact card, not a tall strip, with no internal scrollbars. Fixed the.orgchartconnector CSS hijacking the inner report lists (they were laid out sideways). - Calendar hydration fix (
ui/calendar.tsx):data-dayis now a deterministicYYYY-MM-DDid instead of localetoLocaleDateString(), which mismatched between Node SSR and the browser on every day cell (surfaced on/design). - `/design` showcase reskinned to the app's shadcn-light theme (scoped
.app-themeon its root); intro copy updated. It was still rendering the old cream Daylight tokens.
Design08:56 ISTMicro-interactions on every component, tested live on /design
18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files: ui/ bases + /design section demos), on the product motion voice — 100–250ms,…
Micro-interactions on every component, tested live on /design
18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files: ui/ bases + /design section demos), on the product motion voice — 100–250ms,…
- 18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files:
ui/bases +/designsection demos), on the product motion voice — 100–250ms, ease-out-quart/quint, transform/opacity only, reduced-motion safe, purely presentational (no API changes; the polish reaches every app surface). - Highlights: checkbox check pops in + indeterminate now renders a minus; radio dot zooms in; switch thumb eases across and compresses on press; slider thumb grows on hover/grab; select/combobox chevrons rotate open and their check indicators pop; OTP digits pop in; input-group copy button flashes a sage confirmation; kbd chips got keycap depth; button trailing icons nudge on hover; toggles scale on press (suppressed in fused segments); avatar images fade in on load; badges-as-links sink on press; field errors rise in; and equivalent passes across feedback, navigation, overlay, and data components.
- Every one of the 62 /design sections functionally tested in Chromium (Playwright): toggles flipped, overlays opened and Escape-closed, sliders dragged, tabs switched, toasts fired — state asserted via aria/data attributes, console errors collected, screenshots reviewed.
- 3 real issues found, all fixed and re-verified: CommandDialog crashed the page when opened (missing cmdk
<Command>root inside the dialog — real bug, now fixed inui/command.tsx); split-dropdown menu rendered at min-width; line-chart x-axis dropped its first tick. Build green.
Design08:49 ISTAudit trail page, integrations keys, org chart, audit geo-context, UI polish
/admin/audit — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request…
Audit trail page, integrations keys, org chart, audit geo-context, UI polish
/admin/audit — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request…
- `/admin/audit` — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request context.
- Audit context enrichment —
recordAudit()now captures ip, raw user agent plus parsed browser/OS/device (ua-parser-js), geography (Vercel/Cloudflare headers when deployed; null locally), referer, and accept-language on every event, automatically for all call sites. - Integrations (
/admin/settings, admin-only) — Resend + Anthropic API keys stored AES-256-GCM encrypted (key derived fromSESSION_SECRET); format-validated (re_…/sk-ant-…); masked previews only (re_••••••cdef) in UI, audit (SETTING_UPDATED), and admin notifications. Newapp_settingstable +SETTING_KEYS/getSetting/setSettinginsrc/lib/settings.ts. - `/admin/org` — org chart from
users.manager_id: CEO → Director → Heads → Key Accounts tree with role badges, report counts, suspended dimming, and the unmapped-people count. - UI sweep: show/hide toggle on every password field (shared
PasswordInput); every button now carries an icon; nav gained an active state (clay underline +aria-current); users table gained an empty state for no-match searches. - Tested in real Chromium (Playwright): 16-check flow suite (sign-in incl. show-password toggle, add person → invite accept → bell → change password → suspend/blocked-sign-in → reactivate → forgot-password) plus org/integrations checks — all green, screenshots delivered.
- Known hydration warning on
<html>(jsclass script from the landing work) noted for a future fix.
06
Jul 2026
Monday
2 shipped
Design22:57 ISTDocs refresh + full-width /design
Root README.md rewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL, SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs…
Docs refresh + full-width /design
Root README.md rewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL, SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs…
- Root
README.mdrewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL,SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs pointers. ENTITIES.mdbrought current: two-pass seeding story (sheet import + org tree), 232-user total, full audit action list.TASKS.md: committed batch (90edadf) moved to Done./designmain column is now full width (dropped themax-w-4xlcap) — component sections fill the viewport beside the sidebar.
Design22:40 ISTLanding page, design system port, /design showcase, polish pass
Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark + .section-dark island) into globals.css (Tailwind v4 @theme),…
Landing page, design system port, /design showcase, polish pass
Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark + .section-dark island) into globals.css (Tailwind v4 @theme),…
- Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark +
.section-darkisland) intoglobals.css(Tailwind v4@theme), IBM Plex Sans/Mono vianext/font, radius 14px, warm elevation scale (shadow-rest/raised/float). - shadcn/ui installed — all 60 components at
src/components/ui, restyled by the token layer. - Landing page (`/`) rebuilt from the live site, sections 00–09 verbatim: dark hero with typewriter briefing card, sample email with numbered receipts, eight-agents grid, animated counters, principles, how-it-works tabs, stop/start diff, built-by stats, FAQ accordion, pilot CTA. Built via a 10-agent ultracode workflow (theme → build → assemble → verify → 3 reviewers → fixer; 12/13 findings fixed).
- `/design` showcase — 62 sections, every installed component with variants, foundations (tokens/type/radius), scrollspy sidebar, dark-preview strip. All 78 sidebar links verified against section ids.
- Lift, not borders (rule locked): ~60 card containers across 35 files converted from hairline outlines to tone step + warm shadow +
card-lifthover. - Polish pass (browser-audited on the production build): hero headline geometry fixed to match source (3 lines),
text-balanceon display headings, terminal-style caret blink, breathing LIVE dots, feed-row hovers, button press states + arrow nudges, nav underline slides, FAQ numbers turn clay when open, and annotation-cards ↔ email-superscript hover linking. All motion ease-out, reduced-motion safe. Verified live: agents grid, counters (1/15/8/0.59/0), accordion, scrollspy; zero console errors. - Stub
/privacy+/termspages; playwright added as devDep (used for full-page captures).