2025-11-30 13:42:16 +01:00
|
|
|
# ==============================================================================
|
2026-02-20 00:37:32 +01:00
|
|
|
# Pre-commit Configuration - Multi-language Linting & Formatting
|
2025-11-30 13:42:16 +01:00
|
|
|
# ==============================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# Install: pre-commit install && pre-commit install --hook-type pre-push
|
|
|
|
|
# Fast lint: pre-commit run --all-files (linters only, ~10 s)
|
|
|
|
|
# Full suite: pre-commit run --all-files --hook-stage pre-push (+ tests)
|
|
|
|
|
# Update hooks: pre-commit autoupdate
|
2025-11-30 13:42:16 +01:00
|
|
|
# ==============================================================================
|
|
|
|
|
|
|
|
|
|
# Global settings
|
|
|
|
|
default_language_version:
|
|
|
|
|
python: python3
|
|
|
|
|
|
2026-05-01 19:06:43 +02:00
|
|
|
# Fail fast on first error (set to false to see all errors)
|
|
|
|
|
fail_fast: false
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# Configuration
|
|
|
|
|
ci:
|
|
|
|
|
autofix_commit_msg: "style: auto-fix by pre-commit hooks"
|
|
|
|
|
autoupdate_commit_msg: "chore: update pre-commit hooks"
|
|
|
|
|
|
|
|
|
|
repos:
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# GENERAL HOOKS - File formatting and validation
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
|
|
|
rev: v4.6.0
|
|
|
|
|
hooks:
|
|
|
|
|
- id: trailing-whitespace
|
|
|
|
|
args: [--markdown-linebreak-ext=md]
|
|
|
|
|
- id: end-of-file-fixer
|
|
|
|
|
- id: check-yaml
|
|
|
|
|
args: [--unsafe]
|
|
|
|
|
- id: check-json
|
2025-11-30 13:46:04 +01:00
|
|
|
# Exclude JSONC files (VS Code configs, TypeScript configs) and compile_commands.json
|
|
|
|
|
exclude: ^(\.vscode/|.*/\.vscode/|C/compile_commands\.json|.*tsconfig.*\.json)
|
2025-11-30 13:42:16 +01:00
|
|
|
- id: check-toml
|
|
|
|
|
- id: check-xml
|
|
|
|
|
- id: check-added-large-files
|
2026-01-08 15:09:45 +01:00
|
|
|
args: [--maxkb=2000]
|
2025-11-30 13:42:16 +01:00
|
|
|
- id: check-merge-conflict
|
|
|
|
|
- id: check-case-conflict
|
|
|
|
|
- id: check-symlinks
|
|
|
|
|
- id: check-executables-have-shebangs
|
|
|
|
|
- id: check-shebang-scripts-are-executable
|
|
|
|
|
- id: detect-private-key
|
|
|
|
|
- id: debug-statements
|
|
|
|
|
- id: name-tests-test
|
|
|
|
|
args: [--pytest-test-first]
|
2026-03-18 22:20:05 +01:00
|
|
|
exclude: python_pkg/word_frequency/tests/_translator_helpers\.py
|
2025-11-30 13:42:16 +01:00
|
|
|
- id: check-ast
|
|
|
|
|
- id: check-builtin-literals
|
|
|
|
|
- id: check-docstring-first
|
|
|
|
|
- id: fix-byte-order-marker
|
|
|
|
|
- id: mixed-line-ending
|
|
|
|
|
args: [--fix=lf]
|
|
|
|
|
- id: requirements-txt-fixer
|
|
|
|
|
|
2026-03-25 21:09:03 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# BINARY BLOCKER - Prevent binary/image files from being committed
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: no-binaries
|
|
|
|
|
name: Block binary/image files
|
|
|
|
|
entry: scripts/check_no_binaries.sh
|
|
|
|
|
language: script
|
|
|
|
|
always_run: false
|
2026-05-07 22:03:43 +02:00
|
|
|
- id: ai-evidence-contract
|
|
|
|
|
name: Require AI evidence artifacts for code changes
|
|
|
|
|
entry: scripts/check_ai_evidence.sh
|
|
|
|
|
language: script
|
|
|
|
|
pass_filenames: false
|
|
|
|
|
always_run: true
|
|
|
|
|
- id: ai-multifile-contract
|
|
|
|
|
name: Require workflow contract for multi-file code changes
|
|
|
|
|
entry: scripts/check_agent_contract.sh
|
|
|
|
|
language: script
|
|
|
|
|
pass_filenames: false
|
|
|
|
|
always_run: true
|
|
|
|
|
- id: append-only-sessions
|
|
|
|
|
name: Enforce append-only session logs
|
|
|
|
|
entry: scripts/check_append_only_sessions.sh
|
|
|
|
|
language: script
|
|
|
|
|
pass_filenames: false
|
|
|
|
|
always_run: true
|
2026-03-25 21:09:03 +01:00
|
|
|
|
2026-05-03 21:42:22 +02:00
|
|
|
# ===========================================================================
|
|
|
|
|
# POLLING SCRIPT LINTER - Detect fork-storm anti-patterns in shell scripts
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: no-polling-antipatterns
|
|
|
|
|
name: Block polling script anti-patterns
|
|
|
|
|
entry: scripts/check_polling_antipatterns.sh
|
|
|
|
|
language: script
|
|
|
|
|
types: [shell]
|
|
|
|
|
exclude: ^(\.git/|C/|CPP/|phone_focus_mode/lib/tests/|tests/)
|
|
|
|
|
|
2026-03-14 17:51:55 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# NOQA BLOCKER - Zero tolerance for noqa/type:ignore suppression comments
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: no-noqa
|
|
|
|
|
name: Block noqa comments
|
|
|
|
|
entry: '(?i)#\s*(noqa|type:\s*ignore)'
|
|
|
|
|
language: pygrep
|
|
|
|
|
types: [python]
|
|
|
|
|
- id: no-ruff-noqa
|
|
|
|
|
name: Block ruff noqa file-level comments
|
|
|
|
|
entry: '(?i)#\s*ruff:\s*noqa'
|
|
|
|
|
language: pygrep
|
|
|
|
|
types: [python]
|
|
|
|
|
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# RUFF - Fast Python linter and formatter (replaces black, isort, flake8, etc.)
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
2026-03-21 17:51:36 +01:00
|
|
|
rev: v0.15.2
|
2025-11-30 13:42:16 +01:00
|
|
|
hooks:
|
|
|
|
|
# Linter - run first to catch issues
|
|
|
|
|
- id: ruff
|
|
|
|
|
args:
|
|
|
|
|
- --fix
|
2026-03-02 20:29:32 +01:00
|
|
|
- --unsafe-fixes
|
2025-11-30 13:42:16 +01:00
|
|
|
- --exit-non-zero-on-fix
|
|
|
|
|
- --show-fixes
|
|
|
|
|
types_or: [python, pyi]
|
|
|
|
|
# Formatter - run after linting
|
|
|
|
|
- id: ruff-format
|
|
|
|
|
types_or: [python, pyi]
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# MYPY - Static type checking (runs on push only for speed)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
|
|
|
rev: v1.13.0
|
|
|
|
|
hooks:
|
|
|
|
|
- id: mypy
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2025-11-30 13:42:16 +01:00
|
|
|
args:
|
|
|
|
|
- --ignore-missing-imports
|
|
|
|
|
- --no-error-summary
|
2025-11-30 13:59:21 +01:00
|
|
|
- --disable-error-code=no-untyped-def
|
|
|
|
|
- --disable-error-code=no-untyped-call
|
|
|
|
|
- --disable-error-code=var-annotated
|
|
|
|
|
- --disable-error-code=no-any-unimported
|
|
|
|
|
- --disable-error-code=type-arg
|
|
|
|
|
- --disable-error-code=no-any-return
|
|
|
|
|
- --disable-error-code=misc
|
|
|
|
|
- --disable-error-code=unused-ignore
|
|
|
|
|
- --disable-error-code=unreachable
|
|
|
|
|
- --disable-error-code=assignment
|
|
|
|
|
- --disable-error-code=no-redef
|
2026-03-18 22:20:05 +01:00
|
|
|
- --disable-error-code=attr-defined
|
|
|
|
|
- --disable-error-code=arg-type
|
|
|
|
|
- --disable-error-code=union-attr
|
|
|
|
|
- --disable-error-code=call-overload
|
|
|
|
|
- --disable-error-code=return-value
|
|
|
|
|
- --disable-error-code=redundant-cast
|
|
|
|
|
- --disable-error-code=empty-body
|
|
|
|
|
- --disable-error-code=list-item
|
|
|
|
|
exclude: >-
|
|
|
|
|
(?x)^(
|
|
|
|
|
Bash/.*|
|
|
|
|
|
\.venv/.*|
|
|
|
|
|
python_pkg/music_gen/.*|
|
|
|
|
|
python_pkg/praca_magisterska_video/.*|
|
|
|
|
|
pomodoro_app/tools/.*|
|
|
|
|
|
linux_configuration/scripts/misc/testsAndMisc-bash/tools/.*
|
|
|
|
|
)$
|
2025-11-30 13:42:16 +01:00
|
|
|
additional_dependencies:
|
|
|
|
|
- types-requests
|
|
|
|
|
- types-PyYAML
|
|
|
|
|
- types-python-dateutil
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# PYLINT - Comprehensive Python linter (runs on push only for speed)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/pylint-dev/pylint
|
|
|
|
|
rev: v3.3.2
|
|
|
|
|
hooks:
|
|
|
|
|
- id: pylint
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2025-11-30 13:42:16 +01:00
|
|
|
args:
|
|
|
|
|
- --rcfile=pyproject.toml
|
2026-05-01 19:06:43 +02:00
|
|
|
- --fail-under=8.0
|
|
|
|
|
- --jobs=0
|
2025-11-30 13:42:16 +01:00
|
|
|
additional_dependencies:
|
2026-04-10 18:11:30 +02:00
|
|
|
- pytest
|
2025-11-30 13:42:16 +01:00
|
|
|
- python-chess
|
|
|
|
|
- requests
|
|
|
|
|
- pygame
|
|
|
|
|
exclude: ^(Bash/|\.venv/)
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# BANDIT - Security linter (runs on push only for speed)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/PyCQA/bandit
|
|
|
|
|
rev: 1.7.10
|
|
|
|
|
hooks:
|
|
|
|
|
- id: bandit
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2025-11-30 13:42:16 +01:00
|
|
|
args:
|
|
|
|
|
- -c
|
|
|
|
|
- pyproject.toml
|
2025-11-30 13:59:21 +01:00
|
|
|
- --severity-level=high
|
|
|
|
|
- --confidence-level=medium
|
2026-01-06 13:11:34 +01:00
|
|
|
- --skip=B113
|
2025-11-30 13:42:16 +01:00
|
|
|
additional_dependencies: ["bandit[toml]"]
|
|
|
|
|
exclude: ^(Bash/|\.venv/|tests/|.*test.*\.py$)
|
|
|
|
|
|
2026-03-21 17:51:36 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# PYTEST + COVERAGE - Run tests and enforce 100% code coverage
|
2026-03-25 21:56:37 +01:00
|
|
|
# Only tests for subpackages with changed files are run (see script).
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# Runs on push only (slow); use --hook-stage pre-push to run manually.
|
2026-03-21 17:51:36 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: pytest-coverage
|
|
|
|
|
name: pytest with coverage enforcement
|
2026-03-25 21:56:37 +01:00
|
|
|
entry: python scripts/pytest_changed_packages.py
|
2026-03-21 17:51:36 +01:00
|
|
|
language: system
|
|
|
|
|
types: [python]
|
2026-03-25 21:56:37 +01:00
|
|
|
pass_filenames: true
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2026-03-21 17:51:36 +01:00
|
|
|
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# VULTURE - Dead code detection (disabled - doesn't work well with pre-commit)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# - repo: https://github.com/jendrikseipp/vulture
|
|
|
|
|
# rev: v2.13
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: vulture
|
|
|
|
|
# args:
|
|
|
|
|
# - --min-confidence=80
|
|
|
|
|
# - --exclude=.venv,Bash,__pycache__
|
|
|
|
|
# exclude: ^(Bash/|\.venv/)
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
2026-01-06 13:11:34 +01:00
|
|
|
# PYUPGRADE - Upgrade Python syntax (disabled - incompatible with Python 3.14)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
2026-01-06 13:11:34 +01:00
|
|
|
# - repo: https://github.com/asottile/pyupgrade
|
|
|
|
|
# rev: v3.19.0
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: pyupgrade
|
|
|
|
|
# args:
|
|
|
|
|
# - --py310-plus
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# CODESPELL - Spell checking in code (expanded ignore list for non-English)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/codespell-project/codespell
|
|
|
|
|
rev: v2.3.0
|
|
|
|
|
hooks:
|
|
|
|
|
- id: codespell
|
|
|
|
|
args:
|
2025-11-30 13:59:21 +01:00
|
|
|
- --skip=*.json,*.lock,*.min.js,*.min.css,.git,__pycache__,.venv,*.txt
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
- --ignore-words-list=als,ans,ect,nd,som,sur,te,nam,numer,lew,sie,wil,postion,clen,ther,folow,derrive,ony,tje,noe,theses,crate,doubleclick,wile,tabel,pary,blok,bloc,proces,serwer,parametr,adres,hart,dout,metod,tekst,synonim,grup,mosty,lokal,skalar,milion,nowe,tre,hel,alph
|
2026-02-20 01:17:53 +01:00
|
|
|
exclude: ^(Bash/ffmpeg-build/|LaTeX/|CPP/|.*\.geojson$)
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# DOCFORMATTER - Format docstrings (disabled - causes recursion errors)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# - repo: local
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: docformatter
|
|
|
|
|
# name: docformatter
|
|
|
|
|
# entry: docformatter
|
|
|
|
|
# language: system
|
|
|
|
|
# types: [python]
|
|
|
|
|
# args:
|
|
|
|
|
# - --in-place
|
|
|
|
|
# - --wrap-summaries=88
|
|
|
|
|
# - --wrap-descriptions=88
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# INTERROGATE - Docstring coverage (disabled - causes recursion on large files)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
2025-11-30 13:59:21 +01:00
|
|
|
# - repo: https://github.com/econchick/interrogate
|
|
|
|
|
# rev: 1.7.0
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: interrogate
|
|
|
|
|
# args:
|
|
|
|
|
# - --fail-under=0
|
|
|
|
|
# - --verbose
|
|
|
|
|
# - --ignore-init-method
|
|
|
|
|
# - --ignore-init-module
|
|
|
|
|
# - --ignore-magic
|
|
|
|
|
# - --ignore-private
|
|
|
|
|
# - --ignore-semiprivate
|
|
|
|
|
# - --exclude=Bash,.venv,__pycache__
|
|
|
|
|
# pass_filenames: false
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# AUTOFLAKE - Remove unused imports/variables
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# Disabled: fully redundant with ruff (F401, F841, F811) + --fix
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# - repo: https://github.com/PyCQA/autoflake
|
|
|
|
|
# rev: v2.3.1
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: autoflake
|
|
|
|
|
# args:
|
|
|
|
|
# - --in-place
|
|
|
|
|
# - --remove-all-unused-imports
|
|
|
|
|
# - --remove-unused-variables
|
|
|
|
|
# - --remove-duplicate-keys
|
|
|
|
|
# - --expand-star-imports
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# SAFETY - Check for security vulnerabilities in dependencies
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# Note: Safety requires API key for full functionality, disabled by default
|
|
|
|
|
# - repo: https://github.com/Lucas-C/pre-commit-hooks-safety
|
|
|
|
|
# rev: v1.3.2
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: python-safety-dependencies-check
|
|
|
|
|
# files: requirements.*\.txt$
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# PYRIGHT - Microsoft's type checker (very strict, optional)
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# Uncomment to enable - can be slow and very strict
|
|
|
|
|
# - repo: https://github.com/RobertCraiworthy/pyright-action
|
|
|
|
|
# rev: v1.1.350
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: pyright
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# CHECK JSON/YAML/TOML formatting (runs on push only — slow Node.js startup)
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
|
|
|
rev: v4.0.0-alpha.8
|
|
|
|
|
hooks:
|
|
|
|
|
- id: prettier
|
|
|
|
|
types_or: [yaml, json, markdown]
|
2025-11-30 13:59:21 +01:00
|
|
|
exclude: ^(Bash/|\.venv/|.*\.lock$|C/compile_commands\.json)
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2025-11-30 13:42:16 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# SHELLCHECK - Shell script linting
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# Wrapper batches files to avoid OOM on large repos.
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
- repo: local
|
2025-11-30 13:42:16 +01:00
|
|
|
hooks:
|
|
|
|
|
- id: shellcheck
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
name: shellcheck
|
|
|
|
|
entry: bash -c 'printf "%s\0" "$@" | xargs -0 -n 40 shellcheck --severity=warning' --
|
|
|
|
|
language: system
|
|
|
|
|
types: [shell]
|
2026-02-20 01:17:53 +01:00
|
|
|
exclude: ^pomodoro_app/
|
2025-11-30 13:42:16 +01:00
|
|
|
|
2026-02-20 00:37:32 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# CLANG-FORMAT - C/C++ code formatting
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
|
|
|
|
rev: v19.1.6
|
|
|
|
|
hooks:
|
|
|
|
|
- id: clang-format
|
|
|
|
|
types_or: [c, c++]
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# CPPCHECK - C/C++ static analysis
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: cppcheck
|
|
|
|
|
name: cppcheck
|
2026-05-01 19:06:43 +02:00
|
|
|
entry: cppcheck
|
2026-02-20 00:37:32 +01:00
|
|
|
language: system
|
|
|
|
|
types_or: [c, c++]
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
exclude: ^(pomodoro_app/|horatio/)
|
2026-05-01 19:06:43 +02:00
|
|
|
args:
|
|
|
|
|
- --enable=warning,portability
|
|
|
|
|
- --force
|
|
|
|
|
- --quiet
|
|
|
|
|
- --error-exitcode=1
|
|
|
|
|
- --inline-suppr
|
|
|
|
|
- --suppress=missingIncludeSystem
|
|
|
|
|
- --suppress=syntaxError
|
|
|
|
|
- --suppress=nullPointerOutOfResources
|
|
|
|
|
- --suppress=ctunullpointerOutOfResources
|
|
|
|
|
- --suppress=ctunullpointerOutOfMemory
|
|
|
|
|
- --std=c11
|
2026-02-20 00:37:32 +01:00
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# FLAWFINDER - C/C++ security scanner
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: flawfinder
|
|
|
|
|
name: flawfinder
|
|
|
|
|
entry: flawfinder
|
|
|
|
|
language: system
|
|
|
|
|
types_or: [c, c++]
|
|
|
|
|
args:
|
2026-02-20 01:17:53 +01:00
|
|
|
- --error-level=5
|
2026-02-20 00:37:32 +01:00
|
|
|
- --quiet
|
|
|
|
|
- --columns
|
|
|
|
|
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# ESLINT - TypeScript/JavaScript linting
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: eslint
|
|
|
|
|
name: eslint
|
2026-05-01 19:06:43 +02:00
|
|
|
entry: npx eslint --no-warn-ignored
|
2026-02-20 00:37:32 +01:00
|
|
|
language: system
|
|
|
|
|
types_or: [ts, tsx]
|
|
|
|
|
files: ^TS/
|
|
|
|
|
|
2026-02-22 22:00:50 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# CHECK C/C++ BUILD FILES - Ensure every C/C++ dir has Makefile and run.sh
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: check-c-cpp-build-files
|
|
|
|
|
name: check C/C++ dirs have Makefile and run.sh
|
|
|
|
|
entry: scripts/check_c_cpp_build_files.sh
|
|
|
|
|
language: script
|
|
|
|
|
types_or: [c, c++]
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
exclude: ^(CPP/mini_browser/|horatio/)
|
2026-02-22 22:00:50 +01:00
|
|
|
|
2026-03-18 22:54:45 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# CHECK PYTHON LOCATION - All Python files must be under python_pkg/
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: check-python-location
|
|
|
|
|
name: check Python files are under python_pkg/
|
|
|
|
|
entry: scripts/check_python_location.sh
|
|
|
|
|
language: script
|
|
|
|
|
types: [python]
|
|
|
|
|
|
2025-12-04 20:37:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# REMOVE EMPTY DIRECTORIES - Clean up empty folders in the repo
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: remove-empty-dirs
|
|
|
|
|
name: remove empty directories
|
|
|
|
|
entry: find . -type d -empty -not -path './.git/*' -delete -print
|
|
|
|
|
language: system
|
|
|
|
|
pass_filenames: false
|
|
|
|
|
always_run: true
|
|
|
|
|
|
2026-03-02 19:13:22 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# SECRET PATTERNS - Block commits containing sensitive data
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: check-no-secrets
|
|
|
|
|
name: check for leaked secrets
|
|
|
|
|
entry: scripts/check_no_secrets.sh
|
|
|
|
|
language: script
|
|
|
|
|
exclude: ^(\.secret-patterns|\.pre-commit-config\.yaml|.*\.geojson)$
|
|
|
|
|
|
2025-11-30 13:42:16 +01:00
|
|
|
# ===========================================================================
|
|
|
|
|
# COMMITIZEN - Conventional commits (optional)
|
|
|
|
|
# ===========================================================================
|
|
|
|
|
# - repo: https://github.com/commitizen-tools/commitizen
|
|
|
|
|
# rev: v3.13.0
|
|
|
|
|
# hooks:
|
|
|
|
|
# - id: commitizen
|
|
|
|
|
# - id: commitizen-branch
|
|
|
|
|
# stages: [push]
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
|
2026-03-29 21:11:43 +02:00
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# POMODORO APP - Flutter analyze + test (push only)
|
2026-03-29 21:11:43 +02:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: pomodoro-app-flutter
|
2026-05-01 19:06:43 +02:00
|
|
|
name: pomodoro_app flutter analyze & test
|
|
|
|
|
entry: bash -c 'cd pomodoro_app && flutter pub get --enforce-lockfile && flutter analyze && flutter test'
|
2026-03-29 21:11:43 +02:00
|
|
|
language: system
|
|
|
|
|
files: ^pomodoro_app/
|
|
|
|
|
pass_filenames: false
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
2026-03-29 21:11:43 +02:00
|
|
|
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
# ===========================================================================
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
# HORATIO - Dart/Flutter tests with coverage enforcement (push only)
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
# ===========================================================================
|
|
|
|
|
- repo: local
|
|
|
|
|
hooks:
|
|
|
|
|
- id: horatio-tests
|
|
|
|
|
name: horatio test coverage
|
|
|
|
|
entry: bash -c 'cd horatio && bash run.sh test'
|
|
|
|
|
language: system
|
|
|
|
|
files: ^horatio/
|
chore: optimize pre-commit, remove tracked binaries, fix lint issues
- Move slow hooks (mypy, pylint, bandit, pytest, prettier) to pre-push stage
- Remove redundant autoflake (ruff covers F401/F841)
- Fix shellcheck OOM by batching files with xargs -n 40
- Remove tracked .o, .wav, .pyc binaries from git
- Move pomodoro wav files to ../testsAndMisc_binaries/ with symlinks
- Add *.o, *.so, *.a to .gitignore
- Refactor hltb._pick_best_hltb_entry to fix C901/PLR0911/SIM102
- Fix SC2034 warnings in gif_to_square.sh and upgrade.sh
- Add disk_cleanup_check.sh script
- Various test and code improvements across screen_locker,
steam_backlog_enforcer, word_frequency, moviepy_showcase
2026-04-10 18:44:51 +02:00
|
|
|
stages: [pre-push]
|
feat(horatio): add Horatio actor script memorization app
Two-package monorepo:
- horatio_core: pure Dart package (parser, SRS, planner)
- horatio_app: Flutter UI (Bloc/Cubit, GoRouter, TTS)
Features:
- Script import (txt, docx, pdf) with drag-and-drop
- Four script format parsers (colon, bracketed, parenthetical, screenplay)
- SM-2 spaced repetition for line memorization
- Rehearsal mode with TTS and line comparison
- 5 bundled public domain scripts
Quality:
- 83 core tests + 160 app tests, both 100% branch coverage
- Strict analysis (130+ lint rules, fatal-infos)
- Dead code detection script (dead_code.sh)
- run.sh pipeline: analyze, test, dead-code, run, web
- Pre-commit hook for horatio test coverage
2026-03-29 14:44:57 +02:00
|
|
|
pass_filenames: false
|