shiki (私記)
← Full changelog

shiki v0.9.2

Released 2026-08-20.

Share: X Bluesky Reddit Hacker News WhatsApp Telegram Email
shiki v0.9.2, running in a terminal

Added

  • The theme picker (leader+c) grew a live filter box: type to narrow the list case-insensitively (same behavior as the which-key modal), Esc clears the query before cancelling, Enter is a no-op on zero matches, and PageUp/PageDown/Home/End join j/k — handy now that the catalog is 37 themes. Input boxes across modals also render the active theme's background instead of the terminal default.
  • 23 new palettes in the theme catalog, in three groups: - League of Legends champions (LoL (Jinx), LoL (Teemo), LoL (Ahri)) — neon pink/ electric-blue, scout-green/mushroom-yellow, and magenta/purple fox-tail palettes. - Video games — Pokémon (Pikachu/Charizard/Gengar), Zelda, Portal (the one light "Aperture laboratory" palette), Super Mario and Luigi, Overwatch, Halo, Stardew Valley. - Hacker / cyberpunk — Matrix, Cyberpunk 2077, Arasaka, Synthwave, Tron, Fallout Terminal, Blade Runner, Doom, Ghost in the Shell, Mr. Robot. Plus Gruvbox's official hard/soft contrast variants (dark and light).
  • The catalog was trimmed to 37 themes to stay browsable: one Catppuccin (Mocha), one Tokyo Night (Night), one Solarized (Dark), and the list is alphabetical in the picker (default stays last).
  • The homepage's hero demo is now an mp4 <video> (autoplays reliably, ~3x smaller than the GIF it replaced), and it's theme-aware: each theme with a committed recording (docs/assets/demo/{id}.mp4) swaps the hero video to match, falling back to the default gruvbox-dark recording otherwise — the site probes for the file at runtime, so the whole 37-theme catalog is covered as recordings get committed. scripts/demo-gif.sh gained a THEME env var so the same recording can be shot per theme, and reduced-motion users still get a static screenshot.
  • The theme picker now groups by family (── Classic ──/── LoL ──/── Games ──/ ── Hacker ── headers) and its filter matches family too (type hack/pok/lol); shiki theme list shows the same grouped order, and the site's "Make it yours" section got family filter tabs. Themes carry a family field backed by validation tests.
  • Per-notebook themes: [theme.notebooks] maps a notebook name to a theme that takes effect while that notebook is focused — the picker writes there when a notebook is selected, the CLI sets it with shiki theme set <theme> --notebook <name>, and Settings shows the effective theme.
  • Theme validation tests now guard the whole catalog (every color slot parses, names unique, alphabetical order with default last, by_name resolves all 37), and the 12 palette files were rewritten over a theme! macro to cut the per-palette boilerplate.
  • The release workflow's screenshot/demo job was split into parallel matrix jobs so it fits under the timeout with the 37-theme catalog.
  • Ctrl+D in the inline editor inserts today's date (YYYY-MM-DD) at the cursor, anywhere in the buffer, as a single undo step — the /date slash-menu snippet only works at line start. [editor] timestamp_with_time (off by default) appends the current time (YYYY-MM-DD HH:MM); [editor] insert_timestamp (on by default) gates the whole feature.
  • The outline modal (o in PREVIEW, Ctrl+O while editing) now has a live filter box: typing narrows the heading list case-insensitively (the same filter behavior as the which-key modal), Enter jumps to the filtered heading, Esc closes and resets. Navigation is arrow keys/ PageUp/PageDown/Home/End — every letter is typeable into the filter.
  • Spell-check for the inline editor ([editor] spellcheck, off by default): Ctrl+E runs a pass by shelling out to hunspell (the same external-binary pattern as pretty-pdf), underlines misspelled words in the editor and lists them in a popup with a ▸ cursor on the selected word (j/k move it) — Enter opens a suggestions submenu to pick which correction to apply, the replaced word flashes in the theme's success color for a moment (a visible confirmation alongside the footer's 'old' → 'new' message), r re-runs the pass. [editor] spellcheck_lang selects the dictionary (-d, e.g. es_ES); rows edited after a pass stop being underlined instead of repainting stale ranges. shiki doctor reports whether hunspell is installed.
  • !alt images that stand alone on their own line render as real terminal art in PREVIEW via chafa (external binary, ANSI-colored half-block output parsed into styled rows that scroll with the panel). [general] preview_images (on by default), chafa_path (absolute path when it isn't on $PATH), and preview_image_scale (fraction of the panel width) control it; paths resolve against the note's folder, the notebook root, then data_dir. When chafa is missing or the file doesn't exist, the previous icon+alt rendering is kept, and an image embedded mid-line always stays that way. shiki doctor reports whether chafa is available.
  • Three new built-in themes from League of Legends champion palettes (shiki theme list shows them, the theme picker live-previews them): LoL (Jinx) (neon-pink/electric-blue with a Zaun-night background), LoL (Teemo) (scout green with yellow scarf accents, Bandle-forest background), and LoL (Ahri) (magenta fox tails with purple essence-orb accents, Ionia- twilight background). The marketing site's theme swatches cover all three (CSS-only mockups until screenshots are captured).
← v0.9.1 All releases No newer release →