One developer had the same agent build the same app in twelve web frameworks and priced every run. Plus Claude's public commit count passing 10 million a week, and a database release that slipped because AI found more bugs.
The short version
Software and AINolan Lawson had Claude Opus 5.5 build one Pokémon app in 12 frameworks: Hono with htmx cost $2.67 a run, Angular $4.97, and Astro shipped almost no JavaScript.
Software and AIPublic GitHub commits credited to Claude passed 10 million a week, about double two months ago, by Paul Kinlan's count.
Software and AIPostgreSQL 19 will ship late: language models found many more bugs, and fixes back-ported to the new release rose over 60% in a year.
Game devA browser port of NES Contra matches the original game frame by frame, checked by replaying a 40,000-frame recording through both.
Game devGoogle Play's last extension ended on November 1: apps below Android 15 now stop showing up for people on newer phones.
Software and AI Lesson
The framework you pick sets the agent's bill
A web developer had the same AI agent build the same small app in twelve web frameworks, five times each. The cheapest framework cost about half as much per build as the most expensive, and the lightest pages loaded fastest.
ContextNolan Lawson is a web performance engineer who writes about how browsers and frameworks behave in practice.
One specA Pokémon browser with search and filters
build
12 frameworksSame agent, five runs each
check
Test suiteChecks the page structure, so no faked passes
load
Phone testLighthouse on a throttled phone
compare
ScoresCost, time, tokens, code, JavaScript shipped
Every build had to pass the same checks before its cost counted.
The app was a Pokémon browser with search and filters, built from a public data API. Each run gave Claude Opus 5.5, at high effort, the same spec, a shared set of design tokens and no component libraries, and let it choose its own architecture. A test suite that reads the page's accessibility tree checked every build, so an agent could not fake a pass.
Hono with htmx was cheapest at $2.67 a run (median of five), then Astro at $2.76 and Nuxt at $2.82. Angular was most expensive at $4.97 and took the longest, 17.2 minutes, with about 2,000 lines of code against 1,370 for Hono with htmx.
What reached the user differed even more. Astro shipped almost no JavaScript and painted its main content in about 0.8 seconds on a throttled phone test; Next.js shipped 142 KiB and took about 2.1 seconds. Lawson notes that agents often ignored the official MCP servers and skills they were given, and that an app with more interaction, such as a dashboard or a game, could rank differently.
1.9xcost of the priciest framework over the cheapest, per build
Technical details
Medians of five runs (Angular three for some metrics, after two runs failed or broke the spec). Costs are the API-equivalent prices Claude Code reports, not money spent; the author was on a subscription plan. Fewest tokens: Nuxt at 3.85 million; most: Angular at 9.76 million.
Performance used Lighthouse in mobile mode with 4x CPU throttling and Slow 4G, home page only, Chromium only. Accessibility scored 100 everywhere and performance 97 to 100, so the gaps show in JavaScript shipped and Largest Contentful Paint (LCP), not in the summary scores. Static pre-generation of pages was not allowed.
Qwik behaved like a multi-page app on LCP (979 ms) despite client-side routing. In all five runs the plain JavaScript agent built a single-page app. The benchmark is on GitHub and the author invites competing runs.
Why it mattersWhen an agent writes most of the code, framework choice shows up in your token bill and run time as well as in page weight. A small app with a spec and a test suite, run in two or three candidate stacks, is now a cheap way to settle the argument with numbers.
For youBefore the next SaaS front end, run a smaller version of this: one Polyglyph-sized feature built by Claude Code in React and in Astro or Hono with htmx, and compare cost per run and shipped JavaScript.
htmx
A small library that lets HTML elements fetch and swap page fragments from the server without writing JavaScript.
design tokens
Named values for colors, spacing and type that every part of an interface shares.
accessibility tree
The structured view of a page that the browser gives to screen readers: its headings, buttons, links and labels.
MCP
Model Context Protocol: a standard way to plug tools and data sources into an AI model.
How much they write, what they cost, and what they turn up.
Software and AI Lesson
Cheapest and priciest framework for an agent, side by side
Across six measures, the cheapest framework to have an agent build was also smaller and lighter, but the fastest page came from a third framework, Astro.
Medians of five runs from Nolan Lawson's benchmark: Hono with htmx was the cheapest build, Angular the most expensive. The chart above shows the cost of all twelve.
Hono with htmx
Angular
Cost per run
$2.67
$4.97
Agent time
8.6 minutes
17.2 minutes
Tokens used
4.26 million
9.76 million
Lines of code
About 1,370
About 2,009
JavaScript shipped
18 KiB
93 KiB
Main content shown
About 1.0 s
About 2.0 s
Lighter stacks were cheaper to build here, but one content-heavy app is not every app: a dashboard or a game could rank differently.
Why it mattersCost, time and page weight moved together in this test, so the cheaper stack for the agent was also the lighter one for users.
tokens
The chunks of text a model reads and writes; usage is billed by the token.
ContextPaul Kinlan, who works on web developer tools at Google, counts commits that carry Claude Code's attribution line using GitHub's search.
Code changes credited to Claude on public GitHub projects roughly doubled in two months, to over 10 million a week, according to a developer who counts them every month.
Weekly public commits credited to Claude, in millions, for the nine weeks from the week of August 31. The newest week was sampled a day early.
Aug 315 M
Sep 74.7 M
Sep 145.4 M
Sep 216.3 M
Sep 288 M
Oct 58.7 M
Oct 128.6 M
Oct 1910.1 M
Oct 2610.3 M
Public repositories only. Claude Code adds an attribution line to commits by default and other tools mostly do not, so Kinlan says the gap to other tools (about 36x in the latest week) is likely overstated. GitHub search counts vary by about 20% between runs; the trend is the reliable part.
Technical details
In March the count was about 2.6 million a week; April to August ran between 2.4 and 4.2 million. Kinlan links the latest jump in time to the Fable 5.1 and Opus 5.5 launches but says the data does not show cause. Four repeated searches for one August week returned 2.5M, 3.4M, 4.2M and 4.7M, which is why he takes medians and treats single weeks as plus or minus 20%.
Why it mattersCommits that carry an AI tool's attribution are one of the few public measures of how much code agents write. Ten million a week on public repositories alone means review, testing and merge tooling now take most of the strain.
For youYour own repos add to this count through the default attribution line; keep it on, since it is also how you can measure your own agent share later.
commit
One saved change to a code repository, with a message describing it.
A written lesson after a failed fix did not beat the raw log
When an AI agent fails to fix a bug and tries again, having it write a lesson about its failure helped no more than handing it the old transcript, a small study found.
181failed fix attempts retried on real Python bugs
-1.7points for a lesson against its own transcript
Researchers retried an agent's failed repairs on 75 real bugs, with no memory, the full transcript, a self-written lesson, or the test results. Every kind of memory helped by 5.5 to 9.9 points over a plain retry (29.8%), but none of the gains was statistically clear, and the lesson cost an extra model call.
Technical details
Preprint, arXiv 2610.41433, using gpt-5.4-mini and gpt-5.4 on BugsInPy. Of 12 planned comparisons, only one was significant: transcript against a notice-only retry for gpt-5.4-mini (12.2 more failures resolved, on a partial run). Retries that saw earlier test results more often broke other tests that the reference fix passes. Small sample, one language.
Why it mattersIf your retry loop asks the agent to reflect before trying again, passing the failed transcript is about as good and cheaper. Run the full test suite on retries either way.
For youThe routines that retry failed tasks could drop any reflect-first step and pass the last transcript tail plus test output instead.
transcript
The full record of an agent's session: its messages, commands and their output.
ContextRobert Haas is a long-time PostgreSQL committer. Major releases have come out between mid-September and mid-October for a decade.
The next PostgreSQL release will ship late, a core developer says, because language models found many more bugs and people still had to review and commit every fix.
Commits to release branches between feature freeze (April 8) and September 25, from Haas. Most are fixes, many back-patched to the new and older releases. Each pair compares 2025 with 2026.
New release, 2025724 commits
New release, 20261,169 commits
Prior release, 2025248 commits
Prior release, 2026433 commits
New release: the branch for version 18 in 2025 and version 19 in 2026. Prior release: version 17 in 2025, version 18 in 2026. Three features were pulled from 19 between August 27 and September 15.
Technical details
Haas writes that committers were as careful as before, but more of their mistakes were found quickly by LLMs. Two things slowed the release: fixes drafted by models were often wrong or did not meet project standards, so people had to rework and review them, and reviewer time went to security issues and older branches. The reverted features were UPDATE and DELETE FOR PORTION OF, SQL property graph queries (SQL/PGQ), and ALTER TABLE MERGE and SPLIT PARTITION. He expects release in November or later.
Why it mattersCheap bug finding moves the bottleneck to review. A mature project with a strict process found it could not merge fixes as fast as models report problems, which any team pointing agents at an old codebase should plan for.
For youPostgres 19 features will reach the Supabase projects later than the usual autumn schedule would suggest; do not plan around them this year.
committer
A project member allowed to add changes to the official code.
back-patch
To copy a bug fix into older, already released versions.
A query editor for your database and logs, plus notebooks of saved queries, charts and notes kept in your repo.
Supabase added one editor for database queries and logs, and lets you save an investigation as a notebook file in your repository that anyone can rerun on live data.
Notebooks store the queries, not the results, so each run shows current data. They live in the project's supabase folder, so they are versioned and reviewed in pull requests like code. The built-in assistant can write cells, but you approve the SQL before anything saves.
Status
Feature preview, on every project
Turn on
Dashboard, Feature Previews
CLI
notebooks pull and push, beta channel
Technical details
Explorer replaces the SQL Editor in the sidebar once the preview is on, and works without the AI assistant. The CLI commands are supabase notebooks pull and supabase notebooks push, available on the beta CLI channel only. The post does not document the file format.
Why it mattersAn investigation saved as a file in the repo can be rerun by a teammate, reviewed in a pull request, or read and edited by a coding agent, instead of living in someone's query history.
For youSave the two queries you rerun most on Vylora (slow queries, failed auth) as a notebook and commit it, so Claude Code can open the same investigation next time.
SQL
The query language used to read and change data in relational databases such as Postgres.
A port checked frame by frame, engine upgrades to plan for, and store rules that just took effect.
Games and software Lesson
NES Contra ported to the browser, checked against the original every frame
ContextThe port builds on a fan-made, fully annotated disassembly of the game. No game data is included; players supply their own copy.
A developer translated the 1987 NES game Contra from its original machine code into C and then into a browser build, and proved the port matches by replaying the same input through both and comparing every frame.
How the port was made and verified, from the project's README. The comparison step is what makes a translation this large trustworthy.
AssemblyThe original 6502 code, annotated by fans
translate
C portTranslated routine by routine, sound line by line
drive
ReplayOne 40,000-frame recording of real play
check
CompareMemory, palette, sprites, sound state and pixels, every frame
compile
WebAssemblyBrowser build with online two-player co-op
Stages 1 to 4 are identical to the original over the whole recording, including sound, per the README.Technical details
The check replays a Mesen 2 emulator recording through the C core and compares RAM, nametables, palette, OAM, CHR, PPU registers, sound-engine state and the final image each frame, using a tool in the repo (port/tools/parity_telemetry.c). The original ROM can also be rebuilt byte for byte from the assembly with cc65. Desktop builds use CMake and SDL; the web build uses Emscripten. Online play is lockstep over WebRTC.
The README does not say whether AI tools were used. Hacker News readers reported keyboard problems in Firefox.
Why it mattersComparing a rewrite against the original on recorded play, state by state, is how you port or refactor game code without guessing. It is also the kind of check that lets an agent do a large translation safely: the comparison, not the agent, says when it is right.
For youFor any big refactor of a gameplay plugin, record a deterministic replay first and diff the game state per tick before and after; it is the safety net to give Claude Code.
assembly
Low-level code written one processor instruction at a time; most NES games were written this way.
WebAssembly
A compact program format that browsers run at near-native speed, compiled from languages such as C.
lockstep
A multiplayer method where every player's machine runs the same game and only inputs are sent, so it must be fully deterministic.
three.js r187 and Babylon.js 9.33: what changes for browser games
The two biggest 3D libraries for the web both shipped last week: three.js changed some behaviour that can quietly break existing games, and Babylon.js can now report how long the graphics card spends on each frame.
three.js r187 shipped on October 30, its first release in five weeks, with about 400 changes. Babylon.js 9.33 shipped on October 29 and 30.
Calling setAnimationLoop(null) no longer starts the loop, and setViewport and setScissor now apply the pixel ratio only to the canvas. Check both on a high-resolution screen after upgrading.
Code deprecated in r177 is gone, ProxyNodeMaterial is now NodeMaterialInstance, and getProjectionDepth is now projectionDepth. Using count and dispatchSize together now throws an error.
The physical material gains a rough diffuse model (EON) and iridescence thickness limits; loaders add compressed EXR and HDR JPEG XL; a JavaScript version replaces the WebAssembly tangent generator.
9.33.0 reports GPU time per frame on WebGPU, speeds up Gaussian splat rendering with an optional GPU depth sort, and adds a scattering material extension. 9.33.1 adds a KTX2 texture encoder.
Why it mattersBehaviour changes in a render loop or viewport do not show up as errors; they show up as a blank canvas or a wrongly sized view on some devices. Read the migration notes before bumping the version.
For youBump the browser games to r187 on a branch and test the render loop and the high-DPI viewport on a phone before anything else.
WebGPU
The newer browser interface to the graphics card, faster and more flexible than WebGL.
pixel ratio
How many physical screen pixels make up one CSS pixel; 2 or 3 on most phones.
Gaussian splat
A way to show a scanned 3D scene as millions of soft, colored blobs instead of triangles.
KTX2
A compressed texture file format that graphics cards can read directly, so textures load smaller and faster.
Google Play's grace period for old Android targets ended
Since November 1, Android apps on Google Play that still target an old version of Android are hidden from people using newer phones.
Google Play target API level rules for phone apps, from its help page.
Phone apps must target Android 15 (API 35) to stay visible to new users.
New apps and updates must target Android 16 (API 36).
The optional extension for existing apps ended.
Technical details
Apps that miss the rule stop being discoverable to users on newer Android versions; people who already installed them keep them. Wear OS and Android Automotive apps need API 35 from August 31, 2026; Android XR needs API 34.
Why it mattersAn older mobile game or app that nobody has rebuilt this year may already be invisible to most new customers on Google Play.
For youCheck the target API of every published Flutter build in Play Console today; anything under 35 needs a rebuild.
API level
The number Android uses for each version of its platform; Android 16 is API 36.
GameMaker's new runtime will be free for commercial games
GameMaker will let anyone sell games made with its new runtime on PC, mobile and the web without buying a licence, starting January 1, 2027.
$0to ship on PC, mobile and web
2027starts January 1
Consoles still need an enterprise licence. The new runtime, GMRT, is still in beta and supports working with Claude Code, per Game Developer. Announced October 23; nothing has changed since.
Why it mattersAnother engine has moved to charging nothing to ship small games, which keeps pressure on how tools and engines charge indie developers.
runtime
The engine code that ships inside a finished game and runs it on the player's device.
WebAssembly is a compact program format that every major browser can run at close to native speed. You write code in a language such as C, C++ or Rust, compile it to a .wasm file, and the page loads and runs it next to its JavaScript.
Think of it like thisA shipping container: whatever you pack at the factory (C, Rust), it arrives in a standard box that every port (browser) knows how to unload.
JavaScript is flexible but hard to make fast for heavy number crunching. WebAssembly is a low-level, typed instruction set that browsers check for safety and then compile to machine code, so code written for consoles and desktops can run in a tab. It runs in the same sandbox as the page and reaches graphics, sound and input through JavaScript.
Toolchains such as Emscripten compile existing C and C++ projects, which is how today's Contra port reaches the browser; emulators such as Infinite Mac run the same way. Game engines use it for their web exports, and libraries ship WebAssembly modules for heavy jobs.
It is a choice, not a rule: three.js r187 replaced its WebAssembly tangent generator with a plain JavaScript version.
Source codeC, C++ or Rust
compile
CompilerEmscripten or a Rust toolchain
load
.wasm fileCompact, checked, portable
run
BrowserRuns it beside JavaScript, drawing through WebGL or WebGPU
Write once in a systems language, ship a .wasm file, and the browser does the rest.
Emscripten
A compiler toolchain that turns C and C++ programs into WebAssembly plus the JavaScript glue to run them.
sandbox
A walled-off space where code runs without access to the rest of the computer.
Try this today
Game dev20 minutes
Add cartoon wobble to a rigged character without a physics simulation
In twenty minutes you see bouncy, jiggly secondary motion on one of your own characters, computed from its skeleton alone, and can judge whether the technique fits your animation style.
You needBlender 4.4 or newer and a rigged character mesh.
Install the add-on
In Blender open Edit, Preferences, Get Extensions, search for Dynamic Skinning and click Install. Offline, install dynamic_skinning-0.1.1.zip from the project's GitHub releases with Install from Disk.
Turn it on for one mesh
Select the rigged mesh and click Enable under Object properties, Dynamic Skinning, or in the N sidebar.
Move a bone
In Pose Mode rotate a bone with a long chain below it (a neck, a tail, a hat), or press play on an existing animation.
Tune it
Change frequency, damping, amplitude and drag, and paint per-vertex weights to keep the face or hands steady.
You know it worked whenThe parts away from the moving bone lag, overshoot and settle on their own, in real time, with no simulation cache to bake. If nothing moves, check the mesh has an Armature modifier.
For youTry it on a creature or a cape from the action RPG; the method is about 550 lines of C++, small enough to consider as a mesh deformer in Unreal if it looks right.
secondary motion
Movement that follows the main action, such as ears flopping after a head turn.
per-vertex weights
Values painted on a mesh that say how strongly each point follows an effect.
Sparks
What is catching on right now, and the idea worth borrowing from each.
Up 53 places to #44 in Steam's most played, with a peak of 83,138 players (Steam charts, November 2).
An absurd job for up to 16 friends: sweep and sell lunar dust, upgrade from a toothbrush to cleaning vehicles, and hope your friends actually help. Made by a two-person studio.
Borrow thisA premise you can explain in one sentence, plus co-op chaos, plus a low price, is a loop streamers pick up on their own.
For youThe scale-up arc (toothbrush to vehicles) is an upgrade ladder worth sketching for a small co-op prototype.
Several versions of BeOS run on an emulated 1997 Power Mac inside a web page, after Mihai Parparita fixed a string of emulator bugs and worked around a 1997 time bomb; he says Codex helped with the reverse engineering.
Borrow thisAn emulator compiled to WebAssembly, disk images on a CDN and a saved drive make any old software a link you can share; the same setup works for a playable demo.
A 2013 canvas 3D library rebuilt for WebGL 2 with no dependencies, glTF, shadows and 3D charts, where every wrong option returns an error that says how to fix it.
Borrow thisError messages that name the fix help people and coding agents alike; worth copying in any API or plugin you publish.
For youThe fix-telling errors pattern fits the plugins' validation messages, which Claude Code reads when it wires them up.
Tools that approve a coding agent's shell commands judge the command text. What a command really does depends on the scripts it calls and the state of the workspace, so harmful effects hide behind harmless-looking commands.
The idea
Snapshot the workspace container with networking off, run the command while tracing every file and network call, and hold its output. A separate model sees a short report of the effects and a diff of changed files. If it allows, the state is kept and the command has run once; if it blocks, the container rolls back and the agent gets the reason.
The result
On the SABER benchmark the harmful-outcome rate fell to 6.7%, against at least 14.8% for the best of six existing approvers; on the authors' new benchmark with harm hidden inside called tools, 7.8% against at least 35.3%, while blocking 1.0% of safe tasks. Median approval time was 3.2 seconds, at about $0.019 a task. Authors' own benchmarks.
Use it
Judge effects, not text: for unattended agents, pre-run risky commands in a disposable worktree or container and show the file diff to a second model or a person before keeping it.
For youA PreToolUse hook on Bash for the routines could pre-run destructive-looking commands in a git worktree and log the diff before letting them run for real.
Secondary motion such as a neck wobbling or ears dragging behind usually needs a physics simulation or hand-keyed animation, both costly for games.
The idea
Extend standard skinning with small deformers that offset each vertex using how fast its bones move and how that motion changes over time. That gives oscillation, resonance, drag and a delayed wave from root to tip, all computed per frame from the skeleton and the existing skin weights.
The result
Real time, including a 250,000-vertex model on the GPU, with artist controls for frequency, damping, amplitude and drag. The paper compares the effects with earlier methods visually in its video; it reports no frame-time numbers. Published in the journal's March issue; the accepted version and code came out on October 29.
Use it
The oscillation core is about 550 lines of C++ called once per frame after normal skinning, small enough to port to a vertex shader or an engine's mesh deformer. Try the web demo or the Blender add-on first.
For youA cheap secondary-motion deformer would be a sellable Fab add-on if nobody has ported it to Unreal's deformer graph yet.