shipwright-cli 3.2.0 → 3.3.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/.claude/agents/code-reviewer.md +2 -0
- package/.claude/agents/devops-engineer.md +2 -0
- package/.claude/agents/doc-fleet-agent.md +2 -0
- package/.claude/agents/pipeline-agent.md +2 -0
- package/.claude/agents/shell-script-specialist.md +2 -0
- package/.claude/agents/test-specialist.md +2 -0
- package/.claude/hooks/agent-crash-capture.sh +32 -0
- package/.claude/hooks/post-tool-use.sh +3 -2
- package/.claude/hooks/pre-tool-use.sh +35 -3
- package/README.md +4 -4
- package/claude-code/hooks/config-change.sh +18 -0
- package/claude-code/hooks/instructions-reloaded.sh +7 -0
- package/claude-code/hooks/worktree-create.sh +25 -0
- package/claude-code/hooks/worktree-remove.sh +20 -0
- package/config/code-constitution.json +130 -0
- package/dashboard/middleware/auth.ts +134 -0
- package/dashboard/middleware/constants.ts +21 -0
- package/dashboard/public/index.html +2 -6
- package/dashboard/public/styles.css +100 -97
- package/dashboard/routes/auth.ts +38 -0
- package/dashboard/server.ts +66 -25
- package/dashboard/services/config.ts +26 -0
- package/dashboard/services/db.ts +118 -0
- package/dashboard/src/canvas/pixel-agent.ts +298 -0
- package/dashboard/src/canvas/pixel-sprites.ts +440 -0
- package/dashboard/src/canvas/shipyard-effects.ts +367 -0
- package/dashboard/src/canvas/shipyard-scene.ts +616 -0
- package/dashboard/src/canvas/submarine-layout.ts +267 -0
- package/dashboard/src/components/header.ts +8 -7
- package/dashboard/src/core/router.ts +1 -0
- package/dashboard/src/design/submarine-theme.ts +253 -0
- package/dashboard/src/main.ts +2 -0
- package/dashboard/src/types/api.ts +2 -1
- package/dashboard/src/views/activity.ts +2 -1
- package/dashboard/src/views/shipyard.ts +39 -0
- package/dashboard/types/index.ts +166 -0
- package/docs/plans/2026-02-28-compound-audit-and-shipyard-design.md +186 -0
- package/docs/plans/2026-02-28-skipper-shipwright-implementation-plan.md +1182 -0
- package/docs/plans/2026-02-28-skipper-shipwright-integration-design.md +531 -0
- package/docs/plans/2026-03-01-ai-powered-skill-injection-design.md +298 -0
- package/docs/plans/2026-03-01-ai-powered-skill-injection-plan.md +1109 -0
- package/docs/plans/2026-03-01-capabilities-cleanup-plan.md +658 -0
- package/docs/plans/2026-03-01-clean-architecture-plan.md +924 -0
- package/docs/plans/2026-03-01-compound-audit-cascade-design.md +191 -0
- package/docs/plans/2026-03-01-compound-audit-cascade-plan.md +921 -0
- package/docs/plans/2026-03-01-deep-integration-plan.md +851 -0
- package/docs/plans/2026-03-01-pipeline-audit-trail-design.md +145 -0
- package/docs/plans/2026-03-01-pipeline-audit-trail-plan.md +770 -0
- package/docs/plans/2026-03-01-refined-depths-brand-design.md +382 -0
- package/docs/plans/2026-03-01-refined-depths-implementation.md +599 -0
- package/docs/plans/2026-03-01-skipper-kernel-integration-design.md +203 -0
- package/docs/plans/2026-03-01-unified-platform-design.md +272 -0
- package/docs/plans/2026-03-07-claude-code-feature-integration-design.md +189 -0
- package/docs/plans/2026-03-07-claude-code-feature-integration-plan.md +1165 -0
- package/docs/research/BACKLOG_QUICK_REFERENCE.md +352 -0
- package/docs/research/CUTTING_EDGE_RESEARCH_2026.md +546 -0
- package/docs/research/RESEARCH_INDEX.md +439 -0
- package/docs/research/RESEARCH_SOURCES.md +440 -0
- package/docs/research/RESEARCH_SUMMARY.txt +275 -0
- package/docs/superpowers/specs/2026-03-10-pipeline-quality-revolution-design.md +341 -0
- package/package.json +2 -2
- package/scripts/lib/adaptive-model.sh +427 -0
- package/scripts/lib/adaptive-timeout.sh +316 -0
- package/scripts/lib/audit-trail.sh +309 -0
- package/scripts/lib/auto-recovery.sh +471 -0
- package/scripts/lib/bandit-selector.sh +431 -0
- package/scripts/lib/bootstrap.sh +104 -2
- package/scripts/lib/causal-graph.sh +455 -0
- package/scripts/lib/compat.sh +126 -0
- package/scripts/lib/compound-audit.sh +337 -0
- package/scripts/lib/constitutional.sh +454 -0
- package/scripts/lib/context-budget.sh +359 -0
- package/scripts/lib/convergence.sh +594 -0
- package/scripts/lib/cost-optimizer.sh +634 -0
- package/scripts/lib/daemon-adaptive.sh +10 -0
- package/scripts/lib/daemon-dispatch.sh +106 -17
- package/scripts/lib/daemon-failure.sh +34 -4
- package/scripts/lib/daemon-patrol.sh +23 -2
- package/scripts/lib/daemon-poll-github.sh +361 -0
- package/scripts/lib/daemon-poll-health.sh +299 -0
- package/scripts/lib/daemon-poll.sh +27 -611
- package/scripts/lib/daemon-state.sh +112 -66
- package/scripts/lib/daemon-triage.sh +10 -0
- package/scripts/lib/dod-scorecard.sh +442 -0
- package/scripts/lib/error-actionability.sh +300 -0
- package/scripts/lib/formal-spec.sh +461 -0
- package/scripts/lib/helpers.sh +177 -4
- package/scripts/lib/intent-analysis.sh +409 -0
- package/scripts/lib/loop-convergence.sh +350 -0
- package/scripts/lib/loop-iteration.sh +682 -0
- package/scripts/lib/loop-progress.sh +48 -0
- package/scripts/lib/loop-restart.sh +185 -0
- package/scripts/lib/memory-effectiveness.sh +506 -0
- package/scripts/lib/mutation-executor.sh +352 -0
- package/scripts/lib/outcome-feedback.sh +521 -0
- package/scripts/lib/pipeline-cli.sh +336 -0
- package/scripts/lib/pipeline-commands.sh +1216 -0
- package/scripts/lib/pipeline-detection.sh +100 -2
- package/scripts/lib/pipeline-execution.sh +897 -0
- package/scripts/lib/pipeline-github.sh +28 -3
- package/scripts/lib/pipeline-intelligence-compound.sh +431 -0
- package/scripts/lib/pipeline-intelligence-scoring.sh +407 -0
- package/scripts/lib/pipeline-intelligence-skip.sh +181 -0
- package/scripts/lib/pipeline-intelligence.sh +100 -1136
- package/scripts/lib/pipeline-quality-bash-compat.sh +182 -0
- package/scripts/lib/pipeline-quality-checks.sh +17 -715
- package/scripts/lib/pipeline-quality-gates.sh +563 -0
- package/scripts/lib/pipeline-stages-build.sh +730 -0
- package/scripts/lib/pipeline-stages-delivery.sh +965 -0
- package/scripts/lib/pipeline-stages-intake.sh +1133 -0
- package/scripts/lib/pipeline-stages-monitor.sh +407 -0
- package/scripts/lib/pipeline-stages-review.sh +1022 -0
- package/scripts/lib/pipeline-stages.sh +59 -2929
- package/scripts/lib/pipeline-state.sh +36 -5
- package/scripts/lib/pipeline-util.sh +487 -0
- package/scripts/lib/policy-learner.sh +438 -0
- package/scripts/lib/process-reward.sh +493 -0
- package/scripts/lib/project-detect.sh +649 -0
- package/scripts/lib/quality-profile.sh +334 -0
- package/scripts/lib/recruit-commands.sh +885 -0
- package/scripts/lib/recruit-learning.sh +739 -0
- package/scripts/lib/recruit-roles.sh +648 -0
- package/scripts/lib/reward-aggregator.sh +458 -0
- package/scripts/lib/rl-optimizer.sh +362 -0
- package/scripts/lib/root-cause.sh +427 -0
- package/scripts/lib/scope-enforcement.sh +445 -0
- package/scripts/lib/session-restart.sh +493 -0
- package/scripts/lib/skill-memory.sh +300 -0
- package/scripts/lib/skill-registry.sh +775 -0
- package/scripts/lib/spec-driven.sh +476 -0
- package/scripts/lib/test-helpers.sh +18 -7
- package/scripts/lib/test-holdout.sh +429 -0
- package/scripts/lib/test-optimizer.sh +511 -0
- package/scripts/shipwright-file-suggest.sh +45 -0
- package/scripts/skills/adversarial-quality.md +61 -0
- package/scripts/skills/api-design.md +44 -0
- package/scripts/skills/architecture-design.md +50 -0
- package/scripts/skills/brainstorming.md +43 -0
- package/scripts/skills/data-pipeline.md +44 -0
- package/scripts/skills/deploy-safety.md +64 -0
- package/scripts/skills/documentation.md +38 -0
- package/scripts/skills/frontend-design.md +45 -0
- package/scripts/skills/generated/.gitkeep +0 -0
- package/scripts/skills/generated/_refinements/.gitkeep +0 -0
- package/scripts/skills/generated/_refinements/adversarial-quality.patch.md +3 -0
- package/scripts/skills/generated/_refinements/architecture-design.patch.md +3 -0
- package/scripts/skills/generated/_refinements/brainstorming.patch.md +3 -0
- package/scripts/skills/generated/cli-version-management.md +29 -0
- package/scripts/skills/generated/collection-system-validation.md +99 -0
- package/scripts/skills/generated/large-scale-c-refactoring-coordination.md +97 -0
- package/scripts/skills/generated/pattern-matching-similarity-scoring.md +195 -0
- package/scripts/skills/generated/test-parallelization-detection.md +65 -0
- package/scripts/skills/observability.md +79 -0
- package/scripts/skills/performance.md +48 -0
- package/scripts/skills/pr-quality.md +49 -0
- package/scripts/skills/product-thinking.md +43 -0
- package/scripts/skills/security-audit.md +49 -0
- package/scripts/skills/systematic-debugging.md +40 -0
- package/scripts/skills/testing-strategy.md +47 -0
- package/scripts/skills/two-stage-review.md +52 -0
- package/scripts/skills/validation-thoroughness.md +55 -0
- package/scripts/sw +9 -3
- package/scripts/sw-activity.sh +9 -2
- package/scripts/sw-adaptive.sh +2 -1
- package/scripts/sw-adversarial.sh +2 -1
- package/scripts/sw-architecture-enforcer.sh +3 -1
- package/scripts/sw-auth.sh +12 -2
- package/scripts/sw-autonomous.sh +5 -1
- package/scripts/sw-changelog.sh +4 -1
- package/scripts/sw-checkpoint.sh +2 -1
- package/scripts/sw-ci.sh +5 -1
- package/scripts/sw-cleanup.sh +4 -26
- package/scripts/sw-code-review.sh +10 -4
- package/scripts/sw-connect.sh +2 -1
- package/scripts/sw-context.sh +2 -1
- package/scripts/sw-cost.sh +48 -3
- package/scripts/sw-daemon.sh +66 -9
- package/scripts/sw-dashboard.sh +3 -1
- package/scripts/sw-db.sh +59 -16
- package/scripts/sw-decide.sh +8 -2
- package/scripts/sw-decompose.sh +360 -17
- package/scripts/sw-deps.sh +4 -1
- package/scripts/sw-developer-simulation.sh +4 -1
- package/scripts/sw-discovery.sh +325 -2
- package/scripts/sw-doc-fleet.sh +4 -1
- package/scripts/sw-docs-agent.sh +3 -1
- package/scripts/sw-docs.sh +2 -1
- package/scripts/sw-doctor.sh +453 -2
- package/scripts/sw-dora.sh +4 -1
- package/scripts/sw-durable.sh +4 -3
- package/scripts/sw-e2e-orchestrator.sh +17 -16
- package/scripts/sw-eventbus.sh +7 -1
- package/scripts/sw-evidence.sh +364 -12
- package/scripts/sw-feedback.sh +550 -9
- package/scripts/sw-fix.sh +20 -1
- package/scripts/sw-fleet-discover.sh +6 -2
- package/scripts/sw-fleet-viz.sh +4 -1
- package/scripts/sw-fleet.sh +5 -1
- package/scripts/sw-github-app.sh +16 -3
- package/scripts/sw-github-checks.sh +3 -2
- package/scripts/sw-github-deploy.sh +3 -2
- package/scripts/sw-github-graphql.sh +18 -7
- package/scripts/sw-guild.sh +5 -1
- package/scripts/sw-heartbeat.sh +5 -30
- package/scripts/sw-hello.sh +67 -0
- package/scripts/sw-hygiene.sh +6 -1
- package/scripts/sw-incident.sh +265 -1
- package/scripts/sw-init.sh +18 -2
- package/scripts/sw-instrument.sh +10 -2
- package/scripts/sw-intelligence.sh +42 -6
- package/scripts/sw-jira.sh +5 -1
- package/scripts/sw-launchd.sh +2 -1
- package/scripts/sw-linear.sh +4 -1
- package/scripts/sw-logs.sh +4 -1
- package/scripts/sw-loop.sh +432 -1128
- package/scripts/sw-memory.sh +356 -2
- package/scripts/sw-mission-control.sh +6 -1
- package/scripts/sw-model-router.sh +481 -26
- package/scripts/sw-otel.sh +13 -4
- package/scripts/sw-oversight.sh +14 -5
- package/scripts/sw-patrol-meta.sh +334 -0
- package/scripts/sw-pipeline-composer.sh +5 -1
- package/scripts/sw-pipeline-vitals.sh +2 -1
- package/scripts/sw-pipeline.sh +53 -2664
- package/scripts/sw-pm.sh +12 -5
- package/scripts/sw-pr-lifecycle.sh +2 -1
- package/scripts/sw-predictive.sh +7 -1
- package/scripts/sw-prep.sh +185 -2
- package/scripts/sw-ps.sh +5 -25
- package/scripts/sw-public-dashboard.sh +15 -3
- package/scripts/sw-quality.sh +2 -1
- package/scripts/sw-reaper.sh +8 -25
- package/scripts/sw-recruit.sh +156 -2303
- package/scripts/sw-regression.sh +19 -12
- package/scripts/sw-release-manager.sh +3 -1
- package/scripts/sw-release.sh +4 -1
- package/scripts/sw-remote.sh +3 -1
- package/scripts/sw-replay.sh +7 -1
- package/scripts/sw-retro.sh +158 -1
- package/scripts/sw-review-rerun.sh +3 -1
- package/scripts/sw-scale.sh +10 -3
- package/scripts/sw-security-audit.sh +6 -1
- package/scripts/sw-self-optimize.sh +6 -3
- package/scripts/sw-session.sh +9 -3
- package/scripts/sw-setup.sh +3 -1
- package/scripts/sw-stall-detector.sh +406 -0
- package/scripts/sw-standup.sh +15 -7
- package/scripts/sw-status.sh +3 -1
- package/scripts/sw-strategic.sh +4 -1
- package/scripts/sw-stream.sh +7 -1
- package/scripts/sw-swarm.sh +18 -6
- package/scripts/sw-team-stages.sh +13 -6
- package/scripts/sw-templates.sh +5 -29
- package/scripts/sw-testgen.sh +7 -1
- package/scripts/sw-tmux-pipeline.sh +4 -1
- package/scripts/sw-tmux-role-color.sh +2 -0
- package/scripts/sw-tmux-status.sh +1 -1
- package/scripts/sw-tmux.sh +3 -1
- package/scripts/sw-trace.sh +3 -1
- package/scripts/sw-tracker-github.sh +3 -0
- package/scripts/sw-tracker-jira.sh +3 -0
- package/scripts/sw-tracker-linear.sh +3 -0
- package/scripts/sw-tracker.sh +3 -1
- package/scripts/sw-triage.sh +2 -1
- package/scripts/sw-upgrade.sh +3 -1
- package/scripts/sw-ux.sh +5 -2
- package/scripts/sw-webhook.sh +3 -1
- package/scripts/sw-widgets.sh +3 -1
- package/scripts/sw-worktree.sh +15 -3
- package/scripts/test-skill-injection.sh +1233 -0
- package/templates/pipelines/autonomous.json +27 -3
- package/templates/pipelines/cost-aware.json +34 -8
- package/templates/pipelines/deployed.json +12 -0
- package/templates/pipelines/enterprise.json +12 -0
- package/templates/pipelines/fast.json +6 -0
- package/templates/pipelines/full.json +27 -3
- package/templates/pipelines/hotfix.json +6 -0
- package/templates/pipelines/standard.json +12 -0
- package/templates/pipelines/tdd.json +12 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Shipwright Design System — Refined Depths
|
|
2
|
+
|
|
3
|
+
Version 3.0 — March 2026
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Brand Strategy
|
|
8
|
+
|
|
9
|
+
### Direction
|
|
10
|
+
|
|
11
|
+
"Refined Depths" — Apple-level restraint applied to the existing nautical identity. The ocean palette stays, but gets quieter and deeper. One primary accent color (cyan) carries the entire brand. Purple and blue exist only as gradient endpoints for hero moments.
|
|
12
|
+
|
|
13
|
+
### Brand Voice
|
|
14
|
+
|
|
15
|
+
Short. Confident. Let the product speak.
|
|
16
|
+
|
|
17
|
+
- **Before:** "Your fleet awaits, captain. Set sail with a single command."
|
|
18
|
+
- **After:** "One command. Issue to production."
|
|
19
|
+
|
|
20
|
+
Nautical metaphors live in naming (fleet, crew, shipwright, launch) not in UI copy. The metaphor is architectural, not decorative.
|
|
21
|
+
|
|
22
|
+
### Brand Pillars
|
|
23
|
+
|
|
24
|
+
- **Autonomy** — Zero human intervention from issue to PR
|
|
25
|
+
- **Quality** — Compound quality loops, self-healing builds, automated review
|
|
26
|
+
- **Scale** — One daemon, one fleet, one org — the architecture grows with you
|
|
27
|
+
- **Intelligence** — Persistent memory, adaptive templates, self-optimizing metrics
|
|
28
|
+
|
|
29
|
+
### Scope
|
|
30
|
+
|
|
31
|
+
Unified across all surfaces:
|
|
32
|
+
|
|
33
|
+
- Website / marketing pages
|
|
34
|
+
- Skipper dashboard (light + dark modes)
|
|
35
|
+
- Terminal output (ANSI colors, box-drawing)
|
|
36
|
+
- README / documentation
|
|
37
|
+
- Public dashboard
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Color Palette
|
|
42
|
+
|
|
43
|
+
### Dark Mode (Default)
|
|
44
|
+
|
|
45
|
+
#### Backgrounds — Ocean Depths, Quieted
|
|
46
|
+
|
|
47
|
+
Near-black with subtle cool undertones. Less saturated than V2.
|
|
48
|
+
|
|
49
|
+
| Token | Hex | Usage |
|
|
50
|
+
| ----------- | --------- | -------------------------------------- |
|
|
51
|
+
| `--abyss` | `#050508` | Page background, deepest layer |
|
|
52
|
+
| `--deep` | `#0a0d14` | Card backgrounds, nav backdrop |
|
|
53
|
+
| `--ocean` | `#111520` | Elevated surfaces, hover states |
|
|
54
|
+
| `--surface` | `#171c28` | Active states, input fields |
|
|
55
|
+
| `--foam` | `#1e2536` | Tooltips, dropdowns, highest elevation |
|
|
56
|
+
|
|
57
|
+
#### Accent — Cyan Primary
|
|
58
|
+
|
|
59
|
+
| Token | Value | Usage |
|
|
60
|
+
| --------------- | ------------------------- | ------------------------------------------ |
|
|
61
|
+
| `--cyan` | `#00d4ff` | Primary accent, CTAs, active states, links |
|
|
62
|
+
| `--cyan-subtle` | `rgba(0, 212, 255, 0.08)` | Hover backgrounds, active nav items |
|
|
63
|
+
| `--cyan-muted` | `rgba(0, 212, 255, 0.25)` | Borders, dividers, scrollbar thumbs |
|
|
64
|
+
| `--purple` | `#7c3aed` | Gradient endpoints only. Never standalone. |
|
|
65
|
+
| `--blue` | `#0066ff` | Gradient endpoints only. Never standalone. |
|
|
66
|
+
|
|
67
|
+
#### Status
|
|
68
|
+
|
|
69
|
+
| Token | Hex | Usage |
|
|
70
|
+
| --------- | --------- | --------------------------- |
|
|
71
|
+
| `--green` | `#4ade80` | Success, completed, passing |
|
|
72
|
+
| `--amber` | `#fbbf24` | Warning, in-progress |
|
|
73
|
+
| `--rose` | `#f43f5e` | Error, failed, critical |
|
|
74
|
+
|
|
75
|
+
#### Text
|
|
76
|
+
|
|
77
|
+
| Token | Hex | Usage |
|
|
78
|
+
| ------------------ | --------- | ---------------------------- |
|
|
79
|
+
| `--text-primary` | `#e8eaed` | Headlines, body text |
|
|
80
|
+
| `--text-secondary` | `#8b8f9a` | Descriptions, subtitles |
|
|
81
|
+
| `--text-muted` | `#555a66` | Labels, timestamps, disabled |
|
|
82
|
+
|
|
83
|
+
### Light Mode
|
|
84
|
+
|
|
85
|
+
Cool grays with ocean undertones. No warm beige.
|
|
86
|
+
|
|
87
|
+
| Token | Hex | Usage |
|
|
88
|
+
| ------------------ | --------- | ----------------------------------- |
|
|
89
|
+
| `--abyss` | `#f8f9fa` | Page background |
|
|
90
|
+
| `--deep` | `#ffffff` | Card backgrounds |
|
|
91
|
+
| `--ocean` | `#f1f3f5` | Elevated surfaces |
|
|
92
|
+
| `--surface` | `#e9ecef` | Active states, inputs |
|
|
93
|
+
| `--foam` | `#dee2e6` | Tooltips, dropdowns |
|
|
94
|
+
| `--cyan` | `#0091b3` | Darker cyan for light-mode contrast |
|
|
95
|
+
| `--text-primary` | `#1a1d21` | Body text |
|
|
96
|
+
| `--text-secondary` | `#495057` | Secondary text |
|
|
97
|
+
| `--text-muted` | `#868e96` | Labels, timestamps |
|
|
98
|
+
|
|
99
|
+
### Gradients — Restrained
|
|
100
|
+
|
|
101
|
+
One primary gradient for hero moments and primary CTAs:
|
|
102
|
+
|
|
103
|
+
```css
|
|
104
|
+
background: linear-gradient(135deg, #00d4ff, #7c3aed);
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
No shimmer animations. No gradient text on body copy. One or two anchor moments per page.
|
|
108
|
+
|
|
109
|
+
### ANSI Terminal Colors
|
|
110
|
+
|
|
111
|
+
| Role | ANSI | Hex equivalent |
|
|
112
|
+
| -------------- | ----------- | -------------- |
|
|
113
|
+
| Primary accent | Cyan (36) | `#00d4ff` |
|
|
114
|
+
| Success | Green (32) | `#4ade80` |
|
|
115
|
+
| Warning | Yellow (33) | `#fbbf24` |
|
|
116
|
+
| Error | Red (31) | `#f43f5e` |
|
|
117
|
+
| Muted text | Dim (2) | — |
|
|
118
|
+
| Box-drawing | Cyan dim | — |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 3. Typography
|
|
123
|
+
|
|
124
|
+
### Font Stacks
|
|
125
|
+
|
|
126
|
+
Zero web fonts. Native platform rendering.
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
--font-body:
|
|
130
|
+
-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Helvetica Neue",
|
|
131
|
+
sans-serif;
|
|
132
|
+
--font-mono: "SF Mono", ui-monospace, "Cascadia Code", "Geist Mono", monospace;
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
No `--font-display`. Headlines use the same sans-serif stack at heavier weights.
|
|
136
|
+
|
|
137
|
+
### Type Scale
|
|
138
|
+
|
|
139
|
+
Base: 16px. Ratio: 1.200 (minor third).
|
|
140
|
+
|
|
141
|
+
| Token | Size | Weight | Line-height | Letter-spacing |
|
|
142
|
+
| ------------- | ----------------- | ------ | ----------- | -------------- |
|
|
143
|
+
| `--text-5xl` | `3rem` (48px) | 700 | 1.1 | `-0.02em` |
|
|
144
|
+
| `--text-4xl` | `2.5rem` (40px) | 700 | 1.1 | `-0.02em` |
|
|
145
|
+
| `--text-3xl` | `2rem` (32px) | 600 | 1.15 | `-0.02em` |
|
|
146
|
+
| `--text-2xl` | `1.5rem` (24px) | 600 | 1.2 | `-0.02em` |
|
|
147
|
+
| `--text-xl` | `1.25rem` (20px) | 500 | 1.3 | `-0.01em` |
|
|
148
|
+
| `--text-lg` | `1.125rem` (18px) | 400 | 1.5 | `0` |
|
|
149
|
+
| `--text-base` | `1rem` (16px) | 400 | 1.6 | `0` |
|
|
150
|
+
| `--text-sm` | `0.875rem` (14px) | 400 | 1.5 | `0` |
|
|
151
|
+
| `--text-xs` | `0.75rem` (12px) | 500 | 1.4 | `0.02em` |
|
|
152
|
+
|
|
153
|
+
### Rules
|
|
154
|
+
|
|
155
|
+
- No gradient text on headlines. Solid `--text-primary`.
|
|
156
|
+
- Body text max-width: `65ch`.
|
|
157
|
+
- Mono reserved for: code blocks, CLI output, metric values, keyboard shortcuts.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 4. Spacing
|
|
162
|
+
|
|
163
|
+
4px base unit. Same scale as V2, stricter usage.
|
|
164
|
+
|
|
165
|
+
| Token | Value | Usage |
|
|
166
|
+
| ------------ | ------ | -------------------------- |
|
|
167
|
+
| `--space-1` | `4px` | Inline gaps, icon padding |
|
|
168
|
+
| `--space-2` | `8px` | Tight gaps, badge padding |
|
|
169
|
+
| `--space-3` | `12px` | Compact internal padding |
|
|
170
|
+
| `--space-4` | `16px` | Standard component spacing |
|
|
171
|
+
| `--space-5` | `20px` | — |
|
|
172
|
+
| `--space-6` | `24px` | Section labels, list gaps |
|
|
173
|
+
| `--space-8` | `32px` | Card padding |
|
|
174
|
+
| `--space-10` | `40px` | — |
|
|
175
|
+
| `--space-12` | `48px` | Large section padding |
|
|
176
|
+
| `--space-16` | `64px` | Section gaps |
|
|
177
|
+
| `--space-20` | `80px` | Page vertical rhythm |
|
|
178
|
+
| `--space-24` | `96px` | Hero sections |
|
|
179
|
+
|
|
180
|
+
**Rule:** When in doubt, more space. Apple pages breathe.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 5. Shadows & Effects
|
|
185
|
+
|
|
186
|
+
### Shadows — Dark Mode
|
|
187
|
+
|
|
188
|
+
Layered, subtle:
|
|
189
|
+
|
|
190
|
+
```css
|
|
191
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3), 0 0 1px rgba(0, 0, 0, 0.1);
|
|
192
|
+
--shadow-md: 0 4px 8px rgba(0, 0, 0, 0.3), 0 0 1px rgba(0, 0, 0, 0.1);
|
|
193
|
+
--shadow-lg: 0 12px 24px rgba(0, 0, 0, 0.4), 0 0 1px rgba(0, 0, 0, 0.1);
|
|
194
|
+
--shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.5), 0 0 1px rgba(0, 0, 0, 0.1);
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Shadows — Light Mode
|
|
198
|
+
|
|
199
|
+
```css
|
|
200
|
+
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 1px rgba(0, 0, 0, 0.04);
|
|
201
|
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
202
|
+
--shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.04);
|
|
203
|
+
--shadow-xl: 0 24px 48px rgba(0, 0, 0, 0.12), 0 8px 16px rgba(0, 0, 0, 0.06);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
No accent-colored shadows.
|
|
207
|
+
|
|
208
|
+
### Frosted Glass
|
|
209
|
+
|
|
210
|
+
```css
|
|
211
|
+
--glass-bg: rgba(10, 13, 20, 0.7);
|
|
212
|
+
--glass-blur: blur(20px) saturate(180%);
|
|
213
|
+
--glass-border: 1px solid rgba(255, 255, 255, 0.06);
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Used for: nav bars, modals, floating panels, tooltips. Not every card.
|
|
217
|
+
|
|
218
|
+
### Transitions
|
|
219
|
+
|
|
220
|
+
```css
|
|
221
|
+
--ease: cubic-bezier(0.4, 0, 0.2, 1);
|
|
222
|
+
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
223
|
+
--ease-spring: cubic-bezier(0.34, 1.2, 0.64, 1);
|
|
224
|
+
--duration-fast: 150ms;
|
|
225
|
+
--duration-normal: 250ms;
|
|
226
|
+
--duration-slow: 400ms;
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Removed: shimmer, pulse-ring, bouncy spring (1.56). Stagger delays stay for list entries.
|
|
230
|
+
|
|
231
|
+
### Border Radius
|
|
232
|
+
|
|
233
|
+
```css
|
|
234
|
+
--radius-sm: 6px; /* Badges, tags */
|
|
235
|
+
--radius-md: 10px; /* Buttons, inputs */
|
|
236
|
+
--radius-lg: 14px; /* Cards */
|
|
237
|
+
--radius-xl: 20px; /* Panels, modals */
|
|
238
|
+
--radius-full: 9999px; /* Pills */
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 6. Components
|
|
244
|
+
|
|
245
|
+
### Buttons
|
|
246
|
+
|
|
247
|
+
**Primary:**
|
|
248
|
+
|
|
249
|
+
```css
|
|
250
|
+
background: var(--cyan);
|
|
251
|
+
color: #050508;
|
|
252
|
+
font-weight: 600;
|
|
253
|
+
border-radius: var(--radius-md);
|
|
254
|
+
padding: 10px 20px;
|
|
255
|
+
transition: opacity var(--duration-fast) var(--ease);
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Hover: `opacity: 0.85`. No glow, no gradient.
|
|
259
|
+
|
|
260
|
+
**Secondary:**
|
|
261
|
+
|
|
262
|
+
```css
|
|
263
|
+
background: var(--cyan-subtle);
|
|
264
|
+
border: 1px solid var(--cyan-muted);
|
|
265
|
+
color: var(--cyan);
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Ghost:** Text-only, subtle hover background.
|
|
269
|
+
|
|
270
|
+
**Destructive:** Rose-tinted variant of secondary.
|
|
271
|
+
|
|
272
|
+
### Cards
|
|
273
|
+
|
|
274
|
+
```css
|
|
275
|
+
background: var(--deep);
|
|
276
|
+
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
277
|
+
border-radius: var(--radius-lg);
|
|
278
|
+
padding: var(--space-8);
|
|
279
|
+
transition:
|
|
280
|
+
transform var(--duration-normal) var(--ease),
|
|
281
|
+
box-shadow var(--duration-normal) var(--ease);
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Hover: `translateY(-1px)` + `--shadow-md`. No colored border reveals.
|
|
285
|
+
|
|
286
|
+
### Navigation (Sidebar)
|
|
287
|
+
|
|
288
|
+
Frosted glass background. Active item: `--cyan-subtle` background + `2px` left border in `--cyan`.
|
|
289
|
+
|
|
290
|
+
### Terminal Blocks
|
|
291
|
+
|
|
292
|
+
```css
|
|
293
|
+
background: var(--abyss);
|
|
294
|
+
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
295
|
+
border-radius: var(--radius-lg);
|
|
296
|
+
font-family: var(--font-mono);
|
|
297
|
+
font-size: 0.82rem;
|
|
298
|
+
line-height: 1.8;
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Traffic light dots: `#ff5f57` (red), `#febc2e` (yellow), `#28c840` (green).
|
|
302
|
+
|
|
303
|
+
Syntax: `--cyan` for prompts/commands, `--text-secondary` for output, `--green`/`--rose` for pass/fail.
|
|
304
|
+
|
|
305
|
+
### Status Badges
|
|
306
|
+
|
|
307
|
+
Minimal pills with tinted backgrounds:
|
|
308
|
+
|
|
309
|
+
```css
|
|
310
|
+
/* Running */
|
|
311
|
+
background: rgba(0, 212, 255, 0.1);
|
|
312
|
+
color: var(--cyan);
|
|
313
|
+
|
|
314
|
+
/* Success */
|
|
315
|
+
background: rgba(74, 222, 128, 0.1);
|
|
316
|
+
color: var(--green);
|
|
317
|
+
|
|
318
|
+
/* Failed */
|
|
319
|
+
background: rgba(244, 63, 94, 0.1);
|
|
320
|
+
color: var(--rose);
|
|
321
|
+
|
|
322
|
+
/* Warning */
|
|
323
|
+
background: rgba(251, 191, 36, 0.1);
|
|
324
|
+
color: var(--amber);
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 7. Logo & Brand Mark
|
|
330
|
+
|
|
331
|
+
Simplified ship silhouette — geometric, works at 16x16 favicon size. Clean stroke or fill, no gradients in the mark itself. Cyan on dark, dark on light.
|
|
332
|
+
|
|
333
|
+
SVG uses a 32x32 viewBox. No gradient fills in the logo mark — solid `--cyan` or `--text-primary` depending on context.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 8. README Badge Colors
|
|
338
|
+
|
|
339
|
+
| Badge | Color |
|
|
340
|
+
| -------- | --------- |
|
|
341
|
+
| Tests | `#4ade80` |
|
|
342
|
+
| Version | `#00d4ff` |
|
|
343
|
+
| Platform | `#555a66` |
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## 9. Migration Notes
|
|
348
|
+
|
|
349
|
+
### What Changes
|
|
350
|
+
|
|
351
|
+
| Surface | From | To |
|
|
352
|
+
| --------------------- | ------------------------------------------------------------------- | ---------------------------------------- |
|
|
353
|
+
| Dashboard backgrounds | Warm beige (light) / charcoal (dark) | Cool gray (light) / near-black (dark) |
|
|
354
|
+
| Dashboard accent | Orange `#FF5C00` | Cyan `#00d4ff` (dark), `#0091b3` (light) |
|
|
355
|
+
| Dashboard fonts | Inter + Geist Mono (web fonts) | System stack + SF Mono (zero loading) |
|
|
356
|
+
| Website backgrounds | Heavy ocean-blue tints | Subtle cool undertones |
|
|
357
|
+
| Website fonts | Instrument Serif + Plus Jakarta Sans + JetBrains Mono (3 web fonts) | System stack (zero loading) |
|
|
358
|
+
| Gradients | Shimmer animations, gradient text throughout | One hero gradient, no animations |
|
|
359
|
+
| Glow effects | Cyan/purple glows on hover | Frosted glass + subtle shadows |
|
|
360
|
+
| Button style | Gradient CTAs | Solid cyan, no gradient |
|
|
361
|
+
|
|
362
|
+
### What Stays
|
|
363
|
+
|
|
364
|
+
- Cyan `#00d4ff` as primary accent
|
|
365
|
+
- Purple `#7c3aed` and blue `#0066ff` as gradient accents
|
|
366
|
+
- Status colors (green, amber, rose)
|
|
367
|
+
- 4px spacing base unit
|
|
368
|
+
- Terminal traffic light dots
|
|
369
|
+
- Nautical naming conventions
|
|
370
|
+
- Stagger animation delays for lists
|
|
371
|
+
|
|
372
|
+
### Files to Update
|
|
373
|
+
|
|
374
|
+
1. `website/design-system.md` — Replace with this spec
|
|
375
|
+
2. `skipper/crates/skipper-api/static/css/theme.css` — New unified tokens
|
|
376
|
+
3. `skipper/crates/skipper-api/static/css/layout.css` — Updated spacing/layout
|
|
377
|
+
4. `skipper/crates/skipper-api/static/css/components.css` — Updated component styles
|
|
378
|
+
5. `skipper/crates/skipper-api/static/index_head.html` — Remove Google Fonts import
|
|
379
|
+
6. `dashboard/public/` — Shipwright dashboard styles
|
|
380
|
+
7. `.claude/CLAUDE.md` — Update color references
|
|
381
|
+
8. `README.md` — Update badge colors
|
|
382
|
+
9. Shell scripts — Update ANSI color helpers if needed
|