Skip to content

Expand bundled theme catalog: Ayu, Kanagawa, Everforest, Flexoki, Material & more #401

Open

Description

@raiseCatError

Goal

Expand NMSh's bundled, offline, selectable theme families to cover recognizable palettes from the terminal/editor ecosystem (Ayu, Kanagawa, Everforest, etc.), with attractive real previews and correct semantic colors. Do not duplicate themes already shipped, conflate NMSh-owned UI themes with host-terminal themes, or silently modify Ghostty/Terminal.app configuration.

Existing catalog (confirmed on stabilize/post-v020-slice3)

  • 12 NMSh Native palettes: Lavender, Brand, Cool, Warm, Grayscale, Aurora, Ocean, Sunset, Forest, Rose, Nebula, High Contrast.
  • 8 bundled external families / 19 variants: Catppuccin (Latte, Frappé, Macchiato, Mocha), Dracula, Tokyo Night (Night, Storm, Moon, Day), Gruvbox (Dark, Light), Rosé Pine (Main, Moon, Dawn), Nord, Solarized (Dark, Light), One Dark / One Light.
  • User-created/imported themes are already supported in the theme library; imports and Theme Bridge are not substitutes for easy offline built-in presets. Do not re-add the above.
  • Registry/selection: src/appearance/themeFamilies.ts, themeSelection.ts, themeColor.ts, src/prompt/configuration.ts; documentation docs/design/theme-families.md.

Proposed additions (bundled presets)

Tier 1 — recognizable essentials

Tier 2 — broaden the catalog after Tier 1

  • One Half — Dark, Light: https://github.com/sonph/onehalf
  • Horizon — Dark, Bright (do not duplicate font/style-only variants): https://github.com/jolaleye/horizon-theme-vscode
  • Poimandres — distinctive muted dark: https://github.com/drcmda/poimandres-theme
  • Vesper — peppermint/orange dark: https://github.com/raunofreiberg/vesper
  • Tomorrow / Tomorrow Night — source and license verification required before bundling; prioritize distinct classics.
  • Iceberg — verify canonical palette/terms before bundling.
  • Snazzy — verify canonical palette/terms before bundling.
  • Alabaster — verify canonical palette/terms before bundling.
  • Zenburn — verify canonical palette/terms before bundling.
  • Synthwave-style / cyberpunk palette — optional; pick clearly licensed open-source source, avoid confusing existing NMSh Nebula/Aurora or mimicking protected Warp-only themes.

Out of scope unless separately approved: reproducing Warp's proprietary bundled imagery/branding; copying Monokai Pro commercial filters (its official CE program has restrictions: https://monokai.pro/contribute); Dracula Alucard unless an appropriately licensed canonical source/permission is verified; recoloring the host terminal's global window/background/ANSI palette or changing shell rc files.

Product and implementation requirements

  • No palette approximations: collect hex values from each canonical upstream project/revision; verify licenses, notice/attribution and permitted redistribution before committing data. Record exact source/revision/license in docs/design/theme-families.md. Palettes stay bundled offline; no fetching at runtime.
  • Use the existing single theme family/variant registry and saved nmsh.palette ID. Register unique stable typed IDs, appropriate dark/light flag, prompt semantic roles, UI chrome roles (accent, separators, selection, status, appropriate text tiers), and defaultVariant. Update normalization, theme selection, Theme Studio clone, /syntax, /cursor follow-theme, Setup and export/import compatibility. Never change prior IDs or override explicit module colors.
  • Honor meaningful variants: no pseudo-variants distinguished only by editor background/fonts/italics that NMSh cannot control. Light variants must preserve contrast when host background is unknowable; do not claim to set the terminal background. Document what NMSh actually recolors.
  • Build a usable picker for 20+ families / 50+ variants: grouping, easy keyboard navigation/search/filter (including dark/light), deterministic live previews using real NMSh prompt, syntax, chrome, historical selection and powerline wedges. Preview before applying, Esc restores saved state, settings persist only on explicit Apply. Keep existing /theme, /appearance, Setup paths consistent. No network request or code execution on browsing.
  • Keep NMSh Lavender Native as the fresh-install/Recommended default; do not overwrite existing theme selections, custom/imported library entries or older configs.
  • Respect truecolor/256-color/ANSI-16, NO_COLOR, Safe glyphs, Reduced Motion, theme-aware contrast (especially light on an arbitrary dark terminal), 32/50/80/132-column and short frames; stable cell widths/selection wedge backgrounds. Tests should use actual production renderers.
  • Update docs and include a gallery/catalog view or deterministic preview captures; avoid huge runtime asset dependencies.

Verification / delivery

  • Unit/integration tests for per-family variant counts, IDs, normalization, selection, migration, theme-role contrast, source data checks, clone/import-export and no unexpected host-side changes.
  • Rendering tests for prompt/branch/status, selected Nerd Font wedges, modal rows, Chat/Normal transcript, syntax and cursor palette; real previews for dark/light, selected, narrow and NO_COLOR.
  • Focused tests + canonical verify:release + exact-head CI; independent review for palette correctness/licensing, accessibility and regressions.
  • Dedicated feature branch/worktree with scratch/build/cache on verified external T7 (fail closed; preserve existing worktrees). No version bump, merge, tag or release without maintainer approval. Existing v0.19/v0.20 physical-QA gates remain independent.
  • At handoff list shipped themes/variants versus deferred, exact upstream references/licenses, before/after previews, test results and any host limitations.

References / motivation

This is a catalog/UX backlog issue. It does not authorize work on the current stabilization branch or waive the existing integration/release gates.

Activity

  1. raiseCatError commented on Oct 18, 2026

    @raiseCatError
    OwnerAuthor

    v0.21: #418 adds Ayu (Dark/Mirage/Light), Kanagawa (Wave/Dragon/Lotus), Everforest (Dark/Light), Flexoki (Dark/Light) and Night Owl (Night Owl/Light Owl). Values come exactly from MIT sources at pinned commits; copyright lines were read from each LICENSE. Theme Studio also gets a / filter. Deferred, with reasons in docs/design/theme-families.md: Oxocarbon (runtime HSLuv grays), GitHub Primer (built primitives), Material/Palenight and Monokai (licensing), and Tier 2.

  2. added a commit that references this issue on Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions