Bug Fixes
- Fixed
filesand other task-based features not working via direnv in devenv v2 becausedevenv direnv-exportdid not run enterShell tasks (#2602). - Fixed
devenv shellhanging in certain CI environments by requiring both stdin and stdout to be a real terminal before launching the PTY reload shell (#2597). - Added a timeout to the terminal cursor position query to prevent hangs in PTY environments that don't respond to DSR queries.
- Fixed process dependencies not being respected in the native process manager (#2554).
- Fixed
execIfModifiedtask cache not invalidating when a previously watched file is deleted, renamed, or moved outside the glob pattern (#2577). - Fixed task exports (e.g.
VIRTUAL_ENV,PATHfrom venv) not being set in the reload shell. - Fixed port allocation not detecting ports bound to
0.0.0.0or[::], causing multiple devenv instances to allocate the same port (#2567). - Fixed cursor position requests not being passed through in the shell (#2570).
- Fixed "Threads explicit registering is not previously enabled" crash on some Nix versions by calling
GC_allow_register_threads()afterlibexpr_init()(#2576). - Fixed
-O packages:pkgscausing infinite recursion by using NixOS module system merging instead of self-referencingconfig.packages. - Fixed
--cleanshell environment capture keeping all host variables except the keep list (inverted filter). - Fixed
devenv searchoutput being drawn directly to stdout over the TUI. - Fixed the shell not forwarding several terminal escape sequences (DA2, DA3, XTVERSION, DCS, DECRQM, Kitty keyboard protocol, XTMODIFYOTHERKEYS, mouse modes, and color scheme reporting), which broke TUI programs like neovim and helix.
- Fixed the shell not cleaning up Kitty keyboard protocol and XTMODIFYOTHERKEYS state on exit, which left the terminal in a broken state after a program crash.
- Fixed the shell not sending in-band resize notifications (mode 2048) through the PTY, which caused programs that rely on this protocol to miss resize events.
- Fixed the shell forwarding text area size queries (CSI 18 t) to the real terminal, which returned incorrect dimensions that included the status line row.
- Fixed the devenv main thread and REPL thread using the default stack size instead of 64MB, which could cause stack overflows during deep Nix evaluations.
- Fixed TUI sometimes overwriting the shell prompt/command line after commands like
devenv update, caused by cancelling iocraft's render loop mid-frame.
Improvements
- Added
strictPortsoption todevenv.yamlfor configuring strict port mode as a project default, along with--no-strict-portsCLI flag to override it (#2606). - Bumped secretspec to 0.8.0 and enabled all provider features (Google Cloud Secret Manager, AWS Secrets Manager, HashiCorp Vault).
- Replaced stdout based
DEVENV_EXPORT:protocol in tasks with file based exports ($DEVENV_TASK_EXPORTS_FILE), simplifying the encoding and moving JSON construction into Rust. - Task exports are now always produced, including when a task is skipped via its
statuscommand. - Validation errors for
@readyprocess dependencies now include a link to the documentation.
Breaking Changes
- Removed
devenv-tasks exportsubcommand, replaced by file-based exports via$DEVENV_TASK_EXPORTS_FILE.