Devlog
What changed, day by day
Every pull request merged into main and every design decision recorded in the repo, newest first. Written from the pull requests themselves when the site is built.
Read from GitHub 8 Nov 2026 at build time
8 NovSunday 2026
51 decisions recorded
- We take leverage from community open source, within its licence
- A very small number of Workshop dependencies is acceptable
- The Workshop build is APL; the GitHub repo stays MIT
- The framework is always free; the flagship may take cosmetic donations
- The project takes donations to pay its running costs
- Overthrow code may be used and relicensed under MIT, with credit
- A permissive licence on GitHub governs the code in that repo
- No passive paycheck; unemployment benefit at the counter
- Sign titles are printed on the board
- No faction screen; police clock in at the duty desk
- A fine is a paper ticket paid at the police desk
- Major crimes are always allowed; no police means a louder alarm
- You wake up in hospital
- Names show up close, after an introduction
- Police gear is a second inventory
- Wanted is automatic; police get a description, not a name
- Killing anyone makes you wanted for murder; the spawn is a safe zone
- Survival needs are light
- Jail time is online time, and work shortens it
- Money leaves through fuel, repairs, food, medicine, property, and the law
- Apply to the police at the station desk
- Accelerated day and night by default
- One marked lawless area; the town stays civil
- Hostile intent is a light mechanic
- Top-tier crime needs tools from a fence
- Death costs a hospital bill and the New Life Rule
- Officers apply fixed penalties from config
- Every on-duty officer can arrest and escort; rank gates the extras
- Gamepad-friendly, PC-first
- A new character can buy the cheapest car
- Every M1 site moves onto one street now
- The playtest town is a 1989 Everon village with a test annex
- Private playtests first, then a public Workshop release with a showcase
- Animation and sound are part of done
- Ore is mined by swinging a pickaxe at the rock
- Scheduled events are parked
- Milestone 2 leads with four themes
- The framework ships as two addons in one repo
- The core decides what the game can do; the pack decides what this server is
- Owners configure through one JSON file over shipped defaults
- One JSON Schema is the source for config
- The flagship opens after M3, from the maintainer's PC first
- Unplaced scopes go to the milestone they fit
- Features talk through a server event bus
- Money is a ledger, not a balance
- Characters per account come from config
- Sites are prefabs
- Every `EL_` class becomes `LF_`
- Saves stay compatible within a major version
- Build for 128 players
- Both addons are MIT; only the pack may change later
- #344Roadmap shows the Development track beside the milestones.The roadmap shows the Development track (GitHub milestone #6) as its own sheet below the M1 to M5 cards. It is not shown as an M6.
- #338Roadmap epics become compact branch blocks in columns.The roadmap's milestone cards now pack each epic into a compact branch block, and the blocks fill one to three columns. Before, every epic was a tall row that unfolded into a full-width list.
- #337Research: agent-driven static asset pipeline (bowling ball first).Docs only: docs/research/asset-pipeline.md, linked from docs/README.md.
- #336Decisions: sites are prefabs, EL_ to LF_ rename, save compatibility, 128 players, licence.Records five architecture decisions the maintainer made on 2026-11-08.
- #333Write the core-vs-pack rule and add the LF_Everon1989 skeleton.docs/architecture/core-vs-pack.md: the rule ("the core decides what the game can do; the pack decides what this server is"), the four tests, the decided grey cases, and how a split works.
- #332Decisions: event bus, money ledger, characters per account (M2 foundations).Records three architecture decisions the maintainer approved on 2026-11-08, ahead of M2.
- #324Site follows the M1-M5 milestones, epics, and the core/flagship split.The site now follows the milestone plan from #221. The roadmap page lists M1 to M5 in order. Each milestone shows its title, a one-line goal, its status, and its issues.
- #321Roadmap outlines list each epic's sub-issues in build order.Docs only. The M2, M3 and M4 outlines now list the sub-issues each epic was broken into, in build order, in place of the old "candidate scopes" bullets.
- #222Ship gate skips the game for non-addon branches; LF everywhere.Two harness fixes that kept slowing agents down.
- #238Price-list rows span the sheet; session pull reads the per-checkout dir.Two fixes from the M1 final pass.
- #237Route check matches the new roadmap index wordingPR #221 merged before its website build check finished, and that check failed. The route check expects /docs/roadmap to contain "The gameplay plan", but #221 rewrote the roadmap index intro, so the...
- #221Outline M3 and M4, fold the phases into milestonesOutlines M3 and M4 from the maintainer interview on 2026-11-08 and retires the old Alpha/Release/After-release phases, so milestones are now the only plan.
- #233Mine ore by swinging the pickaxe at the rock.Ore is mined by swinging the pickaxe at the rock. The "F to gather" action on ore rocks is gone.
- #220WIP: painted board face, police porch layout, ATM prompt.Village polish from the maintainer's playtest: the police station reads as a station, signs hang on buildings and differ by site, props match what they give, and the ATM prompt is "ATM".
- #219Roadmap becomes the Tree of Life; Discord mirrors it per pillar.The roadmap page becomes the Tree of Life: a pannable, zoomable map of every M-milestone issue, built so a contributor can find open work, understand it, and claim it in a few clicks.
- #217Rework website for contributor conversionReworked the home page to invite contributors, with real captures from the playtest town, concrete in-world examples, the current M1 status, and clear ways to help.
- #216Session state, profiles, and saves live in one dir per checkout.Each checkout gets its own session dir: %LOCALAPPDATA%\LifeFramework\session\ holds its session.json, client profiles, and server saves.
- #215website: serve from life-framework.org.Automated ship from worktree domain-cutover.
- #213Car lot rows say what is missing in one short line.docs/playtest/rc-2026-11-08.md: the M1 release-candidate QA pass. Each journey step is marked works / fixed / known / not seen, with the evidence, the PRs it produced (#198 #200 #204 #206 #209 #210...
- #212Playtest characters own a garaged and an impounded car.From the maintainer's playtest: a test player should already own a car in the garage and one at the impound lot, so both flows can be tried right away.
- #211Test pool: reclaim dead-owner and hung slots, re-read config per poll.Stale remote slot. A remote holder can outlive its owner. On the real box, a holder whose local ssh had been killed kept server-2001-s2 locked.
- #210The police kit carries the station car key.From the maintainer's playtest: the police kit should include the keys to the cop car.
- #209The playtest host is police from the first join; one police roster.From the maintainer's playtest: he could not clock in ("ask an admin to add you to the police list") until a whitelist file was written by hand.
- #208Replace the LF stencil with the Life Framework emblem.Replaces the LF stencil mark with the Life Framework emblem the maintainer chose.
- #207NPC talk context at chest height; trader counter on a table.Playtest feedback: "The height of the interaction with the NPC is off, it's lower, between their legs."
- #206M1 RC: a real general store, and job toasts that say what to do next.Car lot opens a price sheet (Feature/Vehicles/LF_VehicleLotSheet.c). "Look at the cars" at the lot used to buy the first car outright, or show only "Cars are paid from your bank..." when the bank was...
- #204Pick up parcel works on a dedicated client.Blocker from the maintainer's live playtest: after a good courier sign-up, "Pick up parcel" was greyed with "Sign up at the workplace first". The server logged [ELDebug:Jobs] signed up ...
- #201Test box desktop: virtual display, screen + audio recording, clients from ssh.Gives the test box (lf-testbox) a desktop that agents can use over ssh, so game clients render and can be filmed with sound, lid closed included.
- #200Sessions on a pool machine start their game clients on its desktop.A session on a pool machine (session.mjs up --machine lf-testbox) can now run game clients.
- #191M1-18: guided arrival chain at the town clerkM1-18: the guided arrival chain. A new player is pointed at the town clerk on the square, talks to him once and gets their ID card, reads the town board, runs one parcel, banks the pay, and goes back...
- #198Clear the loading screen for a player the save restored.After a restart, every returning player sat on the loading screen forever, with game sound paused.
- #197Test pool: any free slot on any machine, FIFO queue, delta worktree sync.In-game test runs now go through a pool of machines instead of one server-2001 lock per PC with an offload fallback.
- #196M1-22: tidy and dress the village street.Tidy. Nothing that looks like debug gear is left on the street.
- #193In-engine filming: the game client records itself (#91)The game client now records itself, so filming works where screen capture could not: on the hidden LF-Agents desktop and in an unfocused window.
- #194Alarm at the site and a radio dispatch for every crime (M1-20).Every crime now reports through one entry point, LF_Dispatch.Report (till, vehicle and weapon robbery, breach and bank vault, hospital cabinet, and murder from #125, which radios but sounds no site...
- #195Add tools\cli playtest: one command from origin/main to in-game.tools\cli playtest (and a double-clickable Play Life Framework.cmd at the repo root): the maintainer's one command.
- #192Fine is a paper ticket paid at the police desk.M1-19: a fine is a paper ticket paid at the police desk (decision 2026-11-08).
- #188M1-14: contraband crate, pub drop, barn dressingCargo. The convoy no longer hauls rowan berries. Start convoy at the barn hands the member a crate of spirits: Prefabs/Items/Contraband/LF_ContrabandCrate.et, a hand-carried item on...
- #168M1-17: registry ledger at the desk, invite and join face to faceRegistry ledger (LF_OrgLedger, UI kit): the org desk (Roadmap_Org_Desk) opens a 1989 ledger page. With no organization it is a founding form: type a name, "Sign and pay $250".
- #176Hide police armory offers from civilians, explain the convoy refusal, stop the client crop VMEPolice-only offers hidden from civilians. LF_ArmoryDrawAction and LF_RankPromoteAction at Roadmap_Police_Armory are shown only to on-duty police (LF_ArmoryDrawAction.ShownTo on the replicated state).
- #190Merge remote-tracking branch 'origin/ws/m1-11-police' into ws/m1-27-murderMurder makes you wanted (Feature/Crime/LF_Murder.c).
- #189Test box: run the in-game suite on a second machine.Adds a second test machine (the laptop, ssh lf-testbox) so in-game test runs stop queuing on this PC's server-2001 lock.
- #181Give the courier parcel and the bank bag a meshRoot cause: a missing mesh, not hand attachment or a client-only spawn. The parcel (LF_CivilianJob.PARCEL_PREFAB) and the bank bag (LF_Bank.BAG_PREFAB, placed Roadmap_Bank_Bag) were the bare base...
- #187Keep the delivery-job sign-up across a restart and a respawnThe #183 journey run found that a playtest restart dropped the signed-up job (PARCEL -> UNEMPLOYED). #143 saved the career level but not the sign-up.
- #186Refresh a stale worktree resourceDatabase.rdb before every server boot.resourceDatabase.rdb is gitignored and every worktree copies the main checkout's file.
- #174M1-11: duty desk with a second police inventory, wanted board, no faction screenNo faction screen. Everyone registers (name and age) and spawns as a civilian. The faction menu, the spawn-location menu, their layouts, the EL_AskSelectFaction / EL_AskSpawnLocation RPCs...
- #172Pace the delivery career from config and keep the level hiddenPacing is config. LF_Jobs.conf / LF_JobsConfig gain m_iJobXpPerRun (100), m_iJobXpFirstLevel (500), and m_fJobXpLevelGrowth (2).
- #179M1-15: Hideout stash that holds items
- #185Every sign card says what comes next, so a stranger can follow the loop.Follow-up to #180 (M1-09), for the maintainer's playtest bar. A stranger has to be able to finish the loop with no instructions outside the game, and every sign and card has to be checked on a real...
- #184Add tools\cli prs: status and heal for stalled ws/* PRstools\cli prs keeps ws/ PRs moving after their agent has left (tools/prs.mjs).
- #183Merge branch 'ws/harness-ui' into ws/harness-journeynode agent-box/journey.mjs (also harness.mjs journey / report journey) plays the M1 journey on a running session.mjs up --clients 2.
- #182Garage it to keep it: garage pad, ledger card, impound lot and desk.M1-16: garage it to keep it (decision 2026-11-07).
- #180Place the M1 signs: a town map at spawn and one card per site.Signs placed (M1-09). New DebugWorld_Layers/Signs.layer puts a sign within 8 m of every town manifest site. Each one faces the street.
- #177Support page, cost list, and donation routes, shipped switched off.Adds a support system for the project's running costs, shipped switched off.
- #175Harness: read and drive every UI kit screen, test-only gate on the playtest mission, session-scoped channelScreens. The QA pass could not drive the ATM, shop, org desk, or the car.
- #173Let every on-duty officer arrest and escort; rank permissions are configDecision (docs/decisions.md, CEO call): every on-duty officer can arrest and escort. Rank gates the fine cap, the armory tier, and later supervisory actions, not the core loop.
- #171Wake up in hospital after a death, with a paper bill and debt.After a death the player wakes up in the village hospital (M1-26, decision "You wake up in hospital").
- #170Make the UI kit paper sheet opaque and legible.In-world first: these are the screens where we keep UI on purpose (forms, a typed price list, a printed card; decision "In-world first"). This change makes them look like the paper they stand for.
- #169Document the Discord server layout and moderation.Adds docs/community/discord.md, which records how the community Discord is laid out and moderated after the 2026-11-08 restructure, and links it from docs/README.md.
- #167Replicate station NPCs so clients see their uniformsNpc_Base.et now has RplComponent ("Rpl State Override" Runtime, "Parent Node From Parent Entity" 0) and Hierarchy, the same setup as vanilla Character_Base.et.
- #166Playtest QA: second pass on the village, interaction menu, and jail.Follow-up to #159: the merged features the coordinator asked to see from a player's view, and PR numbers in place of branch names.
- #164direction: the loop starts with arrival, not a faction screen.Automated ship from worktree direction-loop-fix.
- #162M1-13: ATM terminal and shop price list on the UI kitIn-world first: typing an amount and reading a price list are the cases where a UI is the right tool (decision "In-world first", roadmap M1 §b: "Keep UI").
- #163Rebrand the website and add the devlog, server-owner, and decisions pages.The site gets its own identity and the features it was missing. The Lovable look (blue gradient grid, glass cards, emoji badges, "Building the Future of...") is gone.
- #161Police can arrest and escort on a dedicated server.Found in the playtest QA pass: on a dedicated server, police could not arrest anyone.
- #160Show the jail in the world: sentence slip, online-only time, audible release, seated arrestM1-21: the jail you can see. Closes #106.
- #158Toasts reach the player on a dedicated server; the lot says pay from the bank.Found in the playtest QA pass (dedicated server + game client, agent-box/session.mjs).
- #159Hosted playtest: a friend can join a -noBackend dedicated server.Playtest QA pass on current main, and the fix that lets anyone join the hosted playtest at all.
- #154M1-12: one player interaction menu
- #153film fetch: survive GitHub 504s, reject error pages (#151)In-world first: not applicable (tooling only).
- #152Add the Discord connector (MCP) for running the community server.Automated ship from worktree discord-mcp.
- #137M1-25: Rebuild DebugWorld as a one-street 1989 village with a test annexDebugWorld is now a one-street 1989 Everon village with a fenced test annex, replacing the debug rows. The plan, site table, and map: docs/roadmap/m1-25-village.md.
- #133Ecosystem leverage map: repos, Workshop deps, asset sources, import policydocs/ecosystem.md: where Life Framework can take leverage from the Reforger community and free asset sites, and under which terms. No code or assets imported.
- #149Add the ecosystem leverage map and import policy.Records the maintainer's 2026-11-08 decisions and outlines Milestone 2.
- #144Queue website deploys on main instead of cancelling themThe website workflow used cancel-in-progress: true, so each new push to main cancelled the running deploy at npm ci. After #142, three main runs in a row were cancelled and nothing deployed.
- #139M1-28 follow-up: needs cap the character's real health at 75%Follow-up to #136. The maintainer's decision is that hunger and thirst reduce the character's real health to about 75% (and reduce stamina).
- #143M1-10: Progression survives a restartA progression payload is appended at save version 7 (one bump).
- #141Start agent tool runs on a hidden desktop so windows stop flashingAgent tool runs kept opening Workbench, server consoles, and game clients in front of the user and stealing focus.
- #142Move the website into the repo and host it on Cloudflare PagesThe life-framework.org site now lives in website/ and is built from the repo, so the site and the mod always match. Edits are pull requests. There is no database, login, editor, or user management.
- #140Add a merge driver for the enforce-lint baseline.Speeds up the agent loop. Today about 15 agent runs hit five problems: repeated merges of main, a slow validate, no single-test loop, shared scratch files, and no written protocol.
- #138Agent box: visual harness runs on Node 26; sign face reads MINING AREA in 3DThe 3D visual harness now runs on this PC (Node 26), and the #119 sign faces were checked in a rendering Workbench play session. That check found a bug in the sign face, which this PR fixes.
- #136M1-28: light survival needs (hunger and thirst never kill)Decision "Survival needs are light" (docs/decisions.md, 2026-11-08): hunger and thirst drain slowly, at worst cap health and reduce stamina, and never kill.
- #134M1-05: multi-client harness on a dedicated serverYes. This PC (RTX 3080, 16 GB, Windows 11) runs one dedicated server plus 2 game clients side by side.
- #135M1-04: Carried inventory and cash survive a restart
- #132Life/RP genre benchmark for the M2+ roadmapAdds docs/research/life-rp-benchmark.md, a benchmark of the life/RP genre to inform the roadmap after M1, and links it from docs/README.md.
- #131Decisions 2026-11-08: wanted, violence, survival, jail, money, release, quality, open sourceRecords eleven maintainer decisions from 2026-11-08 in docs/decisions.md and updates the M1 plan. Docs only; no code.
- #130M1-08: Registration form R-89 and a real ID cardHarness equivalent for step 2-4: node agent-box/harness.mjs flow ui-intake.
- #124M1-02: Town manifest and report townagent-box/town.mjs (TOWN) is the single list of M1 sites. It has 23 sites, covering spawn, post office, job drop, traders, ATM, both shops, vehicle lot, fuel and hospital tills, bank, hospital...
- #123Replace the heading-keyed features.md merge driver with a line mergeThe lf-features driver for docs/features.md keyed rows by their ### heading.
- #122Record the maintainer's 2026-11-08 decisionsRecords the maintainer's 2026-11-08 product decisions. Docs only.
- #119M1-01: Diegetic signs with a Read card and a printed board titleFriction hit: the issue named CardboardSign_01_base.et as the hand-made sign, but that prop is Rally-addon content: the test server reports "Wrong GUID/name ... Failed to open" for it and its mesh.
- #76Make tests call the code they claim to cover; require observed red-proofsAn audit found tests that could not fail, so they reported coverage that did not exist. Each one below now calls the production path or was deleted.
- #80Robustness: lifetime, cleanup, and fail-safe fixes (R2-R20)Robustness pass: lifetime, cleanup, and fail-safe fixes from the audit (R2, R4, R6–R15, R17, R19, R20).
- #118M1-07: Pay at the counter (no passive paycheck, duty pay, unemployment benefit)
- #73Security set B: range checks and police abuseSecurity set B: server-side range checks and police abuse.
- #117M1-03: playtest host (LF_PlaytestTown mission, cli host start/stop, auto-load)Missions/LF_PlaytestTown.conf ({1054CC8646357708}): DebugWorld through a new LF_MissionHeader with m_bLF_DevToolsOff 1 and m_bLF_HostStopFile 1.
- #97UX: toast layout, menu keyboard/pad input, local-only menu actions, player text to keysUX fixes from the release/next UI audit (U1-U8). release/next (#56) merged into main and its branch was deleted while this was in flight, so this targets main; origin/main is merged in.
- #111Filming harness: film a flow in game, PR evidence via release assetsThe filming harness (docs/direction.md → "Proof in the 3D world") records the game while an agent-box flow plays. It produces short clips as PR evidence now, and showcase camera passes later.
- #70Add a WORLD test for the axe damage path on a cuttable treeNew EL_Test_WoodcuttingDamage (logging/axe-damage, tier WORLD). logging/chain-wiring only proves the axe is listed in the tree's m_aTools.
- #115M1-00: Split the roadmap street into Street_* site layersThe escort car goes to Jail because its only action is LF_JailPutInVehicleAction.
- #114validate-scripts: fail on scripts that do not compiletools/validation/validate-scripts.ps1 reported OK on Enforce Script that does not compile. Only a server boot caught it.
- #112Plan Milestone 1: Playtest Town (journey map, in-world redesign, signs, arrival, 25 scopes)Plan for Milestone 1, Playtest Town: docs/roadmap/m1-playtest-town.md. Milestone: M1 Playtest Town.
- #113Serialize server boots: -server mode always listens on 2001The fix is one machine-wide server-2001 lock (withServerSlot) around test (every tier; fast was unlocked before), dev, wt e2e, and serve. serve fails fast when the lock is held.
7 NovSaturday 2026
19 decisions recorded
- A framework proven by a flagship
- Pure open source (MIT)
- AI-first contribution
- In-world first
- Death drops what you carry
- Major crimes need police online
- Progression is pluggable
- Weapons are available but licensed
- Signs are diegetic, with a "Read" for detail
- Short guided arrival, then free
- The flagship is a life sandbox
- NPC prices move with supply and demand
- Garage it to keep it
- One player interaction menu
- Radios, payphones, and pagers
- Buy and furnish property
- Milestone 1 is a signposted DebugWorld playtest town
- Playtests are hosted from the maintainer's PC
- 3D proof and filming are part of the dev loop
- #77Restart safety: bank singleton, session load, jail payload v5, no ground keys, plates, whitelistVerified on this machine: tools\cli validate 20/20; SUMMARY tier=fast passed=91 failed=0 total=91; SUMMARY tier=all passed=148 failed=0 total=148 (after merging main at 0c12011; before that merge...
- #79Security set A: close money/item duplication and unbounded rewardsSecurity fixes, set A: money/item duplication and unbounded rewards. Every fix is server-side, and every refusal logs EL_Debug.Warn/Error with "refused" and the reason.
- #71Gate the debug menu and agent-harness RPCs behind one server-side dev gateNote: an administrator can now use the harness RPCs on a dedicated server. Before this change every request there was refused. This follows the requested gate: debug opt-in OR ADMINISTRATOR.
- #83Give dedicated-server clients the account state, creation flow, and private notifications they needSuite (2026-11-07, after merging origin/main): tools\cli validate 20/20. tools\cli test --no-build --tier fast → [ELTEST] SUMMARY tier=fast passed=83 failed=0 total=83.
- #56Next versionrelease/roadmap is on main (#57). This is the version after it. Head 9d288e2 includes origin/main up to 5d968b7 (#65 junction safety).
- #84Decide garaged vehicles, one interaction menu, period comms, buy-and-furnish propertyAdds four maintainer calls to docs/decisions.md.
- #82Decide in-world first, diegetic signs, guided arrival, sandbox tone, dynamic pricesAdds the maintainer's next calls to docs/decisions.md.
- #81Add the decision log: death, police gating, progression, weaponsAdds docs/decisions.md, a log of design calls that could reasonably have gone the other way.
- #78Add the project direction: framework + flagship, M1 playtest town, AI-firstAdds docs/direction.md, the north star every agent and contributor reads before choosing work, and links it from the README.
- #74Add a ratcheting structural lint for Enforce Script (L1-L7)Adds tools/validation/validate-enforce-lint.mjs, a pure-Node structural lint. It catches the Enforce Script defect classes the audits kept finding by hand.
- #72Subtract dead tooling; fast wt list; test harness fails fastTooling subtraction, step 1 of the refactor. Every deletion was checked with git grep: nothing in code references the deleted files.
- #69Remove stale EPF instructions from the guides and feature docsEPF and EDF were removed from LifeFramework.gproj during the persistence migration, and the base game is now the only dependency.
- #68Unlink game-addons junctions through safe-rm in the test and validate scriptstools/test/test-e2e.ps1 and tools/validation/validate-scripts.ps1 still had their own Remove-GeneratedAddonRoot after #65.
- #67Never label a worktree with uncommitted edits as prune mecli wt list said merged (prune me) for a merged branch even when its worktree held uncommitted edits. Those edits exist nowhere else. Four stale worktrees were labelled that way while holding work.
- #66Run cli validate on every PR in GitHub Actions
- #65Never follow a game-addons junction when removing a worktree or test profilecli wt prune itself calls git worktree remove --force and then a recursive rmSync. test-e2e.ps1 wipes server/profile/test with Remove-Item -Recurse, and that folder holds the same junctions.
11 OctSunday 2026
10 OctSaturday 2026
- #27Document the gameplay roadmap apart from the stale site checklist.
- #26Add an agent box for script, world, and player-equivalent UI checks.cursor/mcp.json is machine-local and stays untracked via .cursor/.gitignore. Fresh setup is agent-box/setup.ps1.
19 SeptSaturday 2026
- #25fix debug world log errorsAutomated ship from worktree debug-log-fixes.
- #24debugworld: widen apple area boundary to cover the third trade tableAutomated ship from worktree prfeatures-vehiclelock.
- #23debugworld: load world entity before gameplay layers so props get physics bodiesAutomated ship from worktree civilian-collision.
30 AugSunday 2026
- #22Fix DebugWorld entity collisionAutomated ship from worktree no-clip-investigation.
- #21Fix DebugWorld boot issues: persistence, HUD/chat, gather tree, localizationAutomated ship from worktree issue-fixes.
- #20Add material-chain validator and MCP batch modeAutomated ship from worktree agent-tooling.
- #19Validate and repair DebugWorld placementAutomated ship from worktree debug-world-layout-checks-final.
- #18Fix debug menu actions in direct world runs
- #17Add DebugWorld state menuAutomated ship from worktree debug-menu.
- #16Add mining area warning sign to DebugWorld mining chainAutomated ship from worktree text-signs.
- #15Organize DebugWorld feature areasAutomated ship from worktree debug-world-opt.
- #14Merge remote-tracking branch 'origin/main' into ws/e2e-harnessAutomated ship from worktree e2e-harness.
- #13Fail-safe the character spawn: abort instead of spawning at originAutomated ship from worktree p0-ship-blockers.
- #12Add EL_ScreenshotCapture: in-world screenshot harness for AI visual checksAutomated ship from worktree screenshot-capture.
- #11Render custom text on signs with EL_TextLabelComponent; label the debug mining sign MINING AREAAutomated ship from worktree sign-text.
- #10Add mining area warning sign to DebugWorld mining chainAutomated ship from worktree text-signs.
- #9Fix localized hint formatting, wire plate/lock onto police M151A2, dedupe DebugWorld entity namesAutomated ship from worktree debug.
- #8Add greenhouse and planting beds to DebugWorld farming chain; fix duplicate entity names that crashed the debug serverAutomated ship from worktree framing-debugging.
- #7Add quantity tier visuals: swap item mesh by stack quantityAutomated ship from worktree quantity-visuals.
- #4Port mining area system (weighted ore spawns, respawn, pickaxe)Ports thebonbon's Main_World mining system.\n\n- EL_MiningArea: weighted prefab spawns in an area box, respawn timer, parented to area for accounting\n- MinableOre rebuilt on local...
- #3Port farming + base building (staged crops, area spawner, building placement)Ports thebonbon's farming_system branch.\n\n- EL_BaseCrop staged-growth: EL_CropStage table (duration/model/scale/offset/can-gather), RplProp stage + BumpMe, delete-after-final, area-spawner hook\n-...
- #2Port houses / keys / locks system (server-authoritative lock+key, save-data API)Ports thebonbon's Main_World houses/keys/locks.\n\n- EL_LockComponent/EL_KeyComponent rebuilt on the vehicle-lock semantics: RplProp locked+identifier, server-only setters, shared IdentifiersMatch...
- #1Port thebonbon whitelist + roleplay chat (UUID-file whitelist, join gate, chat channels/UI)Ports thebonbon's dedicated_server Whitelist + Chat systems.\n\n- UUID-file whitelist with CONNECT/POLICE/MEDIC types, join gate via OnPlayerAuditSuccess, respawn push, !wadd admin command\n-...