Skip to content

Releases: Data-Wise/flow-cli

v7.2.1 — Testing Overhaul & Cleanup

16 Feb 23:05
fefa0ac

Choose a tag to compare

Highlights

  • Shared test framework — all 134 test files now use test-framework.zsh with 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.json cleaned 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_pass double-counting guard
  • with_env scalar limitation documentation

Removed

  • semantic-release, @semantic-release/*, conventional-changelog-conventionalcommits devDependencies
  • .releaserc.json configuration file

Documentation

  • docs/guides/TESTING.md — full rewrite for shared framework architecture
  • docs/CHANGELOG.md — new release entry
  • docs/guides/QUALITY-GATES.md — removed stale semantic-release CI section
  • FLOW_VERSION in flow.plugin.zsh synced 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

16 Feb 20:18
9c62d17

Choose a tag to compare

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

15 Feb 05:18
ce925e2

Choose a tag to compare

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

  • dots dispatcher — all dotfile operations from former dot
  • sec dispatcher — all secret operations (dot secretsec)
  • tok dispatcher — all token operations (dot tokentok)
  • Migration guide: docs/guides/MIGRATION-DOT-SPLIT.md
  • New E2E and dogfood tests for dispatcher split
  • ZSH completions for _sec and _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/mise dependency in dots-dispatcher.zsh header
  • CHANGELOG historical entries restored to original command names

Backward Compatibility

  • flow doctor --dot flag works unchanged
  • --dot flags throughout the codebase preserved

Stats

Full Changelog: v7.0.2...v7.1.0

v7.0.1 — Himalaya Neovim Docs + Architecture Fixes

12 Feb 17:06
3297ebe

Choose a tag to compare

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

12 Feb 05:18
f1a654e

Choose a tag to compare

Email Dispatcher (em)

ADHD-friendly email management powered by himalaya.

Highlights

  • em inbox / em pick — fzf-powered email browsing with smart rendering
  • em respond — batch triage: classify, summarize, draft replies with AI
  • em classify / em summarize / em draft — individual AI actions
  • em find <query> — server-side IMAP SEARCH with client-side fallback
  • em 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

11 Feb 00:57
a83282a

Choose a tag to compare

Fixed

  • False positive production conflicts (#372)_git_detect_production_conflicts() now uses --is-ancestor fast path and git log --no-merges to ignore --no-ff merge 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 always block cleanup — guaranteed global cleanup on all exit paths

Changed

  • Direct merge deploy: 5 → 6 steps (new sync step)
  • _deploy_step() supports skip status
  • Test suite: 43/43 passing (144 test files)

Full Changelog: v6.7.0...v6.7.1

v6.7.0 — Math Preflight + Quality Gates

10 Feb 18:38
0c0e0b6

Choose a tag to compare

What's New

Display Math Validation

  • Pure ZSH state machine (_check_math_blanks) detects blank lines and unclosed $$ blocks in .qmd files
  • Catches two Quarto rendering issues: blank lines in $$ (breaks PDF) and unclosed $$ (breaks all rendering)

Pre-Commit Gate

  • lint-staged now validates .qmd files at commit time via scripts/check-math.zsh
  • Immediate feedback — no need to wait for teach deploy to 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

09 Feb 20:59
8e73879

Choose a tag to compare

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 help footer

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/github 12.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-cli

Full Changelog: v6.5.0...v6.6.0

v6.5.0 — Teach Doctor v2

09 Feb 00:27
9a7b444

Choose a tag to compare

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 teach startup from .flow/doctor-status.json
  • --fix mode — interactive fix with renv vs system install choice for R packages
  • --ci mode — no color, key=value output, exit 1 on failure (for pipelines)
  • --json mode — machine-readable structured output
  • --verbose/--brief — expanded detail or summary-only
  • Batch R package check — single R --quiet --slave call instead of N individual
  • renv-aware — detects renv activation, reports lockfile package count
  • Macro registrycache.yml renamed to registry.yml (backwards compatible)

Testing

  • 162 new test assertions across 3 new suites (unit, e2e, dogfood)
  • Test suite: 42/42 passing, 0 timeouts

Documentation

Full Changelog: v6.4.3...v6.5.0

v6.4.3

06 Feb 17:45

Choose a tag to compare

Bug Fixes

  • ZSH local path= buglocal path= inside functions shadows ZSH's $path array (tied to $PATH), silently breaking external command calls (yq, sed, jq, etc.). Renamed 20+ instances across lib/ and commands/
  • teach style show error — false "yq required" error caused by the path shadowing bug
  • Missing teaching style config — added teaching_style section 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