whale-igniter 1.3.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ All notable changes to Whale Igniter are documented here.
4
+
5
+ ## 1.4.0 - 2026-06-03
6
+
7
+ ### Added
8
+
9
+ - Local UI theme engine for generated landing pages, with Atlas, Harbor, and Aurora themes.
10
+ - `whale themes list` for browsing shipped themes.
11
+ - Capability-gated `whale ignite` splash with color, Unicode, and plain fallbacks.
12
+ - README Data & privacy section, generated-output ownership note, and font attribution.
13
+
14
+ ### Changed
15
+
16
+ - Generated landing CSS now emits theme-driven custom properties for color, typography, structure, interaction, and motion.
17
+ - Selene response cache writes now ensure `.whale/` is ignored in the target project's `.gitignore`.
18
+ - Reworded older brand-planning docs to avoid vague status language.
19
+
20
+ ### Verified
21
+
22
+ - Selene API keys are read from environment variables and used only in provider request headers.
23
+ - Selene cache stores response text under `.whale/selene/cache`; it does not store API keys.
24
+ - No font binaries are shipped.
25
+ - No telemetry or analytics code is present.
package/README.md CHANGED
@@ -9,132 +9,173 @@
9
9
  <img alt="local first" src="https://img.shields.io/badge/local--first-agent%20memory-%230034D3?labelColor=%23F2ECE1&style=flat-square">
10
10
  </p>
11
11
 
12
- **Local-first project memory for AI agents.**
12
+ ---
13
13
 
14
- Whale Igniter gives your repo a structured memory: design foundations,
15
- components, decisions, refinements and generated agent context. It is
16
- CLI-first, deterministic by default, and works with Codex, Claude Code,
17
- Cursor, Copilot and any MCP client.
14
+ **Your agent is only as smart as the context you give it. Whale makes that context automatic.**
18
15
 
19
- ## Quick Start
16
+ AI agents — Claude Code, Codex, Cursor, Copilot — are powerful but amnesiac by design. Every conversation starts from zero. They don't know what you decided, why you decided it, or which exceptions are intentional. Without structure, they guess.
20
17
 
21
- ```bash
22
- npx whale-igniter ignite my-app
23
- cd my-app
24
- npx whale-igniter remember
25
- npx whale-igniter check
26
- ```
18
+ Whale Igniter gives your repo a **living memory**: design foundations, components, decisions, and approved exceptions — kept in sync by the CLI, readable by any agent, and never dependent on a chat history that will disappear.
19
+
20
+ ---
27
21
 
28
- Install globally if you want the shorter `whale` command:
22
+ ## How it works
29
23
 
30
24
  ```bash
31
25
  npm install -g whale-igniter
32
26
  whale ignite my-app
33
27
  ```
34
28
 
35
- Requires Node 20 or newer.
29
+ That single command creates a structured intelligence layer inside your project:
36
30
 
37
- ## What It Creates
38
-
39
- ```text
31
+ ```
40
32
  my-app/
41
- ├── whale.config.json
42
- ├── CLAUDE.md
33
+ ├── whale.config.json # foundations, stack, theme, AI targets
34
+ ├── CLAUDE.md # agent-readable project brief, auto-synced
43
35
  ├── intelligence/
44
- │ ├── components.json
45
- │ ├── decisions.json
46
- │ └── refinements.json
47
- └── llm-wiki/
36
+ │ ├── components.json # component catalog with variants and states
37
+ │ ├── decisions.json # architectural decisions and their rationale
38
+ │ └── refinements.json # approved exceptions — "this is intentional"
39
+ └── llm-wiki/ # generated markdown, one file per concern
40
+ ```
41
+
42
+ `intelligence/*.json` is the source of truth. Markdown is generated from it. When you run `whale sync`, everything regenerates — CLAUDE.md, the wiki, the context your agent reads on the next conversation.
43
+
44
+ The agent doesn't guess anymore. It reads.
45
+
46
+ Generated output belongs to you. Files created by Whale Igniter, including generated HTML, CSS, CLAUDE.md, AGENTS.md, wiki pages, and copied theme files, are yours to use and modify; they are not restricted by this project's MIT license.
47
+
48
+ ---
49
+
50
+ ## What agents can read — and write
51
+
52
+ Whale ships an **MCP server** that exposes your project intelligence as structured tools any compatible client can call:
53
+
54
+ ```bash
55
+ whale mcp config --client claude-code
56
+ whale mcp config --client cursor
57
+ whale mcp config --client zed
58
+ ```
59
+
60
+ | Tool | What it does |
61
+ |---|---|
62
+ | `whale_project_overview` | Full project brief: stack, foundations, packs, context |
63
+ | `whale_list_components` | Component catalog with files, variants, states, tokens |
64
+ | `whale_list_decisions` | Architectural decisions with rationale and status |
65
+ | `whale_list_refinements` | Approved exceptions — context for drift that's intentional |
66
+ | `whale_insights` | Live analysis: orphans, coverage gaps, tensions, drift |
67
+ | `whale_register_component` | Add a component to the catalog |
68
+ | `whale_record_decision` | Log an architectural decision |
69
+ | `whale_record_refinement` | Mark a drift exception as approved |
70
+
71
+ Agents don't just read context — they can write back to it.
72
+
73
+ ---
74
+
75
+ ## Design intelligence
76
+
77
+ Whale tracks your design system and detects when reality drifts from it.
78
+
79
+ ```bash
80
+ whale insights drift spacing # find off-grid spacing in CSS, JSX, Vue, Svelte
81
+ whale insights drift color # find raw hex values outside your token set
82
+ whale insights drift radii # find radius values not in your foundations
83
+ whale insights drift spacing --review # interactively accept or queue each issue
48
84
  ```
49
85
 
50
- `intelligence/*.json` is the source of truth. Markdown files are rendered
51
- from it so agents always read current project state.
86
+ When something drifts intentionally a one-off exception, a product decision — you record it as a refinement. Whale stops flagging it. The agent knows it's approved.
52
87
 
53
- ## What's new in v1.3
88
+ ---
54
89
 
55
- **UI references library** — curated, copy-paste component references ship with the tool. Run `whale references add forms` (or `--all`) to install them into your project. CLAUDE.md and MCP tools automatically expose the files to agents.
90
+ ## Theme engine
56
91
 
57
- **Cross-framework drift detection** — `whale insights drift spacing|color|radii` scans CSS, inline styles, Vue/Svelte style blocks and JSX props for values that don't match your foundations. Run `--review` to accept exceptions as refinements or flag them for refactor.
92
+ Landing pages and generated UI are fully theme-driven. No hardcoded tokens.
58
93
 
59
- **Human-language wizard** — `whale ignite --interactive` now asks plain-English questions (what are you building, which framework, team size) and maps answers to a sensible config automatically.
94
+ ```bash
95
+ whale themes list
96
+ whale create landing --theme harbor # royal blue on paper — the Whale brand
97
+ whale create landing --theme aurora # modern SaaS, indigo, generous whitespace
98
+ whale create landing --theme atlas # enterprise minimal, dense, neutral (default)
99
+ ```
60
100
 
61
- **Template extraction** wiki templates moved to `src/templates/` as composable render functions. CLAUDE.md is now structured as three clear sections: what the project is, what to read, and how to work here.
101
+ Each theme defines four tiers Identity, Typography, Structural, Interaction and emits a complete CSS custom property block. Swap themes; everything updates.
62
102
 
63
- **`whale changes --since <ref>`** — shows what changed in intelligence stores (decisions, components, refinements) since any git ref, ISO date, or `HEAD~1`.
103
+ ---
64
104
 
65
- ## Core Commands
105
+ ## Core commands
66
106
 
67
- | Command | Use it when you want to... |
68
- | --- | --- |
69
- | `whale ignite my-app` | Create a new Whale workspace |
107
+ | Command | What it does |
108
+ |---|---|
109
+ | `whale ignite my-app` | Bootstrap a new Whale workspace |
70
110
  | `whale ignite my-app --interactive` | Wizard: project type, stack, team size, packs |
71
- | `whale adopt` | Scan an existing React/Tailwind project |
72
- | `whale remember` | Regenerate agent context and wiki |
73
- | `whale check` | Run validation and project insights |
74
- | `whale improve` | Ask Selene for improvement suggestions |
75
- | `whale explain` | Generate docs and AI-readable context |
76
- | `whale references add --all` | Install UI component reference library |
77
- | `whale insights drift spacing` | Find off-grid spacing across CSS and JSX |
78
- | `whale insights drift spacing --review` | Interactively accept or queue each drift issue |
79
- | `whale changes --since HEAD~5` | Show what changed in intelligence stores |
80
- | `whale team` | See active operating roles/packs |
81
- | `whale create component Hero` | Generate a typed React component |
111
+ | `whale adopt` | Scan an existing project and propose components and foundations |
112
+ | `whale sync` | Regenerate CLAUDE.md, wiki, and agent context |
113
+ | `whale check` | Validation + project insights |
114
+ | `whale changes --since HEAD~5` | What changed in intelligence stores since a git ref |
115
+ | `whale themes list` | Browse available UI themes |
116
+ | `whale create landing --theme <name>` | Generate a themed HTML/CSS landing page |
117
+ | `whale create component Hero` | Generate a typed component with intelligence registration |
118
+ | `whale references add --all` | Install the UI component reference library |
119
+ | `whale selene suggest` | AI-powered improvement suggestions (API key optional) |
82
120
  | `whale mcp config --client cursor` | Configure an MCP client |
83
121
 
84
- ## Operating Roles
122
+ ---
85
123
 
86
- Whale includes five operating roles as packs:
124
+ ## Operating packs
125
+
126
+ Packs are structured roles — not autonomous agents, but instructions and context that help the agent you already use work with better information.
87
127
 
88
128
  ```bash
89
- whale team add atlas # product strategy
90
- whale team add forge # implementation architecture
91
- whale team add scribe # documentation
92
- whale team add lighthouse # quality checks
93
- whale team add selene # AI suggestions and audits
129
+ whale team add lighthouse # quality and validation checks
130
+ whale team add scribe # documentation and wiki generation
131
+ whale team add forge # implementation architecture
132
+ whale team add atlas # product strategy
133
+ whale team add selene # AI suggestions and audits
94
134
  ```
95
135
 
96
- They are not autonomous background agents. They are structured project
97
- roles and instructions that help the agent you already use work with
98
- better context.
136
+ ---
99
137
 
100
- ## AI Bridge
138
+ ## AI bridge (Selene)
101
139
 
102
- Selene packages your project context into structured prompts, or calls an
103
- API when `ANTHROPIC_API_KEY` or `OPENAI_API_KEY` is configured.
140
+ Selene packages your project context into structured prompts. With an API key it calls the model directly; without one it prints a prompt you can paste anywhere.
104
141
 
105
142
  ```bash
143
+ export ANTHROPIC_API_KEY=... # or OPENAI_API_KEY
144
+
106
145
  whale selene status
107
146
  whale selene suggest --focus all
108
147
  whale selene audit src/components/Hero.tsx
148
+ whale selene describe src/components/Button.tsx
109
149
  ```
110
150
 
111
- Without an API key, Selene runs in prompt mode and prints/copies a prompt
112
- you can paste into Claude, ChatGPT, Cursor or Codex.
151
+ ---
113
152
 
114
- ## MCP
153
+ ## Data & privacy
115
154
 
116
- ```bash
117
- whale mcp config --client claude-code
118
- whale mcp config --client cursor
119
- whale mcp config --client zed
120
- ```
155
+ Whale Igniter runs offline by default. Core flows such as themes, drift detection, wiki generation, MCP, and local project analysis do not require an API key and do not send project data over the network.
121
156
 
122
- MCP exposes project overview, components, decisions, refinements,
123
- validation, insights and write tools to compatible AI clients.
157
+ AI features are opt-in. When you enable Selene API mode, Whale sends the prompt and project context to the selected provider, Anthropic or OpenAI, under that provider's terms. You are responsible for reviewing context before sending it and for keeping secrets or sensitive data out of prompts.
124
158
 
125
- ## Brand Tokens
159
+ API keys are read from environment variables only: `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`. The key is used only in request headers, and Whale does not log it, write it to config, or persist it on disk.
126
160
 
127
- ```css
128
- --wi-royal: #0034D3;
129
- --wi-paper: #F2ECE1;
130
- --wi-sky: #99CCFF;
131
- --wi-deep: #003087;
161
+ Selene's local cache stores response text under `.whale/selene/cache` in the target project. It does not store API keys. Whale also ensures `.whale/` is ignored by the target project's `.gitignore` when writing Selene cache entries.
132
162
 
133
- --wi-font-display: "Special Elite", ui-monospace, monospace;
134
- --wi-font-mono: "JetBrains Mono", ui-monospace, monospace;
135
- ```
163
+ Whale Igniter has no telemetry or analytics.
164
+
165
+ ---
166
+
167
+ ## Requirements
136
168
 
137
- Brand assets ship in `brand/` and are included in the npm package.
169
+ - Node 20
170
+ - No API key required for any core flow — themes, drift detection, wiki generation, and MCP are fully local and deterministic
171
+
172
+ ---
173
+
174
+ ## Credits
175
+
176
+ Brand assets reference JetBrains Mono (SIL Open Font License 1.1) and Special Elite (Apache License 2.0). No font binaries are shipped.
177
+
178
+ ---
138
179
 
139
180
  ## Links
140
181
 
@@ -142,6 +183,8 @@ Brand assets ship in `brand/` and are included in the npm package.
142
183
  - Package: [npmjs.com/package/whale-igniter](https://www.npmjs.com/package/whale-igniter)
143
184
  - License: MIT
144
185
 
186
+ ---
187
+
145
188
  <p align="center">
146
189
  <img src="https://cdn.jsdelivr.net/npm/whale-igniter@1.3.0/brand/logo.svg" alt="" width="44"><br>
147
190
  <sub><b>Whale Igniter</b> · map the project before the agent moves</sub>
@@ -44,6 +44,7 @@ export async function writeCache(target, model, prompt, text) {
44
44
  const key = cacheKey(model, prompt);
45
45
  const dir = path.join(target, CACHE_DIR_REL);
46
46
  await fs.ensureDir(dir);
47
+ await ensureWhaleGitignore(target);
47
48
  const entry = {
48
49
  key,
49
50
  model,
@@ -66,3 +67,13 @@ export async function clearCache(target) {
66
67
  }
67
68
  return removed;
68
69
  }
70
+ async function ensureWhaleGitignore(target) {
71
+ const gitignore = path.join(target, ".gitignore");
72
+ const entry = ".whale/";
73
+ const existing = (await fs.pathExists(gitignore)) ? await fs.readFile(gitignore, "utf8") : "";
74
+ const lines = existing.split(/\r?\n/).map((line) => line.trim());
75
+ if (lines.includes(entry))
76
+ return;
77
+ const prefix = existing.length > 0 && !existing.endsWith("\n") ? "\n" : "";
78
+ await fs.appendFile(gitignore, `${prefix}${entry}\n`, "utf8");
79
+ }
package/dist/ui/splash.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * 2. Unicode, no color — same layout, no color
7
7
  * 3. Plain — single ASCII line, no glyphs
8
8
  *
9
- * Rules: no chalk imports, no direct env var reads, no "premium".
9
+ * Rules: no chalk imports, no direct env var reads, no vague status copy.
10
10
  * Uses `capabilities()` from capabilities.js and `ui` atoms.
11
11
  */
12
12
  import { capabilities } from "./capabilities.js";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const PACKAGE_VERSION = "1.3.6";
1
+ export const PACKAGE_VERSION = "1.4.0";
package/docs/ROADMAP.md CHANGED
@@ -85,7 +85,7 @@ reveals that the next plan needs revising, we revise it before shipping.
85
85
  - **Test coverage.** 44 unit tests + MCP smoke test that spawns the
86
86
  server and exercises real protocol calls end-to-end.
87
87
 
88
- ### v1.1 — Premium runtime UI
88
+ ### v1.1 — Polished runtime UI
89
89
 
90
90
  The terminal output became the product surface. Commands stopped reaching
91
91
  for chalk directly; every command now consumes a semantic UI layer where
@@ -96,7 +96,7 @@ pair) and the active theme decides what each intent looks like.
96
96
  with ASCII fallbacks), blocks (header, section, kv, panel, summary,
97
97
  next, ok/fail/warn/note), theme dispatcher. Commands import from `ui/`
98
98
  rather than chalk; chalk is now confined to the theme module.
99
- - **Single premium theme — graphite.** Cyan accent, charcoal grays, three
99
+ - **Single polished theme — graphite.** Cyan accent, charcoal grays, three
100
100
  text-hierarchy levels. Structure ready for v1.2's multi-theme without
101
101
  touching any command.
102
102
  - **Capability detection.** Auto-detects color and Unicode support; falls
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whale-igniter",
3
- "version": "1.3.6",
3
+ "version": "1.4.0",
4
4
  "description": "CLI-first operational intelligence. Bootstraps and adopts AI-readable project context so agents like Claude Code, Codex and Cursor understand your design system from the first commit. Includes an MCP server, a file watcher, deterministic insights, and an opt-in AI bridge (Selene).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,6 +14,7 @@
14
14
  "themes",
15
15
  "ui-references",
16
16
  "README.md",
17
+ "CHANGELOG.md",
17
18
  "LICENSE",
18
19
  "docs/ROADMAP.md"
19
20
  ],