Releases: livebud/bud
v0.1.10
- Fix regression when running
bud create
outside of a$GOPATH
(#167) - Fix cache clear before code generation to ensure there's no stale generated code. Prior to v0.1.10, we were clearing part of the cache not all of it (#168)
- Allow explicit versions to be installed with
curl
by setting theVERSION
environment variable (#168)
v0.1.9
-
Better hot reload DX with
bud run
(#131) thanks to @012ePrior to v0.1.9, whenever a file change occurs it would rebuild and print a ready message if successful or an error message if unsuccessful. The ready messages would often clutter the terminal over time.
-
Large internal refactor (#133). The goals of this refactor:
- Make it easier to understand. The double generated binary building was something that often confused me.
- Make it easier to contribute. I'm so impressed with the contributions so far, with this refactor it should be even easier.
- Make it faster during development. The slowest step in the build process is running
go build
. We now only rungo build
once on boot, not twice.
Learn more details in this comment. This PR concludes the work necessary to release v0.2.
-
Support glob embeds (#150) thanks to @vito
Build caching now understands embedded globs like
// go:embed *.sql
. You'll no longer get stale builds when changing a file within an embedded glob. -
Improved Dockerfile in contributing (#140) thanks to @wheinze
The Dockerfile now supports passing Node and Go versions to build a custom container. It also uses a smaller base image.
v0.1.8
-
Support
func(w, r)
controller actions (#147) (thanks @vito!)This release adds a highly-requested feature (atleast by me!) where you can now drop down to using the vanilla
http.HandlerFunc
signature.This is a useful escape hatch for webhooks, streaming and other complex use cases.
package webhooks type Controller struct { GH *github.Client } func (c *Controller) Index() string { return "GitHub webhook service!" } // Create handles incoming webhooks func (c *Controller) Create(w http.ResponseWriter, r *http.Request) { // Respond to the webhook using a vanilla HTTP handler function! }
-
Replace redirect with case-insensitive routing (#142) (thanks @vito!)
Prior to v0.1.8, if you defined the route
/bud
, but a user visited/BUD
,
they would be redirected to/bud
. This was originally done for SEO purposes to prevent different casing from appearing as separate pages.However, this had an unfortunate side-effect in that you couldn't use parameters with mixed casing (e.g. base64 encoding).
In v0.1.8, we changed this so that URL routing is now case insensitive, so
/BUD
will run the/bud
action. This doesn't address the SEO issue, but that will be a follow-up task for a later time.
v0.1.7
v0.1.6
-
Ensure alignment between CLI and runtime (#126)
In v0.1.5, we had a breaking change in the runtime. If you had an existing project and upgraded the CLI to v0.1.5, but you were still using the v0.1.4 runtime in go.mod, you'd encounter an error. This change automatically updates your go.mod to align with the CLI that's building it. Fixes: #125.
v0.1.5
This release focuses on paying down some technical debt that was accumulated prior to the release. It's part of the v0.2 plan.
-
Rename
bud run [--port=<address>]
tobud run [--listen=<address>]
This breaking change addresses the confusion discussed in #42.
-
Rename
bud tool v8 client
tobud tool v8 serve
This breaking change gives a better name for what the command does, listen for eval requests, evaluate the javascript and return the response.
-
204 No Content improvements (thanks @theeyed!)
Now when controller don't have a return value or return a nil error, they return
204 No Content
. For example:package users type Controller struct {} func (c *Controller) Create() error { return nil }
$ curl -X POST /users HTTP/1.1 204 No Content Content-Length: 0
-
Dedupe and group watch events (#123)
This reduces the number of events the watcher triggers on Linux causing less builds to trigger at once. It also hopefully fixed an issue where "remove" events sometimes weren't triggering rebuilds on all platforms.
-
Improve CI (thanks @wheinze!) (#118)
Waldemar took a much needed pass over the CI. He cleaned up the file, fixed caching and extended the test matrix, so we can more confidently say what's required to use Bud.
-
Refactor, test and simplify the compiler (#93)
The compiler wasn't really tested prior to v0.1.4. Issue that would crop up would be discovered due to E2E tests. In v0.1.5, the compiler was refactored to be testable, then tested. It was also simplified to reduce the number of ways you could use it programmatically. This makes it less likely a test will pass but the end-to-end usage will fail.
-
Extend the error chain (#100)
Errors were being lost while merging the filesystems for plugins. Now errors that occur in generators will be extended through the merged filesystem, so it's easier to see when there are issues in the generators
v0.1.4
-
Add support for custom actions (thanks @theeyed!)
This release adds support for defining custom actions on controllers that get mapped to GET requests. This feature closes: #67.
For example, given the following users controller in
controller/users/users.go
:package users type Controller struct {} func (c *Controller) Deactivate() error { return nil }
The
Deactivate
method would get mapped toGET /users/deactivate
. Learn more in the documentation. -
Speed up tests by using existing
GOMODCACHE
Some of the test suite used an empty
GOMODCACHE
to test plugin support. This turned added about a 1-minute overhead to those tests while dependencies were downloaded and the cache was populated.We now rely on real module fixtures: https://github.com/livebud/bud-test-plugin and https://github.com/livebud/bud-test-plugin.
-
Add a version number to released assets
This will make it easier to add Bud to other package managers like the Arch User Repository (AUR) for Arch Linux users. This feature fixes: #52.
-
Added a background section to the Readme (thanks @thepudds!)
@thepudds re-wrote the Reddit post, simplifying and condensing it for the Readme. I always like when projects include a "why", so I really appreciate @thepudds adding this for Bud!
v0.1.3
v0.1.2
v0.1.1
-
Improve the installation script #34 (thanks @barelyhuman!)
For cases where
/usr/local/bin
is not writable, the install script will now prompt you to escalate your privileges. -
Run Go's formatter on generated template files #28 (thanks @codenoid!)
Now the Go files generated into
bud/
will be formatted with the same formatter asgo fmt
. -
Fix
bud create
when working outside of$GOPATH
#31 (thanks @barelyhuman!)If you tried created a Bud project outside of
$GOPATH
, Bud would be unable to infer the Go module path and will prompt you to provide a module path. This prompt was being clobbered by NPM's progress bar. Now the prompt happens before runningnpm install
. -
Add a Contributor's Guide
Wrote an initial guide on how to contribute to Bud. Please have a look and let me know if you'd like to see anything else in that guide.
-
Switch the default from 0.0.0.0 to 127.0.0.1 (#35)
On the latest OSX you'll get a security prompt when you try binding to 0.0.0.0. On WSL, bud will just stall. This release switches the default to localhost (aka 127.0.0.1). Many thanks to @alecthomas, @theeyed and @kevwan for helping me understand this issue better.