Development Roadmap
The complete repository roadmap rendered directly from docs/ROADMAP.md in 0.7.1.16.0.
Roadmap to 1.0.0.0.0
1.0.0.0.0 is the first feature-rich real-world release: a credible persistent survival game rather than a technical prototype. Each milestone should remain playable and may receive patch/revision releases before the next milestone.
Historical releases through the 0.6 branch use the existing four-part x.x.x.x numbering. From the 0.7 branch onward the roadmap uses five parts: major.branch.stream.section.revision. The final component is reserved for minor fixes/refinements to the current roadmap subsection without consuming another planned subsection number. For example, 0.7.0.14.0 is the Wandering Trader foundation section and 0.7.0.14.1 would be a small correction to that same section.
0.0.1.0 - Core Kernel (implemented)
- Custom PHP 8.3+ modular application kernel, selective Composer infrastructure dependencies and no full-stack framework/ORM.
- Module registry, routing, configuration, logging, domain events, sessions/security primitives and theme/core template fallback.
- Migration-first DBAL infrastructure and initial account/identity/consent schema.
- Initial
accounts.is_adminauthorization boundary, system status, CLI and Theme Inspector shell. - No gameplay loop yet; this release exists to make 0.1.0.0 production-shaped rather than disposable.
0.0.1.1 - PHP 8.3 Baseline Hotfix (implemented)
- Official minimum runtime changed from PHP 8.4.1 to PHP 8.3.0.
- PHPUnit development dependency moved from 13.x to 12.x for PHP 8.3 compatibility.
- Runtime health checks, documentation and release metadata updated consistently.
- No gameplay or database schema changes.
0.0.2.0 - Account, Solo World & Survivor Foundation (implemented)
- Real account onboarding path with non-unique Player Name and separate game-news consent.
- Provider identity boundary for Google/Apple plus an explicitly gated development-only identity for local testing; no password storage.
- Authenticated session rotation, logout and CSRF-protected onboarding forms.
- Persistent per-account Solo world.
- Mortal survivor persistence with the 100 HP invariant and one current-survivor slot per account/world.
- Plain player-facing
/login, onboarding, survivor creation and/gamepages. - Production Google/Apple OAuth/OIDC handshakes remain an adapter task and must use real token/state/nonce validation.
0.0.2.1 - Apache Routing Hotfix (implemented)
- Shipped/verified Apache front-controller rewrite support and deployment diagnostics.
- Documented
public/DocumentRoot +AllowOverride Allrequirement for clean routes. - No gameplay/database changes.
0.0.3.0 - Location & Discovery (implemented)
- Lazy timestamp-derived Action Point regeneration; no cron dependency.
- Explicit Survey Area AP cost and first player-facing action economy.
- Browser geolocation submission with encrypted latest meaningful survivor position.
- Versioned coarse geographic cells and cell-scoped POI provider caching.
- Provider-independent POI contract with initial Overpass/OpenStreetMap development adapter.
- Normalized game-owned location taxonomy and canonical POI persistence.
- Survivor-specific Observed/Identified discovery records.
- Nearby discoveries text list and discovered-only MapLibre map markers.
- Development-only manual coordinate entry for insecure LAN testing; production remains geolocation/HTTPS oriented.
0.0.3.1 - Discovery Field-Test Hotfix (implemented)
- Nearby list/map filter persisted knowledge to the survivor's current local radius instead of showing distant historical discoveries.
- Survey cap applies to new discoveries per action; known POIs no longer consume the reveal allowance.
- Dense-area selection adds lightweight taxonomy diversity while remaining proximity-led.
- Browser-reported geolocation accuracy is surfaced for development/gameplay diagnostics.
- MapLibre popup colours are explicitly themed for the dark core UI.
- No database schema changes.
0.0.4.0 - Location Interaction, Scavenging & Inventory (implemented)
- Known discoveries open dedicated interaction pages.
- Search actions request a fresh geolocation fix and validate server-side range/accuracy.
- Quick, Standard and Thorough searches spend configurable AP.
- Per-world POI depletion is sparse/copy-on-write and finite.
- Contextual searches reveal authoritative physical item instances.
- Loot remains at the location until explicitly taken; taking transfers the exact instance into survivor inventory.
- Plain
/inventoryproves the ownership path. - No zombies/noise/consumption yet; this release isolates the persistence and transaction spine first.
0.0.5.0 - Equipment, Carrying & Database-Driven Loot (implemented)
- Move item definitions and contextual loot composition out of runtime PHP into database tables installed by required seeders.
- Preserve all existing item instances/ownership while changing only their metadata source.
- Add physical item weight, bulk/slot size, equipment positions and container capacity.
- Add base survivor storage plus worn clothing/backpack storage.
- Add equip/unequip actions and left/right hand resolution for hand-held items.
- Reject loot acquisition that exceeds available slots or hard overloaded carry weight.
- Derive encumbrance from carried weight and reduce effective maximum AP rather than altering real-world walking speed.
- Keep item use/consumption for the next survival slice.
0.0.5.1 - Development Location & Persistent Drops (implemented)
- Add a persistent development-location override for remote-area testing without exposing the feature in production.
- Development Survey/Search and location-sensitive inventory actions use the simulated position until explicitly cleared.
- Choosing
Use Current Location & Surveyclears the development override before acquiring real GPS. - Add Drop and Pick Up ownership transfers so physical item instances can persist in the world.
- Dropped containers retain contained item instances; meaningful containers persist longer than loose items.
- Add lazy expiry cleanup so abandoned loose world drops do not accumulate forever.
- Add a website
/roadmappage generated from this document so repository and UI share one roadmap source.
0.0.5.2 - World Drop Constraint Hotfix (implemented)
- Align the
item_instances.holder_typeCHECK constraint with persistent world-drop ownership. - Fix MariaDB error 4025 when dropping an inventory item.
- Preserve all existing item-instance identities and ownership data.
0.0.5.3 - Migration Registration Hotfix (implemented)
- Register the world-drop holder-type migration with the Items module so MigrationManager can discover and execute it.
- Add a release guard that fails when a migration file exists on disk but is not registered by its owning module.
0.0.5.4 - Local Observation Polish (implemented)
- Move nearby dropped items out of Inventory and into the main local-area view under Stuff on the floor.
- Treat open world drops as dynamic local observations: no Survey AP and no scavenging Search are required to notice them.
- Refresh local awareness with a one-shot GPS update on normal game-page entry, without spending AP or revealing POIs; development-location override suppresses real GPS.
- Keep visibility server-authoritative and scoped to the survivor's current/effective nearby position.
- Allow pickup directly from the local-area view while retaining fresh GPS/development-override validation.
- Keep Inventory focused on carried/equipped possessions.
0.0.5.5 - Location Context & Indoor Drops (implemented)
- Record the canonical UID of the last location the survivor explicitly entered while in interaction range.
- Keep latest encrypted GPS position and last-known canonical place as separate concepts.
- Associate world drops with a location when dropping from Inventory while still physically within that place's interaction range.
- Show indoor drops on the location page without requiring Survey or Search; keep them out of street-level local observations.
- Preserve server-authoritative visibility, fresh-position validation and exact item-instance ownership transfer.
0.0.6.0 - Consumables & Basic Survival (implemented)
- Add hydration, calorie balance and a reusable multi-status foundation.
- Add Drink, Eat and basic Use actions driven by database item effects.
- Preserve containers/results where appropriate, such as drinking water leaving an empty bottle.
- Add basic medical use such as bandaging and first status interactions.
- Derive need progression lazily from elapsed time where practical rather than requiring cron ticks.
- Acceptance target: find water -> take it -> drink it -> hydration changes -> physical item consequences persist.
0.0.7.0 - Weather, Exposure & Clothing (implemented)
- Add real-weather provider abstraction and internal
WeatherState, with coarse-cell caching that never refreshes the external provider more often than hourly. - Use stale cached observations when the provider is temporarily unavailable.
- Temperature, feels-like temperature, precipitation and wind feed lazy exposure simulation.
- Clothing definitions gain database-driven insulation, water resistance, wind resistance and breathability.
- Add
Wet,Cold,Freezing,Hypothermia,Hot,OverheatedandHyperthermiathermal states. - Heat and low-breathability clothing increase hydration use; wetness reduces effective insulation.
- Unequipped clothing remains a physical item, keeps pocket contents, and is placed into valid storage or a free hand when possible.
- Acceptance target: real conditions plus clothing can push the survivor toward cold/heat stress and materially alter hydration pressure.
0.0.7.1 - Manual Storage Movement (implemented)
- Add explicit Move-to storage actions for carried items.
- Allow valid movement into worn clothing pockets, equipped backpacks and base carried storage.
- Revalidate slot and container-weight capacity server-side at move time.
- Preserve item identity and nested contents while ensuring stored containers do not create active nested capacity.
0.0.7.2 - Physical Item Fit (implemented)
- Add database-driven item size tiers and per-container maximum item size.
- Keep physical fit independent from slot usage and carried weight.
- Prevent pocket containers from accepting implausible items such as Wood Scrap merely because they have spare slots.
- Prefer backpacks/general carried storage over clothing pockets for automatic pickup while keeping manual pocket placement available for suitable items.
- Apply the same fit validation to pickup, manual movement and unequip/storage placement.
0.0.8.0 - Noise & Infected Encounters (implemented)
- Add sparse cell-level infected pressure without persisting every generic zombie.
- Search NoiseEvents combine with local pressure to trigger temporary aggregate encounters.
- Keep hidden pressure server-side while exposing development-only diagnostics for balancing.
- Add an active encounter/evasion flow while deliberately deferring combat and injury to 0.0.9.0.
- Acceptance target: a noisy Thorough Search in infected territory can cause a genuine zombie encounter.
0.0.8.1 - Development Interaction Range Bypass (implemented)
- active development-location overrides may bypass ordinary proximity/accuracy gates for complete remote testing;
- production and real-GPS rules are unchanged.
0.0.8.2 - Encounter Locking (implemented)
- unresolved infected encounters now lock the survivor into encounter-valid actions server-side;
- browser navigation or direct POSTs cannot bypass the encounter.
0.0.8.3 - Roadmap Rendering Hotfix (implemented)
- the site roadmap parser now renders milestone patch notes as separate plain-text entries instead of leaking raw Markdown emphasis into the page.
0.0.9.0 - Basic Combat, Injury, Death & Sleep (implemented)
- Added grounded round-based melee combat sufficient to prove the architecture without finalising PvP combat.
- Fixed 100 HP survivors now take infected combat damage; Bleeding can coexist with other statuses and existing Bandages can treat it.
- Held melee-capable items use database-driven damage values; unarmed fallback and treatment paths are supported. Weapon durability remains a later refinement.
- Death archives the survivor with a cause, applies a short configurable cooldown and creates a genuinely new survivor in the same account-owned Solo world.
- Fatigue/exhaustion and real-time Sleep are implemented; sleep quality uses shelter plus database-driven Blanket/Bedroll/Sleeping Bag gear, and hydration/calories continue over elapsed time. An Improvised Bedroll has a database-driven craft recipe.
- Solo deaths do not create former-survivor zombies.
- Acceptance target: fight -> injury/treatment or 0 HP death -> archive -> genuinely new survivor in the same persistent world.
0.0.9.1 - Contextual Blanket Loot (implemented)
- Broaden Blanket loot to plausible hospital, shelter, retail and hotel/accommodation contexts.
- Add hotel/accommodation taxonomy support without hardcoding individual real-world brands.
- Keep contextual loot database-driven through additive required seed data.
0.1.0.0 - Playable Foundation (implemented)
- Consolidate and field-test the complete vertical slice from account/survivor through discovery, scavenging, survival, weather, infected encounters, combat and death.
- Complete production Google and Apple authentication adapters with authorization-code exchange, state/nonce/token validation, Google PKCE and signed Apple client-secret exchange; no local password storage.
- Keep provider identity separate from internal Account identity and keep non-unique player names.
- Preserve explicit/revocable communication consent and private provider/contact data handling.
- Tune AP, loot, carrying, survival and encounter balance from real-device testing.
- Add first geography-constrained apocalypse World Discoveries such as abandoned homes, vehicles/camps/caches where placement is plausible.
- Add conservative geography-anchored apocalypse discoveries: Abandoned Homes only from residential-building anchors, Wrecked Vehicles from parking anchors, and Camps/Caches from park or woodland context.
- Broaden database-driven improvised melee weapons and contextual weapon loot; expose the selected sleep gear and expected sleep quality before/while sleeping.
- Improve Admin/Game inspectors and template preview states for the implemented gameplay systems.
- Verify clean install, upgrade migrations/seeders, mobile browser behaviour, provider outages and documentation continuity.
- Acceptance target: fresh server -> survivor -> real Survey -> approach/search POI -> finite item instance -> carry/equip/use -> weather/survival consequence -> infected encounter -> injury/death -> new survivor while world consequences remain.
0.1.0.1 - Development Location Map & Stabilization (implemented)
- Add an admin-only full world map coordinate picker for the existing development location override, with pan/zoom, click/tap placement and draggable pin.
- Keep the tool development-only (
APP_ENV=development+ALLOW_DEV_LOCATION=true) and reuse existing session-authoritative simulated location semantics. - Keep the coordinate picker free of hidden game-state data; it is not a POI/infected/player world browser.
- Prevent Theme Inspector fake preview controls from submitting placeholder CSRF tokens to live gameplay endpoints.
- No database schema or required seed-data changes.
0.1.0.2 - Inventory Interaction Stabilization (implemented)
- Allow hand-held wearable equipment such as backpacks to move directly to its worn slot without a floor-drop workaround.
- Atomically swap a hand-held replacement with an occupied worn slot, preserving both items and all nested contents.
- Distinguish Worn, Held and Stored/Carried inventory presentation.
- Allow individual items to be retrieved from dropped containers without first picking up the entire container.
- Transfer full nested item descendant trees when containers move between survivor and world-drop ownership.
- No database schema or required seed-data changes.
0.2.0.0 - Survival & Crafting (implemented)
- Expanded hydration/calorie simulation, fatigue and stamina/AP relationships.
- Wetness, temperature, wind/exposure and shelter effects.
- Clothing layers, insulation, waterproofing, durability and condition.
- Rest/sleep, bleeding, wounds and illness foundations.
- Multiple interacting statuses and explanation/inspection tooling.
- Dedicated Crafting menu with database-driven recipes, physical ingredients, reusable tool requirements, AP costs and result condition.
- Initial improvised craft set: Improvised Bedroll, Nailed Plank, Broken Bottle, Wrapped Glass Shiv and Makeshift Spear.
- Contextual scavenging sources for Nails and Glass Bottles; crafted weapons remain ordinary physical item instances governed by inventory, condition and melee rules.
0.2.1.0 - Survival & Crafting Update (implemented)
- Add real melee weapon durability: every strike wears the exact held physical item.
- Reuse definition
durabilityplus instancecondition_wearso clothing and weapons share one condition model. - Broken melee items remain physical at 0% condition, are automatically unequipped and cannot be equipped again.
- Tune fragile glass to fail quickly while timber, tools and steel weapons progressively last longer.
- Expand recipes with Wooden Club, Reinforced Club, Scrap Shiv, Improvised Bandages and Insulated Bedroll.
- Add the first recipe upgrade path (Wooden Club -> Reinforced Club) while preserving reusable-tool requirements.
- Expose result durability/estimated strikes on Crafting and advance Template API to 10.
0.2.1.1 - Clothing Wear & Repair (implemented)
- Extend the shared durability/condition model to clothing damage from exploration and infected attacks.
- Prefer outer layers as combat-damage targets while allowing inner layers to be damaged when exposed.
- Add Cloth Scrap, Thread and Sewing Needle plus a server-authoritative sewing repair action.
- Repairs consume cloth/thread and AP, retain the needle, restore condition and remain within ordinary physical item ownership.
- Add textile salvage from Blankets and contextual sewing-supply loot.
- Advance Crafting to Template API 11 / contract v3.
0.2.2.0 - Skills & Knowledge Foundation (implemented)
- Add survivor-scoped practical disciplines without character levels or 1-99 skill ladders.
- Establish five broad competencies: Untrained, Familiar, Practised, Skilled and Expert.
- Separate practical competency from specific Knowledge entries such as techniques, identification, recipes and medical understanding.
- Add initial disciplines: Scavenging, First Aid, Crafting, Foraging, Firecraft, Sheltercraft, Cooking, Trapping, Archery, Farming, Mechanics, Electrical, Construction and Hunting.
- Give each new/current survivor one deterministic modest pre-apocalypse background familiarity plus one matching knowledge entry; no background changes HP or grants combat power.
- Add anti-grind practice saturation: repeating the identical practice source on the same day rapidly loses learning value and eventually awards none.
- Existing successful scavenging, crafting, clothing repair and first-aid treatment can develop the relevant practical skill without automatically teaching unrelated knowledge.
- Add
/skills, a compact Survivor-page skill summary, Theme Inspector preview and admin diagnostics. - Keep all skills/knowledge mortal and mode-local by storing them against the survivor.
0.2.3.0 - Environment, Seasons & Foraging (implemented)
- Introduce server-owned habitat/environment classification for natural resource actions.
- Model seasonality from geographic location and date rather than assuming northern-hemisphere calendar seasons globally.
- Build resource availability curves that can later incorporate latitude, climate profile and recent weather.
- Add Forage Area actions for appropriate natural environments, with seasonal food, tinder, fibre, plant and fungi resources.
- Keep practical Foraging separate from identification Knowledge; skill helps search efficiency but never creates resources or magically identifies species.
- Add local forage pressure/depletion and natural recovery without infinite rapid respawns.
0.2.3.1 - Foraging Identification & Specimens (implemented)
- Add survivor-specific identification records for exact harvested specimens so hidden species identity never becomes globally known through item transfer.
- Add an Inventory Examine action for unidentified berries, plants and fungi.
- Allow knowledge learned after harvesting to identify an existing specimen without replacing/duplicating the physical item.
- Let identified specimens expose their appropriate survivor-facing name and usable effects while remaining generic to survivors who have not identified them.
- Keep species identification separate from cooking, treatment and preparation Knowledge.
- Pinned for later design: survivor internal thoughts/commentary should be an event/message system referencing authoritative survivor/action/entity UIDs rather than flavour text embedded directly into mechanics. This is not implemented in 0.2.3.1.
0.2.3.2 - Knowledge Sources & Plant Guides (implemented)
- Add reusable physical Knowledge sources, beginning with books/field guides carried through the ordinary item system.
- Studying a source costs AP only when it has Knowledge the survivor has not yet learned; the source itself is retained.
- Seed Pocket Guide to Common British Wild Plants, teaching Blackberry, Common Nettle, Plantain and Yarrow identification without improving practical Foraging skill.
- Keep knowledge survivor-scoped and mortal: another survivor must study the same physical book independently.
- Let newly learned identification Knowledge immediately support re-examining specimens already carried by that survivor.
- Establish a generic source-to-Knowledge mapping for later first-aid manuals, mechanics books, bushcraft guides and teaching/event sources.
0.2.3.3 - Ecological & Geographic Localisation (implemented)
- Replace the hard-coded European scope check with reusable data-driven location scopes that can represent ecological or cultural regions without treating political borders as nature.
- Natural forage eligibility now resolves in layers: geographic/ecological scope -> climate profile -> habitat -> local seasonal curve -> depletion/recovery.
- Add climate eligibility metadata to forage resources so a species can be excluded even when a broad coordinate scope overlaps the location.
- Keep the first European species set region-limited; worldwide locations receive only resources explicitly eligible there rather than inheriting a British/European plant catalogue.
- Add generic geographic scope support to contextual loot, allowing human-created items such as regional field guides to appear only where appropriate. Existing physical items remain ordinary items and can still be carried elsewhere.
- Retain Pocket Guide to Common British Wild Plants as a regional guide, localise its normal loot to Britain/Ireland, and add a globally eligible Basic Foraging Handbook that teaches general principles rather than local species identification.
- Seed coarse future regional scopes only as localisation foundations; do not pretend the initial content catalogue models every ecosystem on Earth.
0.2.4.0 - UI & Interaction Foundation (implemented)
- Introduce a readable responsive core presentation that keeps information explicit/testable without attempting a finished theme or SPA.
- Add shared toast notifications with separate GAME, SURVIVOR, SYSTEM, DEV and DEV NOTE channels plus success/info/warning/danger tones.
- Add a progressive-enhancement action contract: ordinary POST/redirect remains valid, while JavaScript-capable clients can receive structured action JSON and refresh authoritative server-rendered HTML without a full page reload.
- Add shared busy/error handling and one reusable geolocation flow for location-sensitive actions instead of per-page JavaScript.
- Progressively enhance Inventory actions, specimen examination, Knowledge study, consumables, Crafting/repair, location search/loot/world-item pickup and Forage Area.
- Keep encounter/sleep/other stateful flows server-first where a full navigation remains clearer; future releases can opt into the same action contract deliberately rather than automatically.
- Keep survivor internal-thought persistence separate from the UI layer: the SURVIVOR channel is presentation infrastructure now, while durable/event-backed thought generation remains a later domain feature.
- Advance Template API to 16 so custom themes are explicitly prompted to review the new interaction/message component conventions. No migration or seeder is required.
0.2.4.1 - Survivor Creation Hotfix (implemented)
- Restore the survivor-creation controller action accidentally dropped during refactoring.
- Add release validation that registered survivor creation routes still resolve to a real handler.
0.2.4.2 - Death Slot Release Hotfix (implemented)
- Release
current_slotwhen a survivor dies so the next survivor can occupy the current-life slot after cooldown. - Repair stale dead rows created by earlier versions while retaining historical survivor archives.
0.2.4.3 - Survivor Loot Knowledge Hotfix (implemented)
- Separate physical location loot from survivor knowledge of exact revealed items.
- At the time of this hotfix, keep the then-current finite depletion model while preventing replacement survivors from inheriting a predecessor's revealed-loot list. Permanent exhaustion is superseded by 0.2.5.0.
- Make later searches discover still-present but unknown physical loot before resolving additional search opportunity; 0.2.5.0 later replaces finite unresolved potential with renewable pressure-based opportunity.
- Require survivor-specific reveal authority when taking location loot; item UIDs alone never grant access.
- Replace ordinary world search-count/depletion presentation with survivor-specific search history; retain authoritative state only in explicitly development-only diagnostics.
0.2.5.0 - Renewable Scavenging & Development Reset (implemented)
- Replace permanent finite manufactured-loot exhaustion with renewable abstract search opportunity while keeping exact physical item instances authoritative and non-duplicating.
- Limit each survivor/location to a rolling 24-hour search-effort budget; Quick/Standard/Thorough consume 1/2/3 effort units by default.
- Build survivor-specific diminishing returns from recent repeated searching. The same survivor gradually shifts toward common/low-value finds, while death naturally resets that personal familiarity because search history is mortal.
- Retain a smaller capped world/location pressure so deliberate death is not a perfect economic reset, while ensuring a fresh survivor can still make worthwhile finds in a repeatedly visited neighbourhood.
- Add data-driven loot quality tiers and pressure-adjusted weighted selection rather than hard-coding item names in runtime search logic.
- Reveal already-existing hidden physical loot before materialising new overlooked items. Keep a configurable loose-item ceiling so renewable searching cannot accumulate unbounded location-held rows.
- Retire
clearedas the permanent scavenging endpoint and treat oldloot_units_remainingas legacy compatibility data rather than the live search budget. - Add a development-only Admin RESET GAME DATA control that clears survivors and mutable world/gameplay state while preserving accounts, static seed data, canonical locations and external-provider caches such as weather and POI query data.
- Keep exact pressure values development-only; normal player UI receives qualitative scavenging condition.
0.2.5.1 - Explicit Forage Pickup (implemented)
- Separate finding natural material from taking it into inventory.
- Materialise forage results as survivor-revealed physical items at the location; never auto-insert successful finds into carried storage.
- Let survivors Take wanted finds explicitly, with carry-capacity checks performed at pickup time.
- Let unidentified specimens be Examined in place before deciding whether to carry them.
- Preserve hidden authoritative species identity and survivor-specific identification Knowledge while the specimen remains in the world.
- Keep untaken finds as physical world state rather than silently deleting them or returning them to the natural resource pool.
0.2.5.2 - Forage Pickup Route Hotfix (implemented)
- Route Foraging-result Take through the canonical location-loot pickup endpoint used by ordinary revealed physical items.
- Remove the core-template dependency on the duplicate forage-specific pickup URL that could surface as an AJAX 404.
- Keep forage finds survivor-revealed, physical and capacity-checked exactly as in 0.2.5.1.
- Add release regression coverage requiring the Foraging template to use the standard location-loot Take route.
0.2.5.3 - Forage Action Routing Hotfix (implemented)
- Move core Foraging-result Take and Examine controls to shallow
/forage/find/*POST endpoints carrying location/item UIDs in the request body. - Retain older deep forage routes for compatibility, but do not require core AJAX interaction to depend on deep dynamic URLs.
- Keep physical-item authority unchanged: survivor reveal, range, exact item UID and capacity checks still gate pickup.
- Return structured JSON for async stale/unknown-location failures instead of surfacing an HTML 404 as an unreadable generic toast.
- Add an actual router-match regression check for the new action paths, not only a template string assertion.
0.2.5.4 - AJAX Form Action Collision Hotfix (implemented)
- Fix the shared progressive-action client so form controls named
actioncannot shadow the form target and turn AJAX request URLs into[object HTMLInputElement]. - Read literal form
actionandmethodattributes instead of collision-prone DOM named properties. - Keep the 0.2.5.3 shallow forage Take/Examine routes and all server-authoritative reveal, range, capacity and item-ownership checks unchanged.
- Add release coverage for this browser-side failure mode.
0.2.6.0 - Water & Containers (implemented)
- Make carried fluids physical and capacity-limited rather than treating water only as an abstract need refill.
- Build a generic contents/container foundation rather than a special-case bottle system: capacity, current contents, transfer/fill/empty and server-authoritative ownership must be reusable by pots, buckets, fuel cans, jars and later storage vessels.
- Introduce substance state/quality such as source, quantity, potable/uncertain/unsafe status and treatment history, with the database retaining reality while the survivor/client receives only legitimately known state.
- Add lightweight provenance timestamps/metadata for meaningful transformations such as collection and treatment without logging every trivial item event.
- Connect the first collection opportunities to discovered marked drinking-water points, springs and water taps; leave explicit hooks for rain collection, wells, streams and later purification.
- Count liquid mass in carry/container limits, retain physical vessels after drinking, and preserve heat-safe/provenance hooks for the staged 0.2.7.4 boiling and later cooking work.
- Keep unsafe-water illness consequences deferred until the disease/medicine system can model them properly rather than adding a one-click arbitrary sickness roll.
0.2.6.1 - Surface Water & Container Realism (implemented)
- Recognise inland surface freshwater from mapped lakes, ponds, reservoirs, rivers, streams and canals while explicitly rejecting sea/ocean/salt/tidal water as ordinary drinking-water sources.
- Resolve shoreline/way geometry near the survivor rather than requiring the centre of a large lake or river feature to fall inside interaction range.
- Give vessels stable physical identities and make existing Glass Bottles reusable liquid containers.
- Distinguish closable bottles from open pans/buckets; filled open vessels must be hand-carried and can spill during meaningful travel.
- Allow partial/max-safe filling so large containers do not require enough free carrying capacity for their entire nominal volume.
- Split Drop / discard (ordinary expiring world drop) from Place (persistent fixture).
- Let exposed placed open vessels collect rainfall lazily from real weather history using opening/catchment area, without continuous per-minute simulation.
- Advance Template API to 19 and close the initial Water & Containers module before Firecraft extends treatment/boiling.
0.2.7.0 - Firecraft Foundation (implemented)
- Add authoritative world fires with one position/cell, creator, state, intensity, aggregate fuel reserve and lazy elapsed-time evaluation.
- Split fire creation into physical Build Fire Lay and Light actions: building consumes Tinder Bundle + Dry Sticks; lighting consumes a Match.
- Add data-driven combustible and ignition profiles instead of hard-coding material behaviour into controllers.
- Support Burning -> Hot Embers -> Extinguished lifecycle, plus manual extinguishing and refuelling with Dry Sticks or Wood Scrap.
- Consume exact carried physical quantities transactionally, spend AP, award modest Firecraft practice and emit ordinary noise hooks for the existing infected-pressure system.
- Prevent overlapping prepared/active fires at the same spot and require fresh server-validated location for world-fire interactions.
- Add a dedicated text-first
/firecraftpage plus a nearby-fire summary on the main game page. - Keep ignition deterministic in this foundation release; weather, material wetness and alternative ignition methods are intentionally staged next.
0.2.7.1 - Weather, Wet Fuel & Ignition Difficulty (implemented)
- Add sparse per-instance moisture state for combustible materials and expose meaningful wet/dry condition rather than a generic hidden penalty.
- Let real rain/exposure wet unsheltered hand-carried tinder/fuel while protected inventory avoids direct rain; committed prepared fire lays retain and continue evaluating their own moisture.
- Add weather-sensitive ignition difficulty using precipitation, wind, material moisture and ignition method, including valid failed attempts that consume effort/tools.
- Firecraft competency improves execution but cannot make physically impossible soaked fuel or extreme weather viable.
- Add a reusable Ferro Rod ignition method using ordinary item condition/wear rather than a separate charge system, with contextual loot entries.
- Let adverse rain/wind affect active-fire fuel use/intensity lazily and make wet refuelling less effective.
- Explain failed/impossible ignition through inspectable reasons and fix nearby-fire distance loss during lazy state evaluation.
0.2.7.2 - QoL & Fatigue AP Tuning (implemented)
- Make action effort respond to the existing fatigue thresholds: below 55% fatigue uses base AP costs, Tired (55-<80%) scales from +10% to +30%, and Exhausted (80-100%) scales from +35% to +70%.
- Round fatigue-adjusted costs upward to whole AP, recalculate authoritatively when an action is submitted, and apply the actual AP spent to survival activity costs.
- Keep domain/data AP values as base costs while showing current effective costs before Survey, Search, Forage, Firecraft, Crafting/Repair, Study, Water collection, Combat/Evade and related actions.
- Move Survey Area and Nearby Locations near the top of the Game screen so spatial decisions do not require scrolling through every survival panel first.
- Standardise signed-in primary navigation to a stable Game -> Inventory -> Firecraft -> Crafting -> Skills -> Account -> Roadmap -> Status order, preserving the current page in place and using a simple current-page treatment.
- Keep encounter/sleep lock screens deliberately minimal because ordinary navigation away remains server-blocked there.
- Advance Template API to 22. No database schema change or required seeder is introduced by this QoL release.
0.2.7.3 - Heat, Warmth & Drying (implemented)
- Feed nearby fire heat into the existing Exposure/Thermal calculation instead of creating an unrelated Warm buff.
- Scale useful heat by fire intensity and distance and allow excessive heat to contribute to overheating.
- Accelerate survivor drying near suitable fires.
- Establish reusable heat/drying context hooks for deliberately drying wet equipment/materials later without magically drying protected inventory.
0.2.7.4 - Timed Processes & Boiling (implemented)
- Add a reusable authoritative timed-process foundation for transformations tied to exact physical subjects, locations and heat sources.
- Require heat-safe cookware and sufficient real elapsed heat exposure for boiling.
- Transform the liquid already inside the exact Cooking Pan rather than spawning a replacement clean-water item.
- Preserve volume, provenance, treatment history and survivor-specific water knowledge.
- Prevent/cancel invalid movement of process subjects while an active process depends on them.
0.2.7.5 - Cooking (implemented)
- Reuse authoritative timed transformations for food preparation rather than introducing a separate timer/controller per cooking verb.
- Make Firecraft the field-work hub for both boiling and cooking: carried cookware/ingredients can be atomically staged beside an exact nearby fire while the underlying item/world ownership remains authoritative.
- Add the first data-driven recipes: Canned Beans -> Heated Beans and Common Nettles -> Cooked Nettles, both using a Cooking Pan and real elapsed useful fire heat.
- Add Canned Beans to suitable scavenging contexts and preserve a physical Empty Food Tin result rather than making packaging disappear from the world.
- Keep Foraging specimen identity separate from Cooking: cooking nettles ends the raw specimen identity before the item becomes Cooked Nettles.
- Add sparse temporary physical item warmth. Freshly cooked food and freshly boiled water can be Warm for a bounded period; consuming them while cold only eases existing thermal stress and never invents calories, hydration, HP or a positive heat buff.
- Let warm-water state follow an unmixed transfer into an empty container, while mixing with existing contents clears the simple warmth state rather than pretending to solve heat mixing precisely.
- Add collect/cancel flow for fire-side stations so completed or interrupted cookware remains physically beside the fire until the survivor returns and collects it.
- Fix carried/held liquid presentation so survivor-known source and treatment such as Boiled remain visible after cookware is picked up.
- Advance Template API to 25 with Firecraft cooking-station/recipe contracts and warm inventory presentation.
0.2.7.6 - Cooking Seeder FK Hotfix (implemented)
- Fix the required Cooking item seeder so self-referencing
result_definition_keyforeign keys are applied only after every cooking item definition exists. - Keep the failed 0.2.7.5 seeder transactional and retry-safe: affected installations can update and rerun the normal migration/seeder command without manual SQL cleanup.
- Add regression/release checks for the two-pass item-definition seeding rule.
- No gameplay, migration or Template API changes; the remainder of the staged Firecraft/Cooking roadmap moves forward by one patch number.
0.2.7.7 - Cooking Eligibility & Legacy Food Compatibility Hotfix (implemented)
- Fix Cooking ingredient eligibility so survivor-identified forage uses the survivor-authorized effective item identity rather than the hidden/raw generic specimen definition. Unidentified specimens remain ineligible and their true species is not leaked.
- Apply the same authority-aware identity check when the cooking POST is committed, not only while rendering the Firecraft recipe list.
- Add Canned Food -> Heated Canned Food as a compatibility recipe for the existing long-life
canned_fooditem instead of requiring every pre-existing tin to magically be Canned Beans. - Preserve the physical Empty Food Tin result for both cold and heated generic canned food.
- No migration or Template API change; add required compatibility seeders and regression/release checks.
0.2.7.8 - Firecraft Water & Cooking Workflow (implemented)
- Make Firecraft the practical water-work station: choose an empty carried Cooking Pan, an accessible water source and an exact nearby burning fire without manually filling/placing the pan first.
- Allow carried water containers, nearby deliberately placed reservoirs such as Plastic Buckets, and sufficiently known nearby fixed/natural water sources to supply measured water.
- Keep the convenience server-authoritative: stage the exact pan, move/collect the exact water volume, preserve liquid provenance/treatment/knowledge and create the timed process atomically.
- Extend data-driven Cooking recipes with measured water requirements and add Nettle Soup (Common Nettles + 250ml water per unit + Cooking Pan).
- Preserve incorporated liquid origin/treatment on prepared food for later illness/contamination reasoning; boiling/cooking does not magically erase broader contamination.
- Present empty pans as heat-safe cookware rather than ordinary drink containers while retaining their real liquid capacity underneath.
- Advance Template API to 26.
0.2.7.9 - Nested Cookware Boiling Hotfix (implemented)
- Fix Firecraft boiling eligibility so any Cooking Pan owned by the survivor counts as carried cookware even when nested inside a Backpack or other carried container.
- Use the same ownership rule for empty-pan discovery, carried filled cookware and the authoritative transactional re-fetch.
- Preserve normal physical staging beside the selected fire; this is an accessibility/ownership-query correction, not remote cookware use.
- No migration, required seeder or Template API change.
0.2.7.10 - Food Freshness & Spoilage (implemented)
- Add definition-level perishability profiles and sparse physical-instance freshness anchors.
- Evaluate Fresh -> Aging -> Spoiled lazily from elapsed time rather than minute-by-minute cron work.
- Make Blackberries and prepared/opened cooked foods perishable while sealed canned/dry shelf-stable foods remain long-lived.
- Let cooking establish a new exact-item freshness anchor when preparation completes.
- Block ordinary consumption of spoiled food while keeping Aging food edible; do not add arbitrary food-poisoning dice until illness/medicine can model the consequence properly.
- Retire standalone Cook Common Nettles from the active catalogue; Nettle Soup remains the intended nettle-food path.
- Advance Template API to 27 with inventory/location freshness presentation.
0.2.7.11 - Recipe Knowledge, Cooking Workflow & Integration Hardening (implemented)
- Add survivor-specific recipe knowledge modes: common, discoverable and learned. Learned recipe Knowledge is mortal and remains separate from practical Cooking competency.
- Teach Nettle Soup through the existing Pocket Guide to Common British Wild Plants; heating canned food remains common survival knowledge.
- Turn Firecraft into a readiness/work-station view: show only meals the survivor legitimately knows and can make now instead of listing the whole recipe catalogue.
- Replace runtime exact-
cooking_panrequirements with data-driven cookware capabilities and optional minimum liquid capacity; add item-definition ingredient tags for future fish/vegetable/wild-food recipe selectors. - Keep boiling drinking water as a first-class common survival process using capability-qualified cookware and existing authoritative Water rules.
- Add completed-meal Collect & Eat and post-boil Fill Container / Drink / Collect Cookware actions, preserving exact item/liquid state and server-side proximity/ownership validation.
- Reorganise Firecraft as Fire -> Ready to Cook -> Boil Water -> Active Processes -> Ready to Collect, with expanded deterministic preview/regression coverage.
- Close the 0.2.7.x Firecraft/Cooking foundation. Bulk forage/fish/recipe population, preservation, fireplaces and other adjacent content remain later work.
0.2.8.0 - Bushcraft Shelter Foundation (implemented)
- Add sparse persistent world objects for constructed infrastructure without replacing portable item ownership.
- Add reusable survivor-bound timed field activities: one deliberate task at a time, server UTC authority, movement/incompatible action lock, browser-independent progress and Stop Early with partial results.
- Add exact shelter worksites with local bulk structural/covering/insulation stockpiles; gathered material belongs to that worksite rather than the backpack.
- Add habitat-aware gathering and sparse world/cell resource depletion/recovery so natural material cannot be extracted infinitely.
- Add data-driven shelter designs/stages. Implement the common-knowledge Debris Shelter as Prepare Site -> Build Frame -> Add Weather Covering -> Add Insulation/Bedding -> Finish Shelter.
- Persist unfinished structures and committed material. Do not delete partial construction when work stops early.
- Let sufficiently covered shelter stages become exact Sleep targets with capacity and server-authoritative rain/wind/thermal protection.
- Add survivor-scoped shelter claims. Another living survivor's recently used shelter reports This shelter looks like it is still in use. without exposing identity and cannot be casually claimed or slept in. Death or prolonged abandonment releases the claim; the physical shelter remains.
- Seed Lean-to and Snow Quinzhee as inactive future designs to prove the architecture is not Debris-Shelter-specific.
- Advance Template API to 29 with a Bushcraft core template and deterministic preview.
0.2.8.1 - Shelter Field-Work Lock Hotfix (implemented)
- Make active Field Activities use a Sleep-style hard request lock instead of allowing ordinary GET navigation while only blocking mutations.
- Render active gathering/construction as a minimal progress screen with no normal gameplay navigation; the only gameplay choice is Stop Early while server time continues authoritatively.
- Hide the Start a Shelter Worksite block when the current position already contains a shelter/worksite within the same authoritative placement-clearance rule used by creation validation.
- Keep Template API 29; no schema or seed-data change is required.
0.2.8.2 - Shelter Placement UI Consistency Hotfix (implemented)
- Use one authoritative shelter/worksite placement-status check for both page rendering and worksite creation validation.
- Expose an explicit
canStartWorksiteview-model flag; when the current spot is occupied, omit the entire Start a Shelter Worksite panel rather than merely rejecting its button after submission. - Treat incomplete worksites and completed shelters identically for duplicate-placement visibility.
- Remove the unrelated fresh-position persistence workaround from the hotfix.
- Keep Template API 29; advance
bushcraft/indexto contract v2 with no schema or seed-data changes.
0.2.8.3 - Shelter Quality, Degradation & Repair (implemented)
- Add separate frame, weather-covering and insulation condition to constructed shelters; only components that physically exist can degrade.
- Evaluate condition lazily from elapsed UTC time with bounded recent real-weather pressure so current storms do not get projected over an entire unobserved history.
- Let degraded condition reduce effective rain/wind/thermal protection and make critically degraded shelters temporarily unsuitable for sleep until repaired.
- Add timed Field Activity repairs for frame, covering and insulation. Repairs consume one matching local stockpile unit, retain proportional progress if stopped early and award modest Sheltercraft practice.
- Preserve surplus worksite materials for future repair rather than deleting them.
- Keep Template API 29 and advance
bushcraft/indexto contract v3 with condition/repair presentation fields.
0.2.8.4 - Bushcraft Weather Bootstrap Hotfix (implemented)
- Defer Bushcraft Field Activity resolver construction until activity resolution so weather-aware shelter condition code cannot request
WeatherProviderbefore Weather module registration completes. - Preserve the existing module/migration ordering rather than moving historical module migrations merely to satisfy runtime dependency construction.
- Add regression coverage proving Bushcraft module registration does not resolve the weather-aware activity resolver during bootstrap.
- No migration, seeder or Template API change.
0.2.8.5 - Caches (implemented)
- Add persistent Simple Hidden Cache world objects with timed construction and retained partial progress.
- Add finite ordinary cache storage with slot, weight and item-size limits using exact physical item ownership rather than copied inventory.
- Extend item holders with reusable
world_objectownership for persistent infrastructure. - Add survivor-specific cache discovery records and server-side concealment filtering so undiscovered caches are never sent to other survivors.
- Add fresh-position cache placement/proximity checks and future discovery/hostile-access hooks.
- Keep Template API 29 and advance
bushcraft/indexto contract v4.
0.2.8.6 - Site & Camp Foundation (implemented)
- Add a reusable persistent Site parent for survivor-established places, with
campimplemented now andsafe_housereserved on the same schema/domain boundary for later permanent-base work. - Allow one survivor to claim multiple Camps/Safe Houses; never model a single account-wide home base.
- Add exact encrypted geographic anchors, configurable interaction radii and extensible
site_areasso later Safe Houses can contain rooms/areas without inventing a second infrastructure hierarchy. - Establish Camps through the generic timed Field Activity system with AP/fatigue costs, Sleep-style hard locking, browser-independent elapsed time and Stop Early.
- Validate Camp establishment against fresh position accuracy, current identified outdoor-location range, natural habitat eligibility and nearby-site separation.
- Add global Camps and Safe Houses pages. All claimed sites can be viewed remotely; physical management is explicitly marked nearby-only. Safe House claiming remains intentionally inactive in this foundation.
- Represent established Camps as player-created canonical Locations and feed them into ordinary server-authoritative Survey/Discovery. Other survivors receive only legitimately discovered Player Camp / Abandoned Camp knowledge, never claimant identity.
- Death lazily releases the mortal survivor's Site claims while the persistent Site remains vacant. A deliberate Disband relinquishes the claim remotely without teleporting or deleting future physical infrastructure.
- Keep Firecraft, Bushcraft, shelters and caches unchanged/standalone in this release. Camp membership/infrastructure migration is deliberately deferred to 0.2.8.7 so the parent model can be tested independently.
- Advance Template API to 30 with
sites/indexandsites/showcontracts and a deterministic Camp list preview.
0.2.8.7 - Camp Infrastructure Membership (implemented)
- Make an established, actively claimed Camp the required parent for new outdoor camp infrastructure.
- Add authoritative
site_idandsite_area_idmembership toworld_objects,world_firesand deliberately placedworld_dropswithout inferring ownership from proximity after creation. - Attach new shelter worksites and caches to the Camp/main area that contains the survivor's fresh authoritative position.
- Require fire preparation inside one of the survivor's claimed Camps and persist the fire beneath that Site/area.
- Require deliberately placed fixtures such as buckets/pots to be placed inside a claimed Camp; ordinary Drop remains an ordinary expiring world drop and is not silently upgraded into Site infrastructure.
- Make temporary cooking/boiling stations staged beside a fire inherit that fire's Site/area membership.
- Keep the existing Firecraft and Bushcraft menus/routes for this release so the parent-membership change can be tested independently from the Campcraft UI relocation.
- This is a deliberate development-save-breaking boundary. RESET is required after installing 0.2.8.7; no retrofit/backfill of standalone pre-Camp test infrastructure is provided.
- Template API remains 30 because existing template contracts are unchanged.
0.2.8.8 - Campcraft Interface (implemented)
- Add the local Campcraft management page for a nearby claimed Camp.
- Present Site-bound shelter, fire, storage, placed fixtures and construction from the Camp parent rather than assembling a camp by proximity guesses.
- Allow shelter/cache/fire creation from Campcraft while keeping Firecraft/Bushcraft as temporary fallback navigation during testing.
- Keep distant Camps view-only; physical Site management remains proximity-authoritative.
0.2.8.9 - Camp Location Context Hotfix (implemented)
- Make the main Nearby Locations table and map route a survivor's own actively claimed Camp/Safe House to its private Site-management URL while other survivors continue to receive the generic public Location URL.
- Prevent player-created Site Location wrappers from overwriting the survivor's last ordinary environmental Location context.
- Persist fresh GPS obtained by Camp establishment through the normal
LocationCaptureServiceso the rest of gameplay sees the same authoritative position. - Resolve Camp establishment from the nearest identified natural discovery around that fresh position instead of whichever Location page happened to be visited last.
- Persist the Camp's establishment habitat into canonical Site-Location metadata and use that stable habitat for Campcraft shelter eligibility, with a compatibility fallback for Camps created in 0.2.8.8.
- Keep Template API 31; no schema migration, seeder or additional RESET is required.
0.2.8.10 - Campcraft Consolidation (implemented)
- Player-facing fire management, cooking, boiling, shelter work, caches and Camp item handling are consolidated beneath the exact selected Campcraft context while Firecraft/Cooking/Water/Sheltercraft remain domain boundaries.
- Firecraft and Bushcraft are removed from primary navigation; their GET pages redirect to Camps after Campcraft parity.
- Ordinary Camp Drop / Discard is visible as temporary expiring ground state; explicit Place at Camp remains persistent fixture infrastructure.
- Cooking/boiling actions and process collection validate the exact Camp membership of their persisted heat source.
- Death/disband/vacancy release claims without deleting or transferring Site-bound physical infrastructure.
- Template API advances to 32 /
campcraft/indexcontract v2. No migration, seeder or additional RESET is required.
0.2.8.11 - Lockboxes & Secure Storage (implemented)
- Add physical visible secure storage beneath the exact Site/Campcraft parent while keeping hidden caches a separate concealment concept.
- Build the first Improvised Lockbox through timed Field Work from consumed materials plus a reusable tool; partial installation remains physical when stopped early.
- Store contents as the same authoritative item-instance trees used by Inventory/Caches, with finite slot/weight/size capacity and no duplication shortcuts.
- Completed boxes start locked. Mortal survivor ownership, explicit access-grant persistence and unlocked physical access provide groundwork for later trusted/PvE/PvP rules without implementing hostile bypass yet.
- Death/disband/vacancy never delete, transfer, inherit or automatically unlock the physical box or contents.
- Upgrade shelter worksites with overall percentage, a stage timeline, exact next-stage material/labour/AP requirements and explicit missing-material feedback.
- Add migration + required lockbox-definition seeder; no Development RESET is required. Advance Template API to 33 /
campcraft/indexcontract v3.
0.2.8.12 - Shelter & Camp Utility Integration (implemented)
- Add an exact-Site Camp Survival Status model so Campcraft reports protection, fire warmth/drying, weather, survivor wetness/thermal state and sleep outlook from the selected Camp rather than borrowing nearby infrastructure from another Site.
- Keep persisted Exposure/Thermal simulation based on physical proximity to any legitimately nearby shelter/heat, while Campcraft attributes only the selected Camp's completed shelter and active fire as that Site's own utilities.
- Let current exact-Camp fire warmth contribute a bounded bonus to the sleep-quality estimate/start calculation without becoming a permanent Warm buff or making an incomplete shelter sleepable.
- Integrate placed liquid fixtures into Campcraft: drink, decant into carried containers, pour carried water into the fixture, or empty it while leaving the vessel physically placed.
- Let suitable placed open vessels switch explicitly between exposed for rain collection and under Camp shelter. Covering advances the rain cursor first; exposing resets the evaluation cursor so covered time can never retroactively create rainwater.
- Keep liquid source/safety/treatment knowledge survivor-scoped in Campcraft rather than exposing hidden authoritative water state through fixture view models.
- Advance Template API to 34 /
campcraft/indexcontract v4. No schema migration, required seeder or Development RESET is added.
0.2.8.13 - Admin Testing Toolkit (implemented)
- Add a development-only, administrator-only survivor testing page for repetitive gameplay QA.
- Select any living survivor, inspect inventory/Camps/current activity/encounter, grant or remove items, edit HP/AP/survival reserves, move the stored test position, force/clear infected encounters and accelerate the current Field Activity to 30 seconds or immediate completion.
- Keep item grants capacity-aware and keep death/timer completion on their existing domain pathways rather than creating parallel test-only gameplay models.
- Persist an audit record for every testing mutation. Add one migration for the audit table; no required seeder or Development RESET is needed.
- Advance Template API to 35 with
admin/testingcontract v1.
0.2.8.14 - Timed Activity/Admin Escape Hotfix (implemented)
- Fix the Campcraft-consolidation redirect loop where active shelter/cache/lockbox Field Activities still redirected through the retired Bushcraft GET page.
- Keep Camps/Campcraft as the canonical locked-work destination and allow development admin routes through Field Activity/Sleep locks so the Testing Toolkit can recover active test states.
- Keep Template API at 35; no migration, required seeder or Development RESET.
0.2.8.15 - Camp/Bushcraft Integration & Hardening (implemented)
- Make abandoned/vacant Camps reclaimable from a fresh authoritative position inside the exact Site without transferring or duplicating child storage/item ownership.
- Limit each Camp to one active hidden cache and one active lockbox, with concurrency-safe enforcement under the Camp Site row lock.
- Fix placed-water shelter-cover authority and require a completed serviceable shelter near the exact fixture.
- Expose exact-object proximity for shelter/cache/lockbox actions, strengthen disband warnings, reconcile dead-owner claim state on relevant reads and retire legacy standalone Bushcraft/Firecraft/Cache mutation routes.
- Harden integrated Campcraft regression coverage and advance Template API to 36 (
locations/showv15,campcraft/indexv5). No migration, required seeder or Development RESET.
0.2.9.0 - Small Game Hunting & Trapping (implemented)
- Add sparse, lazily recovered wildlife pressure per world/geographic cell rather than simulating individual animals continuously.
- Add timed Hunt Small Game field activities using the first hunting weapon, a
.177 Air Rifle, with 15/30/60 minute choices, real pellet consumption only when shots are taken, weapon condition wear and infected-attracting noise. - Add habitat-weighted rabbit, squirrel and pigeon outcomes. Successful hunts produce physical carcass item instances; failed/no-opportunity hunts still affect local pressure appropriately.
- Add persistent Wire Snares for rabbit trapping with set/check/collect/reset/remove lifecycle and exact physical proximity checks.
- Add knife-based field dressing from carcass to raw meat plus physical offal/pelt by-products. Carcasses, raw meat and cooked small game use the existing lazy perishability system.
- Add craftable Cooking Spit cookware and exact-spit roast recipes integrated with the existing exact Camp fire/timed Cooking workflow; real fire heat remains authoritative for cooking progress.
- Add a reusable counted-content container model. Matchboxes hold 50 individual matches and
.177 Pellet Tinshold 30 pellets; contents have weight, are consumed individually and may be transferred between compatible physical containers. - Make hunting equipment obtainable through plausible scavenging contexts rather than requiring Admin Testing grants.
- Advance Template API to 37 with
hunting/indexcontract v1. Add two migrations and required hunting/scavenging seed data; no Development RESET is required. - Deliberately defer bows, arrows, cordage, primitive weapons/tools and advanced bushcraft crafting breadth until post-launch.
0.2.9.1 - Hunting/Cooking Hotfix (implemented)
- Fix the default wildlife-pressure fatal on first access to a previously untouched hunting cell.
- Prevent active Cooking processes from being decorated/presented as Boiling merely because both workflows use cookware as their subject item.
- Keep cookware reserved while another timed process owns it, without offering a second Boiling start action.
- No migration, required seeder, Development RESET or Template API change.
0.2.9.2 - Hunting Activity & Carried Load Hotfix (implemented)
- Render an active hunt as the same kind of locked, minimal activity surface used by Sleep and Camp field work.
- Derive encumbrance from carried/stowed/held load while excluding ordinary worn/equipped gear shell mass. Contents inside worn storage and hand-held items still count; unequipped/stowed gear counts again.
- Keep storage-slot limits, per-container contents-weight limits and all item world mass unchanged.
- No migration, required seeder, Development RESET or Template API change.
0.2.9.3 - Lockbox & Shelter Limits Hotfix (implemented)
- Make lockbox
is_lockedliteral physical state: locked boxes expose no deposit/withdraw workflow to anybody, including their owner, until explicitly unlocked. - Keep owner-only lock/unlock control for the current foundation; future online work may add keys, trusted lock operation and hostile bypass separately.
- Enforce one active shelter/worksite per Camp after locking the authoritative Site row, matching the existing one-cache/one-lockbox concurrency model.
- Hide second-shelter creation controls/probes once the Camp already owns a shelter/worksite.
- Keep post-completion material gathering and present those materials as a shelter reserve for repairs and future upgrades.
- No migration, required seeder or Development RESET; Template API remains 37.
0.2.9.4 - Temporary Tarp Shelter (implemented)
- Add physical reusable Tarp items and a
/field-sheltersurface for portable emergency shelter outside Camp infrastructure. - Pitching is a 5-minute / 1 base AP Field Activity; the exact tarp item is transferred into the world object and returned with retained condition when recovered.
- Integrate strong rain cover, moderate wind cover and minimal thermal insulation into existing exposure/Sleep context.
- Allow a Site-less Firecraft fire to be prepared at a bounded safe offset beside an owned pitched tarp, preserving normal ignition, fuel, weather, heat, drying and noise rules.
- Lazily deteriorate deployed tarp condition from elapsed time/weather and keep temporary shelters separate from the one constructed shelter/worksite per Camp rule.
- Advance Template API to 38 with
field-shelter/indexv1. Add one migration and required Tarp seed/scavenging data; no Development RESET is required. - Keep advanced tarp configurations, cordage, fire/spark damage and primitive bushcraft breadth deferred until post-launch.
0.3.0.0 - Infected (implemented)
- Deepen sparse cell simulation into deterministic baseline population pressure plus mutable current pressure and decaying local alertness.
- Spread action noise into neighbouring cells at reduced strength so repeated local activity can raise short-term danger without continuously simulating generic zombies.
- Let generic infected kills modestly deplete current cell pressure and recover it lazily toward baseline over time.
- Scale temporary encounter size from effective local threat and noise while retaining aggregate generic encounters rather than per-zombie persistence.
- Replace guaranteed evasion with authoritative Break Contact outcomes affected by numbers, carried load, fatigue, Bleeding/Wounded state, engagement and AP; failed attempts may inflict the same injury/clothing consequences as combat.
- Reuse one infected-attack consequence service for fight retaliation and failed escape, and make fight/escape actions themselves create local noise.
- Add reusable
grid-v1neighbouring-cell adjacency as a foundation for later persistent infected movement and hordes without introducing those entities early. - Keep ordinary survivors capped at 100 HP; no level/MMO health scaling is introduced.
- Advance Template API to 39 with
infected/encounterv4. Add migration20261007100000_infected_deepen_cell_threat; no required seeder or Development RESET is required.
0.3.0.1 - Infected HP Balance Hotfix (implemented)
- Replace the fixed 30 HP generic infected target with an individual 10-15 HP roll.
- Roll a fresh 10-15 HP value when the next infected in an aggregate multi-infected encounter becomes the current target.
- Clamp already-active legacy encounter targets to a maximum of 15 HP through migration
20261007110000_infected_balance_hit_points. - Keep Template API 39 /
infected/encounterv4 unchanged; no required seeder or Development RESET.
0.3.0.2 - Encounter Resolution & Remains (implemented)
- Add a dedicated post-encounter resolution screen for defeated and escaped infected encounters.
- Persist defeated-body count and create one sparse exact-position physical remains world object when generic infected are defeated.
- Make remains search an AP-costed, modest-noise action that materialises data-driven mundane physical item instances only when searched.
- Keep looting consistent with ordinary inventory interaction: list discovered items with individual Take actions and no Take All shortcut.
- Preserve the future former-survivor rule: those remains must expose actual authoritative possessions rather than generated generic loot.
- Correct Ferro Rod durability from 80 to 5000 while retaining the ordinary condition model and existing instance condition.
- Advance Template API to 40 with
infected/resultv1. Add one migration and two required seeders; no Development RESET is required.
0.4.0.0 - Persistent World Foundation (implemented)
- Add sparse
world_cell_statesso cells gain mutable state only when gameplay creates a persistent consequence. - Extend copy-on-write location state,
world_objectsandworld_dropswith shared lifecycle, cleanup and revision metadata while keeping each owning domain authoritative. - Add lightweight physical-item creation provenance without turning ordinary item mutation into heavyweight event sourcing.
- Make generic infected remains and ordinary/placed world drops the first lifecycle reference users.
- Expose persistent-cell/location/object/drop/provenance state through Admin Game Inspector.
- Reaffirm PHP 8.3.0+ as the current runtime baseline under ADR-0015.
0.4.0.1 - Discovery Lifecycles & World Events (implemented)
- Give generated world discoveries explicit observed/active/depleted/expired/cleaned lifecycle rules where appropriate.
- Add safe lazy cleanup/decay for eligible discovery/world-event consequences using the 0.4.0.0 lifecycle metadata.
- Deepen meaningful resource/item transformation history only where it improves spoilage, treatment, ownership, remains or admin explanation.
- Keep procedural discoveries anchored to plausible real geography rather than inventing impossible permanent structures.
- Introduce the first reusable world-event framework and prove it with a bounded non-destructive event type.
0.4.0.2 - Persistent Resource Consequences & Cleanup (implemented)
- Extend shared lifecycle/cleanup policy into additional finite resource consequences only where the owning domain already has meaningful depletion or decay semantics.
- Consolidate lazy cleanup evaluation for eligible remains, drops, events and discovery consequences without converting persistent fixtures/structures into disposable clutter.
- Improve admin explanation of why a resource/object is depleted, recoverable, expired or retained.
- Keep additional world-event types deferred until their geography, lifecycle and gameplay effects can be bounded and tested without leaking hidden state.
0.4.0.3 - Richer Procedural Discoveries & Meaningful World Events (implemented)
- Expand bounded world events to Scattered Debris, Recent Disturbance, Fresh Animal Sign and Abandoned Supplies while retaining one-active-event-per-cell sparsity and survivor-observation privacy.
- Make Abandoned Supplies a real physical world drop/item with provenance and first-come-first-served ownership transfer rather than a reward payload.
- Let survivor-observed Fresh Animal Sign provide a bounded small-game hunt opportunity modifier only when the hunt is started while the sign is active.
- Add event resolution metadata and world-drop linkage so physical consequences and event lifecycle stay coherent.
- Enrich deterministic generated-discovery names/context from real anchor tags while preserving stable
worldgen-v1canonical identity. - Extend Game Inspector and template contracts for event effects, hunting context and operations diagnostics.
0.4.0.4 - Persistent Environment & Location Consequences (not released; folded into 0.4.0.5)
- This was a planning label only. Its persistent-location-state foundation was combined with the recovery/clearing work below at the user's direction; no 0.4.0.4 package or migration was released.
0.4.0.5 - Persistent Location Consequences, Recovery & Clearing (implemented)
- Add sparse, source-linked persistent location consequences independent from temporary world-event lifetime.
- Let expired Scattered Debris deterministically leave a persistent debris obstruction at its real anchor location.
- Block ordinary scavenging while an active obstruction makes useful access unavailable.
- Allow a nearby survivor to clear debris for fatigue-adjusted AP while producing infected-attracting noise.
- Retain resolved consequence rows as world history and establish explicit manual/natural recovery modes for future consequence types.
- Extend Game Inspector and template contracts for consequence/recovery diagnostics.
0.4.0.6 - Broader World Event Set (implemented)
- Expand the sparse event pool with context-gated Storm Damage, Signs of Infected Activity and Signs of Earlier Scavenging.
- Keep the overall event opportunity bounded while filtering type weights by taxonomy, recent cached weather, infected threat and persistent finite-stock state.
- Reuse the existing persistent debris-obstruction consequence for Storm Damage aftermath rather than creating a parallel damage model.
- Preserve survivor-knowledge safety by exposing qualitative signs rather than hidden actor positions or exact threat values.
0.4.0.7 - Persistent Environmental Effects (implemented)
- Preserve Storm Damage's established debris-obstruction outcome while adding a non-blocking Waterlogged Access fallback with explicit natural recovery.
- Make waterlogging raise search effort/noise only while the persistent consequence is active.
- Add Water-domain
world_water_source_effectsso Storm Damage can temporarily mark real natural springs/surface water as storm-runoff affected without inventing sources or permanently mutating base source definitions. - Keep environmental aftermath lazy, source-linked, explainable and independently recoverable after the temporary event expires.
0.4.0.8 - Discovery Depth (implemented)
- Area Survey produces survivor-specific Observed/Identified knowledge; a deliberate nearby detailed survey advances Identified locations to Surveyed.
- Search, location foraging, natural-water collection and other detailed local actions require Surveyed-or-better server-side knowledge.
- Gameplay payloads use a survivor-authorised knowledge projection so Observed POI identity and pre-Surveyed condition/resource/environment/consequence details are not sent to templates.
- Discovery transitions now retain revision/reason/milestone timestamps and auditable history. Explored/Cleared remain reserved until an owning domain has a meaningful transition rather than becoming click-grind.
0.4.0.9 - Persistent World Polish & Consolidation (implemented)
- Bound lazy maintenance per lifecycle category so long-idle worlds drain backlog over multiple ordinary requests rather than creating an unbounded request spike.
- Add targeted expiry/cleanup indexes and deadline-safe natural location consequences so overdue recovery stops affecting gameplay before lazy history resolution.
- Add maintenance backlog/invariant diagnostics to the Game Inspector.
- Complete the focused 0.4 balance/QA pass without changing the established sparse event frequency, environmental aftermath defaults or finite/renewable resource split.
0.5.0.0 - Groundwork (implemented)
- Consolidate natural-area Forage into the ordinary Location action surface instead of sending the survivor to a separate result page.
- Keep searched loot, forage finds and ground/fixture items visually distinct while preserving one authoritative physical-item/reveal model.
- Add a survivor-facing Foraged tab that is selected automatically after a successful forage action and disappears when no forage finds remain.
- Preserve old Foraging routes/templates as compatibility surfaces; no database migration or reset is required.
0.5.0.1 - Permanent Safe Houses (implemented)
- Surveyed Abandoned Homes can be secured through timed, proximity-authoritative claiming without replacing or resetting their canonical Location/world history.
- Safe Houses reuse the persistent Site/area lifecycle, with mortal claims, abandonment/reclaim and no claimant identity in discovery payloads.
- Add generic level-free Site facilities. Bedroom is first, creating one dedicated sleeping space and using the existing Survival sleep authority.
- Safe House death/abandonment leaves the building, rooms and facilities persistent for later discovery/reclaim.
0.5.0.2 - Safe House Storage (implemented)
- Add a dedicated Storage Room and level-free Storage facility with explicit physical slot, supported-weight and item-size capacity.
- Store exact item instances under the persistent facility and move nested item trees atomically; depositing/withdrawing never duplicates possessions.
- Require current Safe House claim plus fresh nearby position for physical transfers, while remote views withhold live storage contents.
- Preserve stored contents through survivor death, abandonment and reclaim; a later claimant only takes an item when that exact instance is withdrawn.
- Reuse normal carry-capacity/fit rules on retrieval and existing open-liquid-vessel stowage rules on deposit.
0.5.0.3 - Timed Safe House Preparation (implemented)
- Move Bedroom and Storage Room preparation onto the shared authoritative Field Activity system instead of instant facility creation.
- Default Bedroom preparation to 10 minutes and Storage Room preparation to 15 minutes, with existing fatigue-adjusted AP and Stop Early semantics.
- Create rooms/facilities only when timed work completes successfully; early stopping leaves no partial room/facility state in this release.
- Keep basic Bedroom/Storage preparation material-free for now while carrying an explicit material-requirement boundary in facility work plans for later builds.
- Add optional preparation-duration configuration without a schema migration or Development RESET.
0.5.0.4 - Navigation & Facility Projects (implemented)
- Keep every currently claimed Camp and Safe House known to the current survivor on the Game map and in a text-first Your Persistent Sites list regardless of the ordinary nearby-discovery radius. Exact coordinates are emitted only for that survivor's own current claims; distance affects physical management, not remembered navigation.
- Use distinct Camp and Safe House game markers and fit the map to the survivor plus owned Sites so a distant base remains practically findable without leaking unrelated hidden POIs.
- Replace one-shot future Safe House construction with persistent Facility Projects that separate project identity, required work, AP commitment, physical material stockpiles and reusable tool requirements.
- Preserve partial work when a facility task is stopped early. Resuming works only the remaining authoritative duration rather than discarding completed labour.
- Commit exact physical item instances to
holder_type=site_project; stackable materials may be split only for the exact quantity committed, containers/liquid-content items are rejected, and incorporated materials are consumed only when construction completes. - Required tools are checked as carried capabilities and are not consumed merely because construction uses them. Bedroom and Storage Room clearing remain intentionally material-free, while later Kitchen, Workshop, water and fortification projects can declare real requirements without another construction rewrite.
- Add migration
20261008120000_sites_safe_house_facility_projects; no required seeder or Development RESET.
0.5.0.5 - Kitchen & Household Fixtures (implemented)
- Add a managed Kitchen through the existing persistent Facility Project boundary. The initial Kitchen is a room clear-out rather than an artificial upgrade tier and defaults to 20 minutes / 2 base AP with no invented material cost.
- Preserve existing household infrastructure as persistent building fixtures. The first fixtures are an 18 L Kitchen Sink, Electric Cooker and Electrical Outlets.
- Model useful liquid-holding room fixtures as exact physical item instances attached to the Site facility. The Kitchen sink can hold/transfer real water without becoming survivor inventory; the same boundary is intended for future Bathroom/Washroom sinks, baths/tubs and other large fixed containers.
- Let currently working mains water fill the fixed sink, carried containers and measured recipe water. Treat the early mains supply as known-safe/treated until regional utility quality/reliability becomes authoritative in 0.5.0.7.
- Let the electric cooker participate in the existing timed Cooking pipeline while grid electricity is currently available. Recipe knowledge, cookware, ingredients, water measurement and AP remain authoritative; there are no Kitchen levels or abstract cooking bonuses.
- Correct and deepen owned-Site navigation: current claimed Camps/Safe Houses remain in the server-authorised map dataset independent of discovery distance, individual Site pages show exact coordinates, Show on Map focuses the main Game map on that owned Site, and a small non-interactive MapLibre preview reuses the configured raster tiles.
- Add migration
20261008130000_sites_safe_house_kitchen_fixturesand required seeder20261008130500_sites_seed_household_fixtures_v1; no Development RESET.
0.5.0.6 - Bathroom, Washroom & Cleanliness (implemented)
- Add a Bathroom/Washroom Safe House room and a survivor Cleanliness condition/bar without turning hygiene into constant click-heavy micromanagement.
- Allow washing through appropriate working bathroom fixtures, sinks, buckets/containers, suitable streams/rivers and collected rainwater.
- Keep water quantity/quality physical and authoritative; washing consumes an appropriate amount of real water where a free-flowing source is unavailable.
- Let soap/cleaning supplies improve washing efficiency later, and establish cleanliness as an input to later wound-contamination and illness risk in 0.6.
- A toilet may exist as a building fixture, but personal toilet-needs simulation remains deferred.
0.5.0.7 - Regional Water & Electricity (implemented)
- Add world-owned regional mains-water and electricity-grid state rather than per-house magic switches.
- Support utility states such as operational, intermittent, degraded and outage; water additionally tracks pressure and quality/potability uncertainty.
- Start early-apocalypse infrastructure generally functioning, then allow reliability to deteriorate over world time with outages lasting hours, days or weeks and occasional restoration.
- Make Safe House fixtures query the authoritative regional service state at their location. A broken regional supply disables the service without pretending the tap/cooker fixture itself vanished.
- Keep Solo, PvE and PvP utility state completely isolated per world.
- Materialise regional state sparsely only when queried and advance bounded service windows lazily; untouched utility regions need no mutable state.
- Pause existing electric-cooker heat progress while regional grid power is unavailable, and preserve water already stored in fixed Safe House containers through mains outages.
- Withhold live regional utility state from remote Safe House views; current service details require nearby survivor authority.
0.5.0.8 - Utility World Events (implemented)
- Connect regional utilities to the existing World Event framework so outages/restorations are visible consequences rather than hidden background flags.
- Support events/notices such as local power outage, rolling blackout, power restored, water-supply interruption, low pressure, boil-water advisory and contamination concern.
- World-event effects must update/query actual utility simulation state; event text must never claim an outage that gameplay ignores.
- Keep geography bounded so neighbouring regions can have different service conditions without simulating every individual property.
0.5.0.9 - Rainwater Collection (implemented)
- Add exterior/roof rainwater systems composed from physical catchment, gutter/downpipe or tarp routing and real barrels/tanks/containers.
- Use real weather/rainfall as the collection input and cap collected volume by actual connected container capacity.
- Do not mark collected rainwater automatically potable; existing treatment/boiling/filtering rules remain authoritative for drinking.
- Allow stored rainwater to support cooking, washing, crop watering and later sanitation as well as drinking after suitable treatment.
- Implement the first collector as a resumable material-backed exterior Facility Project whose exact committed 200 L Water Butt becomes the persistent tank; require a Tarp catchment, construction materials and a reusable Hammer.
- Keep remote views from disclosing live tank contents and evaluate real rainfall lazily only when authorised nearby gameplay needs the collector.
0.5.0.10 - Water Butt Carry & Admin Hotfix (implemented)
- Keep the 200 L Water Butt out of current survivor backpacks/carried storage by giving the loose barrel a physically oversized carried-storage footprint while preserving Safe House Storage compatibility.
- Require any Water Butt containing liquid to remain in a survivor hand or be placed/installed.
- Let ordinary Location/World Drop pickup fall back to a valid hand slot when an equippable bulky item cannot enter storage.
- Ensure the development Admin Testing Toolkit can grant the Water Butt directly into a free hand without bypassing carried-weight or hand-occupancy authority.
- Let Facility Projects commit a required material directly from a survivor hand so bulky project materials never need an impossible intermediate backpack placement.
0.5.0.11 - Temporary Shelter Tarp Lifecycle Hotfix (implemented)
- Release the exact Tarp item reference when a Temporary Shelter is taken down or cancelled, while preserving the removed shelter/world-object history.
- Make historical
temporary_shelters.tarp_item_instance_idnullable and defensiveON DELETE SET NULLso a returned Tarp can later be consumed, discarded or incorporated into another physical system without a stale foreign-key lock. - Clear existing removed-shelter Tarp references during migration so already-started Rainwater Collection projects recover without a reset or replacement material.
- Reject Facility Project material deposits if an exact item is genuinely still attached to a live Temporary Shelter, and guard project completion against invalid live shelter references.
0.5.0.12 - Gardens (implemented)
- Add a persistent exterior Garden Plot beneath the Safe House Site/area/facility hierarchy without facility levels. Preparing soil is resumable timed labour using carried Garden Tools rather than an abstract upgrade purchase.
- Create a real 4 m² plot with bounded soil-water state. Real rainfall is evaluated lazily at the Safe House coordinates and updates that persistent moisture reserve.
- Permit nearby garden watering from functioning regional mains, the installed physical Rainwater Tank or carried water containers; manual watering consumes exact source water and AP.
- Add physical seed stock for carrots, onions, lettuce, beans, tomatoes, strawberries and seed potatoes, available through plausible scavenging contexts and normal Admin Testing grants.
- Establish the persistent plot, seed and water boundaries needed by the full 0.6 crop lifecycle while deliberately deferring planting/growth/harvesting until 0.6.0.0 so no half-grown crop state is stranded across the branch boundary.
- Keep real weather, temperature and season available as authoritative future crop inputs rather than cosmetic flavour.
0.5.0.13 - Workshop (implemented)
- Add an interior Workshop built from real construction materials and a physical work surface/workbench.
- Make installed/available tools determine repair and crafting capability; a Workshop becomes more useful because it contains useful equipment, never because it gained a level.
- Use the persistent Facility Project system for resumable material-backed construction.
- Establish Workshop hooks for later equipment repair, infrastructure maintenance and advanced self-sufficiency.
0.5.0.14 - Independent Power (implemented)
- Add a knowledge-gated physical photovoltaic installation with exact hand-carried solar panels, charge controller, inverter and individually persistent batteries of different Wh capacities.
- Calculate solar generation from panel rating/condition, local daylight and real cloud/precipitation. Night yields zero solar output; poor weather reduces charging.
- Store authoritative battery energy in Wh and expose percentage as a derived presentation value. Exact batteries preserve their own charge when installed or removed.
- Add Safe House source policy for mains-first backup, mains-only and independent solar/battery operation while keeping regional grid truth in Utilities.
- Make the electric cooker a real action load: Cooking progresses only for supplied seconds and independent operation consumes stored energy when solar cannot meet demand.
- Reconcile passive charging lazily rather than continuously simulating every Safe House. Installed infrastructure persists across death/abandonment; the survivor knowledge required to build/modify it does not.
- Keep the supply boundary extensible for later generators/fuel, lighting, refrigeration, radios, pumps, powered Workshop tools and security loads without adding a hidden Safe House power level.
0.5.0.15 - Independent Power Carry & Coordinate Hotfix (implemented)
- Route Independent Power Site-coordinate reads through the established encrypted
SiteRepositoryhydration boundary, fixing the post-construction Safe House crash without adding plaintext geography columns. - Raise the default hard overloaded carry-acquisition ceiling to 30 kg while retaining the 15 kg comfortable threshold and existing severe-encumbrance penalties.
- Preserve all 0.5.0.14 power schema, battery Wh, component ownership and Template API contracts; no reset, migration or seeder is required.
0.5.0.16 - Independent Power Battery-State Hotfix (implemented)
- Fix battery-state initialisation for already-installed battery component rows by using their authoritative
item_instance_idinstead of the direct-installidfield shape. - Prevent invalid foreign-key inserts into
item_power_stateswhile preserving exact physical battery ownership and stored Wh. - Preserve the 0.5.0.15 coordinate/carry hotfix, Independent Power schema and Template API; no migration, seeder or Development RESET is required.
0.5.0.17 - Security & Fortification (implemented)
- Model Safe House security as physical installations over abstract access zones such as entrances, windows and perimeter rather than a Fortress level.
- Build barricades/reinforcement from real timber, metal, fasteners and labour; installations have condition and require physical repair materials after damage.
- Allow infected pressure/noise-driven attacks to damage and eventually breach appropriate defences. Security buys warning, resistance and time rather than absolute immunity.
- Keep alarms/tripwires and similar warning installations compatible with the same physical facility/fixture model.
- PvP player breaching remains a later PvP-only extension with explicit tools/time/noise, persistent damage, exact item transfer and carefully designed offline protection; it must never leak into Solo/PvE.
0.6.0.0 - Health Pressure & Survivor Journal (implemented)
The 0.6 branch now opens by making neglected survival needs physically consequential and by giving each mortal survivor a durable, knowledge-safe record of the world they personally learned.
- Add staged Thirsty -> Dehydrated and Hungry -> Starving need presentation without turning HP into a hunger/thirst bar.
- Track continuous severe dehydration and starvation windows lazily with persisted onset/cursor/remainder state. Severe need only begins damaging HP after configurable grace periods; ordinary survivors remain capped at 100 HP and can eventually die at 0 HP if critical needs remain untreated.
- Reconcile survival deterioration before gameplay requests so a survivor who dies from elapsed-time deprivation cannot continue acting through a stale pre-damage request object.
- Add
/journalas a survivor-specific knowledge surface. Group personally discovered locations by survivor-authorised game taxonomy and show discovery stage/timestamps without recording or revealing what loot was inside them. - Add a recent discovery-milestone log backed by the existing auditable discovery history. Observed-but-unidentified places remain
Unknown location; the journal never receives hidden POI truth merely to conceal it in presentation. - Keep the journal read-model extensible for later health, combat, construction, farming and communication entries while preserving mortal survivor knowledge.
0.6.0.1 - Safe House Living & External Carry (implemented)
- Let Blankets, Bedrolls and Sleeping Bags be deliberately placed in a Safe House Bedroom so exact physical sleep gear can remain there instead of occupying carried inventory between sleeps.
- Give established Camps a basic physical sleeping area: installed bedding can remain at the Camp; with none available the survivor sleeps on bare ground.
- Let a Camp commit an exact physical Tarp as an overhead sleeping-area canopy without removing the existing standalone Temporary Tarp Shelter workflow. Installed tarps cannot simultaneously exist in survivor inventory.
- Track item-instance wetness for exposed Camp bedding. Real rainfall can make uncovered bedding wet during lazy reconciliation and wet bedding provides less sleep-quality benefit; protected/indoor bedding dries gradually.
- Snapshot the actual sleep gear condition/wetness used when sleep starts so the locked sleeping surface remains explanatory and deterministic.
- Add exactly two equipped-Backpack exterior attachment points for appropriate long hand-weapons such as a baseball bat, spear or rifle. Exterior attachments remain real carried weight and do not consume internal backpack storage slots/weight allowance.
- Preserve exact item ownership through moving, equipping and world-drop flows; prevent removing a Backpack while exterior items are still attached.
0.6.0.2 - Campfire Smoke & Raised Camp Bed (implemented)
- Give established Camps one persistent Raised Camp Bed fixture built from 6 Wood Scrap + 2 Nails with a reusable Hammer and 4 base AP; existing bedding at that Camp automatically benefits without moving or duplicating the item.
- Separate sleeping platform, bedding and overhead cover: bare ground remains valid, the raised frame gives a modest condition-adjusted platform bonus, and bedding/Tarp protection continue to contribute independently.
- Give active
burningfires a transient smoke signal while authoritative fuel/state says they are actually burning; prepared fires, embers and extinguished fires do not expose smoke. - Surface authorised smoke observations on both the surveyed map and a plain-text Game-page list, with visibility affected by distance, fire intensity, daylight, precipitation, wind and current weather visibility.
- Keep the server authoritative over whether the survivor may know the signal. Remote smoke projections use approximate coordinates and contain no hidden fire/Site/player identity for the client to conceal.
- Preserve a mode-aware world boundary so later PvE/PvP smoke can become a meaningful risk without leaking player information between Solo, PvE and PvP worlds.
0.6.0.3 - Camp Comfort, Ground Insulation & Drying (implemented)
- Add one persistent Improvised Ground Mat Camp fixture built from 6 Dry Sticks + 1 Duct Tape and 2 base AP; it contributes explicit ground insulation independently of the Raised Camp Bed and bedding.
- Weather Raised Camp Beds and Ground Mats lazily from elapsed time, with installed tarp cover slowing exposure. Broken fixtures remain present but stop contributing until repaired with physical materials/AP.
- Repair a Raised Camp Bed with 1 Wood Scrap + 1 Nails plus a reusable Hammer; repair an Improvised Ground Mat with 3 Dry Sticks.
- Dry installed Camp bedding from current temperature, humidity and airflow, with bounded active-fire heat accelerating drying only while the authoritative heat window remains valid. Tarp condition controls partial outdoor rain protection rather than granting perfect permanent dryness.
- Persist wetness on exact worn wettable clothing item instances during exposure reconciliation so changing/removing the garment preserves its real physical wet state.
- Derive a descriptive Camp sleep-comfort label from the real shelter/platform/ground-insulation/bedding/fire/condition inputs; do not introduce an abstract Camp level or upgrade tier.
0.6.0.4 - Medical Supplies & Wound Treatment (implemented)
- Persist explicit cuts, bruises, sprains and suspected fractures with body region, severity, bleeding, contamination, pain, treatment and healing state; derive Wounded/Bleeding/Pain summaries from those authoritative injury records.
- Apply bounded lazy blood loss from uncontrolled bleeding and elapsed natural healing influenced by treatment, hydration, calories, fatigue, thermal condition, cleanliness and contamination while retaining the ordinary 100 HP maximum.
- Add
/healthtreatment actions for pressure, wound cleaning, dressing, limb tourniquet use, cold packs, sprain support, fracture splinting and temporary pain relief using real carried supplies/AP. - Convert First Aid Kits into refillable physical containers and add First Aid Pouches/Trauma Kits. One-time packed contents materialise as ordinary child item instances and can be reorganised without magical capacity or supply regeneration.
- Add sterile dressings, wipes/wash, medical tape, elastic/triangular bandages, splints, cold packs, tourniquets, gloves and plausible medical loot. Seed Antibiotic Tablets and Oral Rehydration Salts as physical 0.6.0.5 groundwork without generic cure actions.
- Retire the legacy one-click Bandage status cure in favour of injury-aware wound treatment. Advance Template API to 67 with
medical/indexandmedical/kitv1 plusinventory/indexv25.
0.6.0.5 - Illness & Infection (implemented)
- Establish the extensible illness framework for fever, wound infection, gastrointestinal/unsafe-water illness and other bounded conditions.
- Allow vomiting/diarrhoea and similar symptoms to feed back into hydration/nutrition where appropriate.
- Support multiple simultaneous conditions such as Wounded, Infected Wound, Feverish, Dehydrated and Exhausted without turning HP into a hunger/illness meter.
0.6.0.6 - Farming Foundation (implemented)
- Connect the existing prepared Safe House Garden Plot and physical seed stock to plant -> water/tend -> persistent growth -> harvest -> eat/store/replant with remaining seed stock. The default plot has four useful crop beds, not a farming level.
- Ship the first seven crops: potatoes, carrots, onions, lettuce, beans, tomatoes and strawberries. Planting consumes physical seed quantity; harvested produce is ordinary physical food with normal carry, freshness and spoilage rules.
- Use Germinating, Growing, Maturing, Harvestable and Failed lifecycle states. Real rainfall, soil-water drawdown, weather-influenced evaporation, season, bounded current temperature/frost sampling and neglect alter growth/health/yield and can kill vulnerable crops.
- Reconcile crop state lazily from authoritative timestamps when the Garden becomes relevant; current point weather is not extrapolated across arbitrarily long offline periods. Failed crops persist until cleared. Deliberate seed saving is deferred in this milestone and implemented in 0.6.0.8.
0.6.0.7 - Medical Room (implemented)
- Add a Safe House Medical Room whose usefulness comes from actual treatment bed/cot, clean work surface, water, storage, supplies and later equipment.
- Use cleanliness and available resources to support safer treatment without granting a magical passive healing multiplier simply because the room exists.
- Keep medical storage and treatment actions server-authoritative and physical.
0.6.0.8 - Expanded Crops & Seed Saving (implemented)
- Expand the physical Garden catalogue from seven to thirteen crops by adding beetroot, peas, cabbage, courgettes, pumpkins and sweetcorn, with ordinary seed stock, harvest items, freshness and plausible scavenging sources.
- Add deliberate crop-specific seed saving: some mature crops can reserve planting stock during harvest at reduced edible yield, while suitable crops can be left occupying a bed through an additional seed-maturation period. Saved seed is ordinary physical planting stock and is never duplicated automatically.
- Keep seed-maturing crops vulnerable to water, temperature and neglect, strengthen seasonal growth differences and make realised food/seed yield respond to accumulated stress as well as crop health, without adding farming levels.
0.6.0.9 - Expanded Crops Seeder Hotfix (implemented)
- Correct the 0.6.0.8 expanded-harvest item seeder SQL placeholder/binding mismatch that could stop
php bin/console migrateafter the seed-saving migration was already applied. - Keep the released 0.6.0.8 migration and seeder IDs immutable. Failed seeder execution remains transactional and pending, so affected installations can upgrade and rerun the normal migrate command without reset or manual database edits.
- No gameplay, schema or Template API change.
0.6.0.10 - Food Preservation & Garden Sustainability (implemented)
- Add elapsed-time physical food-preservation batches for drying, smoking, pickling and salt-curing. Drying/smoking require dedicated Safe House Kitchen fixtures; recipes consume exact food/supplies and preserved outputs receive their own ordinary freshness profiles. Spoiled food cannot be restored by preservation.
- Add preserving jars, vinegar, coarse salt, preserved vegetable/small-game outputs and contextual scavenging sources. Dedicated equipment remains occupied until its active batch is collected. Powered refrigeration/freezing is deliberately deferred until a physical cold-storage holder can reconcile freshness against elapsed power supply rather than merely checking power at page load.
- Add persistent Garden Plot fertility/organic matter, crop-specific soil demand and soil stress. Repeated harvest/seed collection draws down the plot and poor fertility can reduce growth, health and realised yield without creating a farming level.
- Add one persistent Compost Bin per prepared Garden, physical organic-waste inputs, lazy maturation/turning, failed-crop residue recovery, physical Finished Compost and deliberate soil amendment. This closes the first grow -> eat/preserve -> compost -> restore soil self-sufficiency loop.
0.6.0.11 - Food Preservation Migration Hotfix (implemented)
- Add ordered preflight migration
20261010149900_food_preservation_preflight_repairto create/validate the intended food-preservation schema before the immutable 0.6.0.10 preservation migration executes. - Correct the effective preservation-process index to use
started_by_survivor_idrather than nonexistentsurvivor_id, while leaving the released 0.6.0.10 migration unchanged. - Support both partial 0.6.0.10 upgrade attempts and fresh upgrades from 0.6.0.9 with the normal
php bin/console migratecommand; no reset or manual table deletion is required.
0.6.0.12 - Garden Sustainability Seeder Hotfix (implemented)
- Correct required seeder
20261010154000_farming_seed_sustainability_v1to use the authoritative Common Nettles definition keynettle_bundleinstead of nonexistentcommon_nettles. - Add idempotent repair seeder
20261010154500_farming_repair_compostable_nettles_v1so any legacy/custom compost profile is normalised tonettle_bundle. - Preserve the normal upgrade path: affected installations rerun
php bin/console migrate; no schema rollback, manual SQL or Development RESET is required.
0.6.0.13 - Workshop Tool Availability Hotfix (implemented)
- Correct Food Smoker construction so a reusable Hammer may be survivor-carried or physically installed at the same active Safe House Workshop, matching ADR-0080 and existing Workshop-enabled construction rules.
- Apply the same correction to Compost Bin construction, which shared the carried-only regression.
- Keep consumable build materials survivor-carried and consumed normally; do not allow tools stored at another Safe House to satisfy the requirement.
- No schema, seeder or Template API change.
Later sanitation depth (not released; deferred)
- Treat sanitation primarily as Safe House infrastructure/condition rather than requiring a survivor to click Use Toilet every few hours.
- Allow functioning mains water to refill toilet cisterns normally; during an outage a toilet may be manually flushed with a real bucket/container of water.
- Let washing facilities, available water and waste management influence sanitation and later illness/contamination risk.
- Keep detailed bodily-needs micromanagement deferred unless it proves genuinely fun after launch.
0.7.0.0.0 - Living World Entity Foundation (implemented)
Branch purpose: 0.7 is the final large foundation branch before content-completion and online play. By its end, the Solo world should no longer feel like a collection of static systems waiting for the survivor: important infected can persist, hordes can move, the world can create local opportunities, missions can use real geography, and a non-pay-to-win economy has a concrete gameplay purpose.
The branch uses 0.7.0.<section>.<revision>. The fifth component is for minor fixes to the current subsection. A new gameplay subsection increments the fourth component; a small correction to that subsection increments only the fifth.
- Add an authoritative persistent-world entity boundary for important infected, former-survivor infected in applicable online worlds, hordes and later living-world actors.
- Preserve the existing scalable hybrid infected simulation: ordinary infected pressure remains aggregate/cell based; only entities that matter are persisted individually.
- Give persistent entities one authoritative world/cell/location state, provenance, lifecycle state and last-reconciled time.
- Reconcile inactive areas lazily from elapsed time and world conditions rather than running a global per-zombie tick.
- Persist consequences, not possibilities: untouched areas should still require little or no mutable database state.
0.7.0.1.0 - Persistent Important Infected (implemented)
- Promote selected infected from temporary encounters into authoritative persistent entities.
- Escaped persistent infected remain in the world instead of disappearing with the encounter.
- Support bounded local wandering, neighbouring-cell movement and reactions to meaningful noise without street-level continuous pathfinding.
- Killing a persistent infected resolves that exact entity; it must never be duplicated into another encounter.
- Project survivor-owned approximate last-seen observations to the map/list without exposing the actor's hidden current authoritative cell or creating zombie radar.
- 0.7.0.1.1 theme integration patch: bundled After We Fall 0.1.33 is reconciled to Template API 73, including themed last-seen markers plus infected encounter/result screens; core remains the authoritative template reference.
0.7.0.2.0 - Horde Foundation (implemented)
- Represent hordes as aggregate entities with estimated population/pressure, current cell, movement state, attraction target and reconciliation time.
- Do not simulate every horde member individually; anonymous members remain part of the aggregate while individually important infected retain one authoritative identity and may join a horde through membership state.
- Keep player knowledge separate from server truth: survivor observations store only last-seen area, approximate population range/confidence and age; live current horde position/exact population remain server-authoritative.
- Treat hordes as hazards, not ordinary Solo combat encounters. A lone survivor does not attack an aggregate HP pool; later contact focuses on avoidance, escape, concealment, distraction and potentially unsurvivable deep overrun.
- Reserve organised direct horde battles for later online PvE/settlement defence. Future PvP may let players influence horde routes through risky world/noise actions, never a direct
send hordecommand. - Establish configurable influence/danger/overrun threat bands, lazy-reconciliation queries, persistent-infected membership hooks and admin/testing diagnostics without yet implementing migration/noise movement consequences.
- Migration:
20261011110000_hordes_create_foundation. Template API 74. Bundled After We Fall theme 0.1.34 remains compatible; player-facing horde map/observation presentation arrives with the next movement/consequence stage.
0.7.0.3.0 - Horde Movement, Noise Response & Consequences (implemented)
- Reconcile horde migration lazily between cells.
- Let sustained/significant noise, fires, alarms, combat and other authoritative events influence movement where appropriate.
- Apply local consequences such as increased infected pressure, encounter danger and visible/audible observations.
- Allow Safe House activity to create understandable risk without introducing arbitrary scripted attacks.
0.7.0.4.0 - Former-Survivor Zombie Architecture (implemented)
- Reuse the existing authoritative survivor alive -> dead transition and publish one
SurvivorDieddomain event only when a living survivor genuinely crosses to dead; repeated damage against an already-dead survivor cannot queue a second reanimation. - Keep Solo unchanged. Only explicitly enabled future shared-world modes (
pveandpvp) may queue former-survivor reanimation. - Snapshot the authoritative death cell plus encrypted death coordinates into an idempotent reanimation record, with a configurable delay and a blocked state when no valid death position exists.
- Reconcile due reanimations lazily per world instead of running a global corpse heartbeat. A successful reanimation materialises exactly one
former_survivor_infectedworld entity and one shared persistent-infected state row. - Preserve one authoritative identity/location: the same former survivor uses the existing bounded persistent-infected wandering/noise response and may later join a horde through the existing membership boundary without being cloned.
- Preserve the survivor/death archive independently from the active infected lifecycle, and establish the non-power account lifetime statistic
Zombies contributed to the world, incremented exactly once when a reanimation is successfully materialised. - Defer exact carried-item transfer, killed remains and remains cleanup to 0.7.0.5.0 so this release does not duplicate or prematurely move possessions.
- Migration:
20261011120000_former_survivors_create_reanimation_foundation. Template API 76. Bundled After We Fall theme 0.1.36 remains compatible; this architecture-only milestone adds no new player-facing theme override.
0.7.0.4.1 - Former-Survivor MariaDB Migration Hotfix (implemented)
- Preserve the released 0.7.0.4.0 migration unchanged and add
20261011115900_former_survivors_mariadb_preflight_repairimmediately before it. - Recover MariaDB upgrades that fail with error 1901 because
world_entity_idwas referenced by a CHECK while its foreign key usesON DELETE SET NULL. - Pre-create the intended former-survivor tables with MariaDB-safe lifecycle constraints so the immutable 0.7.0.4.0
CREATE TABLE IF NOT EXISTSstatements become no-ops. - Support the partial-DDL failure state where
account_lifetime_statisticsalready exists; no manual rollback or Development RESET is required. - Keep Template API 76 and all gameplay/former-survivor rules unchanged. Bundled After We Fall 0.1.37 is a compatibility-metadata update only.
0.7.0.4.2 - Inventory & Health QoL (implemented)
- Make carried Medical Kits first-class specialist Inventory containers and retire the redundant standalone kit presentation by redirecting legacy kit links into Inventory.
- Add an inventory-wide Food & Water convenience view and alphabetise visible item lists without changing physical storage/ownership.
- Simplify Health to Injuries / Illnesses / Supplies; restrict Supplies to medical items and expose only server-authorised treatment actions.
- Show the survivor's normal condition meters/statuses on Health plus current-condition injury recovery and illness recovery/resolution estimates.
- Increase core and After We Fall desktop/mobile typography and spacing. Template API 77; Inventory contract v26; Medical contract v3; After We Fall 0.1.38.
- No migration, seeder or Development RESET.
0.7.0.4.3 - Medical Kit Carry/Drop QoL Hotfix (implemented)
- Keep Medical Kits as ordinary physical items stored in Self/backpacks while simultaneously exposing their nested contents through quick-access Inventory container tabs.
- Allow empty or loaded Medical Kits to be dropped as one authoritative subtree and picked back up into eligible carried storage without requiring the kit to be wearable.
- Preserve child ownership/parent links across drop/pickup and correct outer-container weight accounting for supplies nested inside a Medical Kit.
- Expose direct Move kit / Drop kit controls from the Medical Kit container view.
- No migration, seeder or Development RESET; Template API remains 77.
0.7.0.5.0 - Persistent Remains & Physical Loot (implemented)
- Transfer a dead online survivor's exact mortal
item_instancesonto their one authoritative former-survivor infected when reanimation succeeds; Solo remains outside this pipeline. - Transfer those same item instances onto one persistent remains world object before the former-survivor/persistent infected is resolved. Generated generic infected loot remains a separate fallback only when no authoritative possessions exist.
- Preserve nested container identity: taking a loaded root container transfers the same container and all descendants together, never copies or flattens its contents.
- Finalize fully looted/empty remains immediately and use the existing remains TTL/cleanup path for abandoned loot. Cleanup retires the linked resolved Living World entity while historical death/reanimation data remains.
- Add admin ownership/lifecycle inspection and keep player remains projections knowledge-safe, with no hidden entity/source IDs exposed to themes.
- Add migration
20261011130000_infected_persistent_remains_physical_loot; no required seeder or Development RESET. Template API 78; After We Fall 0.1.40.
0.7.0.6.0 - Mission & Currency Foundation (implemented)
- Add the general mission/archetype lifecycle rather than hard-coded one-off quests, with server-authoritative Offered, Accepted, Active, Completed, Rewarded, Expired, Failed and Abandoned state.
- Add survivor-owned Silver and account-owned Gold balances now, with separate append-only/idempotent ledgers matching their different mortality/account semantics.
- Mission completion is derived from authoritative game facts/actions; player routes can accept/abandon/claim but never submit
missionComplete=true. - Mission windows, lifecycle times and currency transactions use UTC as the universal authority clock.
- Mission rewards may award Silver; Gold remains account-level cosmetic/profile currency and is never a functional mission reward.
- Add
/missions, shared balance presentation and Development Admin controls for controlled foundation testing. - Add migrations
20261011140000_economy_currency_foundationand20261011141000_missions_engine_foundation; no required seeder or Development RESET. Template API 79; After We Fall 0.1.41.
0.7.0.7.0 - Discoverable Opportunities (implemented)
- Add first playable archetypes using systems that already exist: Visit Location, Survey Location, Search Location and Investigate Location. Authoritative Visit/Survey/Search actions advance matching accepted missions only after the normal game checks succeed.
- Successful searches can reveal deterministic found-note leads and area surveys can surface rumours. The resulting knowledge row belongs to that mortal survivor; it is not broadcast to every survivor/account.
- Target only survivor-known
Identified+locations in this slice, preserving the server knowledge boundary. Deeper POI/taxonomy/terrain/accessibility validation remains the purpose of 0.7.0.8.0. - Add UTC timed supply-cache opportunities. At
available_from, bounded world maintenance creates oneworld_event, oneworld_dropand real nested item instances. The physical cache is shared and first come, first served rather than cloned per player. - Link supply-cache drop pickup back to the existing world-event lifecycle so taking the cache resolves the one shared consequence and other mission instances reconcile against the authoritative result.
- Persist direction/distance from the source of the lead, show it in text, and expose survivor-authorised
MISmap markers without leaking hidden target state. - Add migration
20261011150000_missions_discoverable_opportunities; no required seeder or Development RESET. Template API 80; After We Fall 0.1.42.
0.7.0.7.1 - V2 Theme & Remains Lifecycle Hotfix (implemented)
- Bundles and reconciles the user-supplied After We Fall V2 theme to Template API 80 and the discoverable-opportunity/map target contract.
- Repairs infected-remains/world-object expiry so coarse
world_objects.stateremainsactive|removedwhilelifecycle_statecarriesexpired, preventing MariaDBchk_world_object_statefailures when remains become empty or expire. - No migration or reset.
0.7.0.8.0 - Geographic Mission Validation (implemented)
- Add a shared
GeographicMissionValidatorthat validates only survivor-known candidate locations against configured distance, canonical/internal taxonomy, provider access/terrain tags and mutable world state before an opportunity can be created. - Reject unknown/player-created procedural targets, private/no-access POIs, construction geometry, marine/surface-water geometry and objective/taxonomy combinations that do not make sense.
- Generated Search opportunities require a specific active scavenging loot table and reject locations whose finite manufactured stock is empty/depleted or whose current persistent consequence blocks searching.
- Supply caches use a stricter list of plausible land-based POI/internal taxonomy anchors rather than accepting every identified location.
- Persist a bounded
target_radius_mand validation profile on the opportunity. Text/map presentation describes a target area while existing authoritative Visit/Survey/Search services continue to decide actual GPS/range/action success. - Preserve the survivor knowledge boundary: geographic validation filters the already-authorised candidate list and never reaches around Discovery to reveal hidden POIs/entities.
- Add migration
20261011160000_missions_geographic_validation; no required seeder or Development RESET. Template API 81. - Main release packages now contain core/default templates only; custom themes are independently maintained outside the repository release ZIP.
0.7.0.9.0 - NPC Jobs, Fetch & Delivery (implemented)
- Add lightweight authoritative
mission_npcsanchored only to survivor-known geographically validated locations; this is intentionally a job-contact layer, not full NPC life/AI simulation. - Add discoverable NPC fetch jobs, initially configurable around
3 x Wood Scrap for 6 Silver. The survivor must carry qualifying physical item instances and those exact instances transfer to the NPC on handover before the mission completes. - Add courier jobs with one exact
Sealed Delivery Parcelissued only when the survivor accepts in person. The same item identity must still be survivor-carried at delivery; storage at a Safe House/drop/etc. therefore blocks completion until retrieval. - Require normal authoritative location range/GPS accuracy to accept at the giver and hand over at the recipient. Direct POSTs cannot bypass the proximity rule.
- Add
mission_item_requirementsand append-only handoff audit rows. Container subtrees transfer together rather than orphaning/duplicating children. - Add migration
20261011170000_missions_npc_jobs_fetch_deliveryand required seeder20261011171000_items_seed_mission_delivery_items_v1; no Development RESET. Template API 82 /missions/indexcontract v4. - Core/default presentation remains the only bundled theme.
0.7.0.10.0 - Threat, Clear & Persistent-Entity Missions (implemented)
- Adds exact
mission_entity_targetsbindings to active persistent important/former-survivor infected already known through survivor-owned sightings. No quest-only copies are spawned. - Persistent Threat objectives bind one exact entity; Clear Threat objectives bind a bounded exact group last seen in the same area, so unrelated kills cannot satisfy the job.
- Player mission projection uses stored last-seen intelligence and a known geographic anchor only; the entity's current authoritative cell remains server/admin-only state.
- Offered jobs fail if their target resolves before acceptance. Accepted/active jobs reconcile exact authoritative resolution from combat or other Living World processes to avoid permanently broken missions.
- Former-survivor infected now participate consistently in persistent infected sightings/noise encounters. Hordes remain excluded because they are aggregate hazards, not normal killable entity pools.
- Adds migration
20261011180000_missions_threat_persistent_entities; no required seeder or Development RESET. Template API 83,missions/indexv5,admin/game-inspectorv15.
0.7.0.11.0 - Procedural Mission Opportunities (implemented)
- Generate a restrained number of local opportunities from eligible geography and current world state.
- Consider distance, recent targets, archetype repetition, survivor condition, known danger and current discoveries.
- Suppress repetitive farming of the same place/objective and allow opportunities to expire naturally.
0.7.0.12.0 - Silver Economy, Pricing & Global Survivor Context (implemented)
- Expand the Silver foundation introduced in 0.7.0.6.0 into the full gameplay economy: earning rates, controlled sinks, buying/selling rules, price bands and world scarcity inputs.
- Silver remains survivor-owned, mortal and mode-isolated, with every earning/spend/adjustment continuing through the established ledger.
- Silver may buy functional survival goods because it is earned entirely through gameplay.
- Tune mission rewards and trader prices together to avoid trivial inflation or grind-heavy scarcity.
- Expose a stable server-side global gameplay/template context (survivor HP/needs/AP/carry/currency/position/world/location) so shared theme components do not need controller-specific fetch workarounds.
0.7.0.13.0 - Gold Entitlements & Account Identity (implemented)
- Expand the Gold balance/ledger foundation introduced in 0.7.0.6.0 into cosmetic entitlement ownership and profile identity.
- Gold survives survivor death and can never be dropped, stolen, looted, destroyed or transferred as gameplay state.
- Future builds may allow Gold to be purchased with real money; it remains strictly zero-gameplay-power.
- Add the entitlement boundary for cosmetics, profile presentation, badges, patches/titles and future supporter/subscriber identity.
- Support auditable grants, purchases, reversals/refunds and idempotent transaction references.
0.7.0.14.0 - Wandering Trader Foundation (implemented)
- Add the Wandering Trader as a Living World event/entity rather than a permanent global shop button.
- The trader appears at a plausible nearby real/game location for a bounded visit and can later leave/move.
- The server decides when a survivor is allowed to know the trader's current location; hidden trader state is never sent and merely concealed by CSS.
- Keep the first trader implementation deliberately abstract/safe from full NPC combat simulation; hostile conditions may cause the trader to leave rather than requiring a complete NPC AI/HP system.
0.7.0.14.1 - Wandering Trader Signal Flare Hotfix (implemented)
- Let an active trader periodically emit a visible signal flare through the existing world-event observation system.
- Survivors inside the flare visibility radius who already know the host POI gain a temporary exact
FLRmap/Nearby marker, without counting as a personal trader sighting. - Expire the marker quickly and resolve it immediately on trader departure so it cannot become permanent live tracking.
- Keep broader rumours, approximate sightings and trader movement in 0.7.0.15.0.
0.7.0.15.0 - Trader World Events, Rumours & Movement (implemented)
- Surface sightings through ordinary world-event/observation channels, including approximate rumours that never disclose the authoritative hidden host.
- Grade trader knowledge as approximate
RMRrumours, temporary exactFLRsignals and personalTRDlast-seen sightings rather than one magical live marker. - Reconcile trader relocation lazily by moving the same authoritative Living World entity/visit between plausible POIs; record exact movement history for admin/diagnostics only.
- Resolve old-stop transient intelligence on movement while keeping personal sightings as historical last-seen knowledge.
- Integrate map search areas/markers, Nearby World Events and Journal sightings while keeping equivalent text navigation available.
0.7.0.16.0 - Trader Stock, Buying & Selling (implemented)
- Generate bounded, contextual trader stock rather than exposing every item in the database.
- Functional stock is purchased with Silver and may include ordinary food, water, medicine, tools, weapons, ammunition, seed and other survival supplies.
- Gameplay stock uses real item instances and finite stock; buying transfers ownership rather than duplicating items.
- Let the trader buy selected goods for Silver with demand/quantity controls so the system cannot become an infinite currency generator.
- Keep prices/data database-driven and inspector-visible for later balancing.
0.7.0.17.0 - Account Identity, Cosmetics, Badges & Patches (implemented)
- Add persistent account entitlements for non-power identity/cosmetic content.
- Gold may buy cosmetics, profile presentation, decorative patches/titles and similar zero-gameplay-effect entitlements.
- Add account/profile badges for sources such as supporter/subscriber status and account longevity (for example
Survivor for 5 years). - Allow players to choose a limited set of featured badges/profile identity elements rather than displaying an unbounded wall of icons.
- Cosmetic entitlements survive death and cannot be stolen/looted/destroyed; they confer no hidden mechanical benefit.
- Leave broader gameplay achievements (for example First Shelter/First Potato) for a later dedicated achievement system, while keeping the account-identity/event architecture compatible with them.
0.7.0.17.1 - Trader Fresh GPS Contact Hotfix (implemented)
- Refresh trader contact state from a genuine high-accuracy browser position instead of depending on stale stored survivor coordinates.
- Require a fresh position again at every Buy/Sell settlement before Silver or physical item ownership can change.
- Keep existing trader radius/GPS accuracy policy and Development Location override semantics unchanged.
- Implement the enhancement in shared core UI/server routes so normal independently maintained themes inherit it without a Template API bump.
0.7.0.18.0 - Mission Rewards & Economy Integration (implemented)
- Connect mission/world-event rewards to Silver and appropriate physical rewards/information.
- Keep Gold outside ordinary functional mission progression except for explicitly non-power promotional/account grants if ever desired.
- Record reward provenance and prevent duplicate completion/payment.
0.7.0.18.1 - Mission Reward Seeder Hotfix (implemented)
- Fix the mission reward-profile seeder to implement the mandatory
Seeder::run()contract so migration/seed commands can bootstrap normally. - Add regression coverage that loads configured seed providers and verifies every registered seeder is concrete and implements
run(). - Keep the 0.7.0.18.0 schema, seed contents, Template API and gameplay behaviour unchanged.
0.7.0.19.0 - Economy & Reward Exploit Protection (implemented)
- Add database-level/idempotent protection against duplicate mission rewards, duplicate purchases and replayed requests.
- Add sensible opportunity/reward cooldowns, duplicate-target suppression and auditable administrative adjustments.
- Add checks/telemetry for impossible travel or suspicious economy behaviour without treating client location as authoritative proof.
0.7.0.20.0 - Missions, Trader, Map & Journal Integration Contracts (implemented)
- Add server-defined Available / Active-or-Claimable / History mission groupings without forcing a visual theme layout.
- Add one survivor-authorised
navigationIntelprojection for known mission targets, trader rumours, signal flares and personal last-seen trader sightings, including current distance/bearing and certainty semantics. - Keep legacy
missions,missionTargets,worldEventsandtraderIntelvariables for backwards-compatible independently maintained themes. - Provide equivalent plain-text mission/trader navigation on the core Game page so map interaction remains optional.
- Extend the mortal Survivor Journal with authoritative mission lifecycle events and world-event observations already owned by that survivor, without exposing hidden live state.
- Expand Theme Inspector previews/contracts for available, active/claimable, history, rumour, flare and last-seen states. No schema migration, required seeder or Development RESET. Template API 92.
0.7.0.21.0 - External Auth Configuration & Gold Purchase Foundation (implemented)
- Audit the already-implemented Google and Apple authorization-code adapters rather than duplicating them. Keep provider
subas the durable account identity key and keep provider secrets outsidepublic/. - Add admin-only readiness diagnostics for Google/Apple credentials, exact callback URIs and Apple private-key source without rendering secret values.
- Make session SameSite policy configurable and explicitly support Apple's cross-site
form_postcallback throughSESSION_SECURE=true+SESSION_SAMESITE=Noneon the public HTTPS deployment. - Add provider-neutral Bags of Gold Coins catalogue, purchase-order snapshots, immutable/deduplicated provider-event records and one-time fulfilment records. Seed packages inactive/unpriced so checkout cannot accidentally become live.
- Add a Gold purchase service that refuses unverified provider events and credits the existing account Gold ledger with deterministic idempotency. Browser wallet success remains non-authoritative.
- Preserve raw HTTP request bodies for future webhook-signature verification and document the full Google/Apple/Stripe setup path. Template API 93.
0.7.0.22.0 - Living World Observations (implemented)
- Convert already-authoritative world changes into one survivor-perceivable observation projection without exposing hidden actors or server state.
- Add bounded audible-noise observations from recent NoiseEvents. Loud activity is represented as a coarse source area only; source refs and other-survivor identity are never projected. Local rain/wind can mask hearing range.
- Add nearby visible infected-remains clues. Daylight and current visibility influence whether remains can be seen; loot, former-owner identity and persistent-entity linkage remain hidden.
- Reuse current smoke, horde-threat, world/utility-event and trader knowledge rather than duplicating their authority. The normalized
livingWorldObservationscontract explicitly distinguishes current sensory observations from historical last-seen knowledge. - Extend the mortal Journal with retained horde/persistent-infected sightings using only survivor-owned last-seen snapshots. Historical observations never update from current hidden entity position.
- Keep all specialist legacy arrays for independently maintained themes. No migration, required seeder or Development RESET. Template API 94.
0.7.0.23.0 - Living World, Mission & Economy Inspectors (implemented)
- Add focused Admin Living World, Mission and Economy inspectors while retaining the broad/raw Game Inspector.
- Add append-only
system_decision_tracesoperational evidence. Traces are never gameplay authority and are never exposed to ordinary player routes. - Procedural mission refreshes persist bounded candidate rejection/selection summaries; configured reward profiles persist deterministic chance/cooldown/content decisions for future missions. Historical rejected candidates before this release are not guessed.
- Trader settlements snapshot exact pricing inputs (base/retail/buyback, condition, scarcity, demand and multiplier) and horde intent/movement records authoritative before/after reasons.
- Inspectors expose authoritative-vs-last-seen Living World state, mission lifecycle/rewards, Silver/Gold provenance, trader budgets/trades/signals, replay receipts, security telemetry and admin adjustments. Economy inspection also includes account entitlement history, provider linkage without encrypted identity payloads, and disabled Gold-purchase groundwork.
- Adds migration
20261011280000_system_decision_trace_foundation; no required seeder or Development RESET. Template API 95 with three new Admin contract-v1 surfaces.
0.7.0.24.0 - Foundation Consolidation & Gameplay Polish (implemented)
- Reconcile the 0.7 gameplay foundation before live-only payment testing: persistent-entity identity, lazy movement, horde effects, remains ownership, missions, trader lifecycle/stock, economy, Journal/map knowledge filtering and external account login.
- Close configuration, template-contract, documentation and gameplay-consistency gaps found during local/dev testing.
- Exercise clean-install and upgrade migrations/seeders, mode isolation and abuse/idempotency paths that do not require a live payment provider.
0.7.0.25.0 - Verified Gold Checkout, Google Pay & Apple Pay (not released; deferred to 0.7.9.0.0)
- Superseded as the immediate next milestone when the project entered BETA world-depth development after 0.7.0.24.0.
- The provider/payment groundwork remains present but disabled; verified live checkout moves to the dedicated 0.7.9.x.x payment phase.
0.7.0.26.0 - 0.7 Final Sign-off (not released; superseded by staged BETA sign-off)
- The former immediate sign-off milestone is replaced by the deeper 0.7.1-0.7.8 BETA world-building sequence and the final 0.7.9 payment/hardening phase.
0.7.1.0.0 - Content Catalogue Audit & Population Framework (implemented)
Branch purpose: the project is now in BETA. Core mechanics are established; 0.7.1 turns the existing systems into a deep, interconnected survival world before payment work resumes.
- Establish the design rule that every physical item should have at least one meaningful use or transformation path and at least one legitimate acquisition/source path where applicable.
- Add
content:audittooling to expose dead-end and unreachable catalogue candidates before large content population. The initial audit is diagnostic rather than a hard zero-debt gate because existing catalogue debt is intentionally being worked down across 0.7.1. - Add true exact-physical-item multi-ingredient Cooking slots with quantities, optional/substitution-ready choices, measured water, ordinary cookware/heat requirements and non-duplicating item consumption.
- Seed Rabbit & Root Stew as the first multi-item proof: rabbit meat + two potatoes + onion + 500ml water.
- Convert physical knowledge sources from instant-click learning to cumulative timed study with bounded study sessions and retained progress.
- Add Camp Cooking & One-Pot Meals and the exceptionally rare The Ultimate Guide to Survival. Completing the Ultimate Guide requires 48 hours of accumulated study and grants every active Knowledge entry explicitly marked
book_learnable; it never reveals hidden world state, map fog, entities, loot or player positions. - Add deterministic rare-loot eligibility gates independent of ordinary loot weights so exceptionally rare physical finds can remain genuinely exceptional.
- Knowledge remains survivor-scoped and dies with that survivor; books remain physical items and are not consumed by study.
- Template API 96 exposes study progress and multi-ingredient recipe slots to core/fallback templates.
0.7.1.1.0 - Food, Drink & Consumables Population (implemented)
- Replace overly generic food/drink coverage with a broad plausible everyday catalogue: canned foods, dry staples, snacks, beverages, fresh perishables, ingredients and household consumables.
- Give items grounded mass, calories, hydration, perishability, packaging/container behaviour and contextual acquisition.
- Prefer meaningful differences over cosmetic duplicates: compact calorie density, water/fuel preparation cost, spoilage, bulk and storage life should matter.
0.7.1.2.0 - Cooking, Meals & Ingredient Recipes (implemented)
- Expand one-pot meals, soups, stews, frying, roasting, boiling, porridge, broths and other practical preparations using the multi-ingredient framework.
- Add recipe substitutions/ingredient groups where the technique reasonably accepts alternatives, including future cultivated/wild equivalents such as onion/wild onion.
- Keep exact physical ingredient ownership, freshness, water provenance, cookware capability, heat and time authoritative.
0.7.1.3.0 - Farming, Gardening & Seed Depth (implemented)
- Deepen the existing crop/seed system rather than replacing it: broaden useful crops, harvest chains, crop-specific yields, storage and seed-saving relationships.
- Ensure every crop has a reason to exist through nutrition, cooking, preservation, seasonality, resilience, seed value or trade use.
0.7.1.4.0 - Wild Food, Foraging & Plant Knowledge (implemented)
- Expand UK-appropriate wild foods, useful plants, roots, berries, herbs, fungi and dangerous lookalikes by suitable habitat/season.
- Preserve knowledge-gated identification: an inexperienced survivor may see an unidentified specimen where a knowledgeable survivor can identify species and preparation risks.
- Add wild ingredients such as wild onion/garlic where geographically/ecologically appropriate and connect them to ordinary cooking recipes.
0.7.1.5.0 - Health, Illness & Treatment Depth (implemented)
- Rebalance injury recovery so ordinary sprains, bruises and cuts resolve over believable gameplay windows rather than routinely lasting for months; fractures remain serious and slow-healing.
- Expose recommended care and suggested supplies for every active injury/illness even when the survivor does not currently own the required treatment.
- Make gastrointestinal illness cause-specific: bacterial, parasitic and toxin-mediated cases have different targeted treatment rules while oral rehydration remains supportive care for fluid loss.
- Add a craftable Improvised Splint for moderate/severe sprains and suspected fractures, plus finite antiparasitic medicine for diagnosed parasitic gastrointestinal illness.
- Let aging food create a bounded food-poisoning risk and preserve existing water-quality illness exposure without teaching that antibiotics are a universal gastrointestinal cure.
- Keep all recovery/treatment values as gameplay abstractions rather than clinical guidance.
0.7.1.6.0 - Bushcraft & Natural Materials (implemented)
- Expand bark, fibres, reeds, resin, tinder, cordage, stakes, wood, bedding/insulation and other renewable natural materials.
- Add practical low-tech field recipes, tools and camp infrastructure rather than fantasy progression.
- Make outdoor knowledge, preparation and infrastructure a credible alternative to constant urban scavenging.
0.7.1.7.0 - Fishing, Trapping & Outdoor Subsistence (implemented)
- Reuse authoritative environmental/water detection but distinguish collectable water from genuinely fishable habitat.
- Add active fishing, fish traps, crayfish traps, frogs/frog legs, squirrel poles and expanded passive trapping using persistent timed placement/check/reset semantics similar to existing snares.
- Add bait and local renewable-resource pressure so one pond/woodland cannot provide infinite food; suitable resources recover over time instead of magically refilling.
- Connect hunting by-products such as offal to bait so outdoor systems feed one another.
0.7.1.7.1 - Closed Injury Contamination Hotfix (implemented)
- Treat contamination as an open-wound property rather than a generic injury property.
- Clear legacy contamination from bruises, sprains and closed/suspected fractures without resetting survivor state.
- Keep wound-infection risk and contamination recovery penalties restricted to open cuts.
- Advance Template API to 101 with
medical/indexv5 so themes can conditionally render contamination.
0.7.1.8.0 - Hunting, Carcass Processing & Animal Resources (implemented)
- Build on existing Hunt Area rabbit/squirrel/pigeon mechanics with deeper carcass-processing stages and useful meat, offal, pelts, bones, feathers and limited fat where biologically appropriate.
- Field dressing/cleaning carcasses affects survivor cleanliness and can contaminate tools/clothing/work areas; washing and appropriate equipment reduce risk rather than eliminating it magically.
- Knowledge and suitable tools improve recovery/waste efficiency without creating superhuman yields.
- Animal waste must have a use/disposal consequence: cooking where safe, bait, compost where appropriate, burial/burning/decay, smell and possible attraction.
0.7.1.9.0 - Hide, Fur, Bone & Primitive Clothing (implemented)
- Add pelt preparation, drying/curing/tanning and material-quality states.
- Add grounded uses such as crude rabbit-fur mittens, warm hat/lining, boot insulation, pouches, repair patches, bone needles/hooks and other small practical tools.
- Homemade gear should have believable trade-offs in durability, wet performance, bulk and dexterity so manufactured equipment remains valuable.
0.7.1.9.1 - Hide/Fur/Bone Seeder Recovery Hotfix (implemented)
- Preserve the released
0.7.1.9.0seeder/data bytes while recovering itsdry_stick/dry_sticksingredient-key typo through ordered append-only preflight and repair seeders.
0.7.1.9.2 - Hide/Fur/Bone Knowledge Seeder Recovery Hotfix (implemented)
- Preserve the released hide/fur/bone Knowledge seeder while recovering its invalid dependency on a non-existent
survivalskill through ordered append-only preflight and repair seeders. - Assign Hide Preparation to Hunting and Primitive Fur Sewing/Small Bone Working to Crafting after the immutable historical seeder completes.
- Keep Template API 102 and require no Development RESET.
- Support clean installs and interrupted upgrades without manual SQL or a Development RESET.
0.7.1.9.3 - Location-only GPS Refresh Hotfix (implemented)
- Expose an explicit zero-AP real-GPS position update separate from area surveying.
- Updating position changes only authoritative survivor location/travel state; it must not query hidden POIs, reveal discoveries, advance discovery stages, generate survey opportunities or spend survey AP.
- Keep passive local-observation refreshes compatible with development-location overrides, while an explicit real-GPS update deliberately exits simulated-location mode.
- Re-render the map and nearby/location-sensitive projections from the newly accepted position so the player marker and distances stay aligned with server authority.
- Keep Template API 102 and require no migration, seeder or Development RESET.
0.7.1.10.0 - Preservation & Food Storage Depth (implemented)
- Expand smoking, drying, salting, pickling, curing and storage across fish, game, vegetables, herbs and appropriate prepared foods.
- Connect surplus harvest/hunting/fishing to long-term camp survival without magical refrigeration or refill.
0.7.1.11.0 - Tools, Materials & Workshop Expansion (implemented)
- Broaden hand/workshop tools, nails, screws, wire, blades, handles, fasteners, adhesives, scrap and repair materials.
- Add dismantling/salvage pathways so ordinary manufactured objects feed the material economy.
0.7.1.12.0 - Crafting, Repair & Material Economy (implemented)
- Expand practical crafting, repair and conversion recipes using the richer natural/manufactured material catalogue.
- Continue the universal-utility rule: items should be usable, dismantlable, repairable, consumable, wearable, burnable, plantable, readable, tradeable or otherwise meaningfully interact with the world.
0.7.1.13.0 - Knowledge, Books & Survivor Learning Expansion (implemented)
- Populate specialist physical manuals for foraging, mushrooms, farming, seed saving, preservation, butchery, trapping, fishing, bushcraft, first aid, electrical/mechanical repair, carpentry, sewing/leatherwork and camp cooking.
- Study remains cumulative and time-based; different books may teach overlapping Knowledge and remain physical/tradeable after study.
- Keep The Ultimate Guide to Survival the holy-grail reference: extraordinarily rare and exhaustive for book-learnable Knowledge, but never omniscient about the hidden world.
- Ship eight new specialist manuals and eleven new Knowledge entries, with deliberate overlap between fundamentals and specialist techniques.
- Make learned Knowledge immediately authoritative for deliberate seed saving plus selected Workshop crafting and exact-item repairs.
0.7.1.14.0 - Loot Ecology & POI Population (implemented)
- Populate the enlarged catalogue contextually by POI and, where supported, room/area identity: kitchen, garage, bathroom, shed, garden centre, farm, workshop, pharmacy, shop and woodland should not feel interchangeable.
- More catalogue variety must not mean more total abundance; finite/depleting locations remain authoritative.
0.7.1.15.0 - Trader Stock, Value & Scarcity Reconciliation (implemented)
- Reconcile pricing, buyback, trader specialisms and finite stock with the enlarged catalogue and renewable-vs-manufactured scarcity.
- Preserve Silver as mortal gameplay currency and the zero-power Gold boundary.
0.7.1.16.0 - World Content Audit & Balance Pass (implemented)
- Run catalogue reachability/use-path audits, impossible-recipe checks, source/loot validation, item-fit checks and realistic mass/capacity reviews.
- Exercise outdoor-camp and urban-scavenging progression, renewable-resource pressure, food/water/fuel balance and clean install/upgrades.
- Do not force zero diagnostic findings by inventing meaningless uses; every resolved path must be a real gameplay interaction.
0.7.2.x.x through 0.7.8.x.x - Reserved BETA World-Depth Space
- Deliberately leave these streams available for environmental/ecology depth, camp/wilderness infrastructure, Safe House/domestic survival and other world systems exposed by real BETA playtesting.
- Do not pre-commit artificial branch boundaries before 0.7.1 play exposes what the world actually needs.
0.7.9.0.0 - Verified Gold Checkout & Payments
- Resume the provider/payment work only after the survival world has received its BETA depth passes.
- Implement server-authoritative Stripe-backed Gold checkout on the beta/live HTTPS environment, with Google Pay and Apple Pay where eligibility permits.
- Verify signed provider webhooks against preserved raw request bodies; fulfil Gold exactly once from verified provider events, never browser success callbacks.
- Add purchase history, cancellation/failure, refund/reversal handling and Admin diagnostics while preserving the absolute no-pay-to-win boundary.
0.7.9.1.0 - Payment Hardening & Live Verification
- Exercise sandbox/live-domain wallet eligibility, replay/idempotency, refund/reversal and provider-failure paths using the real beta environment.
- Keep payments disabled unless production readiness checks pass.
0.7.9.9.0 - 0.7 BETA Sign-off
- Freeze the complete 0.7 BETA line after world-depth and payment hardening.
- Re-run clean install/upgrade, mode-isolation, content integrity, security, knowledge-boundary and economy invariants before advancing the major roadmap.
0.8.0.0.0 - Reserved after 0.7 BETA sign-off
- Major 0.8 scope is intentionally not committed yet. Decide it from BETA playtest evidence rather than forcing the previous content roadmap after that content was brought forward into 0.7.1.
0.9.0.0.0 - Online World/Mode Isolation Foundation
Branch purpose: consolidate the previously separate PvE and PvP plans into one online-world branch built on the signed-off Solo Beta. PvE is established first, PvP rules are layered onto a completely separate world/profile state, and the branch closes with production-beta hardening.
- Add completely separate PvE and PvP world/profile state alongside Solo.
- Characters, inventories, Safe Houses, economy, discoveries, deaths and world consequences never cross modes.
- Account-level non-power identity/entitlements may remain shared where explicitly designed, without transferring gameplay state.
0.9.0.1.0 - PvE Presence & Shared World Consequences
- Add online presence/cooperative interaction on shared PvE geography.
- Activate persistent former-survivor zombies/player-created world history in PvE.
- Preserve server-authoritative discovery/knowledge boundaries and scalable lazy simulation.
0.9.0.2.0 - Friends, Messaging & Radios
- Add account-level friends/contact relationships carrying no gameplay state between modes.
- Add world/mode-isolated direct text messaging.
- Support physical walkie-talkies/radios for in-world text communication where possession, power, range/frequency and world context are authoritative inputs; voice chat remains out of scope.
0.9.0.3.0 - PvE Trade, Groups & Settlements Foundation
- Add controlled player trade foundations, cooperative groups/settlements and appropriate knowledge sharing.
- Cooperative/group missions may build on 0.7 without becoming mandatory progression.
0.9.0.4.0 - PvP World Rules
- Enable the completely separate PvP world/profile state.
- Resolve engagement, targeting, range, offline/safe-state, death and looting rules explicitly.
- Keep communications/location knowledge isolated from PvE/Solo.
0.9.0.5.0 - PvP Abuse, Spoofing & Anti-Griefing Controls
- Harden movement/location spoofing defences, combat abuse controls, rate limits, audit trails and anti-griefing boundaries.
- Prefer server-authoritative validation and explainable rules rather than client trust.
0.9.0.6.0 - Online Economy & Concurrency Hardening
- Stress-test finite item ownership, trade, trader stock, rewards, account entitlements and simultaneous actions for duplication/race conditions.
- Profile indexes/caches and introduce hot-state caching only where demonstrated necessary.
0.9.0.7.0 - Production Security, Reliability & Recovery
- Perform OAuth/session/privacy review, rate limiting, provider outage handling, backup/restore tests and operational audit coverage.
- Exercise migration upgrades and failure recovery under production-like conditions.
0.9.0.8.0 - Accessibility, Browser/Mobile & Theme Readiness
- Run accessibility, mobile/browser compatibility and text-only parity checks.
- Freeze/audit template contracts, catalogue all player/admin pages and awkward states, verify deterministic preview data and Theme Inspector coverage, and remove temporary development-UI assumptions.
0.9.0.9.0 - Production Beta Sign-off
- Freeze major feature growth and focus on reliability, balance, security and exploit resistance.
- Sign off Solo/PvE/PvP world isolation and online persistence before integrating/finalising the production visual theme for 1.0.
Deferred post-launch bushcraft depth
Additional shelter designs, learned advanced bushcraft designs, material substitution, cordage/tool capability requirements and related construction flexibility are deliberately deferred until after 1.0. The basic shelter/Camp loop is sufficient for the launch foundation; pre-launch work should favour integration, infected/world depth and production readiness over broadening shelter recipes.
Post-1.0 versioning
After 1.0.0.0.0, the five-part scheme continues. The 1.0.x.x.x line revisits and deepens systems already shipped before launch (for example 1.0.5.0.0 revisiting equipment/carrying/loot). 1.1.0.0.0 and later branch lines are reserved for genuinely new feature families. The fifth component remains the minor-fix/revision slot for the active subsection.
1.0.0.0.0 - Persistent Apocalypse
A deployable, feature-rich first public game in which a player can authenticate with Google/Apple, choose a non-unique player name, create a mortal survivor, explore real geography, discover both real POIs and plausible apocalypse discoveries, survive real weather, scavenge finite resources, fight/avoid infected, build shelter, develop renewable survival, undertake optional local missions, earn modest account currency through play, die and leave persistent consequences.
1.0 development also integrates the signed-off production visual theme/concept package onto the stable template contracts established by 0.9. Core plain templates remain shipped as the functional fallback/testing surface; the production theme overrides them without moving gameplay authority or domain logic into presentation files. Responsive/mobile layouts, navigation, game-owned icons/assets and all preview/edge states must be wired and verified before 1.0 sign-off.
Solo, PvE and PvP remain isolated. Online worlds support persistent former survivors and hordes. Core principles remain unchanged: 100 HP, no levels, no stat inflation, no pay-to-win, server-authoritative valuable actions, and no cross-mode gameplay state.