Files
FixIt/hugo.toml
T
Cell a96ba665ac refactor(assets)!: rewrite content encryption with AES-256-GCM and PBKDF2 (#806)
* refactor(assets)!: rewrite content encryption with AES-256-GCM and PBKDF2

- Remove legacy Base64 obfuscation layer (content-encryption.html)
- Replace <cipher-text> with <template> for inert content storage
- Single-layer AES-256-GCM encryption via post-build script
- PBKDF2 key derivation (100k iterations) for encryption
- PBKDF2-protected password verification (data-verify-salt)
- Depth-tracking parser for nested shortcode support
- Dev mode: plaintext content used directly without encryption
- Remove crypto-js and xxhash-wasm vendored dependencies

* feat(post-encrypt): prepare package for npm publishing

- Add bin entry, build script, and dist output for npx usage
- Replace @hugo-fixit/shared with standalone implementations
- Add CLI shebang for direct execution
- Add package README with usage documentation
- Remove FIXIT_ENCRYPT_INPUT env var (redundant with --input)
- Add encryption detection warning in assets.html
- Remove Post-build Encryption sections from READMEs

* chore: integrate post-encrypt into build pipeline and use consola

- Replace console with consola for post-encrypt logging
- Improve verification messages (no templates, count, etc.)
- Simplify build scripts: encrypt runs as part of main build
- Update encryption detection warning to use npx command

* feat(assets): add encryption dev warning admonition

- Add danger admonition in single.html for full-page encryption (dev mode only)
- Add encryption detection warning in assets.html console
- Improve post-encrypt verification messages with template count

* feat(assets): improve encryption i18n, cache security, and error handling

- Add encryptionWarning and encryptionCommand i18n keys for all 16 languages
- Store PBKDF2 verification hash in localStorage cache for better security
- Show decryption errors via flashTooltip instead of console only
- Add FixItDecryptor type definitions in global.ts
- Move encryption detection to init/detection-encryption.html with batched warning
- Remove redundant per-page warning from assets.html

* feat(assets): redesign fixit-decryptor UI with card layout

- Page-level: card form with lock icon header, password input with key icon, primary-colored unlock button, circular re-encrypt button
- Shortcode-level: connected input+button design (search bar style) with focus ring sync
- Remove loading spinner, use display:none/flex toggle via .initialized class
- Move lock icon styling to UnoCSS (text-primary text-xl)
- Initialize CellTooltip on re-encrypt button
- Fix JSDoc @param warnings in global.ts

* refactor(assets): unify TOC template and decryptor animations

- TOC always rendered in `<template data-toc>`, containers populated by initToc()
- Moved TOC scroll/resize handling from events.ts to toc.ts (syncTocLayout, syncTocActiveState)
- Removed EventsModule toc dependency, updated public-api.ts constructor
- Removed visibility:hidden from #toc-auto
- Decryptor: form always visible, @starting-style for fade-in on init
- Decryptor: content expand/collapse animation using height + opacity
- Removed encrypted-hidden from TOC elements in single.html

* refactor(assets): add target to fixit:decrypted event and simplify handlers

- Add { target: Element } payload to fixit:decrypted in event-bus.ts
- Remove $content closure from fixit-decryptor init(), use detail.target
- Update content.ts and toc.ts to use detail.target from event

* fix(assets): use eventBus for TOC scroll/resize listeners and eliminate redundant template parsing

- Replace raw window scroll/resize listeners in TocModule with eventBus
  subscriptions (fixit:scroll/fixit:resize), reusing EventsModule's
  throttle and debounce instead of duplicating un-throttled handlers.
- Refactor hasUnencryptedTemplate in post-encrypt to accept the already-
  computed matches array, avoiding a redundant findEncryptionTemplates
  call on the same HTML content.
- Remove crypto-js and xxhash-wasm from README credits.

* style(assets): soften decryptor button background and add form hover shadow

* build(workflow): add post-encrypt step to build script
2026-07-05 23:26:11 +08:00

1882 lines
48 KiB
TOML

# =====================================================================================
# It's recommended to use Alternate Theme Config to configure FixIt
# Modifying this file may result in merge conflict
# There are currently some restrictions to what a theme component can configure:
# params, menu(s), outputformats and mediatypes
# =====================================================================================
# -------------------------------------------------------------------------------------
# Hugo Configuration
# See: https://gohugo.io/configuration/all/
# -------------------------------------------------------------------------------------
# website title
title = ""
# hostname (and path) to the root
baseURL = "http://localhost:1313"
# theme list
# theme = ["FixIt"] # enable in your site config file
# determines default content language ["en", "zh-cn", "fr", "pl", ...]
defaultContentLanguage = "en"
# language code ["en", "zh-CN", "fr", "pl", ...]
languageCode = "en"
# language name ["English", "简体中文", "Français", "Polski", ...]
languageName = "English"
# whether to include Chinese/Japanese/Korean
hasCJKLanguage = false
# copyright description used only for seo schema
copyright = ""
# whether to use robots.txt
enableRobotsTXT = true
# whether to use git commit log
enableGitInfo = true
# whether to use emoji code
enableEmoji = true
# the main sections of a site
# if set, the MainSections method on the Site object returns the given sections,
# otherwise it returns the section with the most pages.
# mainSections = ["posts"]
# -------------------------------------------------------------------------------------
# Front Matter Configuration
# See: https://gohugo.io/configuration/front-matter/
# -------------------------------------------------------------------------------------
[frontmatter]
_merge = "shallow"
lastmod = [
"lastmod",
":git",
":fileModTime",
":default",
]
# -------------------------------------------------------------------------------------
# Imaging Configuration
# See: https://gohugo.io/configuration/imaging/
# -------------------------------------------------------------------------------------
[imaging]
_merge = "shallow"
quality = 75
# -------------------------------------------------------------------------------------
# Menu Configuration
# See: https://fixit.lruihao.cn/documentation/basics/#menu-configuration
# -------------------------------------------------------------------------------------
[menus]
[[menus.main]]
identifier = "archives"
parent = ""
# you can add extra information before the name (HTML format is supported), such as icons
pre = ""
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
name = "Archives"
url = "/archives/"
# title will be shown when you hover on this menu link
title = ""
weight = 1
# add user-defined content to menu items
[menus.main.params]
# add css class to a specific menu item
class = ""
# whether set as a draft menu item whose function is similar to a draft post/page
draft = false
# add fontawesome icon to a specific menu item
icon = "fa-solid fa-archive"
# set menu item type, optional values: ["mobile", "desktop"]
type = ""
# whether to show the submenu item divider line
divided = false
[[menus.main]]
identifier = "categories"
parent = ""
pre = ""
post = ""
name = "Categories"
url = "/categories/"
title = ""
weight = 2
[menus.main.params]
icon = "fa-solid fa-folder-tree"
[[menus.main]]
identifier = "tags"
parent = ""
pre = ""
post = ""
name = "Tags"
url = "/tags/"
title = ""
weight = 3
[menus.main.params]
icon = "fa-solid fa-tags"
# -------------------------------------------------------------------------------------
# Related content Configuration
# See: https://gohugo.io/content-management/related-content/
# -------------------------------------------------------------------------------------
[related]
includeNewer = false
threshold = 80
toLower = false
[[related.indices]]
applyFilter = false
cardinalityThreshold = 0
name = 'keywords'
pattern = ''
toLower = false
type = 'basic'
weight = 100
[[related.indices]]
applyFilter = false
cardinalityThreshold = 0
name = 'date'
pattern = ''
toLower = false
type = 'basic'
weight = 10
[[related.indices]]
applyFilter = false
cardinalityThreshold = 0
name = 'tags'
pattern = ''
toLower = false
type = 'basic'
weight = 80
[[related.indices]]
applyFilter = false
name = 'fragmentrefs'
type = 'fragments'
weight = 80
# -------------------------------------------------------------------------------------
# Modules Configuration
# See: https://gohugo.io/configuration/module/
# -------------------------------------------------------------------------------------
[module]
[module.hugoVersion]
extended = true
min = "0.161.0"
# -------------------------------------------------------------------------------------
# Markup Configuration
# See: https://gohugo.io/configuration/markup/
# -------------------------------------------------------------------------------------
[markup]
_merge = "shallow"
# Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting)
[markup.highlight]
# ~~~~~~~~~~ necessary configurations ~~~~~~~~~~
# https://github.com/hugo-fixit/FixIt/issues/43
codeFences = true
noClasses = false
# ~~~~~~~~~~ necessary configurations ~~~~~~~~~~
anchorLineNos = false
guessSyntax = true
lineNos = true
lineNumbersInTable = true
# goldmark is from Hugo 0.60 the default library used for Markdown
# See: https://gohugo.io/configuration/markup/#goldmark
[markup.goldmark]
duplicateResourceFiles = false
[markup.goldmark.extensions]
definitionList = true
footnote = true
linkify = true
linkifyProtocol = 'https'
strikethrough = false
table = true
taskList = true
typographer = true
# See: https://gohugo.io/configuration/markup/#extras
[markup.goldmark.extensions.extras]
[markup.goldmark.extensions.extras.delete]
enable = true
[markup.goldmark.extensions.extras.insert]
enable = true
[markup.goldmark.extensions.extras.mark]
enable = true
[markup.goldmark.extensions.extras.subscript]
enable = true
[markup.goldmark.extensions.extras.superscript]
enable = true
# https://gohugo.io/content-management/mathematics/
[markup.goldmark.extensions.passthrough]
enable = true
[markup.goldmark.extensions.passthrough.delimiters]
block = [
[
'\[',
'\]'
],
[
'$$',
'$$'
]
]
inline = [
[
'\(',
'\)'
],
[
'$',
'$'
]
]
[markup.goldmark.parser]
[markup.goldmark.parser.attribute]
block = true
title = true
[markup.goldmark.renderer]
hardWraps = false
# whether to use HTML tags directly in the document
unsafe = true
xhtml = false
# -------------------------------------------------------------------------------------
# Sitemap Configuration
# See: https://gohugo.io/templates/sitemap/#configuration
# -------------------------------------------------------------------------------------
[sitemap]
changefreq = "weekly"
disable = false
filename = "sitemap.xml"
priority = 0.5
# -------------------------------------------------------------------------------------
# Permalinks Configuration
# See: https://gohugo.io/content-management/urls/#permalinks
# -------------------------------------------------------------------------------------
[permalinks]
[permalinks.page]
# posts = "/p/:slugorcontentbasename"
[permalinks.section]
# posts = "/posts/:slugorcontentbasename"
[permalinks.taxonomy]
[permalinks.term]
# -------------------------------------------------------------------------------------
# Privacy Configuration
# See: https://gohugo.io/configuration/privacy/
# -------------------------------------------------------------------------------------
[privacy]
[privacy.x]
enableDNT = true
[privacy.youtube]
privacyEnhanced = true
# -------------------------------------------------------------------------------------
# Media Types Configuration
# See: https://gohugo.io/configuration/media-types/
# -------------------------------------------------------------------------------------
# [mediaTypes]
# [mediaTypes."application/feed+json"]
# suffixes = [ "json" ]
# -------------------------------------------------------------------------------------
# Output Format Configuration
# See: https://gohugo.io/configuration/output-formats/
# -------------------------------------------------------------------------------------
[outputFormats]
# Options to make output /archives/index.html file
[outputFormats.archives]
path = "archives"
baseName = "index"
mediaType = "text/html"
isPlainText = false
isHTML = true
permalinkable = true
notAlternative = true
# Options to make output /offline/index.html file
[outputFormats.offline]
path = "offline"
baseName = "index"
mediaType = "text/html"
isPlainText = false
isHTML = true
permalinkable = true
notAlternative = true
# Options to make output /link/index.html file
[outputFormats.link]
path = "link"
baseName = "index"
mediaType = "text/html"
isPlainText = false
isHTML = true
permalinkable = true
notAlternative = true
# Options to make output readme.md file
[outputFormats.readme]
baseName = "readme"
mediaType = "text/markdown"
isPlainText = true
isHTML = false
notAlternative = true
# Options to make output baidu_urls.txt file
[outputFormats.baidu_urls]
baseName = "baidu_urls"
mediaType = "text/plain"
isPlainText = true
isHTML = false
notAlternative = true
# Options to make output search.json file
[outputFormats.search]
baseName = "search"
mediaType = "application/json"
rel = "search"
isPlainText = true
isHTML = false
permalinkable = true
# Options to make output site.webmanifest file
[outputFormats.manifest]
baseName = "site"
mediaType = "application/manifest+json"
rel = "manifest"
isPlainText = true
isHTML = false
# -------------------------------------------------------------------------------------
# Output Configuration
# See: https://gohugo.io/configuration/outputs/
# -------------------------------------------------------------------------------------
# options to make hugo output files, the optional values are below:
# home = ["html", "rss", "archives", "search", "offline", "manifest", "link", "readme", "baidu_urls"]
# page = ["html", "markdown"]
# section = ["html", "rss"]
# taxonomy = ["html"]
# term = ["html", "rss"]
[outputs]
_merge = "shallow"
home = [
"html",
"rss",
"archives",
"search",
"offline",
"manifest",
"link"
]
page = [
"html",
"markdown"
]
section = [
"html",
"rss"
]
taxonomy = [ "html" ]
term = [
"html",
"rss"
]
# -------------------------------------------------------------------------------------
# Taxonomies Configuration
# See: https://gohugo.io/configuration/taxonomies/
# -------------------------------------------------------------------------------------
[taxonomies]
_merge = "shallow"
category = "categories"
tag = "tags"
collection = "collections"
# -------------------------------------------------------------------------------------
# Build Configuration
# See: https://gohugo.io/configuration/build/
# -------------------------------------------------------------------------------------
[build]
noJSConfigInAssets = true
# -------------------------------------------------------------------------------------
# Theme Core Configuration
# Two types of params:
# 1. Site-level params — apply to the entire site, can NOT be overridden per-page.
# 2. Page-level params — can be overridden per-page via page front matter.
#
# See: https://fixit.lruihao.cn/documentation/basics/#theme-configuration
# -------------------------------------------------------------------------------------
[params]
# FixIt theme version
version = "1.0.X" # e.g. "0.4.X", "0.4.5", "v1.0.0" etc.
# site description
description = ""
# site keywords
keywords = []
# site default theme ["light", "dark", "auto"]
default_theme = "auto"
# which hash function used for SRI, when empty, no SRI is used
# ["sha256", "sha384", "sha512", "md5"]
fingerprint = ""
# date format
date_format = "2006-01-02"
# website images for Open Graph and Twitter Cards
images = []
# whether to add site title to the title of every page
# remember to set up your site title in `hugo.toml` (e.g. title = "title")
with_site_title = true
# title delimiter when the site title is be added to the title of every page
title_delimiter = "-"
# whether to add site subtitle to the title of index page
# remember to set up your site subtitle by `params.header.subtitle.name`
index_with_subtitle = false
# whether to enable merging missing translations from other languages
# when set to true, missing translations from other languages will be merged and displayed
# default is false for better performance, especially for single-language sites
# set to true if your site has multiple languages and you want to show all content
enable_translation_merge = false
# whether to enable tooltip replacement for elements with title attribute, such as footnote references
tooltip = true
# FixIt will, by default, inject a theme meta tag in the HTML head on the home page only.
# you can turn it off, but we would really appreciate if you don't, as this is a good way to watch FixIt's popularity on the rise.
disable_theme_inject = false
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Page-level params
# All params and sections below can be used in page front matter to override per-page.
#
# Example front matter:
# ---
# capitalize_titles: false
# hidden_from_home_page: true
# toc:
# enable: true
# math:
# enable: true
# comment:
# enable: false
# ---
#
# See: https://fixit.lruihao.cn/documentation/content-management/front-matter
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# whether to capitalize titles
capitalize_titles = true
# whether to show summary in plain text
summary_plainify = false
# whether to enable the author's avatar of the post
author_avatar = true
# whether to hide a page from home page
hidden_from_home_page = false
# whether to hide a page from search results
hidden_from_search = false
# whether to hide a page from related posts
hidden_from_related = false
# whether to hide a page from RSS, Atom and JSON feed
hidden_from_feed = false
# whether to enable twemoji
twemoji = false
# whether to enable lightgallery
# set to true, images in the content will be shown as the gallery if the image has a title, e.g. ![alt](src "title")
# set to "force", images in the content will be forced to shown as the gallery regardless of the image has a title or not, e.g. ![alt](src)
# [todo] change gallery engine in the future
lightgallery = false
# whether to enable the ruby extended syntax
ruby = true
# whether to enable the fraction extended syntax
fraction = true
# whether to enable the fontawesome extended syntax
fontawesome = true
# license info (HTML format is supported)
license = '<a rel="license external nofollow noopener noreferrer" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a>'
# Page style ["narrow", "normal", "wide", ...]
page_style = "normal"
# Auto Bookmark Support
# if true, save the reading progress when closing the page.
auto_bookmark = false
# whether to show the last modified time
show_lastmod = true
# whether to enable wordCount
word_count = true
# whether to enable readingTime
reading_time = true
# whether to enable instant.page
instant_page = false
# whether to enable collection list at the sidebar
collection_list = false
# whether to enable collection navigation at the end of the post
collection_navigation = false
# end of post flag
end_flag = ""
# Author Configuration
[params.author]
name = ""
email = ""
link = ""
avatar = ""
# Link config
[params.link]
# whether to add external Icon for external links automatically
external_icon = true
# External link guard config
[params.link.guard]
enable = false
# external link guard mode, available modes: ["modal", "redirect"]
# in "modal" mode, a dialog will pop up to ask for confirmation when users click external links
# in "redirect" mode, users will be redirected to an intermediate page before visiting external links
mode = "modal"
# allowed domains (exact host or parent domain) will skip confirmation
allow_domains = []
# Image config
# combined with Hugo's image processing option `imaging` for image optimisation
[params.image]
# cache remote images for better optimisations
cache_remote = false
# Image resizing and optimisation (may slow builds)
optimise = false
# A list of image file names or patterns to exclude from optimisation
# e.g. ["no-optimize.jpg", "*.tiff", "images/exclude-*.webp"]
black_list = []
# Code block wrapper config
# you can override the global config via Markdown attributes, for example:
# ```lang {mode="mac", max_shown_lines=5}
# code here
# ```
[params.codeblock]
# whether to enable the code block wrapper
wrapper = true
# code block mode
# available modes: ["classic", "mac", "simple", ...]
# if you set to custom value, you need to create a custom CSS for data-mode attribute
mode = "classic"
# additional classes for the code block wrapper
# e.g. "is-collapsed is-expanded line-nos-hidden line-wrapping"
wrapper_class = ""
# the maximum number of lines to show in the code block preview
max_shown_lines = 10
# whether to show shadow effect for code blocks, available values: ["always", "hover", "never"]
shadow = "never"
# whether to enable code copy button
copyable = true
# [classic] whether to enable code download button in the code block header
downloadable = false
# [classic] whether to enable code fullscreen button in the code block header
fullscreen = false
# [classic] whether to enable line numbers toggle button in the code block header
line_nos_toggler = true
# [classic] whether to enable toggle line wrapping button in the code block header
line_wrap_toggler = true
# [classic][Experimental] whether to enable code edit button in the code block header
editable = false
# JSON Viewer config
# See https://github.com/Lruihao/json-viewer-element
[params.json_viewer]
enable = true
expand_depth = 1
copyable = true
sort = false
boxed = true
# File tree config
# See https://fixit.lruihao.cn/documentation/content-management/shortcodes/extended/file-tree/
[params.filetree]
# the expand level of the tree (expand all: -1, collapse all: 0)
level = 1
# whether to append a trailing "/" to folder names
folder_slash = false
# list of file or folder names to ignore
ignore_list = []
# list of file or folder names to highlight
highlight_list = []
# Mermaid config
# See http://fixit.lruihao.cn/documentation/content-management/diagrams-support/mermaid/
[params.mermaid]
# whether to enable the Mermaid wrapper
# When enabled, Mermaid diagrams are wrapped with diagram tabs and actions:
# - pan/zoom (drag & ctrl+wheel)
# - reset view
# - download as SVG
wrapper = true
# Mermaid ESM module CDN source
# default is https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs
cdn = ""
# ZenUML ESM module CDN source
# default is empty, you can set it to a CDN source to enable ZenUML support
# e.g. https://cdn.jsdelivr.net/npm/@mermaid-js/mermaid-zenuml/dist/mermaid-zenuml.esm.min.mjs
zenuml = ""
# for values, see https://mermaid.js.org/config/theming.html#available-themes
themes = [
"default",
"dark"
]
# The security level for Mermaid diagrams
# optional values: ["strict", "loose", "antiscript", "sandbox"]
security_level = "loose"
# The appearance style for Mermaid diagrams
# optional values: ["classic", "handDrawn"]
look = "handDrawn"
# Specifies the font to be used in the rendered diagrams
font_family = ""
# Layout loaders from ESM module CDN sources (e.g., ELK layout engine)
# Example: ["https://cdn.jsdelivr.net/npm/@mermaid-js/layout-elk/dist/mermaid-layout-elk.esm.min.mjs"]
# this will enable additional layout options: ["elk", "elk.layered", "elk.stress", "elk.force", "elk.mrtree"]
layout_loaders = []
# default layout algorithm for rendering diagrams
# available options: "dagre" (default), "elk", "elk.layered", "elk.stress", "elk.force", "elk.mrtree"
# note: ELK layouts require layout_loaders to be configured first
layout = "dagre"
# Table of the contents config
[params.toc]
# whether to enable the table of the contents
enable = true
# whether to keep the static table of the contents in front of the post
keep_static = false
# whether to make the table of the contents in the sidebar automatically collapsed
auto = true
# position of TOC ["left", "right"]
position = "right"
# supersede `markup.tableOfContents` settings
ordered = false
start_level = 2
end_level = 6
# whether to decrease the H1 heading level in content
decrease_h1 = false
# Display a message at the beginning of an article to warn the reader that its content might be expired
[params.expiration_reminder]
enable = false
# display the reminder if the last modified time is more than 90 days ago
reminder = 90
# display warning if the last modified time is more than 180 days ago
warning = 180
# if the article expires, close the comment or not
close_comment = false
# page heading config
[params.heading]
# whether to capitalize automatic text of headings
capitalize = false
# must set `params.toc.ordered` to true
[params.heading.number]
# whether to enable auto heading numbering
enable = false
# only enable in main section pages (default is posts)
only_main_section = true
[params.heading.number.format]
h1 = "{title}"
h2 = "{h2} {title}"
h3 = "{h2}.{h3} {title}"
h4 = "{h2}.{h3}.{h4} {title}"
h5 = "{h2}.{h3}.{h4}.{h5} {title}"
h6 = "{h2}.{h3}.{h4}.{h5}.{h6} {title}"
# mathematical formulas configuration
# See http://fixit.lruihao.cn/documentation/content-management/markdown-syntax/extended/#formula
[params.math]
enable = true
# mathematical formulas rendering engines, optional values: ["katex", "mathjax"]
type = "katex"
# KaTeX server-side rendering (https://katex.org)
# KaTeX partial config: https://gohugo.io/functions/transform/tomath/#options
[params.math.katex]
# KaTeX extension copy-tex
copy_tex = true
throw_on_error = false
error_color = "#ff4949"
# custom macros map
# syntax: <macro> = <definition>
[params.math.katex.macros]
# "\\f" = "#1f(#2)" # usage: $\f{a}{b}$
# MathJax server-side rendering (https://www.mathjax.org)
# MathJax config: https://docs.mathjax.org/en/latest/options/index.html
[params.math.mathjax]
cdn = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
[params.math.mathjax.packages]
# "[+]" = ["configmacros"]
# custom macros map
# syntax: <macro> = <definition>
[params.math.mathjax.macros]
# bold = ["{\\bf #1}", 1] # usage: $\bold{math}$
[params.math.mathjax.loader]
load = [ "ui/safe" ]
[params.math.mathjax.loader.paths]
# custom = "https://cdn.jsdelivr.net/gh/sonoisa/XyJax-v3@3.0.1/build/"
# more loader config e.g source, dependencies, provides etc.
[params.math.mathjax.options]
enable_menu = true
# HTML tags that won't be searched for math
skip_html_tags = [
"script",
"noscript",
"style",
"textarea",
"pre",
"code",
"math",
"select",
"option",
"mjx-container"
]
# class that marks tags not to search
ignore_html_class = "mathjax_ignore"
# HTML tags that can appear within math
[params.math.mathjax.options.include_html_tags]
# "#comment" = ""
# br = "\n"
# wbr = ""
# Mapbox GL JS config (https://docs.mapbox.com/mapbox-gl-js)
[params.mapbox]
# access token of Mapbox GL JS
access_token = ""
# style for the light theme
light_style = "mapbox://styles/mapbox/light-v11"
# style for the dark theme
dark_style = "mapbox://styles/mapbox/dark-v11"
# whether to add NavigationControl
navigation = true
# whether to add GeolocateControl
geolocate = true
# whether to add ScaleControl
scale = true
# whether to add FullscreenControl
fullscreen = true
# PostChat AI config
# based on your posts to build a knowledge base, support AI summary, AI search, and AI Chatbot.
# get PostChat Key from my invitation link, thanks for your support!
# https://ai.zhheo.com/console/login?InviteID=85041330
[params.post_chat]
enable = false
key = ""
# how users initiate chats: ["iframe", "magic"]
user_mode = "iframe"
add_button = true
default_input = false
left = ""
bottom = ""
width = ""
height = ""
fill = ""
background_color = ""
upload_web = true
show_invite_link = true
user_title = ""
user_desc = ""
# dom container to be blacked out, e.g. [".aplayer"]
black_dom = []
# only for iframe mode
frame_width = "" # e.g. "375px"
frame_height = "" # e.g. "600px"
# only for magic mode
user_icon = ""
default_chat_questions = []
default_search_questions = []
hot_words = true
# Summary AI config
# See https://ai.zhheo.com/docs/summary.html
[params.post_summary]
enable = false
# if you set `params.post_chat.key`, you don't need to set `params.post_summary.key`
key = ""
title = ""
# themes options: ["", "simple", "yanzhi", "menghuan"]
theme = ""
post_url = ""
blacklist = ""
word_limit = 1000
typing_animate = true
beginning_text = ""
loading_text = true
# Podcast AI config
# See https://ai.zhheo.com/docs/podcast.html
[params.podcast]
enable = false
# Related content config (https://gohugo.io/content-management/related/)
[params.related]
enable = false
count = 5
# position of related content, optional values: ["aside", "footer"]
position = [
"aside",
"footer"
]
# Donate (Sponsor) settings
[params.reward]
enable = false
animation = false
# position relative to post footer, optional values: ["before", "after"]
position = "after"
# comment = "Buy me a coffee"
# display mode of QR code images, optional values: ["static", "fixed"], default: `static`
mode = "static"
[params.reward.ways]
# wechatpay = "/images/wechatpay.png"
# alipay = "/images/alipay.png"
# paypal = "/images/paypal.png"
# bitcoin = "/images/bitcoin.png"
# Post footer link config
[params.post_link]
# whether to show link to Raw Markdown content
markdown = true
# whether to show link to view source code (requires git_info.repo)
source = true
# whether to show link to edit the post (requires git_info.repo)
edit = true
# whether to show link to report issue (requires git_info.repo)
report = true
# open in editor protocol (e.g. "vscode", "trae" etc.), empty to disable
editor = "vscode"
# Social share links in post page
[params.share]
enable = true
Twitter = true
Facebook = true
Linkedin = false
Whatsapp = false
Pinterest = false
Tumblr = false
HackerNews = false
Reddit = false
VK = false
Buffer = false
Xing = false
Line = false
Instapaper = false
Pocket = false
Flipboard = false
Weibo = true
Myspace = false
Blogger = false
Baidu = false
Odnoklassniki = false
Evernote = false
Skype = false
Trello = false
Mix = false
# Comment config
[params.comment]
enable = false
# Artalk comment config (https://artalk.js.org/)
[params.comment.artalk]
enable = false
server = "https://yourdomain"
site = "默认站点"
# prefer remote (backend) configuration over local
# If true, remote config takes priority; if false (default), local config overrides remote
prefer_remote_conf = false
placeholder = ""
no_comment = ""
send_btn = ""
editor_travel = true
flat_mode = "auto"
# enable lightgallery support
lightgallery = false
locale = ""
emoticons = ""
nest_max = 2
nest_sort = "DATE_ASC" # ["DATE_ASC", "DATE_DESC", "VOTE_UP_DESC"]
vote = true
vote_down = false
ua_badge = true
list_sort = true
list_unread_highlight = false
img_upload = true
img_lazy_load = false # false | "native" | "data-src"
preview = true
version_check = true
# request timeout in milliseconds
req_timeout = 15000
# page view increment on comment list load
pv_add = true
# pagination config
[params.comment.artalk.pagination]
page_size = 20
read_more = true
auto_load = true
# height limit config
[params.comment.artalk.height_limit]
content = 300
children = 400
scrollable = false
# Disqus comment config (https://disqus.com)
[params.comment.disqus]
enable = false
# Disqus shortname to use Disqus in posts
shortname = ""
# Gitalk comment config (https://github.com/gitalk/gitalk)
[params.comment.gitalk]
enable = false
owner = ""
repo = ""
client_id = ""
client_secret = ""
# Valine comment config (https://github.com/xCss/Valine)
[params.comment.valine]
enable = false
app_id = ""
app_key = ""
placeholder = ""
avatar = "mp"
meta = [
'nick',
'mail',
'link'
]
required_fields = []
page_size = 10
lang = ""
visitor = true
record_ip = true
highlight = true
enable_qq = false
server_urls = ""
# emoji data file name, default is "google.yml"
# ["apple.yml", "google.yml", "facebook.yml", "twitter.yml"]
# located in "themes/FixIt/assets/lib/valine/emoji/" directory
# you can store your own data files in the same path under your project:
# "assets/lib/valine/emoji/"
emoji = ""
comment_count = true
# Waline comment config (https://waline.js.org)
[params.comment.waline]
enable = false
server_url = ""
pageview = false
emoji = [ "//unpkg.com/@waline/emojis@1.1.0/weibo" ]
meta = [
"nick",
"mail",
"link"
]
required_meta = []
login = "enable"
word_limit = 0
page_size = 10
image_uploader = false
highlighter = false
comment = false
tex_renderer = false
search = false
recaptcha_v3_key = ""
turnstile_key = ""
reaction = false
# Facebook comment config (https://developers.facebook.com/docs/plugins/comments)
[params.comment.facebook]
enable = false
width = "100%"
num_posts = 10
app_id = ""
language_code = ""
# Telegram comments config (https://comments.app)
[params.comment.telegram]
enable = false
site_id = ""
limit = 5
height = ""
color = ""
colorful = true
dislikes = false
outlined = false
# Commento comment config (https://commento.io)
[params.comment.commento]
enable = false
# Utterances comment config (https://utteranc.es)
[params.comment.utterances]
enable = false
# owner/repo
repo = ""
issue_term = "pathname"
label = ""
light_theme = "github-light"
dark_theme = "github-dark"
# Twikoo comment config (https://twikoo.js.org/)
[params.comment.twikoo]
enable = false
env_id = ""
region = ""
path = ""
visitor = true
comment_count = true
lang = ""
# enable lightgallery support
lightgallery = false
# enable Katex support
katex = false
# Giscus comments config
[params.comment.giscus]
enable = false
repo = ""
repo_id = ""
category = ""
category_id = ""
mapping = ""
# Or set it to your self-hosted domain
origin = "https://giscus.app"
strict = "0"
term = ""
reactions_enabled = "1"
emit_metadata = "0"
input_position = "bottom" # ["top", "bottom"]
lang = ""
light_theme = "light"
dark_theme = "dark"
lazy_load = true
# Third-party library config
[params.library]
[params.library.css]
# someCSS = "some.css"
# located in "assets/"
# Or
# someCSS = "https://cdn.example.com/some.css"
[params.library.js]
# someJavascript = "some.js"
# located in "assets/"
# Or
# someJavascript = "https://cdn.example.com/some.js"
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# public Git repository information only then enableGitInfo is true
[params.git_info]
# e.g. "https://github.com/hugo-fixit/docs"
repo = ""
branch = "main"
# the content directory path relative to the root of the repository
dir = "content"
# the issue template for reporting issue of the posts
# available template params: {title} {URL} {sourceURL}
issue_tpl = "title=[BUG]%20{title}&body=|Field|Value|%0A|-|-|%0A|Title|{title}|%0A|URL|{URL}|%0A|Filename|{sourceURL}|"
# App and PWA config
[params.app]
# whether to enable PWA support
pwa = false
# app name used for home screen and manifest (falls back to site title)
name = ""
# optional short name for the manifest (falls back to name)
short_name = ""
# whether to omit favicon resource links
no_favicon = false
# modern SVG favicon to use in place of older style .png and .ico files
svg_favicon = ""
# Safari mask icon color
mask_color = "#5bbad5"
# Windows v8-10 tile color
tile_color = "#da532c"
# Android browser theme color
[params.app.theme_color]
light = "#f6f8fa"
dark = "#151b23"
# Web app manifest icons (users should provide their own icon files)
[[params.app.icons]]
src = "/apple-touch-icon.png"
sizes = "180x180"
type = "image/png"
purpose = "any maskable"
[[params.app.icons]]
src = "/android-chrome-192x192.png"
sizes = "192x192"
type = "image/png"
[[params.app.icons]]
src = "/android-chrome-512x512.png"
sizes = "512x512"
type = "image/png"
# Search config
[params.search]
enable = true
# type of search engine ["fuse", "algolia", "pagefind", "cse"]
type = "fuse"
# max index length of the chunked content
content_length = 4000
# placeholder of the search bar
placeholder = ""
# max number of results length
max_result_length = 10
# snippet length of the result
snippet_length = 30
# HTML tag name of the highlight part in results
highlight_tag = "em"
# whether to use the absolute URL based on the baseURL in search index
absolute_url = false
# whether to enable anchorify for headings in search results
anchorify = true
[params.search.algolia]
index = ""
app_id = ""
search_key = ""
# https://fusejs.io/api/options.html
[params.search.fuse]
is_case_sensitive = false
min_match_char_length = 2
find_all_matches = false
location = 0
threshold = 0.3
distance = 100
ignore_location = false
use_extended_search = false
ignore_field_norm = false
# Pagefind search config (http://pagefind.app/)
[params.search.pagefind]
# Pagefind bundle and index directory
bundle_path = "pagefind/"
# debounce timeout in milliseconds, set to 0 to disable debounce
debounce_timeout_ms = 300
# whether to respect FixIt built-in search visibility rules
use_built_in_filters = true
# optional sort field: ["date", "title"]
sort_by = ""
# sort order for sort_by: ["asc", "desc"]
sort_order = "desc"
# Custom Search Engine (CSE)
[params.cse]
# search engine: ["google", "bing"]
engine = "google"
# search results page URL (layout: search)
results_page = "/search/"
# Google Custom Search Engine Context
# See: https://programmablesearchengine.google.com/
[params.cse.google]
cx = ""
# Bing Custom Search Engine Context (unverified)
# See: https://www.customsearch.ai/
[params.cse.bing]
cx = ""
# Header config
[params.header]
# desktop header mode ["sticky", "normal", "auto"]
desktop_mode = "sticky"
# mobile header mode ["sticky", "normal", "auto"]
mobile_mode = "auto"
# whether to enable header blur effect
blur = false
# Header title config
[params.header.title]
# URL of the logo
logo = ""
# title name
name = ""
# you can add extra information before the name (HTML format is supported), such as icons
pre = ""
# you can add extra information after the name (HTML format is supported), such as icons
post = ""
# whether to use typeit animation for title name
typeit = false
# Header subtitle config
[params.header.subtitle]
# subtitle name
name = ""
# whether to use typeit animation for subtitle name
typeit = false
# Breadcrumb config
[params.breadcrumb]
enable = false
sticky = false
show_home = false
separator = "/"
capitalize = true
# Post navigation config
[params.navigation]
# whether to show the post navigation in section pages scope
in_section = false
# whether to reverse the next/previous post navigation order
reverse = false
# Footer config
[params.footer]
enable = true
# whether to show copyright info
copyright = true
# whether to show the author
author = true
# site creation year
since = ""
# Public network security only in China (HTML format is supported)
gov = ""
# ICP info only in China (HTML format is supported)
icp = ""
# license info (HTML format is supported)
license = ""
# whether to show Hugo and theme info
[params.footer.powered]
enable = true
hugo_logo = false
theme_logo = false
# Site creation time
[params.footer.site_time]
enable = false
animate = true
icon = "fa-solid fa-heartbeat"
pre = ""
# e.g. "2021-12-18T16:15:22+08:00"
value = ""
# footer lines order, optional values: ["first", 0-5, "last"]
[params.footer.order]
powered = 0
copyright = 0
statistics = 0
visitor = 0
beian = 0
# Archives page config (all pages of posts type)
[params.archives]
# special amount of posts in archives page
paginate = 20
# date format (month and day)
date_format = "01-02"
# Section page config (all pages in section)
[params.section]
# special amount of pages in each section page
paginate = 20
# date format (month and day)
date_format = "01-02"
# Section feed config for RSS, Atom and JSON feed.
[params.section.feed]
# the number of posts to include in the feed. If set to -1, all posts.
limit = -1
# whether to show the full text content in feed.
full_text = false
# Term list (category or tag) page config
[params.list]
# special amount of posts in each list page
paginate = 20
# date format (month and day)
date_format = "01-02"
# Term list feed config for RSS, Atom and JSON feed.
[params.list.feed]
# the number of posts to include in the feed. If set to -1, all posts.
limit = -1
# whether to show the full text content in feed.
full_text = false
# recently updated pages config for archives, section and term list
[params.recently_updated]
archives = true
section = true
list = true
days = 30
max_count = 10
# TagCloud config for tags page
[params.tag_cloud]
enable = false
min = 14 # Minimum font size in px
max = 32 # Maximum font size in px
peak_count = 10 # Maximum count of posts per tag
orderby = "name" # Order of tags, optional values: ["name", "count"]
# Home page config
[params.home]
# Home page profile
[params.home.profile]
enable = false
# whether to show profile and content only in the first home page
only_first_page = false
# Gravatar email for preferred avatar in home page
gravatar_email = ""
# URL of avatar shown in home page, default is author's avatar
avatar_url = ""
# identifier of avatar menu link
avatar_menu = ""
# title shown in home page (HTML format is supported)
title = ""
# subtitle shown in home page (HTML format is supported)
subtitle = ""
# whether to use typeit animation for subtitle
typeit = true
# whether to show social links
social = true
# disclaimer (HTML format is supported)
disclaimer = ""
# Home page posts
[params.home.posts]
enable = true
# special amount of posts in each home posts page
paginate = 6
# whether to show featured image preview in home page post list
image_preview = true
# Social config about the author
[params.social]
GitHub = ""
Linkedin = ""
Twitter = ""
Instagram = ""
Facebook = ""
Telegram = ""
Medium = ""
Gitlab = ""
Youtubelegacy = ""
Youtubecustom = ""
Youtubechannel = ""
Tumblr = ""
Quora = ""
Keybase = ""
Pinterest = ""
Reddit = ""
Codepen = ""
FreeCodeCamp = ""
Bitbucket = ""
Stackoverflow = ""
Weibo = ""
Odnoklassniki = ""
VK = ""
Flickr = ""
Xing = ""
Snapchat = ""
Soundcloud = ""
Spotify = ""
Bandcamp = ""
Paypal = ""
Fivehundredpx = ""
Mix = ""
Goodreads = ""
Lastfm = ""
Foursquare = ""
Hackernews = ""
Kickstarter = ""
Patreon = ""
Steam = ""
Twitch = ""
Strava = ""
Skype = ""
Whatsapp = ""
Zhihu = ""
Douban = ""
Angellist = ""
Slidershare = ""
Jsfiddle = ""
Deviantart = ""
Behance = ""
Dribbble = ""
Wordpress = ""
Vine = ""
Googlescholar = ""
Researchgate = ""
Mastodon = ""
Thingiverse = ""
Devto = ""
Gitea = ""
XMPP = ""
Matrix = ""
Bilibili = ""
ORCID = ""
Liberapay = ""
Ko-Fi = ""
BuyMeaCoffee = ""
Linktree = ""
QQ = ""
QQGroup = ""
Diaspora = ""
CSDN = ""
Discord = ""
DiscordInvite = ""
Lichess = ""
Pleroma = ""
Kaggle = ""
MediaWiki = ""
Plume = ""
HackTheBox = ""
RootMe = ""
Feishu = ""
TryHackMe = ""
Douyin = ""
TikTok = ""
Credly = ""
Bluesky = ""
Phone = ""
Email = ""
RSS = true
# custom social links like the following
# [params.social.twitter]
# id = "lruihao"
# weight = 3
# prefix = "https://x.com/"
# title = "X"
# [params.social.twitter.icon]
# class = "fa-brands fa-x-twitter"
# TypeIt config
[params.typeit]
# typing speed between each step (measured in milliseconds)
speed = 100
# blinking speed of the cursor (measured in milliseconds)
cursor_speed = 1000
# character used for the cursor (HTML format is supported)
cursor_char = "|"
# cursor duration after typing finishing (measured in milliseconds, "-1" means unlimited)
duration = -1
# whether your strings will continuously loop after completing
# [fixme] There is a bug when printing in groups
loop = false
# Admonitions custom config
# See https://fixit.lruihao.cn/documentation/content-management/shortcodes/extended/admonition/#custom-admonitions
# syntax: <type> = <icon>
[params.admonition]
# ban = "fa-solid fa-ban"
# Task lists custom config
# See https://fixit.lruihao.cn/documentation/content-management/advanced/#custom-task-lists
# syntax: <sign> = <icon>
[params.task_list]
# tip = "fa-regular fa-lightbulb"
# version shortcode config
[params.repo_version]
# project name
name = "FixIt"
# url prefix for the release tag
url = "https://github.com/hugo-fixit/FixIt/releases/tag/v"
# PanguJS config
[params.pangu]
# for Chinese writing
enable = false
selector = "article"
# Watermark config
# detail config see https://github.com/Lruihao/watermark#readme
[params.watermark]
enable = false
# watermark's text (HTML format is supported)
content = ""
# watermark's transparency
opacity = 0.1
# watermark's width. unit: px
width = 150
# watermark's height. unit: px
height = 20
# row spacing of watermarks. unit: px
row_spacing = 60
# col spacing of watermarks. unit: px
col_spacing = 30
# watermark's tangent angle. unit: deg
rotate = 15
# watermark's fontSize. unit: rem
font_size = 0.85
# watermark's fontFamily
font_family = "inherit"
# Busuanzi count
[params.busuanzi]
# whether to enable busuanzi count
enable = false
# busuanzi count core script source. Default is https://vercount.one/js
source = "https://vercount.one/js"
# whether to show the site views
site_views = true
# whether to show the page views
page_views = true
# Site verification code config for Google/Bing/Yandex/Pinterest/Baidu/360/Sogou
[params.verification]
google = ""
bing = ""
yandex = ""
pinterest = ""
baidu = ""
so = ""
sogou = ""
# Site SEO config
[params.seo]
# default cover image for the site
cover = ""
# thumbnail URL
thumbnail_url = ""
# Page SEO images (frontmatter-overridable)
images = []
# Publisher info (frontmatter-overridable)
[params.seo.publisher]
name = ""
logo_url = ""
# Analytics config
[params.analytics]
enable = false
# Google Analytics
[params.analytics.google]
id = ""
# whether to anonymize IP
anonymize_ip = true
# Fathom Analytics
[params.analytics.fathom]
id = ""
# server url for your tracker if you're self hosting
server = ""
# Baidu Analytics
[params.analytics.baidu]
id = ""
# Umami Analytics
[params.analytics.umami]
data_website_id = ""
src = ""
data_host_url = ""
data_domains = ""
# Plausible Analytics
[params.analytics.plausible]
data_domain = ""
src = ""
# Cloudflare Analytics
[params.analytics.cloudflare]
token = ""
# Splitbee Analytics
[params.analytics.splitbee]
enable = false
# no cookie mode
no_cookie = true
# respect the do not track setting of the browser
do_not_track = true
# token(optional), more info on https://splitbee.io/docs/embed-the-script
data_token = ""
# Cookie consent config
[params.cookieconsent]
enable = true
# text strings used for Cookie consent banner
[params.cookieconsent.content]
message = ""
dismiss = ""
link = ""
# CDN config for third-party library files
[params.cdn]
# CDN data file name, disabled by default ["jsdelivr.yml", "unpkg.yml", ...]
# located in "themes/FixIt/assets/data/cdn/" directory
# you can store your own data files in the same path under your project: "assets/data/cdn/"
data = ""
# Compatibility config
[params.compatibility]
# whether to use Polyfill.io on cdnjs to be compatible with older browsers
# https://cdnjs.cloudflare.com/polyfill
polyfill = false
# whether to use object-fit-images to be compatible with older browsers
object_fit = false
# GitHub banner in the top-right or top-left corner
[params.github_corner]
enable = false
permalink = "https://github.com/hugo-fixit/FixIt"
title = "View source on GitHub"
position = "right" # ["left", "right"]
# Gravatar config
[params.gravatar]
# Depends on the author's email, if the author's email is not set, the local avatar will be used
enable = false
# Gravatar host, default: "www.gravatar.com"
host = "www.gravatar.com" # ["cravatar.cn", "gravatar.loli.net", ...]
style = "" # ["", "mp", "identicon", "monsterid", "wavatar", "retro", "blank", "robohash"]
# Back to top
[params.back_to_top]
enable = true
# whether to show the scroll percent indicator around the back to top button
scrollpercent = false
# Reading progress bar
[params.reading_progress]
enable = false
# available values: ["left", "right"]
start = "left"
# available values: ["top", "bottom"]
position = "top"
reversed = false
light = ""
dark = ""
height = "2px"
# Progress bar in the top during page loading.
# for more information: https://github.com/CodeByZach/pace
[params.pace]
enable = false
# all available colors:
# ["black", "blue", "green", "orange", "pink", "purple", "red", "silver", "white", "yellow"]
color = "blue"
# all available themes:
# ["barber-shop", "big-counter", "bounce", "center-atom", "center-circle", "center-radar", "center-simple",
# "corner-indicator", "fill-left", "flash", "flat-top", "loading-bar", "mac-osx", "material", "minimal"]
theme = "minimal"
# Global Feed config for RSS, Atom and JSON feed.
[params.feed]
# the number of posts to include in the feed. If set to -1, all posts.
limit = 10
# whether to show the full text content in feed.
full_text = true
# Site Challenge for Follow: https://follow.is/
[params.feed.follow]
feed_id = ""
user_id = ""
# Taxonomy icons config
# works with [taxonomies]. Configure [taxonomies] first, otherwise taxonomy icons will not take effect.
[params.taxonomy_icons]
# syntax: <taxonomy> = [<title icon>, <card icon>, <term title icon>]
# example:
# topic = [
# "fa-solid fa-book-bookmark",
# "fa-solid fa-book",
# "fa-solid fa-book-open"
# ]
# Print config
[params.print]
# whether to expand all admonitions before printing
expand_admonition = true
# whether to expand all code blocks and code tabs before printing
expand_code = true
# whether to expand all details elements before printing
expand_details = true
# whether to expand all file trees before printing
expand_file_tree = false
# Custom partials config
# custom partials must be stored in the /layouts/_partials/ directory.
# depends on open custom blocks https://fixit.lruihao.cn/references/blocks/
[params.custom_partials]
head = []
menu_desktop = []
menu_mobile = []
profile = []
aside = []
comment = []
footer = []
widgets = []
assets = []
post_toc_before = []
post_toc_after = []
post_content_before = []
post_content_after = []
post_footer_before = []
post_footer_after = []
# SCSS variables customization via config
# Leave empty to use the theme default value (defined in scss-vars.html).
# Note: Color values must use hex format (e.g. "#ff0000"), CSS named colors (e.g. "red") are not supported.
[params.appearance]
# Global Typography
global_font_family = ""
global_font_size = ""
global_font_weight = ""
global_line_height = ""
global_border_radius = ""
# Global Colors
global_background_color = ""
global_background_color_dark = ""
global_font_color = ""
global_font_color_dark = ""
global_font_secondary_color = ""
global_font_secondary_color_dark = ""
global_link_color = ""
global_link_color_dark = ""
global_link_hover_color = ""
global_link_hover_color_dark = ""
global_border_color = ""
global_border_color_dark = ""
# Scrollbar
scrollbar_color = ""
scrollbar_hover_color = ""
# Selection
selection_color = ""
selection_color_dark = ""
# Header
header_background_color = ""
header_background_color_dark = ""
header_title_font_size = ""
header_title_font_family = ""
menu_active_color = ""
menu_active_color_dark = ""
menu_border_color = ""
menu_border_color_dark = ""
search_background_color = ""
search_background_color_dark = ""
# Tag Cloud
tag_cloud_start = ""
tag_cloud_start_dark = ""
tag_cloud_end = ""
tag_cloud_end_dark = ""
# Single Content
toc_title_font_size = ""
toc_content_font_size = ""
collection_title_font_size = ""
collection_list_font_size = ""
related_title_font_size = ""
related_list_font_size = ""
single_link_color = ""
single_link_color_dark = ""
single_link_hover_color = ""
single_link_hover_color_dark = ""
# Table
table_background_color = ""
table_background_color_dark = ""
table_thead_color = ""
table_thead_color_dark = ""
table_border_color = ""
table_border_color_dark = ""
# Blockquote
blockquote_color = ""
blockquote_color_dark = ""
# Reward
reward_color = ""
reward_color_dark = ""
reward_img_width = ""
# Pagination
pagination_link_color = ""
pagination_link_color_dark = ""
pagination_link_hover_color = ""
pagination_link_hover_color_dark = ""
# Code
code_color = ""
code_color_dark = ""
code_font_family = ""
code_header_color = ""
code_header_color_dark = ""
code_header_background_color = ""
code_header_background_color_dark = ""
code_background_color = ""
code_background_color_dark = ""
code_error_color = ""
code_highlight_color = ""
code_highlight_color_dark = ""
code_font_size = ""
code_block_font_size = ""
# GitHub Corners
github_corner_color = ""
github_corner_color_dark = ""
github_corner_fill = ""
github_corner_fill_dark = ""
# Developer options
# select the scope named `public_repo` to generate personal access token,
# configure with environment variable `HUGO_PARAMS_GHTOKEN=xxx`, see https://gohugo.io/functions/os/getenv/#examples
[params.dev]
enable = false
# check for updates
c4u = false