Commit Graph

29 Commits

Author SHA1 Message Date
Steve Biedermann 549cd2c283 dev: update AGENTS.md 2026-10-12 13:47:04 +02:00
Steve Biedermann fd243b30d6 feat(actor-console): expose Picard over WebSocket
Update Picard and forward console/serde features, serialize actor messages, and route console requests through the simulation thread.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-12 12:43:05 +02:00
Steve Biedermann eb7f7122e5 rename AGENT.md to AGENTS.md 2026-10-12 10:41:49 +02:00
Steve Biedermann 028d5219c5 update defaults 2026-10-11 21:37:12 +02:00
Steve Biedermann 63c72f5df7 refactor(sim): resolve clippy pedantic lints
- Replace signed coordinate round-trips with checked offset helpers
- Use From/try_from conversions and clamp helpers in the edit parser
- Isolate exact RNG, noise and day-fraction float casts in documented helpers
- Split long functions (validate, world creation, apply, state_json, tick_person)
- Pass run_sim shared state by reference and tidy remaining style lints

Simulation behaviour and RNG sequences are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 21:23:50 +02:00
Steve Biedermann 9fd93a8534 refactor(ui): resolve clippy pedantic lints
Replace lossy casts with checked tile/canvas helpers, use map_or_else and
infallible conversions, and switch the build script to assert!.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 21:23:50 +02:00
Steve Biedermann 5a1384cc21 refactor: resolve clippy lints
Collapse nested ifs, use is_multiple_of, pass the editor apply callback
directly, and make dropping the actor system shutdown future explicit so
`cargo clippy --workspace --all-targets -- -D warnings` passes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 20:42:29 +02:00
Steve Biedermann 50087a6276 chore(compose): normalize formatting
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 20:42:29 +02:00
Steve Biedermann 9285df4d7b feat(sim)!: move simulation settings and behaviours into config.rn
Starting values and tuning constants are now `pub const` items in a
single Rune file, config.rn, alongside the `person`, `rabbit` and `wolf`
behaviour functions. The behaviours read the constants directly. At
startup the server loads the file from SIM_CONFIG (default: config.rn),
reads and checks every constant, and test-runs each behaviour, so a bad
or missing value stops startup with an error that names it.

- Map width and height can now be configured and are stored in
  snapshots.
- The UI's edit limits (max speed, stock, inventory, hunger, energy,
  resource amounts) come from the config.
- The in-browser script editor now edits config.rn. Applied edits update
  behaviours and tuning values immediately; map size, initial population
  and calendar defaults apply on reset.
- The Docker image includes config.rn, and Compose mounts the
  repository's copy read-only.
- Documents the config file and how it works in the README.

BREAKING CHANGE: src/behavior.rn has been removed; behaviours now live
in config.rn. The server will not start without a valid config file.
Snapshots no longer store the behaviour script: on restart, config.rn
from disk replaces any edits made in the browser editor.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 20:42:29 +02:00
Steve Biedermann 118d44ff29 docs: add agent contribution rules
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 20:42:29 +02:00
Steve Biedermann b6bab90503 feat(sim): expose Picard runtime stats and tracing
Enable Picard's stats and tracing features, publish actor counters to the UI, and initialize configurable tracing output.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 18:58:07 +02:00
Steve Biedermann a4eb181154 fix(sim): prevent starvation before population can recover
Use terrain-aware pathfinding for travel toward home and resources so settlers do not get stranded against blocked terrain. Add a startup food reserve, slow hunger accumulation, let villagers return for food sooner, ensure available food is consumed before starvation, and make the first birth check available at the first weekly boundary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 18:39:50 +02:00
Steve Biedermann 2220a6eb3c fix(ui): fall back to polling when websocket is unavailable
Poll the state endpoint while the WebSocket is not open so browsers that fail to establish the socket still receive initial state and continue updating the UI. Retain WebSocket streaming as the primary transport.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 18:28:47 +02:00
Steve Biedermann 52277ae779 fix(sim): improve population replacement rate
Raise starter settlement capacity above its initial population and allow eligible partnerships one birth opportunity per week instead of a 20% monthly roll. Preserve food and housing constraints and cover both initial growth and per-week births in tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 18:13:10 +02:00
Steve Biedermann 1e867b173c fix(sim): keep legacy villagers and newborns alive
Restore pre-life-cycle snapshots with working-age villagers and keep dependents near the shared food stock. Add regression coverage for legacy saves, child return-home behavior, and newborn placement.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 18:04:36 +02:00
Steve Biedermann a0f18df9ef feat(ui): expose life stages and fertility settings
Show each person's life stage, age, and partner in the inspector. Add per-stage fertility toggles and document the life cycle and birth conditions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 17:48:35 +02:00
Steve Biedermann 2cb4d4e626 feat(sim): add human life stages and partnerships
Add stage progression through death, one-to-one partnership actors, and constrained births.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 17:48:26 +02:00
Steve Biedermann ca371bd414 feat(calendar): add configurable calendar and stage ranges
Persist calendar units and inclusive life-stage duration ranges, expose them in the UI, and preserve defaults when loading legacy snapshots. Date formatting now derives from calendar settings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 17:38:57 +02:00
Steve Biedermann 81581132ad feat(sim): integrate Picard actors for living entities
Give people and animals persistent Picard actors and document runtime boundary.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-11 17:30:28 +02:00
Steve Biedermann 0fbe9d553d build: update Just workflows for Compose and SQLite development 2026-10-08 09:24:14 +02:00
Steve Biedermann d3a230bd47 docs: document setup and database options 2026-10-08 09:17:22 +02:00
Steve Biedermann 238de74f5b feat: add same-seed reset and world regeneration 2026-10-08 09:10:42 +02:00
Steve Biedermann c58c590b5d feat: add database persistence and Docker setup 2026-10-08 09:10:42 +02:00
Steve Biedermann 2daf8f30f2 build: bundle the Leptos UI during Cargo builds 2026-10-08 09:10:42 +02:00
Steve Biedermann ef47209c79 refactor: stream simulation state over WebSockets 2026-10-08 09:10:42 +02:00
Steve Biedermann e4a4cb0190 feat: build the frontend with Leptos and WebAssembly 2026-10-08 09:10:42 +02:00
Steve Biedermann 1e7a5f911a feat: add a Monaco-based Rune script editor 2026-10-08 09:10:42 +02:00
Steve Biedermann dd02a16d36 feat: drive agent behavior with Rune scripts 2026-10-08 09:10:42 +02:00
Steve Biedermann 5760d097f7 feat: create the world simulation server 2026-10-08 09:10:42 +02:00