tiennm99 e19bb67c88 feat: visual layer with vi typography, dark mode, view transitions (Phase 6)
- 9 CSS files (tokens, reset, typography, layout, components, home,
  archive, toc, view-transitions) bundled via resources.Concat
- 3 ES module JS files (theme-toggle, code-copy, toc-active); toc-active
  loaded only on long posts
- @view-transition: navigation auto for cross-page morph (CSS-only)
- TOC partial gated by WordCount>400 and Params.toc!=false; sticky on
  wide viewports, framed block on narrow
- render-heading.html adds cosmetic anchor links
- Hugo asset pipeline: resources.Concat | minify | fingerprint (no
  SCSS, no PostCSS, no Node)
- i18n/vi.yml extended with prev/next/posts/archiveEmpty/toggleTheme
- Bundle sizes: CSS 3.3 KB gz (budget 15), JS 0.8 KB gz (budget 8)

Config: github-ascii heading IDs, :contentbasename permalink token for
clean ASCII URLs, pagination.pagerSize migration (Hugo 0.128+).
2026-05-07 21:27:46 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:25:16 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00
2026-05-07 20:27:07 +07:00

tsuki (月)

build license Hugo

A Hugo blog + personal portfolio theme. The homepage is the portfolio — bio, featured projects, recent posts. Posts live at /post/. Vietnamese-first typography, View Transitions on navigation, Pagefind search, Giscus comments.

月 (tsuki): the moon. Quiet, observed, returned to. Companion to bonsai in the same naming family.

Live demo (after first deploy)

Status

🚧 Under construction — initial scaffold. See the implementation plan for what's coming.

Features

  • Blog — posts, tags, categories, year-grouped archive
  • Personal portfolio on the homepage — driven by data/profile.yaml + data/projects.yaml, no separate /portfolio section
  • SearchPagefind, zero-runtime, indexed at build time
  • CommentsGiscus (GitHub Discussions)
  • Vietnamese-first — diacritic-safe typography, native vi date formats, Be Vietnam Pro fallback
  • Dark modeprefers-color-scheme + persistent toggle, no flash of wrong theme
  • View Transitions API — smooth same-document navigation in supporting browsers
  • No build step — pure Hugo + browser ES modules. No SCSS, no TypeScript, no bundler in the theme.
  • Light — target ≤ 15 KB CSS gzipped, ≤ 8 KB JS gzipped (excluding Pagefind UI)

Quick start

As a git submodule

git submodule add https://github.com/tiennm99/tsuki.git themes/tsuki

Add to your site's hugo.yaml:

theme: tsuki

As a Hugo Module

hugo mod init github.com/<you>/<your-site>
hugo mod get github.com/tiennm99/tsuki

Then add to hugo.yaml:

module:
  imports:
    - path: github.com/tiennm99/tsuki

Configuration

Documented in docs/config.md (coming soon). For now, see exampleSite/hugo.yaml and exampleSite/data/.

License

Apache-2.0

S
Description
月 — Hugo blog + personal portfolio theme. Vietnamese-first typography, View Transitions API, Pagefind search, Giscus comments. Companion to bonsai.
Readme Apache-2.0 570 KiB
Languages
HTML 47.6%
CSS 36.7%
Shell 9.9%
JavaScript 5.8%