diff --git a/.editorconfig b/.editorconfig
index 3928e572..8c52ff93 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,359 +1,12 @@
-# Space or Tabs?
-# https://stackoverflow.com/questions/35649847/objective-reasons-for-using-spaces-instead-of-tabs-for-indentation
-# https://stackoverflow.com/questions/12093748/how-to-use-tabs-instead-of-spaces-in-a-shell-script
-# https://github.com/editorconfig/editorconfig-defaults/blob/master/editorconfig-defaults.json
-#
-# 1. What happens when I press the Tab key in my text editor?
-# 2. What happens when I request my editor to indent one or more lines?
-# 3. What happens when I view a file containing U+0009 HORIZONTAL TAB characters?
-#
-# Answers:
-#
-# 1. Pressing the Tab key should indent the current line (or selected lines) one additional level.
-# 2. As a secondary alternative, I can also tolerate an editor that,
-# like Emacs, uses this key for a context-sensitive fix-my-indentation command.
-# 3. Indenting one or more lines should follow the reigning convention, if consensus is sufficiently strong; otherwise,
-# I greatly prefer 2-space indentation at each level. U+0009 characters should shift subsequent characters to the next tab stop.
-#
-# Note: VIM users should use alternate marks [[[ and ]]] as the original ones can confuse nested substitutions, e.g.: ${${${VAR}}}
-#
-# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
-# vim: ft=zsh sw=2 ts=2 et
-
root = true
[*]
charset = utf-8
+end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
-[*.sln]
-indent_style = tab
-
-[*.{md,mdx,rst}]
+[*.md]
trim_trailing_whitespace = false
-
-[*.{cmd,bat}]
-end_of_line = crlf
-
-[*za-*]
-end_of_line = lf
-
-[*.{sh,bash,zsh,fish}]
-end_of_line = lf
-
-[Makefile]
-indent_style = tab
-indent_size = 4
-
-[*.{py,rb}]
-indent_size = 4
-
-[*.{go,java,scala,groovy,kotlin}]
-indent_style = tab
-indent_size = 4
-
-[*.{cs,csx,cake,vb,vbx}]
-# Default Severity for all .NET Code Style rules below
-dotnet_analyzer_diagnostic.severity = warning
-
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#net-style-rules
-[*.{cs,csx,cake,vb,vbx}]
-# "this." and "Me." qualifiers
-dotnet_style_qualification_for_field = true:warning
-dotnet_style_qualification_for_property = true:warning
-dotnet_style_qualification_for_method = true:warning
-dotnet_style_qualification_for_event = true:warning
-# Language keywords instead of framework type names for type references
-dotnet_style_predefined_type_for_locals_parameters_members = true:warning
-dotnet_style_predefined_type_for_member_access = true:warning
-# Modifier preferences
-dotnet_style_require_accessibility_modifiers = always:warning
-csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:warning
-visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:warning
-dotnet_style_readonly_field = true:warning
-# Parentheses preferences
-dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:warning
-dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning
-dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
-dotnet_style_parentheses_in_other_operators = never_if_unnecessary:warning
-# Expression-level preferences
-dotnet_style_object_initializer = true:warning
-dotnet_style_collection_initializer = true:warning
-dotnet_style_explicit_tuple_names = true:warning
-dotnet_style_prefer_inferred_tuple_names = true:warning
-dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
-dotnet_style_prefer_auto_properties = true:warning
-dotnet_style_prefer_conditional_expression_over_assignment = false:suggestion
-dotnet_diagnostic.IDE0045.severity = suggestion
-dotnet_style_prefer_conditional_expression_over_return = false:suggestion
-dotnet_diagnostic.IDE0046.severity = suggestion
-dotnet_style_prefer_compound_assignment = true:warning
-dotnet_style_prefer_simplified_interpolation = true:warning
-dotnet_style_prefer_simplified_boolean_expressions = true:warning
-# Null-checking preferences
-dotnet_style_coalesce_expression = true:warning
-dotnet_style_null_propagation = true:warning
-dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
-# File header preferences
-# file_header_template = \nยฉ PROJECT-AUTHOR\n
-# If you use StyleCop, you'll need to disable SA1636: File header copyright text should match.
-# dotnet_diagnostic.SA1636.severity = none
-# Undocumented
-dotnet_style_operator_placement_when_wrapping = end_of_line:warning
-csharp_style_prefer_null_check_over_type_check = true:warning
-
-# C# Style Rules
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#c-style-rules
-[*.{cs,csx,cake}]
-# 'var' preferences
-csharp_style_var_for_built_in_types = true:warning
-csharp_style_var_when_type_is_apparent = true:warning
-csharp_style_var_elsewhere = true:warning
-# Expression-bodied members
-csharp_style_expression_bodied_methods = true:warning
-csharp_style_expression_bodied_constructors = true:warning
-csharp_style_expression_bodied_operators = true:warning
-csharp_style_expression_bodied_properties = true:warning
-csharp_style_expression_bodied_indexers = true:warning
-csharp_style_expression_bodied_accessors = true:warning
-csharp_style_expression_bodied_lambdas = true:warning
-csharp_style_expression_bodied_local_functions = true:warning
-# Pattern matching preferences
-csharp_style_pattern_matching_over_is_with_cast_check = true:warning
-csharp_style_pattern_matching_over_as_with_null_check = true:warning
-csharp_style_prefer_switch_expression = true:warning
-csharp_style_prefer_pattern_matching = true:warning
-csharp_style_prefer_not_pattern = true:warning
-# Expression-level preferences
-csharp_style_inlined_variable_declaration = true:warning
-csharp_prefer_simple_default_expression = true:warning
-csharp_style_pattern_local_over_anonymous_function = true:warning
-csharp_style_deconstructed_variable_declaration = true:warning
-csharp_style_prefer_index_operator = true:warning
-csharp_style_prefer_range_operator = true:warning
-csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
-# "Null" checking preferences
-csharp_style_throw_expression = true:warning
-csharp_style_conditional_delegate_call = true:warning
-# Code block preferences
-csharp_prefer_braces = true:warning
-csharp_prefer_simple_using_statement = true:suggestion
-dotnet_diagnostic.IDE0063.severity = suggestion
-# 'using' directive preferences
-csharp_using_directive_placement = inside_namespace:warning
-# Modifier preferences
-csharp_prefer_static_local_function = true:warning
-
-# .NET Unnecessary code rules
-[*.{cs,csx,cake,vb,vbx}]
-dotnet_code_quality_unused_parameters = all:warning
-dotnet_remove_unnecessary_suppression_exclusions = none:warning
-
-# C# Unnecessary code rules
-[*.{cs,csx,cake}]
-csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
-dotnet_diagnostic.IDE0058.severity = suggestion
-csharp_style_unused_value_assignment_preference = discard_variable:suggestion
-dotnet_diagnostic.IDE0059.severity = suggestion
-
-# .NET formatting rules
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#net-formatting-rules
-[*.{cs,csx,cake,vb,vbx}]
-# Organize using directives
-dotnet_sort_system_directives_first = true
-dotnet_separate_import_directive_groups = false
-# Dotnet namespace options
-dotnet_style_namespace_match_folder = true:suggestion
-dotnet_diagnostic.IDE0130.severity = suggestion
-
-# C# formatting rules
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#c-formatting-rules
-[*.{cs,csx,cake}]
-# Newline options
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#new-line-options
-csharp_new_line_before_open_brace = all
-csharp_new_line_before_else = true
-csharp_new_line_before_catch = true
-csharp_new_line_before_finally = true
-csharp_new_line_before_members_in_object_initializers = true
-csharp_new_line_before_members_in_anonymous_types = true
-csharp_new_line_between_query_expression_clauses = true
-# Indentation options
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#indentation-options
-csharp_indent_case_contents = true
-csharp_indent_switch_labels = true
-csharp_indent_labels = no_change
-csharp_indent_block_contents = true
-csharp_indent_braces = false
-csharp_indent_case_contents_when_block = false
-# Spacing options
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#spacing-options
-csharp_space_after_cast = false
-csharp_space_after_keywords_in_control_flow_statements = true
-csharp_space_between_parentheses = false
-csharp_space_before_colon_in_inheritance_clause = true
-csharp_space_after_colon_in_inheritance_clause = true
-csharp_space_around_binary_operators = before_and_after
-csharp_space_between_method_declaration_parameter_list_parentheses = false
-csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
-csharp_space_between_method_declaration_name_and_open_parenthesis = false
-csharp_space_between_method_call_parameter_list_parentheses = false
-csharp_space_between_method_call_empty_parameter_list_parentheses = false
-csharp_space_between_method_call_name_and_opening_parenthesis = false
-csharp_space_after_comma = true
-csharp_space_before_comma = false
-csharp_space_after_dot = false
-csharp_space_before_dot = false
-csharp_space_after_semicolon_in_for_statement = true
-csharp_space_before_semicolon_in_for_statement = false
-csharp_space_around_declaration_statements = false
-csharp_space_before_open_square_brackets = false
-csharp_space_between_empty_square_brackets = false
-csharp_space_between_square_brackets = false
-# Wrap options
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#wrap-options
-csharp_preserve_single_line_statements = false
-csharp_preserve_single_line_blocks = true
-# Namespace options
-# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/formatting-rules#namespace-options
-csharp_style_namespace_declarations = file_scoped:warning
-
-[*.{cs,csx,cake,vb,vbx}]
-
-# camel_case_style - Define the camelCase style
-dotnet_naming_style.camel_case_style.capitalization = camel_case
-# pascal_case_style - Define the PascalCase style
-dotnet_naming_style.pascal_case_style.capitalization = pascal_case
-# first_upper_style - The first character must start with an upper-case character
-dotnet_naming_style.first_upper_style.capitalization = first_word_upper
-# prefix_interface_with_i_style - Interfaces must be PascalCase and the first character of an interface must be an 'I'
-dotnet_naming_style.prefix_interface_with_i_style.capitalization = pascal_case
-dotnet_naming_style.prefix_interface_with_i_style.required_prefix = I
-# prefix_type_parameters_with_t_style - Generic Type Parameters must be PascalCase and the first character must be a 'T'
-dotnet_naming_style.prefix_type_parameters_with_t_style.capitalization = pascal_case
-dotnet_naming_style.prefix_type_parameters_with_t_style.required_prefix = T
-# disallowed_style - Anything that has this style applied is marked as disallowed
-dotnet_naming_style.disallowed_style.capitalization = pascal_case
-dotnet_naming_style.disallowed_style.required_prefix = ____RULE_VIOLATION____
-dotnet_naming_style.disallowed_style.required_suffix = ____RULE_VIOLATION____
-# internal_error_style - This style should never occur... if it does, it indicates a bug in file or in the parser using the file
-dotnet_naming_style.internal_error_style.capitalization = pascal_case
-dotnet_naming_style.internal_error_style.required_prefix = ____INTERNAL_ERROR____
-dotnet_naming_style.internal_error_style.required_suffix = ____INTERNAL_ERROR____
-
-# All public/protected/protected_internal constant fields must be PascalCase
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
-dotnet_naming_symbols.public_protected_constant_fields_group.applicable_accessibilities = public, protected, protected_internal
-dotnet_naming_symbols.public_protected_constant_fields_group.required_modifiers = const
-dotnet_naming_symbols.public_protected_constant_fields_group.applicable_kinds = field
-dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.symbols = public_protected_constant_fields_group
-dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
-dotnet_naming_rule.public_protected_constant_fields_must_be_pascal_case_rule.severity = warning
-
-# All public/protected/protected_internal static readonly fields must be PascalCase
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
-dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_accessibilities = public, protected, protected_internal
-dotnet_naming_symbols.public_protected_static_readonly_fields_group.required_modifiers = static, readonly
-dotnet_naming_symbols.public_protected_static_readonly_fields_group.applicable_kinds = field
-dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.symbols = public_protected_static_readonly_fields_group
-dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
-dotnet_naming_rule.public_protected_static_readonly_fields_must_be_pascal_case_rule.severity = warning
-
-# No other public/protected/protected_internal fields are allowed
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/field
-dotnet_naming_symbols.other_public_protected_fields_group.applicable_accessibilities = public, protected, protected_internal
-dotnet_naming_symbols.other_public_protected_fields_group.applicable_kinds = field
-dotnet_naming_rule.other_public_protected_fields_disallowed_rule.symbols = other_public_protected_fields_group
-dotnet_naming_rule.other_public_protected_fields_disallowed_rule.style = disallowed_style
-dotnet_naming_rule.other_public_protected_fields_disallowed_rule.severity = error
-
-# All constant fields must be PascalCase
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1303.md
-dotnet_naming_symbols.stylecop_constant_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
-dotnet_naming_symbols.stylecop_constant_fields_group.required_modifiers = const
-dotnet_naming_symbols.stylecop_constant_fields_group.applicable_kinds = field
-dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.symbols = stylecop_constant_fields_group
-dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.style = pascal_case_style
-dotnet_naming_rule.stylecop_constant_fields_must_be_pascal_case_rule.severity = warning
-
-# All static readonly fields must be PascalCase
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1311.md
-dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected, private
-dotnet_naming_symbols.stylecop_static_readonly_fields_group.required_modifiers = static, readonly
-dotnet_naming_symbols.stylecop_static_readonly_fields_group.applicable_kinds = field
-dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.symbols = stylecop_static_readonly_fields_group
-dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.style = pascal_case_style
-dotnet_naming_rule.stylecop_static_readonly_fields_must_be_pascal_case_rule.severity = warning
-
-# No non-private instance fields are allowed
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1401.md
-dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_accessibilities = public, internal, protected_internal, protected, private_protected
-dotnet_naming_symbols.stylecop_fields_must_be_private_group.applicable_kinds = field
-dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.symbols = stylecop_fields_must_be_private_group
-dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.style = disallowed_style
-dotnet_naming_rule.stylecop_instance_fields_must_be_private_rule.severity = error
-
-# Private fields must be camelCase
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1306.md
-dotnet_naming_symbols.stylecop_private_fields_group.applicable_accessibilities = private
-dotnet_naming_symbols.stylecop_private_fields_group.applicable_kinds = field
-dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.symbols = stylecop_private_fields_group
-dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.style = camel_case_style
-dotnet_naming_rule.stylecop_private_fields_must_be_camel_case_rule.severity = warning
-
-# Local variables must be camelCase
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1312.md
-dotnet_naming_symbols.stylecop_local_fields_group.applicable_accessibilities = local
-dotnet_naming_symbols.stylecop_local_fields_group.applicable_kinds = local
-dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.symbols = stylecop_local_fields_group
-dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.style = camel_case_style
-dotnet_naming_rule.stylecop_local_fields_must_be_camel_case_rule.severity = silent
-
-# This rule should never fire. However, it's included for at least two purposes:
-# First, it helps to understand, reason about, and root-case certain types of issues, such as bugs in .editorconfig parsers.
-# Second, it helps to raise immediate awareness if a new field type is added (as occurred recently in C#).
-dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_accessibilities = *
-dotnet_naming_symbols.sanity_check_uncovered_field_case_group.applicable_kinds = field
-dotnet_naming_rule.sanity_check_uncovered_field_case_rule.symbols = sanity_check_uncovered_field_case_group
-dotnet_naming_rule.sanity_check_uncovered_field_case_rule.style = internal_error_style
-dotnet_naming_rule.sanity_check_uncovered_field_case_rule.severity = error
-
-# All of the following must be PascalCase:
-# - Namespaces
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-namespaces
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md
-# - Classes and Enumerations
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
-# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/SA1300.md
-# - Delegates
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces#names-of-common-types
-# - Constructors, Properties, Events, Methods
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-type-members
-dotnet_naming_symbols.element_group.applicable_kinds = namespace, class, enum, struct, delegate, event, method, property
-dotnet_naming_rule.element_rule.symbols = element_group
-dotnet_naming_rule.element_rule.style = pascal_case_style
-dotnet_naming_rule.element_rule.severity = warning
-
-# Interfaces use PascalCase and are prefixed with uppercase 'I'
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
-dotnet_naming_symbols.interface_group.applicable_kinds = interface
-dotnet_naming_rule.interface_rule.symbols = interface_group
-dotnet_naming_rule.interface_rule.style = prefix_interface_with_i_style
-dotnet_naming_rule.interface_rule.severity = warning
-
-# Generics Type Parameters use PascalCase and are prefixed with uppercase 'T'
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
-dotnet_naming_symbols.type_parameter_group.applicable_kinds = type_parameter
-dotnet_naming_rule.type_parameter_rule.symbols = type_parameter_group
-dotnet_naming_rule.type_parameter_rule.style = prefix_type_parameters_with_t_style
-dotnet_naming_rule.type_parameter_rule.severity = warning
-
-# Function parameters use camelCase
-# https://docs.microsoft.com/dotnet/standard/design-guidelines/naming-parameters
-dotnet_naming_symbols.parameters_group.applicable_kinds = parameter
-dotnet_naming_rule.parameters_rule.symbols = parameters_group
-dotnet_naming_rule.parameters_rule.style = camel_case_style
-dotnet_naming_rule.parameters_rule.severity = warning
diff --git a/.gitattributes b/.gitattributes
index e215d30b..5a53b71a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,82 +1,11 @@
-# Auto detect text files and perform LF normalization
-* text=auto
+* text=auto
-#
-# The above will handle all files NOT found below
-#
+*.sh text eol=lf
+*.zsh text eol=lf
+*.zunit text eol=lf
+_zi text eol=lf
+lib/zcompile text eol=lf
+lib/templates/example-script text eol=lf
-# Documents
-*.bibtex text diff=bibtex
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
-*.md text diff=markdown
-*.mdx text diff=markdown
-*.tex text diff=tex
-*.adoc text
-*.textile text
-*.mustache text
-*.csv text
-*.tab text
-*.tsv text
-*.txt text
-*.sql text
-*.epub diff=astextplain
-
-# Graphics
-*.png binary
-*.jpg binary
-*.jpeg binary
-*.gif binary
-*.tif binary
-*.tiff binary
-*.ico binary
-# SVG treated as text by default.
-*.svg text
-# If you want to treat it as binary,
-# use the following line instead.
-# *.svg binary
-*.eps binary
-
-# Scripts
-*.bash text eol=lf
-*.fish text eol=lf
-*.sh text eol=lf
-*.zsh text eol=lf
-*.zunit text eol=lf
-# These are explicitly windows files and should use crlf
-*.bat text eol=crlf
-*.cmd text eol=crlf
-*.ps1 text eol=crlf
-
-# Serialisation
-*.json text
-*.toml text
-*.xml text
-*.yaml text
-*.yml text
-
-# Archives
-*.7z binary
-*.gz binary
-*.tar binary
-*.tgz binary
-*.zip binary
-
-# Text files where line endings should be preserved
-*.patch -text
-
-#
-# Exclude files from exporting
-#
-
-.gitattributes export-ignore
-.gitignore export-ignore
-.gitkeep export-ignore
+*.gz binary
+*.png binary
diff --git a/.github/ISSUE_TEMPLATE/01_bug_report.yml b/.github/ISSUE_TEMPLATE/01_bug_report.yml
index e789112a..a35e694b 100644
--- a/.github/ISSUE_TEMPLATE/01_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/01_bug_report.yml
@@ -1,110 +1,50 @@
name: "๐ Bug report"
-description: File a bug report
+description: Report reproducible incorrect Zi behavior
title: "[bug]: "
-labels: ["bug ๐", "triage ๐"]
+labels: ["type:bug", "status:triage"]
assignees: ["ss-o"]
body:
- - type: markdown
- attributes:
- value: |
- First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
- type: input
id: environment
attributes:
label: Environment
- description: >
- Please describe your environment in as much detail as possible. Otherwise, we may not be able to reproduce the issue.
- placeholder: >
- Example:
- print "Device: $VENDOR | $OSTYPE | $CPUTYPE"
- print "Shell: $SHELL | $ZSH_ARGZERO | $ZSH_PATCHLEVEL"
- print "Zi: $(git -C $ZI[BIN_DIR] rev-parse HEAD)"
- validations:
- required: true
- - type: textarea
- id: repro
- attributes:
- label: Reproduction steps
- description: "How do you trigger this bug? Please walk us through it step by step."
- value: |
- 1.
- 2.
- 3.
- 4.
- 5.
- ...
- render: bash
+ description: Include your OS, Zsh version, and Zi commit.
+ placeholder: zsh --version; git -C "${ZI[BIN_DIR]}" rev-parse HEAD
validations:
required: true
- type: textarea
- id: expected
+ id: reproduction
attributes:
- label: Expected behavior
- description: "Please describe the expected behavior"
- value: |
- 1.
- 2.
- 3.
- 4.
- 5.
- ...
- render: bash
+ label: Minimal reproduction
+ description: Provide the smallest Zsh commands or configuration that reproduce the problem.
+ render: zsh
validations:
required: true
- type: textarea
- id: current
+ id: actual
attributes:
- label: Current behavior
- description: "Please describe how the bug manifests"
- value: |
- 1.
- 2.
- 3.
- 4.
- 5.
- ...
- render: bash
+ label: Actual behavior
+ description: Include complete error output or logs where relevant.
validations:
required: true
- type: textarea
- id: code-snippet
- attributes:
- label: Code snippet
- description: "Please insert your zshrc or just a short code snippet in concern."
- validations:
- required: true
- - type: textarea
- id: additional
+ id: expected
attributes:
- label: Additional information
- description: "List any other information that is relevant to your issue. For reports and stats run `zi analytics`"
+ label: Expected behavior
validations:
required: true
- type: checkboxes
+ id: self-service
attributes:
label: Self-service
- description: |
- If you feel like you could contribute to this issue, please check the box below. This would tell us and other people looking for contributions that someone's working on it.
- If you do check this box, please send a pull request within 7 days so we can still delegate this to someone else.
options:
- - label: I'd be willing to address this documentation request myself.
+ - label: I would be willing to submit a fix for this bug.
- type: checkboxes
+ id: policies
attributes:
- label: Have you read the Contributing Guidelines?
+ label: Project policies
options:
- - label: I have read the [Contributing Guidelines](https://github.com/z-shell/community/blob/main/docs/CONTRIBUTING_GUIDELINES.md).
+ - label: I have read the [contribution guidelines](https://github.com/z-shell/.github/blob/main/.github/CONTRIBUTING.md).
required: true
- - type: checkboxes
- attributes:
- label: Are you familiar with the Contributor Covenant Code of Conduct?
- options:
- - label: I have read the [Contributor Covenant Code of Conduct](https://github.com/z-shell/zi/blob/main/docs/CODE_OF_CONDUCT.md).
+ - label: I agree to follow the [Code of Conduct](https://github.com/z-shell/.github/blob/main/.github/CODE_OF_CONDUCT.md).
required: true
- - type: input
- id: contact
- attributes:
- label: Contact Details
- description: How can we get in touch with you if we need more info?
- placeholder: ex. email@example.com
- validations:
- required: false
diff --git a/.github/ISSUE_TEMPLATE/02_feature_request.yml b/.github/ISSUE_TEMPLATE/02_feature_request.yml
index 84d3586e..aeca2c63 100644
--- a/.github/ISSUE_TEMPLATE/02_feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/02_feature_request.yml
@@ -1,61 +1,41 @@
name: "๐ก Feature request"
-description: Suggest an idea for this project
+description: Propose a new Zi capability
title: "[feat]: "
-labels: ["feature-request ๐ก"]
+labels: ["type:feature", "status:triage"]
assignees: ["ss-o"]
body:
- - type: markdown
- attributes:
- value: |
- First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
- - type: input
- id: description
+ - type: textarea
+ id: problem
attributes:
- label: Feature description
- description: A clear and concise description of what the feature request is. Please include if your feature request is related to a problem
+ label: Problem
+ description: What Zi use case is difficult or impossible today?
validations:
required: true
- type: textarea
- id: code-snippet
+ id: proposal
attributes:
- label: Related Code
- description: "If you can illustrate the bug or feature request with an example, please provide it here"
+ label: Proposed solution
+ description: Describe the behavior and show an example Zi command or configuration.
validations:
- required: false
+ required: true
- type: textarea
- id: additional
+ id: alternatives
attributes:
- label: Additional Context
- description:
- "List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to add, use case, Stack Overflow links, forum links, screenshots, OS if applicable,
- etc."
+ label: Alternatives considered
validations:
required: false
- type: checkboxes
+ id: self-service
attributes:
label: Self-service
- description: |
- If you feel like you could contribute to this issue, please check the box below. This would tell us and other people looking for contributions that someone's working on it.
- If you do check this box, please send a pull request within 7 days so we can still delegate this to someone else.
options:
- - label: I'd be willing to address this documentation request myself.
+ - label: I would be willing to implement this feature.
- type: checkboxes
+ id: policies
attributes:
- label: Have you read the Contributing Guidelines?
+ label: Project policies
options:
- - label: I have read the [Contributing Guidelines](https://github.com/z-shell/community/blob/main/docs/CONTRIBUTING_GUIDELINES.md).
+ - label: I have read the [contribution guidelines](https://github.com/z-shell/.github/blob/main/.github/CONTRIBUTING.md).
required: true
- - type: checkboxes
- attributes:
- label: Are you familiar with the Contributor Covenant Code of Conduct?
- options:
- - label: I have read the [Contributor Covenant Code of Conduct](https://github.com/z-shell/zi/blob/main/docs/CODE_OF_CONDUCT.md).
+ - label: I agree to follow the [Code of Conduct](https://github.com/z-shell/.github/blob/main/.github/CODE_OF_CONDUCT.md).
required: true
- - type: input
- id: contact
- attributes:
- label: Contact Details
- description: How can we get in touch with you if we need more info?
- placeholder: ex. email@example.com
- validations:
- required: false
diff --git a/.github/ISSUE_TEMPLATE/03_codebase_improvement.yml b/.github/ISSUE_TEMPLATE/03_codebase_improvement.yml
index 21d854c1..bf6a21e5 100644
--- a/.github/ISSUE_TEMPLATE/03_codebase_improvement.yml
+++ b/.github/ISSUE_TEMPLATE/03_codebase_improvement.yml
@@ -1,46 +1,35 @@
name: "โจ Codebase improvement"
-description: Suggest a better solution for algorithms, annexes, packages, development tools, etc.
-title: "[dev]: "
-labels: ["enhancement โจ"]
+description: Propose maintenance or an improvement to existing Zi code
+title: "[chore]: "
+labels: ["type:maintenance", "status:triage"]
assignees: ["ss-o"]
body:
- type: textarea
- id: enhancement
+ id: limitation
attributes:
- label: "Your feedback for the existing codebase"
+ label: Current limitation
+ description: Identify the code, tooling, or workflow that should be improved.
validations:
- required: false
- - type: markdown
+ required: true
+ - type: textarea
+ id: proposal
attributes:
- value: |
- First off, thanks for taking the time to contribute!
- Contributions are what make the open-source community such an amazing place to learn, inspire, and create.
- Any contributions you make will benefit everybody else and are greatly appreciated.
+ label: Proposed improvement
+ description: Explain the change and its expected benefit or trade-offs.
+ validations:
+ required: true
- type: checkboxes
+ id: self-service
attributes:
label: Self-service
- description: |
- If you feel like you could contribute to this issue, please check the box below. This would tell us and other people looking for contributions that someone's working on it.
- If you do check this box, please send a pull request within 7 days so we can still delegate this to someone else.
options:
- - label: I'd be willing to address this documentation request myself.
+ - label: I would be willing to implement this improvement.
- type: checkboxes
+ id: policies
attributes:
- label: Have you read the Contributing Guidelines?
+ label: Project policies
options:
- - label: I have read the [Contributing Guidelines](https://github.com/z-shell/community/blob/main/docs/CONTRIBUTING_GUIDELINES.md).
+ - label: I have read the [contribution guidelines](https://github.com/z-shell/.github/blob/main/.github/CONTRIBUTING.md).
required: true
- - type: checkboxes
- attributes:
- label: Are you familiar with the Contributor Covenant Code of Conduct?
- options:
- - label: I have read the [Contributor Covenant Code of Conduct](https://github.com/z-shell/zi/blob/main/docs/CODE_OF_CONDUCT.md).
+ - label: I agree to follow the [Code of Conduct](https://github.com/z-shell/.github/blob/main/.github/CODE_OF_CONDUCT.md).
required: true
- - type: input
- id: contact
- attributes:
- label: Contact Details
- description: How can we get in touch with you if we need more info?
- placeholder: ex. email@example.com
- validations:
- required: false
diff --git a/.github/ISSUE_TEMPLATE/04_documentation.yml b/.github/ISSUE_TEMPLATE/04_documentation.yml
index ad9382a5..c4a04596 100644
--- a/.github/ISSUE_TEMPLATE/04_documentation.yml
+++ b/.github/ISSUE_TEMPLATE/04_documentation.yml
@@ -1,66 +1,48 @@
name: "๐ Documentation"
-description: The issue request for changes in documentation
+description: Request a correction or improvement to Zi documentation
title: "[docs]: "
-labels: ["documentation ๐"]
+labels: ["type:docs", "area:docs"]
assignees: ["ss-o"]
body:
- - type: markdown
- attributes:
- value: |
- This template is strictly used for documentation requests, including:
-
- - Elaborating on a particular topic;
- - Updating external links;
- - Anything else that doesn't require touching the codebase itself.
-
- If you followed the documentation but things don't work, take some time to consider if it's the documentation or the code that's wrong. In the latter, prefer using the "bug" template.
-
- You may proceed directly to sending a pull request without filing this issue, and we can improve your work.
- If you think some of the requirements above are not met, or if you are not able to contribute yourself, the issue is still welcomed.
-
- - type: textarea
- id: request-info
- attributes:
- label: Description
- description: Tell us, what can be done better or a clear and concise description of what the issue is.
- validations:
- required: true
- type: dropdown
- id: ecosystem
+ id: area
attributes:
- label: Select the area that is associated with this issue.
- multiple: true
+ label: Documentation area
options:
- - ZI (this repository)
+ - Zi repository
+ - Wiki
- Annexes
- Plugins
- Packages
- Other
+ validations:
+ required: true
+ - type: input
+ id: location
+ attributes:
+ label: Location
+ description: Link to the page or identify the file and section.
+ validations:
+ required: true
+ - type: textarea
+ id: request
+ attributes:
+ label: Requested change
+ description: Explain what is missing, unclear, or incorrect and suggest replacement wording if possible.
+ validations:
+ required: true
- type: checkboxes
+ id: self-service
attributes:
label: Self-service
- description: |
- If you feel like you could contribute to this issue, please check the box below. This would tell us and other people looking for contributions that someone's working on it.
- If you do check this box, please send a pull request within 7 days so we can still delegate this to someone else.
options:
- - label: I'd be willing to address this documentation request myself.
+ - label: I would be willing to update this documentation.
- type: checkboxes
+ id: policies
attributes:
- label: Have you read the Contributing Guidelines?
+ label: Project policies
options:
- - label: I have read the [Contributing Guidelines](https://github.com/z-shell/community/blob/main/docs/CONTRIBUTING_GUIDELINES.md).
+ - label: I have read the [contribution guidelines](https://github.com/z-shell/.github/blob/main/.github/CONTRIBUTING.md).
required: true
- - type: checkboxes
- attributes:
- label: Are you familiar with the Contributor Covenant Code of Conduct?
- options:
- - label: I have read the [Contributor Covenant Code of Conduct](https://github.com/z-shell/zi/blob/main/docs/CODE_OF_CONDUCT.md).
+ - label: I agree to follow the [Code of Conduct](https://github.com/z-shell/.github/blob/main/.github/CODE_OF_CONDUCT.md).
required: true
- - type: input
- id: contact
- attributes:
- label: Contact Details
- description: How can we get in touch with you if we need more info?
- placeholder: ex. email@example.com
- validations:
- required: false
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index fb621f95..46259f7f 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -8,10 +8,10 @@
Commit messages must follow Conventional Commits:
type(scope): short description (โค72 chars, imperative mood)
- Types: feat fix perf refactor docs test ci chore revert
+ Types: feat fix perf refactor docs test build ci style chore revert
Example: fix(self-update): correctly propagate exit code on failure
- See .github/copilot-instructions.md for full guidelines.
+ See AGENTS.md for the repository contribution guidelines.
-->
## Description
@@ -32,14 +32,18 @@
- [ ] `perf` โ performance improvement
- [ ] `refactor` โ code change with no functional impact
- [ ] `docs` โ documentation only
+- [ ] `test` โ test addition or correction
+- [ ] `build` โ build system or dependency change
- [ ] `ci` โ CI/workflow change
+- [ ] `style` โ formatting with no behavior change
- [ ] `chore` โ maintenance / dependency bump
+- [ ] `revert` โ revert of an earlier change
## Checklist
- [ ] Ordinary work targets `next`; only same-repository hotfixes target `main`
- [ ] Commit messages follow Conventional Commits format
-- [ ] No AI co-author trailers in commit messages
-- [ ] I have read [CONTRIBUTING.md](docs/CONTRIBUTING.md)
+- [ ] No `Co-authored-by` trailers in commit messages
+- [ ] I have read the [contribution guidelines](https://github.com/z-shell/.github/blob/main/.github/CONTRIBUTING.md)
- [ ] Existing tests pass (`zsh -n zi.zsh` / Trunk checks)
- [ ] Documentation updated if needed
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 66f4e3df..20b0f37e 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -21,8 +21,8 @@ jobs:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
+ contents: read
security-events: write
- packages: read
strategy:
fail-fast: false
matrix:
@@ -31,15 +31,15 @@ jobs:
build-mode: none
steps:
- name: Checkout repository
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Initialize CodeQL
- uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
+ uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
+ uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
with:
category: "/language:${{ matrix.language }}"
diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml
index 8b1ec8b8..1ff1d2d5 100644
--- a/.github/workflows/commit-lint.yml
+++ b/.github/workflows/commit-lint.yml
@@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "โคต๏ธ Check out code from GitHub"
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
@@ -34,7 +34,7 @@ jobs:
run: |
set -euo pipefail
- CONVENTIONAL_PATTERN='^(feat|fix|perf|refactor|docs|test|ci|chore|revert)(\([^)]+\))?!?: .{1,72}$'
+ CONVENTIONAL_PATTERN='^(feat|fix|perf|refactor|docs|test|build|ci|style|chore|revert)(\([^)]+\))?!?: .{1,72}$'
errors=0
checked=0
@@ -72,7 +72,7 @@ jobs:
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
- PATTERN='^(feat|fix|perf|refactor|docs|test|ci|chore|revert)(\([^)]+\))?!?: .{1,72}$'
+ PATTERN='^(feat|fix|perf|refactor|docs|test|build|ci|style|chore|revert)(\([^)]+\))?!?: .{1,72}$'
if ! echo "$PR_TITLE" | grep -qE "$PATTERN"; then
echo "::error::PR title must follow Conventional Commits: type(scope): description"
exit 1
diff --git a/.github/workflows/trunk-check.yml b/.github/workflows/trunk-check.yml
index 69b74740..13bac2b3 100644
--- a/.github/workflows/trunk-check.yml
+++ b/.github/workflows/trunk-check.yml
@@ -5,14 +5,14 @@ on:
branches: [main, next]
tags: ["v*.*.*"]
pull_request:
- types: [opened, synchronize]
+ types: [opened, reopened, synchronize]
workflow_dispatch: {}
concurrency:
- group: ${{ github.head_ref || github.run_id }}
+ group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
-permissions: read-all
+permissions: {}
jobs:
check:
@@ -21,7 +21,9 @@ jobs:
checks: write # For trunk to post annotations
contents: read # For repo checkout
steps:
- - name: Checkout
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- - name: Trunk Code Quality
- uses: trunk-io/trunk-action@75699af9e26881e564e9d832ef7dc3af25ec031b
+ - name: Checkout repository
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+ - name: Run Trunk checks
+ uses: trunk-io/trunk-action@04ba50e7658c81db7356da96657e6e77f220bfa3 # v1.3.1
+ with:
+ check-mode: all
diff --git a/.github/workflows/zsh-n.yml b/.github/workflows/zsh-n.yml
index dd1420b7..92c87373 100644
--- a/.github/workflows/zsh-n.yml
+++ b/.github/workflows/zsh-n.yml
@@ -13,12 +13,6 @@ on:
paths:
- "zi.zsh"
- "lib/**"
- workflow_run:
- workflows:
- - "โญ Trunk"
- types:
- - completed
- branches: [main]
workflow_dispatch: {}
concurrency:
@@ -35,13 +29,13 @@ jobs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: โคต๏ธ Check out code from GitHub
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: "Set matrix output"
id: set-matrix
run: |
- MATRIX="$(find . -type d -name 'doc' -prune -o -type f \( -iname '*.zsh' -o -iname '_zi' \) -print | jq -ncR '{"include": [{"file": inputs}]}')"
+ MATRIX="$(find . -type d -name 'doc' -prune -o -type f \( -iname '*.zsh' -o -iname '_zi' -o -path './lib/zcompile' -o -path './lib/templates/example-script' \) -print | jq -ncR '{"include": [{"file": inputs}]}')"
echo "MATRIX=${MATRIX}" >&2
- echo "matrix=${MATRIX}" >> $GITHUB_OUTPUT
+ echo "matrix=${MATRIX}" >> "$GITHUB_OUTPUT"
zsh-n:
runs-on: ubuntu-latest
@@ -51,7 +45,7 @@ jobs:
matrix: ${{ fromJSON(needs.zsh-matrix.outputs.matrix) }}
steps:
- name: โคต๏ธ Check out code from GitHub
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: "โก Install dependencies"
run: sudo apt update && sudo apt-get install -yq zsh
- name: "โก zsh -n: ${{ matrix.file }}"
diff --git a/.gitignore b/.gitignore
index f18a949a..afcfe656 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,27 +1,21 @@
-# VSCODE workspace
-.vscode/*
-.vscode/settings.json
-.vscode/tasks.json
-.vscode/launch.json
-.vscode/extensions.json
+# Local editor files
+.vscode/
*.code-workspace
+*~
+.*.sw?
+.#*
-# Exclude for security reasons
+# Local configuration and history
+.env
.history/
.dccache
-.env
+.directory_history
+.zcalc_history
-# Zsh compiled script + zrecompile backup
+# Zi and Zsh generated files
*.zwc
*.zwc.old
-
-# Zsh completion-optimization dumpfile
*zcompdump*
-
-# Zsh zcalc history
-.zcalc_history
-
-# A popular plugin manager's files
._zi
._zinit
._zplugin
@@ -29,102 +23,7 @@
.zinit_lastupd
.zplugin_lstupd
-# z-shell/zshelldoc tool's files
-zsdoc/data
-docs/zsdoc/data
-
-# ohmyzsh/ohmyzsh/plugins/per-directory-history plugin's files
-# (when set-up to store the history in the local directory)
-.directory_history
-
-# MichaelAquilina/zsh-autoswitch-virtualenv plugin's files
-# (for Zsh plugins using Python)
-.venv
-
-# Zunit tests' output
-/tests/_output/*
-!/tests/_output/.gitkeep
-
-### C
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
-
-# Repository specific files
-test/
-txt/
-*.txt
-*.zwc
-*.zini
-*lib/zsh/*zwc
-.ycm_extra_conf.py
-*deploy*key*
-*.bundle
-site*/
-other
-TODO*
-tags
-TAGS
-*.o
-*.o.c
-*.orig
-*.a
-*.so
-*.dll
-*~
-.*.sw?
-\#*
-
-CVS
-.#*
-
-.trunk/out*
\ No newline at end of file
+# Development tool output
+/tests/_output/
+zsdoc/data/
+docs/zsdoc/data/
diff --git a/.trunk/config/.markdownlint.yaml b/.trunk/config/.markdownlint.yaml
index 80110bca..c59dc43e 100644
--- a/.trunk/config/.markdownlint.yaml
+++ b/.trunk/config/.markdownlint.yaml
@@ -1,12 +1,4 @@
-# Autoformatter friendly markdownlint config (all formatting rules disabled)
default: true
-blank_lines: false
-bullet: false
-html: false
-indentation: false
-line_length: false
-spaces: false
-url: false
-whitespace: false
+MD013: false
+MD033: false
MD041: false
-MD026: false
diff --git a/.trunk/config/.yamllint.yaml b/.trunk/config/.yamllint.yaml
deleted file mode 100644
index 184e251f..00000000
--- a/.trunk/config/.yamllint.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-rules:
- quoted-strings:
- required: only-when-needed
- extra-allowed: ["{|}"]
- key-duplicates: {}
- octal-values:
- forbid-implicit-octal: true
diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml
index ac0395b4..f9db7284 100644
--- a/.trunk/trunk.yaml
+++ b/.trunk/trunk.yaml
@@ -1,34 +1,27 @@
version: 0.1
cli:
- version: 1.24.0
+ version: 1.25.0
plugins:
sources:
- id: trunk
- ref: v1.7.0
+ ref: v1.11.0
uri: https://github.com/trunk-io/plugins
lint:
- disabled:
- - yamllint
enabled:
- - checkov@3.2.441
- oxipng@9.1.5
- - trufflehog@3.89.1
- - actionlint@1.7.7
- - svgo@3.3.2
- - gitleaks@8.27.2
+ - trufflehog@3.90.13
+ - actionlint@1.7.8
+ - svgo@4.0.0
- markdownlint@0.45.0
- git-diff-check
- - prettier@3.5.3
- - shellcheck@0.10.0
- - shfmt@3.7.0
+ - prettier@3.6.2
+ - shellcheck@0.11.0
+ - shfmt@3.13.1
runtimes:
enabled:
- python@3.10.8
- - go@1.21.0
- node@22.16.0
actions:
enabled:
- - trunk-announce
- trunk-check-pre-push
- trunk-fmt-pre-commit
- - trunk-upgrade-available
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index c11e4b06..00000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "conventionalCommits.scopes": [
- "maintenance",
- "library",
- "feature",
- "refactor",
- "style",
- "chore",
- "revert",
- "docs",
- "deps",
- "misc",
- "build",
- "perf",
- "test",
- "fix",
- "ci"
- ],
- "shellformat.useEditorConfig": true,
- "todo-tree.general.tags": [
- "BUG",
- "HACK",
- "FIXME",
- "TODO",
- "NOTE",
- "[ ]",
- "[x]"
- ],
- "todo-tree.highlights.customHighlight": {
- "TODO": {
- "icon": "tools",
- "type": "line",
- "fontWeight": "bold",
- "iconColour": "#2fca2f",
- "background": "#00ff00",
- "opacity": 0.1
- },
- "BUG": {
- "icon": "bug",
- "type": "line",
- "fontWeight": "bold",
- "iconColour": "#ff0000",
- "background": "#ff0000",
- "opacity": 0.2
- },
- "HACK": {
- "icon": "tools"
- },
- "FIXME": {
- "icon": "flame",
- "type": "line",
- "fontWeight": "bold",
- "iconColour": "#ffff00",
- "background": "#ffff00",
- "opacity": 0.1
- },
- "NOTE": {
- "icon": "info",
- "type": "line",
- "fontWeight": "bold",
- "iconColour": "#0077ff",
- "background": "#0077ff",
- "opacity": 0.1
- }
- },
- "files.associations": {
- "*za-*": "shellscript"
- },
- "shellcheck.ignorePatterns": {
- "**/*.xonshrc": true,
- "**/*.xsh": true,
- "**/*.zsh": true,
- "**/*.zshrc": true,
- "**/zshrc": true,
- "**/*.zprofile": true,
- "**/zprofile": true,
- "**/*.zlogin": true,
- "**/zlogin": true,
- "**/*.zlogout": true,
- "**/zlogout": true,
- "**/*.zshenv": true,
- "**/zshenv": true,
- "**/*.zsh-theme": true,
- "**/*za-*": true
- }
-}
diff --git a/docs/README.md b/docs/README.md
index f2713ca8..15af91fe 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -34,7 +34,7 @@