153 Commits

Author SHA1 Message Date
0965760650 Bump to Bevy 0.18, mark -dev1 prerelease
Some checks failed
check / stable / fmt (push) Successful in 38s
check / nightly / doc (push) Successful in 2m51s
check / ubuntu / stable / features (push) Successful in 2m58s
check / ubuntu / 1.88.0 (push) Failing after 41s
Bevy, Avian2d, and bevy_egui have all been bumped to the latest
versions.

MSRV is now Rust 1.89.0 because that's the minimum for Bevy (including a
couple of its dependencies).
2026-01-22 16:47:09 -06:00
ac60482688 Release v0.9.0
Some checks failed
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.88.0 (push) Has been cancelled
check / stable / fmt (push) Has been cancelled
Web builds now get their version text automatically from the Cargo.toml
v0.9.0
2025-12-26 10:21:25 -06:00
75a675977a Fully remove old transitive dep pins 2025-12-26 10:18:21 -06:00
8f2ab97cf0 Improve comments on Makefile config vars
Updated comments explaining the purpose of the variables (to go with the
new "automatic vars" section).
2025-12-26 10:05:51 -06:00
e494fc6c35 Auto fill crate version in web page
The webpage has a placeholder string instead of a hard-coded version.
This gets replaced by the Makefile with the help of a pair of `sed`
calls.

And with that, I've upgraded my ad-hoc web bundler with an ad-hoc HTML
templating engine.
2025-12-26 10:01:39 -06:00
03c7d44aad Release v0.8.0
Some checks failed
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.88.0 (push) Has been cancelled
check / stable / fmt (push) Has been cancelled
- Replaced "bevy_spatial" with "avian2d"
- Upgraded Bevy to 0.17

The bevy_spatial crate is still stuck on Bevy 0.16 and I'd like to move
forward and start playing with some of the new UI stuff. I've replaced
it with Avian physics, although I'm only using the spatial querying
facilities not the rest of the physics engine.
v0.8.0
2025-12-25 23:47:14 -06:00
975f2a0b92 Install libwayland-dev in CI workflow
Some checks failed
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.88.0 (push) Has been cancelled
check / stable / fmt (push) Has been cancelled
Bevy 0.17 enables Wayland by default so the CI workflow needs to have it
installed.
2025-12-25 23:27:33 -06:00
3a3b8181f9 Upgrade to Bevy 0.17
Avian physics has been updated for Bevy 0.17 while bevy_spatial has not.
Now that the program is switched over, I can finally pull in the new
versions of everything.
2025-12-25 23:17:14 -06:00
62feb6f313 Fix: separation() system needs smaller view range
I figured out why the new flocking behavior is different...

The previous version used 1/4th the view range for boid separation and I
didn't preserve that.
2025-12-25 22:58:03 -06:00
9797b90415 Remove dependency on crate "bevy_spatial" 2025-12-24 16:04:25 -06:00
1846b7065e Convert flocking systems to use Avian2d 2025-12-24 16:02:46 -06:00
e252e3385c (autoformat) 2025-12-24 15:44:54 -06:00
5f0b428811 Debug scanner uses shape_intersections
That was really easy. I feel dumb for making a checkpoint commit before.
Oh well, onwards to the next step: Swap over the flocking systems.
2025-12-24 15:01:03 -06:00
119d7acf09 WIP: Debug tool scans using Avian2d shape casting
Working demonstration, but I'm not sure shape casting is the action I
want to be doing. I've just found a "shape_intersections" method in the
docs, but I'm saving my progress before making further changes.
2025-12-24 14:54:49 -06:00
63f15ae6a7 Update MSRV to 1.88.0
One or more of the transitive dependencies needs Rust 1.88 or newer, so
this becomes our minimum version. It may be possible to build with an
older Rust by manually picking dependency versions but I'm not going to
do that.

Ideally, `-Zminimal-versions` would pick out those versions, but lots of
crates don't correctly specify minimum depdendency versions. As a
result, our transitive dependencies resolve to
matching-but-non-functional versions.
2025-12-24 13:05:05 -06:00
ba01d8137f Mark v0.7.0
Mark new version, update the lockfile, and autoformat the project.
2025-12-22 11:07:56 -06:00
b8c28529e6 Remove the Player Boid
The player-controlled boid was for testing the flocking behavior. It has
outlived this purpose and I never even bothered to make it larger like
the others. It's finally going away completely.
2025-12-22 10:56:47 -06:00
fd161dc26b Wire in the magic physics vars as a Resource
I don't know what to call these, so they're "misc. parameters" for now.
2025-12-22 10:45:02 -06:00
c2cf100c05 Flocking params as a resource & egui-inspector
The birdoid flocking parameters are now a resource named
`FlockingParameters`. Adjustments can be made using the Egui inspector
widget, although I plan to make a custom UI in the future.
2025-12-21 16:33:04 -06:00
0828518963 Begin 0.7.0-dev, small upgrade to behavior params
I'm not happy with the flocking behavior so I fiddled with the program
to find these new behavior parameters. It's annoying to constantly
rebuild the program, though, and I'd like for the end-user to be able to
fiddle with it at runtime. To that end, v0.7.0 shall be the UI update.
2025-12-21 15:31:08 -06:00
5ef91ec88c Remove unused print_gizmo_config() function 2025-12-20 09:42:14 -06:00
8346527d05 Release v0.6.0
All checks were successful
check / stable / fmt (push) Successful in 20s
check / nightly / doc (push) Successful in 2m21s
check / ubuntu / stable / features (push) Successful in 2m25s
check / ubuntu / 1.87.0 (push) Successful in 2m19s
v0.6.0
2025-11-15 15:15:01 -06:00
6329d000f5 Use compressed WASM for even smaller webroot size
All checks were successful
check / stable / fmt (push) Successful in 21s
check / nightly / doc (push) Successful in 2m24s
check / ubuntu / stable / features (push) Successful in 2m27s
check / ubuntu / 1.87.0 (push) Successful in 2m18s
2025-11-15 15:14:20 -06:00
46892ec32c Fix: Syntax errors in README.md
Some checks failed
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.87.0 (push) Has been cancelled
check / stable / fmt (push) Has been cancelled
2025-11-08 11:28:43 -06:00
f6c6f26b8b Update CI, the MSRV is 1.87
Some checks failed
check / stable / fmt (push) Successful in 21s
check / nightly / doc (push) Successful in 2m19s
check / ubuntu / stable / features (push) Successful in 2m26s
check / ubuntu / 1.87.0 (push) Has been cancelled
I really should have fixed this forever ago and just didn't. Good thing
nobody uses this program and it doesn't matter :p
2025-11-08 11:19:15 -06:00
9f8598c794 Drop CI semver check, this isn't a library
Semver checks only make sense for things that have a public interface.
While an application technically does, these semver checks are for the
Rust API not the GUI shape or something. It's for checking that a
library upholds it's semver promise.

This is not a library, so these checks don't make sense.
2025-11-08 11:14:27 -06:00
b64771f3fc Drop CI cargo-clippy check, can't run on Gitea
The Reviewdog tool hits GitHub API endpoints that don't have an
equivalent on Gitea.
2025-11-08 11:11:15 -06:00
d1941217c4 Release v0.5.0
Some checks failed
check / stable / fmt (push) Successful in 21s
check / beta / clippy (push) Failing after 1m15s
check / semver (push) Has been cancelled
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.79.0 (push) Has been cancelled
check / stable / clippy (push) Has been cancelled
v0.5.0
2025-11-08 11:07:04 -06:00
ba5183b30d Remove bogus dependencies from build container
These are only required for Linux builds, not WASM/WASI builds.
2025-11-08 10:59:30 -06:00
3e3bbd973f Update Dockerfile to use the new Make-based build
I'm going to run into consistency problems at some point, so I'm going
to get ahead of that by updating the container build process.
2025-11-08 10:58:48 -06:00
5abe894354 Add a bunch of CSS
Some checks failed
check / beta / clippy (push) Has been cancelled
check / stable / clippy (push) Has been cancelled
check / semver (push) Has been cancelled
check / nightly / doc (push) Has been cancelled
check / ubuntu / stable / features (push) Has been cancelled
check / ubuntu / 1.79.0 (push) Has been cancelled
check / stable / fmt (push) Has been cancelled
It's not amazing work, but now there's *something.*
2025-11-08 10:37:34 -06:00
86483497e9 Add an install target 2025-11-06 14:18:18 -06:00
3f6a4ae532 Set charset & viewport meta tags 2025-11-06 13:24:11 -06:00
7a5148dc74 Update the README with new web build variant info 2025-11-06 12:19:26 -06:00
8d4b033922 Add the tarball-standalone recipe(s)
Some checks failed
check / stable / fmt (push) Successful in 21s
check / beta / clippy (push) Failing after 54s
check / stable / clippy (push) Failing after 49s
check / semver (push) Failing after 5m25s
check / nightly / doc (push) Successful in 2m22s
check / ubuntu / stable / features (push) Successful in 2m32s
check / ubuntu / 1.79.0 (push) Failing after 26s
I forgot to put this in when I added the phony target. Oops.
2025-11-06 10:46:13 -06:00
0c915b025e HTML-installing targets remove the other one
This is actually a build configuration task, but I don't have a tool to
do that (no `./configure.sh` to run!).

To work around this, I'll just have each of the html-installing targets
install their own and remove the other. That way back-to-back builds
don't accidentally contaminate each other. The WASM and JS files are
identical, so they don't need this treatment.
2025-11-06 10:22:44 -06:00
15a1d5c6de New build variants: "standalone" and "bundle-able"
The `web-standalone` target does what the old `web` target did: Produce
the WASM, JS, and an index.html so the output can be served up directly.

The new `web` target renames the "index.html" to "boids.html" so it can
be used as a submodule/subpage in a larger website build.
2025-11-06 10:20:30 -06:00
e7e5337f22 Place Makefile 'configurables' up top
Variables that a package consumer might want to adjust should be placed
at the top of the file so they are immediately visible. Any constants
shall live below those (just the SRC folder, really).
2025-11-06 09:54:30 -06:00
e65deec5ea Rename the Makefile, add usage note at the top
I had named it makefile_web" in an effort to communicate to the user
that the Make-based build path is only for web builds. It's annoying to
type all that out, though, and it doesn't seem like other projects
follow this convention. I'll just put a usage note at the top. It's not
like the Makefile can be mis-used to make a non-web version. There is no
footgun here.
2025-11-06 09:43:11 -06:00
29d0b644ec Remove fly.toml from repo
Some checks failed
check / stable / fmt (push) Successful in 51s
check / beta / clippy (push) Failing after 1m18s
check / stable / clippy (push) Failing after 1m0s
check / semver (push) Failing after 5m49s
check / nightly / doc (push) Successful in 2m20s
check / ubuntu / stable / features (push) Successful in 2m26s
check / ubuntu / 1.79.0 (push) Failing after 28s
As a general rule, this probably shouldn't be in the main repo. I've
also deleted the Fly app, so it doesn't need to exist anywhere.
2025-11-04 14:03:55 -06:00
57e9779241 Release v0.4.0
Some checks failed
check / stable / fmt (push) Successful in 20s
check / beta / clippy (push) Failing after 47s
check / stable / clippy (push) Failing after 47s
check / semver (push) Failing after 5m39s
check / nightly / doc (push) Successful in 2m21s
check / ubuntu / stable / features (push) Successful in 2m27s
check / ubuntu / 1.79.0 (push) Failing after 31s
New version brings a new webpage, readme, and license file.
v0.4.0
2025-10-30 11:11:22 -05:00
cc47f9271f Add a license file (AGPLv3)
If I'm actually presenting this online (and I am), I should probably
have a real license attached to it. The AGPL seems good to me. I can't
imagine anyone would seriously have conflict concerns for a Boids
implementation.

The webpage now presents this information, as does the Cargo.toml
manifest.
2025-10-30 11:11:04 -05:00
6edfc934d2 Add a README to the project
It's about time I had a proper README for this thing.
2025-10-30 10:34:30 -05:00
18ab509554 Fix: automatic var to use *all* deps, not first
The tarball target depends on all the dependencies, but the automatic
variable `$<` means "the first dependency". It should be "all deps", or
`$^`.
2025-10-30 09:04:56 -05:00
615bf79f30 First draft of page structure, basic styling
I'll revise the text at some point, and the styling is *extremely*
basic, but it's a start.
2025-10-29 16:33:11 -05:00
71c095088c Fix: WASM target needs to depend on Cargo.* files
The binary output depends on the configuration input, so maybe tell
`make` about all of the inputs...
2025-10-29 11:35:55 -05:00
7482130ac2 Don't have Bevy resize to full-screen
Now that I have a custom canvas, Bevy should adopt that as it's render
target rather than further modifying it.
2025-10-28 16:23:17 -05:00
e16c0e2e32 Add and use a custom canvas element on the page
Tell bevy to find the canvas with ID "#boids-canvas" instead of creating
it's own.
2025-10-28 16:12:09 -05:00
eca864ec8e Use vars to hold target & profile in makefile_web
I might sometimes build different profiles, so this gives me somewhere
to change them. It *does not work* for debug builds because of how cargo
works. So that sucks.

I can't think of a reason anyone would seriously want to change the
target, but I've made that a variable, too. WASM64 exists, but I can't
get a read on it's availability across browsers. The benefit seems to be
accessing >4GB of memory, which is not important for this project. Other
targets are for "desktop" platforms and so shouldn't be using the
makefile.
2025-10-28 16:10:28 -05:00
0358935bf6 Group the WASM & JS targets so they're built once
https://www.gnu.org/software/make/manual/html_node/Multiple-Targets.html

The previous recipe told Make that each file could be produced by
running wasm-bindgen. The more correct expression is that *both* files
will be produced at the same time.

Now Make knows to only invoke the command one time to get both files if
either is out of date. Previously, multi-job builds (`-j2`) could build
the files twice -- one invocation for each out-of-date file.
2025-10-28 15:04:45 -05:00