The 3D editor learns to take instructions
A genuinely big week — four repositories, well over fifty commits between them. The standout is a new way to edit a 3D model: instead of nudging grid buttons, you can just say what you want. Below that, the walking app got noticeably more tactile, and the pipeline that builds those 3D models spent the week getting more accurate.
For historians: just tell the 3D editor what you want
Fixing up a SAM3D-generated scene has meant a grid of buttons — nudge, tilt, spin, roll — one object at a time. This week that scene editor grew a chat panel alongside the grid: type “rotate the bench 15 degrees” or “move the sign closer to the fence” and the app proposes the edit for you to confirm before it applies, the same propose-then-apply pattern already used for narrative rewrites. Object chips in the chat now carry the model’s real labels and colours instead of placeholders, sourced from the per-object segmentation masks SAM3D produces during reconstruction (more on that below) — so “the lamp post” actually means the lamp post.
Shipping the first pass surfaced exactly the kind of thing that only shows up once real people start typing real sentences at it. A sign-convention bug meant “closer” and “farther” moved objects the wrong way relative to the grid’s own buttons; an early fix for multi-axis rotation accidentally applied every rotation to a single axis only, caught immediately by feedback along the lines of “why only Z axis? I want it to apply to any axis”; and a production command failed outright because the model tried to explain a limitation in prose instead of just answering. All three are fixed now, plus a new “Align axes to mesh” button for objects that weren’t extracted axis-aligned to begin with — without it, repeated rotations around fixed world axes start to look skewed rather than doing what you’d expect. Shorthand like “a bit more” or “go back,” and spatial commands like “move it away from the bench,” now resolve straight from the scene’s real coordinates client-side, no round-trip to Claude required.
The pipeline that feeds trails to the walking app also got reordered: geocoding now runs right after research review, before the LLM-heavy writing pass, so a location that can’t be found on a map is known before time gets spent writing its chapter. And a study that’s mid-run now shows a live preview — pins, narrative snippets, photos, approach-story snippets appearing as each stage lands — instead of a bare progress bar with nothing to look at.
One more, quieter fix worth calling out: a study that hit a transient Anthropic issue — a rate limit, an exhausted credit balance — used to die outright, with no way to continue except starting over and losing everything already written. It now pauses distinctly, with a clear reason and a Resume button, and picks back up where it left off once the issue clears.
For walkers: photos you can flip through, a map you can move
The follow-map in walking mode now supports pan and zoom instead of only tracking your position, and a new distance readout shows how far you’ve walked versus how far is left on the current leg. Waypoint photos gained a proper full-screen, swipeable viewer — tap into the gallery and flip through instead of scrolling a strip. And narration picked up real playback controls plus an audio-output picker, alongside a fix to the narration audio session and a preference for the higher-quality on-device voice when one’s available. Approach-narration timing — when the app starts telling you about the next stop as you walk toward it — now scales to each leg’s actual length instead of a fixed distance, so it doesn’t start too early on a short block or run dry on a long one.
Under the hood
Suburb Historian grew an admin console: a real power switch for the SAM3D GPU box (an actual EC2 stop, not a soft in-app flag, so it actually stops billing), a stats dashboard, user admin backed directly by Clerk so an account reads the same on both apps, and a monthly cost readout next to the power switch. story-trail grew a matching endpoint to feed it the walks-completed numbers. Two bugs from that same launch got caught and fixed the same day: a crash that took the entire signed-in app to a blank white screen (a routing provider wasn’t wrapping the page header), and an admin grant that was checking the wrong Clerk instance.
SAM3D spent the week on layout accuracy. Its gravity-alignment pass — which corrects objects that came out of reconstruction badly rotated — is now on by default after testing; a confidence gate and combined RGB-plus-mask scoring are wired into the layout optimizer; a corrections file that failed to parse used to silently fail open to zero corrections rather than raising an error; a left-right mirroring bug in the visual-correction renders is fixed; a crash on grayscale JPEG input is fixed; and the correction step’s vision model now gets multi-view renders plus a labelled metric grid to actually judge distance and position against, instead of eyeballing a single image. Per-object segmentation masks are now included in a job’s file listing too — the data that gives the historian chat editor above its real object labels and colours.
And a small one: story-trail’s USD→AUD currency lookup broke when frankfurter.app started redirecting to frankfurter.dev; it now points at the new domain directly.