Commit Graph

2447 Commits

Author SHA1 Message Date
Cell a7bae572a1 chore(assets): move tsconfig to assets 2026-06-11 16:54:43 +08:00
Cell c057a0d578 chore(deps): upgrade fuse.js from v6.6.2 to v7.4.2
- Update CDN paths to dist/fuse.cjs in jsdelivr.yml and unpkg.yml
- Replace local assets/lib/fuse/fuse.min.js with fuse.js (from dist/fuse.cjs)
- Update librarybot.yml version to 7.4.2
- Update Hugo template fallback path to lib/fuse/fuse.js

close #778
2026-06-11 15:59:45 +08:00
Cell 9ed063f32d chore(deps): upgrade algoliasearch from v4 to v5 lite client
- Update CDN paths to dist/lite/builds/browser.umd.js in jsdelivr.yml and unpkg.yml
- Replace local assets/lib/algoliasearch/algoliasearch-lite.umd.min.js with browser.umd.js
- Update librarybot.yml sync source to dist/lite/builds/browser.umd.js
- Update Hugo template fallback path to lib/algoliasearch/browser.umd.js
- Rewrite search.ts algolia integration to use window['algoliasearch/lite'].liteClient (v5 API, removes initIndex compat)
- Update window type declaration in ui.ts to match v5 UMD global
2026-06-11 11:42:37 +08:00
github-actions[bot] 53620404e4 chore(deps): bump simple-icons from 16.21.0 to 16.22.0 (#780) 2026-06-11 11:23:35 +08:00
Cell c7ed62c51e chore(workflows): add token for bot authentication in gen-lexers and librarybot workflows 2026-06-11 11:13:42 +08:00
github-actions[bot] f7ec3e374d chore(deps): bump @waline/client from 3.13.0 to 3.15.0 (#779) 2026-06-11 11:12:15 +08:00
github-actions[bot] 5862699d46 chore(deps): bump twikoo from 1.7.10 to 1.7.11 (#777) 2026-06-11 11:11:31 +08:00
github-actions[bot] 031691a1e4 chore(deps): bump algoliasearch from 5.52.1 to 5.53.0 (#776) 2026-06-11 10:41:05 +08:00
dependabot[bot] b8ec5f16d7 chore(deps-dev): bump the npm-development group across 1 directory with 6 updates (#775)
Bumps the npm-development group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.7.0` | `25.9.2` |
| [auto-changelog-plus](https://github.com/Lruihao/auto-changelog-plus) | `1.2.4` | `1.3.0` |
| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.4.1` |
| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.7` |
| [tsx](https://github.com/privatenumber/tsx) | `4.21.0` | `4.22.4` |
| [fs-extra](https://github.com/jprichardson/node-fs-extra) | `11.3.3` | `11.3.5` |



Updates `@types/node` from 25.7.0 to 25.9.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `auto-changelog-plus` from 1.2.4 to 1.3.0
- [Release notes](https://github.com/Lruihao/auto-changelog-plus/releases)
- [Changelog](https://github.com/Lruihao/auto-changelog-plus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Lruihao/auto-changelog-plus/compare/v1.2.4...v1.3.0)

Updates `eslint` from 10.3.0 to 10.4.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.3.0...v10.4.1)

Updates `lint-staged` from 17.0.4 to 17.0.7
- [Release notes](https://github.com/lint-staged/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lint-staged/lint-staged/compare/v17.0.4...v17.0.7)

Updates `tsx` from 4.21.0 to 4.22.4
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](https://github.com/privatenumber/tsx/compare/v4.21.0...v4.22.4)

Updates `fs-extra` from 11.3.3 to 11.3.5
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/11.3.3...11.3.5)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-development
- dependency-name: auto-changelog-plus
  dependency-version: 1.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-development
- dependency-name: eslint
  dependency-version: 10.4.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-development
- dependency-name: fs-extra
  dependency-version: 11.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-development
- dependency-name: lint-staged
  dependency-version: 17.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-development
- dependency-name: tsx
  dependency-version: 4.22.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-11 10:39:40 +08:00
Cell f5b030b4eb chore(packages): replace helpers with standalone chroma-lexers and enrich shared
- Replace helpers dispatcher pattern with standalone chroma-lexers package
- Add runCommand, fromRoot, consola re-export to shared
- Update versioning and integration to use shared utilities
- Shorten dev version format: base36 timestamp, no hash
- Rename eslint.config.js to eslint.config.ts (add jiti)
- Add README.md to each package
2026-06-11 10:35:10 +08:00
Cell 03ca90b49f feat(assets): add helpers package for chroma lexer map generation (#781)
- Add `packages/helpers` with CLI dispatcher pattern for code generation
- Add `chroma-lexers` helper that fetches lexer definitions from alecthomas/chroma
- Rename `$code-type-map` to `$chroma-lexers`, `_code-type.scss` to `_chroma-lexers.scss`
- Fix `fi-var` and `set-fi-var` to preserve quotes for string fallbacks
- Add `capitalize` utility to `packages/shared`
- Replace `console.*` with `consola` in packages
- Add `pnpm gen:lexers` script and CI workflow for auto-regeneration
- Update CLAUDE.md and CONTRIBUTING.md
2026-06-03 16:41:07 +08:00
Cell eeff00f8c7 fix(assets): use percentage unit for color.mix weight in tag cloud 2026-05-31 18:06:45 +08:00
Cell 17164f42d0 fix(assets): rewrite service worker with two-strategy caching (#774)
- Replace legacy service-worker.js (imported from DoIt) with a clean
  rewrite using Hugo's ExecuteAsTemplate for fingerprinted URL injection
- Cache-first for static assets (immutable/fingerprinted), network-first
  for HTML pages with LRU eviction (max 100 entries)
- Fix LRU eviction to protect precached URLs using absolute URL comparison
- Add Fingerprint param to js-build.html partial to reduce boilerplate
- Extract to-css.html partial for reusable SCSS-to-CSS pipeline
- Support pre-built Resource param in script.html and style.html
- Store mainCSS and mainJS in Site.Store to avoid duplicate builds
- Remove explicit scope from serviceWorker.register() (defaults to /)

Closes #298
2026-05-31 17:54:02 +08:00
Cell 03d81f0785 feat(assets): improve comment system config and lang mapping (#773)
* feat(Artalk): add missing Artalk config options and remove deprecated useBackendConf

* fix(Twikoo): improve lang config with proper fallback mapping

* refactor(assets): unify comment system lang config with inline mapping

Replace i18n-based lang translation (valineLang, facebookLanguageCode)
with inline mapping for Valine, Facebook, and Twikoo.
Fixes: ja incorrectly mapped to zh-cn in Valine.
2026-05-31 12:16:49 +08:00
Cell a4a0eb1f3b docs: improve clarity and formatting in README files 2026-05-30 02:52:29 +08:00
Cell 76f809794f refactor(assets): simplify template pipeline and resource handling
- Simplify `resources.Get` calls to string paths in script pipeline
  callers (plugin/script.html handles resources.Get internally)
- Refactor js-build.html to use $defaultOptions merge pattern matching
  style.html's ToCSS handling for better readability
- Refactor style.html ToCSS with $defaultOptions merge pattern and
  automatic targetPath generation from resource name
- Remove redundant custom $options dicts for targetPath that match
  the new default behavior
- Update partial docs for script.html and style.html
2026-05-29 21:55:09 +08:00
Cell 20f59e0fe2 chore: update VSCode extensions and improve asset loading in templates 2026-05-29 18:11:19 +08:00
Cell bc3fb3a717 chore: add Dockerfile and devcontainer configuration for Hugo theme development 2026-05-29 16:42:04 +08:00
Cell ddbf47df7f chore(vscode): update extensions and settings for improved SCSS and template support 2026-05-29 14:20:21 +08:00
Cell ba369aec14 chore(vscode): update file nesting patterns in VSCode settings 2026-05-28 18:11:03 +08:00
Cell 0fe8e100df docs: update contributing guidelines 2026-05-28 16:10:05 +08:00
Cell 4a60d805fa chore: pnpm v11 migration 2026-05-28 15:21:04 +08:00
Cell a7cf34367d chore(workflow): support nextVersion for dev version base
- Add optional `nextVersion` field in package.json to override the
  auto-incremented patch version used for dev builds
- In prod mode, automatically remove `nextVersion` field after release
- Fix packages tsconfig.json: switch to `module/moduleResolution: nodenext`,
  remove unsupported `baseUrl` and `jsx` options

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 14:48:26 +08:00
Cell 5b43c2b6a3 fix(tabs): improve tab shortcode rendering and restore sticky code header (#772)
* fix(tabs): improve tab shortcode rendering and trim whitespace

* fix(tabs): restore sticky code header for left/right placement
2026-05-28 12:56:07 +08:00
github-actions[bot] 038f602bc5 chore(deps): bump twikoo from 1.7.9 to 1.7.10 (#771) 2026-05-28 12:51:56 +08:00
github-actions[bot] 7cab906676 chore(deps): bump echarts from 6.0.0 to 6.1.0 (#770) 2026-05-28 12:51:24 +08:00
github-actions[bot] 0c30f4c57d chore(deps): bump simple-icons from 16.19.0 to 16.21.0 (#769) 2026-05-28 12:50:42 +08:00
github-actions[bot] f78e5b9e8f chore(deps): bump katex from 0.16.47 to 0.17.0 (#768) 2026-05-28 12:50:09 +08:00
github-actions[bot] aa3b591846 chore(deps): bump mapbox-gl from 3.23.1 to 3.24.0 (#767) 2026-05-28 12:49:02 +08:00
Cell 14a965f9c1 refactor(assets): migrate JavaScript to TypeScript service architecture (#766)
* refactor: add TypeScript support and refactor utility functions

* docs: add CLAUDE.md for Claude Code guidance

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(assets): replace factory-function pattern with service classes and DI container

Introduce typed service container, event bus, and service interfaces to replace
the shared FixItContext factory-function pattern. Each module is now a standalone
class implementing a typed interface, with explicit constructor-injected
dependencies. The window.fixit backward-compatibility facade is built via a
publicAPI() helper that extracts class methods.

Also removes unnecessary setTimeout/afterPaint deferred execution wrappers
from init sequences, and improves module header comments.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor: replace private properties with class fields in modules

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(assets): rewrite link page script in TypeScript

Rename pages/link.js to link.ts with proper type annotations and update
the Hugo template reference accordingly.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: rewrite CLAUDE.md and copilot-instructions.md in English

Update both files to reflect the new service-class architecture with
DI container, typed event bus, and ES6 # private fields.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix: update event handling to use CustomEvent for better type safety

* refactor: enhance theme switching by adding isChanged flag to event details

* refactor(assets): refactor Mermaid module structure and event wiring

* refactor(assets): align lib integrations with TypedEventBus and add module overviews

* chore(assets): remove vite-specific import ignore comments

* refactor(assets): remove deprecated forEach utility and use native forEach

Replace custom forEach wrapper with native .forEach() on NodeList, HTMLCollection (via querySelectorAll), and arrays. The utility was already marked @deprecated and all 30+ call sites use synchronous handlers, making the wrapper unnecessary. Also replace getElementsByClassName/getElementsByTagName with querySelectorAll for consistency.

- Delete utils/array.ts (no longer needed)
- Remove forEach export from utils/index.ts
- Refactor 11 module files to use native .forEach()
- Switch getElementsByClassName to querySelectorAll in theme.ts and charts.ts

* refactor(assets): split ChartsModule into independent lib files

Move ECharts, Mapbox GL, and TypeIt integrations from the ServiceContainer-managed ChartsModule into three standalone lib files (echarts.ts, mapbox.ts, typeit.ts). Each lib:
- Instantiates its own TypedEventBus
- Reads config from window.config.*
- Self-initializes on DOMContentLoaded
- Handles decrypt/re-init events independently
- Uses implicit idempotency via DOM element queries

Key improvements:
- Reduces ServiceContainer complexity
- Makes chart libs independently loadable
- Fixes partial decryption handling in echarts (only re-inits decrypted portion)
- Maintains consistency with aplayer/file-tree lib pattern

* refactor(assets): extract third-party libraries to standalone lib files

Extract twemoji, pangu, cookieconsent, watermark, lightgallery, and json-viewer
from modules into separate lib files for better separation of concerns. Each lib
is loaded conditionally via assets.html and handles its own initialization and
event lifecycle independently.

Additionally, unify fixit event handling by replacing document.addEventListener
calls with TypedEventBus.on() in EncryptionModule and MiscModule for consistent
event architecture.

Remove unused MiscService dependency from ContentModule.

* refactor(assets): unify js.Build pipeline and defaults

- extract shared helper partial function/js-build.html for js.Build + minify

- make plugin script renderer and Mermaid use the same js.Build logic

- default Build.minify to hugo.IsProduction when unset

- default Build.sourceMap to cond hugo.IsDevelopment "linked" "none"

- remove duplicated sourceMap branching in layout templates

- update js targetPath naming to .js (no explicit .min.js suffix)

* refactor(assets): extract comment systems to independent lib files

Extract comment system initialization logic from CommentModule into 7 independent
lib files (artalk, gitalk, valine, waline, utterances, twikoo, giscus). Each lib:
- Conditionally loads based on window.config.comment configuration
- Handles backend-specific initialization via DOMContentLoaded
- Manages its own theme synchronization and event listeners
- Is loaded conditionally in assets.html only when enabled

Simplify CommentModule to handle only:
- Comment section UI display and visibility toggle
- Shared lightGallery initialization utility (used by Artalk and Twikoo)
- Comment expiration handling

This reduces module complexity and enables per-backend lazy loading.

* refactor(assets): unify js.Build pipeline and consolidate PWA config

Enhance js-build.html to accept Build as bool/dict, auto-derive
targetPath from resource name (.ts → .js), and skip js.Build when
Build is false/omit. Simplify assets.html by removing explicit
targetPath dicts for all .ts lib builds. Consolidate enablePWA and
serviceWorkerURL into a PWA config object.

* refactor(assets): decouple toc from content module and add JSDoc headers

- Remove TocService dependency from ContentModule, toc now self-manages
- Rename initContent() → setup(), init() → setup() for toc
- Make initFootnotes private (#initFootnotes)
- Add multi-line JSDoc headers with Responsibilities to all modules,
  main.ts, pages/link.ts, and head/color-scheme.ts

* refactor(assets): split types.ts into types/ directory module

* refactor(assets): simplify JS module architecture and expose typed window.fixit API

- Remove DI container (core/container.ts), use direct constructor calls
- Export shared eventBus singleton from core/event-bus.ts, remove 16 redundant instances
- Merge thin modules: SvgModule/CommentModule/LinkGuardModule into ContentModule/MiscModule
- Trim service interfaces to externally-used methods only
- Replace publicAPI() reflection with minimal typed window.fixit facade
- Expose public APIs: setThemeMode, eventBus, initContent, mask overlay, scroll state
- Extract setThemeMode from initSwitchTheme closure as public method
- Rename fixit:reset to fixit:re-encrypt, remove dead events
- Replace custom.js.example with custom.ts.example
- Update CLAUDE.md and copilot-instructions.md

* style(i18n): use semantic names for comment dividers instead of file paths

Replace file-path-based comment dividers (e.g. partials/base/header.html)
with semantic names (e.g. Header) across all 16 i18n files for consistency.

* chore(workflow): update cron schedule for library updates

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 12:43:42 +08:00
Cell f76b6a1f1c feat: migrate layouts/_partials/layouts to layouts/_partials/base 2026-05-20 10:16:46 +08:00
0x5c0f 4ffd531d63 feat(search): add pagefind search engine support (#738)
* feat(search): add native pagefind support

* chore: code review and change

---------

Co-authored-by: Cell <1024@lruihao.cn>
2026-05-19 16:19:39 +08:00
Cell 78778dad08 fix(code): fix line number styling for better visibility 2026-05-17 23:43:36 +08:00
Cell a4fcc5ed59 feat(toc): add close button to TOC dialog and improve close functionality 2026-05-17 15:03:18 +08:00
Cell 47299db5d3 feat(config): disable footer powered logos 2026-05-17 15:03:18 +08:00
github-actions[bot] a9b380cada chore(deps): bump simple-icons from 9.19.0 to 16.19.0 (#765)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 15:02:16 +08:00
github-actions[bot] f764563358 chore(deps): bump @fortawesome/fontawesome-free from 7.1.0 to 7.2.0 (#764)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:58:09 +08:00
github-actions[bot] a7503c446c chore(deps): bump sharer.js from 0.5.1 to 0.5.4 (#763)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:51:53 +08:00
github-actions[bot] 76de476b41 chore(deps): bump gitalk from 1.7.2 to 1.8.0 (#762)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:50:45 +08:00
github-actions[bot] 91d483a808 chore(deps): bump typeit from 8.8.4 to 8.8.7 (#761)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:48:39 +08:00
github-actions[bot] cd7b1e70b8 chore(deps): bump xxhash-wasm from 1.0.2 to 1.1.0 (#760)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:41:16 +08:00
github-actions[bot] 819051eebf chore(deps): bump mapbox-gl from 2.10.0 to 3.23.1 (#759)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:38:03 +08:00
Cell ebcf22d2bc chore(deps): update pangu.js references and configuration 2026-05-17 14:27:17 +08:00
github-actions[bot] ed8ec5c2c8 chore(deps): bump pangu from 4.0.7 to 7.2.1 (#758)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 14:00:03 +08:00
github-actions[bot] caf2b08013 chore(deps): bump meting from 2.0.1 to 2.0.2 (#757)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 13:58:46 +08:00
github-actions[bot] a82d8c3b87 chore(deps): bump algoliasearch from 4.20.0 to 5.52.1 (#756)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 13:57:34 +08:00
github-actions[bot] d59bb2de6b chore(deps): bump echarts from 5.3.3 to 6.0.0 (#755)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 13:56:29 +08:00
github-actions[bot] ebf1e7e109 chore(deps): bump twikoo from 1.7.3 to 1.7.9 (#754)
Co-authored-by: Cell <1024@lruihao.cn>
2026-05-17 13:55:33 +08:00
github-actions[bot] ee299ce372 chore(deps): bump @waline/client from 3.12.1 to 3.13.0 (#753)
Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>
2026-05-17 13:54:16 +08:00
github-actions[bot] f544826d9d chore(deps): bump lightgallery from 2.7.2 to 2.9.0 (#752)
Co-authored-by: Cell <1024@lruihao.cn>
2026-05-17 13:52:18 +08:00