Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.0.11] - 2026-08-08

This completes the review that ran across [#51](https://github.com/blooop/devlaunch/issues/51):
seven targeted fixes to performance, correctness and maintainability, of which six
shipped in 0.0.10 and the cache migration lands here. It is also intended to be the
last release of the Python implementation — the successor is a Rust rewrite whose core
becomes a library shared with [blooop/wayfinder](https://github.com/blooop/wayfinder),
decided in [#53](https://github.com/blooop/devlaunch/issues/53). Nothing about how you
install or run `dl` changes in this release.

### Changed
- Existing caches are migrated onto the new workspace id scheme once, by the first
command that touches a workspace. Clone directories are renamed in place —
Expand Down Expand Up @@ -43,6 +53,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`aid --version` inherits it.

### Fixed
- A corrupt `~/.cache/devlaunch/metadata.json` no longer takes down every `dl`
command, `dl --help` included. It used to raise while the storage object was being
built, before any command ran. An unreadable file is now moved aside to
`metadata.json.corrupt` and dl starts with empty metadata; a single malformed entry
is skipped rather than costing the whole file; and any load that would drop
information — a skipped entry, a field only a newer build knows about, a newer
schema version — copies the original to `metadata.json.bak` before the next write
can overwrite it, and says so. Saving is atomic, writes through a symlinked
`metadata.json` rather than replacing the link, and preserves the file's mode.
The file gains a `version` key.
- `dl` says so when devpod is not installed, instead of printing a
`FileNotFoundError` traceback. One line naming the install page, and exit `127` —
the shell's own "command not found" code. `dl --help` and `dl --version` keep
working without devpod, and the completion commands leave stdout empty, since that
is what the shell parses.
- `dl <repo> -- <cmd>` runs its command in a login shell, so it gets the same
`PATH` an interactive `dl <repo>` attach gets. devpod runs a `--command` payload
under a non-login, non-interactive `bash -c`, which sources neither `~/.profile`
Expand Down
2 changes: 1 addition & 1 deletion conda.recipe/recipe.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema_version: 1

context:
version: "0.0.10"
version: "0.0.11"

package:
name: devlaunch
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "devlaunch"
version = "0.0.10"
version = "0.0.11"
authors = [{ name = "Austin Gregg-Smith", email = "blooop@gmail.com" }]
description = "DevLaunch - A streamlined CLI for devpod workspaces"
readme = "README.md"
Expand Down
Loading