Promote CHANGELOG Unreleased → 0.10.0 (the schema-driven Build page for world
objects, #11) and bump wally.toml + SurvivorCore.VERSION.
Demo: new demo/server/Stage.luau — one switch for what the demo places in the
world (gather field + quest post, mobs, starting inventory, hand-test props).
The test-station prop rows now default OFF: they're scaffolding for working ON
the engine and crowded the spawn area for everyone else.
Collateral: the Build demo video on the docs Demos line and as an 8th site
video tile; the landing page's Studio card now tells the Build story; version
surfaces bumped across site, README and getting-started.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Promote CHANGELOG Unreleased → 0.9.0 (player trading #15, the player interact
window, and the bow rate-limit security fix). Bump wally.toml +
SurvivorCore.VERSION to 0.9.0.
Collateral: player-trading demo video as a 7th site video tile and a Demo line
in docs/trading.md + docs/interact.md; a full-width "Player trading" feature
card on the landing page; trading.md + interact.md added to the README doc
index; version surfaces bumped across site, README and getting-started.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A new server-authoritative, dupe-proof trade system. Walk up to another player,
trigger the "Trade" prompt; they Accept/Decline; both stage loose backpack
stacks (drag from the inventory grid, with −/+ qty steppers) and must Confirm
before anything moves.
Anti-dupe by construction: staging is by-reference (items never leave the owner
until commit), and the commit is one synchronous, no-yield critical section —
re-validate holds → pre-flight both receivers have room (new Inventory.canAccept)
→ remove both → grant with addUpTo → refund any residue. Item count is conserved
on every branch (verified: 200k-iteration conservation + fit-oracle fuzz).
Auto-cancels on death / leave / out-of-range (MaxDistance) / request timeout; a
staging change resets both confirms. New Trade server system + TradeUi client
window, the "Trading" Config section (tunable in SurvivorCore Studio), hooks
trade:started / trade:completed, and a trades_total progression counter. v1 is
backpack stacks only (worn gear reserved behind AllowEquippedItems).
- src/systems/Trade.luau, src/client/TradeUi.luau, src/shared/TradingConfig.luau (new)
- src/systems/Inventory.luau: exported canAccept (weight+slot fit oracle)
- src/shared/EngineConfig.luau: Trading section; src/init.luau boot wiring
- docs/trading.md, README, CHANGELOG (Unreleased), Hooks catalogue, extending.md
- demo/server/TradeTestStation.server.luau: /tradetest 2-player conservation harness
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Promote CHANGELOG Unreleased → 0.8.0 (SurvivorCore Studio, Engine Config #21,
content overrides #40). Bump wally.toml + SurvivorCore.VERSION to 0.8.0.
Collateral: admin-panel demo video tile on the landing site + docs/admin-plugin
Demos line; refresh the admin feature card + value-prop to name SurvivorCore
Studio / Engine Config / content overrides; bump version surfaces across
site, README and getting-started.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Hunting & butchering (#13): mob defs gain flat carcass fields (carcassItem/Hp/
Tool/YieldMin/Max/Seconds); a slain mob leaves a butcherable CARCASS that is a
tagged Gatherable — the whole harvesting pipeline (tool gate, per-hit yields,
HP bar, gather:* hooks, progression counters) is reused as the butcher flow.
Carcass looks come from SurvivorCoreContent.Carcasses.<mobType>; reactions key
on "<mobType>_carcass"; fields editable in the admin Mobs editor. Gatherable
gains generic PromptText/PromptObject attributes.
Death loot bags (#19, TCE port): dying drops inventory AND worn equipment
(config-toggleable) into an anchored ground-clamped bag — IntValue contents,
instant-loot prompt for anyone, floating countdown, owner-only beacon, death
toast, LifetimeSeconds despawn. Pickup is loss-proof: equipment restores to
empty slots first (satchel re-grows capacity before stacks), the rest grants
up-to-fit and the remainder stays bagged. New player:died lifecycle → deaths
counters via Progression; lootbag:dropped/collected hooks; TCE respawn camera
fix. New Inventory APIs: getEquipment, clearAll (capacity-safe order), addUpTo,
restoreEquip.
Fixed: ToolEquip forces CanBeDropped=false on cloned creator templates.
Demo: stone_knife + raw_meat (risky raw: Hunger -25, Poison +8), boar carcass,
multi-objective hunt_boar quest, hunter/butcher/hard_way achievements. Docs:
mobs.md butchering section + loot-bags.md; CHANGELOG; site card copy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Quests (#10): a Quests registry + server runtime — objectives (gather/craft/
kill/use × count, blank target = any) and rewards, autoStart + requires chains
(completing a prerequisite auto-starts dependents), optional turn-in at a
tagged QuestGiver (component + prompt). Rewards are never lost: a full
inventory parks the quest as ready and the grant retries on inventory change.
Quests menu tab (L) with per-objective progress bars; QuestLog JSON attribute
replicates state; quest:started/progress/completed/blocked via Hooks + bus.
Achievements: an always-on runtime for the existing registry, ported
architecturally from TCE. A shared Progression layer translates bus events
into auto-derived counters (gathers_reed, crafts_total, kills_husk, …) so a
def is just { key, name, counter, threshold } — flat in code and no-code.
Unlock-once + toast + Achievements tab (J) with progress bars.
Toasts: themed top-right notification queue (Notify remote + Toasts.show).
No-code: admin plugin gains Quests (single-objective + "+ Quest giver" drop)
and Achievements (counter/threshold) editors; the engine loads both from
SurvivorCoreContent. Demo: a 3-quest chain + 4 achievements + a giver post.
Fixed: registerPanel now ADOPTS a template-scaffolded tab (hides the
placeholder, builds into the authored frame) instead of silently no-opping —
this replaces the Quests/Achievements "coming soon" placeholders.
EventBridge parity: gather:*, craft:* and item:use now also cross the bus.
Changed: rojo 7.6.1 → 7.7.0 (rokit pin; CI follows; gate verified).
Docs: quests.md + achievements.md (new), content-authoring/admin-plugin/
extending/README updated, CHANGELOG Unreleased, site feature card.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A static landing page (site/) deployed to GitHub Pages via Actions:
- AI-generated brand: the survival-shield logo (favicon → 1024 + .ico) and an
atmospheric campfire hero, on the docs/design-language palette.
- Sections: hero, value props, feature grid (stats, inventory/crafting, gathering,
combat, mobs & AI, no-code admin), an "in action" showcase with the demo videos,
and a get-started/install panel. Dark translucent theme, responsive, self-contained.
- README refreshed to v0.5.0 with the full feature set, badges, and the site link.
The "See it in action" screenshot (site/assets/img/ui-showcase.png) drops in next.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Owner feedback: synced the engine into a fresh place, couldn't find the admin
plugin. Root cause is a docs gap — nothing told the reader that a plugin is
installed separately from a place sync.
- admin-plugin.md: lead the Install section with the key distinction (it's a
Studio editor tool, not place content, so an engine sync does NOT install it);
add per-OS plugins-folder paths (macOS / Windows); spell out the restart-once /
hot-reload-after behaviour; and note the form needs a place with the engine
synced (else the empty state), incl. the restart-drops-unsaved-sync caveat.
- getting-started.md: link Survival Stats + the admin plugin from Next steps,
flagging that the plugin installs separately from the engine.
- README: add a "Tuning, no code" pointer to the admin plugin from the front page.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Point to The Counter Earth (thecounterearth.com) as the engine's live showcase
(closed Alpha; contributors may get early access) and add a GitHub Sponsors
section at the bottom.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Foundation (Config/Assets/EventBridge/Hooks/Registry), content registry family, creator-owned component layer + Gatherable example, runnable demo place, Rojo/Wally/Rokit config, and release CI.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>