diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index fd3b5d120..1b0cb113b 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -10,7 +10,7 @@
"plugins": [
{
"name": "genie",
- "version": "4.260606.2",
+ "version": "4.260607.1",
"source": "./plugins/genie",
"description": "Human-AI partnership for Claude Code. Share a terminal, orchestrate workers, evolve together. Brainstorm ideas, wish them into plans, make with parallel agents, ship as one team. A coding genie that grows with your project."
}
diff --git a/.genie/agents/metrics-updater/daily-stats.jsonl b/.genie/agents/metrics-updater/daily-stats.jsonl
index 7b9b511d9..04a9492c9 100644
--- a/.genie/agents/metrics-updater/daily-stats.jsonl
+++ b/.genie/agents/metrics-updater/daily-stats.jsonl
@@ -30,3 +30,4 @@
{"date":"2026-06-04","commits":2,"loc_added":22,"loc_removed":16,"releases":0,"contributors":["Claude","github-actions[bot]"]}
{"date":"2026-06-05","commits":0,"loc_added":0,"loc_removed":0,"releases":0,"contributors":[]}
{"date":"2026-06-06","commits":0,"loc_added":0,"loc_removed":0,"releases":0,"contributors":[]}
+{"date":"2026-06-07","commits":0,"loc_added":0,"loc_removed":0,"releases":0,"contributors":[]}
diff --git a/.genie/agents/metrics-updater/runs.jsonl b/.genie/agents/metrics-updater/runs.jsonl
index 0bc1e6c52..066eb487d 100644
--- a/.genie/agents/metrics-updater/runs.jsonl
+++ b/.genie/agents/metrics-updater/runs.jsonl
@@ -7,3 +7,4 @@
{"timestamp":"2026-06-04T12:17:44Z","duration_ms":600,"status":"success","dry_run":false,"daily_stats_count":70,"charts_generated":3,"velocity_md_updated":true,"api_calls":2,"tools_generated":7,"errors":[],"metrics":{"releases_24h":1,"releases_7d":5,"merged_prs_7d":0,"avg_merge_time_h":4.8,"ship_rate_pct":97,"commits_7d":12,"loc_net_7d":-74,"contributors_7d":4},"steps":[{"name":"collect_stats","duration_ms":58},{"name":"backfill_check","duration_ms":18},{"name":"generate_charts","duration_ms":57},{"name":"generate_velocity","duration_ms":120},{"name":"generate_readme","duration_ms":63},{"name":"update_state","duration_ms":142}]}
{"timestamp": "2026-06-05T12:12:43Z", "duration_ms": 2887, "status": "success", "dry_run": false, "daily_stats_count": 31, "charts_generated": 3, "velocity_md_updated": true, "errors": [], "steps": [{"name": "collect_stats", "duration_ms": 48}, {"name": "backfill_check", "duration_ms": 16}, {"name": "generate_charts", "duration_ms": 54}, {"name": "generate_velocity", "duration_ms": 93}, {"name": "generate_readme", "duration_ms": 57}, {"name": "commit_push", "duration_ms": 2511}]}
{"timestamp": "2026-06-06T12:07:59Z", "duration_ms": 3490, "status": "success", "dry_run": false, "daily_stats_count": 32, "charts_generated": 3, "velocity_md_updated": true, "errors": [], "steps": [{"name": "collect_stats", "duration_ms": 72}, {"name": "backfill_check", "duration_ms": 18}, {"name": "generate_charts", "duration_ms": 119}, {"name": "generate_velocity", "duration_ms": 133}, {"name": "generate_readme", "duration_ms": 59}, {"name": "commit_push", "duration_ms": 2963}]}
+{"timestamp": "2026-06-07T12:09:55Z", "duration_ms": 4370, "status": "success", "dry_run": false, "daily_stats_count": 33, "charts_generated": 3, "velocity_md_updated": true, "errors": [], "steps": [{"name": "collect_stats", "duration_ms": 130}, {"name": "backfill_check", "duration_ms": 17}, {"name": "generate_charts", "duration_ms": 86}, {"name": "generate_velocity", "duration_ms": 1711}, {"name": "generate_readme", "duration_ms": 53}, {"name": "commit_push", "duration_ms": 2256}]}
diff --git a/.genie/agents/metrics-updater/state.json b/.genie/agents/metrics-updater/state.json
index 5d8df868d..deb751102 100644
--- a/.genie/agents/metrics-updater/state.json
+++ b/.genie/agents/metrics-updater/state.json
@@ -1,5 +1,5 @@
{
- "last_run": "2026-06-06T12:07:59Z",
+ "last_run": "2026-06-07T12:09:55Z",
"last_run_status": "success",
"last_metrics": {
"releases_24h": 1,
@@ -12,8 +12,8 @@
"contributors_7d": 4,
"note": "merged_prs_7d=0: team uses direct commits to dev branch (confirmed by GitHub API)"
},
- "daily_stats_count": 32,
+ "daily_stats_count": 33,
"charts_generated": 3,
"velocity_md_updated": true,
- "duration_ms": 3490
+ "duration_ms": 4370
}
diff --git a/.genie/assets/commits-30d.svg b/.genie/assets/commits-30d.svg
index b349ba309..658277d45 100644
--- a/.genie/assets/commits-30d.svg
+++ b/.genie/assets/commits-30d.svg
@@ -9,7 +9,7 @@
39
-05-08
+05-09
@@ -22,22 +22,22 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-06-06
+06-07
\ No newline at end of file
diff --git a/.genie/assets/loc-30d.svg b/.genie/assets/loc-30d.svg
index 38dbc1af9..f0b62967f 100644
--- a/.genie/assets/loc-30d.svg
+++ b/.genie/assets/loc-30d.svg
@@ -12,9 +12,11 @@
470.0K
-05-08
+05-09
+
+
-
+
@@ -25,8 +27,8 @@
-
-
+
+
@@ -37,7 +39,5 @@
-
-
-06-06
+06-07
\ No newline at end of file
diff --git a/.genie/assets/releases-30d.svg b/.genie/assets/releases-30d.svg
index 56216a2b9..b4b8a7eda 100644
--- a/.genie/assets/releases-30d.svg
+++ b/.genie/assets/releases-30d.svg
@@ -9,7 +9,7 @@
0
-05-08
+05-09
@@ -39,5 +39,5 @@
-06-06
+06-07
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2feacfa03..3a5f669f6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -88,8 +88,8 @@ jobs:
exit 1
fi
- # Visual regression โ TUI snapshots locked to the Severance Lumon-MDR
- # palette (Group 6 of the design-system-severance wish). Any palette
+ # Visual regression โ TUI snapshots locked to the petrol/mint
+ # palette. Any palette
# token change without a matching `bun test test/visual/ -u` rerun
# produces a snapshot diff and fails the build. Runs before knip so a
# palette regression surfaces with a clean error rather than after
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 177e22c6e..067c7b45c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -130,7 +130,7 @@ Wish: `wish/tui-native-selection`.
### Breaking โ design system
-- **Unified design system on the Severance Lumon-MDR palette.** All color
+- **Unified design system on the petrol/mint palette.** All color
tokens now live in a single workspace package, `packages/genie-tokens/`,
consumed by the TUI (`src/tui/theme.ts`), the desktop app
(`packages/genie-app/lib/theme.ts`), and tmux (via the generated
diff --git a/README.md b/README.md
index 9c0213b67..f2e810587 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
-**๐ 18 commits** this week ยท **0 releases** ยท **-52 LoC** ยท **4 contributors**
+**๐ 14 commits** this week ยท **0 releases** ยท **-54 LoC** ยท **4 contributors**

@@ -29,14 +29,15 @@ Genie is a CLI that turns one sentence into a finished pull request. You describ
curl -fsSL https://raw.githubusercontent.com/automagik-dev/genie/main/install.sh | bash
```
-Every release is cosign-signed with SLSA provenance โ the installer verifies the binary before it runs. Then:
+Every release is cosign-signed with SLSA provenance โ the installer verifies the binary before it runs.
-```bash
-genie
-/wizard # interviews you, scaffolds your project, walks your first wish
+Then, in Claude Code, Codex, or any AI coding agent, run the onboarding wizard:
+
+```text
+/wizard
```
-Run `genie doctor` anytime to check your install.
+It interviews you, scaffolds the project, and walks you through your first wish. Prefer the cockpit? `genie` opens the terminal UI; `genie doctor` checks your install.
## What you get
@@ -140,7 +141,7 @@ A ground-up rewrite.
## Design
-A single dark-only palette inspired by **Severance** โ one source of truth (`packages/genie-tokens/`), three consumers (TUI, desktop app, tmux).
+A single dark-only palette from one source of truth (`packages/genie-tokens/`), shared by three consumers (TUI, desktop app, tmux).
---
diff --git a/VELOCITY.md b/VELOCITY.md
index 5fdddfaa3..d87056c6a 100644
--- a/VELOCITY.md
+++ b/VELOCITY.md
@@ -1,15 +1,15 @@
# Velocity Dashboard
-> Last updated: 2026-06-06 12:07 UTC | Data range: 2026-05-06 to 2026-06-06
+> Last updated: 2026-06-07 12:09 UTC | Data range: 2026-05-06 to 2026-06-07
## At a Glance
| Metric | 7 days | 30 days | All time |
|--------|-------:|--------:|---------:|
-| Commits | 18 | 136 | 136 |
-| Releases | 0 | 0 | 0 |
-| LoC (net) | -52 | +939.5K | โ |
-| Contributors | 4 | 8 | 8 |
+| Commits | 14 | 136 | 5.6K |
+| Releases | 0 | 0 | 640 |
+| LoC (net) | -54 | +939.5K | โ |
+| Contributors | 4 | 8 | 37 |
---
@@ -40,4 +40,15 @@
| 7 | Genie Automagik | 11 |
| 8 | automagik-genie | 1 |
-*8 contributors since 2026-05-22*
+*37 contributors since 2025-09-27*
+
+---
+
+## Major Version Milestones
+
+> How long did it take to build each major version, from where we were to where we landed.
+
+| Milestone | Period | Days | Commits (linear) | Commits (all) | PRs merged | LoC (net) | Contributors |
+|-----------|--------|-----:|-----------------:|--------------:|-----------:|----------:|-------------:|
+| Genesis โ v4 stable | 2026-05-23 โ 2026-03-23 | -61 | 1.3K | 5.6K | 110 | +60.2K | 22 |
+| v3 โ v4 (version sprint) | 2026-03-08 โ 2026-03-23 | 15 | 189 | 3.6K | 65 | +22.2K | 11 |
diff --git a/package.json b/package.json
index 1977e33e2..63acb4787 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@automagik/genie",
- "version": "4.260606.2",
+ "version": "4.260607.1",
"description": "Collaborative terminal toolkit for human + AI workflows. NOTE: npm distribution discontinued 2026-05-09 โ install via `curl -fsSL https://raw.githubusercontent.com/automagik-dev/genie/main/install.sh | bash` (cosign + SLSA verified). See https://automagik.dev/genie/release-process",
"type": "module",
"bin": {
diff --git a/packages/genie-app/lib/theme.ts b/packages/genie-app/lib/theme.ts
index 073af276d..e036d3b2b 100644
--- a/packages/genie-app/lib/theme.ts
+++ b/packages/genie-app/lib/theme.ts
@@ -1,7 +1,7 @@
/**
* Genie design tokens โ re-export from `@automagik/genie-tokens`.
*
- * Severance Lumon-MDR palette: petrol bg, mint accent, calm amber/crimson alarms.
+ * Petrol/mint palette: petrol bg, mint accent, calm amber/crimson alarms.
* All views import `palette`/`tokens` from here; never hard-code hex.
*/
@@ -26,7 +26,7 @@ export const radii = {
* from `genie-tokens`.
*/
export const theme = {
- // Accent surface (legacy purple/violet โ Severance mint)
+ // Accent surface (legacy purple/violet โ mint)
purple: palette.accentBright,
violet: palette.accent,
cyan: palette.info,
diff --git a/packages/genie-tokens/__tests__/palette.test.ts b/packages/genie-tokens/__tests__/palette.test.ts
index d6ac61cbd..6fd0d3bf4 100644
--- a/packages/genie-tokens/__tests__/palette.test.ts
+++ b/packages/genie-tokens/__tests__/palette.test.ts
@@ -41,7 +41,7 @@ describe('palette shape', () => {
}
});
- test('Severance signature values are exact', () => {
+ test('signature palette values are exact', () => {
expect(palette.bg).toBe('#0a1d2a');
expect(palette.accent).toBe('#7fc8a9');
expect(palette.error).toBe('#a83838');
@@ -59,9 +59,9 @@ describe('semantic tokens', () => {
'dangerStrong',
'attention',
'info',
- 'severed',
- 'outieWarm',
- 'lumonBeige',
+ 'muted',
+ 'warm',
+ 'beige',
] as const;
test.each(requiredAliases)('%s is exposed and resolves to a palette value', (alias) => {
@@ -79,9 +79,9 @@ describe('semantic tokens', () => {
expect(tokens.dangerStrong).toBe(palette.errorBright);
expect(tokens.attention).toBe(palette.warning);
expect(tokens.info).toBe(palette.info);
- expect(tokens.severed).toBe(palette.innieGrey);
- expect(tokens.outieWarm).toBe(palette.outieAmber);
- expect(tokens.lumonBeige).toBe(palette.beige);
+ expect(tokens.muted).toBe(palette.mutedGrey);
+ expect(tokens.warm).toBe(palette.warmAmber);
+ expect(tokens.beige).toBe(palette.beige);
});
});
@@ -103,8 +103,8 @@ describe('WCAG AA contrast', () => {
});
test('errorBright on bg meets 3:1 โ escalated alarm state must be readable', () => {
- // Note: `palette.error` (#a83838) is intentionally desaturated per the Severance
- // design ("Red is rare and means alarm โ never decorative"). When higher contrast
+ // Note: `palette.error` (#a83838) is intentionally desaturated by design
+ // ("Red is rare and means alarm โ never decorative"). When higher contrast
// is required, surfaces use `errorBright` (the hover/escalation state).
expect(contrast(palette.errorBright, palette.bg)).toBeGreaterThanOrEqual(3);
});
diff --git a/packages/genie-tokens/package.json b/packages/genie-tokens/package.json
index 6b7fbbed8..3054aaf47 100644
--- a/packages/genie-tokens/package.json
+++ b/packages/genie-tokens/package.json
@@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"type": "module",
- "description": "Genie design tokens โ Severance Lumon-MDR palette + semantic aliases.",
+ "description": "Genie design tokens โ petrol/mint palette + semantic aliases.",
"main": "index.ts",
"exports": {
".": "./index.ts",
diff --git a/packages/genie-tokens/palette.ts b/packages/genie-tokens/palette.ts
index 2aa31edc6..4099a5413 100644
--- a/packages/genie-tokens/palette.ts
+++ b/packages/genie-tokens/palette.ts
@@ -1,14 +1,13 @@
/**
- * Severance Lumon-MDR palette โ primitive hex values.
+ * Genie palette โ primitive hex values.
*
- * Reference: TV show "Severance" (Apple TV+).
- * - MDR terminal: black-petrol bg, mint-green monospace text, desaturated red alarms.
- * - Lumon offices: pale beige walls, deep navy carpet, fluorescent overhead light.
- * - Severed/Innie palette is muted; warmth (amber) reserved for the Outie world.
+ * A dark, calm scheme:
+ * - Terminal surface: black-petrol bg, mint-green monospace text, desaturated red alarms.
+ * - Muted base palette; warm beige/amber reserved for rare highlights.
* - Red is rare and means alarm โ never decorative.
*/
export const palette = {
- // Surfaces (Lumon institutional)
+ // Surfaces
bg: '#0a1d2a',
bgRaised: '#0f2638',
bgHover: '#143049',
@@ -23,7 +22,7 @@ export const palette = {
border: '#2a3f4f',
borderActive: '#7fc8a9',
- // Accent (MDR terminal text โ replaces brand purple)
+ // Accent (mint terminal text โ replaces brand purple)
accent: '#7fc8a9',
accentDim: '#5a9d82',
accentBright: '#9eddc1',
@@ -35,10 +34,10 @@ export const palette = {
errorBright: '#c44a4a',
info: '#5a8ca8',
- // Severance accents (rare)
+ // Warm accents (rare)
beige: '#d4c5a9',
- innieGrey: '#5e6e74',
- outieAmber: '#d4a574',
+ mutedGrey: '#5e6e74',
+ warmAmber: '#d4a574',
// Scrollbar
scrollTrack: '#2a3f4f',
diff --git a/packages/genie-tokens/tokens.ts b/packages/genie-tokens/tokens.ts
index 25cdae96f..797ab580d 100644
--- a/packages/genie-tokens/tokens.ts
+++ b/packages/genie-tokens/tokens.ts
@@ -27,9 +27,9 @@ export const tokens = {
info: palette.info,
success: palette.success,
- severed: palette.innieGrey,
- outieWarm: palette.outieAmber,
- lumonBeige: palette.beige,
+ muted: palette.mutedGrey,
+ warm: palette.warmAmber,
+ beige: palette.beige,
} as const;
export type TokenKey = keyof typeof tokens;
diff --git a/plugins/genie/.claude-plugin/plugin.json b/plugins/genie/.claude-plugin/plugin.json
index c711e612c..5b66d9a3e 100644
--- a/plugins/genie/.claude-plugin/plugin.json
+++ b/plugins/genie/.claude-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "genie",
- "version": "4.260606.2",
+ "version": "4.260607.1",
"description": "Human-AI partnership for Claude Code. Share a terminal, orchestrate workers, evolve together. Brainstorm ideas, turn them into wishes, execute with /work, validate with /review, and ship as one team.",
"author": {
"name": "Namastex Labs"
diff --git a/plugins/genie/package.json b/plugins/genie/package.json
index a0118d35d..0ed796486 100644
--- a/plugins/genie/package.json
+++ b/plugins/genie/package.json
@@ -1,6 +1,6 @@
{
"name": "genie-plugin",
- "version": "4.260606.2",
+ "version": "4.260607.1",
"private": true,
"description": "Runtime dependencies for genie bundled CLIs",
"type": "module",
diff --git a/scripts/tmux/generate-theme.ts b/scripts/tmux/generate-theme.ts
index 1c2d3447a..47d80b502 100644
--- a/scripts/tmux/generate-theme.ts
+++ b/scripts/tmux/generate-theme.ts
@@ -2,7 +2,7 @@
/**
* Generate the tmux theme file from genie-tokens.
*
- * Reads the Severance Lumon-MDR palette from `packages/genie-tokens` and emits
+ * Reads the petrol/mint palette from `packages/genie-tokens` and emits
* `scripts/tmux/.generated.theme.conf` with every color-bearing tmux directive:
* styles (status, pane border, message, mode, clock) and format strings
* (pane-border-format, status-format[0], status-format[1]).
diff --git a/scripts/tmux/genie.tmux.conf b/scripts/tmux/genie.tmux.conf
index 4d081433c..71bbe9386 100644
--- a/scripts/tmux/genie.tmux.conf
+++ b/scripts/tmux/genie.tmux.conf
@@ -1,6 +1,6 @@
# ============================================================================
# Genie TUI โ tmux configuration
-# Severance Lumon-MDR theme (petrol bg, mint accent).
+# Petrol/mint theme (petrol bg, mint accent).
# Native tmux 3.3+, zero plugins.
#
# Layout:
diff --git a/src/tui/components/TreeNode.tsx b/src/tui/components/TreeNode.tsx
index 7357a0bd8..8216adafb 100644
--- a/src/tui/components/TreeNode.tsx
+++ b/src/tui/components/TreeNode.tsx
@@ -148,7 +148,7 @@ export function getAgentColor(node: TreeNodeType): string {
// Mirrors getAgentIcon โ work-state first, process state fallback.
switch (node.workState) {
case 'in_flight':
- // Was palette.emerald pre design-system rebase. Lumon-MDR migration
+ // Was palette.emerald pre design-system rebase. The palette migration
// hard-cut emerald/cyan aliases (theme.ts:5); accentBright is the
// semantic equivalent for "active, attention-getting" without
// re-introducing the dropped color name.
diff --git a/src/tui/theme.ts b/src/tui/theme.ts
index 98b0a0965..a13c251fb 100644
--- a/src/tui/theme.ts
+++ b/src/tui/theme.ts
@@ -1,5 +1,5 @@
/**
- * TUI theme โ Severance Lumon-MDR palette.
+ * TUI theme โ petrol/mint palette.
*
* Hard re-export of the workspace `genie-tokens` package. No backward-compat
* aliases for the old purple/violet/cyan/emerald names; every call site has
diff --git a/src/tui/widgets/xterm-cell-paint.ts b/src/tui/widgets/xterm-cell-paint.ts
index df699951d..4dc1d3287 100644
--- a/src/tui/widgets/xterm-cell-paint.ts
+++ b/src/tui/widgets/xterm-cell-paint.ts
@@ -121,7 +121,7 @@ export interface PaintOptions {
cols: number;
/** Max rows to paint. */
rows: number;
- /** Host theme overrides (default โ Lumon-MDR palette). */
+ /** Host theme overrides (default โ petrol/mint palette). */
theme?: PaintTheme;
}
diff --git a/test/visual/tui-snapshot.test.tsx b/test/visual/tui-snapshot.test.tsx
index 61240039a..f5e03a14e 100644
--- a/test/visual/tui-snapshot.test.tsx
+++ b/test/visual/tui-snapshot.test.tsx
@@ -1,6 +1,6 @@
/** @jsxImportSource @opentui/react */
/**
- * Visual regression harness for the Severance Lumon-MDR TUI palette.
+ * Visual regression harness for the petrol/mint TUI palette.
*
* Renders each major TUI surface to an opentui char-frame and asserts the
* frame against a committed snapshot. The snapshot encodes both the layout