Releases: Data-Wise/flow-cli
v7.2.1 — Testing Overhaul & Cleanup
Highlights
- Shared test framework — all 134 test files now use
test-framework.zshwith 14 assertion helpers, mock registry, and subshell isolation - Dogfood scanner — meta-test catches inline frameworks, unused captures, permissive exits, and existence-only tests
- Semantic-release removed — manual releases via
gh release create; 5 devDependencies and.releaserc.jsoncleaned up
Changes
Changed
- Testing overhaul: migrated 134 test files from inline frameworks to shared
test-framework.zsh - Removed semantic-release dependencies and configuration
Added
- Dogfood scanner (
tests/dogfood-test-quality.zsh) — 4 anti-pattern categories test_passdouble-counting guardwith_envscalar limitation documentation
Removed
semantic-release,@semantic-release/*,conventional-changelog-conventionalcommitsdevDependencies.releaserc.jsonconfiguration file
Documentation
docs/guides/TESTING.md— full rewrite for shared framework architecturedocs/CHANGELOG.md— new release entrydocs/guides/QUALITY-GATES.md— removed stale semantic-release CI sectionFLOW_VERSIONinflow.plugin.zshsynced to 7.2.1
Stats
- Test suite: 45/45 passing, 1 expected timeout (IMAP)
- Test files: 134 (consolidated from 186)
- Test functions: 8,000+
- Dispatchers: 15
Full Changelog: v7.2.0...v7.2.1
v7.2.0 — Explicit Editor Flag
What's New
work -e: Explicit Editor Control
work no longer auto-opens an editor. Use the new -e flag for explicit control:
work my-project # Just cd + context (no editor)
work my-project -e # Open $EDITOR
work my-project -e code # Open VS Code
work my-project -e cc # Claude Code (acceptEdits)
work my-project -e ccy # Claude Code (yolo mode)
work my-project -e cc:new # Claude Code (new Ghostty window)The old positional syntax (work proj nvim) still works but shows a deprecation warning.
Documentation Overhaul
- Added missing v7.1.0 changelog entry (dot split)
- Added v7.0.0, v7.1.0, v7.2.0 to Release Notes page
- Updated MASTER-API-REFERENCE.md (v5.19.1 → v7.2.0, 880 functions)
- Fixed stale version strings across 9 docs
- Fixed misleading cross-reference in Quick Reference
Testing
- 39 new tests for
work -e(70 total work tests) - 45/45 test suites passing (186 files, 8000+ assertions)
Full Changelog: v7.1.0...v7.2.0
v7.1.0 — Dispatcher Split: dots, sec, tok
Highlights
The monolithic dot dispatcher (4,395 lines) has been split into 3 focused dispatchers:
dots— Dotfile management (chezmoi, edit, sync, push/pull)sec— Secret management (Keychain, Bitwarden)tok— Token management (GitHub, NPM, PyPI wizards, rotation)
Dispatcher count: 13 → 15.
Changes
Added
dotsdispatcher — all dotfile operations from formerdotsecdispatcher — all secret operations (dot secret→sec)tokdispatcher — all token operations (dot token→tok)- Migration guide:
docs/guides/MIGRATION-DOT-SPLIT.md - New E2E and dogfood tests for dispatcher split
- ZSH completions for
_secand_tok
Changed
_dot_*internal functions renamed to_dotf_*(shared),_dots_*,_sec_*,_tok_*- Help compliance verified: 14/14 dispatchers pass 9-rule format
- All 91 files updated with new command references
Removed
dot-dispatcher.zsh(replaced by 3 new dispatchers)
Fixed
- Stale
_dot_token_*function names in architecture and API docs - Incorrect
bw/misedependency indots-dispatcher.zshheader - CHANGELOG historical entries restored to original command names
Backward Compatibility
flow doctor --dotflag works unchanged--dotflags throughout the codebase preserved
Stats
- Tests: 8,000+ functions across 45/45 suites (0 failures, 1 expected timeout)
- Docs: https://Data-Wise.github.io/flow-cli/
Full Changelog: v7.0.2...v7.1.0
v7.0.1 — Himalaya Neovim Docs + Architecture Fixes
What's Changed
Documentation
- Himalaya Neovim integration — dedicated setup guide, tutorial, and quick reference for in-editor email with AI actions
- Architecture diagram — added em dispatcher (was showing 12, now 13) and himalaya CLI to Layer 0 integrations
- Cross-references — bidirectional links between CLI and Neovim email documentation
- HIMALAYA-SETUP.md — restored CLI-only content; Neovim content split to HIMALAYA-NVIM-SETUP.md
Testing
- 3 new himalaya test suites (automated, headless keybind, interactive)
- File-existence guards for portability (tests skip gracefully when Neovim config not installed)
Maintenance
- v7.0.0 changelog entry added
- File counts updated (148 → 181 test files)
- Version stamps synced across reference docs
Full Changelog: v7.0.0...v7.0.1
v7.0.0 — Email Dispatcher
Email Dispatcher (em)
ADHD-friendly email management powered by himalaya.
Highlights
em inbox/em pick— fzf-powered email browsing with smart renderingem respond— batch triage: classify, summarize, draft replies with AIem classify/em summarize/em draft— individual AI actionsem find <query>— server-side IMAP SEARCH with client-side fallbackem read --md— clean Markdown output via pandoc- 9-category AI classification — action, review, info, meeting, feedback, social, automated, listserv, spam
- Smart rendering — HTML via w3m/lynx, pandoc Markdown, plain text fallback
- Tab completions — full ZSH completions for all subcommands
Architecture
6-layer design: dispatcher → himalaya adapter → AI engine → cache → renderer → helpers
Other Changes
- 13 dispatchers (was 12)
- 148 test files, 45/45 suites passing
- Documentation site updated with Email section (CLI + Editor subsections)
Full Changelog: v6.7.1...v7.0.0
v6.7.1 — Fix #372 + Branch Sync
Fixed
- False positive production conflicts (#372) —
_git_detect_production_conflicts()now uses--is-ancestorfast path andgit log --no-mergesto ignore--no-ffmerge commits from previous deploys - Three-dot diff syntax — deploy preflight math check uses
...(symmetric difference) for correct semantics
Added
- Auto back-merge — after
teach deploy --direct, draft branch is automatically synced with production (step 6/6) teach deploy --sync— manual branch sync: merges production into draft (ff-only first, falls back to regular merge)- 7 conflict detection tests + 16 E2E/dogfood assertions
_deploy_commit_failure_guidance()helper — DRY extraction (replaces 3 duplicate blocks)- ZSH
alwaysblock cleanup — guaranteed global cleanup on all exit paths
Changed
- Direct merge deploy: 5 → 6 steps (new sync step)
_deploy_step()supportsskipstatus- Test suite: 43/43 passing (144 test files)
Full Changelog: v6.7.0...v6.7.1
v6.7.0 — Math Preflight + Quality Gates
What's New
Display Math Validation
- Pure ZSH state machine (
_check_math_blanks) detects blank lines and unclosed$$blocks in.qmdfiles - Catches two Quarto rendering issues: blank lines in
$$(breaks PDF) and unclosed$$(breaks all rendering)
Pre-Commit Gate
- lint-staged now validates
.qmdfiles at commit time viascripts/check-math.zsh - Immediate feedback — no need to wait for
teach deployto catch math issues
Deploy Preflight Integration
- Math validation runs as check 3 of 5 during
teach deploy - CI mode blocks deploy on issues; interactive mode warns only
- Only scans files changed between draft and production branches
Quality Gates Documentation
- New
docs/guides/QUALITY-GATES.md— comprehensive reference mapping every validation layer - Covers pre-commit hooks, manual linters, CI workflows, deploy preflight, and known gaps
Tests
- 41 new tests across 3 suites (unit, E2E with sandboxed repos, dogfood against demo course)
v6.6.0 — Teach Map + Deploy Safety
What's New
teach map — Unified Ecosystem Discovery (#358)
A new teach map subcommand that displays the complete teaching ecosystem across all three tools (flow-cli, Scholar, Craft) grouped by workflow phase. Gives users a single reference to discover every available command, understand which tool provides it, and see what's missing.
- 5 workflow phases: Setup, Content, Validation, Deployment, Tracking
- Tool attribution badges:
[flow-cli],[scholar],[craft] - Commands from uninstalled tools appear dimmed with install hint
- Cross-reference added to
teach helpfooter
Teach Deploy Safety & DX Enhancements (#362)
Four safety and developer experience improvements for teach deploy, ported from battle-tested deployment scripts:
- Trap handler (branch safety) — Both direct merge and PR modes set a trap on EXIT/INT/TERM. If anything goes wrong mid-deploy, you're automatically returned to your draft branch
- Uncommitted changes prompt — Instead of blocking with "working tree dirty", deploy now offers to auto-commit with a smart message. CI mode fails fast with a clear error
- Pre-commit hook recovery — If a commit fails (e.g., Quarto pre-commit hook), you get 3 actionable options: fix & retry, skip validation, or force commit. Changes remain staged
- GitHub Actions link — Deployment summary box now includes a direct link to GitHub Actions (supports both SSH and HTTPS remotes)
Other
- Dependabot:
@semantic-release/github12.0.2 → 12.0.5
Test Results
- 42/42 test suites passing, 0 timeouts
- 27 new tests for deploy safety (unit, E2E, dogfood)
- 13 new tests for teach map
Install / Update
brew upgrade flow-cli
# or
brew install data-wise/tap/flow-cliFull Changelog: v6.5.0...v6.6.0
v6.5.0 — Teach Doctor v2
Teach Doctor v2
Two-mode health check architecture for the teaching workflow.
Quick Mode (default, < 3s)
4 categories: CLI dependencies, R environment + renv, configuration, git setup
Full Mode (--full, 11 categories)
Quick checks + per-package R checks, quarto extensions, scholar, hooks, cache, macros, teaching style
New Features
- Health indicator — green/yellow/red dot on
teachstartup from.flow/doctor-status.json --fixmode — interactive fix with renv vs system install choice for R packages--cimode — no color, key=value output, exit 1 on failure (for pipelines)--jsonmode — machine-readable structured output--verbose/--brief— expanded detail or summary-only- Batch R package check — single
R --quiet --slavecall instead of N individual - renv-aware — detects renv activation, reports lockfile package count
- Macro registry —
cache.ymlrenamed toregistry.yml(backwards compatible)
Testing
- 162 new test assertions across 3 new suites (unit, e2e, dogfood)
- Test suite: 42/42 passing, 0 timeouts
Documentation
- New tutorial: Health Check (Doctor v2)
- New refcard: Doctor Quick Reference
- Updated QUICK-REFERENCE, MASTER-DISPATCHER-GUIDE, site content
Full Changelog: v6.4.3...v6.5.0
v6.4.3
Bug Fixes
- ZSH
local path=bug —local path=inside functions shadows ZSH's$patharray (tied to$PATH), silently breaking external command calls (yq, sed, jq, etc.). Renamed 20+ instances across lib/ and commands/ teach style showerror — false "yq required" error caused by the path shadowing bug- Missing teaching style config — added
teaching_stylesection to.flow/teach-config.yml
Test Coverage
- +106 assertions across 4 new test files
- Regression guard prevents
local path=from being reintroduced - Full-plugin dogfood verifies all 12 dispatchers + core commands load correctly
- Core commands e2e: status, catch, win/yay, doctor, project detection
- Plugin system e2e: create → install → list → dev-mode → remove
run-all.sh: 26 → 34 passing tests