Commit Graph

1221 Commits

Author SHA1 Message Date
Cell 1012fdc240 fix(assets): prevent mermaid render temp div from expanding body height
Pass the host element as container to mermaid.render() so the temporary
render div is created inside the element instead of document.body.
2026-06-27 22:58:49 +08:00
Cell d076ebf2e1 fix(layouts): fix Content+Path code path in style/script plugin partials
- style.html: Content+Path now uses to-css.html for proper SCSS compilation
- script.html: Content+Path now uses js-build.html with Build/Minify/Fingerprint
- Both paths now update integrity hash for SRI support
- script.html: restructured fallback logic to match style.html pattern
2026-06-27 21:57:46 +08:00
Cell ea140e35f8 chore(assets): add librarybot dir entries for katex/lightgallery/fontawesome static assets
Add type: dir items with baseDir: static/lib for fonts and images that
must be served as static files, so librarybot can keep them in sync on
version bumps.
2026-06-27 17:38:23 +08:00
Cell fb0c00e274 refactor(assets): simplify breakpoints and update UnoCSS CLI config
- Refactor SCSS breakpoints to flat min-width values (680/960/1200/1440)
  with _bp-max helper deriving ranges from adjacent breakpoints
- Add 'xs': null to breakpoints map, remove special-case handling
- Update responsive image sizes to match exact breakpoint max values
- Add print:hidden to UnoCSS safelist as replacement for d-none-print
- Move UnoCSS CLI config to cli.entry in uno.config.ts
- Rename css:build → unocss, css:dev → unocss:watch
- Update documentation (CLAUDE.md, CONTRIBUTING.md, copilot-instructions.md)
2026-06-27 16:28:31 +08:00
Cell 8af8e806d7 feat(assets): integrate UnoCSS for utility classes and presetIcons (#795)
* refactor(assets): integrate UnoCSS for utility classes

- Add UnoCSS with presetWind3 as pre-built CSS (assets/css/unocss.css)
- Add uno.config.ts with theme breakpoints, colors, safelist, and blocklist
- Replace SCSS utility classes with UnoCSS atomic classes:
  - d-none → hidden
  - d-none-desktop → sm:hidden
  - d-none-mobile → max-sm:hidden
  - order-* (safelist)
  - variant-numeric → tabular-nums lining-nums
- Rename .blur to .is-blur to avoid UnoCSS conflict
- Add @unocss-skip comments for SVG path elements to prevent false positives
- Remove redundant _utilities.scss ($orders map) and simplify _common.scss
- Update documentation (CLAUDE.md, CONTRIBUTING.md, copilot-instructions.md)

* refactor(assets): replace 404/offline SCSS with UnoCSS atomic classes

- Replace _404.scss styles with atomic classes on template elements
- Replace _offline.scss styles with atomic classes on template elements
- Keep selectors (id/class) as user customization hooks
- Delete assets/scss/pages/_404.scss and _offline.scss

* refactor(assets): simplify SCSS with UnoCSS atomic classes

- Replace _bilibili.scss with atomic classes (relative, aspect-video, inset-0)
- Replace _version.scss with atomic classes (whitespace-nowrap, align-text-bottom)
- Replace _noscript-warning.scss with atomic classes (bg-danger, fixed, z-200)
- Add semantic z-index shortcuts (z-hide, z-auto, z-base, z-loading, z-sticky, z-fixed)
- Add h1-h6 to UnoCSS blocklist to prevent false positives
- Use Source path for UnoCSS CSS loading to enable Hugo minify

* chore(assets): minor SCSS and template cleanup

* fix(assets): add secondary color to UnoCSS theme config

text-secondary was broken because the secondary color mapping was missing.

* feat(assets): add UnoCSS presetIcons support and z-index shortcuts

- Add presetIcons preset with empty collections (ready for custom icon sets)
- Add @iconify/json and @iconify/utils devDependencies
- Add semantic z-index shortcuts (z-hide, z-auto, z-base, z-loading, z-sticky, z-fixed)
- Add secondary color to UnoCSS theme config

* refactor(assets): replace SVG icons with UnoCSS presetIcons

- Add Lucide and Octicons icon collections to presetIcons config
- Replace arrow-up/down and enter-key SVGs with Lucide icons
- Replace alert icons (info, light-bulb, report, alert, stop) with Octicons
- Delete replaced SVG files from assets/images/icons/
- Keep custom SVGs (csdn, plume, rootme)

* refactor(layouts): redesign 404 and offline pages with UnoCSS

- Replace translate-y-[30vh] with self-stretch flex centering below header
- Remove arbitrary values (text-[3.6rem], text-[1.8rem], etc.)
- Restore @page print styles in _common.scss
- Simplify offline page layout (icon + title + text)
- Fix hardcoded #57606a → text-secondary
2026-06-27 06:27:12 +08:00
Cell e30b9db23b refactor(layouts): simplify alternative output format link rendering
- Use AlternativeOutputFormats to render all links including manifest
- Add rel field to manifest output format config
- Skip manifest link when PWA is disabled
- Remove hardcoded JSON feed link in favor of AlternativeOutputFormats
- Comment out unused mediaTypes section
2026-06-25 12:51:30 +08:00
Cell a5f362f5ff feat(assets): search UI redesign with heading, metadata and Bing CSE support (#791)
* feat(assets): redesign search result UI with heading, tags, categories and collections

- Add heading/anchor display for anchorified search results (inline in title row)
- Add tags, categories, collections display in search result metadata row
- Extend SearchResult interface with optional heading, tags, categories, collections
- Pass metadata through all search engines (Fuse.js, Algolia, Pagefind)
- Add search-specific render hooks to eliminate replaceRE hacks:
  - render-heading.search.json: clean heading output without class/span
  - render-codeblock.search.json: code output without line numbers
  - fixit-encryptor.search.json: skip encrypted content in search index
- Add data-pagefind-ignore="all" to fixit-encryptor for Pagefind exclusion
- Add data-pagefind-meta for tags, categories, collections in Pagefind
- Add data-pagefind-sort for title (alphabetical sorting)
- Extend PagefindConfig.sortBy to support "title" option
- Redesign search modal SCSS with flex layout for title/heading/date row
- Add .suggestion-meta row with icon-styled tags/categories/collections

* feat(layouts): add Bing Custom Search Engine support

- Implement Bing CSE adapter in search engine (redirect to results page)
- Add Bing CSE widget embed in search page template via JavaScript snippet
- Update CSE engine warning message to be provider-agnostic
- Add Bing icon (fa-microsoft) for Bing CSE results
- Add cx config field for Bing and mark as unverified
2026-06-25 12:49:17 +08:00
Cell 5cad4d3df9 refactor(assets): PWA improvements and app config snake_case migration (#790)
- Service worker: versioned cache name, navigation preload, stale-while-revalidate for images
- New PWAModule extracted from MiscModule with async registration and update detection
- SW update notification toast in Hugo template with i18n support (16 languages)
- Web app manifest template (site.webmanifest) generated from [params.app] config
- [params.app] keys migrated to snake_case: name, short_name, pwa, no_favicon, svg_favicon, mask_color, tile_color, theme_color
- enablePWA moved from [params] to [params.app].pwa
- theme_color no longer accepts single-value, only {light, dark} map
- EventBus: new fixit:sw-update event
- SCSS: new _sw-toast.scss widget for update notification
2026-06-24 12:43:37 +08:00
Cell 47247e01c5 refactor(assets): split SCSS into per-layout CSS bundles (#789)
- Restructure pages/ directory: shared/, posts/, specials/ modules
- Add per-layout entry points (home, posts, archives, search, friends, link)
- Include 404 and offline styles in main bundle
- Consolidate scss-vars.html with Internal and Appearance categories
- Simplify _variables.scss with @forward "hugo:vars"
- Extract CSS loading logic to base/head/css.html
- Update [params.appearance] with all configurable values
2026-06-23 17:19:51 +08:00
Cell 4b3f33f35a refactor(assets): improve custom script examples and SCSS configuration
- Add custom.js.example alongside custom.ts.example
- Update examples to use window.fixit instead of importing from theme source
- Add "Build" true for custom.ts in assets pipeline so esbuild compiles it
- Make code_font_family configurable via [params.appearance] in hugo.toml
- Standardize SCSS header comments: // → ///, remove Chinese text
- Add documented examples in custom.scss: fonts, page width, admonitions, task lists
2026-06-22 15:35:41 +08:00
Cell b7db52eb7e chore: bump minimum Hugo version to 0.161.0 for hugo:vars support
The hugo:vars feature (used for SCSS variable configuration via
[params.appearance]) requires Hugo v0.161.0+.

See https://gohugo.io/functions/css/sass/#vars
2026-06-22 03:28:16 +08:00
Cell 17d7bc1781 refactor(assets): SCSS variables with hugo:vars and module setup standardization (#788)
* feat(assets): refactor SCSS variables with Hugo config via hugo:vars

Use Hugo's hugo:vars mechanism (v0.161.0+) to configure SCSS variables
via [params.appearance] in hugo.toml, replacing the override.scss file.

- Add [params.appearance] config section in hugo.toml
- Create scss-vars.html partial for SCSS default values
- Pass vars to toCSS via head/index.html
- Rewrite _variables.scss to use @use "hugo:vars" as h with !default
- Update all 20 consumer files from @use "override" to @use "variables"
- Delete override.scss
- Add admonition mixin in core/mixins/_admonition.scss
- Update deprecation detection to use fileExists

* refactor(assets): standardize module setup() and simplify main.ts init

- Add setup() method to all modules (menu, theme, search, enc, misc, events)
- Rename initMenu to setup, initMenuDesktop/initMenuMobile to initDesktop/initMobile
- Rename initSearch, initFixItDecryptor to setup
- Standardize setup() position at end of each module class and interface
- Simplify main.ts init sequence to uniform setup() calls

* refactor(assets): replace config.template.scss with hugo:vars/internal

- Delete config.template.scss and its ExecuteAsTemplate pipeline
- Pass internal config (base URL, logo, loading) via hugo:vars/internal namespace
- Move CSS custom properties to _root.scss using set-fi-vars mixin
- Simplify _variables.scss by removing config namespace dependency
- Update CLAUDE.md to reflect new SCSS architecture

* style(i18n): fix spacing in Korean translation strings

* fix(assets): resolve dead SCSS config keys and deduplicate defaults

- Wire up 5 config keys with v.$ references: menu-active-color,
  tag-cloud-start, tag-cloud-end, tag-cloud-end-dark,
  pagination-link-color-dark (were reading from SCSS vars, ignoring
  hugo:vars overrides)
- Remove dead !default flags from all v.$ references (hugo:vars
  always provides values, making !default unreachable)
- Compute derived defaults in scss-vars.html from base values instead
  of hardcoding duplicates
- Extract admonition mixin set-fi-vars map to shared $vars variable
2026-06-22 02:43:35 +08:00
Cell 6f83bc6da5 refactor: restructure TypeScript modules and search config
- Create PublicAPI class to encapsulate module initialization
- Move search config types to modules/search/types.ts
- Rename ui.ts to global.ts for clarity
- Simplify pagefind engine (remove normalizeSortOrder, toObject)
- Move pagefind config to top-level in FixItConfig
- Add TSDoc comments and @param tags
- Update PagefindConfig.sortOrder type to 'asc' | 'desc'
- Improve pagefind detection warning message
2026-06-18 16:09:16 +08:00
Cell a696f3b1bd refactor(search): refactor search module and upgrade autocomplete library (#787) 2026-06-17 01:45:50 +08:00
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
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 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 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 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
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 ebcf22d2bc chore(deps): update pangu.js references and configuration 2026-05-17 14:27:17 +08:00
Cell 97ddee080f chore(deps-dev): update pnpm and dev dependencies 2026-05-12 15:36:40 +08:00
Cell f91154744e style: correct comment 2026-05-12 14:48:03 +08:00
Samir Paul 4e0c3d8fc4 fix(seo): restructure head partial, fix Twitter social and SEO improvements (#749)
* fix(scss): remove top-level parent selector for Dart Sass compatibility

Dart Sass strictly disallows top-level parent selectors (`&`), which causes build failures on newer Hugo versions (e.g. 0.158.0+).

* feat(styles): refactor special styles for friends and search layouts

* fix(seo): restructure head partial, fix Twitter social and SEO improvements

- Split head template into dedicated partial hierarchy for better maintainability
- Add full Twitter Cards support with dynamic site and creator metadata
- Update social media link prefix from twitter.com to x.com and rename label to X
- Fix Twitter/X share button and Buffer via parameter handling
- Add Mastodon verification meta tags and rel="me" links
- Improve SEO structured data for both homepage and blog posts
- Add test site configuration and test avatar asset

---------

Co-authored-by: Cell <1024@lruihao.cn>
2026-05-11 17:20:59 +08:00
Cell e4580190e9 chore(deps): update Node.js, pnpm, and dev dependencies
- Update Node.js version in .nvmrc from v20 to v24
- Update pnpm packageManager from 10.33.0 to 11.0.9
- Update pnpm-workspace.yaml to use allowBuilds instead of onlyBuiltDependencies
- Bump dev dependencies to latest versions: @antfu/eslint-config, @types/node, lint-staged, typescript
2026-05-11 03:45:45 +08:00
Cell 799618fd3e docs: update contributing guide and pull request template 2026-05-10 23:42:59 +08:00
Cell dd6d320654 refactor!: build with Dart Sass and update Vercel deployment scripts (#746)
* BREAKING CHANGE: refactor with Dart Sass (supplement to #741)

* chore: update .gitignore to include .vercel and .env*.local

* CI: add build script for Hugo site deployment on Vercel

* CI: update build script for Hugo site deployment on Vercel

* refactor: update SCSS layout styles and introduce page-style mixin

* refactor: reorganize SCSS files and improve layout structure

* refactor: rename copy button classes and update related styles
2026-05-10 23:02:54 +08:00
Cell de6894b817 Merge branch 'main' into v1
* main:
  fix: Dart Sass compatibility + feat: add imagePreview config for home page (#741)
2026-05-05 20:00:24 +08:00
Samir's Service Account e68bdb374b fix: Dart Sass compatibility + feat: add imagePreview config for home page (#741)
* Dart Sass calc compatibility

* Fix: Default to Dart Sass transpiler + silence deprecations

* Fix: Add imagePreview config toggle — wrap the featured image block

* Implement featured image preview in summary.html

Added featured image preview functionality to summary layout.

* Add imagePreview parameter to home posts configuration

Added option to control featured image preview in home posts.

* Enable image preview in home page post list
2026-05-04 13:44:01 +08:00
Cell 502e427a0c perf(home): disable third-party resource loading on the home page, and improve plugin comments 2026-04-30 19:48:52 +08:00
Cell 530bc6cef6 feat(mermaid): add wrapper and filename named params support for shortcode
Co-authored-by: Copilot <copilot@github.com>
2026-04-30 12:50:26 +08:00
Cell e68d10d7d9 refactor(mermaid): performance optimization and support pan and zoom etc. (#737)
* perf(mermaid): optimize rendering by deferring non-critical tasks and enhancing viewport observation

* feat(mermaid): add panzoom and download svg actions for mermaid

* feat(mermaid): enhance diagram controls and add fullscreen action for code tabs

* feat(i18n): update translation keys for diagram and tab actions in multiple languages

* fix(mermaid): move mermaid-neutral inside diagram-container in wrapper mode

Agent-Logs-Url: https://github.com/hugo-fixit/FixIt/sessions/e79e837e-be0b-445c-8bd3-8c03cdce2651

Co-authored-by: Lruihao <33419593+Lruihao@users.noreply.github.com>

* fix(mermaid): update download filename for SVG export in diagram controls

* refactor(mermaid): refactor rendering logic and enhance task queue for improved performance

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-04-29 16:42:15 +08:00
Cell 295717a52d fix(header): update header styles and improve layout structure 2026-04-20 17:41:25 +08:00
Cell 09e08d0772 refactor!: migrate theme assets from css to scss and centralize deprecation detection (#735)
**Breaking changes**:

1. Legacy custom style/script files are no longer loaded automatically.
2. Users must migrate custom files to:
   - `custom.scss`
   - `override.scss`
   - `_variables.scss`
   - `assets/js/custom.js`

**Migration guide**:

1. Move `assets/css/_custom.scss` to `assets/scss/custom.scss`.
2. Move `assets/css/_override.scss` to `assets/scss/override.scss`.
3. Keep variables in `assets/scss/_variables.scss`.
4. Move `assets/js/_custom.js` to `assets/js/custom.js`.
5. Rebuild site and verify no deprecation warnings remain.
2026-04-19 13:34:01 +08:00
Cell 9ada69ed71 feat(task-lists): add support for "Important Checked" task (#734) 2026-04-19 05:00:09 +08:00
Cell 1e0d1affaf feat(taxonomy): support taxonomy_icons with shared icon resolver and front matter icon overrides (#732)
- Added new config section: `params.taxonomy_icons`
  - Syntax: `<taxonomy> = [<title icon>, <card icon>, <term title icon>]`
- Added a shared resolver partial to centralize taxonomy icon lookup.
- Updated taxonomy-related templates to use the shared resolver instead of hardcoded icon maps.
- Added front matter overrides for taxonomy pages:
  - `titleIcon`
  - `cardIcon` (only for taxonomy `_index.md`)

Icon resolving priority now is:

1. Front matter override (`titleIcon` / `cardIcon`)
2. `params.taxonomy_icons` custom config
3. Built-in defaults (`tag`, `category`, `collection`)
2026-04-14 17:23:05 +08:00
Cell 557a59d7fd chore(init): update warning messages for deprecated parameters 2026-04-13 14:49:54 +08:00
Cell aef8eaf936 chore(debug)!: enable debug mode based on environment and remove params.dev.debug config 2026-04-12 13:49:21 +08:00
Cell 5f100a6cca feat(link): add link_guard front matter and support for friend links 2026-04-12 13:29:05 +08:00