Lab Notebook
A running record of what actually shipped on LittleDevLab — site changes, new products, infrastructure moves — logged roughly twice a day, in the order it happened. For deeper "how I built this" write-ups, see Lab Notes (coming soon).
October 1, 2026
Published a Lab Note on who should be allowed to deploy this site, then closed the four gaps it named the same day. main now requires a pull request and a passing build check, only main can deploy, and the Cloudflare credentials live in a GitHub environment that only main can use, on a new token scoped to one account.
I also removed a one-time setup step that logged a fake “Action failed” on every deploy, and moved the workflow’s actions to current versions. All of it is live across pull requests #7, #8 and #9. The Lab Note now covers what is enforced and the one gap left: with zero required approvals, the review is still mine to do.
commit 6710cd4September 18, 2026
Shifted from my laptop Visual Studio Code to using Codespaces. This will help me stay workig while straveling.
September 11, 2026
The new twice-daily cloud routine that processes CHANGES.md's Open items kept failing to push its commits with a403 Resource not accessible by integrationerror, even though it could read the repo fine. Root cause: Claude's GitHub connection on the devdog11 account was only anauthorizedOAuth app (identity-level access), never aninstalledGitHub App — and repo write permissions only come from an installation. Fixed by installing the Claude GitHub App directly at github.com/apps/claude and granting it repository access, which gave it the Contents: Read and write permission the routine's git push needs. The routine's queued changes should now push cleanly on its next run.
September 10, 2026
Finally got a real ServiceNow MCP server talking to Claude end to end: packaged as a Home Assistant add-on on my NUC, tunneled to the public internet through Cloudflare, and registered as a remote connector at claude.ai — deliberately self-hosted instead of using Claude's built-in ServiceNow registry connector, since the mechanics were the whole point of this track. Not exactly “production ready” since nothing here is cloud-hosted, but every piece of it — the add-on, the tunnel, the connector registration, the tool-permission tuning — is real and running today. Full write-up, with the actual steps and the friction that came with each one, is in the new Lab Notes post:Self-Hosting a ServiceNow MCP Server on a Home NUC, Wired Into Claude.
commit 0ebcd0eSeptember 5, 2026
Spent the session consolidating six scattered AI folders — Documents/Claude, Codex, Development, plus stale iCloud and Google Drive copies of the same projects — into one tree:AI/Projectsfor live work,AI/Archivefor chat exports and superseded duplicates. littledevlab and littledevlab-addons moved over as intact git repos, untouched mid-history. Nothing got hard-deleted in the process; everything redundant landed in Archive first, so “did I actually delete anything” had a precise answer instead of a hand-wave. The device bridge earned its keep along the way — a stale.git/index.lockgot renamed instead of removed, two commits stranded in a stale duplicate got recovered by hand viagit showplusgit reset --mixed, andrm -rfon an entire mounted folder root hit a brand-new “Device or resource busy” error instead of the usual permission one.
Wanted to update the homepage profile photo without opening the laptop, which meant solving the actual blocker: the repo was private and the GitHub iOS app has no visibility settings at all — no Danger Zone, nothing. Safari's desktop-site view got past that; flipping the repo public there took two minutes. From there it was a normal Claude session end to end: clone, swap the photo reference to the transparent PNG, and push — authenticated with a short-lived, repo-scoped, write-only personal access token generated on the phone and good for pushing this one change. No terminal, no repo settings menu, no laptop. The device-bridge workaround that's carried most of this build log so far turns out to have a phone-shaped alternative when the repo itself is reachable. Same token, same session, one more fix: the homepage's “Shop on Etsy” contact link had been pointing at the bare etsy.com homepage since launch — swapped it for the real LittleDevLab shop URL and dropped the “coming soon” from the label.
commit 20992c6, f7fff2dSeptember 3, 2026
Four new phone photos came in sideways from EXIF rotation and as two near-duplicate pairs of the same lifestyle shot; corrected the rotation, kept the sharper frame from each pair — a full front view and a closer 3/4 detail crop — and wired both into the Glasses + Contact Lens Holder's thumbnail carousel. The rejected duplicates moved into a git-ignored_to_delete/folder rather than being deleted outright, since the device bridge still can't delete files directly.
Rebuilt the nav/footer mark as a hand-coded inline SVG — same technique as the site's sphere logo, matched to the paper/ink/rust/gold palette — and swapped it into all 7 pages that carry it, 10 replacements in total, plus added a favicon to every page for the first time. Also confirmed the git lock-file problem isn't an iCloud quirk: it reproduced instantly on a brand-new, non-iCloud local folder too — it's a restriction of the device bridge itself, not the sync layer.
commit 91ca76dSeptember 2, 2026
Replaced the Glasses + Contact Lens Holder's description and feature bullets with new submitted marketing copy, keeping the site's own product name over the copy's generic one. Cleaned up repo hygiene alongside it — stray patch files, a.bakfile, and an empty_to_delete/folder are gone, and.claude/,*.bak, and_to_delete/were added to.gitignoreso they don't creep back in.
Fixed a bug where clicking a Theo's Toys product photo could leave the 3D toggle out of sync, recolored Lab Notes to match Build Log's navy/gold identity, and published a new Lab Notes post — “Cutting the Cord” — chronicling the push toward a laptop-optional workflow. That post got two honest follow-up rewrites once the cloud routes actually hit walls: the Cowork-hosted clone's git push is blocked by a platform proxy, and the Mac bridge can edit files but can't reliably run git since it can't delete its own lock files. Landed back on a hybrid: edit files directly in the local folder, one manual commit & push finishes the job.
commit dde6306Backfilled Build Log with 11 entries covering the previous two days' work, then stood up a real GitHub Codespace and a second, Cowork-hosted clone of the repo, aiming to get off the “everything needs my laptop open” pattern entirely. Both routes to a fully cloud-native workflow hit real walls before the day was out.
commit 08e5a4bSeptember 1, 2026
Products with more than a handful of thumbnails — the Trading Card Display Rack chief among them — were pushing extra images off-frame and out of reach; fixed by making the thumbnail strip scroll horizontally with hover-triggered edge hot-spots. Also wired up a full-screen lightbox that had been sitting unused in the code since the retheme: click any product photo to enlarge, Escape or the × to close. Replaced the Trading Card Display Rack's copy with language that actually matches what's photographed — a booster-pack display box, not loose trading cards.
commit ac14c7eThe Glasses + Contact Lens Holder had been defaulting to its interactive 3D model since the retheme; extended that same behavior to the other five products, so every gallery now loads into the floating model over the blueprint backdrop instead of a static photo.
commit 134fcc9
The script that turns a Shapr3D DXF export into each product's faint tan blueprint backdrop had never actually been committed — reconstructed it and checked it in astools/dxf_to_blueprint_svg.py(flagged AI Generated), then used it to generate the two backdrops still missing (knife holder, Hunter Douglas mount). All six products now carry the blueprint watermark. Also moved the Trading Card Display Rack to the top of the products page, cleared out an unused photo, and gave the glasses/contact-lens copy a typo pass — clean.
The drafting-graphic background scaled to fill its whole box, which looked fine on desktop but on mobile left almost no room below the photo and thumbnail strip — the graphic was getting sliced off entirely. Switched to a fixed-size, bottom-anchored background with guaranteed padding underneath, so it clears the thumbnails on every screen size.
commit 388d1e6August 31, 2026
Swapped in the confirmed real installed print for the Hunter Douglas mount and the actual game-shop counter shot for the Trading Card Display Rack as their default photos, in place of renders. Gave the Lab Notes hub the same dark-banner treatment as Build Log — eyebrow label, big serif title, recolored drafting-line SVG. Also added a reply-to address to the contact form, so hitting Reply on a notification email goes straight to the visitor instead of the form service.
commit 935f795Replaced the patchwork of per-page navs with a single unified one: Home, Products, and a new Lab Journey dropdown (Lab Notes + Build Log), each with its own accent color on the shared warm palette. Moved the Gallery section from Products back onto the homepage, added a new Lab Journey section linking out to both build-in-public tracks, and — the big one — the contact form now actually sends to hello@littledevlab.com instead of doing nothing.
commit a69f860The Lab Notes post on prompt and context engineering had been sitting with nine placeholder sections since its first draft; filled all of them in with real, redacted examples pulled from actual sessions — an MCP server build, a deploy-config bug, this site's own credential rotation, among others.
commit 72bc1bcSplit the six product blocks off the homepage into a dedicated products.html with a 2×3 landing grid and its own nav dropdown, freeing the homepage to flow Hero → How It's Made → About → Custom → Contact. Also stood up a new Lab Notes section with an index and two draft posts — the first real home for documenting the AI/agentic-skills side of this build, alongside the 3D-printing side Build Log already covers.
commit afae4acAugust 30, 2026
Converted each product's 2D dimension drawing (DXF, exported from Shapr3D) into a faint tan watermark-style SVG and set it behind the photo/3D viewer — four of six products have a DXF to draw from so far. Fixed the 3D viewer's solid background so the new backdrop actually shows through while a model is rotating, reordered thumbnails so real customer photos lead over renders, and noted the steak knife holder's fit with a BAMEOS drawer organizer.
commit 56816a8Added a 15-Day 2-Lens option to the Glasses + Contact Lens Holder, for anyone running two prescriptions instead of three. Persisted the Blender headless render pipeline behind the product photoreal renders as a reusable tool, so future products don't need it rebuilt from scratch. And the wireframe-sphere mark that debuted on Build Log a couple hours earlier replaced the flat square-grid logo everywhere else too — one icon language across the whole site now.
commit 0cd1713Stood up this page: a hand-styled stream of dated entries backfilled from August 27th, linked into the main nav. It launched with its own dark-blue/gold branding and an isometric-cube drawing in the header — then, within the hour, swapped that mark for the wireframe sphere you see today, to better match the drafting-technical style of the header art.
commit 6668968A cluster of smaller fixes rounded out the day: fixed an anchor-link scroll bug on direct page loads, added Classic Birch and Black Walnut color options to the steak knife holder, moved every product's variant/color buttons above the fold so visitors don't have to scroll to customize, swapped in a properly-modeled 1-Gang Hunter Douglas mount with real install reference photos, and added a top-level README documenting the stack and structure for the first time.
commit a1712f1
Every product block now embeds a<model-viewer>3D preview alongside black/white color-variant renders, and the page went from static markup to dynamic — variant chips swap images and renders in place. This is effectively a manual, one-off version of the pattern the planned Folder-Driven Product Site Generator is meant to eventually automate.
August 29, 2026
Added four new products in one push: the trading card display, the Hunter Douglas remote wall mount family, the steak knife holder, and the ZBiotic six-pack gift carrier. The catalog more than triples overnight — this is the raw material the "how I designed this" Lab Notes posts will eventually draw from.
commit 754953eGave the site its identity: a paper/ink/rust palette, monospace type, and a title-block header/footer strip that reads like an engineering drawing rather than a generic product page. Added a blueprint drafting-line texture to the hero and footer to reinforce it — this is now the established visual direction for the whole site.
commit 7ba8072August 28, 2026
Phase 0 done in one sitting: added a GitHub Actions workflow that deploys the static site to Cloudflare Pages viawrangler-actionon every push tomain, then created the actual Cloudflare Pages project so the first deploy had somewhere to land. littledevlab.com no longer depends on GoDaddy shared hosting — push tomainand it's live in under a minute.
August 27, 2026
First commit: the existing product site (glasses/lens holder, coasters), all product photos, and the initial Working Plan Outline are now under version control. This is the starting line for the whole rebuild — everything from here on is a diff against this commit.
commit 9fcce41
Entries live as markdown inbuild-log/in the repo — this page is a hand-rendered view of that folder for now.