Skip to content

v1.9.3 - pattern-sweep closeout

Choose a tag to compare

@daniel-pittman daniel-pittman released this 30 May 23:24
· 48 commits to main since this release
281a4f1

What's in this release

Closeout sweep of the 15 round-5 review findings deferred from v1.9.2. This is the polish-and-completeness release that pays down the sibling-site patterns the v1.9.2 review cycle kept surfacing.

What this release closes

  • Envelope pattern at remaining $(zh_graphql ...) sites including cmd_subissue_add/remove pre-validation lookups. Every mutation call in zh now uses the fail-soft 2>"$_err" || var="" pattern.
  • stderr_plain surfacing across ~30 MCP wrapper return dicts. ANSI-clean stderr now reaches the caller.
  • Noop overstate fix on _planning_add/remove_children. No longer reports added=[child1, child2] when actually nothing was attached.
  • partial_applied parity on close_issue / reopen_issue (now matches the _planning_* family).
  • duplicate_check placeholder on validation early-returns in create_issue and _planning_create. Shape parity across success and validation paths.
  • OSC ST handling in the pure-bash zh_cause_hint fallback. The naive ${var//${BASH_REMATCH[0]}/} approach hits a glob-escape infinite loop when the match contains a literal backslash. Fix: normalize ESC \ to BEL up front via a literal-scalar substitution, then the existing BEL OSC regex catches every OSC sequence whether originally BEL- or ST-terminated.
  • rm -f hardening at 6 cmd_create cleanup sites (2>/dev/null || true to survive read-only TMPDIR on CI).
  • PATH allowlist in tests/_bash_runner.py accommodates developers on Nix profiles, asdf shims, conda, or homebrew arm64.
  • ZH_REST_TOKEN env-leak production-sourced regression test added.
  • _SET_TYPE_EXIT_2_SNIPPET legacy parallel-snippet migrated to a production-sourced test, completing the v1.9.2 architecture migration.
  • subissue_reorder parent alias (cross-tool consistency: parent_number stays for back-compat, parent added to match the subissue_*_children family).
  • _safe_int bool guard (asymmetry fix; bool now resolves to int(bool) not the default).
  • monkeypatch in test_round4_f4 (replaces the manual try/finally os.environ mutation).

Tests

513 passing (baseline 501 at v1.9.2). One review round converged with no HIGH or MEDIUM findings; 7 LOW/INFO polish items captured for a v1.9.4 backlog (sentinel-fallback hardening edge case, unanchored regex tightening, 8-bit OSC ST coverage, test env-dep cleanup, doc alignment).

v1.9.x release summary

The v1.9.x line is the issue-type + sub-issue model migration, plus the test-architecture refactor that ended the parallel-snippet drift problem:

  • v1.9.0: 5-level issue-type + sub-issue model, full CRUD across Initiative / Project / Epic / [Bug/Feature/Task] / Sub-task.
  • v1.9.1: closeout sweep of v1.9.0 deferred items.
  • v1.9.2: test-architecture refactor (production-sourcing harness replaces parallel snippets).
  • v1.9.3 (this release): pattern-sweep closeout of v1.9.2 round-5 findings.

Full Changelog: v1.9.2...v1.9.3