<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Log on gamahaus</title><link>https://gamahaus.com/log/</link><description>Recent content in Log on gamahaus</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 15 Jun 2026 09:00:00 +0700</lastBuildDate><atom:link href="https://gamahaus.com/log/index.xml" rel="self" type="application/rss+xml"/><item><title>the house got rooms, and rooms got neighbors</title><link>https://gamahaus.com/log/2026-06-15-the-house-got-rooms-and-rooms-got-neighbors/</link><pubDate>Mon, 15 Jun 2026 09:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-06-15-the-house-got-rooms-and-rooms-got-neighbors/</guid><description>&lt;p&gt;Gamahaus crossed a threshold this week. The 3D canvas learned to hold multiple floors at once — you can now stack them, see through to what&amp;rsquo;s below, and flip between them without losing your place. Stairs fill the voids. Roofs pitch and flip on demand. The camera got smarter too: double-click anything and it locks onto it; F-key toggles first-person mode and you&amp;rsquo;re walking through your own design, feet on the floor, presence locked to the room you&amp;rsquo;re standing in.&lt;/p&gt;</description></item><item><title>the scroll gets a third act</title><link>https://gamahaus.com/log/2026-06-11-the-scroll-gets-a-third-act/</link><pubDate>Thu, 11 Jun 2026 06:35:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-06-11-the-scroll-gets-a-third-act/</guid><description>&lt;p&gt;The journey inside finally has a payoff. The hero copy now bows out as the camera flies through the door, leaving the screen clean for the ride — and once you&amp;rsquo;re standing in the room, new copy fades in: &lt;em&gt;you&amp;rsquo;re standing inside the prototype.&lt;/em&gt; That&amp;rsquo;s where the honest part lives too: gamahaus is in private alpha, and right now its only users are my wife and me. A little pulsing status chip says exactly that — &lt;code&gt;private alpha · 2 users&lt;/code&gt; — and it&amp;rsquo;ll tick up as the doors open. Build in public means the status is part of the page.&lt;/p&gt;</description></item><item><title>step inside the cube</title><link>https://gamahaus.com/log/2026-06-09-step-inside-the-cube/</link><pubDate>Tue, 09 Jun 2026 19:15:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-06-09-step-inside-the-cube/</guid><description>&lt;p&gt;The hero leveled up. Scrolling now flies the camera through the doorway and into a furnished room — the breathing cube unfolds into floor, window, door, and bed as you go in, then folds shut on the way back out.&lt;/p&gt;
&lt;p&gt;On top of that, a polish pass: a faint film grain across the frame, neon edges that pulse like a slow heartbeat, an idle drift that wanders instead of spinning like clockwork, and the cube now resting tilted from above. The resolution scaler also learned to recover — a momentary GPU dip no longer leaves it permanently soft.&lt;/p&gt;</description></item><item><title>the wireframe cube, live in 3D</title><link>https://gamahaus.com/log/2026-06-07-landing-page-3d-hero/</link><pubDate>Sun, 07 Jun 2026 14:39:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-06-07-landing-page-3d-hero/</guid><description>&lt;p&gt;The brand&amp;rsquo;s wireframe cube is now a live WebGL hero on the landing page itself — neon edges, bloom, follows your cursor. Built end-to-end with Claude.&lt;/p&gt;</description></item><item><title>double-click to focus the camera — plus phases 1–3 re-audited</title><link>https://gamahaus.com/log/2026-05-21-camera-focus-audit-pass/</link><pubDate>Thu, 21 May 2026 21:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-21-camera-focus-audit-pass/</guid><description>&lt;p&gt;The QA bug from the last entry is still unresolved. Set it aside and went elsewhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Camera focus:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Double-click anywhere in the 3D view and the camera animates onto that point — 200ms &lt;code&gt;easeOutCubic&lt;/code&gt;, dollies to &lt;code&gt;min(current distance, 5m)&lt;/code&gt;. Raycasts against the scene; misses are silent. &lt;code&gt;F&lt;/code&gt; still re-fits to the full plan. Closes the most-common navigation gap now that wall-drawing got cheap.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eight-agent audit across phases 1–3:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Branch IDOR + TOCTOU.&lt;/strong&gt; Anyone could like/comment any draft via UUID guess. Branching trusted a pre-tx license read — source owner could flip license between gate and &lt;code&gt;INSERT&lt;/code&gt;. Both closed with &lt;code&gt;WHERE status='published'&lt;/code&gt; predicates inside the tx.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avatar URL traversal.&lt;/strong&gt; &lt;code&gt;HasPrefix&lt;/code&gt; accepted &lt;code&gt;cdn/avatars/me/../them/foo.png&lt;/code&gt;. Now url-parses, rejects &lt;code&gt;..&lt;/code&gt;, matches scheme + host.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sitemap race.&lt;/strong&gt; Publish mid-fill clobbered the invalidate signal. Added an &lt;code&gt;invalidatedAt&lt;/code&gt; snapshot; stale fills skip the cache write.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate limits.&lt;/strong&gt; Avatar &lt;code&gt;PUT&lt;/code&gt; was unbounded; notification + templates &lt;code&gt;GET&lt;/code&gt;s too. New heavy-read limiter (300/min/user); avatar mutations on the write budget.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;~70 findings triaged across two commits. 494 frontend tests + every Go package green at &lt;code&gt;-count=2&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>the 3D toggle was a layout leak — plus editor polish</title><link>https://gamahaus.com/log/2026-05-16-3d-toggle-layout-leak/</link><pubDate>Sat, 16 May 2026 11:51:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-16-3d-toggle-layout-leak/</guid><description>&lt;p&gt;Picking up from the last entry. The 3D toggle showing pure black turned out to be a layout leak, not a rendering issue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diagnosis:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fabric.js wraps its host canvas in a &lt;code&gt;.canvas-container&lt;/code&gt; div. &lt;code&gt;v-show&lt;/code&gt; on the inner canvas hid the canvas but left the wrapper&amp;rsquo;s layout space intact, pushing the 3D canvas 904px below the viewport. Fix: wrap both canvases in a single &lt;code&gt;v-show&lt;/code&gt; div so &lt;code&gt;display:none&lt;/code&gt; collapses the entire 2D subtree, Fabric wrapper included.&lt;/p&gt;</description></item><item><title>phase 2 + 3 wrapped — then qa caught a bug i couldn't fix</title><link>https://gamahaus.com/log/2026-05-14-phase-2-3-qa-bug/</link><pubDate>Thu, 14 May 2026 15:41:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-14-phase-2-3-qa-bug/</guid><description>&lt;p&gt;Long stretch since the last entry. Heads down through Phase 2 and Phase 3.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phase 2&lt;/strong&gt; shipped 3D extrusion of the 2D plan, the furniture catalog, material picker, the social loop (like / comment / follow), SSR for public surfaces, and twelve sub-tasks of editor polish.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Phase 3&lt;/strong&gt; added the procedural stick-man avatar customizer (avatars show up in owners&amp;rsquo; 3D scenes), the branch system (fork a published project, attribution chain preserved, license-gated), the template browser, and thirteen official starter templates.&lt;/p&gt;</description></item><item><title>claude vs codex: the editor</title><link>https://gamahaus.com/log/2026-05-06-claude-vs-codex-editor/</link><pubDate>Wed, 06 May 2026 20:45:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-06-claude-vs-codex-editor/</guid><description>&lt;p&gt;Last entry covered Codex&amp;rsquo;s pass on the editor — including a tagline that drifted from the one explicitly defined in the project bible. This one is Claude&amp;rsquo;s pass on the same surface, plus the call I made about which to keep going with.&lt;/p&gt;
&lt;p&gt;Same instruction to both: build whatever you can right now, skip the pieces that depend on me (email notification setup, R2 storage, etc).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where Codex won:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Codex went straight at the 2D canvas and shipped things I never asked for but immediately wanted:&lt;/p&gt;</description></item><item><title>workflow scaffolding: roadmap, progress, amendments</title><link>https://gamahaus.com/log/2026-05-03-workflow-scaffolding/</link><pubDate>Sun, 03 May 2026 13:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-03-workflow-scaffolding/</guid><description>&lt;p&gt;Login and dashboard shipped. Project CRUD shipped. The 2D editor is next, and it&amp;rsquo;s the biggest piece in Phase 1 by a wide margin. Felt the right moment to add scaffolding before pouring more code into it.&lt;/p&gt;
&lt;p&gt;Three new docs and one new command:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ROADMAP.md&lt;/strong&gt; — task-level breakdown the bible doesn&amp;rsquo;t have. Phase 1 detailed, later phases sketched.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PROGRESS.md&lt;/strong&gt; — where we left off, what&amp;rsquo;s blocked, &amp;ldquo;resume here&amp;rdquo; pointer for the next session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMENDMENTS.md&lt;/strong&gt; — anywhere the code intentionally disagrees with the bible. Stops the bible from quietly becoming a lying source of truth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/checkpoint&lt;/strong&gt; — slash command that updates PROGRESS.md. Either standalone, or chained as &lt;code&gt;/implement {task} /checkpoint&lt;/code&gt; to log work as it lands.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point: make the next session&amp;rsquo;s first 60 seconds about resuming instead of re-deriving state.&lt;/p&gt;</description></item><item><title>codex builds the editor: walls, doors, windows</title><link>https://gamahaus.com/log/2026-05-02-codex-editor-walls-doors-windows/</link><pubDate>Sat, 02 May 2026 09:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-05-02-codex-editor-walls-doors-windows/</guid><description>&lt;p&gt;First slice of the actual editor — the 2D surface where rooms get drawn. Built with Codex (GPT-5.5) only. Claude&amp;rsquo;s run on the same surface comes later.&lt;/p&gt;
&lt;p&gt;This time I changed the prompting style. Instead of &amp;ldquo;build login page&amp;rdquo; or &amp;ldquo;build dashboard&amp;rdquo; as one-shot briefs, I gave Codex full autonomy: pick the sequence, pick the depth, ship in increments. It would build something small, ask me to verify, then move to the next slice. The trade-off was visible immediately — same component, multiple round-trips.&lt;/p&gt;</description></item><item><title>claude vs codex: dashboard</title><link>https://gamahaus.com/log/2026-04-30-claude-vs-codex-dashboard/</link><pubDate>Thu, 30 Apr 2026 20:30:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-30-claude-vs-codex-dashboard/</guid><description>&lt;p&gt;Same brief, next surface. After logging in with a registered email, here&amp;rsquo;s what each AI built as the workspace landing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude (Opus 4.7):&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://gamahaus.com/log/2026-04-30-claude-vs-codex-dashboard/dashboard_claude.png" alt="Claude&amp;rsquo;s dashboard" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Top nav (cube + &amp;ldquo;GamaHaus&amp;rdquo; left, &amp;ldquo;Dashboard / Projects / avatar / Log out&amp;rdquo; right), then a centered single column. Greeting is personal — &amp;ldquo;Hi, Martin 👋&amp;rdquo; with &amp;ldquo;Here&amp;rsquo;s your playground.&amp;rdquo; picking up the design-doc tagline word-for-word. One project card with a &amp;ldquo;draft&amp;rdquo; pill, &amp;ldquo;1 project&amp;rdquo; count, and outlined &amp;ldquo;View all&amp;rdquo; + magenta &amp;ldquo;New project&amp;rdquo; CTAs aligned right. Lots of whitespace flanking the column. Creation lives behind a click.&lt;/p&gt;</description></item><item><title>claude vs codex: login</title><link>https://gamahaus.com/log/2026-04-30-claude-vs-codex-login/</link><pubDate>Thu, 30 Apr 2026 12:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-30-claude-vs-codex-login/</guid><description>&lt;p&gt;Started building the actual app. Decided to run two AIs in parallel on the same brief — Claude (Opus 4.7, 1M context, max effort) in one project directory, ChatGPT (Codex 5.5) in another. Same project bible, same design language doc as input. Port offsets — Claude on +30, Codex on +40 — so both can run at once. Claude got the custom-agents-and-commands setup I&amp;rsquo;m used to (8 agents). For Codex I asked it to mimic that workflow as best it could.&lt;/p&gt;</description></item><item><title>the wireframe cube</title><link>https://gamahaus.com/log/2026-04-28-the-wireframe-cube/</link><pubDate>Tue, 28 Apr 2026 09:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-28-the-wireframe-cube/</guid><description>&lt;p&gt;Two things landed: the GamaHaus logo and a 14-section design language doc.&lt;/p&gt;
&lt;p&gt;The logo is a wireframe isometric cube — three colored faces, magenta-front (&lt;code&gt;#F507B4&lt;/code&gt;), cyan-right (&lt;code&gt;#18D0E9&lt;/code&gt;), purple-top (&lt;code&gt;#CB6CE6&lt;/code&gt;). Stroke-only, no fills. Three variants: tri-color default, mono-magenta for tight contexts, white for dark backgrounds. Reads as &amp;ldquo;3D space&amp;rdquo; without literally drawing a house — GamaHaus is the playground, not the blueprint.&lt;/p&gt;
&lt;p&gt;The design language pins everything else: color tokens, magenta scale 50→900, Sora display + Inter body, pillowy radii, soft shadows, Phosphor icons, springy motion. Shadcn-Vue components on top of Tailwind, restyled day-one to match. Two surfaces at MVP — App (light) and Editor (always-dark, independent of theme).&lt;/p&gt;</description></item><item><title>the 556 GB ghost in my SSD</title><link>https://gamahaus.com/log/2026-04-25-556gb-ghost-in-my-ssd/</link><pubDate>Sat, 25 Apr 2026 08:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-25-556gb-ghost-in-my-ssd/</guid><description>&lt;p&gt;Not a GamaHaus update — but this is the machine I&amp;rsquo;m building it on, so it counts. Logs aren&amp;rsquo;t always green checkmarks; sometimes they&amp;rsquo;re &amp;ldquo;spent a day digging out of my own past mistakes.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Sat down to work at 6 AM and the laptop refused to boot to desktop. Disk at 100%, zero bytes free of 717 GB. GDM, MySQL, VirtualBox — all dead. Linux can&amp;rsquo;t start services without scratch space.&lt;/p&gt;</description></item><item><title>GamaHaus project bible</title><link>https://gamahaus.com/log/2026-04-24-gamahaus-project-bible/</link><pubDate>Fri, 24 Apr 2026 09:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-24-gamahaus-project-bible/</guid><description>&lt;p&gt;Spent a long session with Claude yesterday crystallizing the GamaHaus project bible — the design doc for the actual app this landing page exists to track.&lt;/p&gt;
&lt;p&gt;26 sections, ~1500 lines. Tech stack (Vue 3 + Go/Fiber + PostgreSQL/Redis), modular monolith architecture, full database schema, auth, real-time, editor UX, avatar system, the GamaCoin virtual economy, license tiers, branch/template system, 5-phase dev roadmap.&lt;/p&gt;
&lt;p&gt;Worth saying: Claude was the thinking partner here, not the typist. The bible came out of long back-and-forth conversations where we argued tradeoffs, killed weak ideas, and stress-tested decisions before they landed in the doc. AI does coding too — but using it as a brainstorming sparring partner is the part most people sleep on.&lt;/p&gt;</description></item><item><title>landing page deployed</title><link>https://gamahaus.com/log/2026-04-23-landing-page-deployed/</link><pubDate>Thu, 23 Apr 2026 15:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-23-landing-page-deployed/</guid><description>&lt;p&gt;gamahaus.com is live. Hugo for the site, Cloudflare Pages for the host, GitHub for the source. Every push to &lt;code&gt;main&lt;/code&gt; auto-deploys within a minute or two.&lt;/p&gt;
&lt;p&gt;The log you&amp;rsquo;re reading is the whole thing. No hero section, no roadmap, no &amp;ldquo;coming soon.&amp;rdquo; Just entries, one per thing.&lt;/p&gt;</description></item><item><title>gamahaus.com secured</title><link>https://gamahaus.com/log/2026-04-22-gamahaus-com-secured/</link><pubDate>Wed, 22 Apr 2026 12:00:00 +0700</pubDate><guid>https://gamahaus.com/log/2026-04-22-gamahaus-com-secured/</guid><description>&lt;p&gt;Registered the domain today. Starting a log here — one entry per thing made, thought, or broken. No plan, no roadmap. Just notes.&lt;/p&gt;</description></item></channel></rss>