Files
FixIt/layouts/_partials/init/detection-deprecated.html
T
Cell 658f03d1e5 refactor(params)!: flatten [params.page] to [params], snake_case keys, more page-level params support (#805)
* refactor(params)!: snake_case config + eliminate params.page + use .Param

BREAKING CHANGE: All params keys renamed from camelCase to snake_case,
[params.page] section eliminated (moved to [params] level), and users
must update their hugo.toml and front matter accordingly.

Key changes:
- All camelCase config keys → snake_case (e.g., defaultTheme → default_theme)
- [params.page] flat keys and sub-sections moved to [params] level
- Removed function/params.html (manual merge), replaced with Hugo .Param
- New function/param.html partial for page-level section params with
  shorthand boolean support and site defaults merging
- New function/camel-case.html for string conversion
- snake2camel.html renamed to camel-case-keys.html
- New function/get-cover.html for cover image resolution
- Deprecation warnings in detection-deprecated.html for old config keys
- Front matter only params (subtitle, featured_image, password, repost,
  weight, message) use .Params.xxx instead of .Param
- Page-level sections use param.html partial
- Simplified patch.html (siteTime only) and init/index.html

Refs: camel-case-keys.html#29 (planned v1.0 breaking change)

* refactor(params)!: move params.link to page-level, simplify link guard

- Move [params.link] and [params.link.guard] to page-level section
- link.html: .Page optional, use param.html when available for
  page-level override, fall back to site config without .Page
- Remove $guardConfig variable, use $config.guard directly
- Remove unnecessary .Page from callers that don't need page override
- friends.html: use param.html for link guard instead of link_guard

* refactor(params)!: move image/codeblock/json_viewer/filetree to page-level

- Move [params.image], [params.codeblock], [params.json_viewer],
  [params.filetree] to page-level sub-sections
- Templates use param.html for merged config (page override + site defaults)
- image.html: .Page optional, falls back to site config without .Page
- Add v1- prefix to all deprecation warnidf IDs
- Fix camelCase key access in image.html (blackList, cacheRemote)
- Fix Hugo-lowered camelCase keys in code-block-wrapper.html
- Add deprecation warnings for codeblock camelCase Markdown attributes
- Add deprecation warnings for file-tree camelCase Markdown attributes
- Update render-codeblock-toggle.html for snake_case attribute names

* style: standardize @param comment style across all HTML templates

- PascalCase types: {string} → {String}, {boolean} → {Boolean},
  {int} → {Int}, {map} → {Map}, {array} → {Array}
- Add missing ` - ` separator between param name and description
- Remove extra alignment spaces between type and param name

* refactor(params)!: move params.mermaid to page-level, extract gen/ templates

- Move [params.mermaid] to page-level sub-sections
- Mermaid config injected into window.config (per-page override support)
- mermaid.ts reads config from window.config.mermaid instead of parameter
- Create _partials/gen/ directory for JS content generators
- Move mermaid-bootstrap.html from plugin/ to gen/
- Extract window.config JS generation into gen/config.html
- mermaid.html uses param.html for wrapper config

* refactor(params)!: consolidate link_to_* into params.post_link section

- Move link_to_markdown/source/edit/report/vscode into [params.post_link]
- Rename keys: markdown, source, edit, report (bool), editor (string)
- editor defaults to "vscode", supports "trae" etc. via protocol template
- footer.html uses .Param "post_link" for all link toggles
- Remove link_to_* from deprecated keys list

* fix: add fallback for deprecated camelCase attributes and expand deprecation warnings

- render-codeblock-file-tree.html: folderSlash attribute fallback
- render-codeblock-toggle.html: lineNosToggler/lineWrapToggler fallback + warnings
- code-block-wrapper.html: maxShownLines/wrapperClass fallback
- detection-deprecated.html: add nested key warnings for 13 sections
  (header, breadcrumb, navigation, watermark, busuanzi, image, mermaid,
  codeblock, filetree, math.katex, math.mathjax.options, post_summary, footer)
- detection-deprecated.html: add link_guard front matter deprecation warning

* fix(mermaid): fix rendering in hidden tab panels and neutral layer scheduling

- isRenderContextActive: check tab-panel visibility via getBoundingClientRect
  instead of panel.hidden (tab-container uses slot-based hiding, not hidden attr)
- bindTabContainerChanged: render neutral layers when switching tabs so
  print/fallback scenarios work correctly
2026-07-01 22:27:08 +08:00

143 lines
6.3 KiB
HTML

{{- /* Deprecated parameter detection */ -}}
{{- $warns := slice -}}
{{- $errors := slice -}}
{{- with .Site.Params.externalIcon -}}
{{- $warns = $warns | append "The parameter `params.externalIcon` is deprecated since v1.0.0, use `params.link.external_icon` instead." -}}
{{- end -}}
{{- /* params.page structural migration warnings */ -}}
{{- $deprecatedPageKeys := slice
"capitalize_titles" "summary_plainify" "author_avatar"
"hidden_from_home_page" "hidden_from_search" "hidden_from_related" "hidden_from_feed"
"twemoji" "lightgallery" "ruby" "fraction" "fontawesome" "license"
"page_style" "auto_bookmark" "show_lastmod" "word_count" "reading_time" "end_flag"
"instant_page" "collection_list" "collection_navigation" "edit_url" "source_url"
"featured_image" "featured_image_preview"
"toc" "expiration_reminder" "heading" "math" "mapbox"
"related" "reward" "share" "comment" "library" "seo"
-}}
{{- $onlyFrontMatters := slice "subtitle" "featured_image" "featured_image_preview" "repost" -}}
{{- range $deprecatedPageKeys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- if (in $.Site.Params.page $oldKey) | and (not (in $onlyFrontMatters $newKey)) -}}
{{- $warns = $warns | append (printf "The parameter `params.page.%s` has been removed since v1.0.0, use `params.%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- if (in $.Site.Params.page $oldKey) | and (in $onlyFrontMatters $newKey) -}}
{{- $warns = $warns | append (printf "The parameter `params.page.%s` has been removed since v1.0.0, use front matter parameter `%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- if (in $.Page.Params $oldKey) | and (in $newKey "_") -}}
{{- $warns = $warns | append (printf "Front matter parameter `%s` is deprecated since v1.0.0, use `%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- end -}}
{{- /* camelCase → snake_case param/section rename warnings */ -}}
{{- $deprecatedKeys := slice
"default_theme"
"date_format"
"with_site_title"
"disable_theme_inject"
"title_delimiter"
"index_with_subtitle"
"enable_translation_merge"
"tag_cloud"
"post_chat"
"post_summary"
"git_info"
"back_to_top"
"reading_progress"
"github_corner"
"recently_updated"
"json_viewer"
"custom_partials"
"task_list"
"repo_version"
-}}
{{- range $deprecatedKeys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- with index $.Site.Params $oldKey -}}
{{- $warns = $warns | append (printf "The parameter `params.%s` has been removed since v1.0.0, use `params.%s` instead." $oldDisplay $newKey) -}}
{{- end -}}
{{- end -}}
{{- /* Nested camelCase key rename warnings */ -}}
{{- $deprecatedNestedKeys := dict
"search" (slice "content_length" "absolute_url" "max_result_length" "snippet_length" "highlight_tag")
"search.algolia" (slice "app_id" "search_key")
"header" (slice "desktop_mode" "mobile_mode")
"breadcrumb" (slice "show_home")
"navigation" (slice "in_section")
"footer.powered" (slice "hugo_logo" "theme_logo")
"footer" (slice "site_time")
"home.profile" (slice "only_first_page" "gravatar_email" "avatar_url" "avatar_menu")
"home.posts" (slice "image_preview")
"watermark" (slice "row_spacing" "col_spacing" "font_size" "font_family")
"busuanzi" (slice "site_views" "page_views")
"image" (slice "cache_remote" "black_list")
"mermaid" (slice "security_level" "font_family" "layout_loaders")
"codeblock" (slice "wrapper_class" "max_shown_lines" "line_nos_toggler" "line_wrap_toggler")
"filetree" (slice "folder_slash" "ignore_list")
"math.katex" (slice "copy_tex" "throw_on_error" "error_color")
"math.mathjax.options" (slice "enable_menu" "skip_html_tags" "ignore_html_class")
"post_summary" (slice "post_url" "word_limit" "typing_animate" "beginning_text" "loading_text")
-}}
{{- range $sectionPath, $keys := $deprecatedNestedKeys -}}
{{- $parts := split $sectionPath "." -}}
{{- $section := $.Site.Params -}}
{{- $valid := true -}}
{{- range $parts -}}
{{- if reflect.IsMap $section -}}
{{- $section = index $section . -}}
{{- else -}}
{{- $valid = false -}}
{{- end -}}
{{- end -}}
{{- if $valid | and (reflect.IsMap $section) -}}
{{- range $keys -}}
{{- $newKey := . -}}
{{- $oldKey := replace . "_" "" -}}
{{- $oldDisplay := partial "function/camel-case.html" $newKey -}}
{{- with index $section $oldKey -}}
{{- $warns = $warns | append (printf "The parameter `params.%s.%s` has been removed since v1.0.0, use `params.%s.%s` instead." $sectionPath $oldDisplay $sectionPath $newKey) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- /* Front matter key migration warnings */ -}}
{{- with $.Page.Params.link_guard -}}
{{- $warns = $warns | append "Front matter parameter `link_guard` has been removed since v1.0.0, use `link.guard` instead." -}}
{{- end -}}
{{- if fileExists "assets/css/_custom.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_custom.scss` is deprecated. Please move your custom styles to `assets/scss/custom.scss`." -}}
{{- end -}}
{{- if fileExists "assets/css/_override.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_override.scss` is deprecated. Use `[params.appearance]` in your site configuration instead." -}}
{{- end -}}
{{- if fileExists "assets/scss/override.scss" -}}
{{- $warns = $warns | append "The file `assets/scss/override.scss` is deprecated. Use `[params.appearance]` in your site configuration instead." -}}
{{- end -}}
{{- if fileExists "assets/css/_variables.scss" -}}
{{- $warns = $warns | append "The file `assets/css/_variables.scss` is deprecated. Please move your variables to `assets/scss/_variables.scss`." -}}
{{- end -}}
{{- if fileExists "assets/js/_custom.js" -}}
{{- $warns = $warns | append "The file `assets/js/_custom.js` is deprecated. Please move your custom scripts to `assets/js/custom.ts` or `assets/js/custom.js`." -}}
{{- end -}}
{{- if len $warns -}}
{{- warnf "[FixIt] deprecation warnings (%v):\n • %v\n\n" (hugo.Store.Get "version") (delimit $warns "\n • ") -}}
{{- end -}}
{{- if len $errors -}}
{{- errorf "[FixIt] deprecation errors (%v):\n • %v\n\n" (hugo.Store.Get "version") (delimit $errors "\n • ") -}}
{{- end -}}