Releases: jetify-com/devbox
0.3.3
This release fixes an issue that could cause Devbox Cloud connections from the CLI to fail sporadically.
Changelog
- 98bd57a [cloud] Add retry when trying to connect to cloud vm for first time (#581)
- 9761a9a Mark some more errors as user errors (#578)
- 989335f fix golang testdata (#577)
- 4b85f85 Change README badge to use the Quickstart Example (#575)
- bc6cbd9 fix typo on Nim docs (#567)
- 9664991 Add Tabs and SVG (#573)
- e1c1281 [telemetry] update event name and change is_cloud to shell_access kind (#562)
0.3.3-dev
[CICD] Install smaller package in tests (#571) ## Summary Experimenting to see if this speeds up tests, especially on macos ## How was it tested? CICD
0.3.2: Introducing Devbox Cloud
This release adds support for the Devbox Cloud Open Beta.
Announcing Devbox Cloud
Devbox Cloud is a new way to create and run your Devbox Project in an isolated cloud environment. Devbox Cloud let's you quickly spin up an on-demand Linux Edge VM with your Devbox dependencies and shell, using either a local project or your browser.
Learn more about Devbox Cloud
Launch a Devbox Cloud Shell from the CLI
You can now run Devbox projects in a Cloud VM by running devbox cloud shell
in the same directory as your devbox.json
file. This will launch a Cloud VM, sync your local files, and create a devbox shell session on the remote machine. Your local files are kept in sync with the cloud shell, meaning you can use your own tools to edit and develop your project.
Learn more about Devbox Cloud in your Terminal
Launch a Devbox Cloud Shell in your Browser with Devbox.sh
You can also open any Github project in Devbox Cloud via Devbox.sh. Simply prefix any Github repo with https://devbox.sh
to open it in a Cloud Shell. If the project has a devbox.json
in the root directory, Devbox will also install your packages and initialize your devbox shell.
Learn more about Devbox Cloud in your Brower
Devbox Cloud is Available as a Free Open Beta
Devbox Cloud is currently in Open Beta, and is free to use for anyone with a Github Account. To learn more about the Devbox Open Beta, visit the FAQ in our docs.
Fixes since 0.3.0
Fixes a possible UX issue in devbox cloud when ssh keys are password protected and password is not cached or stored in local keychain
0.3.0: Introducing Devbox Cloud
This release adds support for the Devbox Cloud Open Beta.
Announcing Devbox Cloud
Devbox Cloud is a new way to create and run your Devbox Project in an isolated cloud environment. Devbox Cloud let's you quickly spin up an on-demand Linux Edge VM with your Devbox dependencies and shell, using either a local project or your browser.
Learn more about Devbox Cloud
Launch a Devbox Cloud Shell from the CLI
You can now run Devbox projects in a Cloud VM by running devbox cloud shell
in the same directory as your devbox.json
file. This will launch a Cloud VM, sync your local files, and create a devbox shell session on the remote machine. Your local files are kept in sync with the cloud shell, meaning you can use your own tools to edit and develop your project.
Learn more about Devbox Cloud in your Terminal
Launch a Devbox Cloud Shell in your Browser with Devbox.sh
You can also open any Github project in Devbox Cloud via Devbox.sh. Simply prefix any Github repo with https://devbox.sh
to open it in a Cloud Shell. If the project has a devbox.json
in the root directory, Devbox will also install your packages and initialize your devbox shell.
Learn more about Devbox Cloud in your Brower
Devbox Cloud is Available as a Free Open Beta
Devbox Cloud is currently in Open Beta, and is free to use for anyone with a Github Account. To learn more about the Devbox Open Beta, visit the FAQ in our docs.
0.2.4
This release contains the following bug fixes and improvements:
- More reliable sourcing for Nix binaries, which should reduce some issues where Devbox can't find Nix in your Path
- Improved Install and Error UI + Logging
- Improved performance when running
devbox info
What's Changed
- First pass at testing using testscripts by @loreto in #526
- [tiny] Improve format of generated nix files by @ipince in #528
- Hook up devbox to testscripts by @loreto in #531
- [cloud shell] prevent cloud-shell-inception by @savil in #532
- Do not shell quote environment variables by @ipince in #529
- [minor polish] add space before y/n in question by @savil in #534
- [flakes] respect nixpkgs commit hash by @savil in #535
- [cloud] Add preview wording by @mikeland86 in #537
- delete unused runtime.nix template by @savil in #536
- Update docs to load new devbox landing page by @LucilleH in #530
- [cleanup] remove overlays code from generated nix files by @savil in #538
- Remove unused profile bin dir in shellrc template by @ipince in #541
- Move xdg functions into its own package by @loreto in #542
- plansdk: default nixpkgs -> f80ac84 by @gcurtis in #544
- [flakes] add flakes.nix to git only if we are in a git repo by @savil in #539
- Bump ua-parser-js from 0.7.32 to 0.7.33 in /docs/app by @dependabot in #527
- [tests] relocated test files from
examples/testdata
tointernal/boxcli
by @mohsenari in #540 - [nix] Don't indent output in ensure mode by @mikeland86 in #546
- Improve Nix Sourcing by @loreto in #543
- [polish] capitalize the default answer in direnv integration question by @savil in #545
- [easy][nix] Add ensure message by @mikeland86 in #552
- [cloud] Improve cloud shell error messages by @mikeland86 in #548
- [perf] Make PkgInfo faster by using non-flakes lookup by @mikeland86 in #553
- [sshshim] re-try 3 times for finding activeVM by @savil in #554
- [sshshim] persist debug file output with size limit by @savil in #549
- small grammar fix in testscript README by @savil in #533
- [GHA] Bump versions, create daily golangci-lint cache by @mikeland86 in #556
- [gha] Run tests on main by @mikeland86 in #558
- Add testscripts that tests installing 'hello' by @loreto in #547
- Fix URLs for badges in Quickstart by @Lagoja in #560
Full Changelog: 0.2.3...0.2.4
0.2.3
This release contains the following bug fixes and improvements:
- If a Nix package fails to install, Devbox will no longer add that package to your
devbox.json
- UX tweaks on Devbox commands that install Nix packages
- Improvements to Nix Installation UX and reliability
What's Changed
- Prevent shell inception in cloud shell by @savil in #469
- nix: wait for pipe read to finish before cmd.Wait by @gcurtis in #470
- [CICD] add devbox install nix action in cicd, change release workflow by @LucilleH in #425
- [nix] Improve nix install, add --daemon flag by @mikeland86 in #471
- Experimental impl of nixless shell by @ipince in #457
- Remove redundant debug output by @ipince in #474
- [polish] Minor polish on help text by @ipince in #475
- [cloud telemetry] part 1: derive userId from githubUsername, and identifyUser by @savil in #472
- [cloud telemetry] part 2: add 'cloud_region' property to segment by @savil in #473
- [cloud] remove log.Fatal in favor of returning the error by @savil in #476
- [cuecfg] Don't HTML escape json by @mikeland86 in #477
- Jl/cicd docs by @Lagoja in #480
- [cloud] add shell time-to-interactive segment event by @savil in #479
- removed unused params from Config by @mohsenari in #483
- [cleanup] Removed test for shell plan should have devPackages by @mohsenari in #484
- [telemetry] Don't log user errors to Sentry by @mikeland86 in #485
- [readme] Fix link by @mikeland86 in #487
- [plugins] Change default nginx port to a non-privileged port by @mikeland86 in #488
- Implement stricter "devbox run" using "nix print-dev-env" by @ipince in #482
- [shell] do not return error if it was a user shell command or script by @savil in #489
- [test] New testing framework to easily test devbox commands and examples by @mohsenari in #481
- [port forward] terminate port-fwd sessions if VM is not active by @savil in #494
- move stepper package location to outside cloud directory by @savil in #495
- Allow devbox run to accept script args by @ipince in #492
- devbox run can run arbitrary commands by @ipince in #493
- [forward] Rename port-forward to forward and simplify API by @mikeland86 in #497
- Clean up old script files by @ipince in #499
- impl: allow nixpkgs URL to be set with DEVBOX_NIXPKGS_URL by @gcurtis in #501
- Disallow script names with whitespace in them by @ipince in #500
- Allow limited set of vars to leak into devbox run env by @ipince in #498
- bugfix: use correct script filename by @ipince in #504
- Flip swich on strict devbox run feature flag by @ipince in #503
- Add deprecation warning on shell -- cmd by @ipince in #502
- [install UX] show incremental progress by @savil in #491
- Use same impl for devbox run in shell or out by @ipince in #505
- [install UX] incrementally show the output in-line by @savil in #506
- [stepper] respect the io.Writer used in impl/devbox.go by @savil in #507
- [install UX] go back to using development.nix by @savil in #512
- [test] additional tests for devbox init and run by @mohsenari in #516
- [nix] Filter out 'devbox-development' messages by @mikeland86 in #518
- [devbox cloud] require git in home and fs-root dirs to use as devbox project dir by @savil in #522
- Revert "Add deprecation warning on shell -- cmd (#502)" by @ipince in #520
- Unflip strict run feature flag by @ipince in #519
- [devbox cloud] remove sshshim gate by @savil in #523
- [nix] Improve output in ensurePackagesAreInstalled by @mikeland86 in #524
- plansdk: use nixpkgs mirror when in cloud VM by @gcurtis in #521
- [nix] Don't add bad package to devbox.json by @mikeland86 in #525
Full Changelog: 0.2.2...0.2.4
0.2.2
This release contains the following bug fixes:
- Fixed a bug that cause our Direnv integration to not register environment variables set by plugins
- Fixed a bug that caused
devbox shell
anddevbox run
to in some Linux distributions
Changelog
0.2.2-dev
0.2.2 Pre-release
0.2.1: Fish Support, Caddy + Redis plugins, Direnv and More
What's new in 0.2.1
This release contains a several bug fixes, improvements and user requests from our last release. In addition to various workflow improvments, it adds shell support for Fish, new Devbox Plugins for Caddy + Redis, and much more
Thank you to everyone who filed issues and contributed to the release!
Changes
- Fish Support!
- Developers who use Fish can now start
devbox shell
, execute scripts withdevbox run
, and start services usingdevbox services start
- This should address Issue #401
- Developers who use Fish can now start
- New Plugins
- Plugin Improvement:
postgresql
now uses PGHOST to set a local Linux Socket
- Direnv Integration Improvements
- We now generate a .envrc file on init, and will prompt you to activate direnv if we detect it on your system.
- Our .envrc file can now set environment variables from plugins.
- Other reliability improvements
- Addresses Issue #408
- Bash + devbox run
- Fixed a bug that kept bash users from running devbox scripts
- Addresses issue #402
- Fixed a bug that kept bash users from running devbox scripts
- Set
allowUnfree=true
by default. This allows developers to install packages with unfree licenses in Nixpkgs.- Addresses issue #409
- Devbox will now look for Nix binaries using an absolute path, instead of $PATH.
- Quiet mode
- Turn off Devbox's status logging when running
devbox shell
ordevbox run
using the--quiet
flag- Addresses issue #406
- Turn off Devbox's status logging when running
What's Changed
- [cloud shell polish] query Github to get username by @savil in #390
- Updated docs for 0.2.0 by @Lagoja in #393
- [docs] Update "Installing Devbox" instructions. by @mikenikles in #395
- [nix] Don't install nix if its already installed DEV-1261 by @mikeland86 in #397
- [cloud] scp devbox.json to VM, prior to syncing by @savil in #398
- [cloud VM] prototype updating mutagen status in starship prompt by @savil in #399
- [cloud] set ssh ControlPath and use it to detect existing VM Host by @savil in #418
- Add basic Caddy plugin by @Lagoja in #415
- Add Redis Plugin by @Lagoja in #413
- [polish] simplify the starship prompt for mutagen status by @savil in #421
- [planner] New framework for planners by @mohsenari in #385
- [CLI] Added quiet mode to devbox run, init, and shell by @mohsenari in #414
- Refactor var filtering; check var in posix way by @ipince in #420
- Fix typo by @hezhizhen in #419
- cloud: change ControlMaster to auto and add sockets dir by @gcurtis in #427
- [cloud | polish] update intro text, and display VM region by @savil in #422
- nix-flakes etude by @savil in #247
- Revert "nix-flakes etude (#247)" by @savil in #435
- [CLI] Quiet mode for all commands by @mohsenari in #431
- Add issue template for bug reports by @loreto in #433
- flakes etude (with gating fix) by @savil in #436
- [Generate] Added devbox generate direnv command by @mohsenari in #437
- Enable all users to install unfree packages by @savil in #428
- [nix] attempt to source nix startup files if not in path by @mikeland86 in #426
- [plugins] Make postgresql use local socket by @mikeland86 in #434
- Auto-generate .envrc at devbox init by @mohsenari in #438
- [cloud] Very basic port forwarding by @mikeland86 in #444
- [cleanup] rename configDir to projectDir by @savil in #445
- Added prompt for direnv allow after .envrc by @mohsenari in #439
- [cleanup] devbox cloud: rename configDir to projectDir by @savil in #446
- Extract shell-specific init file injection into own func by @ipince in #424
- [cleanup] nix/shell: rename configDir to projectDir by @savil in #447
- Return exit code of the exec call by @devholic in #441
- [cloud] emulate user's local directory structure in VM by @savil in #440
- [cleanup] plugin framework: rename rootDir to projectDir by @savil in #448
- [auth] save Github username to local file by @savil in #429
- Update sentry to avoid logging errors from os exec commands by @LucilleH in #449
- [cloud] improve mutagen session name sanitization by @savil in #451
- [plugins] Join hash -r and source message and show in yellow by @mikeland86 in #452
- [direnv] Fixed .envrc file to emulate nix-shell env by @mohsenari in #453
- Bump json5 from 2.2.1 to 2.2.3 in /docs/app by @dependabot in #443
- [services] Ensure services have env vars + cleanup by @mikeland86 in #454
- [CICD] Update latest version in s3 by @LucilleH in #450
- Refactor sentry logic and fix bug by @loreto in #455
- [direnv] Added env variables from plugins to direnv by @mohsenari in #458
- Persist devbox binary version in shell session if version is pinned by @LucilleH in #459
- Adds code to call nix print-dev-env by @ipince in #456
- Put call to run_script at the end, to unbreak bash by @ipince in #463
- [direnv] Fix a bug with devbox shell enabled & direnv by @mohsenari in #460
- [cloud] Implement port forwarding using mutagen by @mikeland86 in #461
- Docs for 0.2.1 by @Lagoja in #465
- Fix devbox run for fish and possibly other shells by @ipince in #464
New Contributors
- @mikenikles made their first contribution in #395
- @hezhizhen made their first contribution in #419
- @devholic made their first contribution in #441
Full Changelog: 0.2.0...0.2.1
0.2.0: Automatic Nix Installer, Plugins, and Background Services
Automatic Nix Installer
One major piece of feedback we received from early customers (especially those who were unfamiliar with Nix) was that they found the initial installation of the Nix Package Manager confusing and challenging. To reduce this friction in getting started, Devbox can now automatically Nix if we do not detect it on your Machine. Developers can now get up and running with Devbox using a single installer.
Devbox will try to detect Nix during installation, or when running a command that requires Nix (such as devbox add
or devbox shell
). If we don’t find an installation of Nix on your machine, we will prompt you to install it using the default configuration for your operating system.
Instant package configuration with Devbox Plugins
We outlined our approach to package configuration in our blog post Do Repeat Yourself: Global Packages Considered Harmful. We aim to provide Nix's immutability and isolation while allowing developers to configure their projects locally.
This release has the first version of what we're calling Devbox Plugins. Plugins bundle default configuration (like environment variables, configuration files, and services) with packages and apply it when you install them with devbox add
. Plugins make getting started with packages like NGINX or Postgresql much faster.
Let's try adding Nginx to our Devbox shell. When we run devbox add nginx
, Devbox will use the Nginx plugin to configure our environment and create a default nginx.conf
file for our project. The plugin will also add a service to our shell (see below), so we can quickly start and stop Nginx when testing our project:
Our initial release includes plugins for the following packages, with many more to come.
We are also planning to open and provide a public repo for plugins, so developers can contribute plugins, or even add their own private plugins to Devbox.
Manage your background services with Devbox
When working on an application, you often want some services or dependencies running in the background for testing. Take a web app as an example. While working on your application, you will want to test it against a running development server and database. Previously developers would manage these services via tools like Docker Compose or orchestrating them manually.
Devbox 0.2.0 includes a devbox services
subcommand for starting and stopping services within your Devbox Shell. Packages installed in your shell that have services configured via a Devbox Plugin will appear when you run devbox services ls
. You can start these services using devbox start
and stop them using devbox stop
.
Right now, developers can only configure services via plugins. Future releases will make it possible to define and manage services in your project's devbox.json
.
Generate Dockerfiles and Devcontainers from the devbox CLI
You can now generate a generic Dockerfile or Devcontainer for your project using the devbox generate
command. These Dockerfiles make it easy to build your Devbox Shell environment as a portable container, so you can develop your project anywhere.
For more information, consult our CLI Reference
What's Changed
- [cloud] set KeepAlive setting for ssh to vm by @savil in #345
- Remove Build Docs, add Example Docs by @Lagoja in #347
- [nix] Improve nix installer by @mikeland86 in #350
- Added
devbox generate devcontainer
command by @mohsenari in #346 - [services] Add services to package configs (plugins) by @mikeland86 in #353
- [cloud] ssh shim part 1: generate shim files by @savil in #348
- [cloud] ssh shim part 2: invoke ssh by @savil in #349
- [cloud] ssh shim part 3: invoke scp by @savil in #351
- [services] Allow running services out of shell by @mikeland86 in #354
- [php] Remove v1 planner, add composer definition to v2 by @mikeland86 in #359
- [extension] Generate the same devcontainer files as CLI by @mohsenari in #357
- [cloud] ssh shim part 4: detect stopped vm, and terminate mutagen sessions by @savil in #352
- [cloud] ssh shim part 5: run own mutagen daemon by @savil in #355
- [midcobra] add executionID by @savil in #358
- [CLI] Changed devbox generate to devbox generate debug by @mohsenari in #364
- Move several packages to internal/ by @loreto in #365
- Refactor location of more files by @loreto in #367
- openssh: add host keys for gateway[.dev].devbox.sh by @gcurtis in #360
- [nix] nix install without using daemon flag DEV-1266 by @mikeland86 in #368
- [add] Show better message if package is missing. Specify exact version after installing by @mikeland86 in #370
- [sshshim] add sentry without using middleware by @savil in #366
- [plugins] Move conf files out of .devbox and more DEV-1259 DEV-1258 by @mikeland86 in #362
- [plugins] Only create devbox.d files on add by @mikeland86 in #369
- Track panics in sentry by @LucilleH in #372
- [cloud] enable multiple projects opening shells in same VM by @savil in #371
- [sshshim] turn on gate by @savil in #376
- [UX] Improve post-install readme, improve message if package not found by @mikeland86 in #375
- [refactor] Rename and move pkgcfg to plugins by @mikeland86 in #380
- [services] Start/stop multiple services DEV-1270 by @mikeland86 in #381
- openssh: improve command errors and debug logging by @gcurtis in #377
- Small improvements to telemetry by @loreto in #379
- openssh: update SSH config when DEVBOX_GATEWAY is set by @gcurtis in #378
- [plugins] Use relative paths or env variables in configs DEV-1272 by @mikeland86 in #382
- [features] Enable plugins and nix install by @mikeland86 in #383
- [planners] removed build planners by @mohsenari in #384
- [cloud shell] respect gitignore file in --config directory to limit large data syncs by @savil in #387
- [cloud shell] always ignore .devbox directory by @savil in #388
- [cloud shell] skip comments and empty lines when adding --ignore to mutagen by @savil in #391
- Add a Plugin Request Template by @Lagoja in #392
- [extension] Updated readme and changelog + bumped version by @mohsenari in #394
- [plugins] Add init hook to plugins. Add ruby gem bin to path DEV-1271 by @mikeland86 in #389
Full Changelog: 0.1.2...0.2.0