Releases: abhimehro/ctrld-sync
Releases · abhimehro/ctrld-sync
Release list
v0.1.1 🚀
What's Changed
- 🛡️ Sentinel: [MEDIUM] Fix Bandit security warnings (B108, B104) @abhimehro (#978)
- fix(ux): extend stderr.isatty() guards and clean cancel output (salvages #973) @abhimehro (#974)
- 🎨 Palette: Fix ANSI escape sequence residue in non-interactive CI @abhimehro (#975)
- fix(ux): guard ANSI progress output with stderr.isatty() (salvages #965) @abhimehro (#970)
- 🛡️ Sentinel: [security improvement] @abhimehro (#969)
- 🛡️ Sentinel: [MEDIUM] Fix input length validation bypass in rule filtering @abhimehro (#967)
- 🎨 Palette: Fix CLI table alignment for emojis @abhimehro (#960)
- 🎨 Palette: Add isatty guard for terminal residue cleanup @abhimehro (#958)
- 🎨 Palette: fix terminal line residue on interactive prompt cancellation @abhimehro (#956)
- ⚡ Bolt: Add early return fast-path for string display length calculation @abhimehro (#947)
- fix(qa): minor type check and linting fixes @abhimehro (#943)
- 🎨 Palette: Fix CLI UI coloring and spacing @abhimehro (#932)
- 🛡️ Sentinel: [HIGH] Fix exception chaining data leak in rate limit handler @abhimehro (#935)
- 🎨 Palette: Add graceful exit for interactive restart prompt @abhimehro (#930)
- 🎨 Palette: Fix plan details table alignment for wide characters @abhimehro (#919)
- 🛡️ Sentinel: [MEDIUM] Prevent data leakage in exception chaining @abhimehro (#922)
🧰 Maintenance
- chore(deps): bump ruby/setup-ruby from 1.315.0 to 1.316.0 @dependabot[bot] (#972)
- chore(deps): bump ruby/setup-ruby from 1.314.0 to 1.315.0 @dependabot[bot] (#966)
- chore(deps): bump github/gh-aw/actions/setup from 0.80.9 to 0.81.6 @dependabot[bot] (#961)
- chore(deps): bump github/gh-aw from 0.80.9 to 0.81.6 @dependabot[bot] (#962)
- chore(deps): bump actions/cache from 6.0.0 to 6.1.0 @dependabot[bot] (#953)
- chore(deps): bump actions/checkout from 4.2.2 to 7.0.0 @dependabot[bot] (#950)
- chore(deps): bump release-drafter/release-drafter from 7.4.0 to 7.5.1 @dependabot[bot] (#951)
- chore(deps): bump ruby/setup-ruby from 1.313.0 to 1.314.0 @dependabot[bot] (#942)
- chore(deps): bump release-drafter/release-drafter from 7.2.1 to 7.4.0 @dependabot[bot] (#941)
- chore(deps): bump github/gh-aw from 0.80.5 to 0.80.9 @dependabot[bot] (#940)
- chore(deps): bump pnpm/action-setup from 6.0.8 to 6.0.9 @dependabot[bot] (#939)
- chore(deps): bump actions/cache from 4.2.3 to 6.0.0 @dependabot[bot] (#938)
What's Changed
- 🛡️ Sentinel: [MEDIUM] Prevent data leakage in exception chaining by @abhimehro in #922
- 🎨 Palette: Fix plan details table alignment for wide characters by @abhimehro in #919
- 🎨 Palette: Add graceful exit for interactive restart prompt by @abhimehro in #930
- 🛡️ Sentinel: [HIGH] Fix exception chaining data leak in rate limit handler by @abhimehro in #935
- 🎨 Palette: Fix CLI UI coloring and spacing by @abhimehro in #932
- fix(qa): minor type check and linting fixes by @abhimehro in #943
- ⚡ Bolt: Add early return fast-path for string display length calculation by @abhimehro in #947
- chore(deps): bump actions/cache from 4.2.3 to 6.0.0 by @dependabot[bot] in #938
- chore(deps): bump pnpm/action-setup from 6.0.8 to 6.0.9 by @dependabot[bot] in #939
- chore(deps): bump github/gh-aw from 0.80.5 to 0.80.9 by @dependabot[bot] in #940
- chore(deps): bump release-drafter/release-drafter from 7.2.1 to 7.4.0 by @dependabot[bot] in #941
- chore(deps): bump ruby/setup-ruby from 1.313.0 to 1.314.0 by @dependabot[bot] in #942
- chore(deps): bump release-drafter/release-drafter from 7.4.0 to 7.5.1 by @dependabot[bot] in #951
- chore(deps): bump actions/checkout from 4.2.2 to 7.0.0 by @dependabot[bot] in #950
- chore(deps): bump actions/cache from 6.0.0 to 6.1.0 by @dependabot[bot] in #953
- 🎨 Palette: fix terminal line residue on interactive prompt cancellation by @abhimehro in #956
- chore(deps): bump github/gh-aw from 0.80.9 to 0.81.6 by @dependabot[bot] in #962
- chore(deps): bump github/gh-aw/actions/setup from 0.80.9 to 0.81.6 by @dependabot[bot] in #961
- 🎨 Palette: Add isatty guard for terminal residue cleanup by @abhimehro in #958
- 🎨 Palette: Fix CLI table alignment for emojis by @abhimehro in #960
- chore(deps): bump ruby/setup-ruby from 1.314.0 to 1.315.0 by @dependabot[bot] in #966
- 🛡️ Sentinel: [MEDIUM] Fix input length validation bypass in rule filtering by @abhimehro in #967
- 🛡️ Sentinel: [security improvement] by @abhimehro in #969
- chore(deps): bump ruby/setup-ruby from 1.315.0 to 1.316.0 by @dependabot[bot] in #972
- fix(ux): guard ANSI progress output with stderr.isatty() (salvages #965) by @abhimehro in #970
- 🎨 Palette: Fix ANSI escape sequence residue in non-interactive CI by @abhimehro in #975
- fix(ux): extend stderr.isatty() guards and clean cancel output (salvages #973) by @abhimehro in #974
- 🛡️ Sentinel: [MEDIUM] Fix Bandit security warnings (B108, B104) by @abhimehro in #978
Full Changelog: v0.1.0...v0.1.1
v0.1.0 🚀
What's Changed
- refactor(api): extract response parsing helpers (salvages #908) @abhimehro (#915)
- ⚡ Bolt: [Replace sum(generator) with sum(list_comprehension)] @abhimehro (#918)
- 🛡️ Sentinel: [MEDIUM] Fix exception chaining data leakage @abhimehro (#913)
- 🎨 Palette: Fix CLI table alignment by ignoring ANSI codes @abhimehro (#910)
- 🛡️ Sentinel: [MEDIUM] Sanitize HTTP client error exceptions @abhimehro (#911)
- 🎨 Palette: Fix plan details alignment with emojis @abhimehro (#902)
- ⚡ Bolt: optimize _display_len using list comprehension @abhimehro (#906)
- 🛡️ Sentinel: [MEDIUM] Fix un-sanitized exception log in rate limit parser @abhimehro (#905)
- ⚡ Bolt: Unroll generator expressions for Content-Type checks @abhimehro (#892)
- 🎨 Palette: Fix CLI table title border alignment @abhimehro (#895)
- fix(test): instantiate TypedDict instead of dict for mypy @abhimehro (#896)
- 🎨 Palette: Fix CLI table alignment when emojis are present @abhimehro (#890)
- 🎨 Palette: Prevent internal placeholder leak in dry-run CLI suggestion @abhimehro (#882)
- fix(automation): restore truncated repository_automation_common.py @cursor[bot] (#887)
- fix(automation): restore truncated repository_automation_common.py @abhimehro (#889)
- ci: re-baseline performance benchmarks and guard sum(generator) pattern @abhimehro (#885)
- docs(qa): daily health check notes 2026-06-09 @cursor[bot] (#879)
- ⚡ Bolt: Replace generator with list comp for faster rule counting @abhimehro (#877)
- docs(qa): Daily QA notes 2026-06-08 — matrix healthy @cursor[bot] (#875)
- docs(qa): Daily QA notes 2026-06-07 — matrix healthy @cursor[bot] (#874)
- docs(qa): Daily QA notes 2026-06-06 — matrix healthy @cursor[bot] (#871)
- docs(qa): Daily QA notes 2026-06-03 — matrix healthy @abhimehro (#868)
- docs(qa): Daily QA notes 2026-06-02 — matrix healthy @cursor[bot] (#864)
- ⚡ Bolt: Optimize root rule extraction @abhimehro (#865)
- 🎨 Palette: Clean up unspecified profile log presentation @abhimehro (#861)
- docs(qa): Daily QA notes 2026-05-31 — matrix healthy @cursor[bot] (#860)
- docs(qa): Daily QA notes for 2026-05-30 @cursor[bot] (#857)
- 🛡️ Sentinel: [MEDIUM] Fix command injection risk in restart logic @abhimehro (#852)
- 🎨 Palette: Add delight to summary table titles @abhimehro (#854)
- 🎨 Palette: Add dynamic pluralization for folder sync status @abhimehro (#851)
- ⚡ Bolt: Optimize _filter_rules_for_folder with itertools.filterfalse @abhimehro (#849)
- 🎨 Palette: Intercept dry-run-placeholder in colored table @abhimehro (#844)
- 🛡️ Sentinel: [MEDIUM] Fix log injection via HTTPStatusError (salvages #835) @abhimehro (#843)
- 🎨 Palette: Fix dynamic pluralization on folder count @abhimehro (#838)
- 🧹 Refactor print_plan_details to improve maintainability @abhimehro (#789)
- fix(api): optimize rule filtering to resolve benchmark regression @abhimehro (#841)
- Revert "🛡️ Sentinel: [MEDIUM] Fix log injection via HTTPStatusError" @abhimehro (#842)
- 🛡️ Sentinel: [MEDIUM] Fix log injection via HTTPStatusError @abhimehro (#835)
- ⚡ Bolt: Add chunk_size to fallback HTTP streaming @abhimehro (#837)
- refactor(api): _retry_request readability (salvages #803) @abhimehro (#818)
- 🧹 Simplify deeply nested logic in _parse_rate_limit_headers (salvages #794) @abhimehro (#821)
- chore: Jules Daily QA & Agentic Review @abhimehro (#833)
- ⚡ Bolt: Optimize hostnames deduplication before set membership check (salvages #811) @abhimehro (#820)
- 🧹 Simplify deeply nested logic in _retry_request @abhimehro (#807)
- fix(tests): resolve mypy type error in test_ux.py @abhimehro (#825)
- chore(tests): fix mypy type mismatch in test_ux.py PlanEntry creation @abhimehro (#831)
- chore: fix formatting in fix_env.py (salvages #781) @abhimehro (#823)
- 🛡️ Sentinel: [MEDIUM] Sanitize Content-Length header in error logs @abhimehro (#829)
- fix(security): prevent script injection via workflow_dispatch input in copilot-setup-steps (CWE-94) @abhimehro (#826)
- fix(security): SSRF hardening (salvages #780) @abhimehro (#817)
- 🧹 Simplify deeply nested logic in validate_hostname @abhimehro (#795)
- 🧹 Simplify deeply nested logic in validate_folder_data @abhimehro (#797)
- 🛡️ Sentinel: [security improvement] Sanitize Content-Type in ValueError messages @abhimehro (#783)
- 🧹 Refactor: extract logic from fix_env @abhimehro (#791)
- 🧹 Refactor: Extract helper functions from sync_profile @abhimehro (#792)
- 🧹 Refactor: Simplify create_folder logic @abhimehro (#793)
- 🧹 [code health improvement] Simplify deeply nested logic in validate_profile_id @abhimehro (#800)
- 🧹 [code health improvement] Refactor push_rules to improve maintainability @abhimehro (#804)
- chore: auto-format fix_env.py @abhimehro (#778)
- 🎨 Palette: Apply pluralize helper to log messages @abhimehro (#782)
- 🧹 [Code Health Improvement] Simplify verify_access_and_get_folders @abhimehro (#805)
- 🎨 Palette: improve empty state profile UX @abhimehro (#813)
- Jules Daily QA & Agentic Review @abhimehro (#814)
- 🧹 Simplify deeply nested logic in _retry_request @abhimehro (#808)
- 🎨 Palette: Align plan details output @abhimehro (#809)
- 🛡️ Sentinel: [MEDIUM] Sanitize Content-Type header in exceptions @abhimehro (#810)
- chore: auto-format fix_env.py @abhimehro (#785)
- chore: complete daily QA agentic review @abhimehro (#779)
- fix(security): prevent shell injection from AI-inference output in summary.yml @abhimehro (#769)
- 🛡️ Sentinel: [MEDIUM] Replace mkstemp with NamedTemporaryFile @abhimehro (#776)
- 🛡️ Sentinel: [MEDIUM] Add authorization parameter to log sanitization @abhimehro (#774)
- 🛡️ Sentinel: [MEDIUM] Fix missing Content-Type validation @abhimehro (#763)
- 🛡️ Sentinel: [CRITICAL/HIGH] Fix Authorization Log Leakage @abhimehro (#775)
- 🎨 Palette: Improve CLI pluralization grammar @abhimehro (#773)
- 🎨 Palette: Add empty state hint in main summary table @abhimehro (#768)
- chore: Automated Daily QA Review @abhimehro (#765)
- ⚡ Bolt: Optimize rule safety validation fast path @abhimehro (#762)
- 🎨 Palette: [Fail-Secure Interactive Prompts] @abhimehro (#751)
- Add GitHub Actions workflow testing skill @abhimehro (#757)
- ci: pass changelog token via environment @abhimehro (#756)
- Add ctrld-sync CLI testing skill @abhimehro (#761)
- 🛡️ Sentinel: [HIGH] Fix SSRF bypass via reserved IPs @abhimehro (#755)
- ux(get_password): auto-append '(typing will be hidden)' hint (salvages #742) @abhimehro (#743)
- 🎨 Palette: Small UX and CLI hints improvements @abhimehro (#734)
- ⚡ Bolt: Optimize _clean_env_kv with string split @abhimehro (#740)
- 🧪 Add tests for _clean_env_kv @abhimehro (#739)
- fix(tests): resolve mypy typing issues in test_ux.py @abhimehro (#730)
- 🎨 Palette: Retain semantic emojis in no-color fallbacks @abhimehro (#726)
- chore(format): Apply pre-commit formatting fixes @abhimehro (#728)
- 🎨 Palette: Decouple color formatting from input hints @abhimehro (#725)
- 🛡️ Sentinel: [CRITICAL] Fix SSRF Vulnerability via Link-Local IPs @abhimehro (#724)
- chore(qa): daily QA review (all green) @abhimehro (#719)
- chore: fix mypy type-checking violations across the test suite @abhimehro (#713)
- 🎨 Palette: Improve CLI no-color fallbacks and add completion feedback @abhimehro (#716)
- 🛡️ Sentinel: [HIGH] Fix SSRF bypass via loopback interface @abhimehro (#714)
- 🛡️ Sentinel: Add explicit loopback IP check to prevent SSRF bypass @abhimehro (#712)
- ⚡ Bolt: Use dict comprehension for hostname filtering @abhimehro (#710)
- chore: complete Jules Daily QA & Agentic Review @abhimehro (#708)
- UX: Retain success message and links in no-color mode @abhimehro (#707)
- ⚡ Bolt: [performance improvement] Pre-compile regex for profile URL extraction @abhimehro (#700)
- chore: update ruff config to use lint section @abhimehro (#706)
- 🛡️ Sentinel: [HIGH] Fix SSRF by blocking private IPs @abhimehro (#703)
- ⚡ Bolt: Optimize
validate_folder_databy removing generator expressions @abhimehro (#705) - 🛡️ Sentinel: [HIGH] Fix SSRF bypass via unspecified IPs @abhimehro (#699)
- 🎨 Palette: Add trailing space to generic input prompts @abhimehro (#698)
- ⚡ Bolt: Optimize dictionary lookups in cache and headers @abhimehro (#696)
- 🎨 Palette: Enhance CLI UX with input buffering fixes and distinct error hints @abhimehro (#695)
- Revert "chore(actions): consolidate workflow automation" @abhimehro (#693)
- chore(actions): consolidate workflow automation @abhimehro (#691)
- 🛡️ Sentinel: [MEDIUM] Add input length limits prior to expensive operations @abhimehro (#686)
- ⚡ Bolt: [performance improvement] Optimize dictionary key removal @abhimehro (#685)
- fix(automation): validate action ref existence and add major bump warnings @abhimehro (#663)
- chore(actions): consolidate workflow automation @abhimehro (#661)
- ⚡ Bolt: Optimize dictionary lookups with walrus operator @abhimehro (#660)
- chore(actions): consolidate workflow automation @abhimehro (#657)
- ⚡ Bolt: [performance improvement] Reduce thread contention in API rate limit parsing @abhimehro (#655)
- fix(actions): restore automation workflow permissions and archive stale agentic artifacts @abhimehro (#652)
- chore(actions): sync automation polish @abhimehro (#650)
- chore(actions): consolidate repository automation @abhimehro (#649)
- Add 400 and 422 HTTP status hints to
_4XX_HINTS@copilot-swe-agent[bot] (#648) - docs(api_client): add docstrings to the four public HTTP wrapper functions @copilot-swe-agent[bot] (#646)
- Use
api_client._SERVER_ERROR_HINTas single source of truth for_STATUS_HINTS[500]@[copilot-swe-agent[bot]](htt...