v2.1.0 pull request#16
Merged
Merged
Conversation
…ference across different engagement modes
collect_session_logs.sh grepped all JSONL files individually for the project basename, which missed subagent transcripts that never referenced the project directory (e.g., search-agent exploring framework files). Now uses session-grouped matching — greps only orchestrator archives, extracts session-short ID, then globs all files from each matching session — consistent with the approach already used by archive-session.sh and recover-session-logs.sh. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t, add branch support Install scripts now create daaf-docker/ in the user's current terminal directory instead of hardcoding ~/daaf-docker or %USERPROFILE%\daaf-docker. This lets all documentation use simple `cd daaf-docker && docker compose` commands instead of verbose `-f path/to/docker-compose.yml` flags, and eliminates platform-specific path substitution notes throughout the docs. Also removes the entrypoint.sh from the Docker build (and the legacy zip install path it supported), moves git identity config into the Dockerfile where it works for all install methods, adds DAAF_BRANCH env var support for installing from specific branches/tags, and fixes PowerShell error handling gaps flagged by review (missing $LASTEXITCODE checks after native docker commands). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New scripts (bash + PowerShell) downloaded during installation into the user's daaf-docker/ directory: - run_daaf: starts the container if needed and launches Claude Code (or bash) in a single command, replacing the 3-step manual workflow - backup_daaf: copies the full Docker volume to a date-versioned folder on the host, using a temporary busybox container so it works even when the DAAF container is stopped Install scripts updated to download the utilities alongside the Dockerfile. Documentation updated with simplified day-to-day workflow and backup instructions referencing the new scripts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…es for convenience scripts
Introduces migrate_daaf.sh and migrate_daaf.ps1 — one-time migration scripts for users on DAAF v2.0.1 or earlier who installed via the old ZIP-download method. The migration downloads host utility scripts, backs up the Docker volume, and uses blob-hash matching + git replace --graft to connect the local orphan git history to the upstream repository, enabling update_daaf.sh for all future updates. Preserves all research data, framework customizations, and the full git audit trail. Also adds: - migrate_daaf_design.md: detailed design document with edge cases, rollback instructions, and review findings - CHANGELOG_v2.0.2.md: release changelog and migration guide - user_reference/01_installation_and_quickstart.md: new "Migrating from an older installation" subsection in the Keeping DAAF Updated section Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Integration tests now run only on weekly schedule, manual dispatch, and release tags — no longer on every push to minor_revisions_v202. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Surface Claude's extended thinking content in the session log viewer with purple-themed visual treatment and collapsible containers, giving full visibility into model reasoning during session review. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ecution Marimo notebooks are interactive, so exposing ports to all network interfaces allowed unauthenticated code execution from any device on the local network. Bind 2718/2719 to 127.0.0.1 and document the change with a new FAQ entry and updated port references across user documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e assertions - Dockerfile multi-arch support (code-server + debugpy) for amd64/arm64 - CI integration: path-based triggers, ARM64 matrix on all jobs, new failure-resilience job (install detection, force reinstall, build failure recovery, concurrent lock guard, local-commit update handling) - CI scripts: formalized smoke test assertions with per-script output content verification replacing exit-code-only checks - BATS tests: 286 total (was 137) — error paths, state-machine integration tests for update/migrate, new files for view_notebooks/run_vscode - Pester tests: 344 total (was ~120) — matching error paths for cross-platform parity, integrated wrapper-script behavioral tests - Review fixes: removed unused variables, env var leak guard, lock polling instead of fixed sleep, deduplicated restore tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…gation Six root causes addressed: - Replace em-dashes (U+2014) with ASCII -- in all test files to eliminate PSScriptAnalyzer BOM warnings; remove UTF-8 BOM from TestHelper.ps1 - Rewrite install.bats error-path docker mocks from positional case "$1" to glob-based case "$*" so patterns match despite -f flag arguments - Fix dry-run test assertions in run_vscode.bats and view_notebooks.bats to check for reliably-produced output instead of unreachable [DRY-RUN] - Fix restore_from_backup.bats prompt assertion to use echo text instead of read -p prompt that isn't captured when stdin is piped - Add -ExitCode parameter to migrate_daaf.ps1 Wait-ForUser so error paths propagate non-zero exit codes; preserve $LASTEXITCODE across Out-String pipelines in both migrate_daaf.ps1 and update_daaf.ps1 helper functions - Replace tee pipelines with redirect+cat in ci-integration.yml failure resilience tests to capture correct exit codes; remove [DRY-RUN] smoke assertions for scripts that don't emit markers; fix PS 5.1 output capture with *>&1 for Write-Host streams Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two CI test fixes: 1. ci-scripts.yml: pwsh 7 Invoke-SmokeTest used 2>&1 which only captures stderr. Scripts output via Write-Host (stream 6), so $output was always empty. Changed to *>&1 to capture all streams, matching the PS 5.1 section. 2. migrate_daaf.ps1 / update_daaf.ps1: error-path Pester tests use wrapper scripts that dot-source the real script. In PowerShell, `exit N` inside a function in a dot-sourced script does not terminate the host process -- it only unwinds the dot-sourced scope and returns to the caller with implicit exit 0. Fixed by using [Environment]::Exit(N) for non-zero exits, which terminates the CLR process unconditionally. Success exits (0) still use plain `exit` to avoid killing the Pester host in non-subprocess tests. Also documents the dot-source exit gotcha in the shell-scripting skill (gotchas.md + SKILL.md topic index). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The dry-run mocks in install.ps1, migrate_daaf.ps1, and run_daaf.ps1 handle all docker calls via specific switch cases, so the default branch (which prints [DRY-RUN]) is never reached. The bash equivalents DO hit the default case and correctly output [DRY-RUN], so those assertions are kept. Removed from both pwsh 7 and PS 5.1 smoke test sections. The backup_daaf.ps1 [DRY-RUN] assertions are kept because its mock does hit the default case. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On force reinstall (DAAF_FORCE_REINSTALL=1), the install script clones the repo to /tmp/daaf-clone then copies to /daaf/ with cp -a. Git pack files (.git/objects/pack/*.pack) are mode 444 (read-only by design), so cp -a cannot overwrite them from a previous install. Fix: remove .git and related dotfiles before cloning. The research/ folder is preserved -- only framework files are replaced. Applied to both install.sh and install.ps1. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The pre-clone rm -rf cleanup runs via docker compose exec bash -c, which BATS mocks return 1 for. With set -euo pipefail active, this exits the script before reaching the clone step. Adding || true makes the cleanup best-effort, which is correct -- on fresh install there is nothing to remove, and on reinstall the rm may partially succeed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The restore test intended to test the "no backups found" error path by copying the script to an empty directory. But working-directory was set to daaf-docker/ which has a backup from the previous CI step, so the script found that backup and never hit the error path. Fix: cd to /tmp/empty_restore_dir before running the script. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The tee pipeline masks the exit code of update_daaf.sh (tee always returns 0). Using redirect+cat preserves the real exit code, matching the pattern applied to 4 other pipelines in commit df4ee61. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The restore script checks for running containers before searching for backups. With the container running (from step b), it prompts to stop, gets empty input from </dev/null, and exits 0 with "Restore cancelled" -- never reaching the "no backups" error path being tested. Fix: stop the container before the test, then restart it before step (e) which needs it running for docker compose exec. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
rebuild_daaf.sh copies the Dockerfile FROM the container TO the host before building. Breaking only the host copy had no effect -- rebuild overwrote it with the container's good copy. Now the test breaks the Dockerfile inside the container via docker compose exec, and the fix step pipes the good Dockerfile back in. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…cessary hook adjustments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See v2.1.0 changelog for full details!