Releases: plyght/superdetermine
Releases · plyght/superdetermine
Release list
v0.9.0
Features
- Added
sdt setupfor interactive first-run configuration (name, email, and the repo’s check command), with optional enablement of automatic background grading. - Expanded
sdt configinto a named-settings interface:sdt confignow lists all settings with resolved values and their source (local, global, default).sdt config <name>explains a setting (expected values/choices, storage key, scope).--unsetsupport, plus--keysto show dotted-key mappings for on-disk config.- Shell completions now include setting-name completion for
config.
Improvements
- Build defaults now produce a ReleaseFast binary on plain
zig build, avoiding accidental Debug builds and large performance regressions. - Switched the
apricotdependency from a local path to a fetched URL to restore out-of-the-box builds on CI and fresh clones. - Reduced agent session scanning overhead by skipping parsing of session files that cannot pertain to the current repo (for adapters that record absolute/cwd-resolved paths).
- Accelerated conflict-marker detection by caching blobs previously scanned as clean, avoiding repeated file reads across
statusruns. - Background grading agents now retire themselves cleanly when the repo is removed;
sdt doctorprunes orphaned agents. - Documentation updated for the new setup/config flows and renamed config flags/keys.
Fixes
- Fixed scheduler tick budget configuration reading the wrong key and parsing the value incorrectly; now reads
checks.tick_budgetand supports duration parsing. - Updated LFS and mesh configuration examples and error messages to match new setting names (e.g.,
lfs-url,lfs-smudge,mesh-every,mesh-verdicts).
Breaking Changes
- Configuration CLI and naming has changed:
sdt config checks.full ...is now documented/expected assdt config check ....- Several settings moved to new names (e.g.,
mesh.interval-ms→mesh-every,mesh.verdicts→mesh-verdicts,lfs.url→lfs-url). - Dual-write config syntax changed to
sdt config git-sync on --global.
Nightly (32aceaf)
Rolling nightly build from 32aceaf — 2026-08-20 07:41 UTC.
Prerelease built from the tip of master; may be unstable. Get it with sdt update --nightly.
v0.8.0
Improvements
- Garbage collection now bounds its root set using
gc.retain(default30d), allowing content abandoned by rewrites (amend/rebase/drop/squash) to be reclaimed after the retention window while always retaining anything reachable from branch refs. sdt gcnow trims expired moments as part of collection (when not running with--dry-run), preventing old moment logs from pinning otherwise unreachable objects.- Moment log trimming is more robust: when the only surviving keyframe would be cut, remaining moments are re-anchored so trimming can proceed without breaking reconstruction.
Breaking Changes
- Updated package version to
0.8.0.
v0.7.3
Fixes
- Prevented commands invoked with
--help/-hfrom performing repository mutations (e.g.,sdt save --helpno longer checkpoints the working tree). - Tightened conflict-marker detection to match only exact 7-character marker lines (optionally followed by a label), avoiding false positives from long runs of
=in plain-text files (e.g., license heading underlines) and handling CRLF marker lines correctly.
v0.7.2
Fixes
purge: Pathspec matching now follows.gitignoresemantics. Slash-free specs (e.g.,node_modules) match a path component at any depth, so nested directories are reached; leading/anchors matches to the repo root.
v0.7.1
Features
purgenow prunes.sdt/gitmapentries for changes that were replaced by the purge rewrite, preventing stale export mappings from masking history differences.
Improvements
purgewarns when dropped git mappings imply the nextsdt pushwill rewrite commits and a shared Git remote will diverge (requiring a force push).- Added
purgestatistics tracking for dropped git mappings (unmapped) and coverage via tests.
v0.7.0
Features
- Added
sdt purge <path...> [--dry-run] [--force]to erase a path from every change across all branches, enablingsdt gcto reclaim space from mistakenly recorded build artifacts. Includes dry-run reporting and safety gating via--force.
Fixes
.gitignoreis now honored even when no colocated.gitdirectory is present, preventing unintended capture of build output in sdt-only repositories.
Breaking Changes
sdt purgerewrites history and resets moment and operation logs; purged content cannot be recovered viasdt undo.
v0.6.3
Features
- Added live progress reporting for long
pushoperations, including mirroring history, packing objects, and sending objects.
Improvements
- Optimized history export during pushes by caching already-exported blobs, avoiding re-reading and re-compressing unchanged files across saved states.
- Enabled automatic pack-builder parallelism in libgit2 pushes (
pb_parallelism = 0) to avoid single-core delta compression. - Added automatic fallback to the system
git pushwhen libgit2 push fails (notably for large first pushes where pack building can stall the remote connection).
Fixes
- Prevented large first pushes from appearing hung by ensuring progress is finished/cleared on error paths.
- Added a regression test to verify first-push exports compress each blob once per unique content rather than once per saved state.
v0.6.2
Features
sdt clonenow shows live, in-terminal progress across phases: receiving objects, resolving deltas, checking out, and importing history.- Import progress includes an estimated total commit count (when available) for a real denominator instead of a synthetic percentage.
Improvements
- Progress output is suppressed when stdout is not a TTY to keep logs and pipes clean.
- Clone/import status messages are clearer, with improved error detail on clone failures.
- Progress rendering utilities were centralized in
uifor reuse (including consistent bars/spinners and human-readable byte formatting).
v0.6.1
Features
sdt updatenow shows an interactive download progress bar when running in a terminal, and reports the downloaded size on completion.- README now includes an animated demo of grading and rewinding.
Fixes
- macOS launchd background grading now runs with a real
PATH, matching foreground grading behavior and avoiding “command not found” failures.
Improvements
- Ignore handling is now consistently based on
.sdtignoreand always ignores.sdt(and.gitwhen present); removed remaining.grignore/legacy ignore merging. - UI now tracks whether output is a TTY separately from color support, enabling cleaner terminal rendering decisions.
Breaking Changes
- Removed support for legacy
.grrepositories and associated discovery paths; existing repos must be.sdt. - Removed legacy config directory fallback (
gr) and legacy environment variable spellings (e.g.GR_AUTHOR,GR_PROMPT,GR_AGENT). - Sealing manifest file name changed to
.sdtsealed(from.grsealed); existing sealed repos may require migration.