Skip to content

Release: v7.16.0#494

Merged
Data-Wise merged 10 commits into
mainfrom
dev
Jul 7, 2026
Merged

Release: v7.16.0#494
Data-Wise merged 10 commits into
mainfrom
dev

Conversation

@Data-Wise

Copy link
Copy Markdown
Owner

Summary

Release v7.16.0 — agy em-ai backend + em ADHD-UX audit fixes.

Added

  • agy (Antigravity CLI) as an em-ai backend, ahead of gemini (now legacy) in the fallback chain (claude -> agy -> gemini -> none). Output is automatically cleaned and sanity-checked before use, since agy has been observed to exit successfully with a canned response on degenerate input.
  • em help <topic> — filter help output to one section instead of the full ~90-line dump.
  • em help's SAFETY section now documents the three confirmation tiers as an intentional design.

Fixed

  • em flag/em star dead-code bug — a duplicate case label silently made em flag always resolve to the wrong handler. Fixed the routing; em star extended to accept multiple IDs like flag/unflag.
  • em help/em doctor had their own separate, missed copy of the AI backend list.

Changed

  • Modular teach dispatcher — split into a loader + 10 focused modules.

Full details: CHANGELOG.md. Design doc: docs/specs/SPEC-em-ux-refactor-2026-07-07.md.

Test plan

🤖 Generated with Claude Code

Test User and others added 10 commits July 2, 2026 13:24
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…490)

* docs(spec): add flow-cli restructure proposal and decision report

* docs(orchestrate): add Phase 1 plan for flow-cli restructure

* test(teach): add characterization tests for dispatcher routing

* refactor(teach): split teach-dispatcher.zsh into loader + 10 modules

* test(teach): update manpage guard and dogfood for modular dispatcher

* chore(status): record Phase 1 restructure progress

---------

Co-authored-by: Test User <test@example.com>
…legacy (#491)

Adds agy ahead of gemini in the em-ai fallback chain (claude -> agy ->
gemini -> none), since Google's gemini CLI is deprecated upstream in
favor of Antigravity. gemini is retained, not removed, for existing
FLOW_EMAIL_AI=gemini configs.

agy requires a validation wrapper, not a drop-in swap: it has no
clean-output flag (appends an unrequested markdown status block to
every response) and has been observed to exit 0 with a canned
"system operational" response on degenerate input rather than failing
loudly. _em_ai_agy_clean_output/_em_ai_agy_looks_valid strip and
sanity-check its output before use.

Also fixes a more serious bug found during live verification: capturing
agy's output via $(...) command substitution hangs or dies silently,
independent of `timeout` -- agy leaves a descendant process attached to
its stdout pipe, so $(...) blocks waiting for EOF that never comes.
Fixed by routing output through a temp file instead.

Updates doctor's health check and the full doc surface for the
--backend/FLOW_EMAIL_AI option set (guide, cookbook, doctor reference,
master dispatcher/API/architecture docs, refcard, quick reference,
tutorial, man page, changelog) -- left docs/specs/* (historical) and
himalaya.nvim's separate :HimalayaAi gemini setting untouched.

Also registers tests/test-em-ai-switch.zsh in run-all.sh, which had
never been wired into the suite.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…rability

Spec from this session's em ADHD-UX audit: a P0 duplicate-case-label bug
(em flag silently never reaches _em_star's toggle logic) plus P1/P2
discoverability findings (no topic-scoped help, undocumented 3-tier
confirmation system, alias sprawl, missing undo/recent-folders).
Decisions locked via grill: bundle Phase 1+2 into one PR, extend em star
to multi-ID, implement in-session (no ORCHESTRATE handoff for this pass).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…492)

PR #491 added agy as an em-ai backend but only updated commands/doctor.zsh
(flow doctor). em() has its own separate, duplicate help text (_em_help)
and inline dependency check (_em_doctor) that still showed
--backend claude|gemini with no agy option. Fixes both, keeps gemini
labeled as legacy consistent with the rest of that PR.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…1+2) (#493)

Per SPEC-em-ux-refactor-2026-07-07.md, from this session's ADHD-UX audit
of em.

P0 fix: em()'s dispatch case statement had "star|flag)" bound to _em_star
in one section AND "flag|fl)" bound to _em_flag in another, earlier
section. Since zsh case matches top-down, `em flag` always resolved to
_em_flag (one-way add) and never reached _em_star's toggle logic --
the "flag" alias on the star arm was dead code. Fixed the routing so
each command name maps to exactly one function; also removed a harmless
duplicate `move|mv)` label. _em_star extended to accept multiple IDs
(toggling each independently against one consistent folder snapshot)
to match flag/unflag's existing batch capability.

Added tests/test-em-flag-star.zsh: routing regression tests (flag/star/
unflag each hit a distinct function), multi-ID parity tests, and a
grep-based dead-code guard that specifically detects the same case-label
word bound to two different handlers (not just any repeated word --
verified against a false positive on legitimate multi-word aliases).
Verified the guard actually catches this exact bug class via a planted-
defect positive control (reintroduced the old duplicate label, confirmed
the guard fails with the right message, restored the fix).

Phase 2: added `em help <topic>` (inbox/compose/organize/manage/safety/
ai/search) so users aren't stuck scanning a ~90-line dump for one thing;
no-arg `em help` output is unchanged. Documented the existing 3-tier
confirmation system ([y/N/e] / type "yes" / type folder name) in the
SAFETY section as an intentional design, not an incidental discovery.
Updated MASTER-DISPATCHER-GUIDE.md and the man page to match, including
fixing a duplicate `em move` reference row and a stale "em flag is an
alias for em star" note that mirrored the same underlying bug.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Bumps FLOW_VERSION, package.json, CLAUDE.md, 23 man pages via
scripts/release.sh. Moves CHANGELOG Unreleased section to the 7.16.0
entry in both root and docs mirror. Refreshes docs/index.md's What's
New callout and footer (was stale at 7.15.0).
@Data-Wise Data-Wise merged commit bd8dc87 into main Jul 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant