Releases: jetify-com/devbox
0.13.0
What's new in this release
0.13.0 is a major release, with several enhancements to improve the Python development experience with Devbox.
[Python] Autopatching Native Libraries
This release includes an experimental feature that automatically patches Python interpreters to load native libraries installed in your Devbox Shell, without needing to set LD_LIBRARY_PATH
. This makes it easier to create Devbox shells for projects with Python Packages that use native extensions. Additionally, Devbox will automatically install native libraries that are commonly used by Python packages, such as zlib
and openssl
. This feature can be disabled with devbox add <python-package> --patch never
This release automatically enables patching for Python interepreters, but it can be enabled for any package (such as Ruby) using devbox add <pkg> --patch always
.
[Python] Plugin + Virtual Environment improvements
When you launch Python, our plugin now defaults to putting your virtual environment in $DEVBOX_PROJECT_ROOT/.venv. This provides better compatibility with IDEs and Language Extensions that expect Python to be in your project root. The plugin also sets a UV_PYTHON
environment variable to improve compatibility with the uv
package manager.
You can manage where Devbox sets up your .venv directory by setting the $VENV_DIR environment variable in your devbox.json.
Special thanks to @djgoku for contributing fixes to this feature!
[Services] devbox services attach
and better backgrounding
Starting Devbox services in the background with devbox services up -b
now runs process-compose as a detached process in the background, meaning it will stay alive even if your terminal exits or crashes. You can attach the process-compose TUI to the backgrounded process with devbox services attach
, and exiting the TUI will leave process-compose running in the background.
To stop the backgrounded process, you can use devbox services stop
.
This release also upgrades the default process-compose to 1.24.2, which has several reliability and performance improvements.
Other Features
- Devbox can now automatically parse and add secrets from your dotenv files. To have Devbox load your dotenv files automatically, add the dotenv file to
env_from
in your devbox.json - Devbox now includes a builtin plugins for Valkey, a drop-in Redis Replacement. Special thanks to @captainseeker for contributing!
- Added a
DEVBOX_WD
environment variable that maps to the working directory where you ran a script. This variable is useful if you want to run scripts that act on your current working directory, instead of the Devbox project's root directory - Devbox's direnv integration now watched devbox.lock for changes, and updates your environment. Thanks to @mjgallag for contributing!
- Added missing/required properties to the devbox-plugin-schema.json. Thanks to @svallory for contributing!
Full Changelog
- [docs] json format fix of configuration.md by @yocoldle in #2168
- [i18n/kr]: Update README-ko-KR.md by @tianyeeT in #2152
- [i18n/zh-cn]: Update README-zh-CN.md by @tianyeeT in #2151
- (Examples - Databases - PostgreSQL) Add more info about configuring the database by @rafaelfess in #2156
- [ux] Improve refresh messaging by @mikeland73 in #2173
- [devbox.json] support env_from dotenv files by @mohsenari in #2174
- Used go-envparse to parse .env files by @mohsenari in #2177
- [example] add R example by @ignatiusm in #2183
- internal/devconfig: move project directory search into
devbox.Find
by @gcurtis in #2172 - [lockfile] Fix built-in plugin issues by @mikeland73 in #2189
- Update apache example with proper start command for jetify cloud by @LucilleH in #2198
- Add build and start command to nginx server example by @LucilleH in #2199
- searcher: set custom user agent in search client by @gcurtis in #2203
- Change the caddy example port to 8080 by @LucilleH in #2206
- Initial Nixhub docs by @Lagoja in #2186
- Add Valkey Plugin by @captainseeker in #2154
- fix permissions and build issues by @Lagoja in #2219
- Bump semver and postman-code-generators in /docs/app by @dependabot in #2208
- [envars] Add DEVBOX_WD env var by @mikeland73 in #2220
- fix: devbox-plugin.schema.json required properties by @svallory in #2221
- [pkg] Update pkg deps by @mikeland73 in #2225
- testscripts: python tests for numpy and psycopg2 by @gcurtis in #2214
- git: add .gitattributes and remove trace.out by @gcurtis in #2228
- all: upgrade to Go 1.23.0 by @gcurtis in #2229
- fix: make direnv watch devbox.lock by @mjgallag in #2233
- patchpkg: start moving glibc-patch.bash to Go by @gcurtis in #2237
- testscripts: better caching with Docker by @gcurtis in #2245
- patchpkg:
lookPath
helper to find nix binaries by @gcurtis in #2247 - patchpkg: add packageFS to handle store paths by @gcurtis in #2246
- Nixhub Links by @Lagoja in #2218
- add information on disabling plugins by @Lagoja in #2232
- patchpkg: port ELF patching to Go and use RPATH by @gcurtis in #2248
- patchpkg: restore removed refs to build deps by @gcurtis in #2249
- Fix plugin placeholder docs by @Lagoja in #2254
- devpkg: auto-patch python by @gcurtis in #2250
- testscripts: skip (known) failing tests on darwin by @gcurtis in #2256
- patchpkg: patch missing Python refs on darwin by @gcurtis in #2258
- [Python] Change
.venv
script to be more compatible with IDEs by @Lagoja in #2259 - [Python] Venv tweaks based on testing in Sandboxes by @Lagoja in #2264
- Chore/switch pip plugin reference to python by @djgoku in #2265
- [Services] Keep Process Compose alive in background, add
attach
command by @Lagoja in #2269 - [pc-version] Bump process compose to 1.24.2 by @mikeland73 in #2276
- patchpkg: patch libstdc++ by @gcurtis in #2271
- devpkg: fix empty patch mode by @gcurtis in #2278
New Contributors
- @yocoldle made their first contribution in #2168
- @tianyeeT made their first contribution in #2152
- @rafaelfess made their first contribution in #2156
- @ignatiusm made their first contribution in #2183
- @captainseeker made their first contribution in #2154
- @svallory made their first contribution in #2221
- @mjgallag made their first contribution in #2233
- @djgoku made their first contribution in #2265
Full Changelog: 0.12.0...0.13.0
0.13.0-devrc
What's new in this Release
Process Compose Updates
Process compose is now updated to v1.24.2, which should provide more stability and includes several new features. The release also adds the devbox services attach
command, which lets you re-attach to process compose while it is running in the background
Other fixes
- Improvements to Python plugin
- Bug fixes for Python auto-patching
Changelog
- b9c5173 devpkg: fix empty patch mode (#2278)
- 9da62f6 patchpkg: patch libstdc++ (#2271)
- 1b918e7 [pc-version] Bump process compose to 1.24.2 (#2276)
- 3ac5262 [Services] Keep Process Compose alive in background, add
attach
command (#2269) - df187b9 Chore/switch pip plugin reference to python (#2265)
- d1ab641 [Python] Venv tweaks based on testing in Sandboxes (#2264)
0.13.0-deva
What's new in This Pre-release
[Python] Plugin will now create .venv
in your project root by default
When you launch Python, our plugin now defaults to putting your virtual environment in $DEVBOX_PROJECT_ROOT/.venv
. This provides better compatibility with IDEs and Language Extensions that expect Python to be in your project root.
You can manage where Devbox sets up your .venv
directory by setting the $VENV_DIR
environment variable in your devbox.json
Other Fixes
- Devbox now automatically installs common native libraries used by Python on Darwin.
Changelog
0.13.0-dev
New in this Pre-release
Autopatching Python w/ Native Libraries
This release includes an experimental feature that automatically patches Python interpreters to load native libraries installed in your Devbox Shell, without needing to set LD_LIBRARY_PATH
. This makes it easier to create Devbox shells for projects with Python Packages that use native extensions. Additionally, Devbox will automatically install native libraries that are commonly used by Python packages, such as zlib
and openssl
. This feature is currently enabled for Linux only, and can be disabled with devbox add <python-package> --patch never
This release automatically enables patching for Python interepreters, but it can be enabled for any package (such as Ruby) using devbox add <pkg> --patch always
.
Other new Features
- Devbox can now automatically parse and add secrets from your dotenv files. To have Devbox load your dotenv files automatically, add the dotenv file to
from_env
in yourdevbox.json
- Added a builtin plugins for Valkey, a drop-in Redis Replacement
- Added a DEVBOX_WD environment variable that maps to the working directory where you ran a script. This variable is useful if you want to run scripts that act on your current working directory, instead of the Devbox project's root directory
Bug Fixes
- Devbox's direnv integration now watched
devbox.lock
for changes, and updates your environment - Added missing/required properties to the
devbox-plugin-schema.json
- Various fixes to docs and examples
Changelog
- afa6187 testscripts: skip (known) failing tests on darwin (#2256)
- 74f4a2a devpkg: auto-patch python (#2250)
- 6881453 Fix plugin placeholder docs (#2254)
- 226349a patchpkg: restore removed refs to build deps (#2249)
- e308235 patchpkg: port ELF patching to Go and use RPATH (#2248)
- 4677feb add information on disabling plugins (#2232)
- 59a067c Nixhub Links (#2218)
- 295b26b patchpkg: add packageFS to handle store paths (#2246)
- 38b8144 patchpkg:
lookPath
helper to find nix binaries (#2247) - 0fdfc67 testscripts: better caching with Docker (#2245)
- 8c30551 patchpkg: start moving glibc-patch.bash to Go (#2237)
- 8d48e38 fix: make direnv watch devbox.lock (#2233)
- 33b9553 all: upgrade to Go 1.23.0 (#2229)
- 495cb07 git: add .gitattributes and remove trace.out (#2228)
- d94c3da testscripts: python tests for numpy and psycopg2 (#2214)
- 245b33a [pkg] Update pkg deps (#2225)
- 07b1a06 fix: devbox-plugin.schema.json required properties (#2221)
- f8149e7 [envars] Add DEVBOX_WD env var (#2220)
- 0623b13 Bump semver and postman-code-generators in /docs/app (#2208)
- ede7606 fix permissions and build issues (#2219)
- fd82154 Add Valkey Plugin (#2154)
- 31361ee Initial Nixhub docs (#2186)
- 48884c0 Change the caddy example port to 8080 (#2206)
- 7aea78a searcher: set custom user agent in search client (#2203)
- a966ac0 Add build and start command to nginx server example (#2199)
- 5822fa5 Update apache example with proper start command for jetify cloud (#2198)
- ce17002 [lockfile] Fix built-in plugin issues (#2189)
- 7855f96 internal/devconfig: move project directory search into
devbox.Find
(#2172) - 56ba0c1 [example] add R example (#2183)
- 94de0d6 Used go-envparse to parse .env files (#2177)
- 1252033 [devbox.json] support env_from dotenv files (#2174)
- 7d7741b [ux] Improve refresh messaging (#2173)
- 328d0b8 (Examples - Databases - PostgreSQL) Add more info about configuring the database (#2156)
- 5fe9e30 [i18n/zh-cn]: Update README-zh-CN.md (#2151)
- 2b06703 [i18n/kr]: Update README-ko-KR.md (#2152)
- 43354db [docs] json format fix of configuration.md (#2168)
0.12.0
What's new in this Release
Devbox Run Improvements
devbox run
will no longer re-run init_hooks
or attempt to recreate the shell environment if it is already running in a devbox shell environment. Implications of this change are:
- If you start a shell, and then run a script with
devbox run
, the script will not re-run the init_hook or recreate the environment - If you run a devbox script inside another devbox script, the
init_hook
and shell setup will only happen once.
Devbox Global Improvements
Devbox Global has been updated to no longer set Nix environment variables or stdenv packages in your global path. This provides a cleaner environment for your Devbox packages, without interfering with the tooling installed on your host
- Previous versions of Devbox Global would set it's own versions of packages like
gcc
,ld
, andclang
at the top of your global path, which could break system build tools. This version will no longer set those packages in your path - Previous versions of Devbox Global would set variables like PYTHONPATH, which could override and cause issues with your host Python interpreter or other Python based binaries. This version will no longer set those variables
- Note: This change may cause certain libraries or packages to stop working with Devbox Global. If you need these packages to continue working, you can add
--omit-nix-env=false
to the invocation in your shellrc:eval "$(devbox global shellenv --init_hooks --omit-nix-env=false)"
devbox cache enable
You can now enable the Jetify Prebuilt Cache right from command line by running devbox cache enable
. Running this command will let you login or create a free Jetify Cloud account from your browser, and then configure Nix on your system to use the cache.
What's Changed
- [docker] fix docker release image by @mohsenari in #2136
- [Remove Nixpkgs] remove feature flag by @savil in #2142
- [RFC][Devbox] computeEnv: remove __ETC_PROFILE_NIX_SOURCED=1 by @savil in #2147
- [docker] Added steps for latest tag for devbox & devbox-root by @mohsenari in #2146
- [devbox] run: skip re-computing Devbox State if in devbox shell by @savil in #2144
- Update README.md by @Lagoja in #2158
- Bump braces from 3.0.2 to 3.0.3 in /vscode-extension by @dependabot in #2145
- [easy][lock-tidy] Don't tidy flakes by @mikeland73 in #2162
- Bump braces from 3.0.2 to 3.0.3 in /docs/app by @dependabot in #2163
- [devbox global] add
--omit-nix-env
flag for shellenv/shell/run commands by @savil in #2150 - [Devbox] introduce devopt.EnvOptions by @savil in #2159
- [Devbox services] move functions to services.go, and improve runDevboxServicesScript by @savil in #2164
- boxcli: devbox cache enable by @gcurtis in #2157
- [lock-tidy] Put warning behind feature flag by @mikeland73 in #2171
Full Changelog: 0.11.1...0.12.0
0.12.0-devb
What's new in this release
- Fix excessive
tidy lockfile
warnings - Add
devbox cache enable
command
Changelog
0.12.0-deva
What's new in this prerelease
Init Hook Improvements
devbox run will no longer re-run init_hooks or attempt to recreate the shell environment if it is already running in a devbox shell environment. Implications of this change are:
- If you start a shell, and then run a script with devbox run, the script will not re-run the init_hook or recreate the environment
- If you run a devbox script inside another devbox script, the init_hook and shell setup will only happen once.
Devbox Global improvements
Devbox Global has been updated to no longer set Nix environment variables or stdenv packages in your global path. This should allow package and tools to work well with Devbox Global, without interfering with the tooling installed on your host
-
Previous versions of Devbox Global would set it's own versions of packages like
gcc
,ld
, andclang
at the top of your global path, which could break system build tools. This version will no longer set those packages in your path -
Previous versions of Devbox Global would set variables like PYTHONPATH, which could override and cause issues with your host Python interpreter or other Python based binaries. This version will no longer set those variables
-
Note: This change may cause certain libraries or packages to stop working with Devbox Global. If you need these packages to continue working, you can add
--omit-nix-env=false
to the invocation in your shellrc:eval "$(devbox global shellenv --init_hooks --omit-nix-env=false)"
Bug Fixes
Fixed a bug where Devbox was improperly trying to tidy the lockfile for flakes.
Changelog
- 1573ae8 [Devbox] introduce devopt.EnvOptions (#2159)
- f0a562e [devbox global] add
--omit-nix-env
flag for shellenv/shell/run commands (#2150) - f44b799 Bump braces from 3.0.2 to 3.0.3 in /docs/app (#2163)
- b98a852 [easy][lock-tidy] Don't tidy flakes (#2162)
- 65d27cf Bump braces from 3.0.2 to 3.0.3 in /vscode-extension (#2145)
- 1b5eafa Update README.md (#2158)
0.12.0-dev
What's new in this pre-release
devbox run
will no longer re-run init_hooks
or attempt to recreate the shell environment if it is already running in a devbox shell environment. Implications of this change are:
- If you start a shell, and then run a script with
devbox run
, the script will not re-run the init_hook or recreate the environment - If you run a devbox script inside another devbox script, the
init_hook
and shell setup will only happen once.
Changelog
- 2b0decf [devbox] run: skip re-computing Devbox State if in devbox shell (#2144)
- b9cf6c4 [docker] Added steps for latest tag for devbox & devbox-root (#2146)
- d9c9f17 [RFC][Devbox] computeEnv: remove __ETC_PROFILE_NIX_SOURCED=1 (#2147)
- 3aac497 [Remove Nixpkgs] remove feature flag (#2142)
- 6549b43 [docker] fix docker release image (#2136)
0.11.1
What's new in this pre-release
devbox cache
support in the CLI
Version 0.11 of devbox and newer can now use Devbox Cache when logged in with a Jetify Cloud account. Jetify Cache includes a private cache for your own custom packages and flakes, as well as a Prebuilt Cache that expands on the public Nix Cache.
Visit our docs to learn more about how to setup a cache with Jetify Cloud. You can also view the CLI cache commands using devbox cache --help
Startup Performance:
- Devbox can now detect if your project is missing store paths, and then prompt you to backfill them. This speeds up package installation by letting us pull packages directly from the cache.
- To update your storepaths, run
devbox install --tidy-lockfile
- To update your storepaths, run
- All packages are installed in a single Nix command, rather than sequentially in individual Nix commands
Process Compose
- Added a new
--pcflags
option so you can pass flags directly to Process Compose when starting your services. For example:- You can run a namespace using `devbox services up --pcflags "-n=my-namespace"
- You can change the process-compose servers port using `devbox services up --pcflags "-p=3003"
- Process compose is now installed via Nixpkgs, meaning we can take advantage of caching
Other fixes
- Added an optional name + description field to the
devbox.json
schema - Updates to docs and error commands
Special thanks to:
- @iamdejan, @savtrip, @unscrew, @vhsantos
- Extra special thanks to @unscrew for translating our README.md to Korean!
Full Changelog
- Add new --pcflags option to devbox services up by @josh-d2 in #2111
- [docs] update the quickstart guide by @iamdejan in #2004
- [docker] Added fix to run image release on tags creation + backfill action by @mohsenari in #2118
- all: update dependencies by @gcurtis in #2126
- examples/stacks/rails/blog: update dependencies by @gcurtis in #2127
- [perf] Add flag to fix missing store paths by @mikeland73 in #2102
- Moved process-compose into a generic utilities Devbox project by @josh-d2 in #2122
- internal/nix: improve command error handling by @gcurtis in #2125
- Update direnv.md by @savtrip in #2110
- internal/nix: fix version comparison for prerelease versions by @gcurtis in #2131
- all: use log/slog for debug logs by @gcurtis in #2132
- [easy] devbox docs: direnv, remove warning about 0.5.0 breaking change by @savil in #2134
- [perf] Install all packages to profile in a single nix command by @mikeland73 in #2130
- [Docs] Move cloud docs to main docs by @Lagoja in #2049
- Update Images by @Lagoja in #2140
- docs: add translation of README - Korean version by @unscrew in #2139
- Add name/description to devbox json schema. by @vhsantos in #2092
- internal/nix: log all command starts and exits by @gcurtis in #2135
- [CI] Update go-releaser action by @Lagoja in #2143
New Contributors
- @iamdejan made their first contribution in #2004
- @savtrip made their first contribution in #2110
- @unscrew made their first contribution in #2139
- @vhsantos made their first contribution in #2092
Full Changelog: 0.11.0...0.11.1
0.11.1-dev
What's new in this pre-release
devbox cache
support in the CLI
Version 0.11 of devbox and newer can now use Devbox Cache when logged in with a Jetify Cloud account. Jetify Cache includes a private cache for your own custom packages and flakes, as well as a Prebuilt Cache that expands on the public Nix Cache. Visit our docs to learn more about how to setup a cache with Jetify Cloud
Startup Performance:
- Devbox can now detect if your project is missing store paths, and then prompt you to backfill them. This speeds up package installation by letting us pull packages directly from the cache.
- All packges are installed in a single Nix command, rather than sequentially in individual Nix commands
Process Compose
- Added a new
--pcflags
option so you can pass flags directly to Process Compose when starting your services - Process compose is now installed via Nixpkgs, meaning we can take advantage of caching
Other fixes
- Added an optional name + description field to the
devbox.json
schema - Updates to docs and error commands
Changelog
- 6aebe96 [CI] Update go-releaser action (#2143)
- 1bc2a30 internal/nix: log all command starts and exits (#2135)
- 10b7bcc Add name/description to devbox json schema. (#2092)
- ef1e4c9 docs: add translation of README - Korean version (#2139)
- 2daf33d Update Images (#2140)
- 815ff11 [Docs] Move cloud docs to main docs (#2049)
- 5326d5b [perf] Install all packages to profile in a single nix command (#2130)
- b62b346 [easy] devbox docs: direnv, remove warning about 0.5.0 breaking change (#2134)
- 70aa55e all: use log/slog for debug logs (#2132)
- 64d3fd5 internal/nix: fix version comparison for prerelease versions (#2131)
- 8382061 Update direnv.md (#2110)
- f4a7589 internal/nix: improve command error handling (#2125)
- b8ef803 Moved process-compose into a generic utilities Devbox project (#2122)
- 3bb13c1 [perf] Add flag to fix missing store paths (#2102)
- a1f4f40 examples/stacks/rails/blog: update dependencies (#2127)
- f54bb09 all: update dependencies (#2126)
- c74320c [docker] Added fix to run image release on tags creation + backfill action (#2118)
- f52d2b8 [docs] update the quickstart guide (#2004)
- 8e53b0c Add new --pcflags option to devbox services up (#2111)