v2.9.0 - #590
Merged
Merged
Conversation
…test-first (#576) * Initial plan * Create donations.md with 2025 entry for 1ronName Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> * Add 2025 donation entry to DONATION.md and reverse order to latest-first Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> * Add year 2023 to all past donation entries Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> * Fix chronological order of donation entries Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> * Update sponsorship list header to reflect reverse chronological order Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> * Update donation method for Jan 12, 2025 entry to 微信赞赏码 Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: EvanNotFound <68590232+EvanNotFound@users.noreply.github.com>
- add lifecycle.js to manage ready, page view, and visit start callbacks - bind swup hooks to lifecycle events for page view and visit start - dispatch custom event on swup ready for external binding - update main.js to use lifecycle onReady and onPageView for initialization - refactor subtitle typed.js initialization logic for robustness - update swup.ejs to expose swup instance globally and dispatch ready event - update scripts.ejs and home-banner.ejs to handle subtitle config more flexibly - bump tailwindcss to v4.1.18 with updated styles and utilities
…d scripts - add mermaid theme config for light and dark modes in _config.yml - enhance config export to normalize mermaid theme and subtitle config - refactor mermaid plugin initialization to support dynamic theme switching - refactor mode toggle to update mermaid theme on light/dark mode switch - improve lazyload, masonry, bookmarkNav, categoryList, essays, tabs, typed plugins - add page scope and lifecycle hooks for better resource management - refactor main.js to initialize globals once and page-specific scripts on page view - refactor utils.js for scroll handling, font size adjustment, and other UI features - add styleStatus state management for persistent UI preferences - improve image viewer with zoom, drag, keyboard navigation, and lazyload support - update localSearch tool with better event handling, data fetching, and rendering - refactor scrollTopBottom and tocToggle tools with event delegation and signal support - remove deprecated once.js and consolidate event listener management with AbortController
- rename multiple init flags to didInit for consistency across modules - extract scroll, layout, and sideTools utilities into separate files - simplify utils.js by delegating to extracted utility modules - improve code clarity by removing redundant properties and methods - maintain existing behavior with improved modular structure
…d retries - Refactor giscus comment script to support SPA with dynamic config updates - Add retry logic and path check to gitalk comment initialization for SPA - Add retry logic and path check to twikoo comment initialization for SPA - Add retry logic and path check to waline comment initialization with instance destroy - Remove inline home-banner QR code script; implement as external module with event listeners - Refactor article expiration date script to external module and update usage - Convert notes styles to use CSS variables for colors and backgrounds - Update main.js to import and initialize new homeBanner and expirationDate modules - Add event listener for page refresh to reinitialize page components on SPA navigation - Refactor hbe.js to dispatch page refresh event after decrypting content instead of direct calls BREAKING CHANGE: Comment system scripts now support SPA navigation with retries and dynamic updates; home banner QR code and expiration date scripts moved to external modules requiring updated imports and initialization in main.js
- add callout.js to replace legacy note and note-large modules - remove note.js and note-large.js legacy modules - update notes.styl to use callout styles and variables - enhance home-content.ejs sticky label with backdrop blur and higher z-index - restyle article-content.ejs expiration note as callout with new markup and colors - update tailwind CSS build with new variables and backdrop-blur-sm utility
- hide scrollbars across browsers in article reader dialog
Refactor redefine JS runtime
- Load masonry items from generated JSON with lazy batches and spinner - Add masonry data generator and config for batch sizes - Enhance image viewer with navigation controls and accessibility texts - Add masonry and viewer translations for all supported languages
- Read masonry batch sizes from nested config with warnings if missing - Switch masonry page to raw layout and adjust styling and lazyload images - Improve global scrollbars and image viewer dragging performance and behavior
- Update expiration callout layout and spacing in article view - Replace callout icon and border styling for expiration notice
- Replace `p-[1px]` with `p-px` on post author avatar - Regenerate Tailwind build to include `p-px` utility
- Document tooling, build commands, and generated assets - Describe JS/CSS style, config flow, and CI expectations - Add guardrails and workflow notes for automated agents
- Add width/height to masonry data when valid positive integers - Preserve aspect ratio via CSS and avoid layout shifts in masonry grid - Swap loading.svg placeholder for 1x1 gif and use native lazy/decoding - Guard masonry batches and fetch with abort/isConnected checks
- Switch renderJS helper to use raw js paths when developer mode is on
- Add helper to remove min-h-screen class from masonry container - Call helper after initial masonry batch append to update layout
- Add min height class to masonry container to fill viewport - Remove min height class once masonry items load - Add preview npm script for local preview host
- Preserve swig-style tag blocks during markdown rendering - Ignore tag parsing inside fenced code blocks - Dedent HTML-only indented lines without breaking code fences - Make folding and tabs tag handlers async-safe in Hexo
- Switch tabs.js to use a single delegated click listener - Export initTabs with optional abort signal and guard double init
- Trim leading whitespace before inline callout markdown render - Simplify simple/titled callout markup and fade vertical accent bar - Normalize first-child spacing inside tab panels
Fix rendering issues when notel exists in tabs, fix issue#572
- Update checkout and setup-node to v6 in aliyun-cdn-publish workflow - Update checkout and setup-node to v6 in build-and-commit workflow - Update checkout and setup-node to v6 in npm-publish workflow - Update checkout and setup-node to v6 in pr-build-check workflow - Update checkout and setup-node to v6 in prod-deploy workflow
ci: add PR preview workflows and update deploy pipelines
- retry Artalk init until script and container are ready - ensure CSS and JS load only once across PJAX navigation - escape Artalk server and site config to prevent HTML injection
修复菜单栏“书签”没有多语言翻译的问题,并添加了artalk评论系统
- Add GitHub Action to comment on and close labeled issues on release - Skip closing issues for draft or prerelease releases
- add opacity to expire callout divider for softer visual - support named args for callout tags including variant and classes - refactor folding tag to use shared markdown-swig renderer - rewrite tabs tag to use markdown-swig and tag-args helpers - add markdown-swig utils to safely render markdown with swig tags - add tag-args utils for positional and named tag arguments parsing
- Move config deprecations module to scripts/deprecations namespace - Add html tagged template helper for compact, indented markup - Refactor callout markup to use html helper and improve structure - Emit deprecation warnings for legacy note tags with replacement hints - Require explicit hexo instance in renderMarkdownTagSafe for safety - Update folding and tabs modules to use new renderMarkdownTagSafe API - Bump Tailwind build from v4.1.18 to v4.2.0 in compiled CSS
- Replace tab anchors with ARIA-compliant tab buttons - Update tab panes to use hidden attribute instead of display none - Restyle tabs container and tablist with new Tailwind classes - Prevent markdown styles inside tab headers via .not-markdown - Extend Tailwind sources and add new radius design tokens
- Render tab panes with data-state and hidden instead of active class - Update tabs plugin to toggle data-state on panes - Simplify tabs styles by removing active class display rules
- add unified button tag with named args and legacy parsing - replace btn/btns/buttons/cell with deprecated wrappers and warnings - introduce grid tag with configurable columns and gap - update folding tag to support named args, open state and new styles - tweak tabs and folding/button styles for consistent theming
- Normalize tab tokens to safe, predictable ids - Guard tab click handler when target pane is missing
- Allow numeric-only arg to set active tab without a name - Generate normalized, incrementing auto tab names without warnings
style: refresh writing modules inlcuding tab
evannotfound
temporarily deployed
to
PR Preview
February 20, 2026 13:52 — with
GitHub Actions
Inactive
evannotfound
temporarily deployed
to
PR Preview
February 20, 2026 13:57 — with
GitHub Actions
Inactive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Highlights
{% callout %}), plus refreshed Tabs / Button / Grid / Folding tag APIs with safer parsing/rendering.width/heightto reduce CLS, improved image viewer + optional EXIF panel.User-Facing Changes
Writing modules
{% callout %}module; legacy note tags still work but are deprecated and emit one-time warnings.role=tablist/tab), improved tab id normalization + auto tab group name generation, safer nested-tag rendering.{% button %}supports named args (text/url/icon/image/size/align/title/target/rel); legacy{% btn %}and{% cell %}are deprecated.{% grid %}container with configurablecolsandgap; legacy{% btns %}/{% buttons %}are deprecated.title,class/classes/style,open) and safer markdown rendering.Comments
comment.system: artalk) and Utterances (comment.system: utterances) with SPA-safe init and theme switching support.Masonry + Image viewer
masonry/data.jsongenerator; client-side masonry loads in batches (page_templates.masonry.batch_size,page_templates.masonry.initial_batch_size).width/heightin masonry data to reduce layout shift.exif: true, EXIF panel becomes available (subject to CORS/metadata availability).Home banner social links
home_banner.social_links.linksandhome_banner.social_links.qrsnow support array format to preserve ordering.Config Additions / Changes
_config.ymlcomment.system: addutterances,artalkcomment.config.artalk,comment.config.utterancesplugins.mermaid.theme.light/plugins.mermaid.theme.darkpage_templates.masonry.batch_size/page_templates.masonry.initial_batch_sizehome_banner.social_links.links/qrs: prefer arraysDeprecations (warn-once)
{% note %},{% notes %},{% subnote %},{% noteL %}/ variants,{% subwarning %}{% btn %},{% cell %},{% btns %},{% buttons %}home_banner.social_links.links/qrsobject-map formatDocs
Verification
npm installnpm run buildhexo clean && hexo gMaintainer Notes
standard-versionscripts; addednpm run previewfor local preview host.