Files
Metamorph/frontend
Knacky db9313a1e1 fix(m7): pin executed_at block to the top of the red form
User feedback: the execution timestamp is the anchor the blue team
correlates their logs against, so it should be the *first* thing in the
red form, not the last (where it lived alongside the override toggle).

Moved the executed-at block above Command/Output/Comment and wrapped it
in a tinted red sub-card (border-red/40 bg-red/5) so it reads as the
form's headline. The block now shows:
- the current `executed_at` (with an `· overridden` hint when applicable),
  or a "Not yet executed" stub when the test is still pending,
- the override toggle (disabled until the test reaches executed/reviewed),
- the local datetime-local input + a small "Browser local time — server
  stores UTC" hint so an operator typing 10:30 in Paris isn't surprised
  to see 08:30Z in the JSON.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 11:37:16 +02:00
..

Metamorph frontend

Vite + React 18 + TypeScript + TailwindCSS. Design tokens from ../tasks/design.md are in tailwind.config.ts.

Local dev

npm install
npm run dev          # http://localhost:5173 (proxies /api/* to http://localhost:8000)

Build

npm run build        # outputs to dist/
npm run preview      # serves dist/ on http://localhost:8080

Quality

npm run typecheck
npm run lint
npm run format

Layout

src/
├── App.tsx                  # M0 home page (health check + design tokens demo)
├── main.tsx
├── index.css                # Tailwind base + tinted-accent utilities
├── components/ui/           # RTOps design primitives: Card, Tag, SectionHeader, FlowNode, Button
├── lib/
│   ├── api.ts               # fetch wrapper (M2 will replace with auth-aware client)
│   └── cn.ts                # classnames + ACCENTS palette
└── vite-env.d.ts