spectral-theme.md
markdown
sha256:34035d72cef530c1ab9d6a6f53be18d803dde705fc3157617d70352a96d0747b
Merge branch 'fix/wire-push-external-parent-manifest' into dev
Human
9 days ago
Spectral
The visual language of MuseHub.
A theme built on opacity-layered surfaces, spectral gradients, and a strict token hierarchy. Every pixel on screen traces back to one file: src/scss/theme/_tokens.scss
Color System
Background Layers
Four depth levels. Never skip a layer or go backwards.
--bg-void
#07070f
--bg-base
#0d1117
--bg-surface
#161b22
--bg-elevated
#1c1c2e
--bg-overlay
#21213a
--bg-hover
#2a2a42
Borders
Opacity-based so they work on any surface layer.
--border-subtle
--border-default
--border-strong
--border-glow
Text
Primary — main content, headings
--text-primarySecondary — labels, metadata
--text-secondaryMuted — timestamps, counts
--text-mutedDisabled — inactive elements
--text-disabledAccent & Status
--color-accent
accent-link
--color-success
--color-warning
--color-danger
--color-purple
--color-orange
--color-rose
--color-teal
--agent-accent
Gradients
--gradient-spectral
--gradient-agent
--gradient-void
--gradient-surface
Domain Colors
code
midi
mist
generic
agent
Dimension Slots
A — Harmonic
B — Rhythmic
C — Melodic
D — Structural
E — Dynamic
Typography
Families
--font-sans — Inter
The quick brown fox jumps over the lazy dog
--font-mono — JetBrains Mono
fn compute_snapshot_id(path: &str) -> Hash {
Size Scale
Aa
--text-3xl · 48px · displayAa
--text-2xl · 32px · hero headingAa
--text-xl · 24px · page headingAa
--text-lg · 20px · section headingAa
--text-md · 17px · emphasized bodyAa
--text-base · 15px · bodyAa
--text-sm · 13px · secondary textAa
--text-xs · 11px · micro labelsComponents
Buttons
Badges & Pills
success
warning
danger
accent
agent
default
Cards & Surfaces
Surface card
--bg-surface
Elevated card
--bg-elevated
Gradient surface
--gradient-surface
Code Block
fn render_markdown(content: &str) -> String {
mistune::html(content)
.pipe(inject_heading_anchors)
}
Inline Elements
A link looks like this clickable text
Inline code:
compute_snapshot_id()A blockquote — secondary color, italic, left border.
Agent Provenance
claude-sonnet-4-6
claude-code · signed
Signature verified
Spacing — 8pt Grid
1·4px
2·8px
3·12px
4·16px
5·20px
6·24px
7·32px
8·40px
9·48px
10·64px
Architecture
Two-layer SCSS split. A selector never appears in both layers.
components/
color · background · border · font-* · letter-spacing · text-transform · transition · animation · box-shadow · opacity · cursor
pages/
display · flex · grid · padding · margin · gap · width · height · overflow · position · align-items · justify-content
Quick Reference
| Token group | Prefix | Count |
|---|---|---|
| Backgrounds | --bg-* |
6 |
| Borders | --border-* |
4 |
| Text | --text-* |
4 sizes + 8 scale |
| Colors | --color-* |
12 |
| Gradients | --gradient-* |
6 |
| Domains | --domain-* |
5 × 3 |
| Dimensions | --dim-* |
5 × 2 |
| Spacing | --space-* |
12 |
| Agent | --agent-* |
2 |
All tokens defined in src/scss/theme/_tokens.scss.
Icons
All icons are SVG symbols in _icon_sprite.html and rendered via the icon(name, size, class) Jinja2 global. The sprite is inlined in base.html so every page has access.
Usage
{{ icon("bot", 16) }} {# default color (currentColor) #}
{{ icon("check", 14, "icon--success") }} {# with extra class #}
In plain HTML or docs:
<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5">
<use href="#icon-bot"></use>
</svg>
Sizing convention
| Context | Size |
|---|---|
| Nav / toolbar button | 16 |
| Inline text (body) | 14 |
| Small meta / badge | 12 |
| Micro / status dot | 10 |
| Hero / empty state | 32–48 |
Icon catalog
activityagent-smalertalert-fillalert-trianglearrow-leftarrow-rightarrow-up-rightbanbookbook-openbooksbotbranchbranch-smbugcheckcheck-circlechevron-downchevron-leftchevron-rightchevrons-leftchevrons-rightchevrons-upcirclealert-circleclock-circleclock-smcodebracescommitcopycorner-right-downcpucrosshairdatabasedocumentdomain-graphdotdownloaddropleteditexperimentexternal-linkeyefile-codefile-datafile-defaultfile-textflamefolderforkglobegridhearthelp-circlehomeinboxinfoinfo-dotinfo-filllayerslinklistloaderlocklock-dotlock-fillmap-pinmenumergemessagemessage-circlemessage-squaremoonmusicpackageplusradiorefresh-cwsearchshareshieldsnowflakesplitstarsunsymbolstagtargetterminaltrending-uptwittertypeuseruser-simpleuser-smusersvolume-2wrenchxexplosionzap
File History
14 commits
sha256:34035d72cef530c1ab9d6a6f53be18d803dde705fc3157617d70352a96d0747b
Merge branch 'fix/wire-push-external-parent-manifest' into dev
Human
9 days ago
sha256:fc04e4cae9e1774d6a21b65c45daeed0e6787eb581d13aa1b03bfe9384a34226
Merge branch 'fix/two-column-scroll-layout' into dev
Human
9 days ago
sha256:408916fc5973ba59c6e4eebaa80ebdcc801c0a63205651e25009d11548f79454
chore: bump version to 0.2.0.dev2 — nightly.2, matching muse
Sonnet 4.6
patch
12 days ago
sha256:d035733f21ccff27735fddebfbbe0ed24565a32a22db8de5885402262671ecd2
chore: bump version to 0.2.0rc15 for musehub#113 fix release
Sonnet 4.6
patch
15 days ago
sha256:0032d6cfa33bc3c8367436ad768e7dd0e339b4332153160247da8266cb5fa352
Merge branch 'task/version-tags-phase3-server' into dev
Human
17 days ago
sha256:4669620efda9ff41c55bdefd1f7bfe1c239d468428744c84ead9957e5a003a53
merge: rescue snapshot-recovery hardening (c00aa21d) into d…
Opus 4.8
minor
⚠
30 days ago
sha256:a59da49c4611b970fc4b6ae48678ce4943261c213a07ddbd73ce9201df869b4a
fix: remove false-positive proposal_comments index drop fro…
Sonnet 4.6
patch
34 days ago
sha256:0a240d6dbff234f07d98a28a4a9a68db702f3f9ff9260196f24219bdb1c0b6f3
feat: render markdown mists as HTML with heading anchor links
Sonnet 4.6
patch
35 days ago
sha256:24a7d47486ebc4ebd1832830580e177ec6f877b48dced8c000e198cdec4ce9d6
Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump …
Human
36 days ago
sha256:b9ff931d147e0114a1f17060f415b89ed551c170a91ff226c70437aa5c85f9ee
Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump …
Human
36 days ago
sha256:d1122d21e73471879b460037b22c0b50fded7c423444a176f248428f75dac39c
Merge 'task/fix-issue-pagination-cursor' into 'dev' — propo…
Human
36 days ago
sha256:01e18975e73d2b3cd5b6db7929c895bef9aa6e0d4391dc5b2adfc548b41318dd
Merge 'feat/adding-debug-logs-to-staging' into 'dev' — prop…
Human
36 days ago
sha256:6b1949fc2797ca4c1936a637a4cbfec828ef56cf52398a2e74ca3c4f494e728f
fix: use wire_bytes not mpack_bytes_raw in compute_object_b…
Sonnet 4.6
patch
48 days ago
sha256:b99f2455dc346966d040133f5203297e6e3ef5803a93728a2c30568d0a0f7583
rename: delta_add → delta_upsert across wire format, models…
Sonnet 4.6
patch
51 days ago