- â
- â
- August 01, 2026
-
đ pydantic/pydantic-ai-harness v0.15.0 (2026-07-31) release
What's Changed
- feat: add StackOne capability for linked account actions by @adtyavrdhn in #479
- fix(code-mode): report unexpected session resets by @dk3yyyy in #503
- feat(planning): fold pydantic-ai-todo into the Planning capability by @DEENUU1 in #404
- memory: decouple the injected block heading from the
agent_namestorage key by @sevakva in #449 - feat(compaction): resolve thresholds against the model's context window by @DEENUU1 in #465
- feat(guardrails): add
ToolGuardfor tool arguments and tool results by @DEENUU1 in #470 - docs(
agent_docs): require an issue comment when docs or code link it; retry the dependency gate by @dsfaccini in #515 - Fix Shell
max_output_charscap accounting by @adtyavrdhn in #507 - Fix
Shellallowlist with the default denylist by @adtyavrdhn in #508 - Fold a revealed deferred tool into
run_codeagain (revealed_tool_names) by @DouweM in #517
New Contributors
Full Changelog :
v0.14.0...v0.15.0 -
đ WerWolv/ImHex Nightly Builds release
Nightly
29fe6f6Changelog- build: Update libwolv
- patterns: Update pattern language
- fix: Broken format
-
- July 31, 2026
-
đ Simon Willison Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp) rss
Tuesday was Stateless MCP day - the rollout of MCP 2.0, or the 2026-07-28 Model Context Protocol specification to use the more formal but less memorable name. This is the most significant change to the MCP spec since it first launched, and has also served to reignite my personal interest in the protocol.
For background: MCP is the Model Context Protocol, which describes a standard way to expose new tools to LLM-powered agent frameworks. It was introduced by Anthropic back in November 2024, had a huge spike of interest through much of 2025, and then became somewhat eclipsed by Skills (another Anthropic invention) when it became apparent that an agent harness with access to a terminal and
curlcould do most of what MCP did in a more flexible way. I wrote about that in my review of 2025.I'm coming back around to MCP now. Giving an agent a shell environment with the ability to access the internet is fraught with risk, and requires a strong model that is capable of effectively driving such an environment. MCP tools are easier to audit and control, and simple enough that smaller models that run on a laptop can still drive them reasonably well.
The new stateless MCP specification also greatly decreases the complexity of implementing both clients and servers for the protocol. I built three of those this week!
What's easier with stateless MCP
The best demonstration of the difference between stateful and stateless MCP is in this May 21st blog post that introduced the RC for the new specification. It included a clear before-and-after example.
The older stateful MCP (I'm going to call it "legacy MCP") required two HTTP requests - the first to initialize a session and obtain a
Mcp-Session-Id, and the second to actually call the tool:POST /mcp HTTP/1.1 Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-11-25", "capabilities": { }, "clientInfo": { "name": "my-app", "version": "1.0" } } } POST /mcp HTTP/1.1 Mcp-Session-Id: 1868a90c-3a3f-4f5b Content-Type: application/json { "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "search", "arguments": { "q": "otters" } } }The new stateless way uses a single HTTP request which looks like this:
POST /mcp HTTP/1.1 MCP-Protocol-Version: 2026-07-28 Mcp-Method: tools/call Mcp-Name: search Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search", "arguments": { "q": "otters" }, "_meta": { "io.modelcontextprotocol/clientInfo": { "name": "my-app", "version": "1.0" } } } }This is so much cleaner from both a client- and server-side implementation perspective. It's also a better fit for building scalable web applications, since now you don't need to maintain server-side state to keep track of those session IDs, or worry about routing the same session to the same backend machine.
mcp-explorer
I couldn't find a great CLI tool for interactively probing an MCP server, so I had Codex help build my own.
mcp-explorer is the result. It's a stateless Python CLI tool, so you don't even need to install it to try it out - it works with uvx like this:
uvx mcp-explorer list https://agentic-mermaid.dev/mcp
This queries Ade Oshineye's agentic-mermaid.dev demo MCP. The above command returns the following list of tools:
execute(code: string, timeoutMs?: integer) - Execute Mermaid SDK code Run JavaScript in an isolated sandbox; return a value. describe_sdk(family: string, detail?: string) - Describe Mermaid SDK operations Return version-matched mutation operations for one diagram family. render_svg(source: string, options?: object) - Render Mermaid as SVG Render a Mermaid source string to themeable SVG. Returns { ok, svg }. render_ascii(source: string, useAscii?: boolean, targetWidth?: integer, options?: object) - Render Mermaid as text Render a Mermaid source string to text. Returns { ok, text }. render_png(source: string, scale?: number, background?: string, fitTo?: object, options?: object) - Render Mermaid as PNG Rasterize a Mermaid source string to PNG. Returns { ok, png_base64 }. ...Then to inspect a tool:
uvx mcp-explorer inspect render_svg
This outputs a whole bunch of information, including the JSON schema of the inputs and outputs.
To call that tool and pass arguments to it:
uvx mcp-explorer call \ https://agentic-mermaid.dev/mcp \ render_svg \ -a source 'graph TD; A-->B' \ -a options '{"padding":24}'
Which returns:
{"ok":true,"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=...To get just the raw SVG try adding
| jq .svg -rto that command. I got back this image:There are a few more commands in the README, but you get the general idea. I find building CLI tools like this to be a really productive way to get familiar with a specification, even if an agent writes most of the actual code.
datasette-mcp
The second project is datasette-mcp, a Datasette plugin which adds a
/-/mcpendpoint to any Datasette instance.This is probably the fourth time I've tried building this plugin, but thanks to the new stateless MCP specification I finally have a version that feels good to release.
It provides just three tools:
list_databases(),get_database_schema(database_name), andexecute_sql(database_name, sql). They do exactly what you would expect them to do - thoughexecute_sql()is read-only for the moment.Wire these into an agent, or a chat tool like ChatGPT or Claude, and they'll gain the ability to run SQL queries against your hosted Datasette instance.
So far I'm running it on the Datasette mirror of my blog, at datasette.simonwillison.net/-/mcp. It took a bit of fiddling to figure out how to attach that to ChatGPT and Claude, but I got there in the end. Here's a new TIL showing exactly how to do that.
Here's a shared Claude session where I asked it:
list tables in simonwillison.netAnd then:
what has Simon said recently about MCP?It ran 7 separate SQL queries to figure out the answer.
llm-mcp-client
My LLM tool is long overdue for an official MCP integration. The new alpha llm-mcp-client plugin is my attempt at exactly that:
llm install llm-mcp-client llm -T 'MCP("https://datasette.simonwillison.net/-/mcp")' 'count the notes'
Here's the output (including reasoning trace, I'm using LLM 0.32rc2):
Considering note count
I see the question "count the notes" is probably asking me to tally up blog notes. It could also mean published notes or drafts, so there's some ambiguity there. I'll need to figure out the total number of notes, likely by querying the count for both published notes and drafts to get a clear answer. Let's execute that count!
There are 151 notes.
And the output of llm logs for that prompt.
Once this is fully baked, I'm considering bringing it directly into LLM core. I'm excited to experiment with MCP in Datasette Agent and llm-coding-agent as well.
MCP is a safer way to build with agents
A few months after MCP was first released, I wrote Model Context Protocol has prompt injection security problems, where I noted that the pattern of having end users mix and match tools pushed responsibility for avoiding data exfiltration attacks out to the users themselves. I hadn't coined the Lethal Trifecta yet, but that was absolutely what I had in mind.
Then general agents with arbitrary shell and
curlaccess came along, and that's so much harder to keep secure!Something I've come to appreciate about MCP is that it's much easier to reason about agent capabilities and what might go wrong than with arbitrary command execution in an open network environment - the default for most of today's general and coding agent tools.
I plan to lean into MCP a whole lot more when I'm building sensitive applications on top of LLMs.
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
-
đ @binaryninja@infosec.exchange 6.0 is coming next month and it brings not only a ton of major features and mastodon
6.0 is coming next month and it brings not only a ton of major features and improvements, but price changes across the product line. Non-commercial is cheaper, other editions are going up. New auto-renewal system will be available as well. Details at: https://binary.ninja/2026/07/28/pricing- changes.html
-
đ r/LocalLLaMA The Chinese LLM release carousel never stops. Place your bets for MiniMax next week. rss
| submitted by /u/Mountain_Patience231
[link] [comments]
---|--- -
đ @binaryninja@infosec.exchange Current Binary Ninja newsletter subscribers are automatically entered. New mastodon
Current Binary Ninja newsletter subscribers are automatically entered. New subscribers who sign up during the giveaway will also be entered for remaining drawings. Sign up here: https://v35.us/dn6rcg5
-
đ @binaryninja@infosec.exchange Weâre almost at the end of our 10-day anniversary celebration! Today, 3 mastodon
Weâre almost at the end of our 10-day anniversary celebration! Today, 3 winners will be chosen to receive a Binary Ninja swag pack that includes an all exclusive hat, pin, and notebook. There is still time to join in on the fun: https://binary.ninja/10years
-
đ r/LocalLLaMA deepseek-ai/DeepSeek-V4-Flash-0731 on Huggingface rss
-
đ r/LocalLLaMA New DeepSeek V4-Flash achieves 50 on ArtificalAnalysis Index, 1 point below GLM-5.2 and GPT-5.6 Luna rss
| submitted by /u/MagicZhang
[link] [comments]
---|--- -
đ r/LocalLLaMA DeepSeek-V4-Flash has been updated, "The official release of DeepSeek-V4-Pro will follow soon" rss
| https://api-docs.deepseek.com/updates/ Edit: official post on đ: https://x.com/deepseek_ai/status/2083084415157022911 submitted by /u/Nunki08
[link] [comments]
---|--- -
đ r/LocalLLaMA Anthropic âour models hacked three different external companies, months before OpenAIâs model was able to do the same" rss
| "Anthropicâs AI Claude escaped testing environment and hacked organizations" "Company says it discovered unauthorized access during âproactive reviewâ after rival OpenAI revealed rogue agent⊠its AI Claude model hacked â systems of â three âorganizations during testing, days after rival OpenAI â revealed a rogue agent had gone on a days-long â hacking spree at AI âfirm Hugging âFace⊠The earliest cases dated back to April and âoccurred in evaluation environments that lacked what the company described as standard safeguards." submitted by /u/Separate-Forever-447
[link] [comments]
---|--- -
đ Servo Blog June in Servo: real world compat, media queries, SharedWorker, and more! rss
Servo 0.4.0 contains all of the changes we landed in June, which came out to yet another record 558 commits (April: 534, May: 391). For security fixes, see § Security.
Weâve shipped several new web platform features:
- âattr()â , in experimental mode (@Loirooriol, #45041)
- âimage(
)â , âclosest-cornerâ , and âfarthest-cornerâ in âellipse()â and âcircle()â (@Loirooriol, #45421) - âcalc()â and other mathematical expressions can now be resolved later than parse time, e.g.
sign(1em - 32px)(@Loirooriol, #45421) - âfont-feature-settingsâ in â@font-faceâ (@simonwuelker, #45393)
- â@media (device-width)â , â@media (device-height)â , â@media (height)â , â@media (aspect-ratio)â , and their min- and max- variants (@jdm, @mrobinson, @nicoburns, @jschwe, #44978, #45707, #45490)
- â@media (orientation)â (@nicoburns, #45707)
- â@media (pointer)â and â@media (any-pointer)â (@nicoburns, #45681)
- â@media (hover)â and â@media (any-hover)â (@nicoburns, #45681)
Plus a bunch of new DOM APIs:
- SharedÂWorker (@Taym95, #45786)
- consoleÂ.dir() (@Taym95, #45109)
- customÂElementÂRegistry on Document and ShadowÂRoot (@shubhamg13, #45872)
- initialize() on CustomÂElementÂRegistry (@shubhamg13, @yezhizhen, #45903)
- new CustomÂElementÂRegistry() (@shubhamg13, #45791, #45550)
- textÂStream() on Request , Response , and Blob (@yezhizhen, #45864, #45861)
- setÂPointerÂCapture() , releaseÂPointerÂCapture() , hasÂPointerÂCapture() on Element (@webbeef, #45048)
- onÂtouchÂstart , onÂtouchÂend , onÂtouchÂmove , onÂtouchÂcancel on Element (@stevennovaryo, #45049)
- cryptoÂ.subtleÂ.digest() for KT128 and KT256 (@kkoyung, #45699)
- cryptoÂ.subtleÂ.getÂPublicÂKey() for ML-KEM and ML-DSA (@kkoyung, #45252)
This is another big update, so hereâs an outline:
You can help! Servo is steadily becoming a bigger and busier project every month, and by June 2026, weâve been reading through over four times the commits as we did when we started in September 2023. This is hard work, particularly since there are things we need to know that are often difficult to answer just by reading the changes: Who does the change affect , if anyone? Does it affect users, Servo developers, embedders, or some other group? What observable difference does the change make , if any? Does the feature require any preferences to be enabled , or is it enabled for everyone by default? Are any real-world websites affected by the change? What issue or broader project is the change related to? This question is answered by Fixes: #xxxxx or Part of: #xxxxx in the PR description. Thanks to an initiative by @jdm, itâs now easier than ever for you to help us answer those questions , using the Servo Highfive bot! If youâre working on a pull request that you think might be interesting for the next monthly update, even if youâre not 100% sure, tell us about it by following the steps below: You add the monthly update label to your pull request, or comment [@servo-highfive](https://github.com/servo-highfive) monthly update Highfive posts a comment asking you some questions You answer those questions in a comment containing [@servo-highfive](https://github.com/servo-highfive) monthly update answer Security __ Servoâs JS runtime, SpiderMonkey 140.10.1 , had several security bugs that have been fixed in Servo 0.4.0 with the update to SpiderMonkey 140.11.0 (@jschwe, #45584). For more details, see CVE-2026-8388, CVE-2026-8391, CVE-2026-8974, CVE-2026-8975, and MFSA 2026-48. Several more security bugs in Servoâs JS runtime have been fixed in Servo 0.4.0 with the update to SpiderMonkey 140.12.0 (@jschwe, #45766). The exact CVEs that apply to us are not yet known, but for more details, see MFSA 2026-58. RSA operations in SubtleÂCrypto now do modular exponentiation in constant time (@kkoyung, #45631). Please note that our RSA implementation is currently vulnerable to the Marvin Attack â for more details, see RUSTSEC-2023-0071. ML-DSA operations in SubtleÂCrypto now do the Decompose step in constant time, fixing RUSTSEC-2025-0144 (@kkoyung, #45294). Weâve fixed an HTML injection bug (XSS) in file:/// directory listings , which affected file names containing </script> (@sahvx655-wq, #45510). Real world compat Layout correctness has significantly improved on lichess.org , and many websites have become a lot more readable thanks to our improved handling of variable fonts (@simonwuelker, #45768), including Zulip (servo.zulipchat.com) and Speedtest (speedtest.net). v0.3.0 v0.4.0 lichess.org v0.3.0 v0.4.0 Zulip (servo.zulipchat.com) v0.3.0 v0.4.0 Speedtest (speedtest.net) Many websites worked in Servo even before version 0.4.0, including Google Photos (photos.google.com) and Cash Converters (cashconverters.com.au), and continue to work in version 0.4.0. Other websites, like Google Maps (maps.google.com) and OpenStreetMap (www.openstreetmap.org), render well but have some issues with interactivity. Google Photos (photos.google.com) Cash Converters (cashconverters.com.au) Google Maps (maps.google.com) OpenStreetMap (www.openstreetmap.org) Weâre interested to hear how well your favourite websites run in Servo! Report successes in this Zulip thread, and failures in our GitHub issues. Work in progress
Weâre implementing the more powerful version of âattr()â that can be used anywhere, not just in âcontentâ, under
--pref layoutÂ_cssÂ_attrÂ_enabled(@Loirooriol, #45041, #45421, #45495, #45752).WebGPU support has improved, under
--pref domÂ_webgpuÂ_enabled:- implemented copyÂExternalÂImageÂToÂTexture() on GPUÂQueue (@sagudev, #45646)
- implemented createÂQueryÂSet() on GPUÂDevice and resolveÂQueryÂSet() on GPUÂCommandÂEncoder (@sagudev, #45644)
- implemented pushÂDebugÂGroup() , popÂDebugÂGroup() , and insertÂDebugÂMarker() on GPUÂCommandÂEncoder , GPUÂComputeÂPassÂEncoder , and GPUÂRenderÂPassÂEncoder (@jschwe, #45489)
- more conformant GPUÂTexture (@sagudev, #45300)
- more conformant requestÂAdapter() on GPU (@sagudev, #45424)
- more conformant secure context enforcement (@sagudev, #45279)
All of the features above are enabled in servoshellâs experimental mode.
Weâve made more progress towards accessibility support, under
--pref accessibility_enabled(@alice, @delan, #45555, #45554, #44949).Weâve started implementing visible and interactive text selection (@mrobinson, @SimonSapin, #46107), one of the most long- awaited features of any web browser. Stay tuned!
Weâve also started working on Web Animations , under
--pref domÂ_webÂ_animationsÂ_enabled(@simonwuelker, #45522, #45983), as well as webkitÂRelativeÂPath on File , under--pref domÂ_entriesÂ_apiÂ_enabled(@yezhizhen, #45666).Rust doesnât have a stable ABI, so it has generally not been possible to embed Servo in another application without building Servo from source. To make it possible, weâve started designing a wrapper C API that will let you consume Servo as a prebuilt shared library using the stable and ubiquitous C ABI (@mukilan, #44984). Eventually the idea is that weâll create a wrapper Rust API around that wrapper C API, so you can have both the ergonomics of Rust and the build simplicity of C.
Embedding API New in the Servo API: WebÂView::renderingÂ_context (@mrobinson, #46047) Breaking changes: WebÂView::sendÂ_error has been removed (@mukilan, #45502) â this method was always meant to be internal, and has become unused after we introduced the new WebÂView- and WebÂViewÂDelegate-based API Weâve improved the docs for WebÂView, WebÂViewÂDelegate, JSÂValue, AlertÂDialog, AllowÂOrÂDenyÂRequest, AuthenticationÂResponse, BluetoothÂDeviceÂDescription, ConfirmÂDialog, ConsoleÂLogÂLevel, CreateÂNewÂWebÂViewÂRequest, EmbedderÂControl, EmbedderÂControlÂResponse, FileÂPicker, Image, JavaÂScriptÂErrorÂInfo, NavigationÂRequest, PermissionÂRequest, PixelÂFormat, PromptÂDialog, ProtocolÂHandlerÂRegistration, ProtocolÂHandlerÂUpdateÂRegistration, Scroll, SelectÂElement, SelectÂElementÂRequest, and WebÂViewÂVector (@mukilan, #45282, #45467). For users and developers
In servoshell:
-
the Android version now requires Android 13+ (@jschwe, #46104)
-
the desktop version now lets you drag and drop files to open them (@simonwuelker, #45454)
-
the desktop version now lets the tab bar scroll horizontally if you have too many tabs open, but from one tab hoarder to another, maybe you should reconsider having so many tabs open (@Nylme, #44884)
-
the desktop version enters fullscreen on the monitor containing the window, even if youâve moved it to a different monitor (@rhit-kapilaar, #45556)
-
the desktop UI is more performant, resizes more smoothly, and no longer gets stuck in hovered states (@mrobinson, #45289, #45456, #45290)
-
< select multiple> should now be interactable on all desktop platforms (@alexcat3, #45419)
-
localhost:<port>now implieshttp://in the location bar and on the command line , rather than treatinglocalhost:as an unsupported URL scheme (@SteveSharonSam, #45729, #45832)
When using the Firefox DevTools :
-
in the Console tab, uncaught exceptions are reported correctly (@jdm, #45549)
-
in the Console and Debugger tabs, you can now inspect the elements of nested arrays and the entries of Map objects (@atbrakhi, #45435, #45514, #45767)
-
in the Debugger tab, the Scopes panel now shows any â(uninitialized)â variables, the value of
this, and the global scope (@atbrakhi, @eerii, #45824, #45517)
Weâve fixed some build issues on riscv32 , riscv64 , and arm64 (@fxzjshm, @saschanaz, #45285, #45731), and modernised servoshell for Android to use Compose UI and Kotlin (@veyndan, #45923, #45932, #45941, #45982, #45985, #46015, #46035, #46037, #46046, #46053, #46061, #46071, #45641, #45643, #45650, #45665, #45671, #45676, #45679, #45683, #45712, #45713, #45734, #45738).
For developers of Servo itself:
-
mach try --helpnow lists all of the kinds of try jobs you can run (@shubhamg13, #45607) -
mach test-wpt --update-expectationslets you run Web Platform Tests and update expectations in a single command (@TimvdLippe, #45521), rather than having to runmach test-wpt --log-raw <path>followed bymach update-wpt <path>
More on the web platform To allow for more performant scrolling, âwheelâ events are no longer .cancelable unless there are one or more non-passive event listeners (@kunalmohan, #45667). Note that like in Firefox, âwheelâ events are passive by default. âdottedâ , âdashedâ , and âwavyâ text decorations are now continuous across element boundaries (@mrobinson, #45726). Weâve improved the conformance of < dialog> (@skyz1, @mrobinson, #45825, #45761), < iframe sandbox> (@cychronex-labs, #45880), < input minlength> and < input maxlength> (@skyz1, #45705), CSS gradients (@mrobinson, #43945), âfont-styleâ and âunicode-rangeâ in â@font-faceâ (@Loirooriol, #45821), FontFaceSet (@mrobinson, #45390, #45382), HTMLÂInputÂElement (@steigeo, #45416), IntersectionÂObserver (@jdm, #45655, #45659, #45680), new Response() (@yezhizhen, #45953), URL.createÂObjectÂURL() and URL.revokeÂObjectÂURL() (@yezhizhen, #45182, #45417), and ECDSA and Ed25519 in SubtleÂCrypto (@kkoyung, #45833, #46017). Weâve fixed bugs related to < input hidden> (@mrobinson, #45750), âanimation-delayâ (@yezhizhen, #45013), âclip-pathâ (@Loirooriol, #45468, #45373), âtab-sizeâ (@SimonSapin, @mrobinson, #45309), âwidthâ and âheightâ (@RichardTjokroutomo, #44627), âbox-shadow: insetâ (@Loirooriol, #45620), âanimationÂiterationâ events (@Loirooriol, #45990), âclickâ events (@mrobinson, #45751), âloadâ events (@jdm, #45883), âerrorâ events in Worker global scopes (@Gae24, #45829), and documentÂ.getÂElementÂByÂId() (@mrobinson, #45433). Garbage collection safety
We use a RefCell -based mechanism to store many of our DOM types in other DOM types, enforcing Rustâs âaliasing xor mutabilityâ rule at runtime by panicking if the rule is violated. But when garbage collection happens, we need to borrow() each DomRefCell to trace the references, and this is the source of many panic bugs. To fix that whole class of bugs, we initially created CanGc , a marker type that would annotate the code paths where GC can occur, in conjunction with custom static analysis (@jdm, #33140).
With the Rust type system we can do even better, if we flip that around and require any borrow_mut() call to prove that GC can not occur by passing a NoGC marker value. We can then require that a
&NoGCmust be borrowed from a&JSContext(which blocks GC) and not a&mut JSContext(which allows GC), taking advantage of how Rust references work without needing any custom static analysis.We have a large codebase that needs to be migrated in parts, so for now weâve created the new method safeÂ_borrowÂ_mut() (@sagudev, #46050). We also need to update all of our script-related code to borrow our safe JSContext wrapper, rather than creating an owned JSContext on the spot.
This continues our long-running effort to use the Rust type system to make Servoâs integration with SpiderMonkey safer and more reliable (@Gae24, @Keerti707, @Narfinger, @TimvdLippe, @sagudev, @guptapiyush16, @ivomurrell, @kunalmohan, @skyz1, #45230, #45436, #45503, #45617, #45711, #45797, #45800, #45858, #45884, #45937, #45902, #45968, #45977, #45991, #46003, #46005, #46084, #45548, #45552, #45590, #45909, #45912, #45943, #46089, #46117, #46114, #45320, #45324, #45328, #45340, #45381, #45385, #45410, #45392, #45409, #45604, #45616, #45618, #45627, #45636, #45662, #45663, #45675, #45674, #45677, #45684, #45735, #45807, #45810, #45816, #45818, #45828, #45838, #45836, #45837, #45840, #45841, #45857, #45859, #45862, #45875, #45887, #45931, #45964, #45935, #45987, #45988, #46001, #46040, #46051, #46057, #46106, #46125, #45678, #46002, #45845, #45645, #45673, #45259, #45817, #45822, #45876, #45877, #45891).
Performance and stability NoGC was designed to prevent dynamic borrow failures, but it also enables some performance optimisations! If we can prove that garbage collection is impossible in some part of Servo, we can often avoid rooting JavaScript objects when interacting with them within that region of code. This has allowed us to reduce overheads by over 1% in the layout process and in HTMLÂCollection (@Narfinger, #46092, #45582). Our memory usage has improved, with BoxFragment now 17% smaller (288 â 240 bytes on amd64) and ShapeCacheEntry now smaller too (@SimonSapin, @mrobinson, @simonwuelker, #45183, #45496). Weâve fixed some nasty memory leaks when reloading and in 2D canvases (@Taym95, @sagudev, @jschwe, #45455, #45261, #45414). Speaking of which, 2D canvases now use up to 23% less power (@yezhizhen, #45301), and we now avoid rasterising the same SVG more than once (@Narfinger, @jschwe, #44805). Servo now decodes all images asynchronously and fills image caches asynchronously , leaving script threads (web content processes) more time for other work (@Narfinger, #45542, #44483). On top of that, weâve improved incremental layout (@mrobinson, @Loirooriol, #45411) and reduced reflows in IntersectionObserver (@jschwe, #45986). Weâve started working on incremental updates for the stacking context tree , and as a side effect, weâve made some layout-bound microbenchmarks up to 10% faster (@mrobinson, @Loirooriol, #45208). Weâve also reduced allocations, copies, GC rooting steps, and other operations in many parts of Servo (@Narfinger, @SimonSapin, @mrobinson, @Loirooriol, #45506, #45969, #45940, #45760, #46090, #45335, #45413, #45511). For several months, FrĂ©dĂ©ric (@fred-wang) has been fuzzing for Servo bugs, and thanks to his work weâve fixed sixteen (16) crash bugs in June, affecting < iframe>, < slot>, < link onerror>, âanimationâ , âclip- pathâ , âcontentâ , ârotateâ , âtransitionâ , âtransform- styleâ , âdisplay: contentsâ , âoverflow: clipâ , CSSÂKeyframesÂRule , FontÂFace , stop() on Window , documentÂ.elementÂFromÂPoint() , and the DOM tree (@mrobinson, @Loirooriol, @fred- wang, #46031, #46027, #46054, #46058, #46016, #46028, #46033, #45287, #45951, #45634, #45629, #46110, #46094, #45799, #45611, #45682, #45788, #45612, #45834). Weâve also fixed crash bugs related to IPC failures, HTMLÂInputÂElement , Range , the DevTools Debugger tab, and when servoshell is built with --features native-bluetooth (@jschwe, @Taym95, @mrobinson, @atbrakhi, @mukilan, #45311, #45619, #45765, #45513, #45702). New contributors
A special thanks to the following people for landing their first patch in Servo:
- Deepam Goyal (@Deepam02, #44836)
- Mark (@Mark-Boger, #45486)
- Mr SheerLuck (@MrSheerluck, #45557)
- Psychpsyo (Cameron) (@Psychpsyo, #45494)
- TusharSariya (@TusharSariya, #43663)
- Adam Sharif (@adamsharifc, #45551)
- Akash Ravikumar (@ak4shravikumar, #45736)
- Sean Cunneen (@alexcat3, #45419)
- Abdul Wahab Melethil Shibu (@cychronex-labs, #45880)
- darkdragon-001 (@darkdragon-001, #45267)
- Frédéric Wang Nélar (@fred-wang, #45834)
- fxzjshm (@fxzjshm, #45285)
- Piyush Gupta (@guptapiyush16, #45845)
- Ivo Murrell (@ivomurrell, #45645)
- rhit-kapilaar (@rhit-kapilaar, #45556)
- sahvx655-wq (@sahvx655-wq, #45510)
- Kagami Sascha Rosylight (@saschanaz, #45731)
- shangguanmachine-dot (@shangguanmachine-dot, #45310)
- Glenn Skrzypczak (@skyz1, #45471)
- Oskar Steiger (@steigeo, #45416)
- Veyndan Stuart (@veyndan, #45326)
Interested in helping build a web browser? Take a look at our curated list of issues that are good for new contributors!
Donations __
Thanks again for your generous support! We are now receiving 7681 USD/month (+0.2% from May) in recurring donations. This helps us cover the cost of our speedy CI and benchmarking servers, one of our latest Outreachy interns , and funding maintainer work that helps more people contribute to Servo.
Servo is also on thanks.dev, and already 35 GitHub users (same as May) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.
We now have sponsorship tiers that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If youâre interested in this kind of sponsorship, please contact us at join@servo.org.
7681 USD/month
10000
Use of donations is decided transparently via the Technical Steering Committeeâs public funding request process , and active proposals are tracked in servo/project#187. For more details, head to our Sponsorship page.
-
- July 30, 2026
-
đ IDA Plugin Updates IDA Plugin Updates on 2026-07-30 rss
IDA Plugin Updates on 2026-07-30
Activity:
- disrobe
- fa339fb7: regenerate the charts, evidence results and marker counts against theâŠ
- 380866dd: re-render the recovery chart and the card raster for the wasm executiâŠ
- 640c7bac: pin the pickle corpus bar to the test that already grades it, so its âŠ
- 26282c24: ollvm: name the toolchains each real-compiler grade actually covered,âŠ
- 72445757: wasm: name the 57 execution-eligible functions in a pinned roster, soâŠ
- f5144dac: lua: feed every luau opcode the table declares through the lifter andâŠ
- 4aa22a86: make a published figure that cites nothing resolvable fail the checksâŠ
- fe8b3822: swift-objc: decode the dylib list, uuid, rpaths, build version, entryâŠ
- ce4728fc: delphi: stop dropping single-letter enumeration members, published fiâŠ
- 23961d51: pyarmor: hold the recovery gate's floor to the fixture count the corpâŠ
- c403f31a: walk the js bundler roster on the real output of each tool instead ofâŠ
- b8d89a51: hermes: publish the decompile-correctness row at the 8 of 8 functionsâŠ
- faf1b0f0: binfmt: pick the archiver, cab writer and readelf by what actually stâŠ
- dde066cc: wasm: carry the external opcode denominator and the wasmtime executioâŠ
- b5a9009f: scan the hand-written evidence pages for metric markers too, so a figâŠ
- c044a6ce: dotnet: turn the ignored helloapp dump into a test that checks the acâŠ
- e7eb2f75: pick up the sha1 and sha2 entries the benchmark and recon manifests nâŠ
- eff742a9: wasm: divide op-coverage by a hash-pinned wasm-tools instruction inveâŠ
- f79e7ba4: dexguard: point the in-crate string-decrypt and protector-peel tests âŠ
- 42559ad1: delphi: give a record its own size field instead of borrowing the ordâŠ
- ida-domain
- ida-hcli
- ida-multi-mcp
- 3077662a: Merge pull request #38 from Whispersource/feat/py-eval-rewrite
- 43165b81: Merge branch 'main' into feat/py-eval-rewrite
- ca2f0af6: Merge pull request #32 from Whispersource/feat/stdio-fix-and-enhancemâŠ
- 1d2632b6: Merge branch 'main' into feat/stdio-fix-and-enhancements
- d1db9706: Merge pull request #37 from MeroZemory/feat/verify-install
- 93d104c6: Merge branch 'main' into feat/verify-install
- 2c044fd5: Merge pull request #36 from MeroZemory/docs/similarity-fallback-comment
- d8ee88cc: Merge branch 'main' into feat/verify-install
- 6505d3f1: Merge branch 'main' into docs/similarity-fallback-comment
- f0c85a25: Merge pull request #35 from MeroZemory/fix/rpc-dead-download-default
- 3b7871a1: refactor(py_eval): AST-based execution replacing try-eval-then-exec pâŠ
- d4b7bbc5: Merge remote-tracking branch 'upstream/main' into fix/idalib-stdio-hang
- ecf1393e: Merge branch 'main' into feat/verify-install
- d87752cc: Merge branch 'main' into docs/similarity-fallback-comment
- 3d8402d1: Merge branch 'main' into fix/rpc-dead-download-default
- db5bbf54: Merge pull request #34 from MeroZemory/fix/idalib-download-url
- d33c4996: fix(idalib): prevent worker hang when MCP server runs as stdio child
- 3d6a5f2e: feat(cli): add -verify to check the installed plugin loader
- 5d8cc452: docs(similarity): correct the fallback key comment
- aa454ad9: fix(rpc): stop advertising a download URL nobody answers
- ida-pro-mcp
- Luc-Nhan
- d253636b: Merge branch 'feat/knowledge-ui-sqlite-migration'
- a91024f8: fix(agent): honor user-configured budget on SQLite retrieval path
- d6e3ab20: test: fix ruff unused import in dual-write test
- 72c1b049: feat(ui): refresh knowledge panel on save_memory success
- b621b29e: refactor(agent): retrieved knowledge section reads from SQLite
- 4d6b912d: refactor(ui): knowledge panel reads from SQLite store
- e52df2e1: feat(ui): expose memory_service accessor on SessionControllerBase
- 65e4051a: fix(memory): restore title-match + body keyword scoring in ranker notes
- 2eb994cf: feat(memory): rank retrieved knowledge from SQLite store
- 0fa4bf4a: refactor(memory): dual-write exploration/research to SQLite and JSONL
- a3530ab3: feat(memory): auto-import legacy JSONL on first IDB open
- 9e50612c: feat(memory): convert JSONL records to bundle envelopes
- 63553c60: feat(memory): expose exploration finding write with graph metadata
- 2caadcea: feat(memory): migrate workspaces to schema v3 with graph metadata
- c72cb25e: Merge branch 'feat/memory-durability-orchestra-gate' into feat/knowleâŠ
- fb9c45e2: docs(plan): knowledge UI and write path SQLite migration plan
- 89735a02: docs(spec): fix 5 technical gaps in Knowledge UI migration design
- pharos
- quokka
- 1459d398: Merge pull request #124 from quarkslab/update-ci
- disrobe
-
đ Hex-Rays Blog LLMs Have Reshaped How We Think About Decompilation and Collaboration rss
Shifting Times
A few weekends ago, I was playing DEF CON CTF Quals, the qualification event for the "Olympics of Hacking," with my team Shellphish. I say "playing" because I am, at this point, a washed-up hacker, but add me to the 40-something ranks! Nonetheless, I showed up, downloaded a binary, and went to open it in IDA Pro: a reflexive, built-in response to anything compiled. But as that ever-knowing face rendered on my screen, I paused for a moment to take in the surrounding feverish hacking. Something was strange: no one else had IDA Pro open. In fact, no one had any decompiler open!

-
đ hacker news ida pro references New comment by mahaloz in "Kuna: Decompiler Development in the Age of Coding Agents" rss
Interesting. A lot of data shows IDA Pro is significantly better than Ghidra: https://decbench.com/
Based on today's results, IDA Pro is ahead by 15 percentage points, which would mean, statistically, IDA Pro will recover perfect source code for 15% more functions than Ghidra on average.
-
đ hacker news idalib references New comment by billypilgrim in "Kuna: Decompiler Development in the Age of Coding Agents" rss
idalib with Claude Code already works really well. But honestly, despite what people have been saying, LLMs have been very good at decompiling for at least two years now, I have been using it for that purpose regularly. Even just copying disassembly from the current function and all nested called functions from IDA into ChatGPT is already unexpectedly good.
-
đ The Pragmatic Engineer The Pulse: Quitting Spotify Podcasts over reliability rss
Hi, this is Gergely with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. Today, we cover one out of four topics of last week 's The Pulse issue . Full subscribers received the article below seven days ago. If you 've been forwarded this email, you can subscribe here .
You can no longer watch The Pragmatic Engineer Podcast as video in the Spotify app (only as audio) because I have quit publishing video on that streaming platform. This comes after I decided that reliability takes a back seat within that team - and across much of Spotify. Unlike on other platforms such as YouTube, Apple Podcasts, and Substack, I've recently encountered a series of reliability issues around Spotify being unable to process video episodes. Even though I enjoyed a direct link with the Podcasts team there, things haven't improved.
So from now, I will no longer be publishing video episodes on Spotify. You can find videos of my in-depth chats with guests only on YouTube. Apologies for any inconvenience this change causes! Audio episodes of the podcast can still be found on Spotify via the RSS podcast feed hosted on Substack.
Honestly, the decision to quit the streaming giant wasn't hard, and I reckon there's a point here about the risk of deprioritizing reliable operations at major companies in order to push on things like AI adoption, as Spotify seems to be doing.
Some context: for the first two years of The Pragmatic Engineer Podcast, it was published on three podcast platforms:
- Substack 's podcast platform (audio): this is where the "master" RSS feed is served to the likes of Apple Podcasts, the web, Overcast, Pocket Casts, etc
- YouTube (video): video episodes uploaded individually
- Spotify (video + audio): every video episode was uploaded individually and then served as video or audio episodes from the platform.
As someone hosting a podcast, there are good reasons to bother doing three separate uploads:
- Most podcast platforms don 't support video. There will always be a need for a platform that serves the master RSS feed for audio versions while the video ones are elsewhere.
- YouTube doesn 't integrate with anything. YouTube is the leader in video podcast distribution, and uploading there directly makes sense.
- I had a direct line to the Spotify team, which was a big plus. Starting out the podcast, I had the unusual privilege of contact with the podcasts team, thanks to the newsletter gaining a decently-size audience. I was persuaded to take the plunge with them.
For eighteen months, nothing major went wrong. The admin portal for podcast publishers (called 'Spotify Creators') was pretty wonky; it gave intermittent errors, and was unable to remember me when I signed in, so, each Wednesday, I'd have to sign in with a code sent to my email to publish an episode.
But overall, things worked, until it all went suddenly downhillâŠ
Unable to publish Spotify podcast episodes 3 out of 5 weeks
From late May, I did not include links to Spotify on new episode announcements because their podcasts product or platform seemingly had outages every time one published on Wednesdays at around 9am PST / 12pm EST / 6pm EU time.
Outage #1 (20 May): podcast publishing broke , my episode would not process on Spotify for 2+ hours. When uploading a video file to Spotify, there's a processing pipeline that runs to create chunks of the podcast in different video and audio formats. This pipeline appeared to stop running, meaning new episodes were not published.
It was not just the publishing that broke: the Creator portal looked absurd, with NaN% values everywhere, during the outage:
During
outage #1I emailed the Spotify team to alert them about the outage and also complained online. I got a response, confirming the outage and pledging to do better:
"The issue was in one of our podcast publishing metadata pipelines. A small subset of episodes completed normal media processing but then missed a downstream publish update because a newly introduced validation signal was not correctly wired into the logic that wakes up the publishing path. In simpler terms: the episode could become eligible to publish, but the final propagation step was not reliably triggered for that class of episodes.
We identified the root cause, deployed a fix, and reprocessed the affected episodes with all-clear called early this morning. We're also tightening the system so that fields used for publishing eligibility cannot be added without also triggering the relevant downstream updates.
Separately, we're reviewing how partial creator-impacting publishing delays are surfaced, because even when this is not a broad platform outage, it is still a bad experience for publishers like yourself.
Apologies again that you hit this. It was a real bug, not a wide outage, but it hit some of our most relevant creators."
Outage #2 (17 June): Spotify down. Four weeks later, when attempting to publish a video episode, all of Spotify went down for many users, including myself.
Spotify's
web player on 17 JuneSpotify does not maintain a status page, so it's impossible to tell how widespread the outage was. I didn't include a Spotify link in that week's announcement either.
Outage #3 (24 June): podcast publishing broke - again. Outage #3 in five weeks; deja vu. This time, it was episode publishing not working, yet again. After waiting two hours for the episode to publish on Spotify, I yet again sent out the announcement with no Spotify link.
I also emailed the Spotify Podcasts team, who confirmed the outage. I said I was considering stopping publishing video episodes, and to switch to audio- only publishing (which means pointing Spotify to my master RSS feed.) I said that an apology was appreciated but it wasn't enough to make it worth publishing video episodes there.
I also asked for the incident review because I had the feeling that reliability was not all that important on this podcast product. For the first outage I got a vague description of what happened, and promises of improvements that were never done - e.g. during this second outage, there was no improved communications to creators, which I was told would happen, after outage #1.
Internally, Spotify's team surely conducted an incident review as per usual, so I figured I'd hear back in about two weeks' time, and assumed a reply would be forthcoming because I'd made clear I was ready to leave Spotify Podcasts if reliability didn't improve.
No incident review three weeks later, so I quit Spotify
The incident review had never arrived as promised by three weeks later, even though there had been time for it to be completed. It was yet another sign of a platform that has become unreliable. Also, the creator portal occasionally threw up this error:
Spotify
's creator portal on 16 JulyI checked my Spotify stats: stream plays had been trending downwards unsurprisingly, given the ongoing outages, while the other podcast platforms didn't show the decline.**** It made me decide "enough is enough" and to move off Spotify.
Staying on their platform depended on seeing an incident review, but they didn't prioritize transparency, still had no status page, and nobody had built a feature for episode-processing status like YouTube has had for years. So, I pulled the plug and left:
Offboarding
from Spotify's (video) podcasts productAfter I made the switch away from Spotify, the platform's creators portal became buggier than ever, as in these examples:
My
Creators page after I changed the source of my podcasts to the master RSS feedComments disappeared:
My
show had no comments, suddenly⊠even though other parts of the UI showed dozens of comments:
Zero
comments, yet episodes with commentsEpisode links directed to 404 pages:
404
pages inside the Creator portal, when clicking linksA day or two later, these issues disappeared: I assume no one had tested the flow of moving away from Spotify Podcasts to an RSS feed, and it's why the experience was so poor.
Incident review finally published, but with a wrong timeline
A few days after offboarding from Spotify, their team published the incident report for outage #3. Reading through it, something did not add up in the timeline:
The
original timeline published for the 24 June incidentMy email account confirmed that I mailed the Spotify team at around 17:30 about the outage. So, after weeks of creating this report, why did the incident report downplay the fact that customers alerted the team before their own automated alerts fired?I complained to the Podcasts team, and to their credit, the incident report was updated:
The
updated incident timelineI didn't like how high-level the report is, and how vague the promised improvements were. Specifically, this one:
"During this incident, many creators learned something was wrong from their audiences before they heard anything from us. We are improving our processes and technical capabilities so creators get notified as soon as possible when things aren't working."
Overall, I don't regret the choice to leave, particularly when the focus of Spotify's leadership is on AI, not reliability.
Does Spotify have "AI psychosis?"
Previously, I used the term "AI psychosis" differently from the usual way of describing when someone starts believing everything an AI model tells them, however outlandish. I applied it to Meta's rush to develop its own AI model at the cost of the reliability of its profitable business activities. This was based on Instagram's most embarrassing-ever account takeover incident, which occurred when the team responsible for Instagram's Trust & Safety was slashed. Soon after, AI- generated, AI-reviewed code caused the hacking of a former US president's account.
At Spotify, it should have gone the other way. In March, I had the opportunity to meet its Head of Technology & Platforms, Tyson Singer, who said the company puts reliability far ahead of AI adoption, and doesn't adopt AI for its own sake. So, it was somewhat surprising to read the summary below of a podcast Spotify did with Anthropic:
"Spotify now ships 4,500 production deploys a day, and 73% of PRs are now AI-assisted.
Niklas Gustavsson (VP of Engineering at Spotify) keeps 5 to 10 Claude sessions running in tmux, one per git worktree, agents working in the background. All of it inside a 20M+ line monorepo. He expected agents to struggle at that size, but it's worked well.
Spotify's migration codemods grew into thousands of lines of edge cases. Code has too much API surface for static rewrites. Early LLMs barely did better. Adding a judge took PR success from ~25% to 80%.
All of this leans on verification, the single most important thing when agents are used and the place most companies underinvest
Spotify rebuilt their test automation around it so engineers can confidently guide and supervise agents, rather than manually execute repetitive tasks."
It seems to me that all the talk is about usage of AI, and none about reliability , all while Spotify's platform becomes less reliable than ever, at the same time as the streamer is going all-in on AI; with AI judges and devs running 5-10 parallel Claude sessions.
All things considered, it's worth asking if Spotify has the corporate variant of "AI psychosis", whereby the reliability of a successful operation gets torched in the chase for the next big thing by executives. I don't even think Spotify is all that different from Meta and other companies in this!
Things look bad, based on the quality and reliability degradation of products. Annoyingly, in many cases, customers don't really have the choice of going elsewhere. My podcast is an exception, as video podcasts on Spotify never truly took off, so quitting the platform wasn't a big deal. Even so, I'm particularly disappointed that Spotify has prioritized AI usage over reliability. I know some executives there pushed against this, but I feel safe in assuming that they lost that battle.
Value of staying reliable & "sucking less"
Max Kanat-Alexander, distinguished engineer at Capital One, has written about how a software project can become wildly successful just by "sucking less" in his reflections upon the success of the Bugzilla project, (2004-2009):
"All you have to do to succeed in software is to consistently suck less with every release.
Nobody would say that Bugzilla 2.18 was awesome, but everybody would say that it sucked less than Bugzilla 2.16 did. Bugzilla 2.20 wasn't perfect, but without a doubt, it sucked less than Bugzilla 2.18. And then Bugzilla 3.0 fixed a whole lot of sucking in Bugzilla, and it got a whole lot more downloads.
Why is it that this worked?
As long as you consistently suck less with every release, you will retain most of your users. You're fixing the things that bother them, so there's no reason for them to switch away. Even if you didn't fix everything in this release, if you sucked less, your users will have faith that eventually, the things that bother them will be fixed. New users will find your software, and they'll stick with it too. And in this way, your user count will increase steadily over time.
But what happens if you release frequently, but instead of fixing the things in your software that suck, you just add new features that don 't fix the sucking? Well, eventually the patience of the individual user is going to run out. They're not going to wait forever for your software to stop sucking."
Personally, I got tired of Spotify's Podcasts product continually going in the wrong direction on Max's scale: the poor reliability, frequent errors on the Creators site, and the sense that they don't really care about improving existing things.
Read the full issue of last week's The Pulse. The full The Pulse additionally covers:
- Will Kimi K3 trigger US push for closed-source AI models? Moonshot AI's latest open model, Kimi K3, is on par with Anthropic's Fable 5. Could it lead to the US government regulating or banning Chinese open models to protect US labs?
- AWS laughs off "heart attack" billing error. AWS customers were billed trillions more than they should have been, due to what was likely a conversion error. But instead of sharing an incident report, AWS saw the funny side.
- Industry pulse. OpenAI's unreleased model tried to hack HuggingFace to improve its test scores, X took more than a year to develop its new Android app, Google's new AI model flops, and more.
-
đ hacker news ida pro references New comment by comandillos in "Kuna: Decompiler Development in the Age of Coding Agents" rss
Haven't used IDA much lately, but after looking at the screenshot with that IDA PRO decompiled code in their website I feel like Ghidra is already ahead of them in this area :D
-
đ backnotprop/plannotator v0.25.1 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.25.0 | Vim keyboard controls, Approve with Notes, scriptable annotate gates, persistent Guided Reviews, memory and file-watching hardening
v0.24.2 | Annotate YAML/JSON/TOML config files, XDG data directory support, Codex model catalog update, Cursor sandbox escape hatch
v0.24.1 | Annotate accepts parent-relative../file paths
v0.24.0 | PR/MR artifact gallery, GitButler review support, port ranges, expanded comment editor, OpenCode + Pi fixes
v0.23.1 | Startup no longer hangs on large or slow directory trees, Ask AI input stays visible after long responses
v0.23.0 | Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only--minimalinstall, reviews post without attribution
v0.22.0 | Git-status "All changes" default review view, Commits panel with per-commit diffs, Guided Review, Pi + GitHub Copilot CLI review engines
v0.21.4 | Markdown math rendering, PR Overview panel with annotatable description and comments, agent instructions in code review, media parsing fixes
v0.21.3 | File comments in code review, unified click-to-highlight comments, VS Code clipboard/keyboard bridge, Codex Ask AI on app-server transport, CLI subcommand help
v0.21.2 | Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 | Annotate-last blank-page fix on multi-message sessions
What's New in v0.25.1
Eight pull requests landed since v0.25.0, six of them from community members, and four authors made their first contribution. The release stops code review from launching Codex when you never asked for it, teaches
plannotator lastwhich conversation you are actually in, adds Claude Opus 5 to the model pickers, and mirrors approved plan checklists into editable pi-todos. Two fixes came out of pre-release QA rather than a report.Opening a review no longer launches Codex
Constructing the AI runtime ran Codex model discovery immediately, which meant that simply opening a code review spawned a
codex app-serverprocess. Users who had Codex installed but never intended to use it got a stray process, and on macOS the launch could raise a Gatekeeper prompt in front of a review they were trying to read.Discovery is now deferred until a Codex session actually starts, or until you explicitly select Codex in the provider picker. Selecting Codex activates it and refreshes the model list on that gesture, so the real catalog and per- model reasoning-effort options still appear before you pick anything. Saved model preferences are left alone rather than being overwritten by a placeholder.
plannotator lastfollows the live conversationTwo separate bugs made
plannotator lastannotate the wrong message.In Claude Code,
/rewinddoes not remove anything from the session transcript. It re-parents the next message to an earlier point and leaves everything after that orphaned in the file forever. Reading the file bottom-up therefore offered messages that were no longer part of the conversation. The message picker now walks the conversation tree from the newest entry back to the root, so rewound branches stay out. On a linear session the result is identical to before, and a transcript whose structure cannot be trusted falls back to the previous behavior rather than returning nothing.In GitHub Copilot CLI,
plannotator lastpicked a session by file order and would silently annotate a stale transcript instead of the live one. Copilot CLI exposes no environment fingerprint, so the fix walks the process ancestry and matches it against Copilot's own session lock files, which identifies the live session deterministically even with several sessions open in the same directory.- Transcript tree walk by @BrandonNoad in #1141
- Copilot session routing by @mararn1618 in #1150, closing #1149
Approved plan checklists mirror into pi-todos
Under Pi, an approved plan's checklist lived only in the plan and the progress widget. If you also use pi-todos, your todos and your plan were two separate lists.
On plan approval, Plannotator now detects pi-todos and mirrors the approved checklist into it, closing each todo as the agent completes the corresponding step. Sync is one-way, so reordering or rewording a todo can never desync plan execution. The mirror is additive: the existing progress widget stays exactly as it was, because pi-todos renders its list on demand rather than continuously, and replacing a live display with files behind a keystroke would be a downgrade. It is inert when no provider is present, and
PLANNOTATOR_TODO_PROVIDER=offturns it off entirely.Abandoned annotate gates stop waiting forever
A structured annotate gate (
--gate --json) blocks until the reviewer decides. If every review surface was closed without a decision, nothing ever settled and the calling script waited indefinitely.Each open review surface now holds a lease over a heartbeat stream. Once at least one client has connected, closing the last one starts a 30-second reconnect window; reconnecting inside that window continues the same review, and expiry resolves the gate as the same
dismisseddecision an explicit Close produces. The saved annotation draft is deliberately kept, so an abandoned review can still be recovered. Page lifecycle events are not used for this, because reload and navigation fire the same events as abandonment and cannot be told apart. A session that never receives a client never auto- dismisses, so browser-launch failures still need a timeout on the caller's side, and remote sessions keep the behavior off because a tunnel disconnect would read as an abandoned review.Claude Opus 5
Claude Opus 5 is available in the Ask AI model picker and in the review-agent model list that Review Agents, Code Tour, and Guided Review launch from. Launched review jobs now default to Opus 5 instead of Opus 4.7. Existing saved model preferences are untouched: this changes the default for anyone who has not chosen a model.
- Authored by @backnotprop in #1151
Approving with notes now reaches Amp and Droid
Approve with Notes shipped in v0.25.0, but the Amp and Droid adapters dropped the feedback field on approved decisions. Approving with annotations sent a bare "Approved." and the notes were lost. Both adapters now surface the notes, using the same wording the other runtimes already emit.
- Authored by @Souptik96 in #1146, closing #1137
Additional Changes
- Reopening search selects the existing query. Pressing
Cmd/Ctrl+Fin code review with text already in the search box now focuses the input and selects its contents, so typing replaces the old query instead of appending to it. Matches how browser find behaves. By @omederos in #1152 - Pi no longer crashes after plan approval in headless sessions. Pi 0.69 and later invalidate an extension's session context on teardown, and every call on a stale context throws. The post-approval continuation timer polled that context, so a session ending underneath it (headless plan runs, or
/newimmediately after approving) killed the whole Pi process. The continuation now cancels instead, and the fire-and-forget browser open no longer crashes Pi through an unhandled rejection when a launcher fails. Closing #1140 - The pi-todos mirror stays inside the project. Found in pre-release QA: a repository shipping
.pi/todosas a symlink pointing elsewhere had the plan checklist written to the symlink target. The implicit<cwd>/.pi/todospath must now resolve inside the project or the provider reads as absent. An explicitly configuredPI_TODO_PATHis still honored anywhere, since that is the user's own choice. - The abandoned-gate fix now covers OpenCode. Also found in pre-release QA: three of the four places that start an annotate server were wired for lease-based dismissal, and OpenCode's
/plannotator-lastbridge was missed, so it still hung on abandonment. It is wired now, with a test that checks every call site so the next one cannot be missed the same way.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extension
What's Changed
- feat(pi): mirror plan checklist to pi-todos by @jms830 in #1139
- feat(ai): add Claude Opus 5 across providers and review agents by @backnotprop in #1151
- fix(hook): read annotate-last from Claude Code's transcript tree, not file order by @BrandonNoad in #1141
- fix(amp,droid): surface Approve-with-Notes feedback instead of dropping it by @Souptik96 in #1146
- fix(hook): route annotate-last to the live Copilot CLI session by @mararn1618 in #1150
- feat(annotate): dismiss abandoned gate sessions by @rNoz in #1143
- fix(ui): focus and select existing review search text by @omederos in #1152
- fix(ai): defer Codex model discovery until a Codex session starts by @rNoz in #1145
New Contributors
- @jms830 made their first contribution in #1139
- @Souptik96 made their first contribution in #1146
- @mararn1618 made their first contribution in #1150
- @omederos made their first contribution in #1152
Contributors
@rNoz filed and fixed both of this release's runtime problems on the Pi and Codex side. #1144 identified that Codex discovery ran during AI runtime construction, which is what made opening any review launch Codex, and #1142 identified that structured annotate gates never settled once every client disconnected. Both PRs arrived tested, and the lease design in #1143 is careful work: it infers presence from a connection rather than from page lifecycle events, which is what makes reload and navigation distinguishable from abandonment.
@BrandonNoad diagnosed the
/rewindbehavior in Claude Code transcripts, wrote it up clearly enough that the fix was easy to reason about, and helped settle the compaction edge case during review.@mararn1618 reported the Copilot CLI staleness in #1149 and had the fix open within the day, including the lock-file approach that makes live-session detection deterministic rather than a guess.
@jms830 implemented the pi-todos mirror as a first contribution, including a
TodoProviderinterface that leaves room for other providers, and traced pi-todos and oh-my-pi carefully enough to argue for an additive mirror instead of replacing the progress widget. The reasoning was recorded in the code rather than lost in the thread.@Souptik96 fixed the Amp and Droid approve- with-notes gap, matching the wording the other runtimes already use rather than inventing a new shape for those two adapters.
@omederos fixed the review search field so reopening it selects the existing query, which is how browser find has always worked.
@JayGhiya asked for pi-todos interoperability in #484 and described why it mattered: todos in pi-todos are editable, which makes them good for steering. That request is what #1139 implements.
Full Changelog :
v0.25.0...v0.25.1 -
đ Kagi release notes July 30th, 2026 - Kagi Assistant on the go and design refinements for Search rss
Announcing the official Kagi Assistant apps
Kagi Assistant is now available as a native app for iOS and Android!
Ask a question, explore the web, work with files, conduct in-depth research, or choose from leading AI models, all from your phone. Your threads and Custom Assistants stay with you, so you can pick up wherever you left off.
These are the first steps towards delivering a fantastic Kagi Assistant experience on mobile, with much more to come.
Download it now:
- App store: https://apps.apple.com/app/6755965340
- Play store: https://play.google.com/store/apps/details?id=com.kagi.assistant
Give it a spin and let us know what you think!
Report responses directly from Kagi Assistant
You can now report an assistant response without leaving the conversation. Hover over any assistant message and select the thumbs-down button to open the feedback form, where you can report issues for reasons ranging from UI bugs to harmful content.
Note that when you submit a report, the full thread is shared with Kagi for review. The report and its associated copy of the thread are automatically deleted from Kagiâs review records after 30 days.
Export or delete all your threads
We've also added important controls, so you can now export all your threads or permanently delete them at once from
Settings > General.
Kagi Search
A sharper search experience
Weâve polished the search results page to make its controls easier to find and understand. From the filter bar to domain-related options and menus, these updates bring greater clarity and ease of use to the features you rely on most.

Exchange rates, right in your search results
Next up in our broader effort to improve search widgets: currency conversion. Comes handy when youâre planning a trip, shopping abroad, or simply want to keep tabs on exchange rates.

Other improvements and bug fixes
Kagi Search
- Fixed several animations that didn't respect the system's
prefers-reduced-motionsetting - 'Open first result' shortcut suggestion tries to escape double-quotes #8752 @craftypersimmon
- Fake 1337x domain #9279 @fxgn
- Dice Number getting cut off in the thousands #10964 @Flossiii
- Some Kagi lenses not working for me in Kagi search #10970 @Fearce
- NSFW results when searching for "xteink black vs white" while safe search is turned on #10905 @ciccero040
- Incorrect definition of "socialism" #10988 @thoroughly
- Nothing triggers the weather widget when the interface language is set to German #4612 @laiz
- Cannot Manually Select Location in Privacy Settings #11005 @iamjameswalters
- More and share buttons disappeared - Mobile DOM #10957 @NyraSyn
- Slopstop blocks whole domains #11039 @kslays
- Unable to report AI image slop on mobile due to popup closure #11066 @Hanbyeol
- Kagi adding extra {{{s}}} in bang redirect when no query #9885 @jadams9
- "Profile not found for ki_research" error when using
??shorthand #11020 @paying_customer - Kagi Knowledge answer for "Labour Day 2025" gives wrong date #8713 @wanion
- Delete recent language option #8549 @ten
- Stopwatch should not start from searches like
0424:2422#6061 @xfhrnozxqnrnqrsvntp - [Android] Quick Switch Doesn't work #7695 @cr0ntab
- Save a round trip: Advertise HTTP/3 support in an HTTPS DNS record #10829 @drrlvn
- Searching for
<script>returns no results #11117 @Bonarc
Kagi Assistant
- Camera button in assistant #5261 @Arnaud
- Assistant error "something went wrong..." when "web access" is selected #6687 @Nyaa
- Gemma 4 31B failing to read images #10947 @Dustin
- Assistant: Remove whole history #6971 @Wanja
- Didn't like a Quick Answer response? post it here #9082 @Thibaultmol
- Hourglass design is bad #11034 @shurik
- FIXED - !ai bang - Query not working #11077 @fanged_bagful
- Temporary threads don't actually get removed #10780 @foxberg34
Kagi Translate
- Kagi Translate reloads the page when using website translate #10852 @tijol
- Dictionary now shows language-specific grammar details, starting with Czech animate/inanimate nouns
- Proofread no longer suggests changes to text that was already correct, such as de-capitalizing German nouns
- Translations no longer occasionally come back untranslated
- Translations keep proper typographic punctuation instead of straightened quotes
- Alternative translations now work when selecting part of a longer text
- Double and triple-click selection in the translated text works as expected, and the alternatives panel no longer flickers while loading
- "New version available" banner appears less often and supports dark mode
- Reset-All Button for Translate #10999 @erakagi
- Document Translate for Typst #11098 @weriomat
- Palestinian Arabic in Translate #11006 @zsoltsb
- Phonetic Translation Placement #10699 @dwahdany
- Myanmar alias for Burmese #10495 @mb
- Translation History panel cannot be closed in Brave (Windows 11) #10997 @vshlapakov
- Prompt being read prior to translated word #10974 @kagifeedback-1xxkg
- Kagi Translate Audio Broken #10923 @levers
Kagi News
- Kagi News no longer showing births and deaths Today In History #11026 @eggnog_90241
- Content filter should backfill removed articles with the next available ones #10828 @roy_carver023
- Clearer feedback door #10919 @Coldcartcold
- Fast font option #10001 @broken665
- RTL content is displayed in the wrong direction when the interface language is LTR #10298 @maxmellen
-
đ r/LocalLLaMA Think of the children, another excuse for them to go after open source AI rss
-
đ Cryptography & Security Newsletter The State of Post-Quantum Cryptography rss
For people who deal with network security, the last couple of years have been busier than usual, largely because of the impending threat of quantum computers that are going to annihilate all cryptography we use and love today. If youâre feeling fatigue from the firehose of events, youâre not alone. For me, personally, there is a sense that weâre seeing fewer and fewer technical announcements, which is perhaps pointing to the fact that most of the technical decisions have been made. At the same time, the deadlines have been shortened on account of the fears that cryptographically-relevant quantum computers (CRQC) are arriving sooner than anticipated. What lies ahead of us is definitely going to be hard, but weâll need to only execute on the plans?
-
đ pydantic/pydantic-ai-harness v0.14.0 (2026-07-29) release
What's Changed
- fix(ci): let dependency approval revoke a label and still report by @dsfaccini in #495
- docs(agent_docs): record where operational policy lives by @dsfaccini in #497
- Clarify runtime capability creation documentation by @dsfaccini in #499
- Add first-party MongoDB backend + externalize large text parts by @dsfaccini in #446
Full Changelog :
v0.13.0...v0.14.0 -
đ Console.dev newsletter superfile rss
Description: Fancy modern terminal file manager.
What we like: Built with Go. Supports all the file operations youâd expect. Build-in search. Split into panels and copy/paste between them with shortcuts. Configurable and themeable.
What we dislike: Partial Windows support.
-
đ Console.dev newsletter LetsSeal rss
Description: Prove files.
What we like: Built on an open standard to prove a file exists and is unaltered. Works via the web and through a CLI. Has a GitHub action. Can be self-hosted. Verification is through re-hashing and comparison, with a public transparency log.
What we dislike: Although you can verify offline, it still requires writing into a public transparency log (blockchain).
-
đ New Music Releases Swedish House Mafia - Happiness Is So Sad rss
Swedish House Mafia - a new release is available:
- 2026-07-30: Happiness Is So Sad (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
- July 29, 2026
-
đ IDA Plugin Updates IDA Plugin Updates on 2026-07-29 rss
IDA Plugin Updates on 2026-07-29
Activity:
- diaphora
- 842d83ba: Merge pull request #363 from r0ny123/fix-plugin-logger-isolation
- haruspex
- hrtng
- 6bfe8fb6: Enums: fix issues raised in #60
- ida-pro-mcp
- IDAPluginList
- 2411ad74: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
- Luc-Nhan
- mcrit-plugin
- aafb98c2: Fix generator len() error in GUI smoke block widget exercise
- 1e41c767: Suppress IDAPython PyQt5 shim dialog in GUI smoke
- feab22fb: Harden IDA GUI smoke startup
- 9b4e85d4: Align IDA GUI smoke Python runtime
- 21c4210f: Fix GUI IDA startup configuration in CI
- 638837cf: incremental fixes part 23
- 499afcbf: incremental fixes part 22
- c852e9f1: incremental fixes part 21
- b0e8af12: incremental fixes part 20
- 2b2094d1: incremental fixes part 19
- 9abd668b: incremental fixes part 18
- edbd3845: incremental fixes part 17
- c3eb04cd: incremental fixes part 16
- cde467c8: incremental fixes part 15
- 8c1a167e: incremental fixes part 14
- c2894b05: incremental fixes part 13
- ffa3b884: incremental fixes part 12
- bf25ee68: incremental fixes part 11
- b6ac0c88: incremental fixes part 10
- 66f7db90: incremental fixes part 9
- pharos
- rhabdomancer
- 54fcba5e: refactor: optimize performance in the implementation of
Priority
- 54fcba5e: refactor: optimize performance in the implementation of
- diaphora
-
đ earendil-works/pi v0.83.0 release
New Features
- Credential export for external clients â
pi auth print-api-keyandpi auth print-bearer-tokenexport configured credentials with automatic OAuth refresh and minimum-validity enforcement. - Headless OpenRouter sign-in â Complete
/loginover SSH by pasting the redirect URL or authorization code when the loopback callback is unavailable. See OpenRouter. - Claude Opus 5 on GitHub Copilot â Use Claude Opus 5 through GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot.
Breaking Changes
- Upgraded bundled TypeBox aliases to 1.3.7, removing deprecated APIs including
Type.Base,Type.Awaited,Type.Promise,Type.AsyncIterator,Type.Iterator,Type.Options, andValue.Mutate, while fixing compiled validation of nullable array tool arguments. Extensions using removed APIs must migrate to supported TypeBox APIs. See Package Dependencies (#7243 by @petrroll).
Added
- Added
pi auth print-api-keyandpi auth print-bearer-tokencommands for exporting configured credentials to external clients, including automatic OAuth refresh and configurable minimum token validity (#7168). - Exposed the session's resolved model scope as
ctx.scopedModelsto extensions. See Extension Context (#7191 by @pungggi, #7215). - Added inherited per-request
fetchinjection for supported text and image provider transports. - Added the inherited
"pending"stop reason for partial streaming messages. See Custom Provider Stream Pattern (#7151 by @lucasmeijer). - Added inherited raw provider stop reasons across Google, Anthropic, Amazon Bedrock, Mistral, and OpenAI streams; unmapped terminal reasons now surface as provider errors instead of successful stops (#7272).
- Added manual redirect URL and authorization-code entry to OpenRouter login for remote and headless environments. See OpenRouter (#7114 by @rgarcia).
- Added inherited Claude Opus 5 support for GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot (#7158 by @jay-aye-see-kay).
Changed
- Changed inherited OAuth credential resolution to refresh tokens with less than five minutes of validity remaining instead of waiting until expiration (#7168).
Fixed
- Added a status line when the tool output expansion is toggled (#7180).
- Fixed file-backed
SYSTEM.mdandAPPEND_SYSTEM.mdprompts being omitted from the interactive startup context listing. See System Prompt Files (#7096). - Fixed context files loading twice when a linked Git worktree is nested under its main repository. See Context Files (#7221 by @arajkumar).
- Fixed llama.cpp streamed responses reporting zero token usage and leaving session context accounting empty. See llama.cpp (#7258 by @SteveImmanuel).
- Fixed session replacement and committed tree navigation during an active response to abort and persist the outgoing turn instead of leaving dangling tool calls. See Sessions (#7022 by @tmustier).
- Fixed failed Git package installs leaving partial directories that blocked clean retries. See Install and Manage (#7210 by @haoqixu).
- Fixed the
/modelselector retaining a stale selection while filtering instead of highlighting the top match (#7211 by @christianbasch). - Fixed direct RPC bash commands bypassing extension
user_bashhandlers. See User Bash Events (#7214). - Fixed skills, prompts, and themes losing package source metadata after extensions reload resources. See Resource Events (#6968).
- Fixed cancellation of concurrently running user bash commands so every active command is aborted (#7103 by @yzhg1983).
- Fixed duplicate messages appearing when extensions switch sessions during interactive startup (#7110 by @yzhg1983).
- Fixed inherited Qwen Token Plan reasoning models to send their service-specific thinking controls and supported reasoning-effort levels (#6951, #6998).
- Fixed inherited Z.AI output limits being sent through an unsupported parameter. See Providers (#7174 by @HyeokjaeLee).
- Fixed explicitly configured Amazon Bedrock profiles being overridden by ambient AWS access keys. See Amazon Bedrock (#7176 by @christianbasch).
- Fixed inherited image fallback paths overflowing narrow terminals, shortened home-directory paths, and made absolute paths clickable when terminal hyperlinks are available (#7262).
- Fixed inherited OpenAI-compatible tool calls losing their function arguments when malformed deltas also contain an empty
customobject (#7288 by @sunnyyoung).
- Credential export for external clients â
-
đ r/LocalLLaMA The open-weights carousel never stops. rss
| submitted by /u/InternationalGap3698
[link] [comments]
---|--- -
đ @HexRaysSA@infosec.exchange Vegas in August = Hacker Summer Camp. mastodon
Vegas in August = Hacker Summer Camp.
We'll be at Black Hat, B-Sides LV, and DEF CON 34.Highlights: a demo of our upcoming Malware Analysis Add-On, a hands-on DLL sideloading workshop (40 seats, register now), a live look at Teams' new Git- native workflow, and recruiting. (Yes, we're hiring!)
đ Find the full rundown and where to catch us: https://hex-rays.com/blog/hex- rays-hacker-summer-camp-2026
-
đ @binaryninja@infosec.exchange Current Binary Ninja newsletter subscribers are automatically entered. New mastodon
Current Binary Ninja newsletter subscribers are automatically entered. New subscribers who sign up during the giveaway will also be entered for remaining drawings. Sign up here: https://v35.us/dn6rcg5
-
đ @binaryninja@infosec.exchange Day 7 of our 10-year anniversary celebration comes with another big prize! mastodon
Day 7 of our 10-year anniversary celebration comes with another big prize! Today weâre giving away a Commercial license! Already have a license? The prize can be used as a license extension. https://binary.ninja/10years
-
đ pydantic/pydantic-ai-harness v0.13.0 (2026-07-28) release
What's Changed
- subagents: per-delegation model selection via an opt-in model menu by @dsfaccini in #451
- Register skills page in docs nav.json by @dsfaccini in #484
- Rename capabilities to follow the documented naming convention by @DouweM in #480
- Skip LocalStack integration on fork pull requests by @dsfaccini in #487
- docs(agents): push-and-watch rule for agent contributors by @dsfaccini in #452
- Keep pre-rename PyaiDocs agent specs loading by @DouweM in #488
step_persistence: opt-inmax_snapshots_per_runto bound snapshot growth by @dsfaccini in #442- test(docs): enforce
docs/nav.jsonparity so pages cannot ship orphaned from the site nav by @dsfaccini in #491 - Gate dependency-file changes on maintainer approval by @dsfaccini in #492
- feat(
conversation_search): BM25 search over the historyStepPersistencestores by @dsfaccini in #413
Full Changelog :
v0.12.0...v0.13.0 -
đ r/LocalLLaMA Nvidia is expected to raise GeForce RTX GPU prices again by up to 30% rss
| submitted by /u/ab2377
[link] [comments]
---|--- -
đ seanmonstar Micro: I want your own words rss
If you choose to communicate with me, all I ask is that you use your own words. Bug reports and issues. Pull request descriptions and especially review comments. This isnât new, but I wanted a link of my own.
LLMs write way way too much. I donât know if you understood it enough for me to ask questions back. They donât use reasoning, so is it real? If you didnât care enough to write it, do I care to read it?
Iâm torn when I receive LLMed reports. Initially, I really donât want to read all that. But at the same time, my mind nags me; somethingâs broken and I should fix it for everyone. If it makes it easier for someone to report a bug, thatâs a pro, I guess.
-
đ Mitchell Hashimoto Superlogical rss
(empty) -
đ Ampcode News Banking on the Frontier rss
Amp Labs has partnered with Westpac, one of Australia's oldest and most respected companies, a fixture of Australian business for more than two centuries, to transform how the bank builds and delivers technology.
Amp Labs operates on the thesis that the biggest impact comes from working with carefully selected customers with deep mutual trust and a shared ambition to explore the frontier together.
The frontier isn't just the models and the agent, it's putting them to work on real enterprise problems, like migrating and modernizing data systems that millions of people rely on every day. Being on the front lines and doing the work inside these companies is how we keep Amp on the frontier for everyone.
We are building a team to work side-by-side with Westpac engineers, on site in Sydney.
The Founding Team
Gareth Townsend Previously Block
Matty Evans Previously Ethereum Foundation
Andrew Gerrand Previously Google
Chris Nicol Previously Canva
Ryan Christensen Previously CanvaJoin Us
We're hiring. If you are Sydney-based and want to work on the frontier inside Australia's first company: join@amplabs.com.
-
đ Ampcode News Who Cares About the Model? rss
Two weeks ago we shipped the Dial and quietly did something that's supposed to be traumatic: we changed the default model.
Before the Dial, Amp's default mode was
smart, running Claude Opus 4.8 and carrying more than half of all new threads. The Dial mademediumthe default, andmediumruns GPT-5.6 Sol.Most Amp users switched from Anthropic to OpenAI overnight.
We braced for the outcry. Every model swap in every coding tool comes with one. We prepared migration docs, packaged the old modes as installable plugins, and waited.
Nothing happened. Not a single complaint.
Here's what the switch looked like in production:
The day before the Dial shipped,
smartcarried 55% of new threads. A week later: zero. Last week, the four Dial modes carried 93% of all new threads, andmediumalone carried two-thirds. Of the users on the Dial, 69% never set it to anything butmedium.And the Amp plugins we shipped to bring the old modes back â exact prompts, exact models, one command to get
smartagain? Almost nobody installed them.What This Tells Us
The differences between frontier models are now small. Small enough that for one engineer on one task, switching models won't visibly change the result.
But they still matter to us, here at Amp: across every thread on every tier, small differences compound, so we keep benchmarking and swapping models. That's the trade. The default is good because someone is paid to care about it, and it doesn't have to be you.
What does change your output are three things, none of which is a model: how hard the task is, what context you put in, and how closely you review what comes out. All three have more impact on the outcome than whether you use this or that latest frontier model.
The Dial covers the first one: how hard the task is. You tell it how hard the task is and the corresponding setting on the Dial uses whichever model wins it right now, re-tested constantly. You know your tasks, we know the models.
And for the other two â the context and the review â the rest of Amp lets you do the best job with that.
-
