Skip to content

Release v0.7.0#540

Merged
maxine-at-forecast merged 24 commits intomainfrom
release/v0.7.0
Mar 31, 2026
Merged

Release v0.7.0#540
maxine-at-forecast merged 24 commits intomainfrom
release/v0.7.0

Conversation

@maxine-at-forecast
Copy link
Copy Markdown

Summary

  • Version bump to 0.7.0
  • Changelog updated with all changes since v0.6.0

What's in v0.7.0

Added:

  • crosslink init --update with manifest-tracked safe upgrades
  • First-class Shell/Bash support in language rules, detection, and hooks
  • QA architectural review skill (/qa) shipped with crosslink init
  • Team and solo configuration preset documentation

Fixed:

  • Full-codebase QA audit — 180+ fixes across security, correctness, and architecture
  • swarm merge --base flag for repos without a develop branch
  • gh added to allowed bash prefixes; session status caching in hook
  • .hub-write-lock excluded from git tracking to prevent recovery commit loop
  • Consistent signing bypass for all hub-cache commits
  • Resolved clippy pedantic and nursery warnings

Changed:

  • init.rs split into init/mod.rs + submodules for maintainability
  • Config command logic extracted to config_registry.rs
  • status.rs renamed to lifecycle.rs
  • Shared error helpers and TUI tab refactoring

Smoke test fixes

Fixed 42 smoke test regressions from the QA audit (#527):

  • Bearer auth added to server API tests (auth middleware)
  • --force on agent init in coordination/concurrency tests (init now auto-creates agent identity)
  • sync before milestone create in tui_proptest (milestones now require hub cache)
  • Priority enum fix in update test (API rejects "critical")

Test results

  • 1,682 unit tests passed
  • 159 smoke tests passed
  • Clippy clean

🤖 Generated with Claude Code

dollspace-gay and others added 24 commits March 25, 2026 21:25
Adds the tested QA architectural review skill so it ships with
crosslink init and is available out of the box.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: add qa.md skill to embedded command resources
…, and architecture

Security (12): shell injection, fail-open hooks, allow-list bypass, MD5→SHA256,
server localhost bind, bearer auth, temp file perms, YAML injection, path traversal, CORS

Correctness (50+): resolve_id, signing oracle, timer corruption, transaction safety,
hydration data loss, non-atomic writes, TOCTOU races, V1/V2 dispatch, lock release,
hub write locks, DAG state machine, clock skew, conflict detection, enum types

Architecture (60+): tokio Mutex, N+1 queries, shared error helpers, config registry,
walkthrough dedup, init.rs split, DRY extractions, typed API enums, LockMode enum,
hook god function splits, stovepipe elimination, TUI shared helpers

150 files changed, 1682 tests passing, cargo fmt + clippy clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: Full-codebase QA audit — 180+ fixes across security, correctness, and architecture
Add shell scripting as a supported language with opinionated rules
(strict mode, shellcheck, quoting, scoping), auto-detection via
.shellcheckrc and .sh/.bash file scanning in root/scripts/bin dirs,
shellcheck linter integration in post-edit hooks, and bats test
framework support in kickoff conventions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: add first-class Shell/Bash language support
Introduces init-manifest.json to track SHA-256 hashes of files written
by `crosslink init`, enabling a three-way merge upgrade path via
`--update`. This replaces the all-or-nothing `--force` for users who
want to safely upgrade managed files without losing local modifications.

Closes #530

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Systematic cleanup of 2300+ clippy warnings under pedantic and nursery
lint groups. Changes include: proper # Errors doc sections, write!/writeln!
instead of format! append, let-else patterns, map_or_else conversions,
redundant closure removal, derive Eq, backtick doc formatting, const fn
promotion, and significant Drop tightening.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: add crosslink init --update with manifest-tracked safe upgrades
Adds a Configuration Presets section to README.md explaining team mode
(strict tracking, CI verification, enforced signing) and solo mode
(relaxed tracking, local verification, signing disabled). Improves CLI
help text for `init` and `config` commands to describe presets and how
to apply them.

Closes #533

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docs: document team and solo configuration presets
SyncManager commit sites inherited global commit.gpgsign config, causing
failures when the user's signing key wasn't usable in the cache context.
SharedWriter already bypassed signing when no agent key was configured,
but SyncManager did not.

Adds SyncManager::git_commit_in_cache() that checks whether signing was
explicitly configured at local/worktree scope (by crosslink agent init).
If so, commits are signed for audit trail. If not, commit.gpgsign=false
is injected to prevent failures from inherited global config.

Migrates all 5 SyncManager commit sites and 1 SharedWriter amend site to
use the signing-aware helpers. Also auto-runs agent init during crosslink
init so every project gets an agent identity and signing key by default.

Closes #529

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: consistent signing bypass for all hub-cache commits
The .hub-write-lock PID file was tracked in git, causing every sync
cycle to see dirty state (file created then deleted by the RAII guard),
commit a recovery entry, and diverge from origin. After a crash this
produced 274 spurious recovery commits.

Adds ensure_hub_gitignore() that creates a .gitignore on the hub branch
excluding .hub-write-lock, and untracks it via git rm --cached if
already tracked. Called during init_cache (new branches), after init
(fetched branches), and at the start of fetch (self-healing for
existing caches).

Closes #528

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: gitignore .hub-write-lock to prevent recovery commit loop
The work-check.py hook spawned `crosslink session status` for every
non-allowlisted Bash command, adding ~100ms latency. Common tools like
gh, cat, wc, grep etc. triggered this unnecessarily.

Expands DEFAULT_ALLOWED_BASH with gh and 20+ common CLI tools. Adds a
sentinel file (.crosslink/.active-issue) written by `session work` and
`quick`, cleared by `session end`. The hook reads this file first (~1ms)
and only falls back to the subprocess when the sentinel is missing.

Closes #522

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…n-cache

fix: add gh to allowed bash prefixes and cache session status in hook
swarm merge hardcoded "develop" as the base for branch creation and
diff generation, failing with "fatal: 'develop' is not a commit" on
repos that use main as their default branch.

Adds --base flag (auto-detects develop/main/origin variants by default).
Extracts detect_base_branch() helper and refactors discover_worktrees
and extract_diff_ranges to use it, eliminating duplicated base-ref
iteration logic.

Closes #518

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: add --base flag to swarm merge for repos without develop branch
…ests

Bump crosslink to 0.7.0. Fix 42 smoke test regressions from the QA audit:
- Add bearer auth to server API smoke tests (auth middleware added in #527)
- Use --force on agent init in coordination/concurrency tests (init now auto-creates agent identity)
- Add sync before milestone create in tui_proptest (milestones now require hub cache)
- Fix priority enum mismatch in update test (API rejects "critical", use "high")
- Accept FAIL in integrity counters test when hub cache absent

1682 unit tests + 159 smoke tests pass. Clippy clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@maxine-at-forecast maxine-at-forecast self-assigned this Mar 31, 2026
@maxine-at-forecast maxine-at-forecast added the release Let's gooooooooo label Mar 31, 2026
@maxine-at-forecast maxine-at-forecast merged commit 1423c6c into main Mar 31, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Let's gooooooooo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants