Skip to content

Release 0.0.26 - #186

Merged
blooop merged 1 commit into
mainfrom
release/0.0.26
Aug 14, 2026
Merged

Release 0.0.26#186
blooop merged 1 commit into
mainfrom
release/0.0.26

Conversation

@blooop

@blooop blooop commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Version bump only — pyproject.toml, conda.recipe/recipe.yaml and the CHANGELOG.md section header, the same three files 0.0.24 (#175) and 0.0.25 (#177) touched.

Releases the work sitting on main past v0.0.25. The one that matters:

  • One directory for the guard, the listing and the delete (#174) #181 / #174dl <ws> rm could destroy unsaved work without ever asking for --force. The guard read the clone directory off local_path while the delete fell back to the derived path, so a stale record had the guard clearing an absent directory and the delete removing the one holding the work. Exit 0, nothing logged. All three readers — guard, delete, and dl --ls --json — now resolve through one WorkspaceCloneManager.resolve_clone_path, and a recorded path is honoured only when it is absolute, which closes the Path("") == Path(".") face of it that handed shutil.rmtree dl's own working directory.

Two user-facing changes merged past 0.0.25 without changelog entries of their own, so this PR writes them:

Also in, without notes: #178 and #179 (tests only), #156 and #161 (timing/updater, summarised under Changed), and two dependabot action bumps.

Goes out through the workflow chain rather than by hand, the way 0.0.25 did: merge to main → Auto-publish tags v0.0.26, creates the GitHub release from the changelog section and pushes to PyPI → Conda Publish sees the version change and uploads to prefix.dev/blooop. No tag or release is created manually.

🤖 Generated with Claude Code

Summary by Sourcery

Release version 0.0.26 with documented changes and safety fixes for workspace management.

New Features:

  • Introduce dl <workspace> dotfiles to refresh dotfiles in already-provisioned workspaces.
  • Add dl --prune to remove clone directories no longer used by any live workspace.

Bug Fixes:

  • Fix dl <ws> rm so it no longer risks deleting unsaved work or the tool’s own working directory without explicit force confirmation.

Enhancements:

  • Clarify the project’s direction by deferring the Rust rewrite and reaffirming Python as the ongoing implementation.
  • Improve launch and update timing visibility via detached interval fetching and an env-gated timing summary with benchmarking harness.

Build:

  • Bump project version to 0.0.26 in pyproject and conda recipe.

Carries the #174 fail-open delete fix (#181) — one directory now serves the
guard, the listing and the delete, and a recorded clone path is honoured only
when it is absolute, so an empty one can no longer hand `shutil.rmtree` dl's own
working directory.

Also releases `dl <workspace> dotfiles` (#44) and `dl --prune` (#159), which
merged past 0.0.25 without changelog entries of their own; this adds them.

Goes out through Auto-publish → Conda Publish, the same way 0.0.25 did: no tag
or GitHub release is created by hand.
@sourcery-ai

sourcery-ai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Reviewer's Guide

Version bump release 0.0.26 that updates packaging metadata and adds a detailed changelog section for the new release, including notes on recent feature additions, timing changes, and a critical workspace deletion fix.

File-Level Changes

Change Details Files
Document the 0.0.26 release and previously unrecorded changes, and restructure the Unreleased section to reflect the deferred Rust rewrite decision.
  • Replace the Unreleased section’s leading heading with narrative explaining that the Rust rewrite is deferred and Python remains the implementation.
  • Add explanation that previously deferred refactors and fixes are now back on the table since there is no planned cutoff.
  • Insert a new 0.0.26 section dated 2026-08-14 with Added/Changed/Fixed subsections summarising recent user-facing features, timing changes, and a critical deletion bug fix.
  • Move the Rust rewrite narrative from below into the new Unreleased introduction and ensure section order/heading consistency.
CHANGELOG.md
Capture new user-facing commands and behaviour changes introduced since 0.0.25 in the changelog.
  • Add an Added entry describing dl <workspace> dotfiles, including how it refreshes dotfiles in an already-provisioned workspace using chezmoi/pixi or a DOTFILES_URL fallback over devpod ssh, and that it auto-starts the workspace if not Running.
  • Add an Added entry documenting dl --prune [-y] [--force], clarifying it removes only clone directories that no live workspace opens, with a reference to issue dl --prune: remove clone directories no workspace references #159.
  • Add a Changed entry summarising launch and update timing changes: moving interval fetch into the detached updater and adding an env-gated timing summary plus median benchmark harness.
  • Retain and recontextualise the prior 0.0.24 lending entry clarification under Changed for continuity.
CHANGELOG.md
Clarify and document the fix for the unsafe dl <ws> rm behaviour that could delete unsaved work or the tool’s own working directory.
  • Add a Fixed entry explaining the mismatch between using local_path and a derived path for guard vs delete, and its impact on unsafely deleting the actual workspace directory with no logging.
  • Describe that guard, delete and dl --ls --json now resolve clone paths through WorkspaceCloneManager.resolve_clone_path for consistency.
  • Explain that WorktreeInfo.from_dict previously treated Path("") as Path("."), which passed existence checks and allowed shutil.rmtree to target dl’s own working directory, and note that recorded paths are now honoured only when absolute.
  • Provide issue link [The unsaved-work guard and the delete can name different directories #174] to tie the fix to the corresponding bug report.
CHANGELOG.md
Update project version metadata for the 0.0.26 release in both Python and Conda packaging configs.
  • Bump the project version from 0.0.25 to 0.0.26 in pyproject.toml’s [project] section.
  • Update the context.version field from "0.0.25" to "0.0.26" in the conda.recipe/recipe.yaml to match the new release version.
pyproject.toml
conda.recipe/recipe.yaml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@codecov

codecov Bot commented Aug 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.33%. Comparing base (dcdb077) to head (42414f0).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #186   +/-   ##
=======================================
  Coverage   95.33%   95.33%           
=======================================
  Files          22       22           
  Lines        3025     3025           
=======================================
  Hits         2884     2884           
  Misses        141      141           

Impacted file tree graph

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@blooop
blooop merged commit 333e447 into main Aug 14, 2026
12 checks passed
@blooop
blooop deleted the release/0.0.26 branch August 14, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant