[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94011":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},94011,"shiki","sazardev\u002Fshiki","sazardev","TUI note-taking app in Rust — Yazi-style navigation, notebooks as independent git repos, real per-note version history, themes, and fast fuzzy search.","https:\u002F\u002Fsazardev.github.io\u002Fshiki\u002F",null,"Rust",130,5,1,6,0,22,66,75.53,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32,33,34],"cli","git","markdown","note-taking","notes","productivity","ratatui","rust","terminal","tui","2026-07-30 04:02:14","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Ffavicon-512.png\" alt=\"shiki logo\" width=\"120\" \u002F>\n\u003C\u002Fp>\n\n# shiki (私記)\n\n> **Personal notes, private log.**\n> A TUI note-taking app in Rust — three-pane Yazi-style navigation, notebooks as\n> independent git repos, Markdown with frontmatter, inline and external editing,\n> real per-note version history, themes, and fast fuzzy search.\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fsazardev\u002Fshiki?style=social)](https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki\u002Fstargazers)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fsazardev\u002Fshiki)](https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki\u002Fcommits\u002Fmain)\n[![GitHub repo size](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frepo-size\u002Fsazardev\u002Fshiki)](https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki)\n\n![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-2021-CE422B?logo=rust&logoColor=white)\n![ratatui](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fratatui-0.29-blue?logo=rust&logoColor=white)\n![tokio](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftokio-1.x-blue?logo=rust&logoColor=white)\n![git2](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgit2-0.21-orange?logo=git&logoColor=white)\n![clap](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fclap-4.x-blue?logo=rust&logoColor=white)\n\nSee [IDEA.md](IDEA.md) for the full design spec (keybinding tables, config schema, theme list) and\n[CHANGELOG.md](CHANGELOG.md) for release history.\n\n## Demo\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fdemo.gif\" alt=\"Animated demo of shiki: browsing notebooks and nested folders, global and in-notebook fuzzy search, tags, multi-select batch delete, creating and moving folders, writing a full note, a git commit, and live theme switching\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\nThree notebooks, ~30 notes, folders nested two levels deep — a scripted, reproducible tour\n([`scripts\u002Fdemo-gif.sh`](scripts\u002Fdemo-gif.sh), recorded with [VHS](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fvhs))\ncovering global and in-notebook fuzzy search, tags, real multi-select (batch delete), creating and\nmoving folders, writing a full note from scratch in the inline editor, a git commit, and live theme\nswitching. Regenerated automatically after every release (same `update-screenshots` job in\n[`release.yml`](.github\u002Fworkflows\u002Frelease.yml) that refreshes the screenshots below), so it's\nalways recorded against that release's own binary — not a workflow from several versions ago.\n\n## Screenshots\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"docs\u002Fassets\u002Fscreenshots\u002Fgruvbox-dark.png\" width=\"290\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"docs\u002Fassets\u002Fscreenshots\u002Fcatppuccin-mocha.png\" width=\"290\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Csub>Gruvbox Dark\u003C\u002Fsub>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Csub>Catppuccin Mocha\u003C\u002Fsub>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"docs\u002Fassets\u002Fscreenshots\u002Ftokyo-night-storm.png\" width=\"290\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"docs\u002Fassets\u002Fscreenshots\u002Fcatppuccin-latte.png\" width=\"290\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Csub>Tokyo Night Storm\u003C\u002Fsub>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Csub>Catppuccin Latte\u003C\u002Fsub>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\nThese update automatically after every release (`update-screenshots` job in\n[`release.yml`](.github\u002Fworkflows\u002Frelease.yml)), so they always reflect the current version — not\na screenshot from three releases ago. All 15 built-in themes have a live, interactive preview on\nthe [website](https:\u002F\u002Fsazardev.github.io\u002Fshiki\u002F#themes).\n\n## Features\n\n- **Three-pane TUI**, Yazi-inspired: modal navigation (`hjkl`\u002Farrows), collapsing Miller-columns\n  layout, and fully **responsive to terminal size** — wide terminals get the 3-column layout,\n  narrow\u002Fsquare ones stack panels vertically, very small ones show just the focused panel,\n  full screen.\n- **Notebooks are independent git repos** — plain directories under the hood, each its own repo,\n  with folders nested to any depth (`nb`-style). Frontmatter is optional on read, so a plain\n  Markdown file dropped in from elsewhere still shows up.\n- **Bring your own notes directory** — `[general] data_dir` points the whole notebooks root at an\n  existing folder (e.g. an Obsidian vault), and `[notebooks.\u003Cname>] path` points an individual\n  notebook at any directory independent of that, with no migration, symlinks, or duplicated files.\n- **Real per-note version history** (not a separate versioning system): every commit that changed\n  a specific note, browsable and revertible straight from the TUI.\n- **Full git workflow per notebook**: manual sync\u002Fpush\u002Fpull, `auto_sync` (commit + push\n  automatically every N changes), per-notebook policy overrides, robust HTTPS\u002FSSH auth that\n  reuses your system's own git credential store, and automatic fallback to the remote's actual\n  default branch.\n- **15 built-in themes** (Catppuccin ×4, Tokyo Night ×3, Gruvbox ×2, Solarized ×2, Nord, Dracula,\n  One Dark, Monokai, and a\n  terminal-native default that inherits your terminal's own palette) with a live-preview picker.\n- **Config-driven keybindings**, scoped by focus, fully remappable in `config.toml` — nothing\n  hardcoded except plain navigation.\n- **Mouse drag-to-select and copy** in PREVIEW — drag over a note's rendered body to highlight and\n  copy the selected rows to the clipboard (OSC 52) on release; toggleable via\n  `general.mouse_drag_selection`.\n- **Global fuzzy search** across every notebook, plus in-notebook fuzzy jump.\n- **Notebook tree view**, tags panel, daily notes with templates, moving notes between notebooks,\n  cycling sort order, an optional date column in the notes list.\n- **Inline editor** built into the TUI, or your favorite external editor — auto-detected from\n  `$VISUAL`\u002F`$EDITOR`\u002Fthe OS default, toggleable on the fly from the footer. Long lines wrap to the\n  panel width instead of scrolling off-screen, and a `\u002F`-menu (type `\u002F` at the start of a line)\n  drops in 19 ready-made blocks — headers, code, math, tables, checklists, links, images,\n  callouts, a collapsible section, a YAML frontmatter skeleton, and more — fully\n  customizable\u002Foverridable via `[snippets.\u003Ctrigger>]` in `config.toml`.\n- **12 built-in note templates** (`default`\u002F`daily`\u002F`meeting` plus `bug`\u002F`spec`\u002F`review`\u002F\n  `postmortem`\u002F`standup`\u002F`retro`\u002F`1on1`\u002F`weekly`\u002F`brainstorm`) — pick one from the template picker\n  when creating a note, or type `@` in the title prompt for a fast dropdown (`today`\u002F`yesterday`\u002F\n  `tomorrow` or any template, fuzzy-filtered) that skips straight to editing.\n- **Settings screen** (leader+`s`) — a read-only summary of the whole config (general\u002Ftheme\u002Fgit\u002F\n  per-notebook overrides\u002Fsnippets), with `i`\u002F`E` jumping straight to editing `config.toml` itself;\n  saved changes apply immediately, no restart needed.\n- **Logs modal** recording every status message (so errors don't get lost), with one-key clipboard\n  copy (OSC 52) for pasting elsewhere.\n- **In-TUI self-update** (leader+`U`) — checks GitHub Releases for a newer version, and on\n  confirmation downloads, verifies, installs, and relaunches into it automatically.\n- **`shiki doctor`** — an environment health check that works even with a broken config; also\n  flags duplicate\u002Fcolliding keybindings and `\u002F`-menu snippet triggers before they cause confusion.\n- **CLI commands** alongside the TUI (`new`, `list`, `edit`, `show`, `search`, `daily`, `sync`,\n  `notebook`, `theme`, `config`, `doctor`) for quick one-off operations without opening the UI.\n\n## Install\n\nEvery tagged release (`.github\u002Fworkflows\u002Frelease.yml`) publishes prebuilt binaries for Linux,\nWindows, and macOS (Intel + Apple Silicon) as a GitHub Release, plus a `SHA256SUMS.txt`. Pick\nwhichever of these fits your platform:\n\n**Arch Linux (`yay`\u002F`paru`):**\n\n```sh\nyay -S shiki-bin      # or: paru -S shiki-bin      — prebuilt binary, fastest\nyay -S shiki          # or: paru -S shiki           — builds from source (needs cargo)\n```\n\n**Windows ([Scoop](https:\u002F\u002Fscoop.sh)):**\n\n```powershell\nscoop bucket add sazardev https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki\nscoop install shiki\n```\n\n(or, without adding a bucket — a one-off install that `scoop update` won't track:\n`scoop install https:\u002F\u002Fraw.githubusercontent.com\u002Fsazardev\u002Fshiki\u002Fmain\u002Fpackaging\u002Fscoop\u002Fshiki.json`)\n\n> **Troubleshooting:** `scoop install shiki` failing with `Couldn't find manifest for 'shiki'`\n> means the `sazardev` bucket isn't added yet (run the `scoop bucket add` line above first) —\n> or, if you'd added it a while ago, Scoop's local copy of it is stale; run `scoop update` first,\n> then `scoop install shiki` again.\n\n**Prebuilt binary (Linux\u002FWindows\u002FmacOS), no package manager:**\n\nDownload the archive for your platform from the\n[latest release](https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki\u002Freleases\u002Flatest), extract it, and put the\n`shiki`\u002F`shiki.exe` binary on your `$PATH`.\n\n**With `cargo`, from [crates.io](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fshiki-cli) (any platform with a Rust\ntoolchain):**\n\n```sh\ncargo install shiki-cli\n```\n\nOr straight from a clone, if you want to build from a specific branch\u002Fcommit instead:\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fsazardev\u002Fshiki\ncd shiki\ncargo install --path shiki-cli\n```\n\nEither way this builds the `shiki` binary in release mode and installs it to `~\u002F.cargo\u002Fbin` (make\nsure that's on your `$PATH` — `cargo install` will tell you if it isn't). libgit2\u002FOpenSSL are\nvendored and built from source (`git2`'s `vendored-libgit2`\u002F`vendored-openssl` features), so\nthere's no system libgit2\u002FOpenSSL dependency to install separately on any platform.\n\n**Prerequisites (source\u002Fcargo install only — prebuilt binaries\u002FAUR\u002FScoop don't need a Rust\ntoolchain):**\n- A recent stable Rust toolchain (`rustup`).\n- `git` on `$PATH` — notebooks are git repos under the hood.\n- A [Nerd Font](https:\u002F\u002Fwww.nerdfonts.com) in your terminal — the UI uses Nerd Font icons\n  throughout; without one, icons render as boxes\u002Fblanks instead of glyphs.\n- Optional: [`gh`](https:\u002F\u002Fcli.github.com) (GitHub CLI) — if you use HTTPS remotes to private\n  GitHub repos, having `gh` authenticated lets shiki's git credential lookup reuse it automatically.\n\nRun `shiki doctor` after installing (see below) to check all of this in one shot.\n\n## Update\n\nThe easiest way, regardless of how you installed: inside the TUI, press leader+`U`. It checks\nGitHub Releases in the background, shows \"update available\" if there's a newer version, and on\nconfirmation downloads, verifies, installs, and relaunches into it automatically — no terminal\nneeded.\n\nFrom the command line instead:\n\n```sh\ncargo install shiki-cli   # from crates.io — auto-upgrades if a newer version is published\n```\n\n```sh\ncd shiki                              # from a source clone\ngit pull\ncargo install --path shiki-cli --force\n```\n\nIf you installed via `yay`\u002F`paru` or Scoop, prefer their own update command (`yay -Syu`\u002F\n`scoop update shiki`) instead of leader+`U` — the package manager owns that file and needs to stay\nin sync with what's actually on disk. AUR installs in particular install to `\u002Fusr\u002Fbin`, which\nleader+`U` can't write to without root anyway, so it fails with a permission error there rather\nthan silently doing something surprising.\n\n## Verify\n\n```sh\nshiki --version   # confirm the installed version\nshiki doctor      # environment check: config, data dir, git, editor, terminal, notebooks\n```\n\n`shiki doctor` is safe to run any time, including right after install with no config yet —\nit reports what's missing rather than erroring out, and works even if a config file exists but\nis malformed (a normal `shiki` command would fail outright in that case; `doctor` diagnoses it).\n\n## Quick start\n\n```sh\nshiki                       # launches the TUI — no args\nshiki notebook create work  # or from the TUI: `a` while NOTEBOOKS is focused\nshiki new \"My first note\" --notebook work\nshiki daily                 # today's daily note\n```\n\nInside the TUI, press `?` for a searchable list of every keybinding (also doubles as a command\npalette — type to filter, `Enter` runs the highlighted action). Full keybinding tables, config\nschema, and theme list are in [IDEA.md](IDEA.md).\n\n## Development\n\nSee [CLAUDE.md](CLAUDE.md) for the crate layout, build\u002Flint commands, and architecture notes.\n\n## Contributing\n\nContributions are welcome — see [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup,\ncoding conventions, and pull request checklist. This project follows a\n[Code of Conduct](CODE_OF_CONDUCT.md); please report security issues privately per\n[SECURITY.md](SECURITY.md) rather than opening a public issue.\n\n## License\n\n[MIT](LICENSE) — free to use, modify, and redistribute.\n",2,"2026-07-29 02:30:07","CREATED_QUERY"]