Skip to content

Releases: applica-software-guru/sdd

1.9.2 — sdd preflight command

16 Jun 08:58

Choose a tag to compare

Added

  • sdd preflight command: 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 with compact (sdd preflight && sdd compact), to run before sdd sync, or to gate a PR in CI.
    • --no-validate skips the documentation validation step if you only care about state.
    • New SDD.preflight() method on the core facade and new PreflightResult type exported from @applica-software-guru/sdd-core.

Full Changelog: v1.9.1...v1.9.2

1.9.1 — sdd compact command

16 Jun 08:17

Choose a tag to compare

⚠️ Superseded by v1.9.2sdd preflight was added there. Users on 1.9.1 should upgrade to @applica-software-guru/sdd@latest (1.9.2) to get both compact and preflight.

Added

  • sdd compact command: 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 to cr list, bug list, and the agent's context — compact clears them without affecting the current documentation or code.
    • Default mode archives files to change-requests/archive/ and bugs/archive/. These subdirectories are invisible to the existing parsers (the *.md glob does not recurse), so compacted elements immediately drop out of every command and the sync prompt while remaining on disk and in git history.
    • --purge deletes files permanently.
    • --dry-run previews what would be compacted without touching the filesystem.
    • Safe by design: only applied CRs and resolved bugs are touched. draft, pending, and open elements are never compacted.
    • Local-only operation: the remote (SDD Flow) is not affected.
    • New SDD.compact() method on the core facade and new CompactMode / CompactResult types exported from @applica-software-guru/sdd-core.

Documentation

  • New "Compacting closed elements" section in docs/concepts.md explaining the lifecycle and the archive subdirectories
  • Updated docs/cli-reference.md, docs/change-requests.md, and docs/bugs.md with the new command
  • Project structure in docs/concepts.md now shows the archive/ subdirectories
  • Updated sdd skill (SKILL.md + references) and Claude Code plugin skill files

Full Changelog: v1.9.0...v1.9.1

v1.9.0

19 Apr 09:39

Choose a tag to compare

What's changed

Removed

  • sdd-ui skill removed from the Claude Code plugin, canonical packages/skill/ source, and sdd init scaffolding. The skill required Playwright MCP + a running Vite dev server and was too fragile to distribute. The sdd ui launch-editor CLI command and @applica-software-guru/sdd-ui npm 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

  • sdd skill v1.1: richer description with more trigger phrases, deduplicated commit rule with rationale
  • sdd-remote skill 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

16 Apr 09:01

Choose a tag to compare

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 sync
  • sdd pull
  • sdd push
  • sdd mark-synced
  • sdd mark-cr-applied
  • sdd mark-bug-resolved
  • sdd drafts
  • sdd 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/sdd

The branch field in .sdd/config.yaml is ignored by all CLI commands from this version onward.

v1.8.3

27 Mar 13:34

Choose a tag to compare

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 with writeStdin/kill/exitPromise for 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 init now prompts for a working branch; the worker daemon runs checkoutBranch() automatically before each job
  • Worker displays agent/model/branch/prompt on job receive

Agent Runner Improvements

  • Stream-json output: --output-format stream-json support for Claude Agent — NDJSON event parsing with clean text forwarding to stdout or callback
  • Dynamic model selection: $MODEL placeholder 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 status field 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.md guide with worker lifecycle, options, and job types
  • Updated docs/README.md with a complete documentation index
  • Added draft lifecycle (draft → pending/open) to docs/concepts.md
  • Updated docs/cli-reference.md and docs/remote-sync.md

Cleanup

  • Removed branch-guard.ts and related unused exports
  • Removed "apply" job type from prompts and sdd-remote skill
  • Updated sdd-remote skill with correct paths and revised sync workflow

v1.8.2

24 Mar 20:30

Choose a tag to compare

Full Changelog: v1.8.1...v1.8.2

v1.8.1

24 Mar 11:23

Choose a tag to compare

Features

  • Claude Code plugin package: Added packages/claude-plugin with marketplace-ready plugin metadata and bundled Agent Skills (sdd and sdd-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 pending as pending-only (draft -> pending -> applied).
  • Bug resolution guardrail: markBugResolved() now resolves only bugs in open state (draft bugs are no longer marked by mistake).
  • VS Code explorer consistency: CR explorer now includes pending group, bug explorer includes draft group, 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

20 Mar 09:37

Choose a tag to compare

Full Changelog: v1.7.0...v1.8.0

v1.7.0 — Remote project reset

19 Mar 09:32

Choose a tag to compare

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-slug

What 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.reset event 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 local

Full Changelog: v1.6.0...v1.7.0

v1.6.0 — Fix sync round-trip: path, status and content preservation

18 Mar 22:37

Choose a tag to compare

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

  1. 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
  2. Status overwritten: Push hardcoded pending for CRs and open for bugs, ignoring the local status (applied, resolved, etc.)
  3. Frontmatter corruption: Pull rebuilt files from scratch, replacing author, timestamps, version numbers, and YAML quoting style

Solution

Backend (sdd-flow)

  • Added nullable path column to change_requests and bugs tables
  • Push endpoints now store and return path
  • Push accepts optional status field, preserving local status
  • Alembic migration b2c3d4e5f6a7

CLI (sdd-core)

  • Pull uses remote.path as 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 path for 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 head

Full Changelog: v1.5.2...v1.6.0