Commit Graph
21 Commits
Author SHA1 Message Date
Omar SobhandClaude Opus 4.8 34b8d2f903 Brand: replace PawPrint mark with the new clawmates claw logo
Swapped the placeholder PawPrint icon for the new claw logo everywhere it
appears: the marketing nav (mobile + desktop), the footer, the login card,
and the app left rail. The supplied PNG was a red claw on a solid near-black
background, so I flood-filled the background to transparent (the dark-red
outline survives the black threshold) and exported a trimmed, optimized
public/images/clawmates-mark.png (321x256, 88KB from 1.7MB). It reads cleanly
on both light (nav/login) and dark (footer/rail) surfaces.

Also regenerated the favicon + PWA icons from the new mark:
- src/app/icon.png (Next uses it as the favicon; removed the old favicon.ico)
- public/icons/icon-192.png and icon-512.png (claw on #0a0a0a, maskable)

Roster-card avatars on the login panel stay as PawPrint (decorative, not the
brand). Regenerated all seven @visual baselines that contain the mark — the
swap is sub-threshold for maxDiffPixelRatio, so I deleted and recaptured them
rather than relying on update-snapshots.

typecheck/lint/build green · all @visual green · deployed and verified live
(mark, /icon.png, and PWA icons all 200).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-13 18:43:14 -05:00
Omar SobhandClaude Opus 4.8 704541f846 Computer panel: open phone-first, full-height, full-bleed, tight grid
Five capture-verified panel fixes (vs the WorkClaw size captures):

- Open from chat lands at PHONE size (launcher sets device:phone), and the
  Computer launcher icon hides while the panel is open (ChatHeader).
- Card fills the column at every size (md:h-full, dropped the 652px centered
  card) so phone/tablet are full-height with the dock anchored at the bottom.
- Full bleeds horizontally (drop the px-6 inset + radius at full) so it meets
  the rail and covers the reserved chat — no squished text behind. Vertical
  pt-[88px] kept so the app header clears the chat-header close (no overlap).
- Home grid → grid-cols-[repeat(4,72px)] so icons stay 72px/tight at every
  width instead of stretching at tablet/full.

Regenerated computer-home baseline (now phone + full-height). typecheck/lint/
86 unit/31 E2E/6 visual green.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-12 22:38:50 -05:00
Omar SobhandClaude Opus 4.8 db3dcff932 Computer panel: "Add Apps" tile with a visible plus
The far-right home tile read "Add" and rendered its plus through GradientGlyph
(coral, faint/unclear). Match WorkClaw's capture: label "Add Apps" and a plain
lucide-plus in currentColor (white/65, inherits from the dashed tile),
strokeWidth 2, 19px. Updated the p3-panel E2E label + computer-home baseline.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-12 18:30:42 -05:00
Omar SobhandClaude Opus 4.8 8dac7aff49 Computer panel: filled glyphs + 32px grid inset + header padding
All verified against the captured WorkClaw panel DOM (not the reviewer's
live-preview guesses, which were wrong on two points):

- Glyphs are now FILLED — gradient on fill + stroke, 1px stroke, and a
  drop-shadow(0 1px 2px rgba(0,0,0,0.25)) — via a `filled` prop on
  GradientGlyph. Applied to the dark-tile glyphs (Claw Chat + dock
  Skills/Files/Routines/Settings). The reviewer said keep Skills outline —
  the capture shows WorkClaw fills the zap too; and it missed the drop-shadow.
- Grid inset 12px → 32px (px-8): the grid is now 336px so grid-cols-4 resolves
  to 72px tracks (capture shows repeat(4,1fr) at 336px — NOT explicit 72px cols
  as claimed; same grid-cols-4 as ours, just the right container width).
- Panel header: drop the fixed h-11/px-3, use px-8 pt-6 = padding 24px 32px 0
  (matches WorkClaw's inline style exactly).

typecheck/lint/86 unit/31 E2E/6 visual green; computer-home baseline updated.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-12 18:25:02 -05:00
Omar SobhandClaude Opus 4.8 36087c30f5 Computer panel: match measured WorkClaw geometry (from capture)
Forensic capture of the live app's Computer panel gave exact ground truth,
correcting my prior commit (which trusted a reviewer's measurements):

- Dock is content-width (~380px) centered by a w-full wrapper, NOT stretched
  full-width — my last change had wrongly stretched it. Reverts to the real
  centered-pill behaviour.
- Dark tiles (#1f1f1f) gain the measured grounding drop in --shadow-dock-tile
  (0 4.65px 9.35px rgba(0,0,0,0.2)); previously flat (hairline + inset only).
- AppIcon cells fixed to 68px / 8px gap; grid gap 34px×16px; icons 34px; the
  dock now uses the same nested tile component as the grid.
- White brand-tile shadow + tile nesting were already exact (capture confirms).

Regenerated computer-home baseline. typecheck/lint/86 unit/31 E2E/6 visual green.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-12 08:00:16 -05:00
Omar SobhandClaude Opus 4.8 23a4bad07d Computer panel: full-width dock bar + WorkClaw tile structure
Two measured parity changes to the Computer home screen (HomeScreen.tsx):

- Dock: mx-auto centered pill → flex items-end justify-center, so it spans
  the panel width as a bottom-anchored frosted bar instead of a floating
  content-width pill. (Shadow/blur/bg/ring already matched prod.)
- App-grid tiles: adopt WorkClaw's nested DOM (cell → button → fade layer →
  visual tile) and the measured 4-layer "physical icon" shadow on the white
  brand tiles (browser/slack), where its dark hairline + drop + bright inset
  read. Dark glass tiles keep the white-bevel shadow-dock-tile (a dark drop
  is invisible on them). Brand icons sized to the measured 34px.

Regenerated computer-home visual baseline. typecheck/lint/86 unit/31 E2E
green; all 6 visual pass.

Note: WorkClaw's Computer panel is behind auth, so unlike the token work
these targets couldn't be verified against prod CSS — applied per the
reviewer's live measurements at the user's direction.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-12 07:18:25 -05:00
Omar SobhandClaude Fable 5 c174c94594 Chat header: remove the agent identity block
Dropped the avatar + name + role + online dot from the top of the chat
header (the claw is already shown in the rail and the welcome state). The
header now holds only the right-aligned action cluster (and the device/
Close overlay while the panel is open). Removed the now-unused agent prop
+ Avatar/Agent imports; ChatWorkspace no longer passes agent to the header.
Regenerated chat-welcome + computer-home baselines; full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 18:14:48 -05:00
Omar SobhandClaude Fable 5 8c9b750673 Left rail: match WorkClaw sizing/weights/container
Measured sidebar parity:
- Container: dropped the aside's px-1 so the rail is the full w-rail 176px
  (was 168px inner); added bg-background (solid #0a0a0a, was transparent);
  padding now 8px 0 24px (pt-2 pb-6).
- Bottom nav (Skills/Apps/Team/Credits): 14px/400 → 12px/500 (text-xs
  font-medium, leading-[1.3]); trailing credits balance likewise.
- Claw-name labels: active 400→600 (font-semibold), inactive 400→500
  (font-medium); kept 12px.
Verified live at 1440: rail width 176, bg rgb(10,10,10), nav 12px/500,
active claw name 12px/600. Rail-wide change → regenerated all 7 visual
baselines; full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 15:25:38 -05:00
Omar SobhandClaude Fable 5 ddc1f8fbe0 Fonts: drop body antialiased so text renders at the reference weight
The <body> carried Tailwind's `antialiased` (-webkit-font-smoothing:
antialiased), which inherits through the whole tree and renders every
chat/message/UI text thinner & lighter than WorkClaw. WorkClaw leaves the
browser default (`auto`), giving the crisper/heavier weight. Removed the
class — body is now just `min-h-full`; computed -webkit-font-smoothing is
`auto`. The font itself was always 14px/400 Geist; only the smoothing
differed. Global rendering change → regenerated all 7 visual baselines;
full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 14:06:03 -05:00
Omar SobhandClaude Fable 5 2910189717 Regenerate computer-home baseline: chat condenses beside the panel
Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 12:19:35 -05:00
Omar SobhandClaude Fable 5 914ffae8f9 Regenerate computer-home baseline: action cluster in the middle column when expanded
Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 11:59:43 -05:00
Omar SobhandClaude Fable 5 fa1f64803c Regenerate chat-welcome + computer-home baselines for the right-aligned cluster
Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 11:17:14 -05:00
Omar SobhandClaude Fable 5 fbff4cbbc8 Regenerate chat-welcome + computer-home baselines for the Slack-chip cluster
Action cluster now Slack → Sessions → New → separator → Computer, chip-styled.
Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 08:42:10 -05:00
Omar SobhandClaude Fable 5 e0a59e3b95 Regenerate chat-welcome + computer-home baselines for the two-zone header
Action cluster centered, device/Close zone top-right. Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 07:46:22 -05:00
Omar SobhandClaude Fable 5 40e7e66eea Regenerate computer-home baseline for the 67% tablet overlay
The panel is now a 847px (67%) absolute overlay at tablet, covering the
right of the chat which stays full-width underneath. Fresh capture; full
suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 06:38:40 -05:00
Omar SobhandClaude Fable 5 dab08e47aa Regenerate rail baselines + de-flake the visual signIn helper
Rail logo (coral paw-print brand tile) and 58px agent tiles updated in
workspace-home, chat-welcome, computer-home (the last also shows the
panel as a right overlay — chat no longer shifts). Fixed the visual
signIn helper: it matched the login page's lowercase 'clawmates' heading
and could screenshot mid-navigation, so workspace-home captured the login
page — now it waits for navigation off /login and matches 'Clawmates'
exact. Avatar unit test updated for the 58px/rounded-20 rail tile.
Full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 05:30:02 -05:00
Omar SobhandClaude Fable 5 9456edf198 Regenerate chat-welcome + computer-home baselines for the new welcome stack
Composer centered in the welcome stack with attach/screenshot icons and
no Send, 12px subtitle, rounded 126px hero avatar, and the larger chat
header (58px avatar / 18px name / 14px role). Captured fresh; full suite
(37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-11 04:29:15 -05:00
Omar SobhandClaude Fable 5 660dbc6583 Regenerate computer-home baseline for the new panel layout
Tablet-width card, size toggles + close in the global header, and the
enlarged dock (56px tiles / 34px glyphs / 11px labels). Captured from a
verified-fresh server; full suite (37) green.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 22:05:24 -05:00
Omar SobhandClaude Fable 5 b135c114df Regenerate visual baselines against the corrected build
The previous baselines were captured against a stale next-start server
(Playwright reuseExistingServer reused a ghost on :3100 serving the
pre-fix bundle), so they encoded the broken render. Deleted and
regenerated from a verified-fresh server: chat-welcome (coral name, 2×2
pill chips, #1A1A1A composer), computer-home (real Chrome/Slack brand
tiles, coral Claw Chat glyph, frosted dock, icon size-toggle), credits,
marketing, team-orgchart. Full suite (37) green against them.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 21:34:40 -05:00
Omar SobhandClaude Fable 5 337f059afd R7: test reconciliation + visual baseline lock
- Regenerated all 7 @visual darwin baselines for the restyled surfaces
  (login, workspace home, chat welcome, computer panel, credits) and
  added two new ones: the marketing landing (full page) and the Team
  org-chart tab.
- Credits visual made deterministic: balance + the whole usage card are
  masked (testids), and the runway line always renders so the card
  height is constant — shared-backend credit spend during the full run
  no longer shifts the diff.
- Full gate sweep green end to end: 173 Rust tests + clippy/fmt clean,
  83 frontend unit + lint + typecheck, all 37 Playwright journeys
  (functional + visual), axe serious/critical at zero across every
  surface, LOC ≤1250 and no-placeholder gates.

The interface now matches the reference design system across the app,
the Computer panel, the global pages, and a new light-theme marketing
site — design system only, our brand throughout.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 20:26:10 -05:00
Omar SobhandClaude Fable 5 e65bcd4130 Post-1.0 finale: Calico-enforced egress denial + visual-regression lock
- scripts/netpol-cluster.sh: a kind cluster with Calico (default CNI
  disabled) — the only way to PROVE the §15 default-deny NetworkPolicy,
  since kindnet accepts the object but never enforces it. New live test
  on that cluster: outbound connect to 1.1.1.1 dropped, DNS egress
  dropped, while API-server exec keeps working (not pod network).
  Kernel-level enforcement of the sandbox egress claim, demonstrated
- K8sDriver::connect_with_context: pin a kubeconfig context instead of
  ambient. The whole k8s suite now pins its cluster explicitly — the
  netpol cluster's creation had silently switched the current context
  and stranded the seccomp test on the wrong cluster (fixed and made
  impossible to recur)
- CI: netpol-cluster up + calico egress test in the sandbox-k8s job
- Visual-regression lock (plan P6): @visual Playwright spec with
  animation-disabled, masked-dynamic-region screenshots of login,
  workspace home, chat welcome, computer panel, credits; darwin
  baselines committed (5 PNGs); CI excludes @visual until linux
  baselines are generated there. Full local suite: 33 journeys

165 Rust tests + 5 live kind tests (2 clusters) + 33 journeys.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-06-10 13:30:10 -05:00