Releases: trigger/trigger
v2.3.0
v2.3.0 (2026-02-24)
This release is published under the BSD-3-Clause License.
Bug Fixes
-
Guard against missing negated attr in _compare_to for non-TIP objects (
69aaf96) -
Handle negated /32|/128 in junos_str and skip IPv4 expansion for IPv6 CIDR (
7bc8659) -
Replace remaining IPy-specific APIs with netaddr equivalents (
b5d77f7) -
Return TIP objects from IP functions and zero host bits in _make_cidrs (
e850e34)
Features
-
Migrate from IPy to netaddr for IP address handling (
5b801c1) -
benchmarks: Add IPy vs netaddr benchmark for ACL workloads (
84582fc)
Detailed Changes: v2.2.6...v2.3.0
v2.2.6
v2.2.6 (2026-02-17)
This release is published under the BSD-3-Clause License.
Bug Fixes
-
Auto-respond to device confirmation prompts (closes #91) (
6181298) -
Use device delimiter in twister2.py confirmation response (
1d98cf2) -
Use device-specific delimiter for confirmation responses (
1e5c48d)
Chores
- deps: Bump cryptography from 46.0.4 to 46.0.5 (
c46af23)
Detailed Changes: v2.2.5...v2.2.6
v2.2.5
v2.2.4
v2.2.4 (2026-02-10)
This release is published under the BSD-3-Clause License.
Bug Fixes
- Resolve TypeError in convert_tacacsrc() with invalid kwargs (
46a7278)
Continuous Integration
-
Add python-version to build/publish jobs (
1f016c3) -
Fix release-preview workflow changelog and comment spam (
48cc61a) -
Fix uv caching in GitHub Actions workflows (
e705412)
Refactoring
-
Enable ruff D100, S605, F821, PLW0603, PLR0915 lint rules (
1b41af6) -
Enable ruff D101, RUF012, F403, S101, PLR0912 lint rules (
4bcf044) -
Enable ruff D102, D105, D107, D205, D401, F405 lint rules (
fafdf89) -
Enable ruff D104, B018, PT028, D402 lint rules (
e2480af) -
Enable ruff D200 and F523 lint rules (
131c550) -
Enable ruff E402, SLF001, PLR0913, PLR2004 lint rules (
a607951) -
Enable ruff F402, E721, F811, S603, S608, S105 lint rules (
82effe0) -
Enable ruff PLR0911, PLW1641, S110, S112, S314 lint rules (
7589db8) -
Enable ruff S606, E722, E741, B016, D404 lint rules (
f701280) -
Enable ruff UP031, F401, D103 lint rules (
74a4987) -
Fix ruff format for templates.py (
1d64186) -
Remove legacy module-level dunder attributes (
a511212) -
Remove unnecessary "coding: utf-8" declarations (
c83c0c9)
Testing
- Add coverage for convert_tacacsrc() credential migration (
159fe16)
Detailed Changes: v2.2.3...v2.2.4
v2.2.3
v2.2.3 (2026-02-07)
This release is published under the BSD-3-Clause License.
Bug Fixes
Prompt detection regex falsely matched '>' and '#' characters in command output (e.g. Juniper's "Flags: ") as device prompts, causing output truncation. Add compile_prompt_pattern() helper that prepends a line-start anchor and prompt_match_start() to adjust match positions.
Co-Authored-By: Claude Opus 4.6 [email protected]
Documentation
- Add explicit docs dependencies and fix stale Python version note (
33c86da)
Add a docs optional dependency group (sphinx, sphinx_rtd_theme) to pyproject.toml so RTD builds have the packages they need. Clean up .readthedocs.yml by removing the redundant pre_install job and pointing extra_requirements at the new docs group instead of dev. Update the outdated Python 2.6 note in docs/index.rst to reflect v2.0+ requirements (Python 3.10-3.11).
Co-Authored-By: Claude Opus 4.6 [email protected]
- Add rebase merge guidance to CLAUDE.md (
64f5893)
Co-Authored-By: Claude Opus 4.6 [email protected]
- Add v2.0.1–v2.2.2 entries to docs changelog and fix v2.0.0 date (
74ccc86)
Co-Authored-By: Claude Opus 4.6 [email protected]
- Fold versionadded directives into Key Features bullet list (
749ef32)
Co-Authored-By: Claude Opus 4.6 [email protected]
- Update README and docs to reflect main branch and remove stale links (
6ddb930)
Co-Authored-By: Claude Opus 4.6 [email protected]
- Update tests badge to match CI workflow name (
1bd8353)
The badge referenced a "Tests" workflow that doesn't exist. Updated to match the actual "CI" workflow in .github/workflows/ci.yml.
Co-Authored-By: Claude Opus 4.6 [email protected]
Detailed Changes: v2.2.2...v2.2.3
v2.2.2
v2.2.2 (2026-02-06)
This release is published under the BSD-3-Clause License.
Bug Fixes
-
Add uv.lock to repo and update workflows to use explicit cache-dependency-glob (
3d8e34e) -
Remove uv.lock from .gitignore and commit it to the repository
-
Add cache-dependency-glob: "uv.lock" to all 6 workflow jobs for explicit cache key
-
Update test job to use "uv sync --locked --all-extras --dev" for reproducible builds with lock file validation
-
Fixes error: "No file in /home/runner/work/trigger/trigger matched to [**/uv.lock]"
The uv.lock file was gitignored, causing GitHub Actions to fail when trying to cache dependencies. Now the lock file is tracked and used explicitly for cache invalidation.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
-
Remove cache-dependency-glob override and use uv sync for reproducible builds (
3c448f3) -
Remove cache-dependency-glob parameter from all 6 workflow jobs to use setup-uv action's default glob pattern
-
Default pattern includes **/pyproject.toml, **/uv.lock, and */requirements.txt for proper cache invalidation
-
Switch test job from 'uv pip install --system -e ".[dev]"' to 'uv sync --all-extras' for reproducible builds using uv.lock
-
Fixes cache errors: "Path(s) specified in the action for caching do(es) not exist"
-
Ensures CI builds match local development when using uv sync
Co-Authored-By: Claude Sonnet 4.5 [email protected]
- Remove invalid --dev flag from uv sync command (
ad8a498)
The --dev flag does not exist in uv sync. Dev dependencies are included by default. Only --no-dev, --only-dev, and --group flags exist for dependency group control.
This was causing the lockfile validation error.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
-
Update uv.lock and remove redundant cache-dependency-glob (
4503e4e) -
Update uv.lock to sync with pyproject.toml (fixes --locked validation error)
-
Remove cache-dependency-glob from all workflows (default already includes **/uv.lock)
-
Keep uv sync --locked --all-extras --dev for reproducible builds with validation
The default cache-dependency-glob pattern already includes:
**/uv.lock, **/pyproject.toml, **/requirements.txt, and more
Co-Authored-By: Claude Sonnet 4.5 [email protected]
-
Use --frozen instead of --locked for more lenient lock file validation (
b82d968) -
Use uv run pytest to run tests in uv-managed environment (
3386869)
Testing
- Add comment to trigger CI and test cache hits (
cc7f0b1)
Detailed Changes: v2.2.1...v2.2.2
v2.2.1
v2.2.1 (2026-02-06)
This release is published under the BSD-3-Clause License.
Bug Fixes
- Specify pyproject.toml for uv cache dependency glob (
1e05648)
The enable-cache option defaults to looking for uv.lock files, but this project uses pyproject.toml without a lockfile. Add the cache-dependency-glob parameter to specify pyproject.toml for cache key generation.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
- Use uv's built-in caching instead of pip cache (
9a05f11)
Replace cache: 'pip' on setup-python steps with enable-cache: true on setup-uv steps, per uv's official documentation. The pip cache parameter doesn't work with uv's cache structure.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
Continuous Integration
- Enable pip caching in GitHub Actions workflows (
fc22313)
Add cache: 'pip' to all actions/setup-python@v5 steps across CI, release, and release-preview workflows to speed up dependency installation via GitHub's built-in package caching.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
Detailed Changes: v2.2.0...v2.2.1
v2.2.0
v2.2.0 (2026-02-06)
This release is published under the BSD-3-Clause License.
Chores
- Apply pre-commit auto-fixes and ignore false positives (
c6a30bf)
Apply remaining automatic fixes from ruff pre-commit hooks and configure ruff to ignore false positive warnings.
Changes:
- Update .pre-commit-config.yaml to use ruff v0.14.14 (matching system)
- Add PLW1641 and PT028 to pyproject.toml ignore list (false positives)
- Apply ruff import sorting fixes across codebase
- Fix trailing whitespace in documentation files
False positive justifications:
- PLW1641: NetDevice implements eq but warning fires incorrectly
- PT028: test_tcp_port and test_ssh are utility functions, not pytest tests
All checks now pass cleanly in pre-commit hooks.
Co-Authored-By: Claude Sonnet 4.5 [email protected]
Features
- Add prek pre-commit hooks with ruff checks (
98f04ad)
Add prek (fast Rust-based pre-commit framework) to enforce code quality checks locally before commits, matching CI configuration exactly.
Changes: - Add .pre-commit-config.yaml with ruff and standard pre-commit hooks - Update CLAUDE.md: replace outdated flake8/black/isort docs with ruff - Add pre-commit hooks section to CLAUDE.md with prek setup instructions - Update README.md with development setup section - Add pre-commit hooks documentation to docs/development.rst
Benefits: - 7-10x faster than traditional pre-commit (Rust-based) - Catches issues locally before CI runs - Matches CI ruff checks exactly - Optional for developers (CI still enforces)
Hook checks: - Ruff linting with auto-fix - Ruff formatting (check-only) - YAML syntax validation - Trailing whitespace and end-of-file fixes - Protection against commits to main branch - Merge conflict detection
Co-Authored-By: Claude Sonnet 4.5 [email protected]
Detailed Changes: v2.1.1...v2.2.0
v2.1.1
v2.1.1 (2026-02-06)
This release is published under the BSD-3-Clause License.
Bug Fixes
- security: Replace deprecated tempfile.mktemp with mkstemp (
884ecdf)
Replace unsafe tempfile.mktemp() with tempfile.mkstemp() in the remaining bin/ and tools/ scripts. Uses os.fdopen(fd) to properly manage the file descriptor, consistent with the pattern established in trigger/acl/tools.py and trigger/contrib/docommand/core.py.
The mktemp() function is deprecated due to a race condition vulnerability (TOCTOU) where the temporary filename could be claimed by another process between creation of the name and opening the file.
Files fixed:
- bin/check_syntax
- bin/load_acl
- tools/prepend_acl_dot
Based-on: #335
Co-Authored-By: Ataf Fazledin Ahamed [email protected]
Co-Authored-By: Claude Opus 4.6 [email protected]
Detailed Changes: v2.1.0...v2.1.1
v2.1.0
v2.1.0 (2026-02-06)
This release is published under the BSD-3-Clause License.
Documentation
Instructs Claude Code to always use .worktrees/ for feature branches to keep the main working tree clean.
Co-authored-by: Claude Opus 4.6 [email protected]
Features
- feat(notifications): add SMTP_SSL support for secure email
Adds ssl, mailuser, and mailpass parameters to send_email() for secure SMTP communication via smtplib.SMTP_SSL.
Based on PR #336 by Ataf Fazledin Ahamed (OpenRefactory/OpenSSF Alpha-Omega).
Co-Authored-By: Ataf Fazledin Ahamed [email protected]
- style: fix ruff formatting for send_email signature
Co-Authored-By: Claude Opus 4.6 [email protected]
Co-authored-by: Ataf Fazledin Ahamed [email protected]
Co-authored-by: Claude Opus 4.6 [email protected]
Detailed Changes: v2.0.3...v2.1.0