Habitat

Little steps. Look how far.

Progress, detours and the occasional wonky first attempt.

ONE LITTLE STEP AT A TIME

From a clearing to a little world.

Built, tried and captured.

  1. A place to begin

    The first Unity clearing: homes, a garden and a meeting place.

    First Unity prototype
    The first clearing · garden
    First Unity prototype
  2. Room to wander

    Paths connected cottages, farms, an orchard and a lake.

    Unity gameplay · historical capture
    The Open Valley · perspective 3D · farm
    Unity gameplay · historical capture
  3. Four original neighbors

    Moss, Pip, Pebble and Ember arrived in Unity.

    Unity integration · historical capture
    The Open Valley · perspective 3D · resident-closeup
    Unity integration · historical capture
  4. Life keeps moving

    Everyday habits keep life moving without waiting for AI.

    Observed Unity gameplay · local routines
    The Open Valley · current gameplay camera
    Observed Unity gameplay · local routines
  5. Home, hobbies and little rituals

    Enterable cottages, fishing, cooking, books, keepsakes and naps.

    Observed Unity gameplay · cottage reading
    Ember · One more page · observed gameplay
    Observed Unity gameplay · cottage reading
Read the journal ↗
FROM THE WORKBENCH

Recent field notes.

16 Oct 2026

A new hearth with living fire

The village campfire now combines a new textured Tripo stone-and-log base with locally animated flames, embers and warm light. Existing assets remain preserved and the live Unity preview is running.

Full entry & measurements

Can the shared hearth feel alive without animating a rigid flame mesh? Added a separate Tripo bonfire prefab and a bounded existing-campfire hookup; prior TripoSR sources and fallback remain intact. The art brief uses warm hut colors and existing village proportions, while final global art direction remains open. Measured 16 October 2026, source unity-tripo-bonfire-96b75efdc3298102: 4,858 base triangles; three embedded 2048 x 2048 PBR maps; 8/8 focused import/pause/use checks passed. Live frames 1955 to 2162 show clock, flame scale, ember position and light intensity changing. These are animation and import checks, not a performance benchmark. All three Blender/gameplay images and metadata were inspected and individually privacy approved. Startup/import tooling errors were resolved and retained; no subsequent bonfire runtime exception was observed. User camera and normal life playback were restored in the detached Editor preview; standalone player not rebuilt. See docs/tripo-bonfire.md for exact source, limitations and next owner style review.

16 Oct 2026

A shared visual language

A new art guide puts the hut, village and candidate trees beside a source palette and practical asset rules. Each reference keeps its own approval status.

Art guide · final English desktop light
Website capture · final light desktop board with four historical reference images and source swatches. It demonstrates the guide, not a new gameplay build.
Art guide · final German phone menu
Website capture · German phone navigation in dark appearance; all five page links fit.
Art guide · German phone provenance
Website capture · the hut’s original capture date, build and renderer remain readable in the native source disclosure.
Full entry & measurements

How can new pieces feel like one village? Art & style now brings the maintained art bible and design board into the website, in English and German. Four selected images lead to eight source swatches and six practical rules. The warm hut is approved as one asset; gameplay is historical implementation evidence; both tree studies remain candidates. Final palette, proportions, detail level and universal asset budgets remain open. The operator library frame and raw room concept are excluded from this public selection. The first composition placed too much prose before the images and its full-page screenshot retained unloaded tree placeholders. The revised board moves images forward, uses uncropped contain frames, removes repeated status labels, and offers native source disclosures. The fifth navigation link exposed a phone-menu expansion limit: the final allowance is 190 px and the measured five-link menu is 165.28 px. Final desktop frames show all four resources loaded. Both appearance themes, phone Escape/menu state, matching language routes and German provenance disclosure were exercised; the inspected tab reported no warning/error console entries. Measured 16 October 2026 for this website increment: 127/127 scoped Python checks passed in 19.47 seconds (localization, static pages, public builder, export, evidence, overview and fonts). The later menu-only CSS refinement was checked in the browser; 33/33 Node renderer/appearance/interaction checks passed on the final UI source. Browser layout check: 10/10 English/German art-page conditions at widths 320, 390, 768, 901 and 1280 had no horizontal document overflow. Reference selection: four images and eight material swatches from scripts/site_art.py, compared with the maintained art bible. These are scoped website observations, not simulation or performance acceptance. All eight website screenshots in asset-guide-20261016 were individually inspected with their sidecars, approved by codex-art-website and separately reviewed for internet publication. Private generated-file inventories identify their actual source snapshots. The first screenshot timestamp was recorded at metadata preparation; subsequent capture timestamps come from the saved screenshot file times. Full records and intermediate IDs are in docs/public-website.md. No Unity or model gates changed. Next: owner-operated Plesk deployment and checking both direct art-guide routes on the live host; local output or a Git push does not verify live deployment.

16 Oct 2026

A live window into the village

Habitat now has a detached preview window showing the new wind plants while the village runs.

Full entry & measurements

The owner requested a separate live game preview. Created and visibly inspected Habitat Live Preview, a detached Unity Game view on the current project. Used the normal Start living control to resume the village, retaining existing inference gates and budgets. Source tripo-unity-ae00b3c5cc783d90; Unity Editor 6000.3.26f1 / Metal / URP. Measured 16 October 2026 Europe/Zurich: three plant instances remain; server-side frame observation advanced from 9791 to 9796, and subsequent live verification reached frame 11084 with plant animation at cycle 59.13 and worldRunning=true. These prove continuing preview playback, not a sustained performance result. Screen capture is 1280 × 720. Both paused and running captures were inspected with metadata and privacy approved. Runtime material/transform edits can preview live; some code/scene changes reload/restart playback and temporary Play-mode edits need source persistence. No standalone rebuild was needed for this preview. Next: review new assets in the running window; Unity control was released to the bonfire task.

16 Oct 2026

A shared art bible for Habitat assets

Future assets now have a reusable creation skill and a visual reference board. Approved decisions and exploratory references stay distinct while the final palette and foliage detail remain open.

Full entry & measurements

Can new assets feel like parts of one world? Added docs/asset-art-bible.md and the local docs/asset-design-board.html, plus the personal habitat-asset-direction skill with automatic discovery. The skill requires actual reference inspection, a concrete asset brief, visual comparison and separate technical verification. It preserves the approved hut as an individual anchor without promoting tree studies, Tomodachi concepts or the generated shrub into a final global style. Measured 16 October 2026 against art-board-37b10107158be159: 6/6 reference images loaded in Chromium 151; 8 displayed source swatches match art/build_assets.py; zero horizontal overflow at viewport widths 1280 and 390 px. Skill quick_validate.py passed using an isolated PyYAML runtime. Desktop/mobile renders are local document evidence, not Unity gameplay or new asset acceptance. Each staged image and sidecar was inspected and individually privacy approved. No paid generation occurred. The next art decision is foliage detail and palette; a separate task owns website integration.

16 Oct 2026

A little wind beside the square

Can a small plant bring more movement to the village? Three textured shrubs now sway beside the square in Unity, ready for visual review.

Full entry & measurements

The owner requested Tripo plant creation, local animation, and import into AI Agent Habitat. A reusable glTFast-imported prefab now preserves the generated textures and plays a gentle three-bone wind loop; three decorative instances sit beside the central plaza with different sizes and phases. Existing assets and scene layout are preserved. This is a prototype, not final art-direction acceptance. Measured 16 October 2026 Europe/Zurich in Unity Editor Play mode, source tripo-unity-ae00b3c5cc783d90: (1) 4,870 triangles and three bones in one imported skinned mesh, from TripoPlantSetup; (2) three placed instances, from live hierarchy inspection; (3) 4.042-second loop with loopTime enabled, from imported clip settings; (4) upper-bone rotation changed 6.52 degrees between live frame observations, with frame advancement verified separately. Base-color, normal and metallic/roughness maps survived import, and actual rendered textures were inspected. Compilation passed; no new console errors followed the final capture. Capture 20261015T225040311830-944e6102c6ed is an actual 1280 × 720 Unity Editor Play mode camera render without HUD, individually privacy reviewed with its source manifest. It does not prove performance or standalone deployment. The existing Mac player was not rebuilt or replaced. Foliage uses whole-plant sway, not individual-leaf flutter; collision/navigation remain unchanged. The simulation was observed running; no resident action or simulation-state request was made. Details: docs/tripo-plants.md. Next: owner review, then coordinated standalone build if desired.

16 Oct 2026

A warmer hearth, another look

Can the hearth share the village’s friendly colors? The first native bonfire was rejected. A new local reconstruction brings copper logs and sage, teal and cream stones into the game, ready for another visual review.

Full entry & measurements

The owner rejected the first generated bonfire’s pale flattened appearance. Its native frame and rejected test build remain preserved; the prior approved hut player was restored while making the replacement. A new built-in imagegen concept informed another actual TripoSR mesh, rather than serving as implementation proof. Blender v3 showed washout/dark texture seams, v4 smoothed and recolored the mesh, v5/v6 explored coherent stone colors but retained 12 tiny boundary edges, and v7 closes the generated solid before simplification and validates the saved/exported source. v4’s original zero-nonmanifold figure was stale because it preceded simplification; later versions and this note correct that claim. No old evidence was overwritten. Measured 16 October 2026 Europe/Zurich: (1) the replacement raw mesh’s 28,176 triangles become 4,606 in saved v7, from generation report and Blender manifest/source; (2) 188 raw boundary edges become zero nonmanifold edges after v7 cleanup, checked afresh in the exporter; (3) 13/13 isolated Unity Editor checks passed at 00:28 Zurich for source, dimensions/material, unchanged colliders, flames/light, paused idle/validated use and picking coverage; (4) the scoped routine/home-life/evidence/journal-privacy/workshop Python suites passed 67 tests in 4.07 seconds. These checks do not establish natural activity frequency, native mouse picking or sustained performance. The final native source is unity-bonfire-source-905f9c190896-20261015222920, Blender SHA256 9fe83f91bf2e971aea86a851e809f82eb5fc421f4f75d84369a1e7033604ea8b. The normal player is open, simulation paused and background disabled; no inference or resident action was started. The solid uses one packed texture/material, while the pre-existing flame/light behavior remains separate and is raised to clear the taller solid. Existing navigation, model budgets, Needle gates, huts and tree studies were not changed by this increment. Prior build/source assets were preserved, with no pruning. The replacement is visibly more colorful but still has softened/fused log transitions, lacks the concept’s crisp cut-end rings and has artificial stone color-sector boundaries. It is integrated for review, not owner-accepted art. Evidence: first rejected actual native frame 20261015T221555158425-ba319f4e1f18; new concept 20261016T002104247757-6bb4d84b4ed6; actual raw CPU mesh preview 20261016T002344361202-ee7f285dd704 (corrected resolution-128 label; initial incorrect resolution-64 sidecar stays private/unapproved). Intermediate Blender front/underside pairs: v3 20261016T002415058682-c60e5f5064b6 and 20261016T002420438092-5047c33378f1 (washout/seams); v4 20261016T002458568822-41f5a0f0988d and 20261016T002505275474-cad6f12318af (smooth palette); v5 20261016T002542223326-564df428a904 and 20261016T002547695771-ce1b5e4eee11 (coherent colors); v6 20261016T002620136084-2c72993e41d0 and 20261016T002626090182-b374707e2bd9 (boundary-repair attempt); v7 20261016T002724727562-4fbfc7ddd68a and 20261016T002729672296-0d598ad4a571 (closed solid). Final actual native close/garden views are 20261015T223030821638-30c020d64204 and 20261015T223101501090-a3383bd41065, with prior garden baseline 20261015T221252196020-b70707df8d01. Every published image and sidecar was individually inspected and privacy reviewed, which is separate from artistic acceptance. Details: docs/bonfire-asset.md. Next is owner visual feedback on the actual replacement.

16 Oct 2026

One row, one little globe

Can the useful controls stay close without crowding the village? A small globe now switches languages beside the theme and menu controls, even on a narrow phone.

Website header · 02-phone-final
Website screenshot · final 320 px German header with globe, theme and keyboard-open menu on one row. The visible ring demonstrates keyboard focus.
Website header · 03-desktop
Website screenshot · English desktop header retains full navigation, with compact globe and theme controls.
Website header · 04-tablet
Website screenshot · German tablet header after matching the three visible control heights.
Full entry & measurements

The English/German text row is replaced by one native globe link inside header-actions. Its accessible name is localized to the current language, its title names the destination language, and it retains the matching route in both directions. The SVG is decorative to assistive technology. On narrow phones the menu becomes a 44 px icon with an explicit localized Menu label; tablets keep the short menu word and desktops keep the existing full navigation plus globe/theme controls. Earlier responsive menus and gentle decorations, persistent pause, reduced motion and sharing JPEG are preserved. On 16 October 2026, actual browser measurements covered English/German at 320, 360, 390, 768, 900 and 1280 px: alignment improved from 8/12 first-pass conditions to 12/12 after correcting a one-pixel tablet menu-height discrepancy, with no horizontal overflow. Every visible control measured at least 44 px in both dimensions. Matching-page About navigation was clicked German-to-English and back; Space/Escape, inert state and full theme cycling were checked. The flower still reported petal-sway and running. Current publication/localization/pages/export/evidence/overview/font suites passed 125 tests in 17.14 seconds, including an eight-route regression for one accessible globe inside the action group. The existing 28 Node renderer checks and five actual-handler interaction tests also passed. Four reviewed website screenshots preserve the first narrow-phone pass and final phone, desktop and tablet views; they show interface appearance, not new gameplay or performance. Final rendered-source inventory SHA-256 89caa0cf809cc5e8ff557b9371b03b1c18239494a27b154a0d67059378bb8c62 and exact source snapshot are retained privately. Next: deploy the website snapshot in Plesk and assess the globe on the owner’s device. A push alone does not prove deployment.

16 Oct 2026

A little movement, an immediate response

Can the website feel as welcoming as the village? Menus and buttons now respond with a little softness, while flowers and the sun move gently. Motion can be paused, and system preferences come first.

Website interaction · final German menu
Website screenshot · final German phone menu. The design and language switch remain familiar; separate state checks verify its interaction.
Website interaction · paused decoration control
Website screenshot · footer control after pausing decorative motion. The preference also persisted when opening the German edition.
Website interaction · sun beside the activity cards
Website screenshot · the existing desktop sun beside the activity cards. A still records appearance; changing browser transforms verify its slow movement.
Full entry & measurements

The German edition was pushed first in the separate website-only commit 55bf46d. This subsequent refinement keeps the design, both languages and reviewed sharing image. The mobile menu expands and collapses with a computed 200 ms height/margin transition, 140 ms opacity and 180 ms translation. ARIA and inert states update immediately; closed links are excluded from keyboard focus, Escape returns focus, and JavaScript now shares the CSS 900 px breakpoint. Buttons have brief pressed/hover/focus feedback; details, diagram panels and dialogs enter over 160 ms. Existing flower, sun, sprout and sparkle decorations animate only transforms, do not intercept clicks and pause on hidden pages. The footer Journal tools pause button persists across English/German and storage denial is handled; reduced motion takes priority. On 16 October 2026 the current publication/localization/export/evidence/overview/font suites passed 124 tests in 18.28 seconds. Actual-handler Node verification passed five new interaction tests plus 28 existing renderer/appearance checks. Browser verification passed 10/10 language/breakpoint conditions (English/German at 320, 820, 900, 901 and 1280 px) without horizontal overflow; Space/Enter/Escape and visible keyboard focus were checked. Actual computed flower/sun transforms changed between samples, while pause returned animation-play-state paused and German Resume restored running. Explicit local reduced-motion emulation reported no flower/sun animation, zero-second menu transitions and the disabled German system-controlled button. This used a labeled private fixture with forced media branches and a local matchMedia shim; it is not an OS preference measurement. Six reviewed website stills preserve original, intermediate, pause, reduced and final appearances; stills do not prove motion. Final source app.js SHA-256 f47b8b1c97264f70adabfa05d61cc2d139870b4e31abb74052d51e7c8b1a783a and style.css SHA-256 6919255653c89185b24daf21e143665a59388889fe7974c4e091fa149df3f4f7 were recorded by the Node renderer at 00:14:28 Zurich. No sustained frame-rate or input-latency acceptance was measured. Source and captures: docs/public-website.md. Next: owner Plesk deployment and assessment on the actual phone/browser. A website push alone does not establish a live update.

The evidence is here, too.