Full Code of welpo/tabi for AI

main 35098abea31b cached
296 files
1.6 MB
501.4k tokens
264 symbols
1 requests
Download .txt
Showing preview only (1,788K chars total). Download the full file or copy to clipboard to get everything.
Repository: welpo/tabi
Branch: main
Commit: 35098abea31b
Files: 296
Total size: 1.6 MB

Directory structure:
gitextract_a5dd3pfx/

├── .githooks/
│   ├── commit-msg
│   └── pre-commit
├── .github/
│   ├── CODEOWNERS
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 2_bug_report.yml
│   │   ├── 3_feature_request.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── renovate.json
│   └── workflows/
│       ├── cd.yml
│       ├── ci.yml
│       ├── git-sumi.yml
│       └── upgrade-deps.yml
├── .gitignore
├── .gitmodules
├── .prettierignore
├── .prettierrc.toml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── cliff.toml
├── config.toml
├── content/
│   ├── _index.ar.md
│   ├── _index.ca.md
│   ├── _index.es.md
│   ├── _index.md
│   ├── archive/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   └── _index.md
│   ├── blog/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   ├── _index.md
│   │   ├── comments/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── custom-font-subset/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── customise-tabi/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── faq-languages/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── javascript/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── markdown/
│   │   │   ├── index.ar.md
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── mastering-tabi-settings/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── security/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── series/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── shortcodes/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   └── toc/
│   │       ├── index.ca.md
│   │       ├── index.es.md
│   │       └── index.md
│   ├── pages/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   ├── _index.md
│   │   ├── about/
│   │   │   ├── index.ar.md
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   └── privacy/
│   │       ├── index.ar.md
│   │       ├── index.ca.md
│   │       ├── index.es.md
│   │       └── index.md
│   └── projects/
│       ├── _index.ar.md
│       ├── _index.ca.md
│       ├── _index.es.md
│       ├── _index.md
│       ├── bunbu/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── doteki/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── git-sumi/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── iine/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── nani/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── nemui/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── ramu/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── shuku/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── streaming-royalties-calculator/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── tabi/
│       │   ├── index.ar.md
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       └── zutsu/
│           ├── index.ca.md
│           ├── index.es.md
│           └── index.md
├── i18n/
│   ├── ar.toml
│   ├── ca.toml
│   ├── de.toml
│   ├── en.toml
│   ├── es.toml
│   ├── et.toml
│   ├── fa.toml
│   ├── fi.toml
│   ├── fr.toml
│   ├── hi.toml
│   ├── it.toml
│   ├── ja.toml
│   ├── ko.toml
│   ├── nl.toml
│   ├── or.toml
│   ├── pt-BR.toml
│   ├── pt-PT.toml
│   ├── ru.toml
│   ├── uk.toml
│   ├── zh-Hans.toml
│   └── zh-Hant.toml
├── sass/
│   ├── main.scss
│   ├── parts/
│   │   ├── _admonitions.scss
│   │   ├── _archive.scss
│   │   ├── _aside.scss
│   │   ├── _cards.scss
│   │   ├── _code.scss
│   │   ├── _comments.scss
│   │   ├── _footer.scss
│   │   ├── _header-anchor.scss
│   │   ├── _header.scss
│   │   ├── _home-banner.scss
│   │   ├── _iine.scss
│   │   ├── _image-hover.scss
│   │   ├── _image-toggler.scss
│   │   ├── _image.scss
│   │   ├── _misc.scss
│   │   ├── _multilingual_quote.scss
│   │   ├── _pagination.scss
│   │   ├── _posts_list.scss
│   │   ├── _quick_navigation_buttons.scss
│   │   ├── _search.scss
│   │   ├── _spoiler.scss
│   │   ├── _syntax_theme.scss
│   │   ├── _table.scss
│   │   ├── _tags.scss
│   │   ├── _theme-switch.scss
│   │   ├── _webmention.scss
│   │   └── _zola-error.scss
│   └── skins/
│       ├── blue.scss
│       ├── evangelion.scss
│       ├── indigo_ingot.scss
│       ├── lavender.scss
│       ├── lowcontrast_orange.scss
│       ├── lowcontrast_peach.scss
│       ├── lowcontrast_pink.scss
│       ├── mint.scss
│       ├── monochrome.scss
│       ├── red.scss
│       ├── sakura.scss
│       └── teal.scss
├── scripts/
│   └── upgrade-deps
├── static/
│   ├── custom_subset.css
│   ├── feed_style.xsl
│   ├── inter_subset_en.css
│   ├── inter_subset_es.css
│   ├── isso.css
│   ├── js/
│   │   ├── codeBlockNameLinks.js
│   │   ├── copyCodeToClipboard.js
│   │   ├── decodeMail.js
│   │   ├── filterCards.js
│   │   ├── footnoteBacklinks.js
│   │   ├── giscus.js
│   │   ├── hyvortalk.js
│   │   ├── initializePlausible.js
│   │   ├── initializeTheme.js
│   │   ├── isso.js
│   │   ├── loadComments.js
│   │   ├── lunr/
│   │   │   ├── lunr.da.js
│   │   │   ├── lunr.de.js
│   │   │   ├── lunr.du.js
│   │   │   ├── lunr.es.js
│   │   │   ├── lunr.fi.js
│   │   │   ├── lunr.fr.js
│   │   │   ├── lunr.hu.js
│   │   │   ├── lunr.it.js
│   │   │   ├── lunr.ja.js
│   │   │   ├── lunr.no.js
│   │   │   ├── lunr.pt.js
│   │   │   ├── lunr.ro.js
│   │   │   ├── lunr.ru.js
│   │   │   ├── lunr.sv.js
│   │   │   ├── lunr.tr.js
│   │   │   ├── lunr.zh.js
│   │   │   ├── lunrStemmerSupport.js
│   │   │   └── tinyseg.js
│   │   ├── searchElasticlunr.js
│   │   ├── sortTable.js
│   │   ├── themeSwitcher.js
│   │   ├── utterances.js
│   │   └── webmention.js
│   ├── no_js.css
│   ├── sitemap_style.xsl
│   └── social_icons/
│       └── LICENSE
├── sumi.toml
├── templates/
│   ├── 404.html
│   ├── anchor-link.html
│   ├── archive.html
│   ├── atom.xml
│   ├── base.html
│   ├── cards.html
│   ├── index.html
│   ├── info-page.html
│   ├── internal/
│   │   └── alias.html
│   ├── macros/
│   │   ├── feed_utils.html
│   │   ├── format_date.html
│   │   ├── list_posts.html
│   │   ├── page_header.html
│   │   ├── rel_attributes.html
│   │   ├── series_page.html
│   │   ├── settings.html
│   │   ├── table_of_contents.html
│   │   ├── target_attribute.html
│   │   └── translate.html
│   ├── page.html
│   ├── partials/
│   │   ├── analytics.html
│   │   ├── cards_pages.html
│   │   ├── comments.html
│   │   ├── content_security_policy.html
│   │   ├── copyright.html
│   │   ├── extra_features.html
│   │   ├── filter_card_tags.html
│   │   ├── footer.html
│   │   ├── hcard.html
│   │   ├── hcard_small.html
│   │   ├── header.html
│   │   ├── history_url.html
│   │   ├── home_banner.html
│   │   ├── iine_button.html
│   │   ├── language_switcher.html
│   │   ├── main_page_posts_list.html
│   │   ├── main_page_projects_list.html
│   │   ├── multilingual_tags.html
│   │   ├── nav.html
│   │   ├── paginate.html
│   │   ├── search_modal.html
│   │   ├── social_media_images.html
│   │   ├── theme_switcher.html
│   │   ├── title.html
│   │   └── webmentions.html
│   ├── section.html
│   ├── series.html
│   ├── shortcodes/
│   │   ├── add_src_to_code_block.html
│   │   ├── admonition.html
│   │   ├── aside.html
│   │   ├── dimmable_image.html
│   │   ├── dual_theme_image.html
│   │   ├── force_text_direction.html
│   │   ├── full_width_image.html
│   │   ├── iine.html
│   │   ├── image_hover.html
│   │   ├── image_toggler.html
│   │   ├── invertible_image.html
│   │   ├── mermaid.html
│   │   ├── multilingual_quote.html
│   │   ├── references.html
│   │   ├── remote_text.html
│   │   ├── spoiler.html
│   │   ├── toc.html
│   │   └── wide_container.html
│   ├── sitemap.xml
│   ├── tags/
│   │   ├── list.html
│   │   └── single.html
│   ├── taxonomy_list.html
│   └── taxonomy_single.html
└── theme.toml

================================================
FILE CONTENTS
================================================

================================================
FILE: .githooks/commit-msg
================================================
#!/usr/bin/env bash

# Commit-msg hook generated by git-sumi.
# For more information and documentation, visit: https://sumi.rs

set -e  # Exit on any error.

# Get the current branch name.
current_branch=$(git rev-parse --abbrev-ref HEAD)

# Check if the current branch is 'main'.
if [ "$current_branch" != "main" ]; then
    exit 0  # Exit successfully without running git-sumi.
fi

# Check if git-sumi is installed.
if ! command -v git-sumi &> /dev/null
then
    echo "git-sumi is not installed. Please install it. See https://sumi.rs for instructions."
    echo "Alternatively, edit or remove the commit-msg hook in .git/hooks/commit-msg."
    exit 1
fi

# Run git-sumi on the commit message if on the 'main' branch.
git-sumi -- "$(cat $1)"  # Exit with error if linting fails.


================================================
FILE: .githooks/pre-commit
================================================
#!/usr/bin/env bash

#################################################################################
# This script is run by git before a commit is made.                            #
# To use it, copy it to .git/hooks/pre-commit and make it executable.           #
# Alternatively, run the following command from the root of the repo:           #
# git config core.hooksPath .githooks                                           #
#                                                                               #
#                                  FEATURES                                     #
# Updates the "updated" field in the front matter of .md files.                 #
# Compresses PNG files with either oxipng or optipng if available.              #
# Runs subset_font if config.toml has been modified.                            #
#                                                                               #
# Stops you from commiting:                                                     #
# - a draft .md file                                                            #
# - a file with a "TODO"                                                        #
# - a JS file without a minified version                                        #
# - a minified JS file that isn't as small as it can be                         #
# - a config.toml and theme.toml with different amounts of lines in [extra]     #
#################################################################################

# Function to exit the script with an error message.
function error_exit() {
    echo "ERROR: $1" >&2
    exit "${2:-1}"
}

# Function to extract the date from the front matter.
function extract_date() {
    local file="$1"
    local field="$2"
    grep -m 1 "^$field =" "$file" | sed -e "s/$field = //" -e 's/ *$//'
}

# Function to check if the .md file is a draft.
function is_draft() {
    local file="$1"
    awk '/^\+\+\+$/,/^\+\+\+$/ { if(/draft = true/) exit 0 } END { exit 1 }' "$file"
}

# Check if the file contains "TODO".
function contains_todo() {
    local file="$1"
    grep -q "TODO" "$file"
}

# Check for changes outside of the front matter.
function has_body_changes() {
    local file="$1"
    local in_front_matter=1
    local triple_plus_count=0

    diff_output=$(git diff --unified=999 --cached --output-indicator-new='%' --output-indicator-old='&' "$file")

    while read -r line; do
        if [[ "$line" =~ ^\+\+\+$ ]]; then
            triple_plus_count=$((triple_plus_count + 1))
            if [[ $triple_plus_count -eq 2 ]]; then
                in_front_matter=0
            fi
        elif [[ $in_front_matter -eq 0 ]]; then
            if [[ "$line" =~ ^[\%\&] ]]; then
                return 0
            fi
        fi
    done <<< "$diff_output"
    return 1
}

# Function to update the social media card for a post or section.
function generate_and_commit_card {
    local file=$1
    social_media_card=$(social-cards-zola -o static/img/social_cards -b http://127.0.0.1:1111 -u -p -i "$file") || {
        echo "Failed to update social media card for $file"
        exit 1
    }

    git add "$social_media_card" || {
        echo "Failed to add social media card $social_media_card"
        exit 1
    }

    git add "$file" || {
        echo "Failed to add $file"
        exit 1
    }
}

export -f generate_and_commit_card

function has_minified_version() {
    local file="$1"
    local extension="${file##*.}"
    local minified_file="${file%.*}.min.$extension"
    [ -f "$minified_file" ]
}

function is_minified() {
    local file="$1"

    # Check if terser and uglifyjs are installed.
    if ! command -v terser &> /dev/null || ! command -v uglifyjs &> /dev/null; then
        echo "Either terser or uglifyjs is not installed. Skipping minification check."
        return 0
    fi

    # Original file size.
    local original_size=$(wc -c < "$file")

    # File size after compression with terser.
    local terser_size=$(terser --compress --mangle -- "$file" | wc -c)

    # File size after compression with uglifyjs.
    local uglifyjs_size=$(uglifyjs --compress --mangle -- "$file" | wc -c)

    # Check if the file is already as small as or smaller than both minified versions.
    if (( original_size <= terser_size && original_size <= uglifyjs_size )); then
        return 0
    fi

    # If the file isn't as small as it can be, suggest the better compressor in the error message
    if (( terser_size < uglifyjs_size )); then
        error_exit "Minified JS file $file isn't as small as it can be! Try using terser for better compression."
    else
        error_exit "Minified JS file $file isn't as small as it can be! Try using uglifyjs for better compression."
    fi
}

# Check if the script is being run from the root of the repo.
if [[ ! $(git rev-parse --show-toplevel) == $(pwd) ]]; then
    error_exit "This script must be run from the root of the repo."
fi

# Check if oxipng is installed.
png_compressor=""
if command -v oxipng &> /dev/null; then
    png_compressor="oxipng -o max"
elif command -v optipng &> /dev/null; then
    png_compressor="optipng -o 7"
fi

##################################################################
# Compress PNG files with either oxipng or optipng if available. #
# Update the "updated" field in the front matter of .md files.   #
#          https://osc.garden/blog/zola-date-git-hook/           #
# Ensure the [extra] section from config.toml and theme.toml     #
# have the same amount of lines.                                 #
# Ensure JavaScript files are minified.                          #
##################################################################

# Get the newly added and modified files, but not deleted files.
mapfile -t all_changed_files < <(git diff --cached --name-only --diff-filter=d)

script_name=$(basename "$0")
# Loop through all newly added or modified files.
for file in "${all_changed_files[@]}"; do
    file_name=$(basename "$file")

    # Ignore this script and the changelog.
    if [[ "$file_name" == "$script_name" ]] || [[ "$file_name" == "CHANGELOG.md" ]]; then
        continue
    fi

    # If the file is a PNG and png_compressor is set, compress it and add it to the commit.
    if [[ "$file" == *.png ]] && [[ -n "$png_compressor" ]]; then
        $png_compressor "$file" || error_exit "Failed to compress PNG file $file"
        git add --force "$file" || error_exit "Failed to add compressed PNG file $file"
        continue
    fi

    # If the file contains "TODO", abort the commit.
    if contains_todo "$file"; then
        error_exit "File $file contains TODO! Remove or complete the TODO before committing."
    fi

    # If the file is a JS file and it doesn't have a minified version, abort the commit.
    if [[ "$file" == *.js ]] && [[ "$file" != *.min.js ]] && ! has_minified_version "$file"; then
        error_exit "JS file $file doesn't have a minified version!"
    fi

    # If the file is a minified JS file and it isn't as small as it can be, abort the commit.
    # Error message shows which minifier is best for the file.
    if [[ "$file" == *.min.js ]]; then
        is_minified "$file"
    fi

    # Ensure the [extra] section from config.toml and theme.toml have the same amount of lines.
    if [[ "$file" == "config.toml" ]] || [[ "$file" == "theme.toml" ]]; then
        # Get the line number where [extra] starts in config.toml.
        extra_line_config=$(grep -n "^\[extra\]$" "config.toml" | cut -d: -f1)

        # Get the line number where [extra] starts in theme.toml.
        extra_line_theme=$(grep -n "^\[extra\]$" "theme.toml" | cut -d: -f1)

        # Get the number of lines in the [extra] section in config.toml.
        extra_lines_config=$(tail -n +"$extra_line_config" "config.toml" | wc -l)

        # Get the number of lines in the [extra] section in theme.toml.
        extra_lines_theme=$(tail -n +"$extra_line_theme" "theme.toml" | wc -l)

        # Abort the commit if the number of lines in the [extra] section don't match.
        if [[ "$extra_lines_config" -ne "$extra_lines_theme" ]]; then
            error_exit "The [extra] section in config.toml and theme.toml don't have the same amount of lines!"
        fi
    fi
done

# Get the modified .md to update the "updated" field in the front matter.
modified_md_files=$(git diff --cached --name-only --diff-filter=M | grep -E '\.md$' | grep -v '_index.md$')

# Loop through each modified .md file.
for file in $modified_md_files; do
echo $file
    # If the file is an .md file and it's a draft, abort the commit.
    if is_draft "$file"; then
        error_exit "Draft file $file is being committed!"
    fi

    # If changes are only in the front matter, skip the file.
    if ! has_body_changes "$file"; then
        continue
    fi

    # Modify the "updated" date, if necessary.
    # Get the last modified date from the filesystem.
    last_modified_date=$(date -r "$file" +'%Y-%m-%d')

    # Extract the "date" field from the front matter.
    date_value=$(extract_date "$file" "date")

    # Skip the file if the last modified date is the same as the "date" field.
    if [[ "$last_modified_date" == "$date_value" ]]; then
        continue
    fi

    # Update the "updated" field with the last modified date.
    # If the "updated" field doesn't exist, create it below the "date" field.
    if ! awk -v date_line="$last_modified_date" 'BEGIN{FS=OFS=" = "; first = 1} {
        if (/^date =/ && first) {
            print; getline;
            if (!/^updated =/) print "updated" OFS date_line;
            first=0;
        }
        if (/^updated =/ && !first) gsub(/[^ ]*$/, date_line, $2);
        print;
    }' "$file" > "${file}.tmp"
    then
        error_exit "Failed to process $file with AWK"
    fi

    mv "${file}.tmp" "$file" || error_exit "Failed to overwrite $file with updated content"

    # Stage the changes.
    git add "$file"

done

# Use `social-cards-zola` to create/update the social media card for Markdown files.
# See https://osc.garden/blog/automating-social-media-cards-zola/ for context.
# Use parallel to create the social media cards in parallel and commit them.
# echo "$modified_md_files" | parallel -j 8 generate_and_commit_card

#########################################################
# Run subset_font if config.toml has been modified.     #
# https://welpo.github.io/tabi/blog/custom-font-subset/ #
#########################################################
if git diff --cached --name-only | grep -q "config.toml"; then
    echo "config.toml modified. Attempting to run subset_font…"

    # Check if subset_font is available and exit early if not.
    if ! command -v subset_font &> /dev/null; then
        echo "subset_font command not found. Skipping this step."
        exit 0
    fi

    # Call the subset_font script.
    ~/bin/subset_font -c config.toml -f static/fonts/Inter4.woff2 -o static/

    # Add the generated subset.css file to the commit.
    git add static/custom_subset.css
fi


================================================
FILE: .github/CODEOWNERS
================================================
* @welpo
i18n/ar.toml @TheAwiteb


================================================
FILE: .github/FUNDING.yml
================================================
github: welpo


================================================
FILE: .github/ISSUE_TEMPLATE/2_bug_report.yml
================================================
name: "🐛 Bug report"
description: "Did you run into an issue while using tabi?"
labels: ["bug"]
body:
- type: textarea
  attributes:
      label: "System information"
      description: |
          Please provide the following information:
          - Zola version: Run `zola --version`
          - tabi version or commit hash
      placeholder: |
          Zola version: 
          tabi version or commit: 
  validations:
      required: true

- type: textarea
  attributes:
      label: "Expected behaviour"
      description: "Tell us what should have happened."
      placeholder: "Describe what you expected tabi to do…"
  validations:
      required: true

- type: textarea
  attributes:
      label: "Actual behaviour"
      description: "Tell us what happens instead of the expected behavior."
      placeholder: "Describe what actually happened…"
  validations:
      required: true

- type: textarea
  attributes:
      label: "Steps to reproduce"
      description: "Please provide detailed steps to reproduce the issue."
      placeholder: |
          1. Set up `config.toml` with these settings: …
          2. Create content with this structure: …
          3. Run Zola with these arguments: …
          4. See the following error: …
  validations:
      required: true

- type: textarea
  attributes:
      label: "Additional context"
      description: >
          Please provide any relevant configuration files, error messages, or screenshots that might help us understand the issue.
          You can drag and drop files here to attach them.
  validations:
      required: false

- type: checkboxes
  attributes:
      label: "Final checklist"
      options:
          - label: "I've checked that the issue isn't already reported."
            required: true
          - label: "I've tested with the latest version of tabi to check if the issue has already been fixed."
            required: true


================================================
FILE: .github/ISSUE_TEMPLATE/3_feature_request.yml
================================================
name: "✨ Feature request"
description: "Suggest an idea for tabi"
labels: ["enhancement"]
body:
- type: textarea
  attributes:
      label: "Summary and motivation"
      description: "Briefly describe the feature and why it would be valuable for tabi users."
      placeholder: |
          Describe:
          - What the feature is
          - Why it would be useful
          - Any examples from other projects
  validations:
      required: true

- type: textarea
  attributes:
      label: "Implementation details"
      description: "Share any ideas you have about how this could be implemented."
      placeholder: "Technical suggestions, potential approaches, or specific requirements."
  validations:
      required: false

- type: checkboxes
  attributes:
      label: "Checklist"
      options:
          - label: "I've searched existing issues to make sure this feature hasn't already been requested."
            required: true
          - label: "This feature aligns with tabi's philosophy (minimal JS, accessible…)"
            required: true
          - label: "I'm willing to contribute to the implementation of this feature."
            required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: 💬 tabi discussions
    url: https://github.com/welpo/tabi/discussions
    about: If you have questions or need help, feel free to ask here~


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
  Thank you for contributing to tabi!

  This template is designed to guide you through the pull request process.
  Please fill out the sections below as applicable.

  Don't worry if your PR is not complete or you're unsure about something;
  feel free to submit it and ask for feedback. We appreciate all contributions, big or small!

  Feel free to remove any section or checklist item that does not apply to your changes.
  If it's a quick fix (for example, fixing a typo), a Summary is enough.
-->

## Summary

<!-- Please provide a brief description of the changes made in this PR -->

### Related issue

<!-- Mention any relevant issues like #123 -->

## Changes

<!-- Please provide some more detail regarding the changes.
Add any additional information, configuration, or data that might be necessary for the review -->

### Accessibility

<!-- Have you taken steps to make your changes accessible? This could include:
- Semantic HTML
- ARIA attributes
- Keyboard navigation
- Voiceover or screen reader compatibility
- Colour contrast
Please elaborate on the actions taken.
If you need help, please ask! -->

### Screenshots

<!-- If applicable, add screenshots to help explain the changes made. Consider if a before/after is helpful -->

### Type of change

<!-- Mark the relevant option with an `x` like so: `[x]` (no spaces) -->

- [ ] Bug fix (fixes an issue without altering functionality)
- [ ] New feature (adds non-breaking functionality)
- [ ] Breaking change (alters existing functionality)
- [ ] UI/UX improvement (enhances user interface without altering functionality)
- [ ] Refactor (improves code quality without altering functionality)
- [ ] Documentation update
- [ ] Other (please describe below)

---

## Checklist

- [ ] I have verified the accessibility of my changes
- [ ] I have tested all possible scenarios for this change
- [ ] I have updated `theme.toml` with a sane default for the feature
- [ ] I have updated `config.toml` in [tabi-start](https://github.com/welpo/tabi-start)
- [ ] I have made corresponding changes to the documentation:
  - [ ] Updated `config.toml` comments
  - [ ] Updated `theme.toml` comments
  - [ ] Updated "Mastering tabi" post in English
  - [ ] (Optional) Updated "Mastering tabi" post in Spanish
  - [ ] (Optional) Updated "Mastering tabi" post in Catalan


================================================
FILE: .github/renovate.json
================================================
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended", ":automergeMinor", ":disableDependencyDashboard"],
  "commitMessagePrefix": "⬆️",
  "commitMessageAction": "chore(deps): update",
  "commitMessageTopic": "{{{depName}}}",
  "labels": ["dependencies"],
  "git-submodules": {
    "enabled": true
  },
  "packageRules": [
    {
      "updateTypes": ["pin"],
      "commitMessagePrefix": "📌"
    },
    {
      "updateTypes": ["major", "minor", "patch", "digest", "bump"],
      "commitMessagePrefix": "⬆️"
    },
    {
      "updateTypes": ["rollback"],
      "commitMessagePrefix": "⬇️"
    },
    {
      "matchFileNames": ["scripts/release/**"],
      "automerge": true
    }
  ]
}


================================================
FILE: .github/workflows/cd.yml
================================================
name: Continuous Deployment

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  deploy:
    name: Deploy and release
    runs-on: ubuntu-24.04
    permissions:
      contents: write
    steps:
      - name: Checkout
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Generate the changelog
        uses: orhun/git-cliff-action@main
        id: git-cliff
        with:
          config: cliff.toml
          args: --latest --strip all
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OUTPUT: CHANGES.md

      - name: Create GitHub release
        run: |
          gh release create ${{ github.ref_name }} \
            --title "Release ${{ github.ref_name }}" \
            --notes-file CHANGES.md
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/ci.yml
================================================
name: Build Site

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  check_and_build_pr:
    name: Check and Build for Pull Requests
    runs-on: ubuntu-latest
    if: github.event_name == 'pull_request'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Zola Build
        uses: shalzz/zola-deploy-action@v0.22.0
        env:
          BUILD_ONLY: true

      - name: Zola Check
        uses: shalzz/zola-deploy-action@v0.22.0
        env:
          BUILD_ONLY: true
          CHECK_LINKS: true

  build_and_deploy:
    name: Build and Deploy on Main Push
    runs-on: ubuntu-24.04
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v6

      - name: Build and Deploy
        uses: shalzz/zola-deploy-action@v0.22.0
        env:
          PAGES_BRANCH: gh-pages
          TOKEN: ${{ secrets.TOKEN }}
          BUILD_THEMES: false


================================================
FILE: .github/workflows/git-sumi.yml
================================================
name: Lint pull request title

on:
  pull_request:
    types:
      - opened
      - edited
      - synchronize
      - ready_for_review

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

permissions:
  pull-requests: read

jobs:
  main:
    name: Run git-sumi
    runs-on: ubuntu-24.04
    steps:
      - name: Set header length for dependency updates
        if: contains(github.event.pull_request.title, 'chore(deps)')
        run: echo "GIT_SUMI_MAX_HEADER_LENGTH=80" >> $GITHUB_ENV
      - uses: welpo/git-sumi-action@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/upgrade-deps.yml
================================================
name: Dependency upgrade
on:
  workflow_dispatch:
    inputs:
      dependency:
        description: 'Dependency to upgrade'
        required: true
        type: choice
        options:
          - all
          - mermaid
          - katex
  schedule:
    - cron: '32 4 * * *'

jobs:
  upgrade-dependency:
    name: Upgrade dependency
    runs-on: ubuntu-24.04
    permissions:
      contents: write
      pull-requests: write
    strategy:
      matrix:
        dependency: ${{ github.event_name == 'schedule' && fromJson('["mermaid", "katex"]') || fromJson(format('["{0}"]', github.event.inputs.dependency)) }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Set up environment
        run: |
          sudo apt-get update
          sudo apt-get install -y jq npm curl git
          npm install uglify-js -g
          uglifyjs --version

      - name: Configure GPG key
        run: |
          echo -n ${{ secrets.GPG_PRIVATE_KEY }} | base64 --decode | gpg --import

      - name: Configure Git
        run: |
          git config --global user.signingkey 33EACFE956484C3940BFEEDCE4EC28F8DFB57474
          git config --global commit.gpgsign true
          git config --global user.name "welpo"
          git config --global user.email "welpo@users.noreply.github.com"

      - name: Check for existing branch
        id: check_branch
        run: |
          if git ls-remote --heads origin deps/upgrade-${{ matrix.dependency }} | grep -q deps/upgrade-${{ matrix.dependency }}; then
            echo "branch_exists=true" >> $GITHUB_OUTPUT
          else
            echo "branch_exists=false" >> $GITHUB_OUTPUT
          fi

      - name: Handle existing branch
        if: steps.check_branch.outputs.branch_exists == 'true'
        run: |
          echo "Branch deps/upgrade-${{ matrix.dependency }} already exists."
          echo "Skipping upgrade as there's already an open PR"
          exit 0

      - name: Create and switch to new branch
        run: |
          git checkout -b deps/upgrade-${{ matrix.dependency }}

      - name: Run upgrade script
        shell: bash
        run: |
          if [[ "${{ matrix.dependency }}" == "all" ]]; then
            bash scripts/upgrade-deps --all
          else
            bash scripts/upgrade-deps --${{ matrix.dependency }}
          fi

      - name: Push changes and create PR
        shell: bash
        run: |
          if git diff --quiet HEAD origin/main; then
            echo "No changes to push for ${{ matrix.dependency }}"
            exit 0
          fi
          git push -u origin deps/upgrade-${{ matrix.dependency }}
          gh pr create --fill --base main --head deps/upgrade-${{ matrix.dependency }} --label "dependencies"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
public

================================================
FILE: .gitmodules
================================================
[submodule "scripts/release"]
	path = scripts/release
	url = https://github.com/welpo/release.git


================================================
FILE: .prettierignore
================================================
*.min.*


================================================
FILE: .prettierrc.toml
================================================
semi = true
trailingComma = "es5"
singleQuote = true
printWidth = 88
tabWidth = 4
useTabs = false
arrowParens = "always"
bracketSpacing = true
jsxBracketSameLine = false
jsxSingleQuote = true
endOfLine = "lf"


================================================
FILE: CHANGELOG.md
================================================
# Changelog

Welcome to the changelog for tabi. This document aims to provide a comprehensive list of all notable changes made to the project, organised chronologically by release version.

We use Semantic Versioning (SemVer) for our version numbers, formatted as MAJOR.MINOR.PATCH. Major version changes involve significant (breaking) changes, minor versions introduce features and improvements in a backward compatible manner, and patch versions are for bug fixes and minor tweaks.

## [4.1.0](https://github.com/welpo/tabi/compare/v4.0.0..v4.1.0) - 2025-06-14

### ✨ Features

- *(feed)* Add feed icon tag pages ([#522](https://github.com/welpo/tabi/issues/522)) by [@tzinm](https://github.com/tzinm) and [@welpo](https://github.com/welpo)
- *(i18n)* Add Finnish language ([#505](https://github.com/welpo/tabi/issues/505)) by [@axelkar](https://github.com/axelkar) and [@welpo](https://github.com/welpo)
- *(indieweb)* Add hidden h-card ([#506](https://github.com/welpo/tabi/issues/506)) by [@mmai](https://github.com/mmai) and [@welpo](https://github.com/welpo)
- *(socials)* Add itch.io icon ([#520](https://github.com/welpo/tabi/issues/520)) by [@mystal](https://github.com/mystal)
- *(webmentions)* Add hcard in post page ([#524](https://github.com/welpo/tabi/issues/524)) by [@mmai](https://github.com/mmai) and [@welpo](https://github.com/welpo)
- Add support for webmentions ([#485](https://github.com/welpo/tabi/issues/485)) by [@gortavoher](https://github.com/gortavoher), [@Jeremiah](https://github.com/Jeremiah) Russell, [@Henri](https://github.com/Henri) Bourcereau and [@welpo](https://github.com/welpo)
- Extend tabi `<head>` and `<body>` elements ([#528](https://github.com/welpo/tabi/issues/528)) by [@axis7818](https://github.com/axis7818) and [@welpo](https://github.com/welpo)
- Parse markdown in post summary & description ([#517](https://github.com/welpo/tabi/issues/517)) by [@rktjump](https://github.com/rktjump) and [@welpo](https://github.com/welpo)
- Cache bust images in shortcodes ([#504](https://github.com/welpo/tabi/issues/504)) by [@axelkar](https://github.com/axelkar)

### 🐛 Bug fixes

- *(feed)* Prioritise description > summary ([#525](https://github.com/welpo/tabi/issues/525)) by [@tzinm](https://github.com/tzinm)
- Render author HTML on page metadata ([7321fc5](https://github.com/welpo/tabi/commit/7321fc5a43fa50dc24c9fa87714612a2295b904a)) by [@welpo](https://github.com/welpo)
- Allow feed icon to be hidden ([#533](https://github.com/welpo/tabi/issues/533)) by [@bajacc](https://github.com/bajacc)
- Fix hcard html tags ([#508](https://github.com/welpo/tabi/issues/508)) by [@mmai](https://github.com/mmai)
- Fix external link icon breaking word wrapping ([#498](https://github.com/welpo/tabi/issues/498)) by [@welpo](https://github.com/welpo)
- Fix padding hover on links with code (custom font) ([#494](https://github.com/welpo/tabi/issues/494)) by [@clement-escolano](https://github.com/clement-escolano)

### 💄 Styling

- Remove extra spacing after author ([2e29782](https://github.com/welpo/tabi/commit/2e29782279d8154cb9c6f1df9a2401612ec77948)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- Add "target_attribute" macro ([#515](https://github.com/welpo/tabi/issues/515)) by [@tzinm](https://github.com/tzinm) and @Óscar
- Improve error message when title is unset ([a384ac8](https://github.com/welpo/tabi/commit/a384ac80c8e6b8be46d4a335930fba697a523af9)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CI)* Fix Mermaid version detection ([e11186a](https://github.com/welpo/tabi/commit/e11186a8448f94494b350402f76a2cc5e5a98a97)) by [@welpo](https://github.com/welpo)
- *(README)* Add b1n.io to 'sites using tabi' ([#531](https://github.com/welpo/tabi/issues/531)) by [@b1nhack](https://github.com/b1nhack)
- *(README)* Fix broken link tag ([#516](https://github.com/welpo/tabi/issues/516)) by [@Olexandr88](https://github.com/Olexandr88)
- *(README)* Add tzinm's blog to 'sites using tabi' ([#496](https://github.com/welpo/tabi/issues/496)) by [@tzinm](https://github.com/tzinm)

### 👥 New contributors

🫶 [@gortavoher](https://github.com/gortavoher) made their first contribution in [#485](https://github.com/welpo/tabi/pull/485)

🫶 [@bajacc](https://github.com/bajacc) made their first contribution in [#533](https://github.com/welpo/tabi/pull/533)

🫶 [@axis7818](https://github.com/axis7818) made their first contribution in [#528](https://github.com/welpo/tabi/pull/528)

🫶 [@b1nhack](https://github.com/b1nhack) made their first contribution in [#531](https://github.com/welpo/tabi/pull/531)

🫶 [@tzinm](https://github.com/tzinm) made their first contribution in [#525](https://github.com/welpo/tabi/pull/525)

🫶 [@mmai](https://github.com/mmai) made their first contribution in [#524](https://github.com/welpo/tabi/pull/524)

🫶 [@rktjump](https://github.com/rktjump) made their first contribution in [#517](https://github.com/welpo/tabi/pull/517)

🫶 [@mystal](https://github.com/mystal) made their first contribution in [#520](https://github.com/welpo/tabi/pull/520)

🫶 [@axelkar](https://github.com/axelkar) made their first contribution in [#504](https://github.com/welpo/tabi/pull/504)

🫶 [@clement-escolano](https://github.com/clement-escolano) made their first contribution in [#494](https://github.com/welpo/tabi/pull/494)

## [4.0.0](https://github.com/welpo/tabi/compare/v3.1.0..v4.0.0) - 2025-02-16

### 💥 BREAKING CHANGES 💥

- *(archive)* Enforce chronological sorting ([#483](https://github.com/welpo/tabi/issues/483)) by [@welpo](https://github.com/welpo)
- Add tag filtering for projects ([#431](https://github.com/welpo/tabi/issues/431)) ([a783329](https://github.com/welpo/tabi/commit/a7833299fff4c753e35fa1f00667d8801f541f9a)) by [@welpo](https://github.com/welpo)

### ✨ Features

- *(archive)* [**‼️BREAKING‼️**] Enforce chronological sorting ([#483](https://github.com/welpo/tabi/issues/483)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Add 'aside' shortcode for side notes ([#452](https://github.com/welpo/tabi/issues/452)) by [@welpo](https://github.com/welpo)
- *(socials)* Add more Fediverse social icons ([89ad44c](https://github.com/welpo/tabi/commit/89ad44ce26d002f2f2c3baa6cf769fb8972551af)) by [@welpo](https://github.com/welpo)
- *(socials)* Add Letterboxd social icon ([0e0a391](https://github.com/welpo/tabi/commit/0e0a391ea84c3ed8b66931158ddef1e4cdd161f4)) by [@welpo](https://github.com/welpo)
- *(socials)* Add ORCID icon ([cf63855](https://github.com/welpo/tabi/commit/cf6385553c779710d1164509f3fc0d480e858ebd)) by [@welpo](https://github.com/welpo)
- Add `hide_from_main_feed` support ([#490](https://github.com/welpo/tabi/issues/490)) by [@welpo](https://github.com/welpo)
- Support Zola's native code block names ([#489](https://github.com/welpo/tabi/issues/489)) by [@welpo](https://github.com/welpo)
- Render markdown in page titles & descriptions ([#486](https://github.com/welpo/tabi/issues/486)) by [@stalkerGH](https://github.com/stalkerGH) and [@welpo](https://github.com/welpo)
- Add indicator to external links ([#443](https://github.com/welpo/tabi/issues/443)) by [@welpo](https://github.com/welpo)
- Allow setting post_listing_date per section ([a3ae897](https://github.com/welpo/tabi/commit/a3ae897c8310ba6a1da72db0fc81f19ca8993d6f)) by [@welpo](https://github.com/welpo)
- Render section content ([#484](https://github.com/welpo/tabi/issues/484)) by [@welpo](https://github.com/welpo)
- Support disabling header font-subset ([#458](https://github.com/welpo/tabi/issues/458)) by [@Nizzlay](https://github.com/Nizzlay) and [@welpo](https://github.com/welpo)
- Support using info-page.html for sections ([#455](https://github.com/welpo/tabi/issues/455)) by [@wischi-chr](https://github.com/wischi-chr) and [@welpo](https://github.com/welpo)
- Add `raw_path` parameter to image shortcodes ([#439](https://github.com/welpo/tabi/issues/439)) by [@welpo](https://github.com/welpo)
- [**‼️BREAKING‼️**] Add tag filtering for projects ([#431](https://github.com/welpo/tabi/issues/431)) ([a783329](https://github.com/welpo/tabi/commit/a7833299fff4c753e35fa1f00667d8801f541f9a)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(CSP)* Improve CSP coverage ([#471](https://github.com/welpo/tabi/issues/471)) by [@stekershaw](https://github.com/stekershaw)
- *(analytics)* Update umami domain ([#448](https://github.com/welpo/tabi/issues/448)) by [@arichtman](https://github.com/arichtman)
- *(feed)* Styling now works in all website paths ([45fe170](https://github.com/welpo/tabi/commit/45fe17046704e249be3b5fbb94a3355d21149d4d)) by [@welpo](https://github.com/welpo)
- *(feed)* Load CSS in subfolder setups ([#467](https://github.com/welpo/tabi/issues/467)) by [@welpo](https://github.com/welpo)
- Adapt footnotes styling for zola 0.19.x & 0.20.x ([1c067e7](https://github.com/welpo/tabi/commit/1c067e708eac4282a2191507f046eacd9f18e0f6)) by [@welpo](https://github.com/welpo)
- Improve menu accessibility ([#482](https://github.com/welpo/tabi/issues/482)) by [@welpo](https://github.com/welpo)
- Support external URLs in menu ([#481](https://github.com/welpo/tabi/issues/481)) by [@welpo](https://github.com/welpo)
- Remove `nofollow` robots meta tag ([#465](https://github.com/welpo/tabi/issues/465)) by [@Nizzlay](https://github.com/Nizzlay)
- Show feed icon without socials ([de6fa58](https://github.com/welpo/tabi/commit/de6fa58fe3b276c12f16f9ddc1cf9f93269161f9)) by [@welpo](https://github.com/welpo)
- Add separator between update date & remote changes link ([2cc336d](https://github.com/welpo/tabi/commit/2cc336d9d0f7019015a356242230f0568658a523)) by [@welpo](https://github.com/welpo)
- Support relative paths in inherited social media card ([#432](https://github.com/welpo/tabi/issues/432)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- *(admonitions)* Fix external link icon ([2b106b7](https://github.com/welpo/tabi/commit/2b106b7c628e01046495a3add7a9ec4cc00b9fa3)) by [@welpo](https://github.com/welpo)
- Increase emoji favicon size ([d777d5d](https://github.com/welpo/tabi/commit/d777d5d99679ab609bebb89726aef80562b30d87)) by [@welpo](https://github.com/welpo)
- Remove extra whitespace in post metadata ([dbb0e82](https://github.com/welpo/tabi/commit/dbb0e826b6572531d4c44bdb031d68207a906666)) by [@welpo](https://github.com/welpo)
- Use text-colour for hover on `rt` in links ([a6b6c32](https://github.com/welpo/tabi/commit/a6b6c3205096fd718757a6f32ff07d60bcc22808)) by [@welpo](https://github.com/welpo)
- Fix home banner layout for short intro ([#438](https://github.com/welpo/tabi/issues/438)) by [@welpo](https://github.com/welpo)
- Fix numbered code blocks on iOS Safari ([4be8a56](https://github.com/welpo/tabi/commit/4be8a5634fa2990825e9bc785029c4dddb340c39)) by [@welpo](https://github.com/welpo)
- Fix numbered code blocks ([#437](https://github.com/welpo/tabi/issues/437)) by [@welpo](https://github.com/welpo)
- Retain base code block style in admonitions ([557ea77](https://github.com/welpo/tabi/commit/557ea7786ffbad75fafdd69d864d6073fd1dadbc)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Fix typo ([#457](https://github.com/welpo/tabi/issues/457)) by [@Olexandr88](https://github.com/Olexandr88)
- *(README)* Add maintenance badges ([4834a9e](https://github.com/welpo/tabi/commit/4834a9e85ff89f1678374752289116bce6f3a076)) by [@welpo](https://github.com/welpo)
- *(demo)* Basic Arabic translation ([#390](https://github.com/welpo/tabi/issues/390)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)
- *(series)* Add tip for custom text permalinks ([4029657](https://github.com/welpo/tabi/commit/402965786beb942aab0922de68cd98952f9a9be0)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Clarify aside usage ([1dcd615](https://github.com/welpo/tabi/commit/1dcd615615b492dffc00c34bd7e1bbc680cf95fd)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Clarify `position` parameter usage for "aside" ([da1b6bb](https://github.com/welpo/tabi/commit/da1b6bb0cc7719f3de23a6855d80dc0262d5c025)) by [@welpo](https://github.com/welpo)
- Suggest MathML in lieu of KaTeX for JS-free math ([eb03953](https://github.com/welpo/tabi/commit/eb0395352caffab67f1ad9b81aab51824e9feb54)) by [@welpo](https://github.com/welpo)
- Add tabi-start integration ([#441](https://github.com/welpo/tabi/issues/441)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- Only show project tag filter with 2 or more tags ([180fc53](https://github.com/welpo/tabi/commit/180fc533844ec3427c447f7040ea837520c4fe5d)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CI)* Add concurrency control to sumi action ([47ea26d](https://github.com/welpo/tabi/commit/47ea26db97cfbd87518ab00b892fdbb245577535)) by [@welpo](https://github.com/welpo)
- *(CI)* Add dependencies label to upgrade PRs ([551b3d2](https://github.com/welpo/tabi/commit/551b3d28c6852c3a1e7acf3c645e0d7b84e079cb)) by [@welpo](https://github.com/welpo)
- *(CI)* Ignore deleted files in pre-commit ([f93def0](https://github.com/welpo/tabi/commit/f93def0692146a15b63d19406ec1180b9e41ba3d)) by [@welpo](https://github.com/welpo)
- *(README)* Add idle-ti.me blog to sites using tabi ([#479](https://github.com/welpo/tabi/issues/479)) by [@be-next](https://github.com/be-next)
- *(README)* Add zzmzaw's blog to sites using tabi ([#469](https://github.com/welpo/tabi/issues/469)) by [@ZzMzaw](https://github.com/ZzMzaw)
- *(README)* Add nizzlay.com to Sites using tabi ([#464](https://github.com/welpo/tabi/issues/464)) by [@Nizzlay](https://github.com/Nizzlay)
- *(README)* Add szabolcs.me to Sites using tabi ([#451](https://github.com/welpo/tabi/issues/451)) by [@szabolcsf](https://github.com/szabolcsf)
- *(README)* Set original colours for docs|up badge ([69713c9](https://github.com/welpo/tabi/commit/69713c973c11d7646c8fe56476261d96cc1978d8)) by [@welpo](https://github.com/welpo)
- *(deps)* Check for existing branch upgrades ([29bbd2e](https://github.com/welpo/tabi/commit/29bbd2eecc97aaaa95c61f8fb736d1301042aa91)) by [@welpo](https://github.com/welpo)
- *(docs)* Fix Series section headings ([0778212](https://github.com/welpo/tabi/commit/077821208f161e813da90c56db817b743bc211c4)) by [@welpo](https://github.com/welpo)
- *(docs)* Use internal links in home description ([0b10560](https://github.com/welpo/tabi/commit/0b10560a94f4a0a4bcb8536ee0595e8c4f4df800)) by [@welpo](https://github.com/welpo)
- *(projects)* Add nemui project ([11eb774](https://github.com/welpo/tabi/commit/11eb774bd74562a4628f87a130575281aa469918)) by [@welpo](https://github.com/welpo)
- *(upgrade-deps)* Improve version detection ([0688628](https://github.com/welpo/tabi/commit/06886284202f670be2034dcedbf6130446b91436)) by [@welpo](https://github.com/welpo)
- Add "shuku" project ([e1b6054](https://github.com/welpo/tabi/commit/e1b60542dfc3eb9bed39a92d3b7acfae88f32b84)) by [@welpo](https://github.com/welpo)
- Add ずつ (zutsu) project page ([c6d1c3d](https://github.com/welpo/tabi/commit/c6d1c3dff844461c7c774882dec8a87d7d3ea548)) by [@welpo](https://github.com/welpo)
- Fix dōteki docs link ([c15098a](https://github.com/welpo/tabi/commit/c15098a959242765353c7fab0906d1fc596c64c0)) by [@welpo](https://github.com/welpo)
- Update git-sumi & dōteki projects ([6d44320](https://github.com/welpo/tabi/commit/6d44320f45bc381c65e370f8f03bf3525b59e05a)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@stalkerGH](https://github.com/stalkerGH) made their first contribution in [#486](https://github.com/welpo/tabi/pull/486)

🫶 [@stekershaw](https://github.com/stekershaw) made their first contribution in [#471](https://github.com/welpo/tabi/pull/471)

🫶 [@Nizzlay](https://github.com/Nizzlay) made their first contribution in [#465](https://github.com/welpo/tabi/pull/465)

🫶 [@Olexandr88](https://github.com/Olexandr88) made their first contribution in [#457](https://github.com/welpo/tabi/pull/457)

🫶 [@wischi-chr](https://github.com/wischi-chr) made their first contribution in [#455](https://github.com/welpo/tabi/pull/455)

🫶 [@szabolcsf](https://github.com/szabolcsf) made their first contribution in [#451](https://github.com/welpo/tabi/pull/451)

## [3.1.0](https://github.com/welpo/tabi/compare/v3.0.0..v3.1.0) - 2024-11-14

### ✨ Features

- *(shortcodes)* Support body admonitions ([#423](https://github.com/welpo/tabi/issues/423)) by [@welpo](https://github.com/welpo)
- Allow pinned posts with pagination ([#428](https://github.com/welpo/tabi/issues/428)) by [@welpo](https://github.com/welpo)
- Add pinned posts functionality ([#424](https://github.com/welpo/tabi/issues/424)) by [@welpo](https://github.com/welpo)
- Add series functionality ([#406](https://github.com/welpo/tabi/issues/406)) by [@ZzMzaw](https://github.com/ZzMzaw) and [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- Link to "All posts" in non-default-language root ([3b7fd3d](https://github.com/welpo/tabi/commit/3b7fd3db9c33fd3ca6114ca00fffa2a91f682a0a)) by [@welpo](https://github.com/welpo)
- Isso comments in multilingual setups ([#427](https://github.com/welpo/tabi/issues/427)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- Colour scrollbar to match primary colour ([#430](https://github.com/welpo/tabi/issues/430)) by [@welpo](https://github.com/welpo)
- Set accent color to match theme ([#429](https://github.com/welpo/tabi/issues/429)) by [@welpo](https://github.com/welpo)
- Fix info admonition code color ([5927409](https://github.com/welpo/tabi/commit/5927409c41e71d6943deee426fc75a94037cee36)) by [@welpo](https://github.com/welpo)
- Improve navigation bar & metadata wrapping ([#425](https://github.com/welpo/tabi/issues/425)) by [@welpo](https://github.com/welpo)
- Fix hover color for <rt> element in links ([87f1099](https://github.com/welpo/tabi/commit/87f1099caa8741bcacadf2aae2677a529395e454)) by [@welpo](https://github.com/welpo)
- Add styling for <kbd> keyboard input ([51fee5d](https://github.com/welpo/tabi/commit/51fee5d660232a1eafeb39f439fe5377f3f63406)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Fix typo ([#421](https://github.com/welpo/tabi/issues/421)) by [@ZzMzaw](https://github.com/ZzMzaw)
- Highlight pinned posts feature ([c3c344a](https://github.com/welpo/tabi/commit/c3c344a76fb894ec87fc9896e7a0202788e001c5)) by [@welpo](https://github.com/welpo)
- Clarify instructions for listing recent posts ([#418](https://github.com/welpo/tabi/issues/418)) ([3442fd9](https://github.com/welpo/tabi/commit/3442fd9ff0c0a093f08bb27aaa0d92e5993df29b)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- *(GitHub)* Update issue templates ([5687f3b](https://github.com/welpo/tabi/commit/5687f3bacb6ed69ffbe4143e93b6c95ce8fb5c59)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CI)* Allow longer PR titles for dep updates ([e2c5c6e](https://github.com/welpo/tabi/commit/e2c5c6e9b749c3591af6a822eee65c1ee1854c01)) by [@welpo](https://github.com/welpo)
- *(CI)* Allow longer PR titles for dep updates ([fa9f160](https://github.com/welpo/tabi/commit/fa9f16034241ccee6229ef0279b3b9bc65249cfa)) by [@welpo](https://github.com/welpo)
- *(CI)* Allow longer PR titles for dep updates ([bd45a1a](https://github.com/welpo/tabi/commit/bd45a1ae45997b950c703d1ebf1e34b3b82173eb)) by [@welpo](https://github.com/welpo)
- *(deps)* Remove local release script ([2e3cff2](https://github.com/welpo/tabi/commit/2e3cff2ef1ca8396c632de48b21174601d5ff46c)) by [@welpo](https://github.com/welpo)
- *(projects)* Add ラム (ramu) project ([f300129](https://github.com/welpo/tabi/commit/f3001298c24d49d234247c9cce2a6c771778c1c3)) by [@welpo](https://github.com/welpo)
- Change codeblock language from plaintext to txt ([57a0a8e](https://github.com/welpo/tabi/commit/57a0a8e1a09d586acdf5c72464d79328e0c9b27f)) by [@welpo](https://github.com/welpo)

## [3.0.0](https://github.com/welpo/tabi/compare/v2.17.0..v3.0.0) - 2024-10-18

### 💥 BREAKING CHANGES 💥

- Force code blocks LTR rendering ([#412](https://github.com/welpo/tabi/issues/412)) ([092ccdd](https://github.com/welpo/tabi/commit/092ccdd1ba8bf08cc738664ba4fbe9e7a0ff282e)) by [@welpo](https://github.com/welpo)

### ✨ Features

- Add force_text_direction shortcode ([#414](https://github.com/welpo/tabi/issues/414)) ([c9f8d27](https://github.com/welpo/tabi/commit/c9f8d27b962217ff0fb09b30ec14aee65fe8518d)) by [@welpo](https://github.com/welpo)
- [**‼️BREAKING‼️**] Force code blocks LTR rendering ([#412](https://github.com/welpo/tabi/issues/412)) ([092ccdd](https://github.com/welpo/tabi/commit/092ccdd1ba8bf08cc738664ba4fbe9e7a0ff282e)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- Update CSP for GoatCounter ([#413](https://github.com/welpo/tabi/issues/413)) by [@noeddl](https://github.com/noeddl)

### 📝 Documentation

- *(CONTRIBUTING)* Fix broken link to commit message style ([11e246a](https://github.com/welpo/tabi/commit/11e246a876eef846e8c1e26add7331f25beb9c27)) by [@welpo](https://github.com/welpo)
- *(mastering tabi)* Mention social links rel='me' ([5db70b7](https://github.com/welpo/tabi/commit/5db70b7978e7141be9396d3f69375a87b2d44ed2)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- Update git-cliff variables to `commit.remote` ([0a36ef5](https://github.com/welpo/tabi/commit/0a36ef55ee092fe7bb1f8803c04a4cb8245b2a13)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@noeddl](https://github.com/noeddl) made their first contribution in [#413](https://github.com/welpo/tabi/pull/413)

## [2.17.0](https://github.com/welpo/tabi/compare/v2.16.0..v2.17.0) - 2024-10-10

### ✨ Features

- Add fediverse creator metadata support ([#409](https://github.com/welpo/tabi/issues/409)) by [@arichtman](https://github.com/arichtman), [@Ariel](https://github.com/Ariel) Richtman and [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(search)* Restore highlighting functionality ([#401](https://github.com/welpo/tabi/issues/401)) by [@welpo](https://github.com/welpo)
- Set proper URL for self-hosted Umami ([#402](https://github.com/welpo/tabi/issues/402)) by [@soumendrak](https://github.com/soumendrak)

### 📝 Documentation

- Add mermaid shortcode usage ([#407](https://github.com/welpo/tabi/issues/407)) by [@ZzMzaw](https://github.com/ZzMzaw) and [@welpo](https://github.com/welpo)
- Update comment in config.toml RE: #402 ([c50edbd](https://github.com/welpo/tabi/commit/c50edbd453eca2f031bc97a5a25caa206644d568)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- *(search)* Reduce search lag on mobile ([7ceada9](https://github.com/welpo/tabi/commit/7ceada974b7c3f2c52aaa5688af631c806901aed)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(README)* Add jmbhughes.com to showcase ([#404](https://github.com/welpo/tabi/issues/404)) by [@jmbhughes](https://github.com/jmbhughes)
- *(deps)* Replace local release script w/ git submodule ([66239be](https://github.com/welpo/tabi/commit/66239bee016406c87a227b685eb70a464546e199)) by [@welpo](https://github.com/welpo)
- *(deps)* Automate KaTeX/mermaid upgrades ([fc04ab4](https://github.com/welpo/tabi/commit/fc04ab4e40977bafa1b821c77e38554d287f69bc)) by [@welpo](https://github.com/welpo)
- Reformat social card creation tip ([47fcee8](https://github.com/welpo/tabi/commit/47fcee8f81fb10bcd7cc042cc4a80dcada244b6d)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@github-actions](https://github.com/github-actions)[bot] made their first contribution in [#405](https://github.com/welpo/tabi/pull/405)

🫶 [@jmbhughes](https://github.com/jmbhughes) made their first contribution in [#404](https://github.com/welpo/tabi/pull/404)

🫶 [@soumendrak](https://github.com/soumendrak) made their first contribution in [#402](https://github.com/welpo/tabi/pull/402)

## [2.16.0](https://github.com/welpo/tabi/compare/v2.15.0..v2.16.0) - 2024-09-22

### ✨ Features

- *(remote_text shortcode)* Support line ranges ([#399](https://github.com/welpo/tabi/issues/399)) ([008b976](https://github.com/welpo/tabi/commit/008b976e06e0b93e021e2ca641eda42521e58f98)) by [@welpo](https://github.com/welpo)
- *(remote_text shortcode)* Support relative paths ([#398](https://github.com/welpo/tabi/issues/398)) by [@welpo](https://github.com/welpo)

## [2.15.0](https://github.com/welpo/tabi/compare/v2.14.0..v2.15.0) - 2024-09-20

### ✨ Features

- *(feed)* Make "Visit website" link context-aware ([#394](https://github.com/welpo/tabi/issues/394)) by [@welpo](https://github.com/welpo)
- *(search)* Hide "clear search" icon if input is empty ([#388](https://github.com/welpo/tabi/issues/388)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(feed)* Resolve Atom feed validation issues ([#393](https://github.com/welpo/tabi/issues/393)) by [@welpo](https://github.com/welpo)
- Allow pages within pages ([#385](https://github.com/welpo/tabi/issues/385)) by [@welpo](https://github.com/welpo)
- Improve dark mode and OS theme handling ([#380](https://github.com/welpo/tabi/issues/380)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- Improve RTL styling consistency ([#381](https://github.com/welpo/tabi/issues/381)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(README)* Add Ponderosa Games to showcase ([#395](https://github.com/welpo/tabi/issues/395)) by [@JVimes](https://github.com/JVimes)
- *(deps)* Avoid masking return values ([1b11f4b](https://github.com/welpo/tabi/commit/1b11f4b321d0ae52179d88cc3ecd1b72ef2b37ae)) by [@welpo](https://github.com/welpo)
- *(deps)* Check local deps version to early exit ([b5cbad4](https://github.com/welpo/tabi/commit/b5cbad422bc14f44a620bcbb87449f2425c16af6)) by [@welpo](https://github.com/welpo)
- Set [@TheAwiteb](https://github.com/TheAwiteb) as owner of Arabic translation ([edb0873](https://github.com/welpo/tabi/commit/edb087392f2989b4f08122c81fa3e51d17fbb6b8)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@JVimes](https://github.com/JVimes) made their first contribution in [#395](https://github.com/welpo/tabi/pull/395)

## [2.14.0](https://github.com/welpo/tabi/compare/v2.13.0..v2.14.0) - 2024-09-08

### ✨ Features

- *(i18n)* Add Odia language ([#372](https://github.com/welpo/tabi/issues/372))
- *(i18n)* Add Estonian language ([#365](https://github.com/welpo/tabi/issues/365)) by [@NippleOfAnApe](https://github.com/NippleOfAnApe)
- Add Mermaid diagram support ([#370](https://github.com/welpo/tabi/issues/370)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(RTL)* Fix blockquote style ([#368](https://github.com/welpo/tabi/issues/368)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)
- Reduce main page header/list sizes ([#375](https://github.com/welpo/tabi/issues/375)) by [@welpo](https://github.com/welpo)
- Add missing quotes to HTML attributes ([#367](https://github.com/welpo/tabi/issues/367)) by [@DataTriny](https://github.com/DataTriny)

### 💄 Styling

- Use note admonition for TL;DR ([b9bf4b2](https://github.com/welpo/tabi/commit/b9bf4b2fd67c71647c0d2a1bd77dee8cb9e0ec49)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(mastering tabi)* Clarify prev/next links requirements ([6219b92](https://github.com/welpo/tabi/commit/6219b9200cfd544b999b064fabfa0ca37d4815d8)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- *(footer)* Lazy load social icons ([9e7b845](https://github.com/welpo/tabi/commit/9e7b845e544758792831da520379e04089909b78)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(deps)* Add KaTeX to dependency upgrade script ([001ec8f](https://github.com/welpo/tabi/commit/001ec8fc9a9524efbe4c3c04669fb64be4ed8efd)) by [@welpo](https://github.com/welpo)
- *(deps)* Add script to upgrade mermaid ([d73c4bd](https://github.com/welpo/tabi/commit/d73c4bde5a12d434a595be877f4452fa0c20ae30)) by [@welpo](https://github.com/welpo)
- *(release)* Ensure script is ran from default branch ([82f7a98](https://github.com/welpo/tabi/commit/82f7a984d54046a4f884461b3c5f52ac830661bf)) by [@welpo](https://github.com/welpo)
- Add funding information ([8d22a42](https://github.com/welpo/tabi/commit/8d22a42e3fd5d909eaf90f7132e818b9c45f7b07)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 @ made their first contribution in [#372](https://github.com/welpo/tabi/pull/372)

🫶 [@DataTriny](https://github.com/DataTriny) made their first contribution in [#367](https://github.com/welpo/tabi/pull/367)

🫶 [@NippleOfAnApe](https://github.com/NippleOfAnApe) made their first contribution in [#365](https://github.com/welpo/tabi/pull/365)

## [2.13.0](https://github.com/welpo/tabi/compare/v2.12.0..v2.13.0) - 2024-07-24

### ✨ Features

- Follow user OS theme with JS disabled ([#357](https://github.com/welpo/tabi/issues/357)) by [@welpo](https://github.com/welpo)
- Add date visibility options to post list ([#330](https://github.com/welpo/tabi/issues/330)) by [@sam9032](https://github.com/sam9032) and [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(header)* Render feed links based on config ([#358](https://github.com/welpo/tabi/issues/358)) by [@welpo](https://github.com/welpo)
- *(post_listing_date)* Show original date for unedited articles ([#355](https://github.com/welpo/tabi/issues/355)) by [@sam9032](https://github.com/sam9032)
- *(search)* Close modal when clicking current page result ([#350](https://github.com/welpo/tabi/issues/350)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- *(error)* Enhance visibility of Zola errors ([#359](https://github.com/welpo/tabi/issues/359)) by [@welpo](https://github.com/welpo)
- Match footnote backlinks size on Zola v0.19 ([0f18ac2](https://github.com/welpo/tabi/commit/0f18ac264df8b9766c4d431dfd37f5f5799f3834)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(mastering tabi)* Fix broken image ([1111631](https://github.com/welpo/tabi/commit/1111631325e3ebf8ae3a2f6cd18492cfc5aa44c2)) by [@welpo](https://github.com/welpo)
- Mention custom Twitter card & automatic OG tags ([fbb81f9](https://github.com/welpo/tabi/commit/fbb81f976433d93ee3787f4a9d5c6c3049f815a2)) by [@welpo](https://github.com/welpo)
- Deprecate JS footnote backlinks ([ced0cb4](https://github.com/welpo/tabi/commit/ced0cb43b6b4b4f6fba583990e428ddedbf52af3)) by [@welpo](https://github.com/welpo)
- Fix broken internal links ([4145364](https://github.com/welpo/tabi/commit/4145364e085929ae9c09ccb908a0bae77a0b7520)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(release)* Add error handling function ([9585843](https://github.com/welpo/tabi/commit/9585843b14131843775e41df67fe9cc60c95a2ea)) by [@welpo](https://github.com/welpo)
- *(release)* Ensure local repository is in good state ([617a940](https://github.com/welpo/tabi/commit/617a940cf823917bc86df5f05350236c40560dc0)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@sam9032](https://github.com/sam9032) made their first contribution in [#355](https://github.com/welpo/tabi/pull/355)

🫶 [@renovate](https://github.com/renovate)[bot] made their first contribution in [#345](https://github.com/welpo/tabi/pull/345)

## [2.12.0](https://github.com/welpo/tabi/compare/v2.11.0..v2.12.0) - 2024-06-29

### ✨ Features

- *(admonitions)* Allow swapping admonition icons ([#340](https://github.com/welpo/tabi/issues/340)) by [@welpo](https://github.com/welpo)
- *(socials)* Add Debian icon ([82ecbc1](https://github.com/welpo/tabi/commit/82ecbc145489bf4415d7a3500be85191524d1b53)) by [@welpo](https://github.com/welpo)
- Allow sorting tags based on post count ([#344](https://github.com/welpo/tabi/issues/344)) by [@metaleap](https://github.com/metaleap) and [@welpo](https://github.com/welpo)
- Add option to use sans-serif font everywhere ([a907f56](https://github.com/welpo/tabi/commit/a907f56bd568378b099c0706fa4c92d7102b1688)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(mastering tabi)* Clarify post sorting in Archive ([c9c8ed8](https://github.com/welpo/tabi/commit/c9c8ed84a00136469a53d30b6e694b6cb845c5fa)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- Improve "Last updated on" format ([#342](https://github.com/welpo/tabi/issues/342)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@metaleap](https://github.com/metaleap) made their first contribution in [#344](https://github.com/welpo/tabi/pull/344)

## [2.11.0](https://github.com/welpo/tabi/compare/v2.10.0..v2.11.0) - 2024-06-24

### ✨ Features

- *(socials)* Add bluesky icon ([#333](https://github.com/welpo/tabi/issues/333)) by [@andreacfromtheapp](https://github.com/andreacfromtheapp)
- Allow HTML tags in multilingual quote author ([be7628a](https://github.com/welpo/tabi/commit/be7628aeaa573b69739a2751e93d77da0b587124)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(footer)* Show feed icon on Zola 0.19.0 ([#336](https://github.com/welpo/tabi/issues/336)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- *(admonitions)* Reduce thickness of strong tag ([faa9633](https://github.com/welpo/tabi/commit/faa963353170f42ab2b05b2a35aae1431ff5c319)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Fix command to update tabi submodule ([7a3380c](https://github.com/welpo/tabi/commit/7a3380c467d3bf77cfa1d9548a0b063964d73f37)) by [@welpo](https://github.com/welpo)
- *(README)* Clarify section_path format ([7d38628](https://github.com/welpo/tabi/commit/7d386283ff808576a7149a96223be3564984d783)) by [@welpo](https://github.com/welpo)
- *(README)* Add commands to update the theme ([4a47e0a](https://github.com/welpo/tabi/commit/4a47e0ad2375a9b160ab0424719f04702653970d)) by [@welpo](https://github.com/welpo)
- Explain how to use custom social icons ([5ae629d](https://github.com/welpo/tabi/commit/5ae629d171d12ed262d4862da65e7e8c8a21d87a)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(pre-commit hook)* Handle filenames with spaces ([448250f](https://github.com/welpo/tabi/commit/448250ff571d442d4608e0d7a8550c66cbe1bc2b)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@andreacfromtheapp](https://github.com/andreacfromtheapp) made their first contribution in [#333](https://github.com/welpo/tabi/pull/333)

## [2.10.0](https://github.com/welpo/tabi/compare/v2.9.0..v2.10.0) - 2024-05-30

### ✨ Features

- *(homepage)* Allow hiding posts listing ([#317](https://github.com/welpo/tabi/issues/317)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Add inline option to image shortcodes ([#315](https://github.com/welpo/tabi/issues/315)) by [@welpo](https://github.com/welpo)
- Add option to show author in post metadata ([#322](https://github.com/welpo/tabi/issues/322)) by [@welpo](https://github.com/welpo)
- Add inline image CSS class ([6a4f424](https://github.com/welpo/tabi/commit/6a4f4244e0ae16127f207680061fa4dcb1c782dd)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(footer)* Allow showing only email/feed icons ([aef49bb](https://github.com/welpo/tabi/commit/aef49bb2251c95e1fb70f05f149ecc8af7184145)) by [@welpo](https://github.com/welpo)
- Allow quotation in page summary ([22925ca](https://github.com/welpo/tabi/commit/22925caf060d122630c02437c5fc73bc6b82e457)) by [@welpo](https://github.com/welpo)

### 💄 Styling

- Increase font size of h1 ([94b3b1d](https://github.com/welpo/tabi/commit/94b3b1d8045753187044174a4d127fdc94608923)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(mastering tabi)* Fix typo ([349663f](https://github.com/welpo/tabi/commit/349663f28fc61bb19beec8ba8d42d5724c062bee)) by [@welpo](https://github.com/welpo)
- CSP requirements to use built-in syntax highlighting ([3b0d7e5](https://github.com/welpo/tabi/commit/3b0d7e5a668aa087af512f0ecb204acf61723a63)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- Improve settings hierarchy performance ([#325](https://github.com/welpo/tabi/issues/325)) by [@faassen](https://github.com/faassen)

### 🔧 Miscellaneous tasks

- *(analytics)* Stop collecting Language data ([1894d55](https://github.com/welpo/tabi/commit/1894d550bcbd8b664c3865576aa65abd0b1db0c3)) by [@welpo](https://github.com/welpo)
- Update nani logo ([#323](https://github.com/welpo/tabi/issues/323)) by [@faassen](https://github.com/faassen)

### 👥 New contributors

🫶 [@faassen](https://github.com/faassen) made their first contribution in [#325](https://github.com/welpo/tabi/pull/325)

## [2.9.0](https://github.com/welpo/tabi/compare/v2.8.1..v2.9.0) - 2024-05-11

### ✨ Features

- *(shortcodes)* Add remote_text shortcode ([#305](https://github.com/welpo/tabi/issues/305)) by [@welpo](https://github.com/welpo)
- Enable adding URL/path to code blocks ([#307](https://github.com/welpo/tabi/issues/307)) ([b70efd1](https://github.com/welpo/tabi/commit/b70efd1642db11b060665ecf6d1bf0f11e3ffd06)) by [@welpo](https://github.com/welpo)
- Add option to display/hide date in metadata ([#306](https://github.com/welpo/tabi/issues/306)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(add_src_to_code_block)* Avoid overlapping text ([f081a92](https://github.com/welpo/tabi/commit/f081a92f5939e141b6dbd7afe8ad1a9519d47f30)) by [@welpo](https://github.com/welpo)
- *(analytics)* Allow Umami through CSP ([#310](https://github.com/welpo/tabi/issues/310)) by [@arichtman](https://github.com/arichtman)

## [2.8.1](https://github.com/welpo/tabi/compare/v2.8.0..v2.8.1) - 2024-05-01

### 🐛 Bug fixes

- Ensure spacing when all projects are shown ([50123c0](https://github.com/welpo/tabi/commit/50123c09ef7ee544d812a58a607d8a1e92369c4f)) by [@welpo](https://github.com/welpo)

## [2.8.0](https://github.com/welpo/tabi/compare/v2.7.0..v2.8.0) - 2024-04-29

### ✨ Features

- Allow showcasing featured projects on homepage ([#297](https://github.com/welpo/tabi/issues/297)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(CSP)* Add Umami API URLs to CSP ([#301](https://github.com/welpo/tabi/issues/301)) by [@arichtman](https://github.com/arichtman)
- Align projects and posts properly ([69094d6](https://github.com/welpo/tabi/commit/69094d633579a1ea4bee1fcadd77e1511d4020ca)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Add arichtman blog to showcase ([#298](https://github.com/welpo/tabi/issues/298)) by [@arichtman](https://github.com/arichtman)

### ♻️ Refactor

- *(search)* Close unclosed div ([b6b48cc](https://github.com/welpo/tabi/commit/b6b48cc3b4a2ad17c2ee331664b0b2c9f1fcecc2)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(README)* Remove sites no longer using tabi ([ba5acca](https://github.com/welpo/tabi/commit/ba5acca7340a940092a9be196302b01441617720)) by [@welpo](https://github.com/welpo)

## [2.7.0](https://github.com/welpo/tabi/compare/v2.6.1..v2.7.0) - 2024-04-18

### ✨ Features

- *(i18n)* Add Dutch language ([#290](https://github.com/welpo/tabi/issues/290)) by [@Myrdincx](https://github.com/Myrdincx) and [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- Link 'All posts' to proper section ([#295](https://github.com/welpo/tabi/issues/295)) by [@Dalker](https://github.com/Dalker), [@Daniel](https://github.com/Daniel) Kessler (a.k.a. Dalker) and [@welpo](https://github.com/welpo)
- Fix history url for GitLab & Codeberg ([#294](https://github.com/welpo/tabi/issues/294)) by [@TheAwiteb](https://github.com/TheAwiteb)

### 💄 Styling

- *(shortcodes)* Use colourful admonition icons ([e965694](https://github.com/welpo/tabi/commit/e965694cdf1c588d40e167ec98961a854e2236d0)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(projects)* List Streaming Royalties Calculator ([ad289f1](https://github.com/welpo/tabi/commit/ad289f1d2caaf7781a011d610e46bd7de41e7f33)) by [@welpo](https://github.com/welpo)
- Update nani logo ([ce1a98e](https://github.com/welpo/tabi/commit/ce1a98ed93ad38214f6455ba262289a3969cbf52)) by [@welpo](https://github.com/welpo)
- Compress dōteki & git-sumi social media cards ([ec6ba01](https://github.com/welpo/tabi/commit/ec6ba01bbcbeecc684e2bfb49c5e1f7fac847aa5)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@Dalker](https://github.com/Dalker) made their first contribution in [#295](https://github.com/welpo/tabi/pull/295)

🫶 [@Myrdincx](https://github.com/Myrdincx) made their first contribution in [#290](https://github.com/welpo/tabi/pull/290)

## [2.6.1](https://github.com/welpo/tabi/compare/v2.6.0..v2.6.1) - 2024-03-21

### 🔧 Miscellaneous tasks

- *(CI)* Use CHANGES.md for GitHub release notes ([38f3aaf](https://github.com/welpo/tabi/commit/38f3aafdd8a34ae5452ae9bb879881b807e5a7b4)) by [@welpo](https://github.com/welpo)

## [2.6.0](https://github.com/welpo/tabi/compare/v2.5.0..v2.6.0) - 2024-03-21

### ✨ Features

- *(shortcodes)* Add admonition shortcode ([#285](https://github.com/welpo/tabi/issues/285)) ([d016229](https://github.com/welpo/tabi/commit/d0162291d961734c3e5f115348655f5755b8aa54)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(feed)* Fix "Visit website" link with skin config ([#286](https://github.com/welpo/tabi/issues/286)) by [@be-next](https://github.com/be-next)

## [2.5.0](https://github.com/welpo/tabi/compare/v2.4.0..v2.5.0) - 2024-03-17

### ✨ Features

- Allow disabling CSP, following the hierarchy ([5e0cbdd](https://github.com/welpo/tabi/commit/5e0cbdd67dbe4c17d635040959133edcc5066aff)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(i18n)* Improve FR translations and correct typos ([#284](https://github.com/welpo/tabi/issues/284)) by [@be-next](https://github.com/be-next)

### ♻️ Refactor

- Set visibility hidden in "hidden" class ([8537bbc](https://github.com/welpo/tabi/commit/8537bbc10ef7a142128f8d471ee19814cb0d904c)) by [@welpo](https://github.com/welpo)
- Correct invalid attributes in search input ([d825bef](https://github.com/welpo/tabi/commit/d825bef73065c7343ec952f938f7d4a17b4e363e)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(release)* Replace both pull and issue links ([e951e95](https://github.com/welpo/tabi/commit/e951e951102249707a4c899f0d194b781c3466d2)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@be-next](https://github.com/be-next) made their first contribution in [#284](https://github.com/welpo/tabi/pull/284)

## [2.4.0](https://github.com/welpo/tabi/compare/v2.3.0..v2.4.0) - 2024-03-02

### ✨ Features

- *(i18n)* Add Persian language ([#283](https://github.com/welpo/tabi/issues/283)) by [@mehr32](https://github.com/mehr32) and [@welpo](https://github.com/welpo)
- *(socials)* Add Signal icon ([4aaa234](https://github.com/welpo/tabi/commit/4aaa2346d0c10ef0322b0033358812520e2137af)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- Allow translated drafts ([#282](https://github.com/welpo/tabi/issues/282)) by [@Smtbook](https://github.com/Smtbook) and [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CI)* Update git-cliff's github integration ([2ede035](https://github.com/welpo/tabi/commit/2ede03550aa1ce2d2c17063fff3d5a676c3ea2be)) by [@welpo](https://github.com/welpo)
- *(release)* Fix cross-compatibility of sed command ([0192b3e](https://github.com/welpo/tabi/commit/0192b3ed9f6df26f28320fd771f445bb74750812)) by [@welpo](https://github.com/welpo)
- *(release)* Add author link only on full changelog ([8de049a](https://github.com/welpo/tabi/commit/8de049a2b588b7e3b1d09ed361bb28ee2ea65af4)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@mehr32](https://github.com/mehr32) made their first contribution in [#283](https://github.com/welpo/tabi/pull/283)

## [2.3.0](https://github.com/welpo/tabi/compare/v2.2.0..v2.3.0) - 2024-02-19

### ✨ Features

- *(i18n)* Implement pluralization logic ([#277](https://github.com/welpo/tabi/issues/277)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)
- *(i18n)* Add Arabic language ([#265](https://github.com/welpo/tabi/issues/265)) by [@TheAwiteb](https://github.com/TheAwiteb)
- *(shortcodes)* Support URLs for image source ([#280](https://github.com/welpo/tabi/issues/280)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(404)* Fix broken language selection from 404 page ([90def02](https://github.com/welpo/tabi/commit/90def02dd7d54e62cbfe8f4e78b6e1e198b631be)) by [@welpo](https://github.com/welpo)
- *(article-navigation)* Adjust spacing for RTL ([#275](https://github.com/welpo/tabi/issues/275)) by [@welpo](https://github.com/welpo)
- *(i18n)* Reverse arrows in RTL languages ([#272](https://github.com/welpo/tabi/issues/272)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)
- *(i18n)* Fix header anchor for RTL ([#270](https://github.com/welpo/tabi/issues/270)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)
- *(i18n)* Atom feed page direction for RTL langs ([#268](https://github.com/welpo/tabi/issues/268)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)

### 💄 Styling

- *(projects)* Set entire card as link target ([22d4d68](https://github.com/welpo/tabi/commit/22d4d68a690239dfe664e8513eaaf15b525e45ec)) by [@welpo](https://github.com/welpo)
- *(projects)* Minor redesign ([#278](https://github.com/welpo/tabi/issues/278)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(i18n)* Add Arabic to list of supported languages ([e5442fa](https://github.com/welpo/tabi/commit/e5442fa29f32f9c1294d980df692b1ce096ce3fc)) by [@welpo](https://github.com/welpo)
- *(mastering-tabi)* Fix unclosed codeblock ([274c414](https://github.com/welpo/tabi/commit/274c4146b2dd04c6ca188c096002a02d4b073273)) by [@welpo](https://github.com/welpo)
- Fix various broken links ([6efe2ee](https://github.com/welpo/tabi/commit/6efe2ee57db4202fb0898b12e1f5e952e97ddc3a)) by [@welpo](https://github.com/welpo)
- Update tabi screenshots ([238487b](https://github.com/welpo/tabi/commit/238487b4b2d7e04c8176d35d69e4925dc4b98d9c)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CI)* Build before checking links ([daef403](https://github.com/welpo/tabi/commit/daef40338ccf03250da2ec2b4382d644f277e4b4)) by [@welpo](https://github.com/welpo)
- *(CI)* Improve CI to check and build for PRs ([262fcd9](https://github.com/welpo/tabi/commit/262fcd95f18e90dca17522ce2de4f07df6febedd)) by [@welpo](https://github.com/welpo)
- *(demo)* Update projects section ([d543560](https://github.com/welpo/tabi/commit/d543560431e1ddd4624a684e5e8cca7f11ea0b7f)) by [@welpo](https://github.com/welpo)
- *(git-sumi)* Improve emoji matching ([e373482](https://github.com/welpo/tabi/commit/e3734829460d4f93643e7d8fc4a33670f5bb9c6e)) by [@welpo](https://github.com/welpo)
- *(link_checker)* Skip vultr.com links ([0158097](https://github.com/welpo/tabi/commit/0158097594f1d19653f2b68c4fedf802342aa8ad)) by [@welpo](https://github.com/welpo)
- *(projects)* Load git-sumi demo from its repo ([7b13798](https://github.com/welpo/tabi/commit/7b13798a68110d1da63870ea95230ece84526a8b)) by [@welpo](https://github.com/welpo)
- *(release)* Remove link comparison ([e2358f7](https://github.com/welpo/tabi/commit/e2358f7edfc2944e34bc59cbe4b1cbff64412f21)) by [@welpo](https://github.com/welpo)
- *(release)* Update CHANGELOG format ([5b5d1fa](https://github.com/welpo/tabi/commit/5b5d1fa592b72b50e1fccf172d9245a9e087bfd3)) by [@welpo](https://github.com/welpo)
- Add renovate config ([3672a94](https://github.com/welpo/tabi/commit/3672a94e863a44e88b1ec0e1896ac6ef38833ef7)) by [@welpo](https://github.com/welpo)

## [2.2.0](https://github.com/welpo/tabi/compare/v2.1.0..v2.2.0) - 2024-02-10

### ✨ Features

- *(i18n)* Add Right-to-left script support ([#262](https://github.com/welpo/tabi/issues/262)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(tags)* Arabic tags stuck together ([#264](https://github.com/welpo/tabi/issues/264)) by [@TheAwiteb](https://github.com/TheAwiteb) and [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Add git-sumi badge ([8b5a131](https://github.com/welpo/tabi/commit/8b5a131001cbb29656ab2339cafa777938353ea3)) by [@welpo](https://github.com/welpo)
- *(README)* Add IPA notation for pronunciation ([f7c0de4](https://github.com/welpo/tabi/commit/f7c0de412daf32f14374e282863c6f7be651e0c8)) by [@welpo](https://github.com/welpo)
- *(README)* Add project badges ([bcde187](https://github.com/welpo/tabi/commit/bcde187f73a278cb534282204f9aa183cec2ec0a)) by [@welpo](https://github.com/welpo)
- *(README)* Remove quick start section ([1382b44](https://github.com/welpo/tabi/commit/1382b44c182827a5757b7aaf50b1f036ccda12b4)) by [@welpo](https://github.com/welpo)
- *(README)* Recommend installing tabi as a submodule or cloning it ([a05170c](https://github.com/welpo/tabi/commit/a05170c6895ad7f7e8d71a482e6ea9efaa69030e)) by [@welpo](https://github.com/welpo)
- *(contributing)* Enrich PR information ([28d0f70](https://github.com/welpo/tabi/commit/28d0f70e18c392b0c57cc0e818ee1b763aa0137e)) by [@welpo](https://github.com/welpo)

### 🔧 Miscellaneous tasks

- *(CHANGELOG)* Improve emoji pattern ([1bb3c91](https://github.com/welpo/tabi/commit/1bb3c91b91585bb6317ed0d82e6d0c0fbc36e0b6)) by [@welpo](https://github.com/welpo)
- *(CI)* Update git-sumi config ([1e468f4](https://github.com/welpo/tabi/commit/1e468f4acb9d671c630d4a13e2b6e11dce13ed78)) by [@welpo](https://github.com/welpo)
- *(CI)* Use git-sumi hook to lint commit messages ([71f09a8](https://github.com/welpo/tabi/commit/71f09a81b0c190d69e28a6c122b559560fc72a26)) by [@welpo](https://github.com/welpo)
- *(CI)* Fix links in tag description ([7cc74d1](https://github.com/welpo/tabi/commit/7cc74d1fd9fe10d671c240029660c0164e821db5)) by [@welpo](https://github.com/welpo)
- *(git-sumi)* Require a space after the gitmoji ([119533b](https://github.com/welpo/tabi/commit/119533b176da6bb182b1349eacc049bea85c2bac)) by [@welpo](https://github.com/welpo)
- *(release)* Verify version tag format on release ([fcf16a4](https://github.com/welpo/tabi/commit/fcf16a457eac2f6daa15c9e7159713e2c78de709)) by [@welpo](https://github.com/welpo)
- Use git-sumi to lint commit messages ([c193d4d](https://github.com/welpo/tabi/commit/c193d4d4e898def908ff923958ccab7af4023664)) by [@welpo](https://github.com/welpo)
- Update changelog sections ([0e6c5c2](https://github.com/welpo/tabi/commit/0e6c5c269177712ae58649fe24662b407315d3f1)) by [@welpo](https://github.com/welpo)
- Add continuous deployment workflow ([9b8b139](https://github.com/welpo/tabi/commit/9b8b1396cfaeefd61050cdf49bf81f01977e5899)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@TheAwiteb](https://github.com/TheAwiteb) made their first contribution in [#264](https://github.com/welpo/tabi/pull/264)

## [2.1.0](https://github.com/welpo/tabi/compare/v2.0.0..v2.1.0) - 2024-01-29

### ✨ Features

- Allow inverting previous/next article links ([#261](https://github.com/welpo/tabi/issues/261)) by [@ZzMzaw](https://github.com/ZzMzaw) and [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Add CSS code block setup in required config ([c9d6b62](https://github.com/welpo/tabi/commit/c9d6b629078f70f4392818a17a4a7ac6b11c0480)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@andwati](https://github.com/andwati) made their first contribution in [#257](https://github.com/welpo/tabi/pull/257)

## [2.0.0](https://github.com/welpo/tabi/compare/v1.0.0..v2.0.0) - 2024-01-15

### 💥 BREAKING CHANGES 💥

- *(i18n)* Force config.toml copyright translation ([#255](https://github.com/welpo/tabi/issues/255)) ([9f39b7f](https://github.com/welpo/tabi/commit/9f39b7fe47721eb7aaea04d8b9ee66b557b7eabf)) by [@welpo](https://github.com/welpo)
- *(home-banner)* Force proper header.img path ([#254](https://github.com/welpo/tabi/issues/254)) by [@welpo](https://github.com/welpo)

### ✨ Features

- *(a11y)* Add keyboard accessibility to theme toggler ([dce495e](https://github.com/welpo/tabi/commit/dce495e71d13c50fb5d2d57698fb350d72708609)) by [@welpo](https://github.com/welpo)
- *(archive)* Allow multiple sources in Archive ([#249](https://github.com/welpo/tabi/issues/249)) by [@welpo](https://github.com/welpo)
- *(socials)* Add Keybase icon ([#231](https://github.com/welpo/tabi/issues/231)) by [@arichtman](https://github.com/arichtman)
- *(tags)* Dynamically adjust tag list columns based on tag count ([#233](https://github.com/welpo/tabi/issues/233)) by [@welpo](https://github.com/welpo)
- *(tags)* Add `compact_tags` option ([#232](https://github.com/welpo/tabi/issues/232)) by [@welpo](https://github.com/welpo) and [@arichtman](https://github.com/arichtman)
- Add search functionality ([#250](https://github.com/welpo/tabi/issues/250)) by [@welpo](https://github.com/welpo)
- Adjust width of prev/next link section ([#248](https://github.com/welpo/tabi/issues/248)) by [@welpo](https://github.com/welpo)
- Add previous/next article navigation ([#246](https://github.com/welpo/tabi/issues/246)) by [@welpo](https://github.com/welpo)
- Add taxonomy list & single term templates ([#239](https://github.com/welpo/tabi/issues/239)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(archive)* Group multi-sourced posts by year ([2c8a21d](https://github.com/welpo/tabi/commit/2c8a21d558f5f6b3a208a3caf9a88b01c92ca0e1)) by [@welpo](https://github.com/welpo)
- *(i18n)* Localise date in single taxonomy listing ([0aef23b](https://github.com/welpo/tabi/commit/0aef23b3703ddedeff080525cbdede94451e7817)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(faq-languages)* Clarify setting default language ([c4e5a65](https://github.com/welpo/tabi/commit/c4e5a65908431188c0b95038ac10bd0d4a1cff8d)) by [@welpo](https://github.com/welpo)
- *(mastering-tabi)* Fix `browser_theme_color` spelling ([e2baa36](https://github.com/welpo/tabi/commit/e2baa36ddc229e2a6a4519d312045a5b89669b0d)) by [@welpo](https://github.com/welpo)
- *(mastering-tabi)* Favour GitHub discussions over comment section ([cd2cbf3](https://github.com/welpo/tabi/commit/cd2cbf36fa6cc4eafff925c7907ce2598227a88c)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- Format JS with Prettier ([#240](https://github.com/welpo/tabi/issues/240)) by [@welpo](https://github.com/welpo)

### 🗑️️ Deprecations

- *(home-banner)* [**‼️BREAKING‼️**] Force proper header.img path ([#254](https://github.com/welpo/tabi/issues/254)) by [@welpo](https://github.com/welpo)
- *(i18n)* [**‼️BREAKING‼️**] Force config.toml copyright translation ([#255](https://github.com/welpo/tabi/issues/255)) ([9f39b7f](https://github.com/welpo/tabi/commit/9f39b7fe47721eb7aaea04d8b9ee66b557b7eabf)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@arichtman](https://github.com/arichtman) made their first contribution in [#231](https://github.com/welpo/tabi/pull/231)

## 1.0.0 - 2023-12-29

### 💥 BREAKING CHANGES 💥

- *(theme-switcher)* Respect `theme_default` when JS is enabled ([#224](https://github.com/welpo/tabi/issues/224)) by [@welpo](https://github.com/welpo)

### ✨ Features

- *(HTML)* Respect `external_links_…` config ([#126](https://github.com/welpo/tabi/issues/126)) by [@welpo](https://github.com/welpo)
- *(SEO)* Add description support for sections ([#179](https://github.com/welpo/tabi/issues/179)) by [@donovanglover](https://github.com/donovanglover)
- *(ToC)* Implement setting hierarchy for ToC ([695e40b](https://github.com/welpo/tabi/commit/695e40be706a57023f9a4b69f82fdb05db77b9ec)) by [@welpo](https://github.com/welpo)
- *(alias)* Style redirect page ([#156](https://github.com/welpo/tabi/issues/156)) by [@welpo](https://github.com/welpo)
- *(archive)* Allow customising section for archive ([b987439](https://github.com/welpo/tabi/commit/b9874393b448e75b90945f32c5ea41aa5465fe25)) by [@welpo](https://github.com/welpo)
- *(atom)* Add `full_content_in_feed` option ([#164](https://github.com/welpo/tabi/issues/164)) by [@welpo](https://github.com/welpo)
- *(cards.html)* Render markdown content ([#201](https://github.com/welpo/tabi/issues/201)) by [@donovanglover](https://github.com/donovanglover)
- *(comments)* Allow page override of global system ([#216](https://github.com/welpo/tabi/issues/216)) by [@welpo](https://github.com/welpo)
- *(config)* Add dynamic stylesheet loading ([#118](https://github.com/welpo/tabi/issues/118)) by [@welpo](https://github.com/welpo)
- *(copyright)* Set copyright translations outside toml files & enhance $VARs ([#215](https://github.com/welpo/tabi/issues/215)) by [@ZzMzaw](https://github.com/ZzMzaw) and [@welpo](https://github.com/welpo)
- *(feed)* Support hiding pages and sections ([#227](https://github.com/welpo/tabi/issues/227)) by [@welpo](https://github.com/welpo)
- *(fonts)* Upgrade Inter to 4.0 ([012d819](https://github.com/welpo/tabi/commit/012d819f38f5b120c05830ebf0a0fed88f057c6e)) by [@welpo](https://github.com/welpo)
- *(fonts)* Optimise font size ([#186](https://github.com/welpo/tabi/issues/186)) by [@welpo](https://github.com/welpo)
- *(fonts)* Use woff2 & update fonts ([1c06c99](https://github.com/welpo/tabi/commit/1c06c9904772dd012c9c3b3752a537aeb8e1fc08)) by [@welpo](https://github.com/welpo)
- *(footer)* Add configurable footer menu ([#197](https://github.com/welpo/tabi/issues/197)) by [@welpo](https://github.com/welpo)
- *(footer)* Add configurable copyright notice ([#112](https://github.com/welpo/tabi/issues/112)) by [@welpo](https://github.com/welpo)
- *(footer)* Add link to remote repository ([#111](https://github.com/welpo/tabi/issues/111)) by [@welpo](https://github.com/welpo)
- *(footer)* Add link to remote repository ([99f6f2d](https://github.com/welpo/tabi/commit/99f6f2dcdc7bcab449f278fbad8cc4e9350071cd)) by [@welpo](https://github.com/welpo)
- *(footer/copyright)* Replace "$SEPARATOR" to `separator` ([f1edbba](https://github.com/welpo/tabi/commit/f1edbba8bd81a9f4253c582b95af1797ab828cff)) by [@welpo](https://github.com/welpo)
- *(footer/socials)* Add base64 encoded email protection ([427ffc7](https://github.com/welpo/tabi/commit/427ffc7241b32aba85f3dee67a2d371bb1c21420)) by [@welpo](https://github.com/welpo)
- *(header)* Cachebust custom font subset ([130aa51](https://github.com/welpo/tabi/commit/130aa51144f6c8bf84b06e4d6cb9daf75dacc4a2)) by [@welpo](https://github.com/welpo)
- *(header)* Add support for canonical URLs ([#168](https://github.com/welpo/tabi/issues/168)) by [@welpo](https://github.com/welpo)
- *(header)* Support multilingual meta tags in sections ([465bc55](https://github.com/welpo/tabi/commit/465bc55b9ab8263f55e0f83b9468a669c81b6ce8)) by [@welpo](https://github.com/welpo)
- *(header)* Add img_alt attribute for customisable alt text ([#153](https://github.com/welpo/tabi/issues/153)) by [@welpo](https://github.com/welpo)
- *(i18n)* Translate quick navigation buttons' titles ([c0a07cb](https://github.com/welpo/tabi/commit/c0a07cb4678c5b23bf1a049966f725c6d2c4b88a)) by [@welpo](https://github.com/welpo)
- *(i18n)* Overhaul translation system & add languages ([#145](https://github.com/welpo/tabi/issues/145)) by [@welpo](https://github.com/welpo)
- *(image shortcodes)* Add lazy loading ([#116](https://github.com/welpo/tabi/issues/116)) by [@welpo](https://github.com/welpo)
- *(info-page)* Enable arbitrary ToC location ([05ab241](https://github.com/welpo/tabi/commit/05ab241002be39dcc92b19b179329ada1579e6f4)) by [@welpo](https://github.com/welpo)
- *(list_posts.html)* Display draft status in post list ([#203](https://github.com/welpo/tabi/issues/203)) by [@xvello](https://github.com/xvello) and [@welpo](https://github.com/welpo)
- *(meta)* Allow hiding the read time indication on pages ([#124](https://github.com/welpo/tabi/issues/124)) by [@stevenroose](https://github.com/stevenroose) and [@welpo](https://github.com/welpo)
- *(multilingual-quote)* Allow missing author ([3cf9e3a](https://github.com/welpo/tabi/commit/3cf9e3ad8d193319e5313fff3a77a83aa1254e3b)) by [@welpo](https://github.com/welpo)
- *(pre-commit)* Improve robustness checking commands ([f98d23e](https://github.com/welpo/tabi/commit/f98d23ec937d07ef220ff043c500ac824a009367)) by [@welpo](https://github.com/welpo)
- *(pre-commit)* Sync config.toml and theme.toml [extra] ([1601fbf](https://github.com/welpo/tabi/commit/1601fbf30c66b90592acbae9e96ae80450d2d692)) by [@welpo](https://github.com/welpo)
- *(pre-commit)* Show which JS compressor is best ([cffe06f](https://github.com/welpo/tabi/commit/cffe06f44e695afc7c5e154ff8ec0084875240a6)) by [@welpo](https://github.com/welpo)
- *(pre-commit)* Check for JS minification ([1027c4f](https://github.com/welpo/tabi/commit/1027c4fd02bfde8d836cc69b869523f4053ee6e0)) by [@welpo](https://github.com/welpo)
- *(quick-navigation)* Add ToC button ([#115](https://github.com/welpo/tabi/issues/115)) by [@welpo](https://github.com/welpo)
- *(settings)* Add hierarchy-based setting overrides ([#128](https://github.com/welpo/tabi/issues/128)) by [@welpo](https://github.com/welpo)
- *(shortcode)* Add spoiler shortcode ([#113](https://github.com/welpo/tabi/issues/113)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Update image path retrieval and dimensions in shortcodes ([b841969](https://github.com/welpo/tabi/commit/b841969a8fc4a783a49bd98c6d690fc06f87dc08)) by [@welpo](https://github.com/welpo)
- *(sitemap)* Mention baseurl in header & title ([381f41d](https://github.com/welpo/tabi/commit/381f41dd0dc4cee56fd13b05f05333085e668b23)) by [@welpo](https://github.com/welpo)
- *(sitemap)* Add XML styling ([#221](https://github.com/welpo/tabi/issues/221)) by [@welpo](https://github.com/welpo)
- *(social-icons)* Add Matrix icon ([28fb525](https://github.com/welpo/tabi/commit/28fb52581fc6bd20b0a2cce084bea858ce2a8b63)) by [@welpo](https://github.com/welpo)
- *(social-icons)* Add X icon ([b797879](https://github.com/welpo/tabi/commit/b797879403406063560864899b717785b1fcd359)) by [@welpo](https://github.com/welpo)
- *(social-media-cards)* Support relative paths ([#163](https://github.com/welpo/tabi/issues/163)) by [@welpo](https://github.com/welpo)
- *(social-media-cards)* Add support for twitter:image ([22579a5](https://github.com/welpo/tabi/commit/22579a59743c5f1e0531de025c8402d4379736eb)) by [@welpo](https://github.com/welpo)
- *(socials)* Add Nostr icon ([79af568](https://github.com/welpo/tabi/commit/79af5680784fe0d16644d8102863725d5bb909e5)) by [@welpo](https://github.com/welpo)
- *(socials)* Add Google Scholar icon ([dd76c18](https://github.com/welpo/tabi/commit/dd76c18faa8633713832fafe3dcf1a8b05ed0335)) by [@welpo](https://github.com/welpo)
- *(templates)* Introduce info-page template ([#147](https://github.com/welpo/tabi/issues/147)) by [@welpo](https://github.com/welpo)
- *(theme-switcher)* [**‼️BREAKING‼️**] Respect `theme_default` when JS is enabled ([#224](https://github.com/welpo/tabi/issues/224)) by [@welpo](https://github.com/welpo)
- *(theme-switcher)* Add theme reset button ([#198](https://github.com/welpo/tabi/issues/198)) by [@welpo](https://github.com/welpo)
- *(theme-switcher)* Hide button if JS is disabled ([113a7f4](https://github.com/welpo/tabi/commit/113a7f4e5d4efd87646f8c26f81b7754ea7f41e2)) by [@welpo](https://github.com/welpo)
- *(title)* Add `invert_title_order` config option ([#142](https://github.com/welpo/tabi/issues/142)) by [@welpo](https://github.com/welpo)
- Allow relative paths for image shortcodes ([#222](https://github.com/welpo/tabi/issues/222)) by [@welpo](https://github.com/welpo)
- Improve clickability cue by adding pointer cursor to details summary ([1e33b9b](https://github.com/welpo/tabi/commit/1e33b9bc1f3cc995a1ed7e265a106d194c8dfcef)) by [@welpo](https://github.com/welpo)
- Support privacy-respecting analytics ([#193](https://github.com/welpo/tabi/issues/193)) by [@welpo](https://github.com/welpo)
- Allow internal project links ([#157](https://github.com/welpo/tabi/issues/157)) by [@welpo](https://github.com/welpo)
- Enhance SEO and accessibility with meta tags ([#154](https://github.com/welpo/tabi/issues/154)) by [@welpo](https://github.com/welpo)
- Add `browser_theme_color` config option ([#143](https://github.com/welpo/tabi/issues/143)) by [@welpo](https://github.com/welpo)
- Add support for social media cards ([#130](https://github.com/welpo/tabi/issues/130)) by [@welpo](https://github.com/welpo)
- Add base64 encoded email protection ([#110](https://github.com/welpo/tabi/issues/110)) by [@welpo](https://github.com/welpo)
- Avoid commiting drafts ([6cb2327](https://github.com/welpo/tabi/commit/6cb23279075211380e748bdb535fe38853ff6199)) by [@welpo](https://github.com/welpo)
- Add pre-commit hook ([22d8ae6](https://github.com/welpo/tabi/commit/22d8ae6b8aecac19500b70488f3d8f269b7f0e96)) by [@welpo](https://github.com/welpo)
- Add support for remote codeberg repositories ([b5fae83](https://github.com/welpo/tabi/commit/b5fae83f28800ad6ef5a34180d84f05c8fe72849)) by [@welpo](https://github.com/welpo)
- Add link to commit history on updated articles ([#109](https://github.com/welpo/tabi/issues/109)) by [@welpo](https://github.com/welpo)
- Overhaul Table of Contents ([#108](https://github.com/welpo/tabi/issues/108)) by [@welpo](https://github.com/welpo)
- Enhance Table of Contents ([07ceddc](https://github.com/welpo/tabi/commit/07ceddcc007b948e697da8a2dcf62edc37d91c6e)) by [@welpo](https://github.com/welpo)
- Add `toc_levels` to control ToC depth ([965af4b](https://github.com/welpo/tabi/commit/965af4b3dd35d1c5f24b4aa0ba847804e0d3c3da)) by [@welpo](https://github.com/welpo)
- Add wide container shortcode ([#107](https://github.com/welpo/tabi/issues/107)) by [@welpo](https://github.com/welpo)
- Add wide container shortcode ([fb0dea0](https://github.com/welpo/tabi/commit/fb0dea01067c91cf9d91eeb14ac8bf41842645e8)) by [@welpo](https://github.com/welpo)
- Add `rel=me` attribute to social links ([4952ce8](https://github.com/welpo/tabi/commit/4952ce88f14d5d39d583926eaac7460b9783bff3)) by [@welpo](https://github.com/welpo)
- Introduce skins to customise the theme ([#105](https://github.com/welpo/tabi/issues/105)) by [@welpo](https://github.com/welpo)
- Add pointer cursor to image toggler ([d2780f4](https://github.com/welpo/tabi/commit/d2780f42a3b5caff5c920be4580e01f966e30362)) by [@welpo](https://github.com/welpo)
- Add `cachebust` for `main.css` ([2f83ef8](https://github.com/welpo/tabi/commit/2f83ef80621245d8a497c0a2ccfd7d4c375ce2b2)) by [@welpo](https://github.com/welpo)
- Add 2 interactive image shortcodes by [@welpo](https://github.com/welpo)
- Add 2 interactive image shortcodes ([7ccd717](https://github.com/welpo/tabi/commit/7ccd71736eb8c3e7ee1114b271e8b698bdf5df18)) by [@welpo](https://github.com/welpo)
- Allow setting default theme by [@welpo](https://github.com/welpo)
- Allow setting the default theme ([c78c7f5](https://github.com/welpo/tabi/commit/c78c7f5bd1d1f5f5d8d37daade0ff27a7a59b479)) by [@welpo](https://github.com/welpo)
- Global/individual toggle for KaTeX and copy button ([edcfa35](https://github.com/welpo/tabi/commit/edcfa359ef1abab43d5bedf77a24c3fab27f0297)) by [@welpo](https://github.com/welpo)
- Add backlinks to footnotes ([#101](https://github.com/welpo/tabi/issues/101)) by [@welpo](https://github.com/welpo)
- Optional trailing slash in menu links ([f9c18b0](https://github.com/welpo/tabi/commit/f9c18b03987a7077301992f8369f4de75e270a2a)) by [@welpo](https://github.com/welpo)
- Add JavaScript notice for comments ([09e5bc1](https://github.com/welpo/tabi/commit/09e5bc1aa3f09ccf83c126cd8dc1b0ef6edcb4dd)) by [@welpo](https://github.com/welpo)
- Add support for Isso comments by [@welpo](https://github.com/welpo)
- Add support for Isso comments ([9a98789](https://github.com/welpo/tabi/commit/9a98789922ce7dee96e0fab6ebbc9ba0c5499e80)) by [@welpo](https://github.com/welpo)
- Add support for Hyvor Talk comments by [@welpo](https://github.com/welpo)
- Add support for Hyvor Talk comments ([7924e82](https://github.com/welpo/tabi/commit/7924e8206c17423c9043453fb37bc394f8676345)) by [@welpo](https://github.com/welpo)
- Add quick navigation buttons by [@welpo](https://github.com/welpo)
- Add quick navigation buttons ([05a6d15](https://github.com/welpo/tabi/commit/05a6d15455a0ecc41f071ce03fbed5aaf16d38b5)) by [@welpo](https://github.com/welpo)
- Add support for giscus & utterances comments by [@welpo](https://github.com/welpo)
- Add support for giscus and utterances ([5993e95](https://github.com/welpo/tabi/commit/5993e950c7a6084f069403e3a98c85aa643654f7)) by [@welpo](https://github.com/welpo)
- Add support for giscus & utterances comments ([19d1200](https://github.com/welpo/tabi/commit/19d120019b6f8c7041965895dad2764dc2aa4f5d)) by [@welpo](https://github.com/welpo)
- Add utterances support ([93c8b57](https://github.com/welpo/tabi/commit/93c8b577b87aaa928a13b5696d7b3ebc91aa6cce)) by [@welpo](https://github.com/welpo)
- Add copy button to code blocks by [@welpo](https://github.com/welpo)
- Add copy button to code blocks ([2dec139](https://github.com/welpo/tabi/commit/2dec139e41ffe558b7d8fdd785ed5f1889d6723b)) by [@welpo](https://github.com/welpo)
- Add basic copy button to codeblocks ([8e1473b](https://github.com/welpo/tabi/commit/8e1473bba916523f4d1855d4c631e78d603443ba)) by [@welpo](https://github.com/welpo)
- Add full-width image option to shortcodes  by [@welpo](https://github.com/welpo)
- Add full-width image option to shortcodes ([fd50204](https://github.com/welpo/tabi/commit/fd50204e32aee4402835263f9e420adbc2f6cb8e)) by [@welpo](https://github.com/welpo)
- Custom feed content and style by [@welpo](https://github.com/welpo)
- Style xml feed ([1b60be8](https://github.com/welpo/tabi/commit/1b60be8c9d4e28645e713672eeb1b9dbdf4e1789)) by [@welpo](https://github.com/welpo)
- Use page description as summary ([54e88be](https://github.com/welpo/tabi/commit/54e88beca21976a350ce6babd9fe10b07d658cf4)) by [@welpo](https://github.com/welpo)
- Add custom quotation marks for multilingual quotes ([dd73e52](https://github.com/welpo/tabi/commit/dd73e527298c1c4357e48589314bfd9302323c27)) by [@welpo](https://github.com/welpo)
- Add multilingual quote shortcode ([ab29511](https://github.com/welpo/tabi/commit/ab29511d5e7f44ba5cc07e1a29c0d678c24b3cd4)) by [@welpo](https://github.com/welpo)
- Allow using emojis as favicon ([fb061a1](https://github.com/welpo/tabi/commit/fb061a14697d45700996f32b568826b4f02764c7)) by [@welpo](https://github.com/welpo)
- Include layout features in font subset ([534969d](https://github.com/welpo/tabi/commit/534969de11930ec957d6ea4eea658324a3d29497)) by [@welpo](https://github.com/welpo)
- Add multi-language support ([fa92293](https://github.com/welpo/tabi/commit/fa9229377d03f229b4deb68bad7cf63b2f88f9fe)) by [@welpo](https://github.com/welpo)
- Set width and height of project images ([8b5726c](https://github.com/welpo/tabi/commit/8b5726c34e04238b0371fb3dbd11cafaaff580f0)) by [@welpo](https://github.com/welpo)
- Add KaTeX support ([f9335b3](https://github.com/welpo/tabi/commit/f9335b3fa45f27788cdb9c8d26ddfe4b714070c4)) by [@welpo](https://github.com/welpo)
- Make JS light/dark toggle optional ([1803987](https://github.com/welpo/tabi/commit/1803987555cbbe0aea1ab673907192e734a55425)) by [@welpo](https://github.com/welpo)
- Use github pages for live preview ([a36823d](https://github.com/welpo/tabi/commit/a36823d672e3894ac428642d433c5506cdbbe728)) by [@welpo](https://github.com/welpo)
- Allow dual date-format (short/long) by [@welpo](https://github.com/welpo)
- Allow dual date-format (short/long) ([9887fb0](https://github.com/welpo/tabi/commit/9887fb0a6f9f0e94d9d7faca57c62fb3549bdb83)) by [@welpo](https://github.com/welpo)
- Add 'Last updated' extra tag by [@welpo](https://github.com/welpo)
- Add 'Last updated' extra tag ([ed47f25](https://github.com/welpo/tabi/commit/ed47f2580ba4f8f15188c67f3b788b7472f4d78b)) by [@welpo](https://github.com/welpo)
- Add dual image support for switching themes by [@welpo](https://github.com/welpo)
- Add dual image support for switching themes ([b3dc539](https://github.com/welpo/tabi/commit/b3dc5396b4c429537f82afb8cd63a67146b5b9ac)) by [@welpo](https://github.com/welpo)
- Use custom separator from config in meta & title ([aa00640](https://github.com/welpo/tabi/commit/aa00640e96a6e0934e7792f384f09ec476f3bdb7)) by [@welpo](https://github.com/welpo)
- Allow customizable secure headers (CSP) ([d7caa7a](https://github.com/welpo/tabi/commit/d7caa7af5fc5d0096fbb402b0b8ce53930f3d56f)) by [@welpo](https://github.com/welpo)
- Display word count when hovering over read time ([d9cd64e](https://github.com/welpo/tabi/commit/d9cd64e5a40c154c89d91b8b649348bcabfafb71)) by [@welpo](https://github.com/welpo)
- Responsive (and centered) images ([9242fa4](https://github.com/welpo/tabi/commit/9242fa4389cd2ce418c2074aa00afc8107e753d0)) by [@welpo](https://github.com/welpo)
- Clean js code ([2f80b0b](https://github.com/welpo/tabi/commit/2f80b0b5ad481d53d5621f84bffd3415fc078672)) by [@serginogal](https://github.com/serginogal)
- Change default theme to OS setting ([26ad170](https://github.com/welpo/tabi/commit/26ad170d9fee316fb3eb131cc664cd1eed9e1cfe)) by [@welpo](https://github.com/welpo)
- Add dimmable-image shortcode for dark theme ([174a37e](https://github.com/welpo/tabi/commit/174a37e221dc0b38eb1160bbf320c7b03b73d901)) by [@welpo](https://github.com/welpo)
- Showcase invertable image ([0bae051](https://github.com/welpo/tabi/commit/0bae0515ec4579e26a827dba907f890198df01eb)) by [@welpo](https://github.com/welpo)
- Showcase invertable image ([2f4695d](https://github.com/welpo/tabi/commit/2f4695dd0bcec55357f1c8829fbdf5aee8d76f9a)) by [@welpo](https://github.com/welpo)
- Add Archive page to features. ([999861b](https://github.com/welpo/tabi/commit/999861ba583706b63e73fb7f675bedacaaf5bce4)) by [@welpo](https://github.com/welpo)
- Remove Archive from TODO ([559c97d](https://github.com/welpo/tabi/commit/559c97d1f3a6f2e1da760ccb6adb5a20b5fe5b44)) by [@welpo](https://github.com/welpo)
- Add archive screen ([3434cbc](https://github.com/welpo/tabi/commit/3434cbc92630d7a60963f51990216facd586e546)) by [@serginogal](https://github.com/serginogal)
- Change markdown description style ([c29697c](https://github.com/welpo/tabi/commit/c29697c4212d59588b75013c473790cd97445164)) by [@serginogal](https://github.com/serginogal)
- Add markdown support to index page ([c6ec7c7](https://github.com/welpo/tabi/commit/c6ec7c750588562c3a14c1ee0f2a7d00f467bbd6)) by [@serginogal](https://github.com/serginogal)
- Set Table of Contents per page, not globally ([32d4a93](https://github.com/welpo/tabi/commit/32d4a9358ce14c9dce687520e7c58cb93d07a7b6)) by [@welpo](https://github.com/welpo)

### 🐛 Bug fixes

- *(SEO)* Set proper social image cards ([b26902d](https://github.com/welpo/tabi/commit/b26902da1667ecfaf5649dc9637360658c135faf)) by [@welpo](https://github.com/welpo)
- *(a11y)* Update heading tags ([#140](https://github.com/welpo/tabi/issues/140)) by [@welpo](https://github.com/welpo)
- *(analytics)* Make goatcounter use https ([#195](https://github.com/welpo/tabi/issues/195)) by [@nyadiia](https://github.com/nyadiia)
- *(atom)* Remove safe filter; allow content & summary ([#165](https://github.com/welpo/tabi/issues/165)) by [@SeaDve](https://github.com/SeaDve)
- *(atom)* Escape HTML in feed summary ([4610073](https://github.com/welpo/tabi/commit/46100730fa59d6f14d3565e87b48fad5d69afab5)) by [@welpo](https://github.com/welpo)
- *(comments)* Fix malformed URLs in Isso mails ([#211](https://github.com/welpo/tabi/issues/211)) by [@welpo](https://github.com/welpo)
- *(favicon)* Use `get_url` for favicon ([ab4b523](https://github.com/welpo/tabi/commit/ab4b523f9c7efa431dee4780c5b701c7496faa2d)) by [@welpo](https://github.com/welpo)
- *(fonts)* Fix extension woff -> woff2 ([5aece98](https://github.com/welpo/tabi/commit/5aece9856a23f79143e90e91747e9f852903810b)) by [@welpo](https://github.com/welpo)
- *(footer)* Fix external link redirection in footer ([#219](https://github.com/welpo/tabi/issues/219)) by [@joberthrogers18](https://github.com/joberthrogers18) and [@welpo](https://github.com/welpo)
- *(footer)* Render footer again ([3344f80](https://github.com/welpo/tabi/commit/3344f80539d837df10523160083d91c55b04f58f)) by [@welpo](https://github.com/welpo)
- *(footer)* Remove extra space between "tabi" and separator ([12b9184](https://github.com/welpo/tabi/commit/12b9184f15edc26acfd442923dd6d9f3bcfa9615)) by [@welpo](https://github.com/welpo)
- *(format_date)* Actually use `short_date_format` ([#119](https://github.com/welpo/tabi/issues/119)) by [@stevenroose](https://github.com/stevenroose)
- *(header)* Add quotes to custom subset links ([1221eee](https://github.com/welpo/tabi/commit/1221eeeb41c17556784c27d98d18a0d75cdbfc52)) by [@welpo](https://github.com/welpo)
- *(header)* Correct self-closing script tag ([94f7a36](https://github.com/welpo/tabi/commit/94f7a367075b0bfeacccad44742d52f7732ff3c3)) by [@welpo](https://github.com/welpo)
- *(header)* Check if translations exist while building tags ([#159](https://github.com/welpo/tabi/issues/159)) by [@welpo](https://github.com/welpo)
- *(header)* Don't fail if custom_subset absent ([#132](https://github.com/welpo/tabi/issues/132)) by [@xvello](https://github.com/xvello)
- *(home-banner)* Allow missing image & correct spacing ([#123](https://github.com/welpo/tabi/issues/123)) by [@welpo](https://github.com/welpo)
- *(html)* Remove unused self-closing tags ([#176](https://github.com/welpo/tabi/issues/176)) by [@donovanglover](https://github.com/donovanglover)
- *(hyvor-talk)* Switch from ID to class selector for initialisation ([#196](https://github.com/welpo/tabi/issues/196)) by [@welpo](https://github.com/welpo)
- *(i18n)* Use English by default in atom.xml ([#167](https://github.com/welpo/tabi/issues/167)) by [@donovanglover](https://github.com/donovanglover)
- *(i18n-es)* Correct 'of' translation ([0b6cb31](https://github.com/welpo/tabi/commit/0b6cb31bba927315c975dfe5bcf12b691a6e2573)) by [@welpo](https://github.com/welpo)
- *(isso-comments)* Actually set maxCommentsNested ([47c493b](https://github.com/welpo/tabi/commit/47c493be89cfb58ab3945ff30da618767330fe1a)) by [@welpo](https://github.com/welpo)
- *(multilingual-quote)* Open <p> regardless of attribution ([01d5322](https://github.com/welpo/tabi/commit/01d5322ef355af0b4bff9bbaf072305b45ba9f0b)) by [@welpo](https://github.com/welpo)
- *(quick-navigation)* Limit width of toc ([#204](https://github.com/welpo/tabi/issues/204)) by [@donovanglover](https://github.com/donovanglover)
- *(quick-navigation-buttons)* Fix overlapping background change ([f4c8826](https://github.com/welpo/tabi/commit/f4c88266e7160010ee739273c16e7b66c95f5e4a)) by [@welpo](https://github.com/welpo)
- *(sitemap)* Use the base url for JS/CSS loading ([c8a1705](https://github.com/welpo/tabi/commit/c8a1705b51984666af676181bf24eb0352c684c1)) by [@welpo](https://github.com/welpo)
- *(skins)* Load `teal` if set in config ([3e30557](https://github.com/welpo/tabi/commit/3e30557dca2b1d378e959eb0af41fa96fadfaf9c)) by [@welpo](https://github.com/welpo)
- *(style)* Proper nested lists spacing ([#218](https://github.com/welpo/tabi/issues/218)) by [@xvello](https://github.com/xvello)
- *(style)* Add line-height to .section-title ([#205](https://github.com/welpo/tabi/issues/205)) by [@donovanglover](https://github.com/donovanglover)
- *(style)* Prevent videos from overflowing container ([#185](https://github.com/welpo/tabi/issues/185)) by [@donovanglover](https://github.com/donovanglover)
- *(styled feed)* Url to "Visit Website" ([68e37f4](https://github.com/welpo/tabi/commit/68e37f4574d9bf0183d76286a45c39e824790e68)) by [@welpo](https://github.com/welpo)
- *(stylised-feed)* Set proper date class ([#207](https://github.com/welpo/tabi/issues/207)) by [@welpo](https://github.com/welpo)
- *(theme-switcher)* Match functionality of minified and non-minified files ([ee2b171](https://github.com/welpo/tabi/commit/ee2b171fbd0c79b7374dda807fe223c72f81e9d5)) by [@welpo](https://github.com/welpo)
- *(theme-switcher)* Properly translate aria-label ([#192](https://github.com/welpo/tabi/issues/192)) by [@Almost-Senseless-Coder](https://github.com/Almost-Senseless-Coder), [@Tim](https://github.com/Tim) Böttcher and [@welpo](https://github.com/welpo)
- Prevent background overflow on link hover ([#226](https://github.com/welpo/tabi/issues/226)) by [@welpo](https://github.com/welpo)
- Remove unnecessary description filters ([6673a06](https://github.com/welpo/tabi/commit/6673a063b8968d39b8396bc83242f779615a14c7)) by [@welpo](https://github.com/welpo)
- Improve accessibility and i18n ([#183](https://github.com/welpo/tabi/issues/183)) by [@welpo](https://github.com/welpo)
- Allow live reload when zola is in `serve` mode ([#144](https://github.com/welpo/tabi/issues/144)) by [@welpo](https://github.com/welpo)
- `is_draft` returning opposite value ([adb702f](https://github.com/welpo/tabi/commit/adb702f3c36ee19b43805b7cb27a5b97d9653ecc)) by [@welpo](https://github.com/welpo)
- Check proper `toc_ignore_pattern` ([fe872a7](https://github.com/welpo/tabi/commit/fe872a7b54f8c24c3bb4d678c72d4f17b6f6d396)) by [@welpo](https://github.com/welpo)
- Move `default_language` to proper section ([52d0ac9](https://github.com/welpo/tabi/commit/52d0ac944794d8590db5cda81015b1181ea83971)) by [@welpo](https://github.com/welpo)
- Update bug report link format ([6178e8e](https://github.com/welpo/tabi/commit/6178e8e642fce10fcb2be378dc4440b754fe804d)) by [@welpo](https://github.com/welpo)
- Revert flex display (b1b98eb) ([8cfab98](https://github.com/welpo/tabi/commit/8cfab98e721d9dccc05b2d5f187ddeb2248930b7)) by [@welpo](https://github.com/welpo)
- Remove flex display on full-width elements ([56a53dc](https://github.com/welpo/tabi/commit/56a53dce0cf131c73474d33612a429a80ab1cfdc)) by [@welpo](https://github.com/welpo)
- Improve contrast on `code` within links on hover ([f8891db](https://github.com/welpo/tabi/commit/f8891dba2cc0d1a8619bf9b01bb06e4c7560b7ec)) by [@welpo](https://github.com/welpo)
- Draft margin ([8949db4](https://github.com/welpo/tabi/commit/8949db43e136e2646bbf7ff3da4a833e838796e4)) by [@welpo](https://github.com/welpo)
- Add missing images for new shortcodes ([9ad0883](https://github.com/welpo/tabi/commit/9ad08838c78d51400bcb059781a708ccff0cdaf6)) by [@welpo](https://github.com/welpo)
- Set proper color-scheme meta ([638d75c](https://github.com/welpo/tabi/commit/638d75c819ab00f5f4812109bc87c9a9918b20c1)) by [@welpo](https://github.com/welpo)
- Remove extra newlines in final html ([ab879e3](https://github.com/welpo/tabi/commit/ab879e372705ff73b1bb4316f2ceca6b92f7cdf3)) by [@welpo](https://github.com/welpo)
- Align text to left codeblocks with line numbers ([672772a](https://github.com/welpo/tabi/commit/672772a700de4d4b23e5b18b0ae4fa1cd3aca797)) by [@welpo](https://github.com/welpo)
- Correct CSS path for GitHub pages ([b2ca636](https://github.com/welpo/tabi/commit/b2ca636eb98ff7e2361a1db5da3b349bf566846d)) by [@welpo](https://github.com/welpo)
- Path to main.css ([86ab1c5](https://github.com/welpo/tabi/commit/86ab1c5f06238ae868b06b139852b0638dba5d7d)) by [@welpo](https://github.com/welpo)
- Use relative path to main.css ([e7bd988](https://github.com/welpo/tabi/commit/e7bd988a52dc3db988e0715f8f2948aec2220360)) by [@welpo](https://github.com/welpo)
- Multilingual issues in feeds and 'nav.html' by [@welpo](https://github.com/welpo)
- Load English stylesheet as fallback ([f3a0dd7](https://github.com/welpo/tabi/commit/f3a0dd7f96dbb8fbd1073f66288133db348917e8)) by [@welpo](https://github.com/welpo)
- Multilingual issues in feeds and 'nav.html' ([e7dc5eb](https://github.com/welpo/tabi/commit/e7dc5eb44e5c7f6bd00c3d2337438b8481d8101b)) by [@Smtbook](https://github.com/Smtbook)
- Properly initialise `currentTheme` ([e1dfd2e](https://github.com/welpo/tabi/commit/e1dfd2ea0767ac7327244961c920031a8291c249)) by [@welpo](https://github.com/welpo)
- Replace "y" with "i" ([f5e9ad8](https://github.com/welpo/tabi/commit/f5e9ad8c8a689a593af88d0ca62b11d74bbb76ce)) by [@welpo](https://github.com/welpo)
- Use proper meta descriptions ([3e215e1](https://github.com/welpo/tabi/commit/3e215e18e29ec42761a9cd52c2f81612e3311acd)) by [@welpo](https://github.com/welpo)
- Ensure codeblock header visibility on iOS ([abf32b8](https://github.com/welpo/tabi/commit/abf32b8147046b03270b92b5c9cf9ea69428b863)) by [@welpo](https://github.com/welpo)
- Properly check for `theme_switcher` setting ([f710b62](https://github.com/welpo/tabi/commit/f710b62631ab2b3cb791bccd624c40b249c57fb0)) by [@welpo](https://github.com/welpo)
- Remove leading slash from css href ([a6dfd4d](https://github.com/welpo/tabi/commit/a6dfd4d1ba5e781b4d26047a37f925e307de0e6c)) by [@welpo](https://github.com/welpo)
- Remove leading slash from xsl href ([19bebde](https://github.com/welpo/tabi/commit/19bebde14819d8285e50e7ec3cdd1045c66de2a4)) by [@welpo](https://github.com/welpo)
- Set svg max-height only for social icons ([4df7cdc](https://github.com/welpo/tabi/commit/4df7cdcb7a06ce6ace7463d727e7719a4d9d8c13)) by [@welpo](https://github.com/welpo)
- Generate random id for multilingual quotes ([0e1a514](https://github.com/welpo/tabi/commit/0e1a5143c0bba6eee11de0b461400b6a85709281)) by [@welpo](https://github.com/welpo)
- Proper URL for multilingual rss/atom feeds ([56a3061](https://github.com/welpo/tabi/commit/56a3061573de3e4e7feb044d51091c7f2671cc01)) by [@welpo](https://github.com/welpo)
- Mention translations in 404 if there's more than 1 language ([58d0dd6](https://github.com/welpo/tabi/commit/58d0dd6f2f918cc0ce8eb649d521d8a385e94bd0)) by [@welpo](https://github.com/welpo)
- Show language switcher if there's more than 1 language ([5ac69fe](https://github.com/welpo/tabi/commit/5ac69fe21d3b588dea38c84f3b38d8ec5e69d5ce)) by [@welpo](https://github.com/welpo)
- Avoid empty dates when long_date_format is empty ([eded835](https://github.com/welpo/tabi/commit/eded835d3fcfce781393dd4f448ef907fd916316)) by [@welpo](https://github.com/welpo)
- Remove extra backtick ([358e78d](https://github.com/welpo/tabi/commit/358e78d25a6afa7010933bfbb18ce89845c3a4dc)) by [@welpo](https://github.com/welpo)
- Remove flashing from header text (Firefox) ([a5981e6](https://github.com/welpo/tabi/commit/a5981e6fdd5528d0c0461806c48d6ce573839621)) by [@welpo](https://github.com/welpo)
- Remove flash when navigating in dark-mode ([1efb033](https://github.com/welpo/tabi/commit/1efb0330e3926235cde79bdaec9bf157dc6d1743)) by [@welpo](https://github.com/welpo)
- Only load script when themeswitcher is enabled ([556570d](https://github.com/welpo/tabi/commit/556570d799362716c6a0b174378639206646242e)) by [@welpo](https://github.com/welpo)
- Handle missing image metadata gracefully ([b5b50cd](https://github.com/welpo/tabi/commit/b5b50cdefbf1864778fbb5bbb3a83869811b39ac)) by [@welpo](https://github.com/welpo)
- Properly end macro ([7aa6142](https://github.com/welpo/tabi/commit/7aa61422a8f642384a0be8a5e92e1e26c334e6a5)) by [@welpo](https://github.com/welpo)
- Set proper scope to transparent hover for anchor ([050f546](https://github.com/welpo/tabi/commit/050f546e27f5bcfc1e5500b33279f82ef45c0caa)) by [@welpo](https://github.com/welpo)
- Remove double equals in updated field ([dcf1af5](https://github.com/welpo/tabi/commit/dcf1af5ec5211bb8e4d97e4cafd21b08d2287ade)) by [@welpo](https://github.com/welpo)
- Fix screenshot path ([110c872](https://github.com/welpo/tabi/commit/110c8723c39dcae23baeff6f34c501c78fbc8643)) by [@welpo](https://github.com/welpo)
- Clarify requirements for A+ Observatory score ([4d18be3](https://github.com/welpo/tabi/commit/4d18be3a83557b6268f6d8b7de9f69c34ceacd27)) by [@welpo](https://github.com/welpo)
- Clarify requirements for A+ Observatory score ([65a3fce](https://github.com/welpo/tabi/commit/65a3fcebba7c66209c9ac7e779c5bfe116c5eb1a)) by [@welpo](https://github.com/welpo)
- Enable github pages ([1b5ed15](https://github.com/welpo/tabi/commit/1b5ed1546ae25bf0e5cc7e74cb922340668cf987)) by [@welpo](https://github.com/welpo)
- Use personal access token ([fded2bd](https://github.com/welpo/tabi/commit/fded2bd53ead80954c253570aad413c19cd00763)) by [@welpo](https://github.com/welpo)
- Update token ([91de9ad](https://github.com/welpo/tabi/commit/91de9ad036597aaec3ea24c29f81531bdebed523)) by [@welpo](https://github.com/welpo)
- Use latest zola-deploy-action ([19bd85f](https://github.com/welpo/tabi/commit/19bd85f8db1bb5709c85907e86f47fca8402a5f6)) by [@welpo](https://github.com/welpo)
- Remove header link background change on hover ([884cc90](https://github.com/welpo/tabi/commit/884cc9043969ac619519924f88b5b80cbc6a6b36)) by [@welpo](https://github.com/welpo)
- Remove horizontall scroll on mobile ([e93b33e](https://github.com/welpo/tabi/commit/e93b33e6b88c2016741b220dd9e0dac3ccd0dd01)) by [@welpo](https://github.com/welpo)
- Remove newlines around `<title>` from source code ([ac0495e](https://github.com/welpo/tabi/commit/ac0495ea6990f14a060cc909138b0fce32699bfd)) by [@welpo](https://github.com/welpo)
- Remove h1 permalinkbackground on hover ([667f15a](https://github.com/welpo/tabi/commit/667f15abb2ba77cbf7250c71209c3eb8d6faa125)) by [@welpo](https://github.com/welpo)
- Improve tap target sizing for tags ([9560103](https://github.com/welpo/tabi/commit/9560103ce7d35d633046f6c10d4117040a66aa47)) by [@welpo](https://github.com/welpo)
- Improve accessibility by [@welpo](https://github.com/welpo)
- Improve accessibility in lists & taps ([50b8d5f](https://github.com/welpo/tabi/commit/50b8d5fc7b022ace56ccf81dcf8766aa4963d6b8)) by [@welpo](https://github.com/welpo)
- Update year to current year ([abfe2f9](https://github.com/welpo/tabi/commit/abfe2f9dc88ce6ec05f63feacd3998db2e9696f6)) by [@welpo](https://github.com/welpo)
- Prevent malformed CSP header ([54ae781](https://github.com/welpo/tabi/commit/54ae7813529008822e4938724ecab83679db3d95)) by [@welpo](https://github.com/welpo)
- Minor typo ([799b31d](https://github.com/welpo/tabi/commit/799b31d403a45abafddd270c471b8898972c2f06)) by [@welpo](https://github.com/welpo)
- Rename sun icon reference ([2f4d065](https://github.com/welpo/tabi/commit/2f4d0658d8908785c7627362e5b2a7eaa96e48e2)) by [@welpo](https://github.com/welpo)
- Set main image path relative to base_url ([f555d34](https://github.com/welpo/tabi/commit/f555d3420778db4c27a56c89520dfd1d421b0d58)) by [@welpo](https://github.com/welpo)
- Override font-size for home subtitle <p> ([2732f49](https://github.com/welpo/tabi/commit/2732f494cfdf3314b45153f621acff6fdb4042a1)) by [@welpo](https://github.com/welpo)
- Set remote Zola url ([1845649](https://github.com/welpo/tabi/commit/1845649613482823dbf9a597452a073425aed128)) by [@welpo](https://github.com/welpo)
- Use serif as fallback ([c65eea1](https://github.com/welpo/tabi/commit/c65eea156ce391942daa61188b2f9393013af40e)) by [@welpo](https://github.com/welpo)
- Close div class"tags-item" ([5c48acb](https://github.com/welpo/tabi/commit/5c48acba582158662c13760744e8e6a4d81646dd)) by [@welpo](https://github.com/welpo)
- Atom feed alt description ([d41c9b5](https://github.com/welpo/tabi/commit/d41c9b5c86eafe34f2d3befb4bfd81a383e1ee66)) by [@welpo](https://github.com/welpo)
- Remove double bottom-boder/div on Archive ([6e47145](https://github.com/welpo/tabi/commit/6e471450c6fa5608d40e870ccb08fa4a9697c9b9)) by [@welpo](https://github.com/welpo)
- Add end-of-file newline ([099f094](https://github.com/welpo/tabi/commit/099f094f317b84b5748a9a83796fabfb29dafc7f)) by [@welpo](https://github.com/welpo)
- _archive import typo ([55d928a](https://github.com/welpo/tabi/commit/55d928a3d59279eb5c54c861c293de3714342c48)) by [@serginogal](https://github.com/serginogal)
- Capitalise Archive title ([31f70ff](https://github.com/welpo/tabi/commit/31f70fffafd0a0adc0cae41368bbfbd25fb27880)) by [@welpo](https://github.com/welpo)
- Update theme screenshot in /projects ([32ca1d3](https://github.com/welpo/tabi/commit/32ca1d3e9e8823ec05a629addbdcead5b54e2a18)) by [@welpo](https://github.com/welpo)
- Set aspect-ratio on banner-home-ig ([c6c8379](https://github.com/welpo/tabi/commit/c6c83797bff349ee0d12972264b98de0f48ea1f8)) by [@welpo](https://github.com/welpo)
- Make navbar width and margin same as content ([1c1e124](https://github.com/welpo/tabi/commit/1c1e124115a1188ee9669451e5400d2873eee558)) by [@serginogal](https://github.com/serginogal)
- Use Sentence case in Projects title ([cc93f9f](https://github.com/welpo/tabi/commit/cc93f9fb7fe44bb4fecb860669e368da63e57efd)) by [@welpo](https://github.com/welpo)
- Add end-of-file newline ([2cef2e5](https://github.com/welpo/tabi/commit/2cef2e5502c871d5bafde2296882a2de96bc8ca6)) by [@welpo](https://github.com/welpo)
- Add end-of-file newline ([095b9d0](https://github.com/welpo/tabi/commit/095b9d0d07603ec0c9fad09d9f0293f75bf11cba)) by [@welpo](https://github.com/welpo)
- Remove duplicate .bloglist-title definition ([53d28ad](https://github.com/welpo/tabi/commit/53d28ad522d15e9446ca331715e6418501f8423b)) by [@welpo](https://github.com/welpo)
- Consistent date format & remove invalid <time> tags ([1242b90](https://github.com/welpo/tabi/commit/1242b909a28250459b6f89d4670454ce934b0b24)) by [@welpo](https://github.com/welpo)
- Remove duplicated meta description ([4cef13a](https://github.com/welpo/tabi/commit/4cef13a7dd473e91a6875a0037b3e282f5460571)) by [@welpo](https://github.com/welpo)
- Remove space in atom url ([3f4259d](https://github.com/welpo/tabi/commit/3f4259d3f4669de110dea2f5b5d42b8341e72b57)) by [@welpo](https://github.com/welpo)
- Set consistent padding between nav and main content ([6a4620a](https://github.com/welpo/tabi/commit/6a4620a33b1c468e4e0bbbe7fc4eca140decdc62)) by [@welpo](https://github.com/welpo)
- Improve responsiveness of home banner ([1f11e84](https://github.com/welpo/tabi/commit/1f11e8480ef33427f5e3f74a8660a584817fa695)) by [@welpo](https://github.com/welpo)
- Ensure text remains visible during webfont load ([4d57e09](https://github.com/welpo/tabi/commit/4d57e097d1b84ad5099fd9cdf39f905458a67d17)) by [@welpo](https://github.com/welpo)
- Working live url ([898fcc8](https://github.com/welpo/tabi/commit/898fcc8975fd63e9407180460c527e628fbc3ee0)) by [@welpo](https://github.com/welpo)
- Alt text for moon/sun icons (theme switcher) ([4edbcf0](https://github.com/welpo/tabi/commit/4edbcf08b3cc6869aed6b1fcea5b979ca1473dda)) by [@welpo](https://github.com/welpo)
- Trailing space in front of nav-links ([dcaa705](https://github.com/welpo/tabi/commit/dcaa705b5636dc17d6aa28edde6c3c5ac4a2e720)) by [@serginogal](https://github.com/serginogal)
- Nav-links hover style ([b044e30](https://github.com/welpo/tabi/commit/b044e30b1ae907b7f6283dde51834bd52e8e6f4a)) by [@serginogal](https://github.com/serginogal)
- Syntax highlighting ([64ed828](https://github.com/welpo/tabi/commit/64ed8287ff89ede1ff437a149cf5230a79a2b26e)) by [@serginogal](https://github.com/serginogal)

### 💄 Styling

- *(404)* Split error statement from solution ([#213](https://github.com/welpo/tabi/issues/213)) by [@ZzMzaw](https://github.com/ZzMzaw)
- *(code blocks)* Harmonise highlight colour ([327545f](https://github.com/welpo/tabi/commit/327545f2d53899673d2446e4ee3bec370e7e584a)) by [@welpo](https://github.com/welpo)
- *(code blocks)* Change syntax highlighting theme & text size ([#131](https://github.com/welpo/tabi/issues/131)) by [@welpo](https://github.com/welpo)
- *(code tags)* Set border radius to inline code ([0a61bd3](https://github.com/welpo/tabi/commit/0a61bd340597b93a5ce26ed6852ca17e9fa99f06)) by [@welpo](https://github.com/welpo)
- *(codeblocks)* Unhide scrollbars ([ce7ac7c](https://github.com/welpo/tabi/commit/ce7ac7cf2c540d61a683c78c12427bc32fc10402)) by [@welpo](https://github.com/welpo)
- *(favicon)* Reduce emoji size for compatibility ([08ef628](https://github.com/welpo/tabi/commit/08ef628abe9ab21b58811cc74364bc088ec4d762)) by [@welpo](https://github.com/welpo)
- *(footer)* Set paragraph margin to 0 ([c7bd9b3](https://github.com/welpo/tabi/commit/c7bd9b36ce6e8db1f23eee4ce50b03090c09a0cd)) by [@welpo](https://github.com/welpo)
- *(isso)* Align buttons and input & cleanup ([9f74868](https://github.com/welpo/tabi/commit/9f74868c729bbd9430ce8b0e830159de31bb7ff2)) by [@welpo](https://github.com/welpo)
- *(isso)* Clean isso styles & use CSS variables ([85fe38f](https://github.com/welpo/tabi/commit/85fe38f8154e635f33fcc0f4e7d7ba5f847695e0)) by [@welpo](https://github.com/welpo)
- *(language-switcher)* Update icon to be lighter ([#173](https://github.com/welpo/tabi/issues/173)) by [@Jieiku](https://github.com/Jieiku) and [@welpo](https://github.com/welpo)
- *(meta)* Add "…" when using summary with `<!-- more -->` ([0c87f65](https://github.com/welpo/tabi/commit/0c87f6513bca41acba6e3cd5c55ab31e8a30ec28)) by [@welpo](https://github.com/welpo)
- *(projects)* Add border-radius and cleaner shadow ([e78451d](https://github.com/welpo/tabi/commit/e78451dbba410323ad2ee6b070bb269828fcc4fc)) by [@welpo](https://github.com/welpo)
- *(projects)* Cleaner shadow ([8b091ba](https://github.com/welpo/tabi/commit/8b091ba7e9d9d30347b4ce98adf626154f9c4771)) by [@welpo](https://github.com/welpo)
- *(quick-navigation)* Reduce max-height for ToC ([718f477](https://github.com/welpo/tabi/commit/718f477949e20204cb1bc0158f4ebd2c6c38a179)) by [@welpo](https://github.com/welpo)
- *(sans-serif)* Slightly increase bold weight ([355162e](https://github.com/welpo/tabi/commit/355162ebe1d470373bcc40ea0f18c00cfdfb52d8)) by [@welpo](https://github.com/welpo)
- Hide navigation buttons on print view ([e20e1c4](https://github.com/welpo/tabi/commit/e20e1c467cf90fd4acf71736df34c8181f2a7ff5)) by [@welpo](https://github.com/welpo)
- Fix whitespace issues ([5458b1c](https://github.com/welpo/tabi/commit/5458b1c533e6a2c66537c439c8bdd0319b8a7352)) by [@welpo](https://github.com/welpo)
- Reduce bold text font weight on sans-serif ([bcc3f83](https://github.com/welpo/tabi/commit/bcc3f83d858bda53b95c53393de0339fb527c94c)) by [@welpo](https://github.com/welpo)
- Add "…" when using summary with `<!-- more -->` ([e72a8da](https://github.com/welpo/tabi/commit/e72a8da596ad7f44cee59141dc9214736a165bb7)) by [@welpo](https://github.com/welpo)
- Use divider-color for <hr> & remove border-color ([1adf242](https://github.com/welpo/tabi/commit/1adf2423f30cf9fdcf3f3da354623d8ff7b0d662)) by [@welpo](https://github.com/welpo)
- Stylise scrollbar based on site's color scheme ([1be3fa8](https://github.com/welpo/tabi/commit/1be3fa886cb0bdbe2d8f893b16e8b3542fe8bd4b)) by [@welpo](https://github.com/welpo)
- Standardise posts' summary & description ([f03a9b3](https://github.com/welpo/tabi/commit/f03a9b3c4f734ac67f0356c89ac49ef121a55d1a)) by [@welpo](https://github.com/welpo)
- Set transparent bg for code in table headers ([a6046cd](https://github.com/welpo/tabi/commit/a6046cd9d7b2ee72dd91064d9854e7f903d1b197)) by [@welpo](https://github.com/welpo)
- Adjust font styles for <details> and <summary> ([275950f](https://github.com/welpo/tabi/commit/275950f97db8809fa37cda424b3aff4d80971073)) by [@welpo](https://github.com/welpo)
- Keep top/bottom element's margin in `full-width` ([2ebf72c](https://github.com/welpo/tabi/commit/2ebf72c83f62a391bc42ac4ff7796bae74b06a55)) by [@welpo](https://github.com/welpo)
- Retain element's spacing within `full-width` ([b1b98eb](https://github.com/welpo/tabi/commit/b1b98eb2b13ed2334bfd975b06b6f07f36796bbf)) by [@welpo](https://github.com/welpo)
- Reset margin & padding for children of `.full-width` ([4b38d53](https://github.com/welpo/tabi/commit/4b38d536933c288fcfab2003ff555d679f508b7a)) by [@welpo](https://github.com/welpo)
- Use theme variable for table borders ([fffaece](https://github.com/welpo/tabi/commit/fffaece88497c84b989618ca0d1329edb8333e8f)) by [@welpo](https://github.com/welpo)
- Remove dark primary colour variable ([c53ecdc](https://github.com/welpo/tabi/commit/c53ecdc472f6fdeba7c920a0d46ac054f190bcd0)) by [@welpo](https://github.com/welpo)
- Redesign block quotes ([e3ee95d](https://github.com/welpo/tabi/commit/e3ee95d71872cf23f0cf9c44b42f473c04a9673a)) by [@welpo](https://github.com/welpo)
- Improve footnotes and `<hr>` styling ([a1ceb74](https://github.com/welpo/tabi/commit/a1ceb747857365f5785a079efdf3d5f0c72a3c98)) by [@welpo](https://github.com/welpo)
- Center all table text ([85ccc08](https://github.com/welpo/tabi/commit/85ccc081e4865487fa1f13459a991cb46f0fb017)) by [@welpo](https://github.com/welpo)
- Remove figure & img max height ([3dc3e49](https://github.com/welpo/tabi/commit/3dc3e491319cfc9f08bed691e6b744a7a597b342)) by [@welpo](https://github.com/welpo)
- Increase body left/right margins ([b76f9bb](https://github.com/welpo/tabi/commit/b76f9bbf44228c046e0221580033a8c388fa4a07)) by [@welpo](https://github.com/welpo)
- Hide horizontal scrollbar in codeblocks ([d7b0191](https://github.com/welpo/tabi/commit/d7b01914f843b5904b06572d7921f8ebaebd77d9)) by [@welpo](https://github.com/welpo)
- Darken codeblock highlight colour ([fcc2caf](https://github.com/welpo/tabi/commit/fcc2cafcdcfd5eb14df2208829c33404feb9ae7a)) by [@welpo](https://github.com/welpo)
- Reduce bold font-weight ([f5603ac](https://github.com/welpo/tabi/commit/f5603acbdb8968126deb3818af2cef018ed79b75)) by [@welpo](https://github.com/welpo)
- Add codeblock background colours ([8415535](https://github.com/welpo/tabi/commit/8415535e1337a00c9b23e524ade3734d94fc0965)) by [@welpo](https://github.com/welpo)
- Round tables borders ([7c3463c](https://github.com/welpo/tabi/commit/7c3463c0fe1539a56202f1b36da951156a931552)) by [@welpo](https://github.com/welpo)
- Redesign code block header ([700037a](https://github.com/welpo/tabi/commit/700037afe5e3d7e74faef4776ef158f3af34fc02)) by [@welpo](https://github.com/welpo)
- Increase spacing in archive ([d1e51f5](https://github.com/welpo/tabi/commit/d1e51f5866086426890c687c6135a3bf1d7bbcde)) by [@welpo](https://github.com/welpo)
- Remove newlines around summary ([67173f2](https://github.com/welpo/tabi/commit/67173f27cdfe440126a47a4fced93e01f92d53c3)) by [@welpo](https://github.com/welpo)
- Smaller title and "Recent Posts" text ([eb8f630](https://github.com/welpo/tabi/commit/eb8f630fde1fecc04c067832283f7a16c945184a)) by [@welpo](https://github.com/welpo)
- Add styling to infobox ([0494a54](https://github.com/welpo/tabi/commit/0494a54f574b7983d4fe4bef073f730bb899787e)) by [@welpo](https://github.com/welpo)
- Add title suffix & reduce RSS icon size ([fc591f5](https://github.com/welpo/tabi/commit/fc591f549c9f5ebbee20f9c6273da27bed603fd2)) by [@welpo](https://github.com/welpo)
- Add `padding-top` class ([36930dc](https://github.com/welpo/tabi/commit/36930dc8174966e2dd718f039307f3412454d486)) by [@welpo](https://github.com/welpo)
- Rename "atom/rss feed" to "feed" ([0b02e72](https://github.com/welpo/tabi/commit/0b02e727e0ed21c1e1a8ac9ee45229a78339d361)) by [@welpo](https://github.com/welpo)
- Standarise margin in projects and archive ([da38822](https://github.com/welpo/tabi/commit/da3882294c6b6a04e8d2f8f91c6412ead4496d3d)) by [@welpo](https://github.com/welpo)
- Set custom header anchor ([5bdb804](https://github.com/welpo/tabi/commit/5bdb8045a6a517cd1ce5be945d555faea0b84922)) by [@welpo](https://github.com/welpo)
- Add dash to toggle identifier ([c47198f](https://github.com/welpo/tabi/commit/c47198facf72abf7c2a1b84ac4a9a8adaa4c1272)) by [@welpo](https://github.com/welpo)
- Widen article body; less reading saccades ([cfef1f6](https://github.com/welpo/tabi/commit/cfef1f65d79c41ba4be26cbd8683be53c874ff6f)) by [@welpo](https://github.com/welpo)
- Center wrapped menu items ([5d91a0d](https://github.com/welpo/tabi/commit/5d91a0dcacd0eca6f7ce6d24e421f9c40b85bdf2)) by [@welpo](https://github.com/welpo)
- Widen article body; less reading saccades ([00c7d15](https://github.com/welpo/tabi/commit/00c7d153c61b18c6d3a11b6f8958464b44747e54)) by [@welpo](https://github.com/welpo)
- Round down code font-size ([4af487e](https://github.com/welpo/tabi/commit/4af487ecedb71f98cb0ec1e2b38c11def7029973)) by [@welpo](https://github.com/welpo)
- Standarise font rendering across browsers ([67aad3e](https://github.com/welpo/tabi/commit/67aad3ef74472b40f878f7475a782e411cb75fdf)) by [@welpo](https://github.com/welpo)
- Reduce header-content margin in mobile ([3275e8a](https://github.com/welpo/tabi/commit/3275e8a5092cfd46b424f6e071c4d5412d66ff34)) by [@welpo](https://github.com/welpo)
- Increase margin between posts and year ([69989cc](https://github.com/welpo/tabi/commit/69989ccc94e656ee78bfdabf88995408b5f2c765)) by [@welpo](https://github.com/welpo)
- Move padding from post-time to listing-item ([5907091](https://github.com/welpo/tabi/commit/590709189331d264cd5fd470500723c5ab2b3473)) by [@welpo](https://github.com/welpo)
- Restore meta font in article to sans-serif ([25d3a4d](https://github.com/welpo/tabi/commit/25d3a4d109a698884ac1c6da081f852f7293fda2)) by [@welpo](https://github.com/welpo)
- Improve mobile date display and title spacing ([6a5670d](https://github.com/welpo/tabi/commit/6a5670d5a0b86c339a68f6bc744769c96e5081b0)) by [@welpo](https://github.com/welpo)
- Standarise font rendering across browsers ([ea00c9b](https://github.com/welpo/tabi/commit/ea00c9b9df6d8b7546900585e65acd57d955b842)) by [@welpo](https://github.com/welpo)
- Prevent header anchor selection ([1499704](https://github.com/welpo/tabi/commit/14997045d801d89706c1c76345d963768fcdb24b)) by [@welpo](https://github.com/welpo)
- Update project images ([18cab7d](https://github.com/welpo/tabi/commit/18cab7d37c49e9e4fa67f73210e4055aa8a2feca)) by [@welpo](https://github.com/welpo)
- Update project images ([77dc2be](https://github.com/welpo/tabi/commit/77dc2be14bf8cd05079bc357b6f255ea2f7fcf31)) by [@welpo](https://github.com/welpo)
- Greater resolution ([698d4eb](https://github.com/welpo/tabi/commit/698d4ebf7430e766119022ecad92851fe9f933a6)) by [@welpo](https://github.com/welpo)
- Add link to project images ([369fa97](https://github.com/welpo/tabi/commit/369fa9700abcd24c2a644be471b8ab112e66f3e7)) by [@welpo](https://github.com/welpo)
- Use shadow instead of border for cards ([99bb932](https://github.com/welpo/tabi/commit/99bb93219d7b28dc14c1e01be8695dbf1ead5446)) by [@welpo](https://github.com/welpo)
- Set a minimum value for paragraph spacing ([a89fc02](https://github.com/welpo/tabi/commit/a89fc02a96e911135f4e4b60c2e8bd252c317a8c)) by [@welpo](https://github.com/welpo)
- Use theme's primary colour for table headers ([1c07128](https://github.com/welpo/tabi/commit/1c07128aeb30695239611ed5b11695eb84a000b9)) by [@welpo](https://github.com/welpo)
- Narrower article content for blog posts ([a39306f](https://github.com/welpo/tabi/commit/a39306f6ef98ae8b1c3358535c6fd845ec02d6db)) by [@welpo](https://github.com/welpo)
- Change default long date format ([61e288d](https://github.com/welpo/tabi/commit/61e288d8d5df2d4c87dbf239af2dddc87e9e1dcf)) by [@welpo](https://github.com/welpo)
- Reduce text/background contrast ([15f2629](https://github.com/welpo/tabi/commit/15f26293b54757cd06f619afba8dc9cbbea2e835)) by [@welpo](https://github.com/welpo)
- Darken background for inline code (dark theme) ([7fbb4d7](https://github.com/welpo/tabi/commit/7fbb4d7acdf63e6e3535ced090441d54e6a15058)) by [@welpo](https://github.com/welpo)
- Update anchor links by [@welpo](https://github.com/welpo)
- Hide anchor links on small screens ([15c1280](https://github.com/welpo/tabi/commit/15c12807063d84be34bc28bd10be00421356fa69)) by [@welpo](https://github.com/welpo)
- Promise I will never go blonde like Kanye ([38a38fa](https://github.com/welpo/tabi/commit/38a38fa6063ac92a559d8e36d138deae165d5e8b)) by [@welpo](https://github.com/welpo)
- Increase content bottom margin in small screens ([845a2f1](https://github.com/welpo/tabi/commit/845a2f151a03424c210ed864bd19c8c31e39192c)) by [@welpo](https://github.com/welpo)
- Smaller socials; add Zola & tabi mention by [@welpo](https://github.com/welpo)
- Smaller socials; add Zola & tabi mention ([b7c8975](https://github.com/welpo/tabi/commit/b7c89753ecfef9e611164148b8a297a364214ade)) by [@welpo](https://github.com/welpo)
- Remove round borders on tables for consistency ([0f07a6e](https://github.com/welpo/tabi/commit/0f07a6e98b4b3fc7c0561f67c27cee3871d9346f)) by [@welpo](https://github.com/welpo)
- Fix invisible url on hover in projects ([77298d8](https://github.com/welpo/tabi/commit/77298d82b08f3567391e9d02682e4750aea6f843)) by [@welpo](https://github.com/welpo)
- Use day-month format ([28d5704](https://github.com/welpo/tabi/commit/28d5704afd71c2e58df2cac5a303aa1c3923970b)) by [@welpo](https://github.com/welpo)
- Increase contrast for link hover ([e51f531](https://github.com/welpo/tabi/commit/e51f5318d691182b1f7a626683d18f841d96b310)) by [@welpo](https://github.com/welpo)
- Decrease margin between date and post title ([283f3d3](https://github.com/welpo/tabi/commit/283f3d39344b3b02d35df55739a41000984e8fdb)) by [@welpo](https://github.com/welpo)
- Wrap post description in `<p>` ([dc64e25](https://github.com/welpo/tabi/commit/dc64e2589dc4c7fb4eaad4fb8eca43e49209c224)) by [@welpo](https://github.com/welpo)
- Major redesign by [@welpo](https://github.com/welpo)
- Increase margin between anchor and header ([1f4f3a9](https://github.com/welpo/tabi/commit/1f4f3a906fc4fe4de3a53a4be0870cfeaa2d1e2f)) by [@welpo](https://github.com/welpo)
- Redesign post listing and other minor changes ([cd2ab35](https://github.com/welpo/tabi/commit/cd2ab356bef6817122aa6fd390e1735106a99458)) by [@welpo](https://github.com/welpo)
- Remove transitions ([cec746c](https://github.com/welpo/tabi/commit/cec746c1ce58fd92275103534287e81648f1b9c3)) by [@welpo](https://github.com/welpo)
- Redesign tag pages ([8ac1894](https://github.com/welpo/tabi/commit/8ac1894a66c52e370900b2d3f1a7de43207a38de)) by [@welpo](https://github.com/welpo)
- Increase date opacity ([f5834a2](https://github.com/welpo/tabi/commit/f5834a2e39f8f18a90ac6fe99245b34fe4bad0d5)) by [@welpo](https://github.com/welpo)
- Remove "home" from navigation ([80ec217](https://github.com/welpo/tabi/commit/80ec217607efeaebe892ae53286afeb8c0fdd8ae)) by [@welpo](https://github.com/welpo)
- List tags redesign by [@welpo](https://github.com/welpo)
- Use cards/boxes for tag list ([b33a942](https://github.com/welpo/tabi/commit/b33a942766ce80e15f0a0b457d5562fb084563f2)) by [@welpo](https://github.com/welpo)
- List all posts per tag ([a761fd0](https://github.com/welpo/tabi/commit/a761fd00eebf03eaefe5647701208648e2973aed)) by [@welpo](https://github.com/welpo)
- Set style for figure & figure captions ([1496f0c](https://github.com/welpo/tabi/commit/1496f0cf73c9a7fcdf13bb752101278dd3660658)) by [@welpo](https://github.com/welpo)
- Increase iframe margins ([c2d9107](https://github.com/welpo/tabi/commit/c2d9107cd39c19be544b76c272e7c1e7c9bc581c)) by [@welpo](https://github.com/welpo)
- Center and enlarge iframes (embeds) ([372d696](https://github.com/welpo/tabi/commit/372d696eec07d9171a116a85d5e46ec3c7218a05)) by [@welpo](https://github.com/welpo)
- Update footnote styling ([f4cd6e6](https://github.com/welpo/tabi/commit/f4cd6e6a92eb4b7b5076fd2de4694316d1d328e2)) by [@welpo](https://github.com/welpo)
- Resize headers ([e4c6705](https://github.com/welpo/tabi/commit/e4c670584388c1d33e250039abafad79c09c43fe)) by [@welpo](https://github.com/welpo)
- Increase margins before content & after ToC ([83b7bb9](https://github.com/welpo/tabi/commit/83b7bb9d3a3afefab47dc5055a4167c0133f1b1d)) by [@welpo](https://github.com/welpo)
- Reduce font size for meta in cards ([0ecc656](https://github.com/welpo/tabi/commit/0ecc656b91fd3f7ce55fbaa13f65aaf610117b32)) by [@welpo](https://github.com/welpo)
- Reduce font-size and increase line-height in article-title ([367d6a8](https://github.com/welpo/tabi/commit/367d6a8be4b3b37a7c3a2f5b733417a55af6ec01)) by [@welpo](https://github.com/welpo)
- Revert background back to pure white ([0e4d274](https://github.com/welpo/tabi/commit/0e4d274de9300a104de3cb4c0dfbab31c1b206a0)) by [@welpo](https://github.com/welpo)
- Change colourscheme. improve cohesion and accesibility ([b7da112](https://github.com/welpo/tabi/commit/b7da11222e2899c85e3def883ddec58ec8b479f9)) by [@welpo](https://github.com/welpo)
- Mention all table colours change, not just header ([2b861ea](https://github.com/welpo/tabi/commit/2b861ea94068a553ebd849b5fd407b5ccefb4464)) by [@welpo](https://github.com/welpo)
- Showcase tables & invertable images ([394479d](https://github.com/welpo/tabi/commit/394479d777bcf0c03052521fbe4c9fafe437cf6c)) by [@welpo](https://github.com/welpo)
- Center tables; colour headers; round borders ([5b45351](https://github.com/welpo/tabi/commit/5b4535197014bd3dc87eb6f59ce88b963efed037)) by [@welpo](https://github.com/welpo)
- Set tab to 4 spaces; remove newlines ([f2cd044](https://github.com/welpo/tabi/commit/f2cd0440962d97d4c6f27cd37d50200627e81d42)) by [@welpo](https://github.com/welpo)
- Use Cascadia Code as code font ([9db00d1](https://github.com/welpo/tabi/commit/9db00d1f9d382c5c6d2f5383ab8c145d3b522696)) by [@welpo](https://github.com/welpo)
- Move quote author to quote block ([9f41220](https://github.com/welpo/tabi/commit/9f412205b38de9cf42cc6a1fb3baea8d3de9b2ae)) by [@welpo](https://github.com/welpo)
- Default light mode ([723b3b6](https://github.com/welpo/tabi/commit/723b3b61395ec387b422475334f98ae79e2f1474)) by [@welpo](https://github.com/welpo)
- Move main image to static path ([6783ff6](https://github.com/welpo/tabi/commit/6783ff6e49157b7149f54d8d18b962c2ecdd5ee9)) by [@welpo](https://github.com/welpo)
- Remove border from images ([2b8a053](https://github.com/welpo/tabi/commit/2b8a053f510f36958edaf8a39d9d8dde51274463)) by [@welpo](https://github.com/welpo)
- Default light mode ([722d493](https://github.com/welpo/tabi/commit/722d493a9a0c47b9c791e33226c8bf1d3a354f8d)) by [@welpo](https://github.com/welpo)
- Increase contrast and saturation ([fd7a9da](https://github.com/welpo/tabi/commit/fd7a9da61cb10827be3d0421987e2be338f0e600)) by [@welpo](https://github.com/welpo)
- Smaller home image; different circle crop ([c71065d](https://github.com/welpo/tabi/commit/c71065d75691a832cd9a60b8872513b1f1e61715)) by [@welpo](https://github.com/welpo)
- Set local main image; no border-radius ([e2edab5](https://github.com/welpo/tabi/commit/e2edab51b798b7100ed46511217f7aa27d5e7a45)) by [@welpo](https://github.com/welpo)
- Reduce headers' size ([978af11](https://github.com/welpo/tabi/commit/978af11495face1127dc30946989ecac78257207)) by [@welpo](https://github.com/welpo)
- Change posts' dates to show off Archive ([fcc7a31](https://github.com/welpo/tabi/commit/fcc7a3127030ebcab12524647886530aacf3dbac)) by [@welpo](https://github.com/welpo)
- Larger section titles ([4fe8643](https://github.com/welpo/tabi/commit/4fe8643a1a54837fd0aff85f0092ea6b4c1bd430)) by [@welpo](https://github.com/welpo)
- Add styles for archive screen ([19caf3f](https://github.com/welpo/tabi/commit/19caf3fab117121e6d7e168cb4f189e44ae1f038)) by [@serginogal](https://github.com/serginogal)
- Change switcher margin and width/height to rem ([9637e05](https://github.com/welpo/tabi/commit/9637e053c3779db7f24ea66d2738892bdd00d012)) by [@welpo](https://github.com/welpo)
- Increase padding between navs ([973e0f7](https://github.com/welpo/tabi/commit/973e0f76f8ae0bb23a40e8099f72efd1e1c16115)) by [@welpo](https://github.com/welpo)
- Set consistent underline in headers ([fa781db](https://github.com/welpo/tabi/commit/fa781db0e4f10d05117f35218b74d36b4605187f)) by [@welpo](https://github.com/welpo)
- Set equal padding on social icons ([b8e372c](https://github.com/welpo/tabi/commit/b8e372c733a1052f41b90c9a115ba5bc44f3b8b8)) by [@welpo](https://github.com/welpo)
- Increase padding between navs ([fcb8db4](https://github.com/welpo/tabi/commit/fcb8db43a60fd485927211e7c747186db5a7324d)) by [@welpo](https://github.com/welpo)
- Change various font sizes and date format ([06dae7a](https://github.com/welpo/tabi/commit/06dae7a71172be63fe93a65319827e9e687c6a63)) by [@welpo](https://github.com/welpo)
- Update screenshots and minor changes ([a3ff46b](https://github.com/welpo/tabi/commit/a3ff46be97d2792cfddb826911c97257ec7f3789)) by [@welpo](https://github.com/welpo)

### 📝 Documentation

- *(README)* Add 'Sites Using tabi' section ([0d34b98](https://github.com/welpo/tabi/commit/0d34b98e1183c1317f289cf9d976e20a5e895151)) by [@welpo](https://github.com/welpo)
- *(README)* Add link to Table of Contents documentation ([#121](https://github.com/welpo/tabi/issues/121)) by [@stevenroose](https://github.com/stevenroose)
- *(ToC)* Fix broken code block ([3f2e456](https://github.com/welpo/tabi/commit/3f2e45601aa4154f5d45119017b4f53cec3e0c98)) by [@welpo](https://github.com/welpo)
- *(config)* Clarify default short date format ([f57f313](https://github.com/welpo/tabi/commit/f57f3138c26a8187447f9bcbe9af6aa0861eb8e1)) by [@welpo](https://github.com/welpo)
- *(faq-languages)* Improve phrasing/translation ([793b063](https://github.com/welpo/tabi/commit/793b063c773addae95617e4233d5287d8ec2337c)) by [@welpo](https://github.com/welpo)
- *(i18n)* Fix language switcher description ([a7d4120](https://github.com/welpo/tabi/commit/a7d41203393817946d721f86d2eae4ee47e1c8b8)) by [@welpo](https://github.com/welpo)
- *(i18n)* Mention IETF BCP 47 codes ([78fd8b8](https://github.com/welpo/tabi/commit/78fd8b8f0e1e643bc956956b04d6c2dc1b857422)) by [@welpo](https://github.com/welpo)
- *(pre-commit)* Remove redundancy in minified error ([2833d9f](https://github.com/welpo/tabi/commit/2833d9f8c045205cf4f57499f132675433eb28d0)) by [@welpo](https://github.com/welpo)
- *(privacy)* Use GoatCounter sessions ([741a7e7](https://github.com/welpo/tabi/commit/741a7e7c6f98d2610ab8d58da4ff6c724cfd547a)) by [@welpo](https://github.com/welpo)
- *(projects)* Remove bullet points from tabi features ([3590468](https://github.com/welpo/tabi/commit/35904683e16f303a1c3c5523688957e433b8a88e)) by [@welpo](https://github.com/welpo)
- *(shortcodes)* Link commit and PR for relative image paths ([c2664c8](https://github.com/welpo/tabi/commit/c2664c85cd788791f1a42aab1e0a9e2cb892225c)) by [@welpo](https://github.com/welpo)
- Add guide to all of tabi's features ([#169](https://github.com/welpo/tabi/issues/169)) by [@welpo](https://github.com/welpo)
- Update link to multilanguage lines in config ([0cdb83e](https://github.com/welpo/tabi/commit/0cdb83e3b2fa20a498cf52040a72d50bc03b80e9)) by [@welpo](https://github.com/welpo)
- Update link to multilanguage lines in config ([a61911d](https://github.com/welpo/tabi/commit/a61911d7df1daf65da4510479ad64d41f7180cbb)) by [@welpo](https://github.com/welpo)
- Add ToC and quick navigation buttons ([a47a8be](https://github.com/welpo/tabi/commit/a47a8be01169914f7467f100c6c4136fd022e8eb)) by [@welpo](https://github.com/welpo)
- Clarify the 2 possible paths for custom skins ([41009a5](https://github.com/welpo/tabi/commit/41009a50a1f45a5ad16b044fec4e0a59393650d9)) by [@welpo](https://github.com/welpo)
- Add link to skins showcase/documentation ([6b0cc11](https://github.com/welpo/tabi/commit/6b0cc11da4a684f21211f5e19b7fdae19aae76a1)) by [@welpo](https://github.com/welpo)
- Fix skins docs link ([e210652](https://github.com/welpo/tabi/commit/e210652ac2ddad173cb3e51d4423da808bd6dc50)) by [@welpo](https://github.com/welpo)
- Improve Code tags example ([521a05b](https://github.com/welpo/tabi/commit/521a05b97f6a2c2f3dfacdd63b0a1790cfbb558e)) by [@welpo](https://github.com/welpo)
- Add Isso comments mention ([6b00aae](https://github.com/welpo/tabi/commit/6b00aae20ecc1b5359ee8ed283a83604e3a4abcd)) by [@welpo](https://github.com/welpo)
- Update [extra] settings ([da44e79](https://github.com/welpo/tabi/commit/da44e795d698899b7d577f89f3c9e3ad0f7cc4e6)) by [@welpo](https://github.com/welpo)
- Update link to multilanguage lines in config ([ae47f79](https://github.com/welpo/tabi/commit/ae47f79d9d34d744600d4abafbc073fb44021d49)) by [@welpo](https://github.com/welpo)
- Suggest editing language feed stylesheet ([588defd](https://github.com/welpo/tabi/commit/588defd7f221e8914ea8c57a66ef7509200302fa)) by [@welpo](https://github.com/welpo)
- Mention support for Isso comments ([a201c05](https://github.com/welpo/tabi/commit/a201c05823d1637e68ede5561ce9e468a2317fe7)) by [@welpo](https://github.com/welpo)
- Add code type to codeblock ([b6f7f80](https://github.com/welpo/tabi/commit/b6f7f802b49734551d2f9afad8274debde56d1d0)) by [@welpo](https://github.com/welpo)
- Add Hyvor Talk comments mention ([f859113](https://github.com/welpo/tabi/commit/f859113c815ada8e33b62c52d17ecdac9bd4ea73)) by [@welpo](https://github.com/welpo)
- Support Hyvor Talk comments ([3dcc462](https://github.com/welpo/tabi/commit/3dcc462056401492d676d3893cfeed68c989f27d)) by [@welpo](https://github.com/welpo)
- Remove `updated` date from examples ([5d99da2](https://github.com/welpo/tabi/commit/5d99da2cd0f20bd78732724026c926e36b509b45)) by [@welpo](https://github.com/welpo)
- Update for Hyvor Talk support ([31fee59](https://github.com/welpo/tabi/commit/31fee59eb21ab1ca4d3806da80c3b36338fbf706)) by [@welpo](https://github.com/welpo)
- Remove first header ([5214dd3](https://github.com/welpo/tabi/commit/5214dd35608e7935a399303aff87f520574b30a9)) by [@welpo](https://github.com/welpo)
- Update link to multilanguage lines in config ([54abe36](https://github.com/welpo/tabi/commit/54abe36d442bc73c3a0e62fc0748570deabec6d7)) by [@welpo](https://github.com/welpo)
- Fix mention of "Load comments" button ([1a74cb4](https://github.com/welpo/tabi/commit/1a74cb4496ffdced2b032c36704a26828748ee65)) by [@welpo](https://github.com/welpo)
- Add code language to bash code blocks ([33cfe77](https://github.com/welpo/tabi/commit/33cfe77344c62f9e7368cfa914da4f8ff53883a3)) by [@welpo](https://github.com/welpo)
- Remove `updated` date from example ([dcbb4c5](https://github.com/welpo/tabi/commit/dcbb4c52907c5fff30ab97841a871d8e3bbbd426)) by [@welpo](https://github.com/welpo)
- Improve KaTeX documentation ([1cd34b5](https://github.com/welpo/tabi/commit/1cd34b528efe8a8a1e0ad6ef1ee92d804aee75a9)) by [@welpo](https://github.com/welpo)
- Set proper `updated` date ([139ca04](https://github.com/welpo/tabi/commit/139ca042f41f8ca96b105ba8e03da56400486895)) by [@welpo](https://github.com/welpo)
- Translate 'Usage' header ([fa5e21f](https://github.com/welpo/tabi/commit/fa5e21feeaf40cd57f5145e2ea2273c378bf3306)) by [@welpo](https://github.com/welpo)
- Mention stylized feed ([bd2b4a3](https://github.com/welpo/tabi/commit/bd2b4a33d65bf17dfe03e6351e1d9de75eb9f8c5)) by [@welpo](https://github.com/welpo)
- Add default author ([f9d8f36](https://github.com/welpo/tabi/commit/f9d8f3668f0a268ea1799f43ee56a6a2176380de)) by [@welpo](https://github.com/welpo)
- Remove atom feed filter in script ([41c44d3](https://github.com/welpo/tabi/commit/41c44d3d842a2c8d9ef5b7b2dd94c831f356ed5b)) by [@welpo](https://github.com/welpo)
- Update URL to multilanguage lines in config ([761a18d](https://github.com/welpo/tabi/commit/761a18da752f29d42e7b75465ce53601bc2b75cf)) by [@welpo](https://github.com/welpo)
- Remove unnecessary date ([8b7f53e](https://github.com/welpo/tabi/commit/8b7f53e3ca3f20ff838a0dce321d4913b6bd43c2)) by [@welpo](https://github.com/welpo)
- Add feature request template ([e1ec7f5](https://github.com/welpo/tabi/commit/e1ec7f54d5e14fb75813745b3067e6de08152235)) by [@welpo](https://github.com/welpo)
- Create bug report issue template ([03cbf3b](https://github.com/welpo/tabi/commit/03cbf3bf0f346065d0c5adafa991d216e3b55809)) by [@welpo](https://github.com/welpo)
- Update URL to multilanguage lines in config ([3a8fa41](https://github.com/welpo/tabi/commit/3a8fa41cfc42a51bcc6a3c6b7bc688ee1814fb24)) by [@welpo](https://github.com/welpo)
- Mention Zola version requirement ([6e9bcf9](https://github.com/welpo/tabi/commit/6e9bcf92046f553f6bebdbf7d9c5291739bb1cb5)) by [@welpo](https://github.com/welpo)
- Update Zola version requirement to 0.17.0 ([a0f4f4a](https://github.com/welpo/tabi/commit/a0f4f4a6420927bb10119baf5327da4c9cf71187)) by [@welpo](https://github.com/welpo)
- Add quotation marks to quotes ([c7a411e](https://github.com/welpo/tabi/commit/c7a411e1572075b63719d3eb81b4c469b2e56b01)) by [@welpo](https://github.com/welpo)
- Add config info for multilingual sites ([397b63c](https://github.com/welpo/tabi/commit/397b63cefab3ffba87b0bf2ae5bf3c9cf641d83e)) by [@welpo](https://github.com/welpo)
- Update screenshots ([56b74ed](https://github.com/welpo/tabi/commit/56b74ed23d1f4395c8245d4c444e53a951dad78b)) by [@welpo](https://github.com/welpo)
- Revert script changes ([f657010](https://github.com/welpo/tabi/commit/f657010be4cdd028e3d17b9967b9b97221e8ef80)) by [@welpo](https://github.com/welpo)
- Include layout features in font subset ([44980f1](https://github.com/welpo/tabi/commit/44980f141883a462bc5a88cf958786f8c56a98ec)) by [@welpo](https://github.com/welpo)
- Rephrase last sentence ([e316dc2](https://github.com/welpo/tabi/commit/e316dc25ab649528be19d3f4b3ef165cbd976a2b)) by [@welpo](https://github.com/welpo)
- Rephrase description ([47caa99](https://github.com/welpo/tabi/commit/47caa99e0c438396e1ef6d5ad5ec9c3664df078a)) by [@welpo](https://github.com/welpo)
- Close codeblock ([3389638](https://github.com/welpo/tabi/commit/3389638b06efc6b534f7ac674764a6c110d38b18)) by [@welpo](https://github.com/welpo)
- Update URL ([60680fa](https://github.com/welpo/tabi/commit/60680fad3741735a75d66c185639ab1c057c6560)) by [@welpo](https://github.com/welpo)
- Update inspiration ([85a32e2](https://github.com/welpo/tabi/commit/85a32e263fa9ec324275c15bbc96398bb88c2fd0)) by [@welpo](https://github.com/welpo)
- Use full URLs for images for Zola theme page ([bc84a1f](https://github.com/welpo/tabi/commit/bc84a1f669d42b161dc07bba3424151cc17347b4)) by [@welpo](https://github.com/welpo)
- Add `data:` to CSP to load local svg ([3b22e6b](https://github.com/welpo/tabi/commit/3b22e6be6c1ff666c767cea0af4b9cd48f353c46)) by [@welpo](https://github.com/welpo)
- Stylise KaTeX ([79f8559](https://github.com/welpo/tabi/commit/79f8559a3aa87794af45a62d9644689c00b94c51)) by [@welpo](https://github.com/welpo)
- Acknowledge abridge's inspiration ([c36b66b](https://github.com/welpo/tabi/commit/c36b66b7d46dc30c2dd77386421a396dd777333c)) by [@welpo](https://github.com/welpo)
- Update theme's description ([89bfdbe](https://github.com/welpo/tabi/commit/89bfdbe6870fc05a5d8b8256d8cfb5a7b9ac8969)) by [@welpo](https://github.com/welpo)
- Update screenshots ([3ad76de](https://github.com/welpo/tabi/commit/3ad76de2fbae694522899cf9226a8f39208e83e6)) by [@welpo](https://github.com/welpo)
- Mention responsive design ([be8ec45](https://github.com/welpo/tabi/commit/be8ec45c359f6029fe1f2360f3c026f57345044d)) by [@welpo](https://github.com/welpo)
- Lowercase 'tabi' ([e422c40](https://github.com/welpo/tabi/commit/e422c405cb7bcf61c148a4b63cd0fd3537e22868)) by [@welpo](https://github.com/welpo)
- Minor changes to installation instructions ([73811bd](https://github.com/welpo/tabi/commit/73811bdb7aa251620850537fc8126d8a483462e9)) by [@welpo](https://github.com/welpo)
- Clarify installation instructions ([538cb07](https://github.com/welpo/tabi/commit/538cb07a5f79c87d3e623b35475cb8ac0d0f7cc9)) by [@welpo](https://github.com/welpo)
- Mention perfect Lighthouse score ([7543f03](https://github.com/welpo/tabi/commit/7543f03e1291a03723c3ac28e71016fbffa32c5e)) by [@welpo](https://github.com/welpo)
- Update `nani` image ([35cea72](https://github.com/welpo/tabi/commit/35cea7222c0fdb504a8fecf0b33c126f12f8b2a9)) by [@welpo](https://github.com/welpo)
- Update projects ([a2ea8c3](https://github.com/welpo/tabi/commit/a2ea8c3f885ddce0bf2facbd8c166e1c21577af8)) by [@welpo](https://github.com/welpo)
- Update description ([b5bc0d4](https://github.com/welpo/tabi/commit/b5bc0d44db80f8afe78bbd135a702933e6a9a0e1)) by [@welpo](https://github.com/welpo)
- Update description, demo URL, author info, and extra ([3ce928a](https://github.com/welpo/tabi/commit/3ce928a067c211a4da9fd36a523dc0613e388984)) by [@welpo](https://github.com/welpo)
- Update screenshot ([d98c0d0](https://github.com/welpo/tabi/commit/d98c0d0bb8bbe8f26e2f35a33569c8babb5f5d59)) by [@welpo](https://github.com/welpo)
- Replace "last lines" to "last directive" ([2a681f0](https://github.com/welpo/tabi/commit/2a681f005f3d62a49c2bda293f7289824ad73e7d)) by [@welpo](https://github.com/welpo)
- Use hierarchical headings ([bfda1df](https://github.com/welpo/tabi/commit/bfda1df9f3b640b61f0f0dfb16216b78effac4d6)) by [@welpo](https://github.com/welpo)
- Update inspiration ([4ac3207](https://github.com/welpo/tabi/commit/4ac32077eb76a9ec65321351271eec52d1eec19f)) by [@welpo](https://github.com/welpo)
- Set consistent paths for imgs ([9b680b0](https://github.com/welpo/tabi/commit/9b680b0da72b2984bff4275d2238196f3fd2cefb)) by [@welpo](https://github.com/welpo)
- Change 'Usage' section styling ([eb60527](https://github.com/welpo/tabi/commit/eb60527bfb250d15b92b300eda86993404d247d2)) by [@welpo](https://github.com/welpo)
- Add closing shortcode tag to references() ([2c4b644](https://github.com/welpo/tabi/commit/2c4b64481ca0ff05cac74b427ed031a6ee36496a)) by [@welpo](https://github.com/welpo)
- Improve punctuation ([611790a](https://github.com/welpo/tabi/commit/611790ab2b2d49bf16ed192168cabb26c9d1a8a2)) by [@welpo](https://github.com/welpo)
- Add Contributing guidelines ([5a2738f](https://github.com/welpo/tabi/commit/5a2738f66529ccb19b27de9c9914efc6a27d9e10)) by [@welpo](https://github.com/welpo)
- Add code of conduct ([5cbc33a](https://github.com/welpo/tabi/commit/5cbc33a83812091fdd3393a365cfe3878e00eb94)) by [@welpo](https://github.com/welpo)
- Replace `test` tag with `showcase` ([69d4985](https://github.com/welpo/tabi/commit/69d4985fc55fbdc37f92d07a71e1823cd107ebd5)) by [@welpo](https://github.com/welpo)
- Fix typos ([73a5638](https://github.com/welpo/tabi/commit/73a563872e8fa94dfb186e459255f4e257249429)) by [@welpo](https://github.com/welpo)
- Use markdown to showcase theme's capabilities ([2f07137](https://github.com/welpo/tabi/commit/2f07137cca2eadd73a4aaf71bd1361c07194923f)) by [@welpo](https://github.com/welpo)
- Add internetVin's blog as inspiration ([e052371](https://github.com/welpo/tabi/commit/e05237186581b8b783dfb34620d53d02f9554754)) by [@welpo](https://github.com/welpo)
- Js size has grown :( ([83e211a](https://github.com/welpo/tabi/commit/83e211a18d058e7a13da8b6a9fde752fcd194b52)) by [@welpo](https://github.com/welpo)
- Change the codeblock example ([f6cd7d3](https://github.com/welpo/tabi/commit/f6cd7d3cf20ae3d2cb72cdd4eb3011ab58720ba8)) by [@welpo](https://github.com/welpo)
- Add license ([1cb6003](https://github.com/welpo/tabi/commit/1cb60032c6d1b6b7ee048e46224c9d187c0b546f)) by [@welpo](https://github.com/welpo)

### ♻️ Refactor

- *(404)* Remove mention of translations for single language sites ([8ecd23b](https://github.com/welpo/tabi/commit/8ecd23b940b3e3079be9c248535b933ea6120030)) by [@welpo](https://github.com/welpo)
- *(HTML)* Remove X-UA-Compatible ([#177](https://github.com/welpo/tabi/issues/177)) by [@donovanglover](https://github.com/donovanglover)
- *(HTML)* Use whitespace control ([7d8ed20](https://github.com/welpo/tabi/commit/7d8ed20c2437ca285cc748359c4b2ff500a3968c)) by [@welpo](https://github.com/welpo)
- *(giscus)* Move comment box to bottom ([3822f00](https://github.com/welpo/tabi/commit/3822f00d3e3d77c8b585b10a788986d967e2011f)) by [@welpo](https://github.com/welpo)
- *(header)* Replace single %22 by `"` ([a57eb98](https://github.com/welpo/tabi/commit/a57eb98a6912889e07e923f289001975d9c3d495)) by [@welpo](https://github.com/welpo)
- *(tags)* Remove unnecessary id attribute ([b88e737](https://github.com/welpo/tabi/commit/b88e7376e4814b2d174f5ab1c8579d2a67f842df)) by [@welpo](https://github.com/welpo)
- *(translation)* Introduce translation macro ([#129](https://github.com/welpo/tabi/issues/129)) by [@welpo](https://github.com/welpo)
- *(utterances)* Further minify JS ([7251013](https://github.com/welpo/tabi/commit/725101300e77773362c2bec55d082798465aec0b)) by [@welpo](https://github.com/welpo)
- Co-locate images ([#200](https://github.com/welpo/tabi/issues/200)) by [@welpo](https://github.com/welpo)
- Turn macros into partials & sort CSS ([#146](https://github.com/welpo/tabi/issues/146)) by [@welpo](https://github.com/welpo)
- Use `get_url` for social icons ([d0babd5](https://github.com/welpo/tabi/commit/d0babd5db1717efb3822c0741612b5100e04bca9)) by [@welpo](https://github.com/welpo)
- Switch from `[@import](https://github.com/import)` to `[@use](https://github.com/use)` ([a799732](https://github.com/welpo/tabi/commit/a79973239892122f744d7c7e231a53abea46f780)) by [@welpo](https://github.com/welpo)
- Further minify theme initialization ([92e6af1](https://github.com/welpo/tabi/commit/92e6af1d5865c0e3bca8bd89082a0a0bb26b5062)) by [@welpo](https://github.com/welpo)
- Improve stylised feed translations & consolidate XSL/CSS loading ([#98](https://github.com/welpo/tabi/issues/98)) by [@welpo](https://github.com/welpo)
- Translate xsl stylesheets ([7ed295d](https://github.com/welpo/tabi/commit/7ed295db3aa003595a14a21b6c24c03bdbfeea0f)) by [@welpo](https://github.com/welpo)
- Combine and reorder media queries ([af81f88](https://github.com/welpo/tabi/commit/af81f88b925454291d4bc968bed30d0963410a17)) by [@welpo](https://github.com/welpo)
- Unify table styling ([787243c](https://github.com/welpo/tabi/commit/787243c3c5f32735e0476359901b0df79d382c11)) by [@welpo](https://github.com/welpo)
- Remove unused code ([8c5f305](https://github.com/welpo/tabi/commit/8c5f30556a9ecb412f52487eae0a9aed745b8e74)) by [@welpo](https://github.com/welpo)
- Remove Yahoo Media RSS reference ([16f1aa5](https://github.com/welpo/tabi/commit/16f1aa57fa908a44861990cf9ff40ecc5e8ffb4e)) by [@welpo](https://github.com/welpo)
- Restructure template ([e3bd75e](https://github.com/welpo/tabi/commit/e3bd75e9e384d03b070bb8bdab3c42aef645ad23)) by [@welpo](https://github.com/welpo)
- Simplify theme switching logic ([526c8a1](https://github.com/welpo/tabi/commit/526c8a1e67d71e1554f8c57706ae3adcf9229b6f)) by [@welpo](https://github.com/welpo)
- Simplify sans-serif-font declarations ([87a5c9a](https://github.com/welpo/tabi/commit/87a5c9a3a2c83d475a7e6083af8dc8fdeb37c0f8)) by [@welpo](https://github.com/welpo)
- Rename katex minified css ([0c8e0d2](https://github.com/welpo/tabi/commit/0c8e0d228ca73dec066dca8b94741807981ee976)) by [@welpo](https://github.com/welpo)
- Use `const` in theme initialization ([9512bbb](https://github.com/welpo/tabi/commit/9512bbb19400be6b770735ceb6daca4e71429630)) by [@welpo](https://github.com/welpo)
- Rename minified KaTeX css ([eb63718](https://github.com/welpo/tabi/commit/eb63718bbffce75f5eab584fab37396ac93123a0)) by [@welpo](https://github.com/welpo)
- Remove metadata in project files ([10b8525](https://github.com/welpo/tabi/commit/10b85257cd70e427a0beebadcb89f87565adbdef)) by [@welpo](https://github.com/welpo)
- Improve code format; set tabs = 4 spaces ([7a1bb1d](https://github.com/welpo/tabi/commit/7a1bb1d04c022cbefb9ab9c71ec52772522899e9)) by [@welpo](https://github.com/welpo)
- Move .last-updated to main.scss ([0f14171](https://github.com/welpo/tabi/commit/0f14171b6a7dfbf49d72c47280e7c5acbe3784b6)) by [@welpo](https://github.com/welpo)
- Standarise left/right margins ([76db25b](https://github.com/welpo/tabi/commit/76db25b44aa4d33c1f8b20cbfe3387aa8a84ed81)) by [@welpo](https://github.com/welpo)
- Remove useless css ([603ac09](https://github.com/welpo/tabi/commit/603ac09baa14b386e91047b576dcb386a53a5547)) by [@welpo](https://github.com/welpo)
- Remove useless lines ([f83c75e](https://github.com/welpo/tabi/commit/f83c75ed044834882c06d9259bb77983eeee492c)) by [@welpo](https://github.com/welpo)
- Remove unused `section_title` variable ([27dc4b9](https://github.com/welpo/tabi/commit/27dc4b9a9606772b22b944a16b5b8f9be7befe0d)) by [@welpo](https://github.com/welpo)
- Improve spacing and indentation ([dceceff](https://github.com/welpo/tabi/commit/dceceff5fda7ec791bb2e0311663bb034ec0d582)) by [@welpo](https://github.com/welpo)
- Move blog posts to `blog` section ([14156b5](https://github.com/welpo/tabi/commit/14156b590adbf274e527ecb4f9dd1be5c86a5c15)) by [@welpo](https://github.com/welpo)
- Use consistent pagination ([a8e49cf](https://github.com/welpo/tabi/commit/a8e49cfedfeba14b702db8913b984c87ce20e595)) by [@welpo](https://github.com/welpo)
- Remove 403 page ([6938ae4](https://github.com/welpo/tabi/commit/6938ae42f90be2faadae87cd9b463ed67243f306)) by [@welpo](https://github.com/welpo)
- Move blog posts `blog` section ([64449d5](https://github.com/welpo/tabi/commit/64449d5d9ffe22ed7025f07912a8137b4745c900)) by [@welpo](https://github.com/welpo)
- Rename extra.desc to extra.header ([de46a24](https://github.com/welpo/tabi/commit/de46a24d37eb47bafa379f7883b563303e67b520)) by [@welpo](https://github.com/welpo)
- Use rem instead of px ([b1728fc](https://github.com/welpo/tabi/commit/b1728fc441e47119741acf23f1781f6734417599)) by [@welpo](https://github.com/welpo)
- Rename 'Categories' to 'Tags' ([0648bc8](https://github.com/welpo/tabi/commit/0648bc80e22d05b2b13b8987a33c0e3d92a9695c)) by [@welpo](https://github.com/welpo)
- Remove extra last_updated date ([bd72fb8](https://github.com/welpo/tabi/commit/bd72fb84be73af5e303889e49df332ada970d37e)) by [@welpo](https://github.com/welpo)
- Use native `updated` field ([31ea93b](https://github.com/welpo/tabi/commit/31ea93bbbe8aba1a9fe7c3a6dc6b08b5c9cf7354)) by [@welpo](https://github.com/welpo)
- Remove unused set_title argument ([9ac1504](https://github.com/welpo/tabi/commit/9ac150423b92784041e4a84be32b36ddbc4449e0)) by [@welpo](https://github.com/welpo)
- Set font types as variables ([d6c198e](https://github.com/welpo/tabi/commit/d6c198e379abd84c877d194e052a72bc5ba0e071)) by [@welpo](https://github.com/welpo)
- Show word count as reading time tooltip ([9ed4034](https://github.com/welpo/tabi/commit/9ed40342605f079afe4cf668ed4fbb7ab87c4664)) by [@welpo](https://github.com/welpo)
- Improve table of contents accessibility ([1c93df0](https://github.com/welpo/tabi/commit/1c93df0a6fe9cc564678b5aba971f20d78c18166)) by [@welpo](https://github.com/welpo)
- Set datetime format as a variable ([988034b](https://github.com/welpo/tabi/commit/988034ba4ebf622d3e704cfee7a2bd681abcf306)) by [@welpo](https://github.com/welpo)

### 👥 New contributors

🫶 [@welpo](https://github.com/welpo) made their first contribution

🫶 [@ZzMzaw](https://github.com/ZzMzaw) made their first contribution in [#215](https://github.com/welpo/tabi/pull/215)

🫶 [@joberthrogers18](https://github.com/joberthrogers18) made their first contribution in [#219](https://github.com/welpo/tabi/pull/219)

🫶 [@xvello](https://github.com/xvello) made their first contribution in [#218](https://github.com/welpo/tabi/pull/218)

🫶 [@donovanglover](https://github.com/donovanglover) made their first contribution in [#205](https://github.com/welpo/tabi/pull/205)

🫶 [@nyadiia](https://github.com/nyadiia) made their first contribution in [#195](https://github.com/welpo/tabi/pull/195)

🫶 [@Almost-Senseless-Coder](https://github.com/Almost-Senseless-Coder) made their first contribution in [#192](https://github.com/welpo/tabi/pull/192)

🫶 [@Jieiku](https://github.com/Jieiku) made their first contribution in [#173](https://github.com/welpo/tabi/pull/173)

🫶 [@sandman](https://github.com/sandman) made their first contribution in [#170](https://github.com/welpo/tabi/pull/170)

🫶 [@Smtbook](https://github.com/Smtbook) made their first contribution in [#166](https://github.com/welpo/tabi/pull/166)

🫶 [@SeaDve](https://github.com/SeaDve) made their first contribution in [#165](https://github.com/welpo/tabi/pull/165)

🫶 [@stevenroose](https://github.com/stevenroose) made their first contribution in [#124](https://github.com/welpo/tabi/pull/124)

🫶 [@serginogal](https://github.com/serginogal) made their first contribution

<!-- generated by git-cliff -->


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
tabi@osc.garden.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to tabi

Halló!

Thanks for contributing to [tabi](https://github.com/welpo/tabi). Before implementing new features and changes, please [submit an issue](https://github.com/welpo/tabi/issues/new) so that we can discuss it.

We welcome contributions in many forms, including:

- Bug reports;
- New translations;
- Improvements to existing translations;
- Feature requests;
- Code patches;
- Documentation improvements;
- UI/UX suggestions.

If you're not sure how to contribute or need help with something, please don't hesitate to reach out via the [issue tracker](https://github.com/welpo/tabi/issues) or [mail](mailto:tabi@osc.garden?subject=[GitHub]%20tabi).

## Pull Requests

Working on your first Pull Request? You can learn how from this free video series:

[**How to Contribute to an Open Source Project on GitHub**](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)

Please make sure the following is done when submitting a pull request:

1. **Keep your PR small**. Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it.
2. **Use descriptive titles**. It is recommended to follow this [commit message style](#conventional-commit-messages-with-gitmoji).
3. **Test your changes**. Make sure to test different configurations that might affect your changes.
4. **Fill the PR template**. The template will guide you through the process of submitting a PR.

### Conventional Commit Messages with Gitmoji

See how a minor change to your commit message style can make you a better programmer.

Format: `<gitmoji> <type>(<scope>): <description>`

`<gitmoji>` is an emoji from the [gitmoji](https://gitmoji.dev/) list. It makes it easier to visually scan the commit history and quickly grasp the purpose of changes.

`<scope>` is optional. If your change affects a specific part of the codebase, consider adding the scope. Scopes should be brief but recognizable, e.g. `config`, `feed`, or `search`.

The various types of commits:

- `feat`: a new API or behaviour **for the end user**.
- `fix`: a bug fix **for the end user**.
- `style`: changes to the visual appearance of the theme, e.g. CSS, fonts, images…
- `docs`: a change to the website or other Markdown documents.
- `refactor`: a change to code that doesn't change behaviour, e.g. splitting files, renaming internal variables, improving code style…
- `chore`: upgrading dependencies, releasing new versions… Chores that are **regularly done** for maintenance purposes.
- `misc`: anything else that doesn't change production code, yet is not `chore`. e.g. updating GitHub actions workflow.

The commits within your PR don't need to follow this convention (we'll [squash them](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests)). However, the PR title should be in this format. If you're not sure about the title, don't worry, we'll help you fix it. Your code is more important than conventions!

Example:

```text
🐛 fix(i18n): localise date in single taxonomy listing
^  ^-^^----^  ^--------------------------------------^
|  |  |       |
|  |  |       +-> Description in imperative and lowercase.
|  |  |
|  |  +-> The scope of the change.
|  |
|  +-------> Type: see above for the list we use.
|
+----------> A valid gitmoji.
```

## Coding Style Guidelines

While we don't enforce a strict coding style, we appreciate it when contributions follow the existing code style of the project (e.g. indenting with 4 spaces). This makes the codebase easier to read and maintain. If you are making significant changes or additions, please try to maintain consistency with the current coding patterns and idioms.

For JavaScript files, we use [Prettier](https://prettier.io/) to format the code.

The CSS properties are sorted following [Concentric-CSS](https://github.com/brandon-rhodes/Concentric-CSS). If you use VSCode, the [Sort CSS](https://marketplace.visualstudio.com/items?itemName=piyushsarkar.sort-css-properties) extension makes this super easy.

## Pre-commit Githook

### Introduction

We use a pre-commit githook to maintain code and file quality. [This script](https://github.com/welpo/tabi/blob/main/.githooks/pre-commit) performs a series of checks and updates before a commit is made.

### Setting Up

To use the pre-commit githook, run the following command from the root of the repository to configure the git hooks path and make the script executable:

```bash
git config core.hooksPath .githooks
chmod +x .githooks/pre-commit
```

### Features

The pre-commit githook performs the following actions:

#### Automatic Updates

- **Front Matter in Markdown Files**: Automatically updates the "updated" field in the front matter of `.md` files.
- **PNG Compression**: Compresses PNG files using either [`oxipng`](https://github.com/shssoichiro/oxipng) or [`optipng`](https://optipng.sourceforge.net/), whichever is available on your system.
- **Font Subsetting**: Runs `subset_font` if `config.toml` has been modified.

#### Commit Checks

The script prevents you from committing if:

- The `.md` file is marked as a draft.
- Any file contains a "TODO".
- A JavaScript file is being committed without a corresponding minified version.
- A minified JavaScript file is not as small as it could be. Requires installing [UglifyJS](https://github.com/mishoo/UglifyJS) and/or [terser](https://github.com/terser/terser).
- `config.toml` and `theme.toml` have different numbers of lines in their `[extra]` sections.

These checks are in place to ensure code quality and consistency throughout the project.

## Code of Conduct

We expect all contributors to follow our [Code of Conduct](./CODE_OF_CONDUCT.md). Please be respectful and professional when interacting with other contributors.

## License

The code is available under the [MIT license](./LICENSE).

Thank you for your contributions!


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2023 Óscar Fernández

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
<p align="center">
    <a href="CONTRIBUTING.md#pull-requests">
        <img src="https://img.shields.io/badge/PRs-welcome-0?style=flat-square&labelColor=202b2d&color=087e96" alt="PRs welcome"></a>
    <a href="https://github.com/welpo/tabi/graphs/contributors">
        <img src="https://img.shields.io/github/contributors/welpo/tabi?style=flat-square&labelColor=202b2d&color=087e96" alt="Contributors"></a>
    <a href="https://github.com/welpo/tabi/forks">
        <img src="https://img.shields.io/github/forks/welpo/tabi?style=flat-square&labelColor=202b2d&color=087e96" alt="Forks"></a>
    <a href="https://github.com/welpo/tabi/commits/main/">
        <img src="https://img.shields.io/github/last-commit/welpo/tabi?style=flat-square&labelColor=202b2d&color=087e96" alt="Last commit"></a>
    <br>
    <a href="https://github.com/welpo/tabi/releases">
        <img src="https://img.shields.io/github/v/release/welpo/tabi?style=flat-square&labelColor=202b2d&color=087e96" alt="Latest release"></a>
    <a href="https://welpo.github.io/tabi/blog/mastering-tabi-settings/">
        <img src="https://img.shields.io/website?url=https%3A%2F%2Fwelpo.github.io%2Ftabi&style=flat-square&label=docs&labelColor=202b2d" alt="Documentation"></a>
    <a href="https://github.com/welpo/tabi/blob/main/LICENSE">
        <img src="https://img.shields.io/github/license/welpo/tabi?style=flat-square&labelColor=202b2d&color=087e96" alt="License"></a>
    <a href="https://github.com/welpo/git-sumi">
        <img src="https://img.shields.io/badge/clean_commits-git--sumi-0?style=flat-square&labelColor=202b2d&color=087e96" alt="Clean commits"></a>
    <a href="https://isitmaintained.com/project/welpo/tabi">
        <img src="https://isitmaintained.com/badge/resolution/welpo/tabi.svg" alt="Average time to resolve an issue"></a>
    <a href="https://isitmaintained.com/project/welpo/tabi">
        <img src="https://isitmaintained.com/badge/open/welpo/tabi.svg" alt="Percentage of issues still open"></a>
</p>

# 🌱 tabi

An accessible [Zola](https://www.getzola.org) theme with [search](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#search), [multi-language support](https://welpo.github.io/tabi/blog/faq-languages/), [optional JavaScript](https://welpo.github.io/tabi/blog/javascript/), a perfect Lighthouse score, and [comprehensive documentation](https://welpo.github.io/tabi). Crafted for personal websites and blogs.

> [!TIP]
> Want to start blogging right away? Use the [tabi-start template](https://github.com/welpo/tabi-start) to get a complete site up and running in minutes.

See a live preview (and the theme's documentation) [here](https://welpo.github.io/tabi).

Explore the [Sites Using tabi section](#sites-using-tabi) to see real-world applications.

> tabi (旅, /<span title="/t/: 't' in 'sty'">t</span><span title="/ɐ/: a sound between 'a' in 'sofa' and 'u' in 'nut'">ɐ</span><span title="/ˈ/: primary stress mark, indicating that the following syllable is pronounced with greater emphasis">ˈ</span><span title="/b/: 'b' in 'cab'">b</span><span title="/i/: 'i' in 'fleece'">i</span>/): Journey.

![tabi](https://github.com/welpo/tabi/raw/main/light_dark_screenshot.png)

tabi has a perfect score on Google's Lighthouse audit:

![lighthouse](https://raw.githubusercontent.com/welpo/tabi/main/lighthouse_score.png)

## Features

- [X] [Set any language as default](https://welpo.github.io/tabi/blog/faq-languages/#how-do-i-set-a-default-language-for-my-site). Set your base site to Chinese, Spanish, French, Hindi… or any [other supported language](/i18n). The theme's interface will be translated accordingly.
- [X] [Integration with remote repositories](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#git-repository-integration) on GitHub, GitLab, Gitea & Codeberg for commit history and showing the site source.
- [X] [Series support](https://welpo.github.io/tabi/blog/series/) for creating sequential content like tutorials, courses, and multi-part stories.
- [X] Dark and light themes. Defaults to the OS setting, with a switcher in the navigation bar.
- [X] Thorough documentation. See [Mastering tabi Settings: A Comprehensive Guide](https://welpo.github.io/tabi/blog/mastering-tabi-settings/).
- [X] Perfect Lighthouse score (Performance, Accessibility, Best Practices and SEO).
- [X] [Comprehensive multi-language support](https://welpo.github.io/tabi/blog/faq-languages/#how-does-tabi-handle-multilingual-support). Add as many languages as you wish.
- [X] Support for [comments using giscus, utterances, Hyvor Talk, or Isso](https://welpo.github.io/tabi/blog/comments/).
- [X] [Indieweb](https://indieweb.org/) ready with microformats, [hcard](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#representative-h-card) and [webmentions](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#webmentions) support.
- [X] Code syntax highlighting with colours based on [Catppuccin](https://github.com/catppuccin/catppuccin) Frappé.
- [X] [Mermaid support](https://welpo.github.io/tabi/blog/shortcodes/#mermaid-diagrams) to create diagrams and charts with text.
- [X] [Local search](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#search) with an accessible, multi-lingual interface.
- [X] [Custom Twitter card](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#social-media-cards) and automatic Open Graph tags.
- [X] Anonymous [like buttons](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#iine) powered by [iine](https://iine.to).
- [X] [KaTeX](https://katex.org/) support for mathematical notation.
- [X] [Stylized and human readable Atom feed](https://welpo.github.io/tabi/atom.xml).
- [X] [Stylized and human readable sitemap](https://welpo.github.io/tabi/sitemap.xml).
- [X] [Mail encoding](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#encoded-email) for spam protection.
- [X] All JavaScript can be [fully disabled](https://welpo.github.io/tabi/blog/javascript/).
- [X] [Customizable Table of Contents](https://welpo.github.io/tabi/blog/toc/).
- [X] [Customizable secure headers](https://welpo.github.io/tabi/blog/security/).
- [X] [Copy button for code blocks](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#copy-button-on-code-blocks).
- [X] [Quick navigation buttons](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#quick-navigation-buttons).
- [X] [Custom copyright notice](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#copyright).
- [X] [Custom canonical URLs](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#canonical-url).
- [X] [Custom shortcodes](https://welpo.github.io/tabi/blog/shortcodes/).
- [X] [Customizable skins](https://welpo.github.io/tabi/blog/customise-tabi/).
- [X] [Social media cards](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#social-media-cards).
- [X] Responsive design.
- [X] [Projects page](https://welpo.github.io/tabi/projects/).
- [X] [Archive page](https://welpo.github.io/tabi/archive/).
- [X] [Pinned posts](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#pinning-posts).
- [X] [Social links](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#social-media-icons).
- [X] [Tags](https://welpo.github.io/tabi/blog/mastering-tabi-settings/#tags).

## Installation

> [!NOTE]
> The fastest way to create a new site is to use the [tabi-start template](https://github.com/welpo/tabi-start). This gives you a complete blog setup with all the essential configuration ready to go.

### Manual installation

To add tabi to you existing Zola site:

0. Initialize a Git repository in your project directory (if you haven't already):

```
git init
```

1. Add the theme as a git submodule:

```
git submodule add https://github.com/welpo/tabi.git themes/tabi
```

Or clone the theme into your themes directory:

```
git clone https://github.com/welpo/tabi.git themes/tabi
```

### Required configuration

2. Enable the theme in your `config.toml`:

```
theme = "tabi"
```

3. Set a `title` in your `config.toml`:

```
title = "Your Site Title"
```

4. Configure code block highlighting in your `config.toml`:

```toml
[markdown.highlighting]
theme = "catppuccin-frappe"
style = "class"
```

5. Create a `content/_index.md` file. This file controls how your home page looks and behaves. Choose one of the following options:

   **Option A: Serve posts from `/`**:

   ```
   +++
   title = "Home"
   paginate_by = 5  # Show 5 posts per page.
   +++
   ```

   - This will display posts in `content/` with pagination.

   **Option B: Serve posts from a different path (e.g., `blog/`)**:

   ```
   +++
   title = "Home"
   # Note we're not setting `paginate_by` here.

   [extra]
   section_path = "blog/_index.md"  # Where to find your posts.
   max_posts = 5  # Show 5 posts on the home page.
   +++
   ```

    - This will display the latest 5 posts from the `blog/` section.
    - Do not set `paginate_by` if you choose this option.
    - Use the full path to the section's `_index.md` file. Using `section_path = "blog/"` will not work.

> [!WARNING]
> Do not set both `paginate_by` and `section_path` in `content/_index.md`.
>
> These settings are mutually exclusive and using both may result in no posts being displayed.

6. If you want an introduction section (see screenshot above), add these lines to `content/_index.md`:

```
[extra]
header = {title = "Hello! I'm tabi~", img = "img/main.webp", img_alt = "Your Name" }
```

The content outside the front matter will be rendered between the header title and the posts listing. In the screenshot above, it's the text that reads "tabi is a fast, lightweight, and modern Zola theme…".

7. If you want a multilingual site, you will need to set up each language. In `config.toml`, set the title and taxonomies for each language, like:

```toml
[languages.es]
title = "~/tabi"
taxonomies = [{name = "tags", feed = true}]
```

You will need an `_index.{language_code}.md` per language for each section (e.g. /blog or /projects) that you want to enable in that language.

The same is true for individual posts, which should have the exact same name as the default language, with an extra `.{code}` before the extension (e.g. the Spanish version of `security.md` would be `security.es.md`).

This configuration allows the language switcher to take the user to the translation of the current URL. If a translation doesn't exist, the 404 page will be displayed, with an explanation in each language set in the config.

To learn more about multilingual support, see the [Frequently Asked Questions](https://welpo.github.io/tabi/blog/faq-languages/).

### Updating tabi

If you added the theme as a git submodule, run:

```bash
git submodule update --remote themes/tabi
```

If you cloned it:

```bash
cd themes/tabi
git pull
```

## Sites using tabi

| Website | Creator | Description  | Site Source   |
| - | - | - | - |
| [osc.garden](https://osc.garden) | Óscar Fernández ([welpo](https://github.com/welpo)) | Data science, psychology, and Zola | [Source](https://github.com/welpo/osc.garden) |
| [seadve.github.io](https://seadve.github.io/) | Dave Patrick Caberto ([SeaDve](https://github.com/SeaDve/)) | Personal blog and portfolio with custom CSS | [Source](https://github.com/SeaDve/seadve.github.io) |
| [mikufan.page](https://mikufan.page) | [Nadia](https://github.com/nyadiia) | Personal blog | [Source](https://github.com/nyadiia/mikufan.page) |
| [tim-boettcher.online](https://tim-boettcher.online/) | [Tim Böttcher](https://codeberg.org/Tim-Boettcher/) | Insights and ramblings of a deafblind programmer | [Source](https://codeberg.org/Tim-Boettcher/tim-boettcher-online/) |
| [www.richtman.au](https://www.richtman.au) | [Ariel Richtman](https://github.com/arichtman) | Personal tech blog | [Source](https://github.com/arichtman/www.richtman.au) |
| [Ponderosa Games](https://ponderosagames.com/) | John Burak ([JVimes](https://github.com/jvimes)) | A friendly indie game company | &mdash; |
| [jmbhughes.com](https://jmbhughes.com/) | Marcus Hughes ([jmbhughes](https://github.com/jmbhughes)) | Personal blog | [Source](https://github.com/jmbhughes/jmbhughes.github.io) |
| [szabolcs.me](https://szabolcs.me) | Szabolcs Fazekas ([szabolcsf](https://github.com/szabolcsf)) | Personal blog | [Source](https://github.com/szabolcsf/szabolcs.me) |
| [Nizzlay](https://nizzlay.com) | Niels Gouman ([Nizzlay](https://github.com/Nizzlay)) | Personal blog | [Source](https://github.com/Nizzlay/nizzlay.com) |
| [ZzMzaw's blog](https://zzmzaw.github.io/) | ZzMzaw ([ZzMzaw](https://github.com/ZzMzaw)) | Personal blog | [Source](https://github.com/ZzMzaw/zzmzaw.github.io) |
| [idle-ti.me](https://idle-ti.me/) | Jérôme Ramette ([be-next](https://github.com/be-next)) | Personal blog | [Source](https://github.com/be-next/idle-ti.me) |
| [tzinm.me](https://tzinm.me/) | [Tzinm](https://github.com/tzinm) | Personal blog | [Source](https://codeberg.org/tzinm/blog) |
| [b1n.io](https://b1n.io) | [b1nhack](https://github.com/b1nhack) | Linux kernel vulnerability researcher | [Source](https://github.com/b1nhack/blog) |
| [posixlycorrect.com](https://posixlycorrect.com/) | [Fabian Montero](https://git.posixlycorrect.com/fabian) | Personal homepage | [Source](https://git.posixlycorrect.com/fabian/homepage) |
| [Coded Chords](https://codedchords.dev/) | [yostos](https://github.com/yostos) | Personal tech blog | [Source](https://github.com/yostos/blog-yostos) |

Using tabi? Feel free to create a PR and add your site to this list.

## Inspiration

This theme was inspired by:

- [shadharon](https://github.com/syedzayyan/shadharon) — tabi started as a fork of [syedzayyan](https://github.com/syedzayyan)'s theme
- [tailwind-nextjs-starter-blog](https://github.com/timlrx/tailwind-nextjs-starter-blog)
- [abridge](https://github.com/Jieiku/abridge)

## Support

Something not working? Have an idea? Let us know!

- Questions? → [Start a discussion](https://github.com/welpo/tabi/discussions)
- Found a bug? → [Report it here](https://github.com/welpo/tabi/issues/new?&labels=bug&template=2_bug_report.yml)
- Feature request? → [Tell us more!](https://github.com/welpo/tabi/issues/new?&labels=feature&template=3_feature_request.yml)

## Contributing

Please do! We appreciate bug reports, improvements to translations or documentation (however minor), feature requests…

Take a look at the [Contributing Guidelines](/CONTRIBUTING.md) to learn more.

## License

The code is available under the [MIT license](./LICENSE).


================================================
FILE: cliff.toml
================================================
# git-cliff ~ default configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.

[remote.github]
owner = "welpo"
repo = "tabi"

[changelog]
# changelog header
header = """
# Changelog

Welcome to the changelog for tabi. This document aims to provide a comprehensive list of all notable changes made to the project, organised chronologically by release version.

We use Semantic Versioning (SemVer) for our version numbers, formatted as MAJOR.MINOR.PATCH. Major version changes involve significant (breaking) changes, minor versions introduce features and improvements in a backward compatible manner, and patch versions are for bug fixes and minor tweaks.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{%- macro remote_url() -%}
  https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
{%- endmacro -%}
{% if version %}\
    {% if previous.version %}\
        ## [{{ version | trim_start_matches(pat="v") }}]({{ self::remote_url() }}/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
    {% else %}\
        ## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}
    {% endif %}\
{% else %}\
    ## unreleased
{% endif %}\

{% macro commit(commit, in_breaking_section=false) -%}
    - {% if commit.scope %}*({{ commit.scope }})* {% endif %}{% if commit.breaking and not in_breaking_section %}[**‼️BREAKING‼️**] {% endif %}\
        {{ commit.message | upper_first }}\
        {% if not commit.remote.pr_number %} ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }})){%- endif -%}{% if commit.remote.username %} by @{{ commit.remote.username }} \
        {%- set co_authors = commit.footers | filter(attribute="token", value="Co-authored-by") | map(attribute="value") -%}
        {%- set number_of_co_authors = co_authors | length -%}
        {%- for co_author in co_authors -%}
            {%- if not loop.last %}, {% else %} and {% endif %}@{{ co_author | split(pat=" <") | first | trim }}
        {%- endfor -%}
        {%- endif -%}
{% endmacro -%}

{%- set breaking_header_shown = false -%}
{% for commit in commits -%}
    {% if commit.breaking and not breaking_header_shown -%}
        {% raw %}\n### 💥 BREAKING CHANGES 💥\n{% endraw %}
        {%- set_global breaking_header_shown = true -%}
    {%- endif -%}
    {%- if commit.breaking %}
        {{ self::commit(commit=commit, in_breaking_section=true) -}}
    {% endif -%}
{%- endfor -%}
{%- if breaking_header_shown == true -%}
    {% raw %}\n{% endraw %}\
{%- endif -%}

{% for group, commits in commits | group_by(attribute="group") %}
    ### {{ group | striptags | trim | upper_first }}
    {% for commit in commits
    | filter(attribute="scope")
    | sort(attribute="scope") %}
        {{ self::commit(commit=commit) }}
    {%- endfor -%}
    {% raw %}\n{% endraw %}\
    {%- for commit in commits %}
        {%- if not commit.scope -%}
            {{ self::commit(commit=commit) }}
        {% endif -%}
    {% endfor -%}
{% endfor %}

{%- if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 -%}
  {% raw %}\n{% endraw %}### 👥 New contributors
  {% raw -%}\n{% endraw -%}
{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
  🫶 @{{ contributor.username }} made their first contribution
    {%- if contributor.pr_number %} in \
      [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \
    {%- endif %}
{% endfor %}
{%- endif %}
{% raw -%}\n{% endraw -%}
"""

# remove the leading and trailing whitespace from the template
trim = true
# changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# postprocessors
postprocessors = [
    # { pattern = " @([a-zA-Z0-9](?:[a-zA-Z0-9]+-?)*[a-zA-Z0-9])", replace = " [@$1](https://github.com/$1)"}, # add link to GitHub usernames (done in release script instead)
]

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
    # Replace the issue number with the link.
    { pattern = "\\(#([0-9]+)\\)", replace = "([#${1}](https://github.com/welpo/tabi/issues/${1}))" },
    # Remove trailing whitespace.
    { pattern = ' +$', replace = "" },
    # Replace multiple spaces with a single space.
    { pattern = ' +', replace = " " },
    # Remove gitmoji, both actual UTF emoji and :emoji:
    { pattern = ' *(:\w+:|[\p{Emoji_Presentation}\p{Extended_Pictographic}](?:\u{FE0F})?\u{200D}?) *', replace = "" },
]
# regex for parsing and grouping commits
commit_parsers = [
    { message = "^feat", group = "<!-- 0 -->✨ Features" },
    { message = "^fix", group = "<!-- 1 -->🐛 Bug fixes" },
    { message = "^style", group = "<!-- 2 -->💄 Styling" },
    { message = "^doc", group = "<!-- 3 -->📝 Documentation" },
    { message = "^refactor", group = "<!-- 4 -->♻️ Refactor" },
    { message = "^test", group = "<!-- 5 -->✅ Testing" },
    { message = "^misc", group = "<!-- 6 -->🔧 Miscellaneous tasks" },
    { message = "^deprecate", group = "<!-- 7 -->🗑️️ Deprecations" },
    { message = "^chore", skip = true },
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = true
# filter out the commits that are not matched by commit parsers
filter_commits = true
# regex for matching git tags
tag_pattern = "v[0-9].*"

# regex for skipping tags
skip_tags = "v0.1.0-beta.1"
# regex for ignoring tags
ignore_tags = ""
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "newest"
# limit the number of commits included in the changelog.
# limit_commits = 42


================================================
FILE: config.toml
================================================
base_url = "https://welpo.github.io/tabi"
title = "~/tabi"
description = "tabi is an accessible Zola theme with search, multi-language support, optional JavaScript, a perfect Lighthouse score, and comprehensive documentation. Crafted for personal websites and blogs."
author = "welpo"
generate_feeds = true
compile_sass = true
minify_html = true
build_search_index = true

# To translate the entire theme, there must be a file with the same language code
# in the `i18n` folder of your site or the tabi theme.
# For example, "i18n/fr.toml" for French or "i18n/zh-Hans.toml" for Simplified Chinese.
# Otherwise the theme will be in English.
# See https://welpo.github.io/tabi/blog/faq-languages/ for more details.
default_language = "en"

taxonomies = [{name = "tags", feed = true}]

[search]
# Whether to include the title of the page/section in the index.
include_title = true
# Whether to include the description of the page/section 
Download .txt
gitextract_a5dd3pfx/

├── .githooks/
│   ├── commit-msg
│   └── pre-commit
├── .github/
│   ├── CODEOWNERS
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 2_bug_report.yml
│   │   ├── 3_feature_request.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── renovate.json
│   └── workflows/
│       ├── cd.yml
│       ├── ci.yml
│       ├── git-sumi.yml
│       └── upgrade-deps.yml
├── .gitignore
├── .gitmodules
├── .prettierignore
├── .prettierrc.toml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── cliff.toml
├── config.toml
├── content/
│   ├── _index.ar.md
│   ├── _index.ca.md
│   ├── _index.es.md
│   ├── _index.md
│   ├── archive/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   └── _index.md
│   ├── blog/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   ├── _index.md
│   │   ├── comments/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── custom-font-subset/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── customise-tabi/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── faq-languages/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── javascript/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── markdown/
│   │   │   ├── index.ar.md
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── mastering-tabi-settings/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── security/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── series/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   ├── shortcodes/
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   └── toc/
│   │       ├── index.ca.md
│   │       ├── index.es.md
│   │       └── index.md
│   ├── pages/
│   │   ├── _index.ar.md
│   │   ├── _index.ca.md
│   │   ├── _index.es.md
│   │   ├── _index.md
│   │   ├── about/
│   │   │   ├── index.ar.md
│   │   │   ├── index.ca.md
│   │   │   ├── index.es.md
│   │   │   └── index.md
│   │   └── privacy/
│   │       ├── index.ar.md
│   │       ├── index.ca.md
│   │       ├── index.es.md
│   │       └── index.md
│   └── projects/
│       ├── _index.ar.md
│       ├── _index.ca.md
│       ├── _index.es.md
│       ├── _index.md
│       ├── bunbu/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── doteki/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── git-sumi/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── iine/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── nani/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── nemui/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── ramu/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── shuku/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── streaming-royalties-calculator/
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       ├── tabi/
│       │   ├── index.ar.md
│       │   ├── index.ca.md
│       │   ├── index.es.md
│       │   └── index.md
│       └── zutsu/
│           ├── index.ca.md
│           ├── index.es.md
│           └── index.md
├── i18n/
│   ├── ar.toml
│   ├── ca.toml
│   ├── de.toml
│   ├── en.toml
│   ├── es.toml
│   ├── et.toml
│   ├── fa.toml
│   ├── fi.toml
│   ├── fr.toml
│   ├── hi.toml
│   ├── it.toml
│   ├── ja.toml
│   ├── ko.toml
│   ├── nl.toml
│   ├── or.toml
│   ├── pt-BR.toml
│   ├── pt-PT.toml
│   ├── ru.toml
│   ├── uk.toml
│   ├── zh-Hans.toml
│   └── zh-Hant.toml
├── sass/
│   ├── main.scss
│   ├── parts/
│   │   ├── _admonitions.scss
│   │   ├── _archive.scss
│   │   ├── _aside.scss
│   │   ├── _cards.scss
│   │   ├── _code.scss
│   │   ├── _comments.scss
│   │   ├── _footer.scss
│   │   ├── _header-anchor.scss
│   │   ├── _header.scss
│   │   ├── _home-banner.scss
│   │   ├── _iine.scss
│   │   ├── _image-hover.scss
│   │   ├── _image-toggler.scss
│   │   ├── _image.scss
│   │   ├── _misc.scss
│   │   ├── _multilingual_quote.scss
│   │   ├── _pagination.scss
│   │   ├── _posts_list.scss
│   │   ├── _quick_navigation_buttons.scss
│   │   ├── _search.scss
│   │   ├── _spoiler.scss
│   │   ├── _syntax_theme.scss
│   │   ├── _table.scss
│   │   ├── _tags.scss
│   │   ├── _theme-switch.scss
│   │   ├── _webmention.scss
│   │   └── _zola-error.scss
│   └── skins/
│       ├── blue.scss
│       ├── evangelion.scss
│       ├── indigo_ingot.scss
│       ├── lavender.scss
│       ├── lowcontrast_orange.scss
│       ├── lowcontrast_peach.scss
│       ├── lowcontrast_pink.scss
│       ├── mint.scss
│       ├── monochrome.scss
│       ├── red.scss
│       ├── sakura.scss
│       └── teal.scss
├── scripts/
│   └── upgrade-deps
├── static/
│   ├── custom_subset.css
│   ├── feed_style.xsl
│   ├── inter_subset_en.css
│   ├── inter_subset_es.css
│   ├── isso.css
│   ├── js/
│   │   ├── codeBlockNameLinks.js
│   │   ├── copyCodeToClipboard.js
│   │   ├── decodeMail.js
│   │   ├── filterCards.js
│   │   ├── footnoteBacklinks.js
│   │   ├── giscus.js
│   │   ├── hyvortalk.js
│   │   ├── initializePlausible.js
│   │   ├── initializeTheme.js
│   │   ├── isso.js
│   │   ├── loadComments.js
│   │   ├── lunr/
│   │   │   ├── lunr.da.js
│   │   │   ├── lunr.de.js
│   │   │   ├── lunr.du.js
│   │   │   ├── lunr.es.js
│   │   │   ├── lunr.fi.js
│   │   │   ├── lunr.fr.js
│   │   │   ├── lunr.hu.js
│   │   │   ├── lunr.it.js
│   │   │   ├── lunr.ja.js
│   │   │   ├── lunr.no.js
│   │   │   ├── lunr.pt.js
│   │   │   ├── lunr.ro.js
│   │   │   ├── lunr.ru.js
│   │   │   ├── lunr.sv.js
│   │   │   ├── lunr.tr.js
│   │   │   ├── lunr.zh.js
│   │   │   ├── lunrStemmerSupport.js
│   │   │   └── tinyseg.js
│   │   ├── searchElasticlunr.js
│   │   ├── sortTable.js
│   │   ├── themeSwitcher.js
│   │   ├── utterances.js
│   │   └── webmention.js
│   ├── no_js.css
│   ├── sitemap_style.xsl
│   └── social_icons/
│       └── LICENSE
├── sumi.toml
├── templates/
│   ├── 404.html
│   ├── anchor-link.html
│   ├── archive.html
│   ├── atom.xml
│   ├── base.html
│   ├── cards.html
│   ├── index.html
│   ├── info-page.html
│   ├── internal/
│   │   └── alias.html
│   ├── macros/
│   │   ├── feed_utils.html
│   │   ├── format_date.html
│   │   ├── list_posts.html
│   │   ├── page_header.html
│   │   ├── rel_attributes.html
│   │   ├── series_page.html
│   │   ├── settings.html
│   │   ├── table_of_contents.html
│   │   ├── target_attribute.html
│   │   └── translate.html
│   ├── page.html
│   ├── partials/
│   │   ├── analytics.html
│   │   ├── cards_pages.html
│   │   ├── comments.html
│   │   ├── content_security_policy.html
│   │   ├── copyright.html
│   │   ├── extra_features.html
│   │   ├── filter_card_tags.html
│   │   ├── footer.html
│   │   ├── hcard.html
│   │   ├── hcard_small.html
│   │   ├── header.html
│   │   ├── history_url.html
│   │   ├── home_banner.html
│   │   ├── iine_button.html
│   │   ├── language_switcher.html
│   │   ├── main_page_posts_list.html
│   │   ├── main_page_projects_list.html
│   │   ├── multilingual_tags.html
│   │   ├── nav.html
│   │   ├── paginate.html
│   │   ├── search_modal.html
│   │   ├── social_media_images.html
│   │   ├── theme_switcher.html
│   │   ├── title.html
│   │   └── webmentions.html
│   ├── section.html
│   ├── series.html
│   ├── shortcodes/
│   │   ├── add_src_to_code_block.html
│   │   ├── admonition.html
│   │   ├── aside.html
│   │   ├── dimmable_image.html
│   │   ├── dual_theme_image.html
│   │   ├── force_text_direction.html
│   │   ├── full_width_image.html
│   │   ├── iine.html
│   │   ├── image_hover.html
│   │   ├── image_toggler.html
│   │   ├── invertible_image.html
│   │   ├── mermaid.html
│   │   ├── multilingual_quote.html
│   │   ├── references.html
│   │   ├── remote_text.html
│   │   ├── spoiler.html
│   │   ├── toc.html
│   │   └── wide_container.html
│   ├── sitemap.xml
│   ├── tags/
│   │   ├── list.html
│   │   └── single.html
│   ├── taxonomy_list.html
│   └── taxonomy_single.html
└── theme.toml
Download .txt
SYMBOL INDEX (264 symbols across 26 files)

FILE: static/js/decodeMail.js
  function decodeBase64 (line 5) | function decodeBase64(encodedString) {
  function updateEmailHref (line 29) | function updateEmailHref(element) {

FILE: static/js/filterCards.js
  function getTagSlugFromUrl (line 19) | function getTagSlugFromUrl(url) {
  function getFilterFromHash (line 23) | function getFilterFromHash() {
  function setActiveFilter (line 32) | function setActiveFilter(filterValue, updateHash = true) {

FILE: static/js/footnoteBacklinks.js
  function assignReferenceIds (line 2) | function assignReferenceIds() {
  function createFootnoteBacklinks (line 10) | function createFootnoteBacklinks() {
  function initFootnotes (line 27) | function initFootnotes() {

FILE: static/js/giscus.js
  function setGiscusTheme (line 1) | function setGiscusTheme(newTheme) {
  function initGiscus (line 15) | function initGiscus() {

FILE: static/js/hyvortalk.js
  function initHyvorTalk (line 1) | function initHyvorTalk() {

FILE: static/js/isso.js
  function initIsso (line 2) | function initIsso() {
  function loadIsso (line 33) | function loadIsso(commentsDiv) {

FILE: static/js/lunr/lunr.da.js
  function r_mark_regions (line 117) | function r_mark_regions() {
  function r_main_suffix (line 144) | function r_main_suffix() {
  function r_consonant_pair (line 167) | function r_consonant_pair() {
  function r_other_suffix (line 188) | function r_other_suffix() {
  function r_undouble (line 221) | function r_undouble() {

FILE: static/js/lunr/lunr.de.js
  function habr1 (line 115) | function habr1(c1, c2, v_1) {
  function r_prelude (line 127) | function r_prelude() {
  function habr2 (line 165) | function habr2() {
  function r_mark_regions (line 179) | function r_mark_regions() {
  function r_postlude (line 195) | function r_postlude() {
  function r_R1 (line 227) | function r_R1() {
  function r_R2 (line 231) | function r_R2() {
  function r_standard_suffix (line 235) | function r_standard_suffix() {

FILE: static/js/lunr/lunr.du.js
  function r_prelude (line 121) | function r_prelude() {
  function habr1 (line 186) | function habr1(v_1) {
  function r_mark_regions (line 194) | function r_mark_regions() {
  function habr2 (line 206) | function habr2() {
  function r_postlude (line 220) | function r_postlude() {
  function r_R1 (line 244) | function r_R1() {
  function r_R2 (line 248) | function r_R2() {
  function r_undouble (line 252) | function r_undouble() {
  function r_e_ending (line 265) | function r_e_ending() {
  function r_en_ending (line 283) | function r_en_ending() {
  function r_standard_suffix (line 298) | function r_standard_suffix() {

FILE: static/js/lunr/lunr.es.js
  function habr1 (line 208) | function habr1() {
  function habr2 (line 220) | function habr2() {
  function habr3 (line 238) | function habr3() {
  function habr4 (line 256) | function habr4() {
  function r_mark_regions (line 270) | function r_mark_regions() {
  function r_postlude (line 284) | function r_postlude() {
  function r_RV (line 318) | function r_RV() {
  function r_R1 (line 322) | function r_R1() {
  function r_R2 (line 326) | function r_R2() {
  function r_attached_pronoun (line 330) | function r_attached_pronoun() {
  function habr5 (line 369) | function habr5(a, n) {
  function habr6 (line 383) | function habr6(c1) {
  function r_standard_suffix (line 396) | function r_standard_suffix() {
  function r_y_verb_suffix (line 466) | function r_y_verb_suffix() {
  function r_verb_suffix (line 487) | function r_verb_suffix() {
  function r_residual_suffix (line 517) | function r_residual_suffix() {

FILE: static/js/lunr/lunr.fi.js
  function r_mark_regions (line 161) | function r_mark_regions() {
  function habr1 (line 171) | function habr1() {
  function r_R2 (line 191) | function r_R2() {
  function r_particle_etc (line 195) | function r_particle_etc() {
  function r_possessive (line 221) | function r_possessive() {
  function r_LONG (line 268) | function r_LONG() {
  function r_VI (line 272) | function r_VI() {
  function r_case_ending (line 276) | function r_case_ending() {
  function r_other_endings (line 341) | function r_other_endings() {
  function r_i_plural (line 363) | function r_i_plural() {
  function r_t_plural (line 378) | function r_t_plural() {
  function r_tidy (line 418) | function r_tidy() {

FILE: static/js/lunr/lunr.fr.js
  function habr1 (line 180) | function habr1(c1, c2, v_1) {
  function habr2 (line 192) | function habr2(c1, c2, v_1) {
  function r_prelude (line 202) | function r_prelude() {
  function habr3 (line 235) | function habr3() {
  function r_mark_regions (line 249) | function r_mark_regions() {
  function r_postlude (line 278) | function r_postlude() {
  function r_RV (line 306) | function r_RV() {
  function r_R1 (line 310) | function r_R1() {
  function r_R2 (line 314) | function r_R2() {
  function r_standard_suffix (line 318) | function r_standard_suffix() {
  function r_i_verb_suffix (line 486) | function r_i_verb_suffix() {
  function r_verb_suffix (line 510) | function r_verb_suffix() {
  function r_residual_suffix (line 549) | function r_residual_suffix() {
  function r_un_double (line 598) | function r_un_double() {
  function r_un_accent (line 611) | function r_un_accent() {
  function habr5 (line 628) | function habr5() {

FILE: static/js/lunr/lunr.hu.js
  function r_mark_regions (line 202) | function r_mark_regions() {
  function r_R1 (line 238) | function r_R1() {
  function r_v_ending (line 242) | function r_v_ending() {
  function r_double (line 261) | function r_double() {
  function r_undouble (line 269) | function r_undouble() {
  function r_instrum (line 282) | function r_instrum() {
  function r_case (line 298) | function r_case() {
  function r_case_special (line 309) | function r_case_special() {
  function r_case_other (line 329) | function r_case_other() {
  function r_factive (line 352) | function r_factive() {
  function r_plural (line 368) | function r_plural() {
  function r_owned (line 394) | function r_owned() {
  function r_sing_owner (line 422) | function r_sing_owner() {
  function r_plur_owner (line 461) | function r_plur_owner() {

FILE: static/js/lunr/lunr.it.js
  function habr1 (line 206) | function habr1(c1, c2, v_1) {
  function r_prelude (line 218) | function r_prelude() {
  function habr2 (line 278) | function habr2(v_1) {
  function habr3 (line 290) | function habr3() {
  function habr4 (line 306) | function habr4() {
  function habr5 (line 335) | function habr5() {
  function r_mark_regions (line 349) | function r_mark_regions() {
  function r_postlude (line 363) | function r_postlude() {
  function r_RV (line 387) | function r_RV() {
  function r_R1 (line 391) | function r_R1() {
  function r_R2 (line 395) | function r_R2() {
  function r_attached_pronoun (line 399) | function r_attached_pronoun() {
  function r_standard_suffix (line 418) | function r_standard_suffix() {
  function r_verb_suffix (line 518) | function r_verb_suffix() {
  function habr6 (line 534) | function habr6() {
  function r_vowel_suffix (line 554) | function r_vowel_suffix() {

FILE: static/js/lunr/lunr.no.js
  function r_mark_regions (line 117) | function r_mark_regions() {
  function r_main_suffix (line 143) | function r_main_suffix() {
  function r_consonant_pair (line 175) | function r_consonant_pair() {
  function r_other_suffix (line 196) | function r_other_suffix() {

FILE: static/js/lunr/lunr.pt.js
  function r_prelude (line 201) | function r_prelude() {
  function habr2 (line 226) | function habr2() {
  function habr3 (line 238) | function habr3() {
  function habr4 (line 250) | function habr4() {
  function habr5 (line 275) | function habr5() {
  function r_mark_regions (line 289) | function r_mark_regions() {
  function r_postlude (line 303) | function r_postlude() {
  function r_RV (line 328) | function r_RV() {
  function r_R1 (line 332) | function r_R1() {
  function r_R2 (line 336) | function r_R2() {
  function r_standard_suffix (line 340) | function r_standard_suffix() {
  function r_verb_suffix (line 435) | function r_verb_suffix() {
  function r_residual_suffix (line 454) | function r_residual_suffix() {
  function habr6 (line 466) | function habr6(c1, c2) {
  function r_residual_form (line 480) | function r_residual_form() {
  function habr1 (line 503) | function habr1() {

FILE: static/js/lunr/lunr.ro.js
  function habr1 (line 218) | function habr1(c1, c2) {
  function r_prelude (line 226) | function r_prelude() {
  function habr2 (line 245) | function habr2() {
  function habr3 (line 257) | function habr3() {
  function habr4 (line 268) | function habr4() {
  function habr5 (line 296) | function habr5() {
  function r_mark_regions (line 310) | function r_mark_regions() {
  function r_postlude (line 324) | function r_postlude() {
  function r_RV (line 349) | function r_RV() {
  function r_R1 (line 353) | function r_R1() {
  function r_R2 (line 357) | function r_R2() {
  function r_step_0 (line 361) | function r_step_0() {
  function r_combo_suffix (line 399) | function r_combo_suffix() {
  function r_standard_suffix (line 434) | function r_standard_suffix() {
  function r_verb_suffix (line 468) | function r_verb_suffix() {
  function r_vowel_suffix (line 494) | function r_vowel_suffix() {

FILE: static/js/lunr/lunr.ru.js
  function habr3 (line 196) | function habr3() {
  function habr4 (line 205) | function habr4() {
  function r_mark_regions (line 214) | function r_mark_regions() {
  function r_R2 (line 226) | function r_R2() {
  function habr2 (line 230) | function habr2(a, n) {
  function r_perfective_gerund (line 253) | function r_perfective_gerund() {
  function habr1 (line 257) | function habr1(a, n) {
  function r_adjective (line 270) | function r_adjective() {
  function r_adjectival (line 274) | function r_adjectival() {
  function r_reflexive (line 283) | function r_reflexive() {
  function r_verb (line 287) | function r_verb() {
  function r_noun (line 291) | function r_noun() {
  function r_derivational (line 295) | function r_derivational() {
  function r_tidy_up (line 306) | function r_tidy_up() {

FILE: static/js/lunr/lunr.sv.js
  function r_mark_regions (line 119) | function r_mark_regions() {
  function r_main_suffix (line 146) | function r_main_suffix() {
  function r_consonant_pair (line 169) | function r_consonant_pair() {
  function r_other_suffix (line 186) | function r_other_suffix() {

FILE: static/js/lunr/lunr.tr.js
  function habr1 (line 223) | function habr1(g_v, n1, n2) {
  function r_check_vowel_harmony (line 238) | function r_check_vowel_harmony() {
  function habr2 (line 258) | function habr2(f1, f2) {
  function habr3 (line 287) | function habr3(f1) {
  function r_mark_suffix_with_optional_n_consonant (line 293) | function r_mark_suffix_with_optional_n_consonant() {
  function r_mark_suffix_with_optional_s_consonant (line 299) | function r_mark_suffix_with_optional_s_consonant() {
  function r_mark_suffix_with_optional_y_consonant (line 305) | function r_mark_suffix_with_optional_y_consonant() {
  function r_mark_suffix_with_optional_U_vowel (line 311) | function r_mark_suffix_with_optional_U_vowel() {
  function r_mark_possessives (line 319) | function r_mark_possessives() {
  function r_mark_sU (line 323) | function r_mark_sU() {
  function r_mark_lArI (line 327) | function r_mark_lArI() {
  function r_mark_yU (line 331) | function r_mark_yU() {
  function r_mark_nU (line 335) | function r_mark_nU() {
  function r_mark_nUn (line 339) | function r_mark_nUn() {
  function r_mark_yA (line 343) | function r_mark_yA() {
  function r_mark_nA (line 347) | function r_mark_nA() {
  function r_mark_DA (line 351) | function r_mark_DA() {
  function r_mark_ndA (line 355) | function r_mark_ndA() {
  function r_mark_DAn (line 359) | function r_mark_DAn() {
  function r_mark_ndAn (line 363) | function r_mark_ndAn() {
  function r_mark_ylA (line 367) | function r_mark_ylA() {
  function r_mark_ki (line 371) | function r_mark_ki() {
  function r_mark_ncA (line 375) | function r_mark_ncA() {
  function r_mark_yUm (line 379) | function r_mark_yUm() {
  function r_mark_sUn (line 383) | function r_mark_sUn() {
  function r_mark_yUz (line 387) | function r_mark_yUz() {
  function r_mark_sUnUz (line 391) | function r_mark_sUnUz() {
  function r_mark_lAr (line 395) | function r_mark_lAr() {
  function r_mark_nUz (line 399) | function r_mark_nUz() {
  function r_mark_DUr (line 403) | function r_mark_DUr() {
  function r_mark_cAsInA (line 407) | function r_mark_cAsInA() {
  function r_mark_yDU (line 411) | function r_mark_yDU() {
  function r_mark_ysA (line 415) | function r_mark_ysA() {
  function r_mark_ymUs_ (line 419) | function r_mark_ymUs_() {
  function r_mark_yken (line 423) | function r_mark_yken() {
  function habr4 (line 427) | function habr4() {
  function habr5 (line 443) | function habr5() {
  function habr6 (line 466) | function habr6() {
  function habr7 (line 489) | function habr7() {
  function habr8 (line 501) | function habr8() {
  function r_stem_nominal_verb_suffixes (line 524) | function r_stem_nominal_verb_suffixes() {
  function r_stem_suffix_chain_before_ki (line 570) | function r_stem_suffix_chain_before_ki() {
  function habr9 (line 659) | function habr9(v_1) {
  function habr10 (line 690) | function habr10(v_1) {
  function habr11 (line 714) | function habr11() {
  function habr12 (line 754) | function habr12() {
  function r_stem_noun_suffixes (line 789) | function r_stem_noun_suffixes() {
  function r_post_process_last_consonants (line 903) | function r_post_process_last_consonants() {
  function habr13 (line 926) | function habr13() {
  function habr14 (line 941) | function habr14(v_1, c1, c2) {
  function r_append_U_to_stems_ending_with_d_or_g (line 959) | function r_append_U_to_stems_ending_with_d_or_g() {
  function r_more_than_one_syllable_word (line 972) | function r_more_than_one_syllable_word() {
  function habr15 (line 992) | function habr15(v_1, n1, c1) {
  function r_is_reserved_word (line 1005) | function r_is_reserved_word() {
  function r_postlude (line 1015) | function r_postlude() {

FILE: static/js/lunr/tinyseg.js
  function TinySegmenter (line 6) | function TinySegmenter() {

FILE: static/js/searchElasticlunr.js
  function clone (line 1403) | function clone(obj) {
  function getShortcut (line 2602) | function getShortcut() {
  function setAttributes (line 2611) | function setAttributes(element, attributeNames) {
  function openSearchModal (line 2631) | function openSearchModal() {
  function closeModal (line 2638) | function closeModal() {
  function toggleModalVisibility (line 2646) | function toggleModalVisibility() {
  function clearSelected (line 2656) | function clearSelected(exceptDiv = null) {
  function updateSelection (line 2665) | function updateSelection(div) {
  function clearSearch (line 2673) | function clearSearch() {
  function handleModalInteraction (line 2682) | function handleModalInteraction(event) {
  function loadSearchIndex (line 2719) | function loadSearchIndex() {
  function getByteByBinary (line 2748) | function getByteByBinary(binaryCode) {
  function getByteByHex (line 2757) | function getByteByHex(hexCode) {
  function substringByByte (line 2761) | function substringByByte(str, maxLength) {
  function generateSnippet (line 2814) | function generateSnippet(text, searchTerms) {
  function updateResultText (line 3046) | function updateResultText(count) {
  function getPluralizationKey (line 3066) | function getPluralizationKey(count, lang) {
  function setupTouchEvents (line 3109) | function setupTouchEvents() {
  function handleTouchStart (line 3118) | function handleTouchStart() {
  function updateResultSelection (line 3147) | function updateResultSelection(newIndex, divsArray) {

FILE: static/js/sortTable.js
  function updateSortIndicators (line 17) | function updateSortIndicators(header, direction) {
  function removeSortArrows (line 26) | function removeSortArrows(header) {
  function initializeHeaders (line 33) | function initializeHeaders() {
  function announceSort (line 52) | function announceSort(header, direction) {
  function sortTable (line 58) | function sortTable(index) {
  function sortRows (line 69) | function sortRows(rows, index, direction) {
  function refreshTableBody (line 79) | function refreshTableBody(tbody, rows) {
  function updateHeaderAttributes (line 86) | function updateHeaderAttributes(header, direction) {
  function updateAnnounceText (line 100) | function updateAnnounceText(header) {
  function addSortText (line 109) | function addSortText() {

FILE: static/js/themeSwitcher.js
  function getSystemThemePreference (line 6) | function getSystemThemePreference() {
  function setTheme (line 16) | function setTheme(theme, saveToLocalStorage = false) {
  function resetTheme (line 33) | function resetTheme() {
  function switchTheme (line 38) | function switchTheme() {
  function handleThemeTogglerKeydown (line 62) | function handleThemeTogglerKeydown(event) {

FILE: static/js/utterances.js
  function setUtterancesTheme (line 1) | function setUtterancesTheme(newTheme) {
  function initUtterances (line 14) | function initUtterances() {

FILE: static/js/webmention.js
  function getCfg (line 113) | function getCfg(key, dfl) {
  function stripurl (line 133) | function stripurl(url) {
  function dedupe (line 143) | function dedupe(mentions) {
  function formatComments (line 167) | function formatComments(type, comments) {
  function getIcon (line 242) | function getIcon(name) {
  function formatReactions (line 263) | function formatReactions(type, reacts) {
Condensed preview — 296 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,812K chars).
[
  {
    "path": ".githooks/commit-msg",
    "chars": 781,
    "preview": "#!/usr/bin/env bash\n\n# Commit-msg hook generated by git-sumi.\n# For more information and documentation, visit: https://s"
  },
  {
    "path": ".githooks/pre-commit",
    "chars": 10997,
    "preview": "#!/usr/bin/env bash\n\n#################################################################################\n# This script is "
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 33,
    "preview": "* @welpo\ni18n/ar.toml @TheAwiteb\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 14,
    "preview": "github: welpo\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2_bug_report.yml",
    "chars": 1916,
    "preview": "name: \"🐛 Bug report\"\ndescription: \"Did you run into an issue while using tabi?\"\nlabels: [\"bug\"]\nbody:\n- type: textarea\n "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3_feature_request.yml",
    "chars": 1171,
    "preview": "name: \"✨ Feature request\"\ndescription: \"Suggest an idea for tabi\"\nlabels: [\"enhancement\"]\nbody:\n- type: textarea\n  attri"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 193,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: 💬 tabi discussions\n    url: https://github.com/welpo/tabi/discussio"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 2329,
    "preview": "<!--\n  Thank you for contributing to tabi!\n\n  This template is designed to guide you through the pull request process.\n "
  },
  {
    "path": ".github/renovate.json",
    "chars": 735,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"config:recommended\", \":automergeMinor"
  },
  {
    "path": ".github/workflows/cd.yml",
    "chars": 819,
    "preview": "name: Continuous Deployment\n\non:\n  push:\n    tags:\n      - 'v*.*.*'\n\njobs:\n  deploy:\n    name: Deploy and release\n    ru"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 998,
    "preview": "name: Build Site\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n\njobs:\n  check_and_b"
  },
  {
    "path": ".github/workflows/git-sumi.yml",
    "chars": 670,
    "preview": "name: Lint pull request title\n\non:\n  pull_request:\n    types:\n      - opened\n      - edited\n      - synchronize\n      - "
  },
  {
    "path": ".github/workflows/upgrade-deps.yml",
    "chars": 2848,
    "preview": "name: Dependency upgrade\non:\n  workflow_dispatch:\n    inputs:\n      dependency:\n        description: 'Dependency to upgr"
  },
  {
    "path": ".gitignore",
    "chars": 6,
    "preview": "public"
  },
  {
    "path": ".gitmodules",
    "chars": 98,
    "preview": "[submodule \"scripts/release\"]\n\tpath = scripts/release\n\turl = https://github.com/welpo/release.git\n"
  },
  {
    "path": ".prettierignore",
    "chars": 8,
    "preview": "*.min.*\n"
  },
  {
    "path": ".prettierrc.toml",
    "chars": 209,
    "preview": "semi = true\ntrailingComma = \"es5\"\nsingleQuote = true\nprintWidth = 88\ntabWidth = 4\nuseTabs = false\narrowParens = \"always\""
  },
  {
    "path": "CHANGELOG.md",
    "chars": 139255,
    "preview": "# Changelog\n\nWelcome to the changelog for tabi. This document aims to provide a comprehensive list of all notable change"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5217,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6011,
    "preview": "# Contributing to tabi\n\nHalló!\n\nThanks for contributing to [tabi](https://github.com/welpo/tabi). Before implementing ne"
  },
  {
    "path": "LICENSE",
    "chars": 1072,
    "preview": "MIT License\n\nCopyright (c) 2023 Óscar Fernández\n\nPermission is hereby granted, free of charge, to any person obtaining a"
  },
  {
    "path": "README.md",
    "chars": 14481,
    "preview": "<p align=\"center\">\n    <a href=\"CONTRIBUTING.md#pull-requests\">\n        <img src=\"https://img.shields.io/badge/PRs-welco"
  },
  {
    "path": "cliff.toml",
    "chars": 6146,
    "preview": "# git-cliff ~ default configuration file\n# https://git-cliff.org/docs/configuration\n#\n# Lines starting with \"#\" are comm"
  },
  {
    "path": "config.toml",
    "chars": 27668,
    "preview": "base_url = \"https://welpo.github.io/tabi\"\ntitle = \"~/tabi\"\ndescription = \"tabi is an accessible Zola theme with search, "
  },
  {
    "path": "content/_index.ar.md",
    "chars": 669,
    "preview": "+++\ntitle = \"أخر التدوينات\"\nsort_by = \"date\"\ntemplate = \"section.html\"\n\n[extra]\nheader = {title = \"اهلاً انا تابي~\", img"
  },
  {
    "path": "content/_index.ca.md",
    "chars": 655,
    "preview": "+++\ntitle = \"Publicacions recents\"\nsort_by = \"date\"\n\n[extra]\nheader = {title = \"Hola! Soc tabi~\", img = \"img/main.webp\","
  },
  {
    "path": "content/_index.es.md",
    "chars": 695,
    "preview": "+++\ntitle = \"Publicaciones recientes\"\nsort_by = \"date\"\n\n[extra]\nheader = {title = \"¡Hola! Soy tabi~\", img = \"img/main.we"
  },
  {
    "path": "content/_index.md",
    "chars": 662,
    "preview": "+++\ntitle = \"Latest posts\"\nsort_by = \"date\"\n\n[extra]\nheader = {title = \"Hello! I'm tabi~\", img = \"img/main.webp\", img_al"
  },
  {
    "path": "content/archive/_index.ar.md",
    "chars": 52,
    "preview": "+++\ntitle = \"الأرشيف\"\ntemplate = \"archive.html\"\n+++\n"
  },
  {
    "path": "content/archive/_index.ca.md",
    "chars": 96,
    "preview": "+++\ntitle = \"Arxiu\"\ntemplate = \"archive.html\"\n\n[extra]\nsocial_media_card = \"ca_archive.jpg\"\n+++\n"
  },
  {
    "path": "content/archive/_index.es.md",
    "chars": 98,
    "preview": "+++\ntitle = \"Archivo\"\ntemplate = \"archive.html\"\n\n[extra]\nsocial_media_card = \"es_archive.jpg\"\n+++\n"
  },
  {
    "path": "content/archive/_index.md",
    "chars": 95,
    "preview": "+++\ntitle = \"Archive\"\ntemplate = \"archive.html\"\n\n[extra]\nsocial_media_card = \"archive.jpg\"\n+++\n"
  },
  {
    "path": "content/blog/_index.ar.md",
    "chars": 166,
    "preview": "+++\npaginate_by = 5\ntitle = \"التدوينات\"\nsort_by = \"date\"\ntemplate = \"section.html\"\ninsert_anchor_links = \"right\"\n\n[extra"
  },
  {
    "path": "content/blog/_index.ca.md",
    "chars": 168,
    "preview": "+++\npaginate_by = 5\ntitle = \"Blog\"\nsort_by = \"date\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_card = \"ca_blog.j"
  },
  {
    "path": "content/blog/_index.es.md",
    "chars": 168,
    "preview": "+++\npaginate_by = 5\ntitle = \"Blog\"\nsort_by = \"date\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_card = \"es_blog.j"
  },
  {
    "path": "content/blog/_index.md",
    "chars": 165,
    "preview": "+++\npaginate_by = 5\ntitle = \"Blog\"\nsort_by = \"date\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_card = \"blog.jpg\""
  },
  {
    "path": "content/blog/comments/index.ca.md",
    "chars": 6117,
    "preview": "+++\ntitle = \"Afegeix comentaris a les teves publicacions amb aquestes 4 plataformes\"\ndate = 2023-07-14\nupdated = 2025-12"
  },
  {
    "path": "content/blog/comments/index.es.md",
    "chars": 6228,
    "preview": "+++\ntitle = \"Añade comentarios a tus publicaciones con estas 4 plataformas\"\ndate = 2023-07-14\nupdated = 2025-12-12\ndescr"
  },
  {
    "path": "content/blog/comments/index.md",
    "chars": 5644,
    "preview": "+++\ntitle = \"Add comments to your posts with these 4 comment systems\"\ndate = 2023-07-14\nupdated = 2025-12-12\ndescription"
  },
  {
    "path": "content/blog/custom-font-subset/index.ca.md",
    "chars": 7525,
    "preview": "+++\ntitle = \"Optimitza la càrrega amb un subconjunt de font personalitzat\"\ndate = 2023-04-29\nupdated = 2025-01-12\ndescri"
  },
  {
    "path": "content/blog/custom-font-subset/index.es.md",
    "chars": 7573,
    "preview": "+++\ntitle = \"Optimiza la carga con un subconjunto de fuente personalizado\"\ndate = 2023-04-29\nupdated = 2025-01-12\ndescri"
  },
  {
    "path": "content/blog/custom-font-subset/index.md",
    "chars": 7046,
    "preview": "+++\ntitle = \"Optimise loading times with a custom font subset\"\ndate = 2023-04-29\nupdated = 2025-01-12\ndescription = \"Lea"
  },
  {
    "path": "content/blog/customise-tabi/index.ca.md",
    "chars": 8320,
    "preview": "+++\ntitle = \"Personalitza el color de tabi i el tema per defecte\"\ndate = 2023-08-09\nupdated = 2024-09-12\ndescription = \""
  },
  {
    "path": "content/blog/customise-tabi/index.es.md",
    "chars": 8623,
    "preview": "+++\ntitle = \"Personaliza el color de tabi y el tema predeterminado\"\ndate = 2023-08-09\nupdated = 2024-09-12\ndescription ="
  },
  {
    "path": "content/blog/customise-tabi/index.md",
    "chars": 8018,
    "preview": "+++\ntitle = \"Customise tabi with skins and a default theme\"\ndate = 2023-08-09\nupdated = 2024-09-12\ndescription = \"Learn "
  },
  {
    "path": "content/blog/faq-languages/index.ca.md",
    "chars": 7180,
    "preview": "+++\ntitle = \"Lost in Translation? Explora les capacitats multilingües de tabi\"\ndate = 2023-09-12\nupdated = 2026-01-03\nde"
  },
  {
    "path": "content/blog/faq-languages/index.es.md",
    "chars": 7251,
    "preview": "+++\ntitle = \"¿Lost in Translation? Explora las capacidades multilingües de tabi\"\ndate = 2023-09-12\nupdated = 2026-01-03\n"
  },
  {
    "path": "content/blog/faq-languages/index.md",
    "chars": 7017,
    "preview": "+++\ntitle = \"Lost in Translation? Not with tabi's Multilingual Capabilities\"\ndate = 2023-09-12\nupdated = 2026-01-03\ndesc"
  },
  {
    "path": "content/blog/javascript/index.ca.md",
    "chars": 3421,
    "preview": "+++\ntitle = \"Sense JavaScript obligatori\"\ndate = 2023-01-06\nupdated = 2025-02-21\ndescription = \"JavaScript només s'utili"
  },
  {
    "path": "content/blog/javascript/index.es.md",
    "chars": 3619,
    "preview": "+++\ntitle = \"Sin JavaScript obligatorio\"\ndate = 2023-01-06\nupdated = 2025-02-21\ndescription = \"JavaScript solo se utiliz"
  },
  {
    "path": "content/blog/javascript/index.md",
    "chars": 3200,
    "preview": "+++\ntitle = \"No mandatory JavaScript\"\ndate = 2023-01-06\nupdated = 2025-02-21\ndescription = \"JavaScript is only used when"
  },
  {
    "path": "content/blog/markdown/index.ar.md",
    "chars": 3166,
    "preview": "+++\ntitle = \"أمثلة على ماركداون\"\ndate = 2023-01-31\nupdated = 2026-01-01\ndescription = \"تعرض هذه التدوينة بعض الأمثلة على"
  },
  {
    "path": "content/blog/markdown/index.ca.md",
    "chars": 3807,
    "preview": "+++\ntitle = \"Exemples de Markdown\"\ndate = 2023-01-31\nupdated = 2026-01-01\ndescription = \"Aquesta publicació mostra algun"
  },
  {
    "path": "content/blog/markdown/index.es.md",
    "chars": 3828,
    "preview": "+++\ntitle = \"Ejemplos de Markdown\"\ndate = 2023-01-31\nupdated = 2026-01-01\ndescription = \"Esta publicación muestra alguno"
  },
  {
    "path": "content/blog/markdown/index.md",
    "chars": 3765,
    "preview": "+++\ntitle = \"Markdown examples\"\ndate = 2023-01-31\nupdated = 2026-01-01\ndescription = \"This post showcases some examples "
  },
  {
    "path": "content/blog/mastering-tabi-settings/index.ca.md",
    "chars": 60430,
    "preview": "+++\ntitle = \"Domina la configuració de tabi: guia completa\"\ndate = 2023-09-18\nupdated = 2026-01-31\ndescription = \"Descob"
  },
  {
    "path": "content/blog/mastering-tabi-settings/index.es.md",
    "chars": 60814,
    "preview": "+++\ntitle = \"Domina la configuración de tabi: guía completa\"\ndate = 2023-09-18\nupdated = 2026-01-31\ndescription = \"Descu"
  },
  {
    "path": "content/blog/mastering-tabi-settings/index.md",
    "chars": 56022,
    "preview": "+++\ntitle = \"Mastering tabi Settings: A Comprehensive Guide\"\ndate = 2023-09-18\nupdated = 2026-01-31\ndescription = \"Disco"
  },
  {
    "path": "content/blog/security/index.ca.md",
    "chars": 2690,
    "preview": "+++\ntitle = \"Seguretat per defecte\"\ndate = 2023-02-22\nupdated = 2026-01-14\ndescription = \"tabi té una Política de Segure"
  },
  {
    "path": "content/blog/security/index.es.md",
    "chars": 2725,
    "preview": "+++\ntitle = \"Seguro por defecto\"\ndate = 2023-02-22\nupdated = 2026-01-14\ndescription = \"tabi tiene una Política de Seguri"
  },
  {
    "path": "content/blog/security/index.md",
    "chars": 2477,
    "preview": "+++\ntitle = \"Secure by default\"\ndate = 2023-02-22\nupdated = 2026-01-14\ndescription = \"tabi has an easily customizable Co"
  },
  {
    "path": "content/blog/series/index.ca.md",
    "chars": 17580,
    "preview": "+++\ntitle = \"Guia completa sobre sèries\"\ndate = 2024-11-08\nupdated = 2025-02-21\ndescription = \"Aprèn a organitzar les te"
  },
  {
    "path": "content/blog/series/index.es.md",
    "chars": 18225,
    "preview": "+++\ntitle = \"Guía completa sobre series\"\ndate = 2024-11-08\nupdated = 2025-02-21\ndescription = \"Aprende a organizar tus p"
  },
  {
    "path": "content/blog/series/index.md",
    "chars": 16865,
    "preview": "+++\ntitle = \"A Complete Guide to Series\"\ndate = 2024-11-08\nupdated = 2025-02-21\ndescription = \"Learn how to organize you"
  },
  {
    "path": "content/blog/shortcodes/index.ca.md",
    "chars": 17657,
    "preview": "+++\ntitle = \"Shortcodes personalitzats\"\ndate = 2023-02-19\nupdated = 2025-10-21\ndescription = \"Aquest tema inclou alguns "
  },
  {
    "path": "content/blog/shortcodes/index.es.md",
    "chars": 17580,
    "preview": "+++\ntitle = \"Shortcodes personalizados\"\ndate = 2023-02-19\nupdated = 2025-10-21\ndescription = \"Este tema incluye algunos "
  },
  {
    "path": "content/blog/shortcodes/index.md",
    "chars": 16706,
    "preview": "+++\ntitle = \"Custom shortcodes\"\ndate = 2023-02-19\nupdated = 2025-10-21\ndescription = \"This theme includes some useful cu"
  },
  {
    "path": "content/blog/toc/index.ca.md",
    "chars": 14894,
    "preview": "+++\ntitle = \"Taula de contingut\"\ndate = 2022-11-01\nupdated = 2024-02-16\ndescription = \"Una publicació que mostra la taul"
  },
  {
    "path": "content/blog/toc/index.es.md",
    "chars": 14912,
    "preview": "+++\ntitle = \"Tabla de contenido\"\ndate = 2022-11-01\nupdated = 2024-02-16\ndescription = \"Una publicación que muestra la ta"
  },
  {
    "path": "content/blog/toc/index.md",
    "chars": 14478,
    "preview": "+++\ntitle = \"Table of Contents\"\ndate = 2022-11-01\nupdated = 2024-02-16\ndescription = \"A post showcasing the optional Tab"
  },
  {
    "path": "content/pages/_index.ar.md",
    "chars": 84,
    "preview": "+++\nrender = false\ninsert_anchor_links = \"right\"\n\n[extra]\nhide_from_feed = true\n+++\n"
  },
  {
    "path": "content/pages/_index.ca.md",
    "chars": 83,
    "preview": "+++\nrender = false\ninsert_anchor_links = \"left\"\n\n[extra]\nhide_from_feed = true\n+++\n"
  },
  {
    "path": "content/pages/_index.es.md",
    "chars": 83,
    "preview": "+++\nrender = false\ninsert_anchor_links = \"left\"\n\n[extra]\nhide_from_feed = true\n+++\n"
  },
  {
    "path": "content/pages/_index.md",
    "chars": 83,
    "preview": "+++\nrender = false\ninsert_anchor_links = \"left\"\n\n[extra]\nhide_from_feed = true\n+++\n"
  },
  {
    "path": "content/pages/about/index.ar.md",
    "chars": 1705,
    "preview": "+++\ntitle = \"عني\"\ntemplate = \"info-page.html\"\npath = \"/ar/about\"\n\n[extra]\nquick_navigation_buttons = true\nsocial_media_c"
  },
  {
    "path": "content/pages/about/index.ca.md",
    "chars": 1725,
    "preview": "+++\ntitle = \"Sobre mi\"\ntemplate = \"info-page.html\"\npath = \"/ca/about\"\n\n[extra]\nquick_navigation_buttons = true\n+++\n\nBenv"
  },
  {
    "path": "content/pages/about/index.es.md",
    "chars": 1754,
    "preview": "+++\ntitle = \"Sobre mí\"\ntemplate = \"info-page.html\"\npath = \"/es/about\"\n\n[extra]\nquick_navigation_buttons = true\n+++\n\nBien"
  },
  {
    "path": "content/pages/about/index.md",
    "chars": 1608,
    "preview": "+++\ntitle = \"About\"\ntemplate = \"info-page.html\"\npath = \"about\"\n\n[extra]\nquick_navigation_buttons = true\n+++\n\nWelcome to "
  },
  {
    "path": "content/pages/privacy/index.ar.md",
    "chars": 3740,
    "preview": "+++\ntitle = \"سياسة الخصوصية\"\npath = \"/ar/privacy\"\ndate = 2023-10-31\nupdated = 2024-05-12\n+++\n\nهذه السياسة توضح كيف نقوم "
  },
  {
    "path": "content/pages/privacy/index.ca.md",
    "chars": 5113,
    "preview": "+++\ntitle = \"Política de privacitat\"\npath = \"/ca/privacy\"\ndate = 2023-10-31\nupdated = 2024-05-12\n+++\n\nAquesta política d"
  },
  {
    "path": "content/pages/privacy/index.es.md",
    "chars": 5090,
    "preview": "+++\ntitle = \"Política de privacidad\"\npath = \"/es/privacy\"\ndate = 2023-10-31\nupdated = 2024-05-12\n+++\n\nEsta política de p"
  },
  {
    "path": "content/pages/privacy/index.md",
    "chars": 4471,
    "preview": "+++\ntitle = \"Privacy Policy\"\npath = \"privacy\"\ndate = 2023-10-31\nupdated = 2024-05-12\n+++\n\nThis privacy policy outlines h"
  },
  {
    "path": "content/projects/_index.ar.md",
    "chars": 166,
    "preview": "+++\ntitle = \"مشاريعي\"\nsort_by = \"weight\"\ntemplate = \"cards.html\"\ninsert_anchor_links = \"right\"\n\n[extra]\nshow_reading_tim"
  },
  {
    "path": "content/projects/_index.ca.md",
    "chars": 214,
    "preview": "+++\ntitle = \"Projectes\"\nsort_by = \"weight\"\ntemplate = \"cards.html\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_ca"
  },
  {
    "path": "content/projects/_index.es.md",
    "chars": 214,
    "preview": "+++\ntitle = \"Proyectos\"\nsort_by = \"weight\"\ntemplate = \"cards.html\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_ca"
  },
  {
    "path": "content/projects/_index.md",
    "chars": 230,
    "preview": "+++\ntitle = \"Projects\"\nsort_by = \"weight\"\ntemplate = \"cards.html\"\ninsert_anchor_links = \"left\"\n\n[extra]\nsocial_media_car"
  },
  {
    "path": "content/projects/bunbu/index.ca.md",
    "chars": 1501,
    "preview": "+++\ntitle = \"bunbu\"\ndescription = \"Analitza la freqüència de paraules en textos japonesos.\"\nweight = 34\n\n[taxonomies]\nta"
  },
  {
    "path": "content/projects/bunbu/index.es.md",
    "chars": 1497,
    "preview": "+++\ntitle = \"bunbu\"\ndescription = \"Analiza la frecuencia de palabras en textos japoneses.\"\nweight = 34\n\n[taxonomies]\ntag"
  },
  {
    "path": "content/projects/bunbu/index.md",
    "chars": 1328,
    "preview": "+++\ntitle = \"bunbu\"\ndescription = \"Word frequency analysis of Japanese text.\"\nweight = 34\n\n[taxonomies]\ntags = [\"Japanes"
  },
  {
    "path": "content/projects/doteki/index.ca.md",
    "chars": 2306,
    "preview": "+++\ntitle = \"dōteki\"\ndescription = \"Afegeix contingut dinàmic al teu perfil de GitHub amb un sistema intuïtiu de plugins"
  },
  {
    "path": "content/projects/doteki/index.es.md",
    "chars": 2291,
    "preview": "+++\ntitle = \"dōteki\"\ndescription = \"Añade contenido dinámico a tu perfil de GitHub con un sistema intuitivo de plugins.\""
  },
  {
    "path": "content/projects/doteki/index.md",
    "chars": 2181,
    "preview": "+++\ntitle = \"dōteki\"\ndescription = \"Add dynamic content to your GitHub profile through an intuitive plugin system.\"\nweig"
  },
  {
    "path": "content/projects/git-sumi/index.ca.md",
    "chars": 2024,
    "preview": "+++\ntitle = \"git-sumi\"\ndescription = \"El linter de missatges de commit no opinat basat en Rust.\"\nweight = 10\n\n[taxonomie"
  },
  {
    "path": "content/projects/git-sumi/index.es.md",
    "chars": 2075,
    "preview": "+++\ntitle = \"git-sumi\"\ndescription = \"El linter de mensajes de commit no opinado basado en Rust.\"\nweight = 10\n\n[taxonomi"
  },
  {
    "path": "content/projects/git-sumi/index.md",
    "chars": 2089,
    "preview": "+++\ntitle = \"git-sumi\"\ndescription = \"The non-opinionated Rust-based commit message linter.\"\nweight = 10\n\n[taxonomies]\nt"
  },
  {
    "path": "content/projects/iine/index.ca.md",
    "chars": 1693,
    "preview": "+++\ntitle = \"iine\"\ndescription = \"Botons d'apreciació centrats en la privadesa i accessibles per a la web petita/indepen"
  },
  {
    "path": "content/projects/iine/index.es.md",
    "chars": 1704,
    "preview": "+++\ntitle = \"iine\"\ndescription = \"Botones de apreciación centrados en la privacidad y accesibles para la web pequeña.\"\nw"
  },
  {
    "path": "content/projects/iine/index.md",
    "chars": 1544,
    "preview": "+++\ntitle = \"iine\"\ndescription = \"Privacy-focused & accessible like buttons for the small web.\"\nweight = 15\n\n[taxonomies"
  },
  {
    "path": "content/projects/nani/index.ca.md",
    "chars": 3270,
    "preview": "+++\ntitle = \"nani\"\ndescription = \"Script Bash per crear URLs públiques a partir d'arxius o text en servidors remots.\"\nwe"
  },
  {
    "path": "content/projects/nani/index.es.md",
    "chars": 3283,
    "preview": "+++\ntitle = \"nani\"\ndescription = \"Script Bash para crear URLs públicas a partir de archivos o texto en servidores remoto"
  },
  {
    "path": "content/projects/nani/index.md",
    "chars": 3152,
    "preview": "+++\ntitle = \"nani\"\ndescription = \"Bash script to create public URLs from files or text on remote servers.\"\nweight = 50\n\n"
  },
  {
    "path": "content/projects/nemui/index.ca.md",
    "chars": 1547,
    "preview": "+++\ntitle = \"nemui\"\ndescription = \"Ajusta gradualment el teu horari de son amb suport per horari d'estiu.\"\nweight = 22\n\n"
  },
  {
    "path": "content/projects/nemui/index.es.md",
    "chars": 1590,
    "preview": "+++\ntitle = \"nemui\"\ndescription = \"Ajusta gradualmente tu horario de sueño con soporte para horario de verano.\"\nweight ="
  },
  {
    "path": "content/projects/nemui/index.md",
    "chars": 1410,
    "preview": "+++\ntitle = \"nemui\"\ndescription = \"Gradually adjust your sleep schedule with support for DST transitions.\"\nweight = 32\n\n"
  },
  {
    "path": "content/projects/ramu/index.ca.md",
    "chars": 1549,
    "preview": "+++\ntitle = \"ramu\"\ndescription = \"Una aplicació web per practicar la lectura i comprensió auditiva de nombres en japonès"
  },
  {
    "path": "content/projects/ramu/index.es.md",
    "chars": 1558,
    "preview": "+++\ntitle = \"ramu\"\ndescription = \"Una aplicación web para practicar la lectura y comprensión auditiva de números en japo"
  },
  {
    "path": "content/projects/ramu/index.md",
    "chars": 1401,
    "preview": "+++\ntitle = \"ramu\"\ndescription = \"A web app to practice reading and listening to Japanese numbers.\"\nweight = 35\n\n[taxono"
  },
  {
    "path": "content/projects/shuku/index.ca.md",
    "chars": 1906,
    "preview": "+++\ntitle = \"shuku\"\ndescription = \"Condensa pel·lícules i sèries per quedar-te només amb el diàleg. Dissenyat per aprend"
  },
  {
    "path": "content/projects/shuku/index.es.md",
    "chars": 1925,
    "preview": "+++\ntitle = \"shuku\"\ndescription = \"Condensa películas y series para quedarte solo con el diálogo. Diseñado para aprender"
  },
  {
    "path": "content/projects/shuku/index.md",
    "chars": 2012,
    "preview": "+++\ntitle = \"shuku\"\ndescription = \"Shrink media to keep only the dialogue. For immersion language learning.\"\nweight = 20"
  },
  {
    "path": "content/projects/streaming-royalties-calculator/index.ca.md",
    "chars": 1921,
    "preview": "+++\ntitle = \"Calculadora de royalties de streaming\"\ndescription = \"Una eina per calcular els royalties de streaming per "
  },
  {
    "path": "content/projects/streaming-royalties-calculator/index.es.md",
    "chars": 1945,
    "preview": "+++\ntitle = \"Calculadora de royalties de streaming\"\ndescription = \"Una herramienta para calcular los royalties de stream"
  },
  {
    "path": "content/projects/streaming-royalties-calculator/index.md",
    "chars": 1796,
    "preview": "+++\ntitle = \"Streaming Royalties Calculator\"\ndescription = \"A tool to calculate streaming royalties for musicians.\"\nweig"
  },
  {
    "path": "content/projects/tabi/index.ar.md",
    "chars": 2695,
    "preview": "+++\ntitle = \"تابي\"\ndescription = \"سمة زولا عصرية غنية بالمميزات مع دعم متميز لتعدد اللغات\"\nweight = 40\n\n[taxonomies]\ntag"
  },
  {
    "path": "content/projects/tabi/index.ca.md",
    "chars": 6683,
    "preview": "+++\ntitle = \"tabi\"\ndescription = \"Un tema de Zola ràpid, lleuger i modern amb suport multilingüe.\"\nweight = 40\n\n[taxonom"
  },
  {
    "path": "content/projects/tabi/index.es.md",
    "chars": 6705,
    "preview": "+++\ntitle = \"tabi\"\ndescription = \"Un tema de Zola rápido, ligero y moderno con soporte multilingüe.\"\nweight = 40\n\n[taxon"
  },
  {
    "path": "content/projects/tabi/index.md",
    "chars": 6138,
    "preview": "+++\ntitle = \"tabi\"\ndescription = \"A feature-rich modern Zola theme with first-class multi-language support.\"\nweight = 40"
  },
  {
    "path": "content/projects/zutsu/index.ca.md",
    "chars": 1869,
    "preview": "+++\ntitle = \"zutsu\"\ndescription = \"Una aplicació minimalista i privada de gestió de tasques.\"\nweight = 32\n\n[taxonomies]\n"
  },
  {
    "path": "content/projects/zutsu/index.es.md",
    "chars": 1891,
    "preview": "+++\ntitle = \"zutsu\"\ndescription = \"Una aplicación minimalista y privada de gestión de tareas.\"\nweight = 32\n\n[taxonomies]"
  },
  {
    "path": "content/projects/zutsu/index.md",
    "chars": 1674,
    "preview": "+++\ntitle = \"zutsu\"\ndescription = \"A private minimalist task management app.\"\nweight = 32\n\n[taxonomies]\ntags = [\"interac"
  },
  {
    "path": "i18n/ar.toml",
    "chars": 4651,
    "preview": "# Hello, the Arabic language has many pronouns and words, and each word indicates a different meaning,\n# unlike the Engl"
  },
  {
    "path": "i18n/ca.toml",
    "chars": 3551,
    "preview": "language_name = \"Català\"  # Shown in language picker for multi-language sites.\ndate_locale = \"ca_ES\"\nfull_stop =\".\"  # U"
  },
  {
    "path": "i18n/de.toml",
    "chars": 3756,
    "preview": "# This has been machine translated.\n# If you would like to help correct errors or improve the translation,\n# please open"
  },
  {
    "path": "i18n/en.toml",
    "chars": 3316,
    "preview": "language_name = \"English\"  # Shown in language picker for multi-language sites.\ndate_locale = \"en_GB\"\nfull_stop = \".\"  #"
  },
  {
    "path": "i18n/es.toml",
    "chars": 3542,
    "preview": "language_name = \"Español\"  # Shown in language picker for multi-language sites.\ndate_locale = \"es_ES\"\nfull_stop = \".\"  #"
  },
  {
    "path": "i18n/et.toml",
    "chars": 3405,
    "preview": "language_name = \"Eesti\"  # Shown in language picker for multi-language sites.\ndate_locale = \"et_EE\"\nfull_stop = \".\"  # U"
  },
  {
    "path": "i18n/fa.toml",
    "chars": 3378,
    "preview": "language_name = \"فارسی\"  # Shown in language picker for multi-language sites.\ndate_locale = \"fa_IR\"\nfull_stop = \".\"  # U"
  },
  {
    "path": "i18n/fi.toml",
    "chars": 3886,
    "preview": "language_name = \"suomi\"  # Shown in language picker for multi-language sites.\ndate_locale = \"fi_FI\"\nfull_stop = \".\"  # U"
  },
  {
    "path": "i18n/fr.toml",
    "chars": 3652,
    "preview": "language_name = \"Français\"  # Shown in language picker for multi-language sites.\ndate_locale = \"fr_FR\"\nfull_stop = \".\"  "
  },
  {
    "path": "i18n/hi.toml",
    "chars": 3550,
    "preview": "# This has been machine translated.\n# If you would like to help correct errors or improve the translation, please open a"
  },
  {
    "path": "i18n/it.toml",
    "chars": 3423,
    "preview": "language_name = \"Italiano\"  # Shown in language picker for multi-language sites.\ndate_locale = \"it_IT\"\nfull_stop = \".\"  "
  },
  {
    "path": "i18n/ja.toml",
    "chars": 3059,
    "preview": "# This has been machine translated.\n# If you would like to help correct errors or improve the translation,\n# please open"
  },
  {
    "path": "i18n/ko.toml",
    "chars": 3009,
    "preview": "# This has been machine translated.\n# If you would like to help correct errors or improve the translation,\n# please open"
  },
  {
    "path": "i18n/nl.toml",
    "chars": 3608,
    "preview": "language_name = \"Dutch\"  # Shown in language picker for multi-language sites.\ndate_locale = \"nl_NL\" #nl_BE can also be u"
  },
  {
    "path": "i18n/or.toml",
    "chars": 3484,
    "preview": "language_name = \"ଓଡ଼ିଆ\"  # Shown in language picker for multi-language sites.\ndate_locale = \"or_IN\"\nfull_stop = \"।\"  # U"
  },
  {
    "path": "i18n/pt-BR.toml",
    "chars": 3556,
    "preview": "language_name = \"Português\"  # Shown in language picker for multi-language sites.\ndate_locale = \"pt_BR\"\nfull_stop = \".\" "
  },
  {
    "path": "i18n/pt-PT.toml",
    "chars": 3545,
    "preview": "language_name = \"Português\"  # Shown in language picker for multi-language sites.\ndate_locale = \"pt_PT\"\nfull_stop = \".\" "
  },
  {
    "path": "i18n/ru.toml",
    "chars": 3970,
    "preview": "language_name = \"Русский\"  # Shown in language picker for multi-language sites.\ndate_locale = \"ru_RU\"\nfull-stop = \".\"  #"
  },
  {
    "path": "i18n/uk.toml",
    "chars": 4080,
    "preview": "# This has been machine translated.\n# If you would like to help correct errors or improve the translation,\n# please open"
  },
  {
    "path": "i18n/zh-Hans.toml",
    "chars": 3016,
    "preview": "language_name = \"简体中文\"  # Shown in language picker for multi-language sites.\ndate_locale = \"zh_CN\"\nfull_stop = \"。\"  # Us"
  },
  {
    "path": "i18n/zh-Hant.toml",
    "chars": 3016,
    "preview": "language_name = \"繁體中文\"  # Shown in language picker for multi-language sites.\ndate_locale = \"zh_TW\"\nfull_stop = \"。\"  # Us"
  },
  {
    "path": "sass/main.scss",
    "chars": 8772,
    "preview": "@use 'parts/_admonitions.scss';\n@use 'parts/_archive.scss';\n@use 'parts/_aside.scss';\n@use 'parts/_cards.scss';\n@use 'pa"
  },
  {
    "path": "sass/parts/_admonitions.scss",
    "chars": 7254,
    "preview": "@mixin admonition-type($type) {\n    border-color: var(--admonition-#{$type}-border);\n    background-color: var(--admonit"
  },
  {
    "path": "sass/parts/_archive.scss",
    "chars": 676,
    "preview": ".archive {\n    margin-block-start: 4vmin;\n\n    .listing-title {\n        margin-block-end: 1rem;\n        font-size: 1.5re"
  },
  {
    "path": "sass/parts/_aside.scss",
    "chars": 723,
    "preview": "aside {\n    margin-block-end: var(--paragraph-spacing);\n    border-radius: 4px;\n    background: var(--bg-0);\n    padding"
  },
  {
    "path": "sass/parts/_cards.scss",
    "chars": 2356,
    "preview": ".filter-controls {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    align-items: center;\n    gap"
  },
  {
    "path": "sass/parts/_code.scss",
    "chars": 5482,
    "preview": "code {\n    -webkit-text-size-adjust: 100%;\n    border-radius: 5px;\n    background-color: var(--bg-1);\n    padding-inline"
  },
  {
    "path": "sass/parts/_comments.scss",
    "chars": 713,
    "preview": ".utterances-frame {\n    width: 100%;\n}\n\n.comments {\n    margin-top: 2rem;\n    border-top: var(--divider-color) solid 0.5"
  },
  {
    "path": "sass/parts/_footer.scss",
    "chars": 1360,
    "preview": "footer {\n    margin-top: auto;\n    margin-block-end: 1.4rem;\n    color: var(--meta-color);\n    font-size: 0.88rem;\n    f"
  },
  {
    "path": "sass/parts/_header-anchor.scss",
    "chars": 1197,
    "preview": ".header-anchor {\n    display: inline-flex;\n    position: absolute;\n    justify-content: center;\n    align-items: center;"
  },
  {
    "path": "sass/parts/_header.scss",
    "chars": 4324,
    "preview": "header {\n    width: 100%;\n    font-family: 'Inter Subset', var(--sans-serif-font);\n}\n\n.page-header {\n    margin-block: 4"
  },
  {
    "path": "sass/parts/_home-banner.scss",
    "chars": 1834,
    "preview": "#banner-container-home {\n    display: flex;\n    justify-content: space-between;\n    align-items: flex-start;\n    margin:"
  },
  {
    "path": "sass/parts/_iine.scss",
    "chars": 725,
    "preview": ".iine-button {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    transition: background-color 0.2s ea"
  },
  {
    "path": "sass/parts/_image-hover.scss",
    "chars": 320,
    "preview": ".image-hover-container {\n    position: relative;\n    width: 100%;\n\n    .image-default {\n        display: inline;\n    }\n\n"
  },
  {
    "path": "sass/parts/_image-toggler.scss",
    "chars": 402,
    "preview": ".image-label {\n    cursor: pointer;\n}\n\n.image-toggled {\n    position: absolute;\n    top: 0;\n    left: 0;\n    visibility:"
  },
  {
    "path": "sass/parts/_image.scss",
    "chars": 820,
    "preview": "figure {\n    display: inline-block;\n    box-sizing: border-box;\n    margin: 0;\n    max-width: 100%;\n    height: auto;\n}\n"
  },
  {
    "path": "sass/parts/_misc.scss",
    "chars": 6789,
    "preview": "kbd {\n    border: 1px solid var(--divider-color);\n    border-radius: 5px;\n    background-color: var(--bg-0);\n    padding"
  },
  {
    "path": "sass/parts/_multilingual_quote.scss",
    "chars": 634,
    "preview": ".quote-container {\n    border: none;\n}\n\n.quote-toggle {\n    display: none;\n}\n\n.quote-label {\n    display: none;\n    curs"
  },
  {
    "path": "sass/parts/_pagination.scss",
    "chars": 350,
    "preview": ".pagination {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-top: 2rem;\n    "
  },
  {
    "path": "sass/parts/_posts_list.scss",
    "chars": 3400,
    "preview": ".bloglist-container {\n    display: grid;\n    grid-template-columns: 1fr 8fr;\n}\n\n\n$padding: 2.5rem;\n\n.bloglist-meta {\n   "
  },
  {
    "path": "sass/parts/_quick_navigation_buttons.scss",
    "chars": 2573,
    "preview": "#button-container {\n    display: flex;\n    position: fixed;\n    right: 2rem;\n    bottom: 2rem;\n    flex-direction: colum"
  },
  {
    "path": "sass/parts/_search.scss",
    "chars": 3649,
    "preview": "$icon-size: 1.3rem;\n\n#searchModal {\n    background: color-mix(in srgb, var(--primary-color) 5%, transparent);\n    text-a"
  },
  {
    "path": "sass/parts/_spoiler.scss",
    "chars": 1272,
    "preview": ".spoiler-toggle {\n    display: none; // Hide the checkbox.\n}\n\n.spoiler-content {\n    display: inline-block; // Allow con"
  },
  {
    "path": "sass/parts/_syntax_theme.scss",
    "chars": 5604,
    "preview": "/*\n * based on \"Catppuccin Frappe\" https://github.com/catppuccin/catppuccin\n */\n\n:root {\n    --rosewater: #f2d5cf;\n    -"
  },
  {
    "path": "sass/parts/_table.scss",
    "chars": 710,
    "preview": "table {\n    margin: 1rem auto;\n    border-style: hidden !important;\n    border-radius: 5px;\n    border-collapse: collaps"
  },
  {
    "path": "sass/parts/_tags.scss",
    "chars": 616,
    "preview": "#tag-cloud {\n    margin-top: 4vmin;\n\n    ul {\n        margin: 0;\n        padding: 0;\n        list-style: none;\n    }\n\n  "
  },
  {
    "path": "sass/parts/_theme-switch.scss",
    "chars": 1409,
    "preview": ".theme-switcher {\n    -webkit-mask: var(--theme-switcher-svg);\n    position: relative;\n    align-self: center;\n    curso"
  },
  {
    "path": "sass/parts/_webmention.scss",
    "chars": 3352,
    "preview": "#webmentions {\n    position: relative;\n    z-index: 100;\n    margin: 0;\n    background-color: var(--background-color);\n "
  },
  {
    "path": "sass/parts/_zola-error.scss",
    "chars": 944,
    "preview": "// Styles Zola error messages. See https://github.com/welpo/tabi/pull/359\nbody > div:last-child > div:last-child[style]:"
  },
  {
    "path": "sass/skins/blue.scss",
    "chars": 466,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #3271E7; // Contrast ratio: 4.51:1\n"
  },
  {
    "path": "sass/skins/evangelion.scss",
    "chars": 530,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        // Evangelion Unit-02.\n        --primary-color: #d12"
  },
  {
    "path": "sass/skins/indigo_ingot.scss",
    "chars": 465,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #1460bd; // Contrast ratio: 6.1:1\n "
  },
  {
    "path": "sass/skins/lavender.scss",
    "chars": 468,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #9055d8;  // Contrast ratio: 4.69:1"
  },
  {
    "path": "sass/skins/lowcontrast_orange.scss",
    "chars": 853,
    "preview": "// WARNING! This skin, in light theme, may not provide optimal contrast for readability\n// and might not be suitable for"
  },
  {
    "path": "sass/skins/lowcontrast_peach.scss",
    "chars": 853,
    "preview": "// WARNING! This skin, in light theme, may not provide optimal contrast for readability\n// and might not be suitable for"
  },
  {
    "path": "sass/skins/lowcontrast_pink.scss",
    "chars": 850,
    "preview": "// WARNING! This skin, in light theme, may not provide optimal contrast for readability\n// and might not be suitable for"
  },
  {
    "path": "sass/skins/mint.scss",
    "chars": 465,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #00804d;  // Contrast ratio: 5:1\n  "
  },
  {
    "path": "sass/skins/monochrome.scss",
    "chars": 468,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #727272;  // Contrast ratio: 4.81:1"
  },
  {
    "path": "sass/skins/red.scss",
    "chars": 468,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #ca4963; // Contrast ratio: 4.52:1."
  },
  {
    "path": "sass/skins/sakura.scss",
    "chars": 469,
    "preview": "@mixin theme-variables($theme) {\n    @if $theme =='light' {\n        --primary-color: #D33C5C;  // Contrast ratio: 4.61:1"
  },
  {
    "path": "sass/skins/teal.scss",
    "chars": 1033,
    "preview": "// When creating your own skin, you can use https://webaim.org/resources/contrastchecker/\n// to verify the accessibility"
  },
  {
    "path": "scripts/upgrade-deps",
    "chars": 16789,
    "preview": "#!/usr/bin/env bash\nset -eu\n\nMERMAID_DIR=\"static/js\"\nMERMAID_FILE=\"mermaid.min.js\"\nMERMAID_PATH=\"${MERMAID_DIR}/${MERMAI"
  },
  {
    "path": "static/custom_subset.css",
    "chars": 9905,
    "preview": "@font-face{font-family:\"Inter Subset\";src:url(data:application/font-woff2;base64,d09GMgABAAAAABzEABMAAAAALzgAABxWAAQAQgA"
  },
  {
    "path": "static/feed_style.xsl",
    "chars": 5757,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xsl:stylesheet version=\"3.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n  "
  },
  {
    "path": "static/inter_subset_en.css",
    "chars": 26541,
    "preview": "@font-face{font-family:\"Inter Subset\";src:url(data:application/font-woff2;base64,d09GMgABAAAAAE2AABIAAAAAeTgAAE0RAAQAAAA"
  },
  {
    "path": "static/inter_subset_es.css",
    "chars": 28741,
    "preview": "@font-face{font-family:\"Inter Subset\";src:url(data:application/font-woff2;base64,d09GMgABAAAAAFP0ABIAAAAAhawAAFODAAQAAAA"
  },
  {
    "path": "static/isso.css",
    "chars": 8016,
    "preview": "/* ========================================================================== */\n/* Generic styling                     "
  },
  {
    "path": "static/js/codeBlockNameLinks.js",
    "chars": 1543,
    "preview": "document.addEventListener(\"DOMContentLoaded\", function() {\n    // Convert URLs in data-name to links.\n    document.query"
  },
  {
    "path": "static/js/copyCodeToClipboard.js",
    "chars": 1771,
    "preview": "const copiedText = document.getElementById('copy-success').textContent;\nconst initCopyText = document.getElementById('co"
  },
  {
    "path": "static/js/decodeMail.js",
    "chars": 1783,
    "preview": "(function () {\n    'use strict';\n\n    // Utility function: Base64 Decoding.\n    function decodeBase64(encodedString) {\n "
  },
  {
    "path": "static/js/filterCards.js",
    "chars": 3714,
    "preview": "document.addEventListener('DOMContentLoaded', () => {\n    const cards = document.querySelectorAll('.card');\n    const fi"
  },
  {
    "path": "static/js/footnoteBacklinks.js",
    "chars": 1262,
    "preview": "// Assign unique IDs to the footnote references based on their hashes.\nfunction assignReferenceIds() {\n    const referen"
  },
  {
    "path": "static/js/giscus.js",
    "chars": 3569,
    "preview": "function setGiscusTheme(newTheme) {\n    // Get the giscus iframe.\n    const frame = document.querySelector('iframe.giscu"
  },
  {
    "path": "static/js/hyvortalk.js",
    "chars": 1943,
    "preview": "function initHyvorTalk() {\n    // Get the div that will contain the comments.\n    const commentsDiv = document.querySele"
  },
  {
    "path": "static/js/initializePlausible.js",
    "chars": 526,
    "preview": "// Initialise Plausible analytics queue for the new script format (v3.1.0+).\n// This sets up a queue system that collect"
  },
  {
    "path": "static/js/initializeTheme.js",
    "chars": 1038,
    "preview": "(function () {\n    // Get the default theme from the HTML data-theme attribute.\n    const defaultTheme = document.docume"
  },
  {
    "path": "static/js/isso.js",
    "chars": 3350,
    "preview": "// Function to initialise Isso.\nfunction initIsso() {\n    // Get the div that will contain the comments.\n    const comme"
  },
  {
    "path": "static/js/loadComments.js",
    "chars": 1048,
    "preview": "// Wait for the full HTML document to be parsed and ready.\ndocument.addEventListener('DOMContentLoaded', () => {\n    // "
  },
  {
    "path": "static/js/lunr/lunr.da.js",
    "chars": 10233,
    "preview": "/*!\n * Lunr languages, `Danish` language\n * https://github.com/MihaiValentin/lunr-languages\n *\n * Copyright 2014, Mihai "
  },
  {
    "path": "static/js/lunr/lunr.de.js",
    "chars": 13832,
    "preview": "/*!\n * Lunr languages, `German` language\n * https://github.com/MihaiValentin/lunr-languages\n *\n * Copyright 2014, Mihai "
  }
]

// ... and 96 more files (download for full content)

About this extraction

This page contains the full source code of the welpo/tabi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 296 files (1.6 MB), approximately 501.4k tokens, and a symbol index with 264 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!