Releases: applica-software-guru/sdd
1.9.2 — sdd preflight command
Added
sdd preflightcommand: pre-flight check that aggregates the four signals a developer (or CI) needs before claiming a project is clean: documentation validation (cross-references, frontmatter), transient docs (new/changed/deleted), abandoned drafts (docs/CRs/bugs), pending change requests, and open bugs. Prints a single readable report and exits non-zero if anything is pending — designed to compose withcompact(sdd preflight && sdd compact), to run beforesdd sync, or to gate a PR in CI.--no-validateskips the documentation validation step if you only care about state.- New
SDD.preflight()method on the core facade and newPreflightResulttype exported from@applica-software-guru/sdd-core.
Full Changelog: v1.9.1...v1.9.2
1.9.1 — sdd compact command
⚠️ Superseded by v1.9.2 —sdd preflightwas added there. Users on 1.9.1 should upgrade to@applica-software-guru/sdd@latest(1.9.2) to get bothcompactandpreflight.
Added
sdd compactcommand: archive or delete closed change requests (status: applied) and bugs (status: resolved) to keep the project lean. Terminal elements accumulate over time and add noise tocr list,bug list, and the agent's context —compactclears them without affecting the current documentation or code.- Default mode archives files to
change-requests/archive/andbugs/archive/. These subdirectories are invisible to the existing parsers (the*.mdglob does not recurse), so compacted elements immediately drop out of every command and the sync prompt while remaining on disk and in git history. --purgedeletes files permanently.--dry-runpreviews what would be compacted without touching the filesystem.- Safe by design: only
appliedCRs andresolvedbugs are touched.draft,pending, andopenelements are never compacted. - Local-only operation: the remote (SDD Flow) is not affected.
- New
SDD.compact()method on the core facade and newCompactMode/CompactResulttypes exported from@applica-software-guru/sdd-core.
- Default mode archives files to
Documentation
- New "Compacting closed elements" section in
docs/concepts.mdexplaining the lifecycle and the archive subdirectories - Updated
docs/cli-reference.md,docs/change-requests.md, anddocs/bugs.mdwith the new command - Project structure in
docs/concepts.mdnow shows thearchive/subdirectories - Updated
sddskill (SKILL.md + references) and Claude Code plugin skill files
Full Changelog: v1.9.0...v1.9.1
v1.9.0
What's changed
Removed
sdd-uiskill removed from the Claude Code plugin, canonicalpackages/skill/source, andsdd initscaffolding. The skill required Playwright MCP + a running Vite dev server and was too fragile to distribute. Thesdd ui launch-editorCLI command and@applica-software-guru/sdd-uinpm package remain available for React projects.
Added
- 6 slash commands for the Claude Code plugin:
/sdd-status,/sdd-sync,/sdd-bugs,/sdd-crs,/sdd-pull,/sdd-push - SessionStart hook: on session start in an SDD project, surfaces pending doc files, open bugs, and pending CRs
Changed
sddskill v1.1: richer description with more trigger phrases, deduplicated commit rule with rationalesdd-remoteskill v1.2: fixed step numbering, enriched trigger phrases (sdd pull, sdd push, SDD Flow)- Claude plugin version: aligned from 1.8.0 → 1.9.0
- CLI prebuild: cleans
skills/before copying to prevent stale files persisting
Full changelog: https://github.com/applica-software-guru/sdd/blob/main/CHANGELOG.md
v1.8.4 — Remove working branch enforcement
What changed
SDD no longer requires you to be on a specific git branch to run commands. Previously, every write command checked that the current branch matched the branch value in .sdd/config.yaml (default: sdd) and exited with an error if it didn't. That constraint has been removed entirely.
Why
The working branch concept added friction without providing meaningful safety. Teams work on feature branches, hotfix branches, or directly on main — forcing a switch to a dedicated sdd branch before every sdd push or sdd mark-synced was getting in the way.
Changes
CLI
Removed the requireCorrectBranch() guard from all write commands:
sdd syncsdd pullsdd pushsdd mark-syncedsdd mark-cr-appliedsdd mark-bug-resolvedsdd draftssdd mark-drafts-enriched
All commands now work on any branch without restriction.
Agent Skills
Removed the ## Working Branch section from sdd and sdd-remote skill files and from generated scaffold templates. Removed the per-workflow step "Verify you are on the working branch" from the enrich and sync workflows in sdd-remote.
Fix
Corrected a stale description in the sdd-flow agent skill: sdd cr pending was described as "Show draft change requests" — it now reads "Show pending change requests".
Upgrading
npm install -g @applica-software-guru/sddThe branch field in .sdd/config.yaml is ignored by all CLI commands from this version onward.
v1.8.3
Remote Worker Daemon
Main feature of this release: the sdd remote worker command registers the local machine as a remote worker for SDD Flow and polls for AI agent jobs dispatched from the web UI.
- Worker daemon: registration with periodic heartbeat, concurrent job polling, AI agent execution with output batching and Q&A relay via stdin
- Worker client API: functions for register, heartbeat, poll, output/question/answer relay, and job completion
- Interactive agent runner: new
startAgent()returning a handle withwriteStdin/kill/exitPromisefor interactive stdin piping - Compact colored logs: box-drawing prefix, first-line prompt preview, exit code + changed files count in one line, color-coded log lines (yellow=error, green=done, cyan=job)
Working Branch Enforcement
sdd initnow prompts for a working branch; the worker daemon runscheckoutBranch()automatically before each job- Worker displays agent/model/branch/prompt on job receive
Agent Runner Improvements
- Stream-json output:
--output-format stream-jsonsupport for Claude Agent — NDJSON event parsing with clean text forwarding to stdout or callback - Dynamic model selection:
$MODELplaceholder support in the agent command for runtime model selection - Report section: added to both sync and enrichment prompts to structure agent output
Fixes
- Document status in push payload: the frontmatter
statusfield is now included in the push payload (previously all documents were stored as "synced") - Bootstrap prompt uses skill name: prompts now reference the skill by name (
sdd) instead of hardcoded file paths, matching how agents discover and invoke skills
Documentation
- New
docs/remote-worker.mdguide with worker lifecycle, options, and job types - Updated
docs/README.mdwith a complete documentation index - Added draft lifecycle (draft → pending/open) to
docs/concepts.md - Updated
docs/cli-reference.mdanddocs/remote-sync.md
Cleanup
- Removed
branch-guard.tsand related unused exports - Removed "apply" job type from prompts and
sdd-remoteskill - Updated
sdd-remoteskill with correct paths and revised sync workflow
v1.8.2
Full Changelog: v1.8.1...v1.8.2
v1.8.1
Features
- Claude Code plugin package: Added
packages/claude-pluginwith marketplace-ready plugin metadata and bundled Agent Skills (sddandsdd-ui). - Claude plugin documentation: Added dedicated setup and usage guide in
docs/claude-code-plugin.md.
Fixes
- CR status semantics aligned: Updated CLI, docs, and skills to consistently treat
sdd cr pendingas pending-only (draft -> pending -> applied). - Bug resolution guardrail:
markBugResolved()now resolves only bugs inopenstate (draft bugs are no longer marked by mistake). - VS Code explorer consistency: CR explorer now includes
pendinggroup, bug explorer includesdraftgroup, and CR context action targets pending items. - Prompt/remote-state test alignment: Updated core tests to match current prompt format and remote state schema.
- Claude plugin skill references: Aligned plugin skill wording with current CR/Bug lifecycle semantics.
v1.8.0
Full Changelog: v1.7.0...v1.8.0
v1.7.0 — Remote project reset
What's New
sdd remote reset command
New command to wipe all project data from the remote, preserving the project container and API keys.
sdd remote reset --confirm my-project-slugWhat gets deleted
- All documents
- All change requests
- All bugs
- Related comments and notifications
What is preserved
- The project itself (name, slug, config)
- API keys
- Audit log entries (a new
project.resetevent is recorded)
Safety mechanism
The --confirm flag must match the project slug exactly. Wrong slug returns a 400 error.
Backend endpoints (CR-012)
POST /tenants/{tenant_id}/projects/{project_id}/reset(web, owner/admin)POST /cli/reset(API key auth)
Both require { "confirm_slug": "..." } in the body.
Typical workflow
sdd remote reset --confirm easypick # wipe remote
sdd push --all # re-sync from localFull Changelog: v1.6.0...v1.7.0
v1.6.0 — Fix sync round-trip: path, status and content preservation
What's New
End-to-end fix for push→pull sync integrity
This release fixes the three root causes of file corruption and duplication during CLI sync, requiring coordinated changes across both sdd-flow (backend) and sdd (CLI).
Problem
- Duplicate files: CRs and bugs pushed from CLI were recreated with ID-based filenames (
CR-{uuid}.md) on pull, because the backend didn't store the original filepath - Status overwritten: Push hardcoded
pendingfor CRs andopenfor bugs, ignoring the local status (applied,resolved, etc.) - Frontmatter corruption: Pull rebuilt files from scratch, replacing author, timestamps, version numbers, and YAML quoting style
Solution
Backend (sdd-flow)
- Added nullable
pathcolumn tochange_requestsandbugstables - Push endpoints now store and return
path - Push accepts optional
statusfield, preserving local status - Alembic migration
b2c3d4e5f6a7
CLI (sdd-core)
- Pull uses
remote.pathas primary filename source (fallback: state reverse mapping → ID-based) - Push sends local status for CRs and bugs
- Content-based comparison: if body is identical, file is untouched
- When body differs, only the body is surgically replaced (frontmatter preserved byte-for-byte)
New tests
- Pull uses remote
pathfor CRs and bugs (2 tests) - Pull skips file when body is identical (1 test)
- Push→pull round-trip preserves document content exactly (1 test)
- Push→pull round-trip preserves CR path and frontmatter (1 test)
28 unit tests passing (CLI) + 71 tests passing (backend)
Migration required
After deploying the new backend, run:
alembic upgrade headFull Changelog: v1.5.2...v1.6.0