- โ
- โ
- November 13, 2026
-
๐ Jeremy Fielding (YouTube) I Built a Automated High Speed Camera Robot rss
This work was supported by the Alfred P. Sloan Foundation, enhancing public understanding of science and technology in the modern era, in partnership with IMI: watch what matters. https://www.theimi.co/ & https://sloan.org/programs/public-understanding
Order custom parts Send Cut Send ๐ http://sendcutsend.com/jeremyfielding
PBC Linear Rail Shown in the video ๐ https://pbclinear.com/blogs/blog/mt-series-belt-driven-linear-actuators-which-one-should-you-choose?utm_source=youtube&utm_medium=video&utm_campaign=jf&utm_term=mtb-actuators
If you want to join my community of makers and Tinkers consider getting a YouTube membership ๐ https://www.youtube.com/@JeremyFieldingSr/join
If you want to chip in a few bucks to support these projects and teaching videos, please visit my Patreon page or Buy Me a Coffee. ๐ https://www.patreon.com/jeremyfieldingsr ๐ https://www.buymeacoffee.com/jeremyfielding
Social media, websites, and other channel
Discord ๐https://discord.gg/F3XuyhNRPc Instagram https://www.instagram.com/jeremy_fielding/?hl=en Twitter ๐https://twitter.com/jeremy_fielding TikTok ๐https://www.tiktok.com/@jeremy_fielding0 LinkedIn ๐https://www.linkedin.com/in/jeremy-fielding-749b55250/ My websites ๐ https://www.jeremyfielding.com ๐https://www.fatherhoodengineered.com My other channel Fatherhood engineered channel ๐ https://www.youtube.com/channel/UC_jX1r7deAcCJ_fTtM9x8ZA
Notes:
Technical corrections
Nothing yet
-
๐ r/LocalLLaMA Hugging Face CEO vows to keep fighting for open source AI after Jensen Huang's exit rss
| context : Nvidia buy HF, but now there uncertainty about it hf future under new leadership, he try reassurance people on x, but from his word itself sound not good, see and wait, but better backup you favorite datashet/model (again) just in case submitted by /u/Merchant_Lawrence
[link] [comments]
---|---
-
- November 12, 2026
-
๐ idursun/jjui v0.10.13 release
This release is a batch of bug fixes and little improvements. Heads up: This release requires jj 0.39 or newer.
Improvements
Select consecutive revisions with Space
Pressing
spacenow toggles revision selection and moves down one row. Previously it jumped to the revision's parent, which could skip rows on branching graphs. See the notes below to restore the previous behavior.File search and command suggestions
The file finder now loads paths asynchronously, keeping the UI responsive while loading. Scroll results with the mouse wheel or click a file or directory to apply the history filter and close the finder.
Command-history suggestions in the
:and$prompts also support mouse- wheel scrolling. Clicking a suggestion executes that command.Fixes
Preserve merge-parent order
Checked revisions now retain the order in which you selected them. When creating a merge with
n, that order determines the parent order, giving you control over the first parent. Previously jjui used graph order, which could cause unrelated history to appear in a GitHub pull request.Set Parents also preserves the order of retained parents and appends new parents in selection order. Adding a parent no longer unexpectedly changes a merge's first parent.
(#766)
Use the full width for external diff tools
Full-screen diffs now pass terminal dimensions to tools such as difftastic, avoiding the 80-column fallback on wider terminals. This applies to diffs opened from Revisions, Details, Evolog, Diff Range, and Oplog. Loading an individual file uses the current diff viewport dimensions.
(#772)
Keep long descriptions visible while editing
Inline Describe now opens with the cursor visible in long descriptions and follows it as you edit. Mouse-wheel scrolling no longer leaves parts of the description hidden or stops the editor from following the cursor.
(#771)
Search across highlighted ID prefixes
Quick search now matches across text with different styling. Searching for a change or commit ID works even when the query spans its highlighted unique prefix and dimmed remainder.
(#759)
Filter history by directory
Selecting a directory in the file finder now shows revisions that touched files anywhere within that directory. Previously the directory path was treated as an exact file path and matched nothing.
Render menus correctly on narrow terminals
Git and bookmark menus truncate names by display width without splitting Unicode characters. The remotes line also stays within the menu border on narrow terminals.
Respect rebound help keys
The status bar hints now show your configured keys for expanding status help and opening full help.
Notes
Requires jj 0.39 or newer
The minimum supported
jjversion increases from 0.37 to 0.39. Snapshotting now uses the documentedjj util snapshotcommand, replacing the deprecatedjj debug snapshotcommand.(#780)
Restore jump-to-parent after selection
To make
spaceselect a revision and jump to its parent as before, add this action override toconfig.toml:[[actions]] name = "revisions.toggle_select" lua = """ jjui.builtin.revisions.toggle_select() jjui.builtin.revisions.jump_to_parent() """What's Changed
- fix(diff): pass terminal width to full-screen diff subprocesses by @nickchomey in #772
- fix: switch from jj debug snapshot to documented jj util snapshot by @hey2022 in #780
New Contributors
Full Changelog :
v0.10.12...v0.10.13 -
๐ anthropics/claude-code v2.1.323 release
What's changed
- Added Code Mode, an experimental opt-in in which Claude writes JavaScript to call its tools; see https://code.claude.com/docs/en/code-mode to turn it on, or to turn it off for an organization
- Added
engines["claude-code"]toplugin.json: plugins outside their stated Claude Code version range are not installed, updated or loaded, and install and update pick the newest version that fits - Added type checking of a plugin's TypeScript hooks module to
claude plugin validate; each finding is a warning, and--strictfails on it - Added to
claude plugin validatethe$nouns a mod'sengine.createhook adds, withholds or replaces - Added support for
CLAUDE_CODE_AUTO_MODE_MODELin managed settings for Claude Desktop sessions on third-party providers (takes effect once Claude Desktop includes this version) - Added an options menu (stop, switch to usage credits, upgrade) when a model needs usage credits that are turned off or used up
- Added a progress heartbeat every 30 seconds while hooks run long in
claude -pand SDK sessions, so a host such as Claude Desktop won't end the turn as hung (once it includes this version) - Added
.docxsupport to Artifact tool asset uploads - Added a
/diff to closehint to the diff panel, and the keys that focus and close a panel to the?shortcut guide - Added a start-up warning for Bash allow rules with a
*in a variable's value, such asBash(PORT=* npm run dev) - Added a warning when a plugin's language server can't start, naming the server and what to check
- Added a one-time startup notice naming
CLAUDE_CODE_PERFORCE_MODEwhen Perforce settings are found and the mode is off - Added
CLAUDE_CODE_DISABLE_AGENT_PROGRESS_SUMMARIES(available since 2.1.318): set it to1to turn off subagent progress summaries and the requests that write them (#86879) - Added
CLAUDE_CODE_RESUME_HINT_COMMAND, which a program that starts Claude Code can set to have the exit hint name its own resume command - Added
unsetOptionCountto theclaude plugin install --jsonresult: how manyuserConfigoptions are not yet set - Added
isPromptCoveredto the props a mod's pane is drawn with, telling it when a dialog or a field above the prompt covers the prompt - Fixed running
/compactagain, or after a command such as/context, summarizing away a message that Claude had not answered yet - Fixed a resumed session joining your next message to an old interrupted message that was not resumed
- Fixed a memory spike at the next prompt after Claude changed a very large file
- Fixed a setting saved in a running session undoing a hand edit made to
settings.jsonmoments earlier; a settings file you delete during a session now stays deleted - Fixed
claude plugincommands andclaude mcp listsigning you out of a Console profile when they ended while the token was being renewed - Fixed Edit and Bash running out of memory on certain
/procfiles, and Edit hanging or running out of memory on devices and named pipes - Fixed Claude Code failing to start, or to clear stored credentials at sign-out, when saving its configuration file failed with "Out of memory"
- Fixed requests sent without streaming failing on errors that streamed requests recover from, such as a rejected image, thinking block or beta header
- Fixed
ExitWorktree, the worktree exit dialog and/resumeleaving the session in the wrong folder when the folder the shell was in before entering the worktree had been deleted - Fixed accents and other combining marks sometimes landing left of the text, leaving stale copies on screen, or silently disappearing when text wraps
- Fixed the last key of a key chord, such as Enter in ctrl+x enter, acting on a dialog's text field when the chord's own action isn't available there
- Fixed
psprocesses piling up when the process listing Claude Code runs before stopping a command takes too long - Fixed subagent transcripts and large tool results being saved apart from the session's transcript after entering a worktree created by a
WorktreeCreatehook or belonging to a nested repository - Fixed a session on a named Anthropic profile moving to another sign-in when
/fork, the Left arrow or--bgcontinued it in the background; reopen any session that was open during the update - Fixed a background session sending a conversation under another sign-in when its named Anthropic profile is missing, changed or overridden; it now stops and says so
- Fixed a session on an API key, auth token or workload identity from its shell (not a setup token) moving to another sign-in in the background; it now stops and says so
- Fixed MCP tool calls ending in the sign-in server's error, such as
TOKEN_EXPIRED, instead of asking you to sign in again - Fixed an expired claude.ai login showing "Credit balance too low" when a saved Console key or
ant auth loginprofile without credit was used instead - Fixed a session on a named Anthropic profile being handed to an older background service that could not keep its sign-in; it now says to restart the service
- Fixed a background session's sign-in leaving the previous account's login or other credentials in place; it now clears them for every session on the computer, and a refused sign-in can leave no login
- Fixed background sessions moving between a profile and the stored login when an update restarted them
- Fixed sessions opened before a sign-in keeping signed-out feature flags after the sign-in
- Fixed sessions that kept failing after a Claude apps gateway sign-in expired: once you sign in again with
/loginin another terminal, they carry on at the next message - Fixed the billing notice naming your
ant auth loginorganization when a customX-Api-Keyheader is set - macOS: Fixed "Not logged in ยท Please run /login" coming back right after a successful
/loginor a token refresh when the keychain was slow to answer - Fixed turns failing in Claude Desktop when an organization's gateway answers an expired token with 403: Claude Code now asks Desktop for a fresh token and retries
- Fixed the error shown when Amazon Bedrock refuses your account a model: it no longer says to refresh your AWS credentials, it says to enable the model
- Fixed the
awsAuthRefreshorgcpAuthRefreshcommand sometimes running twice for one request when three or more sessions needed a fresh sign-in at once - Fixed the
claude -pwarning about an ended claude.ai login to say thatclaude auth logoutalso removes saved MCP server logins and plugin secrets - Fixed Bash permission prompts offering "don't ask again" for commands that write to sensitive paths such as
.gitor.claude, where the saved rule did not stop the next prompt - Fixed a case where some
lsofcommands ran without a permission prompt - Fixed Bash commands that write a file with `cat > file <
-
๐ @HexRaysSA@infosec.exchange Marco ([@raptor](https://infosec.exchange/@raptor)) is back on the Hex-Rays mastodon
Marco (@raptor) is back on the Hex-Rays blog ๐ฎ
His vulnerability research tools (rhabdomancer, haruspex and augur) have reached v1 and fully support IDA 9.5. New in this release: type definitions extraction, many fixes, and augur now runs 19x faster.
๐๐ฝ Read the full post: https://hex-rays.com/blog/divining-vulnerabilities- contributor-program
Marco is also a Hex-Rays Plugin Contest winner, and the contest is open again.
Built something cool with IDA? Submit it before Nov 30: https://hex- rays.com/plugin-contestHeโs also a member of our Contributor Program, which supports people who build IDA plugins, tools and content with a free IDA license. Apply here: https://hex-rays.com/contributor-program
-
๐ HexRaysSA/plugin-repository commits sync repo: +12 releases, -1 release rss
sync repo: +12 releases, -1 release ## New releases - [IDASQL](https://github.com/allthingsida/idasql): 0.0.20 - [btf2ida](https://github.com/nightshift-labs-ai/btf2ida): 0.1.19, 0.1.18 - [cfiscope](https://github.com/nightshift-labs-ai/cfiscope): 0.1.17, 0.1.16 - [hrtng](https://github.com/kasperskylab/hrtng): 3.9.118 - [memlens](https://github.com/nightshift-labs-ai/memlens): 0.3.24, 0.3.23, 0.3.22, 0.3.21, 0.3.20 - [threatray](https://github.com/threatray/plugin-ida): 3.0.4 ## Changes - [IDASQL](https://github.com/allthingsida/idasql): - removed version(s): 0.0.11 -
๐ Hex-Rays Blog Divining vulnerabilities: powered by the Hex-Rays Contributor Program rss
"Real hackers were so multi-lingual they often knew more platforms than they had pants."
-- Dave AitelAbout the guest author
Marco Ivaldi (raptor) is a seasoned security researcher and tech leader with over 25 years of experience in offensive security. He is the technical director and co-founder of HN Security, a boutique firm specializing in tailored offensive security services. A prolific exploit writer, Marco is also a Phrack author and a core developer of the OSSTMM, the open methodology for security testing. He has been recognized as one of Microsoft's Most Valuable Security Researchers and was selected to compete in its Zero Day Quest. He is a member of the Hex-Rays Contributor Program. His career began in the '90s, when he co-founded Linux&C, the first Italian magazine dedicated to Linux and open source.
TL;DR
In a hurry? I got you. Here's what's new in my vulnerability divination ๐ฎ suite:
- Last May, I joined the Hex-Rays Contributor Program, which is supporting the development of my idalib-based tools with a free IDA license.
- rhabdomancer, haruspex, and augur have reached v1 , with full IDA 9.5 compatibility , new features such as type definitions extraction , substantial performance optimizations , and a number of important fixes.
- I've contributed type extraction , decompiler and IDA configuration , and Linux/Windows AArch64 support to the idalib Rust bindings ๐ฆ, with more pull requests on the way.
- I've benchmarked the old and new releases against real-world targets, and the results speak for themselves.
As usual, you can get the latest releases from Hex-Rays community plugins, crates.io, or GitHub.
A headless IDA-powered binary audit pipeline
First, a quick recap of my previous work, for those who missed the earlier episodes.
I've been doing binary vulnerability research against closed-source targets since the '90s, both professionally and as a hobby. Over the past couple of years, I've built a pipeline around IDA Pro's GUI-free automation capabilities to audit binaries at scale , across architectures. I described its building blocks in my previous article on this topic.
Still waiting for the "automation takes over" part to kick in (https://xkcd.com/1319/)
The centerpiece is haruspex, an idalib- rs based headless plugin that extracts IDA's decompiler pseudocode into per-function flat files. It's fast enough to process a 19 MB MIPS binary encompassing 7436 functions in less than 20 seconds (including the initial analysis stage) on my MacBook Air M3. Not bad!
That output feeds a layered static analysis stack. My custom Semgrep C/C++ ruleset and weggli patterns treat the pseudocode as source code, flagging candidate vulnerability hotspots automatically. Interesting hits then go to LLM agents for deeper triage , before I move to manual static and dynamic confirmation. Its siblings rhabdomancer and augur complete my vulnerability divination suite, by marking calls to potentially insecure API functions in the IDB and extracting strings and related pseudocode as needed, respectively.
Why IDA? Because of decompiler quality, performance, and integration capabilities , the latter courtesy of the award-winning idalib Rust bindings. Across x86, ARM, MIPS, and other architectures, the output is clean enough for pattern- matching tools to work on it reliably. Just last July, I batch-decompiled 280 binaries in less than 14 minutes, and Semgrep parsed more than 98% of the resulting pseudocode lines. Meanwhile, the idalib headless API lets Rust drive the whole analysis without a GUI in the loop.
This pipeline finds real bugs , such as the Zyxel local privilege escalation I covered last year. And I've spoken with other researchers who use a similar setup to hunt for vulnerabilities at scale, so I guess I'm not the only haruspex in town. ๐
A license to divine
Last May, I joined the Hex-Rays Contributor Program. In a nutshell, the program aims to recognize and support people who design, build, and maintain IDA plugins, applications, and content , idalib-based tools explicitly included. Contributors may get a free IDA license that includes all decompilers and dedicated support from the Hex-Rays team.
For me, this means that I can keep developing my tools against the latest IDA releases on macOS, Windows, and Linux, without worrying about how to keep my license current. In return, contributors must keep their projects compatible with the latest IDA SDK within four months of each release. They must also maintain good installation, quality, and documentation standards, support their users, and provide product feedback to Hex-Rays. Sounds like a fair deal to me, especially since I was already doing most of these things anyway. ๐คท
The first tangible result of this collaboration is a major release of my cross-platform vulnerability divination suite, which is now fully compatible with IDA 9.5. If you're building something cool on top of IDA, I encourage you to apply as well!
The new haruspex running on Windows 11
Giving back to idalib-rs
As customary, while working on my tools I kept contributing new features to the idalib Rust bindings, which in the meantime moved to their own home under the idalib-rs GitHub organization. My most relevant contributions since my last article are listed below:
- Global and function-level type extraction (released in idalib-rs v0.10.0, alongside IDA 9.4 compatibility). This is the feature that powers the new
.hfiles generated by haruspex and augur. It allows idalib-rs based tools to dump the type definitions that IDA has recovered or that you've applied to the IDB, both globally and for the types used by a specific decompiled function. Ever tried to make sense of a pile of pseudocode full of*(_DWORD *)(a1 + 0x48)without the corresponding struct definition? Well, me too ๐ตโ๐ซ - Support for modifying the Hex-Rays decompiler configuration (released in idalib-rs v0.10.1). This is what allows haruspex and augur to turn off IDA 9.4's new argument name hints programmatically, without asking you to edit any configuration files by hand. This way, static analysis tools such as Semgrep can directly parse the generated pseudocode.
- Support for modifying the IDA configuration (released in idalib-rs v0.11.1). It's the counterpart of the previous feature for IDA's kernel settings. This is what allows haruspex and augur to make IDA 9.5's verbatim names valid C identifiers again in the pseudocode (more on this below).
- Support for Linux and Windows AArch64 targets and cross-compilation (released in idalib-rs v0.11.0, alongside IDA 9.5 compatibility). I've tested this patch with my tools on Linux/AArch64. Windows/AArch64 is also supported, but it's still untested (volunteers welcome).
You can find the full history in the official changelog of the project. As always, I encourage you to contribute to idalib-rs!
A sneak peek of rhabdomancer doing its magic on Linux/AArch64
One year of divination
A lot has happened since my last article on IDA 9.2. Back then, my tools were at v0.7.x. One year, a few hundred commits, and more than a dozen releases later, rhabdomancer, haruspex, and augur have all reached v1. Yes, I'm finally confident enough to call them stable. ๐
The full details are in each project's changelog (rhabdomancer, haruspex, augur). Here are the highlights.
IDA 9.5 compatibility
All three tools now officially support IDA 9.5 , via the v0.11.x releases of the idalib Rust bindings. Along the way, they also tracked IDA 9.3, 9.3sp1, 9.3sp2, 9.4, and 9.4sp1, with a compatibility matrix in each
README.mdthat maps every IDA build to the latest compatible release of each tool.IDA 9.4 brought a couple of decompiler changes that directly affected my pipeline:
- The Hex-Rays decompiler now generates argument name hints. They're great for humans reading pseudocode in the GUI, but they break pattern-matching tools such as Semgrep and weggli. Therefore, haruspex and augur disable them before decompiling, and a regression test makes sure they never sneak back into the extracted pseudocode.
- The decompiler can now recover additional strings that the initial auto-analysis misses. To take full advantage of this, augur now decompiles all functions upfront , before it walks the string list.
IDA 9.5 kept me busy as well. It no longer garbles names by default, so names that aren't valid C identifiers are kept verbatim, and the decompiler wraps them in backticks. That's more faithful to the binary, but once again it breaks Semgrep and weggli. I dealt with it by restoring IDA 9.4's behavior in haruspex and augur, via a new IDA configuration API I contributed to idalib-rs. In rhabdomancer, I handled the breaking change by improving the function name matching logic.
New features
- Type definitions extraction in haruspex (and augur), as requested by a user. Global and per-function type definitions are now dumped to
.hheader files alongside the pseudocode. This means that structs, enums, and typedefs recovered by IDA are available to downstream tools and LLM agents, which makes their analysis more accurate. - A stable public API for haruspex as a library. The new
decompilefunction tells apart functions that can't be decompiled from errors that affect all functions,decompile_to_filenow returns aDumpedFunctionwith the paths of the files it wrote, andDumpedFunction::copy_tocopies the output elsewhere without decompiling again. augur is built entirely on top of this API. - A much smarter rhabdomancer. Calls through ELF
.pltstubs are traced back to their callers, and calls in library code recognized by IDA (e.g., via FLIRT signatures) are labeled(lib). Function names are now matched regardless of platform decorations (e.g., the ARM64EC#memcpykept by IDA 9.5, Apple'sstat$INODE64, or 32-bit_WinExec@8), glibc aliases (e.g.,__libc_system,__isoc23_sscanf), Universal CRT wrappers (e.g.,__o_malloc), and IDA's numeric suffixes (e.g.,memset_0). - A richer known bad API function list in rhabdomancer, with dozens of new entries, such as
wordexp,chroot,syscall,ioctl, the*spawn*,CreateProcess, andLoadLibraryfamilies, and many more. The default configuration is now embedded in the binary, and you can point theRHABDOMANCER_CONFIGenvironment variable to your own customized copy. - Elapsed time reporting in every tool, which came in handy for the benchmarks below.
Performance optimizations
- augur now decompiles each function only once , reusing its output files for any further strings it references. This is by far the biggest performance improvement of the bunch, especially on large binaries where a handful of functions reference hundreds of strings.
- augur also stops retrying functions that already failed to decompile, and avoids repeated calls to the IDA strings API.
- rhabdomancer uses a single lookup table for known bad functions, caches
.pltsegment address ranges to avoid repeated FFI round trips, and fetches each function's name only once.
Important fixes
- rhabdomancer no longer misses calls in PE binaries (import stubs with numeric suffixes and Universal CRT wrappers) and in statically linked binaries (glibc aliases). The same goes for ARM64EC binaries analyzed with IDA 9.5, macOS binaries (Apple's variant suffixes), and 32-bit Windows binaries (
stdcallnames). Turns out these were hiding in plain sight ๐ - rhabdomancer runs are now idempotent , even when a call site already has a bookmark of its own, and instructions that merely fall through into a bad function (e.g., alignment padding) are no longer marked as call locations.
- XREF traversal in rhabdomancer and augur is now iterative , to avoid potential stack overflows with large XREF chains, and rhabdomancer's is hardened against cyclic
.pltreferences in crafted or unusual binaries. - Function names that come from the analyzed binary are now escaped before they are printed to the terminal, and file names built from the binary's names and strings go through an allowlist. After all, these tools are meant to be pointed at potentially hostile binaries.
Under the hood, I also enabled clippy restriction lints , added
semver- checksto CI to enforce semantic versioning, pinned GitHub Actions to hashes, and wrote (with Claude's help) a lot of new unit, integration, and regression tests , with dedicated test binaries for edge cases such as binaries without functions, binaries without a decompiler, and functions too big to decompile.Benchmarks, or it didn't happen
Talk is cheap, so I've put my claims to the test. I ran the old v0.9.3 releases on IDA 9.3 and the new v1.2.0 releases on IDA 9.5 against the same set of real-world targets, on the same MacBook Air M3. Times include IDA's initial auto-analysis, and each run started from a clean state, without any pre-existing IDB.
Tool | Target | Arch | Size | v0.9.3 on IDA 9.3 | v1.2.0 on IDA 9.5 | Speedup
---|---|---|---|---|---|---
rhabdomancer | 280 ELF binaries (batch) | AArch64 | 14 MB | 356 secs | 342 secs | +4%
haruspex | 280 ELF binaries (batch) | AArch64 | 14 MB | 827 secs | 744 secs | +11%
augur | 36 ELF binaries (batch) | AArch64 | 2.2 MB | 39.3 mins | 124 secs | +1802%The last figure in the table is especially remarkable: a staggering +1802% speedup means that augur is now 19x faster , thanks to single-pass decompilation.
Finally, Semgrep 1.183.0 parses about 99.1% of lines in the pseudocode generated by haruspex v1.2.0, which marks a slight increase compared to the 98.3% measured with the older haruspex/IDA version.
A word of caution: these numbers measure the combined effect of my code changes and of the IDA upgrade, so they don't tell you which side deserves the credit. Also note that augur now decompiles every function upfront to recover more strings, which costs some time on binaries with few string references, but pays off handsomely on large ones. Your mileage may vary, so please run your own benchmarks and let me know how they fare!
__
Looking ahead
The v1 milestone is by no means the end of the road. My TODO list is as long as ever, and the most ambitious goals on my roadmap are tighter LLM integration , to make the triage of static analysis findings even smoother, and a LibAFL fuzzing stage downstream of static analysis, to confirm candidate vulnerabilities automatically.
Meanwhile, you can download my updated tools from Hex-Rays community plugins, crates.io, or GitHub. Take them for a spin against your favorite targets, open issues, and submit pull requests!
Acknowledgments
I'd like to thank Hex-Rays for welcoming me into their Contributor Program and for inviting me to write on their blog once again. It's been an honor.
As always, huge thanks to idalib-rs's maintainers , and especially to Sam L. Thomas (@xorpse), for reviewing my pull requests and for keeping this awesome project alive and kicking. โ

-
๐ The Pragmatic Engineer The Pulse: Details of incident.ioโs AI spend 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 five topics from the past issue of The Pulse . Full subscribers received the article below two weeks ago. If you 've been forwarded this email, you can subscribe here .
incident.io (note: I'm an investor) is a software reliability platform founded in 2021, a year before ChatGPT, that's obsessed with measuring everything. In that spirit, the company has shared details about AI spending, changes to PR frequency, and the ROI at the company from using AI. Thank you to Lawrence Jones and the incident.io team for sharing the data!
They have come up with the concept of the "effort point" as a way to analyse AI spend. One effort point is a medium-sized pull request written by a human or generated by an agent. The measurement is far from perfect, but it is one step more granular than looking at lines of code, and lets them compare the complexity of AI-generated PRs with those written by human devs in the past. Here's what has changed in the last two years:
What
changed in two years for various metrics at incident.ioPull request stats
At a glance:
Changes
in numbers of PRs over two yearsAI agents started to generate production code in June 2025, which was around the same time as the first agent-generated got pushed at incident.io. The company has used AI-assisted IDEs since the beginning, such as GitHub Copilot and Cursor.
Agent
usage exploded in June, when Claude Agents launchedIn June this year, a few things happened in quick succession, the incident.io team told me:
- Claude Agents launched, making it easier to coordinate several agents running at once
- Worktree tooling improved a lot, making it easier for agents to do parallel work on the same codebase with worktrees
- Also around this time, more engineers realized that they should be running multiple agent sessions using different worktrees, rather than driving just one session at once.
Today, nearly 80% of PRs that ship to production include code generated by an agent:
Percentage
of all PRs with parts of the code generated by agentsMore:
- 2.7x headcount growth in product engineering (engineers who ship to production numbered 18 in 2024, and 50 today)
- 3.4x PR requests shipped to production in September compared to a year ago
- 3.6x increase in PRs with no human reviewer shipped to prod (12% to 43%)
- 4.8x increase in the size of PRs (from 22 to 111 lines)
- 6x "effort points" shipped**** to prod: "effort points" awarded by an AI model estimating the complexity of a PR, and ranking it from XS to XL.
- 80% decrease in human comments per "effort point"
- 60% decrease in incidents per 1,000 pull requests
Stats on release frequency:
- 47% rise in releases/eng/day when taking headcount into account: an average of 2.8 releases/day/eng, up from 1.9 releases/day/eng in 2024
- Oct 2026: 140 releases/day to production with 50 engineers. In Oct 2024, the figures were 35 releases/day to prod with 18 engineers
AI spend
This year, spending on AI tools is on track to be around $ 1.6M at the company - which is a lot! We're talking around $2,700 per engineer each month, which puts the reliability startup among the big spenders of companies mentioned in this article. Based on that, they've attempted to calculate a rudimentary ROI for the spend. At present, incident.io sees AI tools as mostly positive.
AI spending peaked this summer and has been decreasing since. In July, the company spent more than $300K on AI (an annual projection of $3.6M, had it continued). Here's the allocation:
Allocation
of spend on AI at
incident.io ,
mostly on ClaudeOpus 5.5 brought a massive cost reduction. Before it, the company was spending around $4,500/engineer/month, mostly on Opus 5. But now, with the 5.5 version, the cost is down to circa $1,600. Here's the impact of Opus 5.5 on monthly spend:
Opus
5.5 is resulting in less than half the previous monthly cost on AI, per
engineerAlso, the adoption of Opus 5.5 has been rapid:
Share
of models used by engineers inside incident.ioCost per "effort point" also peaked over the summer. The nice thing about the "effort point" metric is that it makes it possible to compare the cost of generating a PR to how much it cost a year ago, when the company started using AI agents. Here's the change:
Cost
of generating a medium-sized PR peaked in July-August with Opus 5 and FableInfrastructure teams spend more tokens on the same "effort point." A fascinating detail from incident.io comes from separating the cost of an "effort point." The infrastructure team stands out, spending ~5x more on a medium-sized PR than almost every other team:
The
cost of an "effort point" (generating a medium-sized PR) varies based on teamBut why the big difference? Lawrence Jones, an engineer at incident.io, explains:
"This is a great example of why it's hard to use a single target for cost per PR that applies universally.
Our AI team, for example, does work that can be very token-intensive such as iterating on evals. Infrastructure teams might use Claude to explore production environments or do lots of analysis or run benchmarks etc which don't lead to PRs, so their cost per-PR looks higher.
Different types of work will simply have different cost profiles."
Measuring ROI
Today, average spend is down at ~$1,600/engineer/month, of which around 80% is on Claude, with 20% going to Cursor. The big question: has AI made engineers more productive? Unfortunately, measuring engineering productivity in only a single dimension is fraught with hazard, but a combination of insights could give a sense of where things are headed. These are imperfect measurements with their own biases, but are still interesting.
The number of PRs shipped per engineer weekly tracks with tenure. This is a very interesting finding from incident.io. Compared to two years ago:
- The median engineer shipped ~10% more PRs (10.1 PRs in Oct 2024 with no AI; 10.7 PRs per week in Oct 2026 with AI). An eye-catchingly small change!
- The mean engineer shipped ~30% more PRs (11.1 PRs in Oct 2024 vs 14.8 PRs in Oct 2026)
- Tenured engineers shipped ~70% more PRs (11.1 PRs in Oct 2024 vs 19 in Oct 2026)
New engineers are told to hold off on using AI for a month after they join. The AI SRE startup collected feedback from new engineers and found that new joiners using a lot of AI right after onboarding ended up performing worse in the medium/long term.
What incident.io found is that it's worth ignoring expectations of shipping velocity during the first month. Instead, new devs learn how to navigate the codebase. This AI-abstinent approach skews the above numbers.
Harder to quantify: shipping faster & incidents
Compared to pre-AI, how important is it for PRs to be shipped faster to production? A benefit of AI agents and AI reviews is faster feedback than waiting on someone to review a PR. Here's how quickly the median PR makes it to production at the reliability startup:
Fast
turnaround times both for review readiness, and for deploymentsLet's take an average day - a Tuesday last month - when 185 changes were shipped to production, 75 of which without human review:
PRs
shipping to production with & without human review at incident.ioThere are fewer incidents per change, but more overall. It would be quite the omission to not bring up reliability when talking about a reliability startup! This is both good and bad news: there's fewer incidents per PR, but more overall due to the existence of more PRs:
Few
incidents per PR, but more overall incidentsThe good news is that the rate of incidents is lower than expected, given the PR volume:
Taking
last year's PR "defect rate", there should have been more production incidentsThe team looked into why incidents occurred, and found that most outages were because of incorrect code that could have been caught in review. The team took steps to address this:
- Improved the codebase for AI use
- Started leaning more on Cursor's Bugbot, added stricter rules, and saw the tool start to give better feedback and catch more code-related bugs in review
- Newer models produced better code.
Today, most incidents are no longer due to faulty code, but because there's information absent about the production environment. The bad news is that if this continues and PR volume grows, then the number of incidents will also rise unless the team avoids outages related to production behavior. They are working on building feedback loops where agents can observe and learn from production.
Categorizing
production incidents by root cause at incident.ioI found these data points educational, especially looking at how the "cost per medium-sized PR" does (and probably should!) vary based on the complexity of work that goes into it.Thanks a lot to the incident.io team for sharing such detailed data!
Read the full issue of The Pulse from two weeks ago. The latest The Pulse**** covers:
- What can we learn from the Railway hack? Cloud platform**** Railway has published an extremely detailed postmortem about their recent hack in which the attacker likely used 'abliterated' AI models (those with no safeguards). Railway has hardened its systems as a result. Also, a competitor tried to benefit from the incident by getting Railway's customers to migrate - but then got hacked itself in the exact same way.
- Native mobile and frontend jobs are disappearing. New data shows native mobile and frontend job listings are down by 50% at leading startups and Big Tech, while forward deployed engineer (FDE) listings have quadrupled in the same timeframe.
- How an extremely efficient engineering team works: Superlogical. Mitchell Hashimoto's new startup is "AI-native" and cares deeply about craft and developer tools. They skip code reviews and commit to main thanks to deep trust between team members.
- Industry pulse. Jensen Huang no longer the CEO of NVIIDA, OpenAI buys Pierre Computer, Carta starts selling a coding harness, Meta buys and shuts down Conductor (a T3Code competitor), and Binance hacked with $6.3B stolen after devs were tricked into downloading packages and attending fake interviews.
-
๐ r/LocalLLaMA So this will be true in couple of years? rss
| I think after jensen they will fully focus on AI compute for data centers submitted by /u/UltramanQuar
[link] [comments]
---|--- -
๐ exe.dev Backup and Restore on exe.dev rss
A common question we see on our Discord and in support is how to back up exe.dev VMs. We've built a
backupcommand (and its good friend, therestorecommand) to facilitate just that.We decided that the best place to store your backups is in your own S3 bucket. To set up backups, you first set up a WIF integration, granting us access to a bucket in S3. Our documentation walks you through the steps, and I'll let you in on a secret: your coding agent is the best way to follow that documentation. Then run the backup command, and voilร .
Our backup format is the same as Casync / Desync. In short, we take your disk, split it into 1 MB chunks, and hash those. We upload compressed chunks identified by hash to S3 (ignoring the ones that haven't changed), and upload an index of those chunks to represent the backup. A VM with a slow-changing disk might only need to update a few chunks at every backup iteration, which makes these backups incremental. Furthermore, because the format is open source, you can use existing tools to reconstruct your disk elsewhere, or even mount it in a lazy FUSE file system.
Documentation at exe.dev/docs/vm-backups. Give it a try!
-
๐ tintinweb/pi-subagents v0.24.0 release
What changes for existing users
- Nested spawns are refused once 10 nested subagents are running (#427). Set
maxConcurrentNestedto0to restore unbounded nesting. - FleetView rows show each agent's own tokens , the selection is marked
โฏ, andโmarks the view in front (#446).
New
maxConcurrentNestedcaps running nested subagents (default10) (#427).- FleetView lists nested subagents under their parent , with mouse support in fullscreen mode (#446).
showModelnames the model and thinking level on fleet rows (#447).
QA
- 2590 tests passed (95 scripted e2e); live e2e against a real model: 92 passed.
Full details in CHANGELOG.md.
- Nested spawns are refused once 10 nested subagents are running (#427). Set
-
๐ r/LocalLLaMA Jensen Huang's mistake was being too pro LocalAI, which was a threat to companies like ClosedAI and Anthropic which are about to go IPO rss
| submitted by /u/Limp_Classroom_2645
[link] [comments]
---|--- -
๐ backnotprop/plannotator v0.28.62 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.61 | Updates now update the Claude Code plugin too, an agent's chosen face shows on every icon of it, filter the Inbox list by pull request state, Modern dark shows section bands and the Reply button, one conversation no longer shows as two agents
v0.28.60 | Click a word to highlight it, a one-time Themes dialog, Settings โ Rows rebuilt, tell your agent how you want your rows, starred threads as pills above the list, a pill for new messages out of view, a half-circle face picker with ten Glass colours, a new phone sidebar and reply box
v0.28.59 | A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
v0.28.58 | Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
v0.28.57 | Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 | Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 | Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 | Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings โ Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 | Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings โ Decision data, Plannotator reloads itself after an update
v0.28.51 | Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 | A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 | A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code,--titlefor review and annotateWhat's New in v0.28.62
TL;DR
- Fixed: Agents started from the Inbox now work on Windows
- New: Pick a model and effort when you start an agent
- New: Rules for your agents, written in your own words
- New: Post a thread's decisions on its pull request
- Changed: The Inbox loads faster on a slow connection
0.28.62 is a large release. Starting agents from the Inbox now works on Windows, you can choose a model and effort for a new session, and you can give your agents your own rules. It has 57 PRs. Five come from external contributors, and three of those are first contributions: welcome @ilyaZar, @solatis and @tommyent.
Windows
Agents started from the Inbox work on Windows
On Windows, a session started from New message got an empty environment: no
PATH, no user profile and no sign-in variables. Claude Code then showed "Not logged in" and never connected to the Inbox, even when the Inbox itself said Claude Code was signed in. Sessions now start with the Inbox's own environment, less Plannotator's own variables. Respawns get it too, and the settings file the Inbox writes for each launch carriesPATHagain. macOS and Linux are unchanged. #3154New message's folder box now reads the paths people type and paste on Windows.
C:\Users\me\code,c:/users/me/code,~\codeand afile:///C:/...link all work, and a pasted path keeps its backslashes. A folder outside your home folder, a system folder such asC:\Windows, or a folder Windows hides (such as AppData) now gets a plain note that says why it isn't offered, where before each one said "That isn't a full path." Folders on other drives are still not offered. #3156No more console windows flashing up
A console window opened by itself every few minutes while the Inbox was running. It came from the
ghandglablookups behind pull request marks and hover cards. Every command Plannotator runs in the background now starts hidden: in the Inbox, plan review, code review, annotate, Pi, and the OpenCode, T3 Code and Amp plugins. Things that are meant to open a window, such as your browser, your editor or Explorer, still do. #3143Paths with an apostrophe in Claude Code's slash commands
In Claude Code on Windows, a path with an apostrophe, such as
C:\Users\me\O'Brien\plan.md, lost the apostrophe when passed to/plannotator-annotateor/plannotator-review, and the rest of the line ran into one word. On Windows a single quote is now an ordinary character, and only double quotes group words with spaces, as on a Windows command line. Git Bash and PowerShell get the same words. macOS and Linux are unchanged. #3161Starting agents from the Inbox
Pick a model and effort
When New message starts a new session, the To line now ends with a quiet "Default model" button. If you leave it alone, nothing changes. Open it to pick a Model and an Effort for Claude Code or Pi; the lists come from the installed CLI's own help. Your choice is remembered per machine and agent, reused by Try again and respawn, and shown in the thread header (for example "ยท opus ยท high"). Settings โ Agents โ Claude Code has Model and Effort defaults.
Settings โ Agents also has a Claude settings file. Its keys are merged into the settings the Inbox writes for each session it starts, so a Claude Code profile that points at a company gateway also applies to sessions started from the Inbox. A missing or invalid file is reported on the run line by its path only, and its contents are never logged or sent anywhere. #3097, closing #3064 by @rqres
A plugin turned on only in the project counts
If you turned on Plannotator's plugin only in a project's
.claude/settings.jsonor.claude/settings.local.json, the Inbox refused to start Claude Code there and said the plugin was off. It now reads the settings for the folder it starts in, in Claude Code's own order: managed settings, then the project's local file, then its shared file, then your user settings. A project can turn the plugin on for itself, or off. #3144, closing #3065 by @ArobotmasterThe first agent on a new Inbox
On a new Inbox with no projects yet, New message said "No agent is running" and offered nothing to start, so the first agent could never be started from the Inbox, on any platform. It now offers to start a new session in a new scratch folder. #3159
Plannotator Inbox
Rules for your agents
Settings โ Prompts has a new box at the top, Rules for your agents. Write how you want agents to use the Inbox in your own words, such as "Only message me when you are blocked or done" or "Keep messages under 10 lines", and choose who they are for: all agents, Claude Code, Pi or OpenCode. Plannotator's own reminder stays. Your rules come after it, with one line that tells the agent they come from you and win over the lines above. Agents get them at session start and again after a compaction. With no rules, agents get exactly the same text as before.
The long built-in reminder is now folded into one row, "Reminder text ยท Default", and replacing it works as before. A one-time "Set the rules" dialog points to the new box, once you have used the Inbox for two days and have ten threads. In
config.jsonthe rules areprompts.inbox.rules, orprompts.inbox.runtimes.<agent>.rulesfor one agent. #3145, toward #2194 by @zane668Your Guided Review instructions, everywhere
Settings โ Prompts also has a Guided reviews row for your standing instructions, the text added to every guided review, whether it starts from the Inbox, the review page or VS Code. Before, the Inbox could not show or edit them. #3134
A guide an agent writes through the Inbox now follows those instructions too. Before, only guides started from the review page or VS Code did. #2956 by @solatis
Export a thread's decisions, or post them on its pull request
A thread's โฏ menu has Export decisions. It downloads every question in the thread with its state, as Markdown that reads well on GitHub or as one HTML file that makes no outside requests. Decisions come first, then the questions still open, skipped, set aside and so on. Session ids and machine names are left out, your home folder becomes
~, and local network addresses become "(local link)". #3080From the same menu, or the Post decisions button on a pull request in the thread's PR card, one click puts the thread's decisions on that GitHub pull request or GitLab merge request. By default they go into the description as one section at the end; posting again replaces only that section and leaves the rest of the description as it was. You can choose a comment instead, or a short section with the full version in a comment. When you can't edit the description, it posts a comment and says so. Agents and scripts can do the same with
plannotator inbox export-decisions --thread <id>. #3083Your own agent icons
The agent face picker has two new places. Your ownโฆ takes a picture you pick, drop or paste, and shows it as that agent's icon everywhere its face shows. An animated GIF moves in the sidebar only. #3087
Sets offers four built-in icon sets you can search by name or number: Tiny Creatures, game-icons.net, Dungeon Crawl tiles and Noto Emoji 3D. More sets can be downloaded from the picker; your own Inbox fetches a set once and keeps it, so it works offline after that. #3090
Under your own picture, Animate it opens New message with the request and the picture filled in. Send it to an agent, and the animated result replaces the icon in every window. Use the original puts your picture back. #3105
The icon dialogs also got ten fixes from a phone, touch and slow-link pass. A tap now picks a face on an iPhone or iPad, and a still photo over 512 KB is shrunk instead of refused. #3122
Rows show the latest message, and which session
The grey line under a thread row now shows the thread's latest message instead of its subject, like a mail app: the newest unread agent message, your own reply as "You: โฆ", "Asked: โฆ" for a question and "You answered: โฆ" for your answer. In Settings โ Rows, "Subject preview" is now "Preview", and a saved choice carries over. #3006
In a project with two or more live sessions, each row now shows the session's name in place of the project name, so you can tell them apart. Projects with one session look as before. #3095
Mark read asks before setting questions aside
Mark read can close a thread's open questions and action items and tell the agent not to wait on them. It did that without a word. Now the Inbox asks first, but only when something would be set aside; otherwise Mark read stays instant. This covers every way to mark read, including
Eand a project's Mark all as read. "Don't show this again" can be turned back on in Settings โ General โ When an agent asks you. #3079More in the Inbox
- Click an agent to see its threads. A click on an agent in the sidebar's Agents section now filters the list to that agent's threads. Click it again to clear. Before, it opened the last thread the agent wrote in. #3081
- Mark read and Snooze moved into the thread's โฏ menu, to give the title more room.
EandHwork as before. #3126 - Pictures on comments. Every comment box in the Inbox has the picture button Annotate has. The picture goes to the agent as an attachment of the reply that carries the comment. #3148
- "Other" takes several lines. The "Otherโฆ" field under a question's choices grows with what you type, and the agent receives the lines as lines. #3078
- Show a thread in the open window.
plannotator inbox --open <thread>moves the Inbox window you used last on this computer to that thread, the same as a click on its row, or opens a new one. #3130, closing #2506 by @timmo001 - Install the Inbox as an app with a sharp icon. The Inbox now has a web app manifest, so installing it from Chrome or Safari gives a sharp Dock icon in your favicon style. The unread count shows on the app's icon too, where the system allows it. #3056 by @tommyent, #3147
- Tailscale publishes again by itself. With "Reach the Inbox over Tailscale" on, a publish that failed because Tailscale was off or still starting is now tried again until Tailscale is back, and Settings updates without a reload. #3128
Your phone and other devices
Fewer limits between your own devices
Plannotator treated your phone, iPad and other computers on your tailnet as strangers in many places. Now, over Tailscale, they get what the computer gets: you can pair a phone, link or unlink a Mac, change tailnet settings, see first-run prompts and What's new, see project pictures, and delete a launched agent from a phone-width page. Open in, Open in Terminal and Choose in Finder still stay on the computer, since they would open on its screen.
Several silent cuts are gone too. Long answers, long "Other" answers and long notes in a question arrive whole, a question keeps every choice, and agent names are no longer cut at 40 characters. Guided Review instructions can now be 12,000 characters (were 2,000) and the custom Inbox reminder 9,000 (was about 4,100), with a count near the limit. Ask AI reads up to 300,000 characters of a plan, document or diff.
Over SSH, a request that comes through your own tunnel or editor port forward now gets what a local session gets, such as Ask this session and link hover cards.
PLANNOTATOR_REMOTE=1still means remote mode for every request. #3121On a phone or tablet
- "Transcribingโฆ" stays in the reply box. While dictation transcribed, the "Transcribingโฆ" marker could run past the box's edge and under the โ button. It now stays inside the box, on the next line when needed. #3208
- Hold a row for its menu. On a touch screen, holding a thread row opens the same menu a right-click opens on a desktop: as a bottom sheet on a phone, under the row on an iPad. A tap still opens the thread at once. #3131
- One tap opens a row on an iPad. On an iPad, opening a thread from the list, or a project or starred thread from the sidebar, could take two taps. One tap now does it, and the sidebar's โฏ and + buttons always show on a touch screen. #3129, #3137
- The pull requests sheet. On a phone, a thread's pull request list was drawn as a narrow strip with cut titles. It is now a proper bottom sheet, like the thread's โฏ sheet, and a tablet gets the card under the button. #3127
A faster Inbox on a slow connection
Compression and caching used to apply only over Tailscale. They now cover every way you reach the Inbox, including a plain proxy or an SSH tunnel. On a test link with 300 ms delay and 1 Mbit/s, the first load went from 71 s to 25 s and a reload from 20 s to under 1.5 s. #3088
The window also asks the server less. Typed answers save after a short pause instead of on every key, threads you click past are not loaded, and Mark read, Archive and Star show at once (on the same test link, Mark read went from 742 ms to 10 ms). When two windows answer the same question, the later click wins with no error. #3089
Code review
Call tree
Code review's Call flow tab has a new Call tree view, and it opens there by default: the change's calls drawn as one indented tree, with red and green bands for removed and added calls. Hunks that have a tree get a "Call tree" entry that opens it, rooted at the function around the hunk. In the tree, Enter opens the line and C adds a comment. Paths and Raw are one click away. #3086
Pictures and videos in a pull request open in Artifacts
In a PR description and the Comments tab, a click on a picture now opens the Artifacts panel at that picture, large, where you can comment on a point. Before, nothing happened. A video GitHub saved as a bare link opens in Artifacts too, plays through the server (private repositories too) and takes comments at a moment; Cmd/Ctrl-click still opens GitHub. Screenshots written as
<img>tags inside a description's table now show as pictures instead of raw text. #3149The server that fetches those pictures and videos now follows redirects only to GitHub's own hosts, sends your GitHub sign-in only to the first request's host, and serves only picture and video types. Nothing should change in what you see. #3166
GitLab: request changes, and approve your own MR
Request changes on a GitLab merge request now sets your reviewer state to "Requested changes", not only the comments. It also stays available on your own MR, since GitLab accepts it there. #2723 by @bendrucker
Approve was greyed out on your own GitLab merge request. GitLab accepts an author's approval unless the project forbids it, so Approve now stays on and GitLab decides. When GitLab refuses, the review says so and why it may have refused, and you can still comment or request changes. GitHub is unchanged. #3132
Plan review and annotate
- Ctrl+C copies the highlight after the comment box opens. Once the comment box opened on a highlight, Ctrl+C / Cmd+C copied nothing. It now copies the highlighted text, in plan review, annotate, HTML documents, the version diff and code review's line comments. Text you select yourself, in the comment box or the page, still copies as usual. #2623 by @BenNewman100
- Mod+Shift+Enter opens the note composer. In plan review and annotate,
Mod+Shift+Enteropens "Send with a note" (or "Send a note") directly;Mod+Enterin it sends as before. #2913 by @ilyaZar, closing #2912 by @ilyaZar - A broken Mermaid diagram stays in its message. A failed render could leave a "Syntax error in text" graphic at the bottom of the page and make it scroll. Nothing is left outside the message now, and a diagram type that failed to load is tried once more before showing its source with a Reload line. This covers the Inbox, plan review, annotate, code review and the VS Code Guides. #3091
Installing and updating
A broken download now continues where it stopped instead of starting the large binary again from zero, on macOS, Linux and Windows. The checksum check is unchanged. The Claude Code plugin step also gets 10 minutes instead of Claude Code's own 2-minute limit, which slow links hit with "Git clone timed out after 120s". #3096
After an update, when open Claude Code sessions will not pick up the new plugin by themselves, the installer shows one system notification and opens a short help page with the steps. It shows only while a Claude Code session is open and never on a fresh install, in CI or over SSH.
PLANNOTATOR_INSTALL_NOTIFY=0turns it off. #3074, #3073Inbox storage on SQLite: early, and off by default
This release lays the ground for keeping the Inbox's records in SQLite. It changes nothing about where anyone's Inbox data lives: every Inbox, new installs included, keeps using its files as before. #3106, #3107
There is an early, optional switch to try it:
inboxSqliteinconfig.json, orPLANNOTATOR_INBOX_SQLITE=1. It is off unless you set it, and has no Settings row. When on, the next start moves your records intoinbox.dbafter checking that it reads the same, and keeps your original files as a dated backup. Turn it off again and the next start moves everything back into files, including messages written in between. #3114Fixes
- A stuck
ghorglabno longer freezes the Inbox. Hovering a pull request mark could show "Loadingโฆ" forever, and after a few hovers no thread would open until the tab was closed. Lookups now end at their time limit, and the hover answers with what the Inbox already knows. #3082 - A list read with nothing new no longer redraws the whole window. #3104
Additional Changes
- Smaller repository download. The site's demo videos are served from the site's storage instead of being kept in the repository. #3092
- Site pictures for posted decisions. #3084, #3085
- Test upkeep. #3094, #3125, #3164
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The install script above also updates the plugin when
claudeis on your PATH. Otherwise, in a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotator --scope userThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginโ Installed โ plannotator โ Update now.Pi:
pi update npm:@plannotator/pi-extensionOpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.
What's Changed
- Site: a help page for a Claude Code plugin left behind by an update by @backnotprop in #3073
- Installers: tell the person when open Claude Code sessions need a manual step by @backnotprop in #3074
- Site: host the Decisions banner pictures by @backnotprop in #3084
- Site: Decisions banner sits flush left, shorter, no background by @backnotprop in #3085
- Inbox: export a thread's decisions as Markdown or HTML by @backnotprop in #3080
- Let a question's Other answer take several lines by @backnotprop in #3078
- Inbox: clicking a sidebar agent filters the list to its threads by @backnotprop in #3081
- Inbox: warn before Mark read sets open questions aside by @backnotprop in #3079
- Code review: Call tree (phase 1) by @backnotprop in #3086
- e2e: the thread menu's expected items include Export decisions by @backnotprop in #3094
- Marketing videos are served from the site's storage, not kept in the repository by @backnotprop in #3092
- Inbox: a thread row's grey line shows its latest message by @backnotprop in #3006
- fix(inbox): a list read with nothing new sets no state, so it never draws by @backnotprop in #3104
- Inbox: post a thread's decisions on its pull request by @backnotprop in #3083
- Inbox: your own picture as an agent's icon by @backnotprop in #3087
- Inbox: icon sets for agent icons by @backnotprop in #3090
- Inbox: Animate it, for your own agent icon by @backnotprop in #3105
- Inbox: a stuck gh or glab can no longer freeze the window by @backnotprop in #3082
- Inbox e2e: measured times for the untimed specs by @backnotprop in #3125
- Updates resume a broken download, and the plugin step gets more time by @backnotprop in #3096
- feat(review): request changes on GitLab MRs by @bendrucker in #2723
- feat: Mod+Shift+Enter opens the send-with-a-note composer by @ilyaZar in #2913
- Diagrams: a failed Mermaid render never leaks outside its message by @backnotprop in #3091
- Let authors approve their own GitLab MR; show GitLab's refusal by @backnotprop in #3132
- Inbox: show a thread in the open window (
plannotator inbox --open <thread>) by @backnotprop in #3130 - Inbox icon dialogs: ten fixes from the phone, touch and slow-link sweep by @backnotprop in #3122
- Feature: apply guide standing instructions in get_guide_brief by @solatis in #2956
- Inbox: a web app manifest with the studio's large icons, and the count on the Dock icon by @tommyent in #3056
- Inbox: Mark read and Snooze move into the thread header's โฏ menu by @backnotprop in #3126
- Inbox Settings โ Prompts: Guided reviews row by @backnotprop in #3134
- fix(ui): Ctrl+C copies the highlighted text once the comment box is open by @BenNewman100 in #2623
- Inbox: on a touch screen the first tap on a row opens it by @backnotprop in #3129 (landed with #3137)
- Inbox: on a touch screen the sidebar's โฏ and + buttons always show by @backnotprop in #3137
- Inbox: publish over Tailscale by itself once Tailscale is back by @backnotprop in #3128
- Inbox: on a phone the thread's pull requests open as a bottom sheet like the โฏ sheet by @backnotprop in #3127
- Settings: the Favicon row mentions the installed app by @backnotprop in #3147
- Windows: start agents with the Inbox's own environment by @backnotprop in #3154
- Inbox: on a touch screen, hold a thread row for its menu by @backnotprop in #3131
- Inbox e2e: the iPhone scroll-return case presses the tile where it is by @backnotprop in #3164
- Keep a Windows path's apostrophe in slash-command arguments by @backnotprop in #3161
- Review: the PR picture and video proxy follows only GitHub's own redirects by @backnotprop in #3166
- Inbox launch: a plugin enabled in the project's settings counts as on by @backnotprop in #3144
- Remove defensive limits: the same Inbox on every device, and no silent cuts by @backnotprop in #3121
- Inbox: pictures on comments, sent with the reply as attachments by @backnotprop in #3148
- Inbox: compress and cache on every listener by @backnotprop in #3088
- Windows: the Inbox's background commands no longer flash a console window by @backnotprop in #3143
- Let a fresh Inbox start its first agent in a scratch folder by @backnotprop in #3159
- Inbox: pick a model and effort when starting an agent, and a Claude settings file by @backnotprop in #3097
- Inbox: Rules for your agents (#2194) by @backnotprop in #3145
- Code review: pictures and videos in PR text open in Artifacts by @backnotprop in #3149
- Inbox: list rows tell sessions in one folder apart by @backnotprop in #3095
- Read Windows folder paths in New message's folder box by @backnotprop in #3156
- Inbox window on a slow link: fewer reads, writes show at once by @backnotprop in #3089
- Inbox store: one interface in front of the record log by @backnotprop in #3106
- Inbox: keep "Transcribingโฆ" inside the reply box on a phone by @backnotprop in #3208
- Inbox store: a SQLite log behind the interface (not used by anyone yet) by @backnotprop in #3107
- Inbox store: import to SQLite, export back, behind an off switch by @backnotprop in #3114
New Contributors
- @ilyaZar made their first contribution in #2913
- @solatis made their first contribution in #2956
- @tommyent made their first contribution in #3056
Contributors
@BenNewman100 kept running into a copy that did nothing: select words, open the comment box, press Ctrl+C, get nothing. He fixed it in all five places it happened, with tests for each and a check on Windows 11.
@bendrucker made Request changes on GitLab set the reviewer state GitLab shows, and tested it against a real merge request.
@ilyaZar asked for a shortcut to send with a note in #2912, then built it.
@solatis wanted to shape the guided reviews agents write through the Inbox, found that the Inbox ignored the standing instructions file, and fixed it.
@tommyent gave the installed Inbox app a manifest, sharp icons and an unread count on its Dock icon, and checked it in Chrome and Safari.
Thanks also to the people whose issues shaped this release:
- @rqres asked to change how the Inbox starts Claude Code sessions (#3064), which led to the Claude settings file
- @Arobotmaster reported that a plugin turned on only in a project was refused (#3065)
- @timmo001 asked for a way to show a thread in an open Inbox window (#2506)
- @zane668 asked to customize how agents use the Inbox and write to it (#2194)
Full Changelog :
v0.28.61...v0.28.62 -
๐ r/LocalLLaMA Nvidia's Jensen Huang Resigns as CEO, Colette Kress Named Interim rss
| submitted by /u/ShreckAndDonkey123
[link] [comments]
---|--- -
๐ HexRaysSA/plugin-repository commits sync repo: +1 plugin, +1 release rss
sync repo: +1 plugin, +1 release ## New plugins - [kflow](https://github.com/nightshift-labs-ai/kflow) (0.0.1) -
๐ MetaBrainz Picard 3.0.5 released rss
Picard 3.0.5 is a maintenance release for the recently released Picard 3.0 with fixes for reported issues. This release fixes issues with saving the order of cover art providers, manually set artwork for multiple files not being saved, a potential crash when logging out of your MusicBrainz account and many more.
The latest release is available for download on the Picard download page.
The detailed changes for this maintenance release are below. For an overview of the new features since Picard 2.13 please see our detailed release announcement for Picard 3.0.
Thanks a lot to everyone who gave feedback and reported issues.
Whatโs new?
Bugfixes
- [PICARD-3511] - Saving embedded artwork fails when setting the artwork for multiple selected files
- [PICARD-3525] - Restore Defaults uses wrong values for plugins
- [PICARD-3538] - Unable to change cover art provider order
- [PICARD-3541] - Views stay suspended and the pending files count never reaches zero when a file is removed while it is still loading
- [PICARD-3542] - "Automatically cluster all new files" can skip clustering depending on which file finishes loading last
- [PICARD-3543] - CD lookup reads a wrong drive name when the CD lookup devices setting has spaces or empty items
- [PICARD-3550] - After filtering the "Unmatched Files" entry shows up for all loaded releases
- [PICARD-3554] - Hovering over the closing % of a variable shows an empty tooltip
- [PICARD-3556] - CLI: command alias "plugin uninstall" not working
- [PICARD-3559] - Crash on logout error if option window was closed
Improvements
- [PICARD-3553] - Allow setting
PICARD_FORCE_FUSION=0to opt-out of using Qt's Fusion style
Download
Picard 3.0.5 is available for download from the download page of the Picard website. For Windows 10 and 11 users installing from the Microsoft Store and Linux users using the Snap Store will receive the update soon. The Linux Flatpak package is maintained separately and will also be updated soon.
Please note that unfortunately we can no longer provide updates for the ARM64 versions of the Linux Snap package. See this forum post for more information. If you are currently using the Linux Snap on an ARM64 system consider installing the Flatpak or a native package, if available.
Picard is free software and the source code is available on GitHub.
Get in touch
Please use the MetaBrainz community forums and the ticket system to give feedback, suggest new features or report bugs.
Acknowledgements
Code contributions by Laurent Monin, Philipp Wolfer and Shubham Prasad.
-
๐ HexRaysSA/plugin-repository commits add nightshift-labs-ai/kflow to known repositories rss
add nightshift-labs-ai/kflow to known repositories -
๐ OmniNull/OmniWM Canary 20261112-0829 (16bc3c44) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
16bc3c447632 - Base tag:
canary-20261110-0412-42754090323-1
Changes since canary-20261110-0412-42754090323-1
16bc3c4Put Apple's Developer ID G2 intermediate in the System keychain for CI signing26f19a0Fix stale table reads in Luau widgets and harden their VMsd633935Slide keyboard workspace switches the way a trackpad swipe does540be3cSlide keyboard workspace switches with the swipe's springe60f5d7Slide keyboard workspace switches only when the setting is onc39176bMerge pull request #1210 from 5achin/animate-keyboard-workspace-switch5828526Merge pull request #1209 from hezhizhen/codex/preserve-late-native-drag-annotation605a615Type OmniShell elements as the props tables they are21e4dbaDrop the Wayline hidden indicator border when every window is hiddenae04d78fix(input): preserve late native drag annotation order7aad8f5Keep the newest wallpaper palette and test the recheck without waitingea89acdMerge pull request #1205 from OhNoIBrokeIt/fix/wallpaper-palette-follows-shuffle8f0865dFollow the contributor guide for the keyboard switch animation4918512Animate workspace switches made from the keyboarde26b13bCapture an Aerial that a live wallpaper app covers99e33edLook up the menu bar clock host directlyb804db2Keep queued clicks when own-window input drops stale mouse movement876327eMerge pull request #1203 from megafloras/fix/notification-clock-host-macos26cf73a7eMerge pull request #1202 from hezhizhen/codex/order-native-resize-inputfccfe38Remove the in-app issue reporter and its on-device AI rewrite20c9544Reorder bar widget priority per style in Settings3efc5ecScroll a window title that does not fit its spaced245418Let crowded full-width bar widgets give way instead of overlapping137c424Capture the wallpaper when its file cannot be read40afaf0Rewrite a deleted wallpaper palette on the next recheck79c5958Look at the wallpaper file off the main actor during a recheck372c70dRead an Aerial wallpaper's palette from its thumbnaile36e93eSkip the recheck decode of an unchanged still wallpaper8af987dKeep the recheck sample only after the palette is writtenf54e9aeCheck the wallpaper Store entry for the display and its active Space243d5d7Read a still wallpaper from its file for the wallpaper palette301b2a2Recheck the wallpaper palette so it follows a shuffled folder9cd40bbFind the menu bar clock in ControlCenter before macOS 279eb0e1bLeave the switcher's event tap alone while hotkeys keep it on8c1f074Drop the input source test's actor drain and copied widget strings49cf0bcStop retrying unresolved notification dismissal confirmationscb5669dDerive the path animation tests' geometry from one fixture07f8f76Merge pull request #1198 from rickythefox/feat/switcher-ipc-command453c9e8Merge pull request #1196 from rickythefox/feat/switcher-visible-workspaces3207089Merge pull request #1193 from hezhizhen/codex/test-input-source-suspension16389f6Merge pull request #1188 from hezhizhen/codex/fix-notification-dismissal3c7b432Merge pull request #1194 from hezhizhen/codex/fix-path-morph-animation188a6e6Merge pull request #1190 from hezhizhen/codex/fix-startup-menu-bar-gapfdde41dfix(input): preserve native resize mouse event orderc1d2cf9Remove the SwiftUI command palettedfc51f5Give the palette Vitreus, Lake and Sakura looks7384127Give the palette Celestial, Nocturne and Wayline looks05ccf56Measure palette rows by their own height6ed73b2Draw the palette's Apps and Files with OmniShell7409048Keep ui.path paint animations on the shape8f8e61bDrive the window switcher from omniwmctl235ebf0Draw the palette's Menu, Clipboard and unified search with OmniShelle15dbf8Test input source updates during notification suspensionb940325Address review: cycleScope name, exhaustive badge switch, TOML coverage, Unreleased docsc0c23b4Add a Visible Workspaces scope to the window switchera3f3886Keep the OmniShell command palette working with the bar offf88ac41Draw the command palette's Windows and Commands modes with OmniShell817c7cdMerge pull request #1195 from Jonathanm10/feature/round-notification-badgesefacbd6Keep short notification badges round7215cbcReconcile display geometry when observation startsf8e6d1bKeep dismissed notifications hidden while storage catches up893688eName the managed Settings window's icon7a5b39bMerge pull request #1186 from rickythefox/fix/1148-managed-settings-windowe89a736Spell out the test serial queues' arguments to avoid a compiler crash55c2967Match full-rescan fullscreen frames in AppKit coordinates563c639Check the symbol colour test against exact composited colours9baff24Read the bar icon tests' expected values from the default widgets8e920e6Merge pull request #1185 from rickythefox/feat/1149-output-device-and-etherneta1975b7Merge pull request #1184 from rickythefox/fix/1151-bar-icon-consistency173d40fMerge pull request #1183 from rickythefox/fix/1150-battery-bolt-on-ac01ca4d2Address review: Settings window glue, late admission, hosted raise focus16b9363Show the output device and wired connection in the bar0d7e4d8Use the props returned by barSymbolProps for the OmniWM button5957a9eShare the WindowServer-to-AppKit frame conversion and name the replacement tolerance1c41dddDrop the unsuspended observer's comment and duplicate testfb3383dMerge pull request #1176 from hezhizhen/codex/fix-placement-frame-coordinatesb57db65Merge pull request #1173 from hezhizhen/codex/managed-replacement-frame-coordinates4b766cfMerge pull request #1174 from hezhizhen/codex/fix-full-rescan-floating-frame648fa12Merge pull request #1167 from pltanton/feat/keyboard-layout-indicator95b0df1Merge pull request #1165 from rickythefox/fix/terminal-cell-width-marks1dd6566Share the bar symbol size and weight between barGlyph and the OmniWM button8ab0a22Manage OmniWM's Settings window as a floating window22bfefcGive default bar icons one size and weight899c488Render named colours on symbols as bright as on paths and textba63ffeShow the battery bolt whenever the Mac is on its power adapter8cc4faaMerge pull request #1181 from rickythefox/chore/ignore-glossary89415b0Merge branch 'main' into chore/ignore-glossary9e921f4Remove the PayPal sponsor buttons from the app67d8e73Ignore local GLOSSARY.mdaef3e6eWarn about fake accounts and drop PayPal from the sponsor links18203ffMove widget data demand out of ShellWidgetHost+Deliverye635900Take the unified search tests' sizes and timeout from named values97e28b1Merge pull request #1153 from rickythefox/feature/palette-unified-search92cc8f1Normalize WindowServer frames before workspace placementea6e21fMatch cached replacement frames in WindowServer coordinates96563f7Store full-rescan floating frames in AppKit coordinates1669e2aDeliver keyboard layout changes while OmniWM is inactive126a737Keep Return waiting when the chosen row vanishes and no rows remaincebe180Fold launcher history and drop a vanished row's highlight3437e02Cancel a waiting Return or Command-digit when the highlight movesc7dda42Render unified results as one list so moved rows refreshcf2218aGive combining and enclosing marks zero cell width on every macOS58bf773Address review on unified searcha9f4920Store admitted windows' frames in AppKit coordinates9e3e8b8Merge pull request #1154 from hezhizhen/codex/float-read-only-windows0970d3dSeparate menu path parts with commas for VoiceOver4c3d681Include the menu path in unified menu rows' VoiceOver label824d62dAddress CodeRabbit review on unified searchc30abbaAnnounce top-hit shortcuts to VoiceOver8ed743bShow each top hit's Command-digit shortcut on its row747fc0fOpen unified search top hits with Command-1 to Command-3e46bfa4Reorder searched modes by dragging a row handle17fd8afAdd unified search to the command palette2874f1eFloat windows with read-only AXSize
- Commit:
-
๐ Console.dev newsletter Sponsor: WarpBuild rss
WarpBuild - Linux, macOS and Windows on x86-64 and ARM64. Unlimited macOS concurrency. Get $50 in free credits.
-
๐ Console.dev newsletter TextJS rss
Full-stack console apps.
What we like: Uses the browser console to render full applications. Supports React 19 and Flexbox (using Wasm). Flexibility over styling, routing, data handlers, tables, charts. Custom inputs and key mapping. Can also render to a terminal.
What we dislike: Whilst this is fun, the project doesnโt really explain why youโd want to do this!
-
๐ Console.dev newsletter AWS Emulator rss
Official AWS API Emulator.
What we like: Local, single (Rust) binary that emulates AWS APIs. Can easily point the CLI and SDKs at it. Supports being embedded for isolated test instances. Includes agent skills and can run as a server.
What we dislike: Doesnโt have full fidelity with all AWS APIs and itโs not easy to find out, but you can ask your AI agent to check for you.
-
๐ Console.dev newsletter Sponsor: ARCA rss
Get paid for your AI coding
-
๐ Console.dev newsletter Sponsor: Token Custodian rss
AI, governed
-
๐ Rust Blog Announcing Rust 1.100.0 rss
The Rust team is happy to announce a new version of Rust, 1.100.0. Rust is a programming language empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via
rustup, you can get 1.100.0 with:$ rustup update stableIf you don't have it already, you can get
rustupfrom the appropriate page on our website, and check out the detailed release notes for 1.100.0.If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (
rustup default beta) or the nightly channel (rustup default nightly). Please report any bugs you might come across!What's in 1.100.0 stable
- Never type
AllocatorAPIDropGuardAPI- Conjuring zero-sized types
- Reporting unused dependencies in Cargo
- Reducing Cargo cache collisions
- Cargo min-publish-age
- Stabilized APIs
Never type
After 10 years and 5 failed stabilization attempts, thenever type is finally stable! This also completes the project goal for this work.
The never type, spelled
!in code, is the canonical uninhabited type. It represents the type of diverging computations โ computations which never resolve to any value โ where any code that follows is unreachable. Expressions that terminate control flow, such asreturn,break, andstd::process::exit, also have the type!.Since having a value of the never type is impossible, Rust permits a never-to- any coercion, allowing to turn
!into any other type (this is what distinguishes it from any other uninhabited types). This can be used, for example, to not return a value from one of the branches of amatchor anif:fn mrrrow(option: Option<u32>) { let value = match option { // `x` has type `u32` Some(x) => x, // `return` has type `!`, which is then coerced to `u32`, // allowing the `match` to pass type checking. None => return, }; // ... }While the never type could already be used and observed this way, and even named in the return type of functions (
-> !), this release allows naming the never type anywhere:fn infallible_unwrap<T>(res: Result<T, !>) -> T { // ^^ writing `Result<_, !>` was not allowed before let Ok(v) = res; v }Additionally this release changes
Infallibleto be an alias to the never type. That makes all old APIs that usedInfalliblebe compatible with using!. This was the plan ever since the introduction ofInfallibleand is one of the reasons why the never type stabilization was so hard (waffle gave a talk about some of the troubles of the stabilization).Unfortunately, to allow changing
Infallible, we had to introduce a breaking change. This release changes the "never type fallback" from()to!in editions before 2024 (i.e. 2015, 2018, and 2021), similarly to what has already been done in edition 2024. This should largely be unnoticeable, but can affect code in some rare cases (for example when ignoring a result of a function returning a generic parameter). Note that this change might also make the compiler detect more code as unreachable.We tried to minimize the impact of this breaking change as much as possible, by providing future compatibility warnings far in advance and releasing fixes to public crates that have been broken by this. If a dependency is failing due to issues with the never type, consider updating it, as a fix might have already been released for it.
AllocatorAPIThis release brings about the stabilization of the core parts of
allocator_api, enabling library authors to define custom allocators that can be used together with certain standard library types - currentlyVecandBox. These are enabled through the newly-stabilizedAllocatortrait.This is the foundation of the Allocators 1.0 project goal. A lot remains to be done still, including expanding the API surface usable with custom allocators and stabilizing their use on more collections and pointer types; with the core trait and design out of the way though, expect to see more being stabilized soon!
DropGuard: run a closure on every exit pathThe
Droptrait in Rust makes it possible to run code when a variable goes out of scope, regardless of whether wereturn,?, or panic.Dropbeing a part of types means that in Rust you never have to close a socket.Implementing
Dropcan however feel a little inconvenient when all you want is to run some code unconditionally when a function exits. This is why weโre introducingcore::mem::DropGuard: a new helper type that runs a closure when dropped.DropGuardtakes two arguments: a variable and a closure. It implementsDerefandDerefMutso you can keep working with the variable as normal. But when dropped it runs the closure and consumes the variable.DropGuardalso implements adismissmethod which returns the variable from the guard without running the destructor. This makes it possible to quickly implement all-or-nothing transaction-like APIs with a rollback. Here is an example implementing a parser which uses a guard to roll back mutations in case of failure:use std::mem::DropGuard; use std::num::ParseIntError; /// Attempt to parse all `strings` and push them into `nums`. /// If parsing any of them fails, `nums` remains unchanged. fn parse_all(nums: &mut Vec<u32>, strings: &[&str]) -> Result<(), ParseIntError> { let len = nums.len(); let mut nums = DropGuard::new(nums, move |nums| { nums.truncate(len); // โ 1. Reset the vec on failure }); for s in strings { nums.push(s.parse()?); // โ 2. If `?` returns an error, roll back } DropGuard::dismiss(nums); // โ 3. Parsing successful, dismiss the guard Ok(()) }Conjuring zero-sized types
As Rust's unsafe code guidelines are still being decided, it became clear that it would be very useful to decide what exactly it means to create zero-sized types in an unsafe way, and what we should recommend for people to do this.
This question is answered in Rust 1.100 with a single function:
std::mem::conjure_zst.Instead of transmuting
(),MaybeUninit::uninit().assume_init(), or various other incantations, this is the dedicated way to create a value of a zero- sized type when you know that doing so is safe to do. If an inhabited type has no size, we know exactly what value it must be: nothing.Of course, APIs often rely on the inability to construct such types for safety, and that's why this function is unsafe. For example, PyO3's
Python<'py>is a zero-sized marker token that represents holding the Python GIL (global interpreter lock). Many of Python's APIs require holding this lock to be safe, but conjuring a token from thin air would allow safe PyO3 calls to violate that precondition.Reporting unused dependencies in Cargo
Building dependencies that are no longer used or are only needed for specific platforms can slow down builds. Rustc has the
unused_crate_dependencieslint for this but it has false positives when used with Cargo because dependencies may be shared between multiple build targets, e.g.dependencies.tracing- subscriberbeing available for everybinin a package when only some may use it.Cargo now reports unused dependencies to users, e.g.
warning: unused dependency `tracing-subscriber` --> Cargo.toml:23:1 | 23 | tracing-subscriber.workspace = true | ^^^^^^^^^^^^^^^^^^ | = note: `cargo::unused_dependencies` is set to `warn` by default help: consider removing the dependency on `tracing-subscriber`A limitation of this warning is that it will only appear when building every build target that may use an entry in a dependencies table. For example, running
cargo check --bin foowon't show warnings for unused[dependencies]because anotherbinmay be present that uses them. No warning will be shown for unuseddev-dependenciesbecause there isn't a way to ensure every development build target is built.This warning is being introduced as part of a new linting system for Cargo, controlled by the
[lints.cargo]table inCargo.toml, completing this project goal. See also the other lints that have been introduced.Reducing Cargo cache collisions
Cargo builds all libraries and binaries in the
build-dirand then uplifts final artifacts to thetarget-dir. At this time, these share a common parent directory. Different build configurations, like--features, can lead to different copies of libraries and binaries in thebuild-dir. These copies are kept unique by a build-configuration hash but this hash was not always applied due to platform constraints. This can lead to extra rebuilds, missed rebuilds, confusion over what binaries or libraries are used, and so on. These problems get exacerbated when sharing abuild-diracross git worktrees.The
build-dirnow consistently applies the build-configuration hash to all content by organizing the directories around their build step, rather than their file type, and moving the hash from a file's name to the parent directory.This work began with the build directory layout project goal in 2025, and its stabilization is a milestone toward a new project goal, unblocking future improvements such as cache garbage collection, cross- workspace cache de-duplication, cross-workspace caching, and fine grain locking.
We previously published a call for testing for the changes that are now taking effect. While this is an internal change, this may break build processes and tests that had workarounds for missing or incomplete features. In some cases, the workaround is no longer needed. See cargo#17287 for possible solutions and to add any new use cases.
Cargo min-publish-age a.k.a. dependency cooldowns
Malicious versions of packages are often caught within hours or days after being published, by either automated scanners or by the community. Rust 1.100 stabilizes Cargo's min-publish-age aware dependency resolution, which lets you wait for that window before it picks up newly published versions. This practice is also known as dependency cooldowns.
You can opt in via
.cargo/config.toml:[registry] global-min-publish-age = "3 days"When selecting versions, Cargo now skips any version published more recently than that, and tells you what it held back:
$ cargo update Updating crates.io index Locking 2 packages to highest compatible version as of min-publish-age Adding cc v1.11.0 (available: v1.18.0, published 3 hours ago) Adding clap 4.6.7 (available: 4.6.9, published 2 days ago)When a new version is needed right away, you can override the check for a single update:
$ CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE=allow cargo update clap --precise 4.6.9 Updating crates.io index Updating clap 4.6.7 -> clap 4.6.9 (published 2 days ago, minimum age 3 days)The newer version will be recorded in
Cargo.lockand kept from then on until a latercargo updatere-resolves it.A few things to keep in mind:
-
This depends on the registry recording when each version was published. Versions without a
pubtimefield in the index are never held back. -
cargo installignores the minimum publish age, for both the installed crate and its dependencies. Pin a version withcargo install foo@1.2.3if needed. -
Cooldowns reduce the risk from some supply chain attacks but are not a complete defense on their own. Please keep reviewing dependency updates as you otherwise would.
Further work to protect the ecosystem is planned under the crates.io supply chain hardening project goal, including quarantine support and automated detection of suspicious releases.
Stabilized APIs
impl PartialEq<Cow<'_, [U]>> for Vec<T, A>impl PartialEq<Cow<'_, [U]>> for &[T]impl PartialEq<Cow<'_, [U]>> for &mut [T]std::alloc::Allocatorstd::alloc::Globalstd::alloc::Systemimpl Allocator for Globalimpl Allocator for Systemimpl<A: Allocator> Allocator for &Aimpl<T: Allocator, A: Allocator> Allocator for Box<T, A>impl<A: Allocator> Allocator for &mut Aimpl<T: Allocator, A: Allocator> Allocator for Arc<T, A>impl<T: Allocator, A: Allocator> Allocator for Rc<T, A>Box::new_inBox::from_raw_inBox::from_non_null_inBox::into_raw_with_allocatorBox::into_non_null_with_allocatorBox::allocatorVec::new_inVec::with_capacity_inVec::from_raw_parts_inVec::from_parts_inVec::into_raw_parts_with_allocatorVec::into_parts_with_allocatorVec::allocatorChild::main_thread_handleimpl Default for std::sync::Oncebool::toggleBox::takeBox::mapRc::mapArc::mapimpl AsRef<T> for !impl AsMut<T> for !core::mem::DropGuardcore::mem::conjure_zstUnsafeCell::replaceUnsafeCell::as_ref_uncheckedUnsafeCell::as_mut_uncheckedstr::trim_prefixstr::trim_suffix[T]::trim_prefix[T]::trim_suffixPath::trim_prefixVec::from_fnos::windows::process::CommandExt::show_window
Other changes
Check out everything that changed in Rust, Cargo, and Clippy.
Contributors to 1.100.0
Many people came together to create Rust 1.100.0. We couldn't have done it without all of you. Thanks!
-
๐ New Music Releases Bullet for My Valentine - I Don't Trust Tomorrow rss
Bullet for My Valentine - a new release is available:
- 2026-11-12: I Don't Trust Tomorrow (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
๐ Ampcode News Bye Bye, Dial rss
Today we're saying goodbye to the Dial and its four modes:
low,medium,high, andultra.A model selector takes its place:
You can now pick the model and its effort for each thread. And you can now also switch both in the middle of a thread.
The model selector now also shows you which of your subscriptions or API keys will be billed for each model, or whether it uses Amp credits.
If you don't want to pick the model yourself, use the Staff Pick, which is the model we would choose.
Yes, We Changed Our Mind
In January we explained why Amp does not have a model selector. In July we then shipped the Dial so you could focus on how hard a task is instead of thinking about model names and version numbers. And it worked: when we changed the default model behind the Dial, nobody complained.
But then we added the ability to Amp to bring your own subscriptions and keys, and Amp became free when you do. That changed what the selected model does. Not only is it what produces the tokens, but it also started to decide who gets billed.
mediumon the Dial could use your Claude plan, or your ChatGPT plan, or Amp credits, and it became very hard to tell who's paying for which model when.And that's not to speak of all the settings we had to add to the Dial to make it work in every combination.
So we decided to stop hiding the model and now have a model selector. Now, when you pick it yourself, you know where the tokens come from and who's paying.
And yet, it's still not just a model you pick. An agent is more than a model. You pick the model, and we build the harness around it: each model in the selector gets a system prompt and tools optimized for it, and both switch when you switch models in a thread.
Switch Models in a Thread
With the Dial, a thread kept the mode (and model) it started with. We did that because a model became confused when it continued a conversation that another model had started. But now models are good enough to recover from that.
Now you can change the model mid-thread by opening the selector and making the change. After your next message the new model will be used and the transcript will show a record: "Switched to GPT-6.1 Sol ยท High".
But some things haven't changed. A model switch still has a price. Prompt caches belong to one model, so the new model reads the whole thread uncached, and the first message after a switch costs more.
Threads that run an agent from a plugin keep that agent.
Staff Pick
New threads start on Staff Pick by default. (Except if you had previously configured the Dial to have a default mode.)
Staff Pick is the model we would pick ourselves, which is Claude Opus 5.5 today. We keep benchmarking models, and we'll change the pick when another model does better.
In Settings โ Model Selector, under New Threads Start On, you can also start new threads on the model you picked last, or on one fixed model you choose.
What Happens to Your Dial
Until today everyone used the Dial, so this applies to you.
New threads start on Staff Pick, whichever mode you used last.
Existing threads keep working. A thread you started in
highcontinues on the model it ran.Dial settings don't carry over. If you changed the model behind a mode in Tune Modes, pick that model in the selector now. If you put your own agents on the Dial in Build Dial, you find them under Other Models.
If you never changed those settings, these are the models your modes ran. The first three are at the top of the selector, and Claude Fable 5.2 is under Other Models:
low: GLM-5.3-Flashmedium: Claude Opus 5.5high: GPT-6 Astraultra: Claude Fable 5.2
Pin your models in Settings โ Model Selector, or leave the selector on Staff Pick.
Read the Model Selector docs for everything the selector and its settings do.
-
- November 11, 2026
-
๐ IDA Plugin Updates IDA Plugin Updates on 2026-11-11 rss
IDA Plugin Updates on 2026-11-11
New Releases:
- btf2ida v0.1.19
- btf2ida v0.1.18: headless runner for idalib
- btf2ida v0.1.17
- btf2ida v0.1.16
- btf2ida v0.1.15
- btf2ida v0.1.14
- btf2ida v0.1.13
- btf2ida v0.1.12
- btf2ida v0.1.11
- cfiscope v0.1.17
- cfiscope v0.1.16: headless runner for idalib
- cfiscope v0.1.15
- cfiscope v0.1.14
- cfiscope v0.1.13
- cfiscope v0.1.12
- cfiscope v0.1.11
- cfiscope v0.1.10
- memlens v0.3.24
- memlens v0.3.23: entry point and code-safety fixes
- memlens v0.3.22: per-CPU typing robust to IDA name rules
- memlens v0.3.21: headless runner for idalib
- memlens v0.3.20: per-CPU variables, one copy per CPU
- memlens v0.3.19
- memlens v0.3.18
- memlens v0.3.17
- memlens v0.3.16
- memlens v0.3.15
- memlens v0.3.14
Activity:
- btf2ida
- 18c8c14c: CHANGELOG: modules without BTF, check_module, empty-struct count go iโฆ
- cbd3f071: Release check: any Linux version banner in the chosen file may match โฆ
- ee17d9ab: README: ar/tar alternative creates the deb folder first
- 677082fa: pyright: declare BTF.unchecked_release; no open(None) for a database โฆ
- f95ab787: No-BTF module: refuse a vmlinux of another kernel release (vermagic vโฆ
- ee02047e: Module detection = section lookup (not a string search); 32-bit no-BTโฆ
- e2bec6e3: Summary counts empty structs/unions apart (forward declarations only)โฆ
- c00033f7: tests/check_module.py: fake-database run on a real .ko; README Try a โฆ
- 8527763b: F1 measured on Debian 13 nf_tables.ko without .BTF: 154 imports typedโฆ
- bcad2a22: README: modules with no BTF of their own (F1)
- 66811a4e: Modules without their own BTF: type their imports from the chosen vmlโฆ
- fd2364b8: 32-bit database: the summary says why no prototype was applied; READMโฆ
- 0ce968cc: README: demo prototype coverage re-counted on the current demo kernelโฆ
- 15ba3dcc: A base vmlinux without BTF gets a message that says why (bzImage: extโฆ
- e67e91bb: CHANGELOG: AI-agent line for the next release
- 4772df92: v0.1.19: headless runner never opens a file dialog
- 81ab14c6: headless: no file dialog without a window (split BTF without -vmlinuโฆ
- c81bbf13: v0.1.18: headless runner for idalib (tools/btf2ida_headless.py); run_โฆ
- 70f77604: tests: synthetic __ksymtab test (4 layouts, GPL, code/data/writable cโฆ
- 3a5fe08c: v0.1.17: -prototypes comments out names that clash with a typedef orโฆ
- cfiscope
- 017a9e53: Manifest description says it has not yet been run in real IDA (as theโฆ
- 54f9e21c: v0.1.17 CHANGELOG corrected by a claims check (runtime comment text, โฆ
- d4670755: Runtime calls go to __cfi_check of the kernel or the module holding tโฆ
- aa9d7138: WIP docs: fixture block spacing condensed
- 4310e0e7: WIP docs: README + CHANGELOG (Unreleased) for the labelled CFI runtimโฆ
- c90e15b8: WIP eval: runtime calls found from the code vs the symbol-based buckeโฆ
- c5cad60e: WIP IDA layer: comment the CFI runtime's own calls ('jtCFI runtime: cโฆ
- ee7e3a09: WIP fixture case call_inline (inlined slow path: find_check_fn, then โฆ
- 48e82b9a: WIP core/cli: Site.runtime_call_ea (inlined slow path blr = CFI runtiโฆ
- 015375a6: docs: download link for the Android 12 GKI 5.10 measurement (README +โฆ
- 5b55de58: README/CHANGELOG: measured on Android 12 GKI 5.10 too (no code changeโฆ
- 5e1e29c7: core: link a gap check through the register its slow path passes whenโฆ
- 7beb894c: fixture case call_gap (mov between sub and ror; asserts the check staโฆ
- c479f116: core: range checks with up to 4 unrelated words between sub and ror (โฆ
- c80c2a52: eval_gki_oldcfi: inlined tracepoint loops as their own bucket of unreโฆ
- 6ca92b0c: v0.1.17: aarch64 Linux 5.x jump-table CFI (Android 12/13 GKI 5.15)
- 78193493: IDA layer: jump-table CFI candidates count as address taken through tโฆ
- 54b3faa2: core: range provenance (range_from), no stale 'candidates unknown' noโฆ
- d1d06f54: IDA layer: site_at prefers the exact call/check and the narrowest spaโฆ
- 1c554413: README: table row for coverage without the CFI runtime's own calls
- memlens
- fbfe84f1: Stub test: a listed CPU without a copy of the variable is skipped, laโฆ
- e241ca59: README + kernel2elf doc: name the split .percpu.cpu. sections aโฆ
- 85f13ac5: Per-CPU typing also takes split .percpu.cpu. sections (pre-releโฆ
- bd8cf3bf: CHANGELOG: AI-agent line for the next release
- a5a40d76: v0.3.24: per-CPU typing across CPU-number gaps; Ghidra column re-measโฆ
- 354e1782: README: Ghidra column re-measured on current-code exports (all three โฆ
- 02f1d849: Per-CPU typing takes CPU numbers from the .percpu.cpu sections (noโฆ
- 6b7e84ad: README: the Export action asks for the ISF (Cancel = Volatility's ownโฆ
- 4cc5988e: v0.3.23: ELF entry = kernel text again (not per-CPU data); Apply kernโฆ
- 76ad6578: v0.3.22: per-CPU typing also finds cpu_ (only inside .percpuโฆ
- 31eee379: README: applied-globals note includes the per-CPU variables
- a295f7db: kernel2elf README: percpu rows and -no-percpu (verified byte-identicโฆ
- 0530bb58: v0.3.21: headless runner for idalib (tools/memlens_headless.py) + stuโฆ
- ee2c67fc: CHANGELOG/WRITEUP: this_cpu_off holds the CPU's per-CPU offset (on 7.โฆ
- b1b2b2c3: README: demo kernel.elf is 68 MB with the per-CPU areas
- bb68c2a2: v0.3.20: per-CPU variables exported and typed, one copy per CPU
- 7829a32f: per-CPU: take fixed_percpu_data and the variable at __per_cpu_start; โฆ
- dfff8ad8: IDA layer: type every CPU's copy (cpu.) of per-CPU variablesโฆ
- e65a0707: kernel2elf: export each CPU's per-CPU area (.percpu.cpu, symbols cโฆ
- e970d554: v0.3.19: plugin loads on a Python without _lzma; .xz ISF gives one clโฆ
-
๐ r/LocalLLaMA Nvidia is Preparing to Oust Nvidia CEO Jensen Huang rss
submitted by /u/fallingdowndizzyvr
[link] [comments] -
๐ ghostty-org/ghostty vt-1.0.1 release
libghostty-vt 1.0.1
-
๐ roboflow/supervision supervision-0.31.7 release
v0.31.7: pycocotools-matching mAP, stricter key point and CSV inputs, and
edge-case fixes for zones and dataset exports
A fixes-only patch: mAP now matches pycocotools more closely, and several zone, key point and export edge cases stop failing.
- MeanAveragePrecision uses pycocotools size buckets and the COCO crowd IoU for oriented-box crowd targets.
- PolygonZone keeps its full mask when polygon coordinates reach their integer limit.
- Key point selection and CSVSink now raise on inputs they used to silently misread.
- DetectionDataset exports keep box area for empty COCO masks and, with simplification on, bridge more mask holes.
- The OpenCV-free
contourAreaandconvertScaleAbsfallbacks agree with OpenCV in more cases.
Drop-in upgrade, but check the Migration guide if you compare mAP values, pass extra CSV fields or select key points with boolean masks.
โจ Spotlights / highlights
MeanAveragePrecisionmatchespycocotoolsmore closelysv.metrics.MeanAveragePrecisionnow puts objects in the small, medium and large buckets thatpycocotoolsgives them: a prediction's own geometry (box, mask or oriented-box polygon) decides, and itsdata["area"]is ignored. Targetdata["area"]is read as float64, so an area such as9216.0004is no longer scored as both medium and large. WithMetricTarget.ORIENTED_BOUNDING_BOXES, targets withdata["iscrowd"]set use the COCO crowd IoU, so a prediction inside a crowd region is ignored instead of counted as a false positive. (#2939, #2941)import numpy as np import supervision as sv from supervision.metrics import MeanAveragePrecision, MetricTarget # A small target with a perfect prediction, plus a higher-scored medium false positive # whose area metadata claims it is small. masks = np.zeros((2, 128, 128), dtype=bool) masks[0, 0:20, 0:20] = True masks[1, 60:100, 60:100] = True predictions = sv.Detections( xyxy=np.array([[0, 0, 20, 20], [60, 60, 100, 100]], dtype=float), mask=masks, class_id=np.array([0, 0]), confidence=np.array([0.5, 0.9]), data={"area": np.array([400.0, 300.0])}, ) targets = sv.Detections( xyxy=np.array([[0, 0, 20, 20]], dtype=float), mask=masks[:1], class_id=np.array([0]), ) result = ( MeanAveragePrecision(metric_target=MetricTarget.MASKS) .update(predictions, targets) .compute() ) result.small_objects.map50_95 # 1.0: the medium false positive no longer counts as smallMisread inputs raise, and scalar key point indexing works
sv.CSVSinkraisesValueErrorwhen additional data uses a built-in column name such asconfidenceorx_min, instead of writing a duplicate column that shadows the detection value.sv.KeyPointsselection rejects a nonempty one-dimensional boolean mask whose length does not match the number of skeletons or keypoints, instead of silently selecting a subset, and a zero- dimensional NumPy integer row index combined with a keypoint list or mask now works. (#2934, #2943, #2930)import numpy as np import supervision as sv detections = sv.Detections( xyxy=np.array([[0.0, 0.0, 10.0, 10.0]]), confidence=np.array([0.9]) ) with sv.CSVSink("detections.csv") as sink: sink.append( detections, {"confidence": 0.1} ) # ValueError: Additional data uses reserved CSV column names confidence.PolygonZonesurvives integer coordinate limitssv.PolygonZonecomputes its mask bounds as Python integers, so a polygon whose coordinates reach their dtype limit, for exampleuint8255, keeps its full mask instead of overflowing, raising an error or silently creating a smaller zone. (#2945)import numpy as np import supervision as sv polygon = np.array([[0, 0], [255, 0], [255, 3], [0, 3]], dtype=np.uint8) sv.PolygonZone(polygon).mask.shape # (5, 257)The OpenCV-free fallbacks agree with OpenCV in more cases
The
contourAreafallback adds the shoelace terms in OpenCV's order and reads integer points as float32, sosv.filter_polygons_by_areano longer flips at amin_areaormax_areaboundary between backends. TheconvertScaleAbsfallback scales in float32 with a single-rounding multiply-add, so values on a.5tie such as95 * 1.3round to the sameuint8as OpenCV. (#2936, #2935)Labels and dataset exports
sv.LabelAnnotatorandsv.RichLabelAnnotatorwithsmart_position=Truekeep an oversized label at the frame's left and top edges, and shaped right- to-left text inRichLabelAnnotatorkeeps its leading characters at the visible right edge.DetectionDataset.as_yoloandas_pascal_vocretry a failed mask-hole seam search with traced contours, so more masks export when you simplify them withapproximation_percentage, andas_cocouses box area for empty mask placeholders that have no finite stored area. (#2940, #2933, #2942)๐ Migration guide
Nothing was removed, renamed or deprecated, but a few fixes change what existing code returns or accepts:
- Different values:
MeanAveragePrecisionsizes a prediction by its geometry and ignores itsdata["area"], and reads targetdata["area"]as float64, so small, medium and large mAP can move. (#2939) Oriented-box mAP oniscrowdtargets can rise, never fall, because crowd overlaps are ignored. (#2941)as_cocowrites box area, not0, for empty mask placeholders. (#2942) Oversized labels withsmart_position=Truestop at the left and top frame edges. (#2940) - New errors:
CSVSinkraisesValueErrorfor extra fields named like a built-in column. (#2934)KeyPointsselection raisesIndexErrorfor a nonempty boolean mask of the wrong length. (#2943) - Without OpenCV: the
contourAreafallback can flipfilter_polygons_by_areaat a boundary (#2936), and theconvertScaleAbsfallback rounds someuint8results one level differently, up or down (#2935). Regenerate stored references made with the NumPy fallback.
๐ Notable changes
๐ง Fixed
Metrics
MeanAveragePrecisionputs objects in the small, medium and large bucketspycocotoolsgives them: prediction area comes from its own geometry (box, mask or oriented-box polygon), and targetdata["area"]is read as float64. (#2939)MeanAveragePrecisionwithMetricTarget.ORIENTED_BOUNDING_BOXESuses the COCO crowd IoU for targets withdata["iscrowd"]set, so predictions inside a crowd region are ignored instead of counted as false positives. (#2941)
Key points, zones and sinks
PolygonZonepreserves mask dimensions when integer polygon coordinates reach their dtype limit, instead of overflowing. (#2945)KeyPointsrejects nonempty one-dimensional boolean selection masks whose length does not match the number of skeletons or keypoints; keypoint selection onKeyPoints.empty()stays empty. (#2943)KeyPointsaccepts a zero-dimensional NumPy integer row index combined with a list or boolean mask of keypoints, preserving coordinates and aligned fields instead of raisingValueError. (#2930)CSVSinkraisesValueErrorwhen additional data uses a built-in column name such asconfidenceorx_min, instead of writing duplicate columns. (#2934)
Annotators and the NumPy fallback without OpenCV
LabelAnnotatorandRichLabelAnnotatorwithsmart_position=Truekeep an oversized label at the frame's left and top edges; shaped right-to-left text inRichLabelAnnotatorretains its leading characters at the visible right edge. (#2940)- The
contourAreafallback returns exactly whatcv2.contourAreareturns, sofilter_polygons_by_areaagrees across backends at its boundaries. (#2936) - The
convertScaleAbsfallback scales in float32 with a single-rounding multiply-add, like OpenCV's fused float32 path. (#2935)
Dataset exports
DetectionDataset.as_yoloandas_pascal_vocretry a failed mask-hole seam search with traced contours when simplification removes usable vertices;as_yoloandas_pascal_vocstill raise if no seam is found, andas_cocoalso tries this foriscrowd=0annotations. (#2933)DetectionDataset.as_cocouses bounding-box area for empty mask placeholders when no finite stored area is available and no segmentation is exported. (#2942)
๐ Docs
- The "Edit this page" links now point at the
developbranch. (#2944) - The SAHI notebook shows the corrected tile size output. (#2937)
- The SAHI notebook calls
InferenceSlicerwithoverlap_whand no longer passes the removedoverlap_ratio_wh, so its cells run again, and outputs from the old 2560-pixel image were cleared. (#2938) - The
CSVSinkhow-to now says that extra fields named like a built-in column raiseValueError, and thesnap_boxesandMeanAveragePrecisionResultdocstrings describe oversized boxes and the inclusive size limits.
๐ Contributors
Welcome to our first-time contributors Pranjal Mishra, Chris Censullo and viwe-monai!
- Pranjal Mishra (@pmxlr8, LinkedIn) โ matched
MeanAveragePrecisionsize buckets and oriented-box crowd IoU topycocotools. - Mohammad Sohail Shaikh (@sohailshk, LinkedIn) โ kept oversized labels at the frame's left edge and bridged mask holes in dataset exports.
- Vlad Voropaev (@voropaevv, LinkedIn) โ rejected
CSVSinkextra fields that shadow built-in columns and kept box area for empty COCO mask placeholders. - Ahmet Mert รzacar (@AhmetMert01) โ validated boolean key point selection masks and accepted scalar NumPy row indices.
- A Aswanth Raj (@aswanth-07, LinkedIn) โ kept
PolygonZonemasks intact at integer coordinate limits. - kevin (@kevin9327) โ made the OpenCV-free
contourAreaandconvertScaleAbsfallbacks match OpenCV. - Chris Censullo (@censullo) โ corrected the tile size output in the SAHI notebook.
- viwe-monai (@viwe-monai) โ pointed the "Edit this page" links at the
developbranch. - Jirka Borovec (@Borda, LinkedIn) โ updated dependency pins and prepared the release.
Automated contributions: pre-commit.ci, claude, Codex
Full changelog :
0.31.6...0.31.7
Co-authored with/oss:release. -
๐ r/LocalLLaMA Microsoft files a patent application to train AI models on idle consumer GPUs rss
According to Microsoft's patent application, it explains breaking down training into small tasks and sending them to devices of owners who opted in. Credits will be the reward. it's just an app and no pay out rate is advertized so I don't even know if the credits would be enough for the electricity.
Anyway, home internet latency feels like the bigger problem to me.
https://insider-gaming.com/microsoft-ai-use-your-gpu/
(English is not my native language, I used an LLM to help translate this post.)
submitted by /u/Queasy_Back2588
[link] [comments] -
๐ HexRaysSA/plugin-repository commits sync repo: +3 plugins, +46 releases rss
sync repo: +3 plugins, +46 releases ## New plugins - [hint-lumina](https://github.com/williballenthin/idawilli) (0.1.0) - [navband-visited](https://github.com/williballenthin/idawilli) (0.1.3) - [vtloader](https://github.com/williballenthin/idawilli) (1.0.0) ## New releases - [btf2ida](https://github.com/nightshift-labs-ai/btf2ida): 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.17, 0.1.16, 0.1.15, 0.1.14, 0.1.13, 0.1.12, 0.1.11, 0.1.10 - [cfiscope](https://github.com/nightshift-labs-ai/cfiscope): 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.15, 0.1.14, 0.1.13, 0.1.12, 0.1.11, 0.1.10 - [colorize-calls](https://github.com/williballenthin/idawilli): 0.1.4 - [global-struct-dissector](https://github.com/williballenthin/idawilli): 0.1.2 - [memlens](https://github.com/nightshift-labs-ai/memlens): 0.3.9, 0.3.8, 0.3.7, 0.3.6, 0.3.5, 0.3.19, 0.3.18, 0.3.17, 0.3.16, 0.3.15, 0.3.14, 0.3.13, 0.3.12, 0.3.11, 0.3.10 - [oplog](https://github.com/williballenthin/idawilli): 0.3.1 -
๐ r/LocalLLaMA Open source self driving is here! rss
| Today NVIDIA releases Alpamayo 2 Edge! I work for Embedl and we have already released an optimized version of the model that is more than 10x faster than pytorch when run on edge hardware like AGX Thor! The model is trained in an RL loop (!) and takes in 6 cameras and the recent motion. Feel free to check it out - you can even run it on a real Thor at: https://embedl.com/nvidia/alpamayo2-edge/thor?tab=run submitted by /u/Course_Latter
[link] [comments]
---|--- -
๐ r/LocalLLaMA New Qwen3.8-27B Unsloth Dynamic V3.1 GGUFs rss
| Hey r/LocalLLaMA ! We're releasing new new Unsloth Dynamic v3.1 GGUFs for Qwen3.8-27B! They're better by 5-10% accuracy on DeepSWE, Terminal Bench and more vs UD3, GSQ-RCO and Exllama-3! We're also improving our algorithms further so we can apply them to Qwen4 so folks can have efficient and accurate quants!- All quants from 2-bit until 6-bit are updated. 3-bit ones are not, as we found UD3 to do on par with UD3.1. We are still improving all other quant sizes though!
- All benchmarks are 256K for agentic ones (DeepSWE, Terminal Bench), and 128K for the rest (LiveCodeBench etc). We used temperature 1.0, top_p 0.95, top_k 20, min_p 0, no presence or repetition penalty, preserve_thinking and xhigh reasoning
- We ran benchmarks multiple times including LiveCodeBench x6 times, HMMT and others 8-16x and agentic benchmarks multiple times.
On other benchmarks like for GSQ-RCO and Exllama3:
- To compare GSQ-RCO and Exllama-v3, we had to exclude the token embedding layer from the x axis, as Exllama-v3 uses BF16 for it.
- If you consider the full download size and total RAM usage for Exllama-v3, then adding the BF16 embedding table and including all embedding sizes changes the plots. Our main plots's x axis removes the embedding layer sizes from all quant providers. However on pure RAM usage and disk space usage vs accuracy, exllama3 does worse.
- For LiveCodeBench, GSQ-RCO showed Unsloth UD3 quants doing consistently worse than ISTA's. However we found the opposite - UD3 quants (our OLD quants) do better than ISTA on LCB on all sizes except the smallest. UD3.1 further improves on LCB as well. We approximate that GSQ-RCO used a context budget of 96K, as that best fits the data for the runs we have. At 96K, GSQ-RCO does somewhat do better than UD3, but at 128K, UD3 does much better.
- On another benchmark, for ISTA GSQ-RCO's AIME25 benchmarks, their quants reach 100%, 100%, 100% and 96.7% accuracy recovery. And they said our quants do worse. Through our investigations, we estimate ISTA only did 1 trial - we did 14 trials, and we show on average the recovery rate is 93% to 96% - not 100% accuracy recovery. And in fact our UD3 old quants do better on average than their quants on 14 runs vs 1 run of theirs, so we draw the opposite conclusion if you run the trials more.
More details and benchmarks at https://unsloth.ai/docs/models/qwen3.8#dynamic-v3.1-update- november-11th-2026 All quants are updated in https://huggingface.co/unsloth/Qwen3.8-27B-GGUF! Thank you and have a nice day! We're super excited for Qwen4! submitted by /u/danielhanchen
[link] [comments]
---|--- -
๐ exe.dev Give Agents Temporary Access to Sensitive Integrations rss
Exe.dev integrations are a powerful primitive to give your VMs access to resources without giving agents the underlying secrets. For example, you can give your VM access to a GitHub repo without leaving your private key or personal access token on the VM, where an agent could potentially misuse it.
If you want an extra layer of protection, you can configure your integration for "step up" mode. Then, when the VM tries to use the integration, it will return a link so you can approve access. Click on that link and approve it for some time period. This lets you keep an eye on your agents and grant temporary access to high-value integrations (e.g., access to prod).
To use this, add an integration with
--stepup web:exe.dev โถ int add http-proxy --name demo \ --target https://httpbin.exe.xyz/ --bearer shhh \ --stepup web --attach vm:drum-dragon Added integration demo Usage from a VM: ssh drum-dragon.exe.xyz curl https://demo.int.exe.xyz/When you trigger the integration, you'll see an approval link:
exe.dev โถ ssh drum-dragon.exe.xyz curl https://demo.int.exe.xyz/ Integration "demo" needs approval: https://exe.dev/a/afvpfibvypeti2loorhfumrxj5cvoskjkfgvasv7rsp4l2ckxl6qIf youโre logged in, this will take you to a simple screen:
Approve the
integration for 10 minutes, an hour, six hours, or a day.This works for many of our integration types. Agents are excellent at prompting you to take the next step.
-
๐ r/LocalLLaMA NVIDIA reportedly cancels GeForce RTX 5080 24GB launch, brings back 16GB model over GDDR7 costs rss
| submitted by /u/Norwood_Reaper_
[link] [comments]
---|--- -
๐ Rust Blog Google Summer of Code 2026 results rss
The Rust Project participated in Google Summer of Code (GSoC) for the third time this year. This time we had 13 projects, and our dear contributors have been working very hard on them for several months. As usual, the projects had various durations, so while some of them have ended in August, the last one has only finished in November, so we have been waiting until we have all the results before publishing this blog post.
We are very happy to announce that all 13 projects were successful and passed their final evaluation! We consider it to be a testament to the diligence of our contributors, and the helpfulness of our mentors, that we are able to keep a very high rate[1] of successful GSoC projects several years in a row.
At the start of summer, we had a video call with our contributors, so that we could all get to know each other a bit, and learn about their projects. Over the following few months, we continuously communicated with the contributors, provided guidance and answered their questions and reviewed their pull requests. And most importantly, we learned many new things together! It was an overall great experience. We are grateful for all Rust contributions done by our GSoC participants and for the time we spent working together, and we hope that we will continue seeing at least some of them around in the future.
We would like to thank all our Rust GSoC 2026 contributors. You did a great job!
Even though this year we had fewer projects than in 2025, mostly due to limited mentoring capacity, Google Summer of Code 2026 was again a success for the Rust Project. We think that GSoC is a great way of introducing new contributors to our community, and we are looking forward to participating in GSoC (and other mentorship programs, such as Outreachy) again in the near future. If you are interested in becoming a (GSoC) contributor, check out our GSoC project idea list and our guide for new contributors.
Below you can find a brief summary of our GSoC 2026 projects. You can find more information about the original goals of the projects here. For easier navigation, here is an index of the project descriptions in alphabetical order:
- A Frontend for Safe GPU Offloading in Rust by Marcelo Domรญnguez
- Adding WebAssembly Linking Support to Wild by Kei Akiyama
- Bringing autodiff and offload into Rust CI by Shota Sugano
- Debugger for Miri by Mohamed Ali
- Implementing impl and mut restrictions by Ryosuke Yamano
- Improving Ergonomics and Safety of serialport-rs by Tanmay
- libc: transition differing bit-width time and offset variants and deprecate bug-prone constants by Adam Martinez
- Link Linux kernel and its Modules with Wild by Vishruth Thimmaiah
- Migrating rust-analyzer assists to SyntaxEditor by bit-aloo
- Port std::arch test suite to rust-lang/rust by Sumit Kumar
- Reorganizing tests/ui/issues by zedddie
- Utilize debugger APIs to improve debug info test accuracy and error reporting by Anthony Bolden
- XDG path support for rustup by Guicheng Liu
And now strap in, as there is a ton of great content to read about here!
A Frontend for Safe GPU Offloading in Rust
- Contributor: Marcelo Domรญnguez
- Mentor: Manuel Drehwald
- Final report
Marcelo worked on improving the usability of cross-vendor GPU programs in Rust using the
std::offloadmodule. At the start of the project, the offload prototype was only a proof of concept. It assumed that the offloaded code was bug-free, and it required users to write a lot of boilerplate code. Marcelo resolved both issues over the summer.First, he implemented proper type checking. Marcelo extended the compiler to verify that the arguments passed to any offload call are of the correct type, as expected by the GPU kernel. Kernel launches are thus now safe.
After that, he added support for generic kernels. The compiler now collects all generic instantiations launched from the CPU side, and loads that info later when compiling GPU kernels to make sure we instantiate them as needed. Marcelo also added support to select which GPU to use, which is helpful for laptops with both an integrated and a dedicated GPU, as well as for servers with multiple GPUs. He also added two macros that removed the need for any boilerplate when writing and launching GPU kernels.
The hardest part of this project by far was dealing with references. Due to Rust semantics, we cannot just map types containing mutable references to GPUs and then process them using multiple threads. Previous Rust GPU projects used raw pointers as a workaround, but we obviously wanted to avoid those. Marcelo managed to implement a sound abstraction so that users can now safely declare how their kernels will access mutable arguments.
As a cherry on top, Marcelo also ported the RajaPerf performance suite from C++ to Rust and used it to benchmark his pull requests. His safe Rust version matches the performance of the original C++ code, and is now described in a GPU offload paper that he is working on together with his mentor, Manuel. This was Marcelo's second Rust GSoC project, and same as last year, we are very happy with the results. Great job!
Adding WebAssembly Linking Support to Wild
- Contributor: Kei Akiyama
- Mentor: David Lattimore
- Final report
The goal of this project was simple on paper: teach the Wild linker to link WebAssembly (Wasm) programs. However, adding support for a new linker target is of course far from simple. Luckily, Kei already had a lot of experience with Wild, as this was his second GSoC project working on the Wild linker.
And as expected, Kei did a great job! Prior to GSoC 2026, Wild had no Wasm output support. Now, the Wasm support is sufficiently good that Wild can link a range of complex programs to Wasm. For example, it is able to link itself, SQLite, ripgrep, CPython and even the SpiderMonkey JavaScript engine.
And the linking performance is excellent! When compared to
wasm-ld, the de- facto standard Wasm linker, which is based on the LLD linker, Wild is 2-15x faster, and uses 2-5x less memory. You can find more benchmarks in his final report, where he also explains that achieving this performance took quite some work, because Wild's ELF linking performance did not immediately translate to being fast when linking Wasm.Even after this GSoC project ended, Kei has continued improving Wild's Wasm support, as well as contributing to other parts of Wild. Thank you for bringing fast linking to a new set of use-cases, Kei! You are a valued member of the Wild team.
Bringing autodiff and offload into Rust CI
- Contributor: Shota Sugano
- Mentor: Manuel Drehwald
- Final report
The goal of this project was to build the experimental
std::autodiffmodule, which implements automatic differentiation of Rust code, and thestd::offloadmodule, which allows offloading Rust code to GPUs, in the CI of the Rust compiler.Shota has already been contributing to this area in the months leading up to this year's GSoC, so he had no issues getting started. After valiantly fighting with our CI, he made both modules available in the official
nightlycompiler channel. Rust users can thus now simply install them with a single rustup command, rather than having to compile rustc from source! This is a huge benefit for gathering feedback on these features in the wild, as it makes it much easier to experiment with them.Beyond making these projects available via rustup, he also worked on making it simpler to build projects that use
std::offload. The original compilation pipeline was derived from Clang's support for GPU offload, so it involved calling clang helper binaries. That is clearly not optimal, so Shota worked on replacing it by directly calling the underlying LLVM APIs from rustc.The last piece of his project was enabling testing in CI for both offload and autodiff, which already helped prevent multiple regressions. Right now, the GPU offload pipeline only tests the CPU setup side, but his work allowed us to talk to GPU hardware vendors, two of which already agreed to provide the Rust Project with GPU hardware so that in the future we can also run those tests on dedicated GPUs.
Overall, the project was a success. Shota had to show a lot of patience and endurance when working with various CMake quirks and CI challenges. We would like to extend a special thank you for that!
Debugger for Miri
- Contributor: Mohamed Ali
- Mentor: Oli Scherer
- Final report
miri is a tool that can detect undefined behavior (UB) in unsafe Rust code. It used to have a prototype of an interactive debugger called
priroda, but it became unmaintained some time ago. The goal of this project was to re- establishpriroda, to make it easier to use miri interactively, debug how and why is UB introduced in Rust programs, and also help rustc developers analyse MIR, one of the intermediate representations of Rust programs.Mohamed successfully reached both main goals of this project. He created a miri interface for the gdb debugger, which allows debugging programs executed by miri. You can set breakpoints, step through individual instructions, analyse MIR local variables and inspect the debugged program's state, with miri acting as a "virtual CPU". So when you encounter your next miri UB report, you can actually debug the program state that caused UB by running
priroda! Mohamed also created a command-line interface forpriroda, which is used to test it in miri's CI. This will ensure that it keeps working properly and will not bitrot again.Mohamed also added basic support for the Debugger Adapter Protocol, which allows using
prirodatogether with IDEs such as Visual Studio Code. Currently, connecting priroda to an IDE is a bit involved, so the next step would be to build a plugin for an IDE that would allow showing all the extra state that miri has, which gdb doesn't know how to interpret.Debugging programs executed by miri is very exciting. Thank you for all your work!
Implementing impl and mut restrictions
- Contributor: Ryosuke Yamano
- Mentors: Jacob Pratt, Urgau
- Final report
The goal of this project was to implement two new language features that were accepted in RFC 3323:
- Impl restrictions (
impl(crate) trait Foo {}), which allow restricting in which modules you are able to implement a given trait. - Mut restrictions (
struct Foo { pub mut(crate) bar: u8 }), which allow restricting in which modules you are able to mutate a given field.
Ryosuke had to familiarize himself with the compiler's codebase and do a lot of implementation work to get both features working. This included implementing parsing of the new syntax, recording its metadata in the compiler's Abstract Syntax Tree, implementing resolution of the restricted crate paths, and finally adding checks to enforce both restriction rules. This all amounted to around five thousand lines of Rust code!
Once the new features were implemented and available on nightly, Ryosuke wrote a Call for Testing blog post. It had to be very exciting to announce to the world that he implemented two new features from scratch, and people can now play with them on the nightly channel! After the blog post was published, users reported a few issues, which Ryosuke promptly fixed. He also contributed to rustdoc to improve how the impl and mut restrictions are rendered in the generated documentation pages.
Now that the features are available on nightly, feedback is being gathered on them, with the plan being to stabilize them in 2027. If you would like to provide feedback on the impl and mut restrictions, you can do so in this issue.
The goal of this project was clear, and Ryosuke achieved it completely. Awesome work!
Improving Ergonomics and Safety of serialport-rs
- Contributor: Tanmay
- Mentor: Christian Meusel
- Final report
The goal of this project, which was done in collaboration with the Rust Embedded Working Group, was to improve the API ergonomics and type safety of the serialport- rs crate.
The serialport project is a bit different from some other projects which participated in this year's Google Summer of Code. It is more on the side of "facility management" than rocket science. Its challenges are taming finicky operating system APIs and making good abstractions, rather than full-blown software engineering.
Tanmay led many fruitful discussions about potential design decisions, and did a lot of field research on how other crates that depend on serialport actually use its API, to figure out how to make the upcoming breaking API changes less disruptive and painful for them.
Tanmay also worked on sanding off some rough edges of the serialport API, such as replacing Boxed trait objects with enums, and making errors explicit in places where the legacy API used to panic. Some of the work still waits for integration. It is targeting the upcoming serialport 5.0 release.
Christian (Tanmay's mentor) found working alongside Tanmay very motivational, and he was able to catch up with a lot of other unrelated work in order to integrate Tanmay's changes. He noted that working with Tanmay was fun and productive, and that it was pure joy to see him grow from his first contribution in the bonding phase to seasoned contributions. Thank you, Tanmay!
This was my first Google Summer of Code as well. It was challenging, motivating, fun and definitely worth it. I would show up again.
Christian Meusel
libc: transition differing bit-width time and offset variants and
deprecate bug-prone constants
- Contributor: Adam Martinez
- Mentor: Trevor Gross
- Final report
libcis a foundational crate that is used by thousands of other crates across the Rust ecosystem. For the past several years, its maintainers have been attempting to publish a stable 1.0 release of the crate. Because this crate has to support interoperating with C on many compilation targets with weird quirks, this requires an enormous amount of work. We already had a GSoC project for movinglibctowards 1.0 last year, and the goal of Adam's project was to make more progress in that direction.And we can happily say that progress was indeed made! The original goal of Adam's project was to deprecate a number of constants that were difficult to maintain and cleanup inconsistencies in handling 32-bit/64-bit variants of file and time handling functions[2]. Adam was able to resolve that in a few weeks, and then he moved on to resolve a number of various issues blocking the 1.0 milestone.
Saying that Adam was productive would beโฆ an understatement. We could follow his work in real-time, because he was posting daily GSoC reports for 116 days (!) in a row. The diligence and consistency with which he tackled so many complicated issues was an inspiration to us. In fact, sometimes the
libcreviewers were not able to keep up!You can find all Adam's
libcpull requests here. You might notice that many of them have lots of comments, and even more discussions happened in GitHub issues and on Zulip. In addition to implementing the necessary code, making changes that affect interesting C platforms and architectures also required him to do a ton of research, and a lot of considerations of edge cases and possible backwards compatibility breakages. His work also took him on a whirlwind tour of diverse platforms; Adam's contributions spanned FreeBSD, NetBSD, Android, Hurd, NuttX, AIX, VxWorks, Fuchsia, L4Re and more.Even though more work will still be required to get
libcto 1.0, Adam's contributions made a significant dent in this effort. Thank you very much for all your work!Link Linux kernel and its Modules with Wild
- Contributor: Vishruth Thimmaiah
- Mentor: David Lattimore
- Final report
Linker scripts are arcane commands that can be used to instruct a linker to construct the final binary in a custom way. The Wild linker used to implement only basic linker script functionality, which Vishruth greatly expanded during his GSoC project.
Thanks to that, Wild can now successfully link Linux kernel modules, and it's even close to being able to link the Linux kernel itself! Vishruth's work involved greatly expanding expression evaluation support, location counters, program headers, etc. In addition to adding support for many missing bits of linker script support, Vishruth implemented support for partial linking (-r) as this is needed in order to link Linux kernel modules. You can find all the linker script features that he implemented here.
Adding all those peculiar features to Wild required performing many cross- cutting changes to its codebase, which Vishruth managed to do really well. And it was not at the cost of performance! Wild now manages to link Linux kernel modules such as
btrfsoramdgpu2-4x faster than the BFD (GNU ld) or LLD linkers[3]. You can find more benchmarks in his final report.Vishruth has continued to contribute to Wild even after his GSoC project ended and has become a valued contributor to the project. Thank you very much for making Wild better, Vishruth!
Migrating rust-analyzer assists to SyntaxEditor
- Contributor: bit-aloo
- Mentors: Chayim Refael Friedman, Lukas Wirth
- Final report
rust-analyzer uses rowan for its syntax trees, a library for Concrete Syntax Trees.
rowanhas served us well over the years, but it has some downsides that cause major performance problems and also smaller convenience issues. In particular, memory fragmentation causes rust-analyzer to consume much more memory than it actually needs (in the order of redundant gigabytes).We wanted to rewrite
rowanto change that. The problem was that many parts in rust-analyzer touch syntax trees, and in particular assists (code actions) of which we have a lot. They also use mutable tree editing, a feature ofrowanthat can be convenient but was a major obstacle in rewriting it to be more efficient.During his project, bit-aloo first migrated all rust-analyzer code from mutable tree editing to
SyntaxEditor, a new abstraction that was created specifically to avoid mutation. After that, he removed mutable editing fromrowanaltogether.The migration process is incremental and
rowanis still inefficient in various aspects. However, we believe that the parts which required changes to large amounts of code are behind us, and we can complete the migration with more focused changes. bit-aloo is continuing to work on that even after his GSoC project ended. And he was also accepted as a member of the rust-analyzer team, so congratulations! We would like to thank him for his work, and hope to continue working with him to improve rust-analyzer for everyone.Port std::arch test suite to rust-lang/rust
- Contributor: Sumit Kumar
- Mentors: Jakub Berรกnek, Folkert de Vries
- Final report
The
std::archmodule of the Rust standard library contains various intrinsic functions that provide architecture and vendor-specific functionality. Their implementation lives in the stdarch repository, which is included as a Josh subtree in the main compiler repo (rust-lang/rust).When someone changes the intrinsics in the main repo, breakages can silently creep in, because the main repo does not execute all the
stdarchtests in its CI. That can cause friction when we synchronize the changes between the two repositories. Ideally, we would run all ofstdarch's tests in the main repo to detect any issues as soon as possible.And that is where Sumit came in! Over the course of his GSoC project, he examined the (very!) complex ways the intrinsics are tested in
stdarch, and started porting them over to the main repo. But this was not a matter of copying over a few lines of YAML. The compiler repo uses its own build system (calledbootstrap) and a CI workflow structure that is quite different from thestdarchrepository. Sumit thus had to first understand what is each test suite doing, reimplement it as a part of bootstrap and finally integrate it into the compiler's CI workflows.We run ~90 CI jobs across several hardware architectures, operating systems and OS versions. Getting all that to work while testing vendor-specific intrinsics required a lot of diligent workโฆ and a lot of patience. It took five months for one of the test suites to finally succeed on the main repo's CI, and it required Sumit to completely refactor how the suite worked, for it to be more compatible with bootstrap. As another example, a different test suite that Sumit also got to work required running the tests in an Intel CPU emulator on CI.
Sumit ported most of the
stdarchtest suites tobootstrap, including intrinsics verification against reference C implementations, checks for automatically generated source code being up-to-date, and various unit tests for individual intrinsics and CPU feature detection logic. There is one remaining test suite to port, but the ported tests are already helping us find issues, which is great.You can check Sumit's
rust-langPRs here; notice that he was also contributing to other parts of Rust in the meantime! Sumit's work will help us make LLVM upgrades and land intrinsics changes more easily. Thank you, Sumit!Reorganizing tests/ui/issues
- Contributor: zedddie
- Mentors: Teapot, Kivooeo
- Final report
The goal of this project was to get rid of a very scary place in the Rust compiler's test suite: a directory called
tests/ui/issues. It contained thousands of test files based on historical Rust issues, dating back all the way to 2012. The problem with those tests was that they were named only with an issue number (e.g.issue-37291). When such a test would break, it was quite difficult to figure out what was it even supposed to test, because there was little context attached to it.Even though we already had a GSoC project to tackle this problem last year, due to the sheer amount of uncategorized tests, there were still over four hundred tests left in this directory by the time zedddie started working on this project.
For each test in this directory, zedddie had to first understand what was the test doing and dig through its original GitHub issue and any other related issues and pull requests. Then they had to figure out what would be the best location to move the test under, search for any possible duplicates, come up with a descriptive name for the test (that tends to be very difficult!), and finally add a short description to the test that explains the context of why the test was added in the first place. Rinse and repeat, for hundreds of tests.
zedddie rolled up their sleeves, and categorized over 300 tests in 30 pull requests. Together with other contributors helping out over this summer, zedddie was finally able to remove the last batch of uncategorized tests at the start of August. As zedddie said in their final report: "What is left to do: nothing, tests/ui/issues is gone".
While this work might sound a bit bland, its positive effect on the maintainability of our test suite, and improving the lives of Rust compiler contributors, is considerable. It is also apparently a great way to learn about cool niche edge cases of Rust that most Rust developers might not know about! After migrating the remaining uncategorized UI tests, zedddie continued contributing to the next trait solver and const generics. Thank you very much for helping us finally get rid of
tests/ui/issues, zedddie!Utilize debugger APIs to improve debug info test accuracy and error
reporting
- Contributor: Anthony Bolden
- Mentors: Jakub Berรกnek, Jieyou Xu
- Final report
The Rust debugging experience leaves a lot to be desired. One reason why we struggled to improve it is that many of our debuginfo test suites did not even run in CI for the past few years, as they were difficult to maintain. When something changed in the type visualizers, the implementation details of a standard library type or in debugger internals, someone had to go through tens of tests and manually update them. This was not sustainable, so the test suite rotted.
Luckily for us, Anthony took that affront personally. Even before his GSoC project, he spent considerable effort on improving the quality of debug visualizers of various Rust standard library types, and gained an impressive amount of knowledge about debuggers.
During his GSoC project, he completely overhauled how our debuginfo test infrastructure works, both for LLDB and GDB. Thanks to his improvements, we can now easily "rebless" the reference output when something changes, which makes it much easier to keep our test suite up-to-date. The new tests also record much more information about the internal state of the debugger recorded during the test, which helps with diagnosing issues that cause type visualizers to stop working.
In addition to redesigning the test suite, Anthony also actually managed to re-enable the LLDB tests on both Windows and Linux in our CI again (after several years of being skipped there!). This will allow us to avoid debuginfo regressions and make it easier to improve the Rust debugging experience. Oh, and it goes without saying that while doing all that, he also made numerous improvements to Rust type visualizers. You can find his PRs here.
Anthony's amazing contributions and his deep expertise in debuggers led to him being invited to the Rust Compiler team, which was much deserved. What else can we add, other than: thank you for your awesome work!
XDG path support for rustup
- Contributor: Guicheng Liu
- Mentor: rami3l
- Final report
The support for platform-specific directories (platformdirs) has been a long- standing feature request for rustup, to have more fine-grained filesystem directory choices. This project investigated how that issue could be resolved.
The real complexity of this feature request lies within a decade worth of different assumptions that previous iterations of rustup and cargo have made: it turns out that quite a lot of them are no longer true if we were to implement platformdirs support truly faithfully.
Guicheng first worked on cleaning up the interactions between
rustup self uninstalland$CARGO_HOME/binas a warmup. This issue itself is a very good demonstration of all that compatibility baggage: somehow$CARGO_HOME/binhas become the default binary directory for all things Rust, so rustup ended up installing itself and all its proxies into it. As a result, it has been super annoying to many that everything in$CARGO_HOMEis gone withrustup self uninstall.After that, he started the actual implementation of platformdirs support in rustup. This was no easy task! Not because the code itself was hard to write, but because it takes a lot of effort to figure out what should be the desired behavior in the first place. Also, in order to determine the appropriate platformdirs semantics, some prior research is often required to see how things became what they are today, so the decoupling of different concerns could proceed, and migration paths could be designed accordingly. It was in this sense that this is different from a typical GSoC project, and luckily thanks to the effort he has put into this project, we have not only come up with the final patch, but also discovered and fixed some tiny preexisting issues with this long-untouched aspect of the rustup codebase along the way.
Thank you for digging into this complex topic, Guicheng!
Conclusion
We would like to thank all contributors who have participated in Google Summer of Code 2026 with us! Your contributions helped make Rust better, and introduced you as new members of our community, which is a reason to celebrate. We are looking forward to participating in GSoC again next year!
We would also like to thank Google for organizing the Google Summer of Code program and for allowing us to host a large number of projects every year. And last, but not least, we would like to thank all the Rust mentors who were tirelessly helping our contributors to complete their projects. Without you, Rust GSoC would not be possible.
-
97.5% over a three-year period, if you are wondering (40 out of 41 projects were successful so far). โฉ
-
If you were wondering, then yes, this is actually related to the famous 2038 problem :) โฉ
-
In case you were wondering, the
moldlinker does not support linker scripts required to link Linux kernel modules at the moment, so Vishruth did not compare the performance of Wild againstmoldhere. โฉ
-
- November 10, 2026
-
๐ IDA Plugin Updates IDA Plugin Updates on 2026-11-10 rss
IDA Plugin Updates on 2026-11-10
New Releases:
- btf2ida v0.1.10
- btf2ida btf2ida 0.1.9
- btf2ida btf2ida 0.1.8
- btf2ida btf2ida 0.1.7
- btf2ida btf2ida 0.1.6
- btf2ida btf2ida 0.1.5
- cfiscope v0.1.9
- cfiscope CFIScope 0.1.8
- cfiscope CFIScope 0.1.7
- cfiscope CFIScope 0.1.6
- cfiscope CFIScope 0.1.5
- cfiscope cfiscope 0.1.4
- ida-domain v0.6.0
- idawilli v2026.11.10
- memlens v0.3.13
- memlens v0.3.12
- memlens v0.3.11
- memlens v0.3.10
- memlens MemLens 0.3.9
- memlens MemLens 0.3.8
- memlens MemLens 0.3.7
- memlens MemLens 0.3.6
- memlens MemLens 0.3.5
- oh-my-pi v18.18.7
Activity:
- btf2ida
- 0aa5114c: README: exclude the three copied hook symbols from the coverage figure
- 39506dab: CHANGELOG: v0.1.10
- bdebe8ce: Keep user-set function types; coverage figure stated against real funโฆ
- 3440e37b: CHANGELOG: 0.1.8, 0.1.9
- fa48f5af: Export naming fixes from an independent review: writable sections areโฆ
- 58195319: Ten-second demo: demo/toy_kernel.elf (17 KB, gcc -gbtf, BTF only) witโฆ
- 85dd7f85: CHANGELOG from the release notes
- df0d6d2e: Refuse a module's split BTF when the chosen vmlinux is not its base (โฆ
- 3f012dfb: Name exported functions from __ksymtab on a stripped vmlinux so theirโฆ
- 070d205d: README accuracy pass after an independent review: first try on MemLenโฆ
- c7888873: Version 0.1.5
- e8f77d64: Escape % in the info() dialog text: ida_kernwin.info is printf-style โฆ
- capa
- cfiscope
- 3c3bb67f: CHANGELOG: v0.1.9
- dae59893: Reproduction steps that run as written: bzImage extractor, full commaโฆ
- 42c63045: CHANGELOG: 0.1.8
- 8c38925b: CLI names each site by its call instruction, matching the address colโฆ
- d4bc0f5e: CLI fixes from a review: -json keeps every candidate unless -max-liโฆ
- bd4fa6e6: README: how it works, with the real check and preamble from a bundledโฆ
- 14303369: README: note condensed spacing in the quick-try output
- 50a5dc5f: CHANGELOG from the release notes
- db420c88: README: what you will see, with real command-line output on the publiโฆ
- 89c0f02d: Unexpected errors in any action become one warning plus the tracebackโฆ
- 1248693f: README: a one-minute try on the bundled kCFI test objects (compiler aโฆ
- 28535cfd: Accuracy pass after an independent review: package version matches thโฆ
- ff5c23f5: Command-line scanner: python3 -m cfiscope (summary, -sites, -callerโฆ
- efa7bf1d: Show the plugin's warning instead of a traceback when Targets, Callerโฆ
- ida-domain
- 480f68cf: 0.6.0
- idamcp
- idawilli
- memlens
- e85847f4: CHANGELOG: v0.3.13
- dfee7527: Exporter and patch scan fixes from a review: linker markers no longerโฆ
- 979aa7a8: CHANGELOG: v0.3.12
- 919e5874: Ask before importing an ISF built for another kernel. Version 0.3.12
- 2865f0d2: CHANGELOG: v0.3.11
- c25a70b9: Clear errors on truncated files; install and verification notes; coveโฆ
- 488cab94: CHANGELOG: 0.3.10
- 40fd4e70: Patch scan: see hooks after the sealed ENDBR NOP; refuse non-x86-64 Eโฆ
- 60b55779: CHANGELOG from the release notes
- 990517b8: Handler lookup reads only up to the end of the hook page's segment
- 19c915cf: Patch list names the handler each copied hook page calls (ftrace, kprโฆ
- 5e275253: Unexpected errors in any action become one warning plus the tracebackโฆ
- e1c92350: Patch scan: absolute-address inline hooks (jmp [rip+0], movabs + jmp/โฆ
- 3205774e: README: function prototypes come from the kernel's BTF via btf2ida (mโฆ
- 31048975: README: what you get, with real output from the demo kernel.elf (patcโฆ
- 3664131a: README accuracy pass after an independent review: say exactly which hโฆ
- ebda7c53: Version 0.3.5
- dc904ba4: Escape % in the info() dialog text: ida_kernwin.info is printf-style โฆ
-
๐ backnotprop/plannotator v0.28.61 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.60 | Click a word to highlight it, a one-time Themes dialog, Settings โ Rows rebuilt, tell your agent how you want your rows, starred threads as pills above the list, a pill for new messages out of view, a half-circle face picker with ten Glass colours, a new phone sidebar and reply box
v0.28.59 | A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
v0.28.58 | Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
v0.28.57 | Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 | Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 | Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 | Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings โ Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 | Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings โ Decision data, Plannotator reloads itself after an update
v0.28.51 | Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 | A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 | A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code,--titlefor review and annotate
v0.28.48 | Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster InboxWhat's New in v0.28.61
TL;DR
- Fixed: Updates now update the Claude Code plugin too
- New: An agent's chosen face shows on every icon of it
- New: Filter the Inbox list by pull request state
- Fixed: Modern dark shows section bands and the Reply button
- Fixed: One conversation no longer shows as two agents
0.28.61 is a small patch release. Its main fix makes an update bring the Claude Code plugin along with the app, and the Inbox now tells you when your plugin is behind. It has 10 PRs, all from @backnotprop.
Updates now update the Claude Code plugin too
An update could finish with the app on the new version and the Claude Code plugin left on its old one, with nothing to tell you. The install script updates the plugin only when it can run
claude, and it looked forclaudeonly on yourPATH. Claude Code's own installer putsclaudein~/.local/bin, and that folder is often missing from thePATHan update runs with: for example when you pressed Update now in an Inbox or review window that was started from an app, at login or over SSH. The script then wrote the manual steps into the update log and reported success.If you updated that way, your app is current but your Claude Code sessions may still run an older plugin. Features that need a newer plugin, such as Side (Ask AI) in the Inbox and session names, were then missing with no reason given.
The install script now also looks in
~/.local/binand~/.claude/local, the folders Claude Code installs itself into, on macOS, Linux and Windows. From the next update on, Update now in the Inbox also hands the installer thePATHof your login shell, which coversclaudeinstalled with npm or Homebrew. #3070The sidebar tells you when your plugin is behind
The sidebar's "Reload Claude Code" row used to count only sessions that a reload alone would fix, so it read 0 when the plugin itself was old. It now also counts sessions whose plugin needs an update, and it opens the steps in Settings โ Agents: update the plugin, then run
/reload-plugins. Once the plugin is updated, the row stays only for the reload. When every session is reloaded, the row is gone. #3071If your plugin is already behind
Updating to 0.28.61 repairs it: this update finds
claudeand brings the plugin up to date by itself. Afterwards, run/reload-pluginsin each Claude Code session that is open, or restart Claude Code. The sidebar's "Reload Claude Code" row lists the sessions that still need it.If the plugin is still behind after the update, run these two commands in a terminal, then
/reload-plugins:claude plugin marketplace update plannotator claude plugin update plannotator@plannotator --scope userAn agent's chosen face shows on every icon of it
The face you pick for an agent in the sidebar's Agents section (its own mark, a Glass colour, Transparent or Face) now shows on every icon of that agent, with no reload: list rows, message authors, the thread's participants, the reply box's "to" pill, the
@menu, New message, Board cards and more. Every Inbox window open on this computer shows it at once, including a phone or tablet connected to it. A face belongs to one conversation, so two Claude Code sessions keep two faces. A conversation that goes on under a new session id keeps its face, and so does an agent that has ended, so its old threads look as they did.Places that name a kind of agent rather than one agent, such as Settings and "New Claude Code session", keep the plain mark. No row changes size. #3059
Filter the Inbox list by pull request state
The list filter has a Pull request group: Open, Draft, Merged, Closed, Has a PR and No PR. You can pick several. It reads the same pull request marks the rows already show, and appears once a thread in the list has a pull request. A thread whose pull request has not been read yet counts under Has a PR only. #3020
Modern dark shows section bands and the Reply button
On Plannotator Modern in dark mode, several surfaces had the same colour as the card behind them, so they could not be seen: the list's section bands (Waiting on you, New since you looked and the others), the Reply and open questions buttons at a thread's foot, row hovers, chips, menus, and in plan review the inline code chips, table headers and toolbar buttons. Each one now stands a step off the card, about as far as in Plannotator dark. Modern light and every other theme are unchanged. The Themes dialog's two Modern dark pictures are retaken with the new greys. #3058, #3061
One conversation no longer shows as two agents
0.28.60 joined a Claude Code conversation that moved to a new session id into one row in Agents, but some still showed twice: the same name on two rows, both selected when its thread was open. The plugin now finds Claude Code's hand-over record anywhere in the old conversation, and it follows a chain of several hand-overs. Sessions already running pick this up after the update without a restart. Two separate sessions in one folder are still two agents. #3057
Additional Changes
- A signed-out machine says what to do. In New message's folder menu, a linked machine where Claude Code or Codex reads as signed out now shows what to do under its line: sign in on that machine, or restart Plannotator from that machine's own Terminal when it was started over SSH. #3060
- Diff library 1.6.4. The library that draws code review diffs is updated to 1.6.4. Highlighting stays the same, and nothing you see changes. #2990
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The install script above also updates the plugin when
claudeis on your PATH. Otherwise, in a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotator --scope userThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginโ Installed โ plannotator โ Update now.Pi:
pi update npm:@plannotator/pi-extensionOpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.
What's Changed
- ui 0.63.0 and core 0.25.22: versions for what is already on main by @backnotprop in #3054
- Agents: find a hand-over record anywhere in the old transcript by @backnotprop in #3057
- Modern dark: give the quiet surfaces a step off the card, so section bands and the Reply button show by @backnotprop in #3058
- Inbox: an agent's chosen face on every icon of it, in every window by @backnotprop in #3059
- Themes dialog: retake Modern dark's pictures with its new greys by @backnotprop in #3061
- Say what to do under a signed-out machine's line in the folder menu by @backnotprop in #3060
- Inbox list filter: turn the Pull request group on by @backnotprop in #3020
- Pierre diffs 1.6.4, highlighting stays on Shiki by @backnotprop in #2990
- Updates find claude in its own install folders, so the plugin update is not skipped by @backnotprop in #3070
- Inbox: Reload Claude Code also counts sessions whose plugin needs an update by @backnotprop in #3071
Full Changelog :
v0.28.60...v0.28.61 -
๐ r/LocalLLaMA Apple has new Mac app coming to make running local AI models easy rss
| submitted by /u/themixtergames
[link] [comments]
---|--- -
๐ r/LocalLLaMA The Surprising Effectiveness of Deleting Weights in LLM Post-Training rss
| How little of a pretrained large language model (LLM) has to change for it to acquire new capabilities? We find that zeroing fewer than 0.05% of its weights, with no other modification, matches full fine-tuning (FFT) at scale across three LLM post-training regimes: reinforcement learning with verifiable rewards, supervised fine-tuning, and on-policy distillation. Our method, Deletion Tuning, learns a binary mask over the gate projection of transformer blocks. Two practical advantages follow: the trained mask is hundreds to thousands of times smaller than the corresponding FFT checkpoint, and Deletion Tuning forgets far less, which addresses a central challenge in continual learning. Under reinforcement learning, its prior-task accuracy stays near the base level while FFT, LoRA, and random sparse fine-tuning lose up to 5.4 points. To understand why masking alone suffices, we analyze the geometry of the learned weight changes under reinforcement learning using stable rank, spectrum drift, and principal-weight overlap. Compared with LoRA and random sparse fine-tuning, Deletion Tuning is closest to FFT across the three measures. Edit: Links Github: https://github.com/agentic-learning-ai-lab/deleting-weights HuggingFace: https://huggingface.co/Jacklu0831/deletion-tuning-masks Blog: https://agenticlearning.ai/deleting-weights/ Poster: https://cdn.agenticlearning.ai/dfb9bf24cee86b6d/neurips2026-poster-deleting-weights.pdf submitted by /u/Thrumpwart
[link] [comments]
---|--- -
๐ HexRaysSA/plugin-repository commits sync repo: +3 plugins, -3 plugins, +15 releases, -3 releases rss
sync repo: +3 plugins, -3 plugins, +15 releases, -3 releases ## New plugins - [btf2ida](https://github.com/nightshift-labs-ai/btf2ida) (0.1.4, 0.1.3, 0.1.2, 0.1.1, 0.1.0) - [cfiscope](https://github.com/nightshift-labs-ai/cfiscope) (0.1.3, 0.1.2, 0.1.1, 0.1.0) - [memlens](https://github.com/nightshift-labs-ai/memlens) (0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0) ## New releases - [FridaTools](https://github.com/ys1231/idafridascript): 0.0.6 ## Removed plugins - bindiff - binexport - xray -
๐ HexRaysSA/plugin-repository commits sync: search GitHub code with SEARCH_GH_TOKEN instead of GITHUB_TOKENโฆ rss
sync: search GitHub code with SEARCH_GH_TOKEN instead of GITHUB_TOKEN (#47) GitHub rejects code search with the workflow's GITHUB_TOKEN (429), even the first request of a job, while it accepts the same requests with a personal access token. In the diagnostic runs 42844526756 and 42846362910, GITHUB_TOKEN got 1 of 24 search requests through and a personal access token 24 of 24, taking turns on the same runners. The 429 waits of two jobs counted down to the same moment, so the limit applies to more than one job's GITHUB_TOKEN. The snapshot step now passes the fine-grained personal access token from the SEARCH_GH_TOKEN secret to hcli as GITHUB_TOKEN. A comment there says what kind of token it is, who created it, when it expires, and what to do then. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FYvq4G9AeRnJHoeTaDGHob -
๐ exe.dev Download the exe.dev Mac App rss

Download the exe.dev Mac app at https://exe.dev/mac. Users of the iOS app will find it a familiar place to manage all your VMs and all the Shelley conversations on those VMs, as well as a no-nonsense terminal.
For those keeping track at home, you can access exe.dev via:
ssh exe.dev- The web
- The Android app
- The iOS app
- The Mac app
- We canโt tell you about #6 yet, but reach out if youโve tried an AI personal assistant and thought, โbut what if this actually worked?โ
All the platforms have their trade-offs. I personally use four of the above daily to work on exe.dev as well as other projects. In other words, the number of platforms is not a Conway's Law reflection of exe.dev as a company, but rather a belief that good infrastructure pairs well with good tools. Several folks have built their own systems to manage their VMs and conversations; we are thrilled that people are customizing software to fit their needs.
I'll leave you with a video of using the app to record your screen:
-
๐ r/LocalLLaMA MiniMax H3-Image Released, an Open-Weight Image Model built on H3 rss
| submitted by /u/MagicZhang
[link] [comments]
---|--- -
๐ HexRaysSA/plugin-repository commits sync: skip archives that hold no valid plugin, via ignored-urls.txt (โฆ rss
sync: skip archives that hold no valid plugin, via ignored-urls.txt (#46) Add ignored-urls.txt, seeded with 852 archive URLs that sync run 42562649155 downloaded and rejected. The sync gives it to hcli with --with-ignored-urls-list (ida-hcli >= 0.28.0), so hcli does not download these archives. scripts/update_ignored_urls.py reads the "no valid plugin in archive" entries from the hcli log and appends the new URLs under a "# Discovered on" line. Rejected archives were about 9 of the 10.6 GiB that the sync downloads, and caching them made the hcli cache 13.6 GB, past the 10 GB Actions cache limit, so the cache never restored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FYvq4G9AeRnJHoeTaDGHob -
๐ earendil-works/pi v1.5.2 release
New Features
- Fork sessions whose folder is gone : when a session's original folder was moved or deleted, you can now fork it into the current folder instead of only continuing, so later resumes no longer ask. See Continue or switch sessions.
Changed
- When a session's working directory no longer exists, for example after the project folder was renamed, interactive mode now offers
Continue,Fork, orCancelinstead of only continuing.Continueruns the session in the current directory without storing the choice, as before;Forkcopies it into the current directory as a new session with a new ID, like--fork, so the next resume no longer asks. This applies at startup (--session,--resume), to/resume, to/import, and toctx.switchSession()from extensions (#11975 by @petrroll, fixes #11060)
Fixed
- Fixed
/importof a session whose working directory no longer exists leaving a copy in the session directory, and continuing it leaving a second copy with the same ID (s.jsonlands-1.jsonl); the failed copy is now removed (#11975 by @petrroll, fixes #11060) - Fixed Anthropic OAuth requests reporting an outdated Claude Code version
-
๐ backnotprop/plannotator v0.28.60 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.59 | A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
v0.28.58 | Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
v0.28.57 | Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 | Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 | Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 | Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings โ Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 | Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings โ Decision data, Plannotator reloads itself after an update
v0.28.51 | Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 | A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 | A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code,--titlefor review and annotate
v0.28.48 | Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
v0.28.47 | Board lanes, Settings โ Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cardsWhat's New in v0.28.60
TL;DR
- New: Click a word to highlight it, in plan review, annotate and documents opened from an Inbox thread
- New: A one-time Themes dialog, shown about 15 seconds after the Inbox opens
- New: Settings โ Rows is rebuilt: your own list stays in view, plain choices, Undo, a Dense look and a Pull requests switch
- New: Tell your agent how you want your rows, from Settings โ Rows or with
plannotator inbox rows - New: Starred threads as pills above the list, when you turn on "Keep starred above the list"
- New: A pill counts new messages that arrive out of view, and a press takes you to them
- New: A half-circle picker for an agent's icon, with ten Glass colours
- New: On a phone: a new sidebar sheet, a new reply box, and a picker sheet for who gets your message
- New:
/sidein the reply box's/list, and comment boxes you can drag - Changed: One-time pop-ups are 40 minutes apart, not one a day, and come in a new order
- Changed: Pictures in a message show whole, with "Show all" for very long ones
- Changed: New message offers "Send to that thread" when the name is already used
- Fixed: A drag you let go of outside the text now makes its highlight, and three more highlighting bugs
- Fixed: Replies reach a Claude Code conversation that went on under a new session id, and it shows as one row in Agents
0.28.60 is a large release, mostly for the Plannotator Inbox, with a round of work on highlighting text in plan review and annotate. It has 28 PRs, all from @backnotprop. Three of them are test fixes.
Plannotator Inbox
One-time pop-ups come sooner, and Themes is new
The Inbox shows each of its one-time dialogs once. They used to be held to one a day, and a tab left open for hours or days never showed the next one until a reload. Now they are 40 minutes apart, and a tab that stays open shows them with no reload.
A new Themes dialog offers Plannotator Original, Plannotator Modern or "Choose your own", each with real light and dark pictures. Only someone still on the default theme sees it. It opens about 15 seconds after the Inbox opens, after the tab icon dialog for someone who still has that one to see.
The order is new too. Grouping, Rows, Sound and Voice follow Themes on the same day, each only when it applies to you. Snooze, the Board, the Checklist and Bro mode come on later days. #3015, #3051
Settings โ Rows, rebuilt
The page now shows your own six newest threads and keeps them in view while you choose: beside the choices on a wide window, at the top on a phone. Pick a look to start from (Balanced, Minimal, Detailed, or the new Dense), then change single things in plain words such as Spacing, Time and Agent icons. More are under "More choices".
Each change is named beside the list, for example "Changed: Spacing โ Compact", with Undo. Reset to default puts the defaults back. A new Pull requests switch hides the PR mark on rows; it is on by default. No saved look changes with this update. #3043
Tell your agent how you want your rows
Under the list on Settings โ Rows there is a box: "Or tell your agent how you want your rowsโฆ". Send starts an ordinary thread to a running agent and keeps you on the page. The rows change in front of you, and the page says who did it, for example "Claude Code changed: Spacing โ Compact ยท Undo".
With no agent running, the box offers Copy so your words are not lost. Agents make the change with
plannotator inbox rows(see For agents below). #3049New messages never move the list
Pressing Show on the "N new" line no longer scrolls the list. New rows in view light up where they are. A small pill at the edge of the list counts the new rows that are out of view, above or below, whichever side has more. Press it to go there. The list never moves by itself. #3035
Starred threads as pills above the list
The list's โฎ menu has a new item, Keep starred above the list. It is off until you tick it. When on, each starred thread is a pill above the list with its name and its state, and the sidebar's Starred section is not drawn. Click a pill to open the thread, or its star to unstar. A right-click offers Unstar, Move left, Move right and Copy link. When there are more pills than fit in two lines, "+N" lists the rest. #3038
Pictures in a message show whole
A picture in a message is now drawn whole: never wider than the message, never taller than about 70% of the window, and never enlarged. A phone screenshot is no longer stretched and cut off. A very long picture, such as a full-page capture, shows its top with a "Show all" button, and "Show less" once it is open. A click on a picture still opens the viewer. The thread also stops moving as pictures load. #3045
On a phone
The sidebar sheet is one scroll now, with no small scroll window inside it. Names show in full on up to two lines, headings stay in view and fold their section, and Settings, Feedback and light/dark share one row at the foot. A Close button sits at the top. #3036
The reply box and New message are one rounded card above the keyboard, with a round Send button. Who gets your words is picked from a sheet that rises from the bottom and lists running sessions, then "Start a new session". Project rows no longer show "+" on a phone. #3030
Agents
One agent could show as two rows in the sidebar after Claude Code moved its conversation to a new session id. It is one row now. Your reply in a thread the old session owned also reaches the conversation under its new id, where before it waited until the agent wrote in that thread again. #3039, #3019
Claude's icon is calmer: it stays still and makes one small move every few seconds. There are ten Glass colours. Rest the pointer on an agent's icon and its faces fan out in a half circle to pick from; on a phone, press and hold the icon. A plain click still steps through the faces. #3047
Agents can now be hidden like other sidebar items, from the sidebar's right- click menu or the Customize sidebar panel. Hiding it only removes the section; agents keep running. #3041
New message: send to the thread that already has the name
A thread name that another open thread in the project already had was only refused. The notice now shows that thread as a pill, with its agent's icon and its state, and a Send to that thread button. Pressing it sends your message and its files as a reply there and opens that thread. Changing the name still works as before. #3034
Comment boxes and /side
In the comment box on highlighted text, typing
/listed nothing and the box could not be moved. Now/lists your skills, and you can drag the box by the quoted words at its top. #3037The comment box over an open artifact can be dragged by its top strip and resized by a corner. It keeps its place and size while that artifact is open, and a double-click on the strip puts it back. #3040
The reply box's
/list has a built-insiderow. Pick it and the side chat opens with what you typed in its box, not sent. Nothing goes to the thread. #3032Modern dark, and Settings โ Agents
Plannotator Modern has its final dark colours. Its blue and its fonts are the ones its light side uses, and the light side is unchanged. #3028
In Settings โ Agents, a switch that is off now has one grey line under it that says what off means, for example "Off: Codex can't send you messages or read your replies here." The lines show only under agents found on this computer. #2894
Plan review and annotate
Click a word to highlight it
In Select, one click on a word now highlights it, the same as dragging over it. Before, a click on text did nothing. A word joined by hyphens or apostrophes, such as "Dead-lettered" or "user's", is taken whole. Double-click and triple-click still work as the browser does them, and drags are unchanged.
This is on in plan review, in annotate, and in documents and files opened from an Inbox thread. It is off in the messages of an Inbox thread, where dragging over words works as before. A click on a link, a button, a picture or an existing highlight does what it did. #3046
Drags that made no highlight
Four highlighting bugs are fixed:
- Letting go of a drag outside the text now makes the highlight. It ends where the pointer left the text, never at the end of the document.
- A drag that the browser left with nothing selected now selects from the press to the pointer.
- A long drag that scrolls the page keeps its highlight. Before, it was removed the moment it was made.
- A click with a slight wobble no longer leaves a one-letter highlight.
For agents
send_messagecan now add one short hint as the last line of its answer. One says a pull request linked in the message is not attached to the thread, and how to attach it. The other says a question with choices can carryPros:,Cons:andPrototype:lines. A session gets each hint once, and at most one per send. The message itself always goes through unchanged. #3044plannotator inbox rowsprints every row option and its value now.plannotator inbox rows set name=value โฆchanges options in one save, andplannotator inbox rows undoputs the last change back. A wrong name or value changes nothing. #3049Fixes
- End reaches the bottom of a long guided review. In a very large review, End could stop 50 to 100 px above the end. It now stops at the end. #3052
- An open page keeps saving after the Inbox restarts. A page left open across a restart looked whole, but its replies and drafts were refused and threads stayed unread until a reload. It now goes on with no reload. #3026
- A page whose first load fails recovers by itself. When the first read of the list failed, the page stayed empty, or stopped showing new messages, until a reload. It now tries again until the list lands. #3022
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The install script above also updates the plugin when
claudeis on your PATH. Otherwise, in a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginโ Installed โ plannotator โ Update now.Pi:
pi update npm:@plannotator/pi-extensionOpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.
What's Changed
- Settings โ Agents: say what a switch left off means by @backnotprop in #2894
- Inbox: an open page keeps writing after the same Inbox restarts by @backnotprop in #3026
- Plannotator Modern: dark takes the PaulMillr palette by @backnotprop in #3028
- Inbox: a built-in /side command takes what you typed to the side chat by @backnotprop in #3032
- Inbox: a reply reaches a conversation that goes on under a new session id by @backnotprop in #3019
- Launch permission e2e: time the second Enter from the card's focus by @backnotprop in #3033
- Phone sidebar: one scroll, full names, folding sections by @backnotprop in #3036
- Agents: list a conversation that got a new session id once by @backnotprop in #3039
- Inbox comment card: show the skill list, and drag the card by its words by @backnotprop in #3037
- Inbox: starred threads as pills above the list by @backnotprop in #3038
- Projects sort phone test: measure once the sheet has stopped sliding by @backnotprop in #3048
- New message: send to the thread that already has the name by @backnotprop in #3034
- Inbox: Agents can be hidden from Customize sidebar by @backnotprop in #3041
- Inbox: two quiet hints on send_message's answer, each once per session by @backnotprop in #3044
- Inbox one-time dialogs: shown on a tab left loaded, 40 minutes apart, no polling by @backnotprop in #3015
- Inbox: read the first list again when it fails, so the page still listens by @backnotprop in #3022
- Inbox agent icons: calmer Claude, ten Glass colours, and a face picker on the icon by @backnotprop in #3047
- Inbox: pictures in a message are drawn whole; Show all for very long ones by @backnotprop in #3045
- Open-stays-put test: give the Show light test its own time by @backnotprop in #3050
- Artifact comment box: drag it and resize it, per artifact by @backnotprop in #3040
- Inbox list: show a small pill when news arrives out of view by @backnotprop in #3035
- Inbox: the one-time themes dialog, and the approved order of the one-time dialogs by @backnotprop in #3051
- Inbox on a phone: one composer card, the agent in its row, and a picker sheet by @backnotprop in #3030
- End in a long review stays at the end while its files settle by @backnotprop in #3052
- Settings > Rows: your own list stays in view, plain choices, Undo, and a Pull requests switch by @backnotprop in #3043
- Settings > Rows: tell your agent how you want your rows by @backnotprop in #3049
- Highlighting: release outside the text, caret drags, long drags by @backnotprop in #3042
- Select: one click on a word highlights it by @backnotprop in #3046
Full Changelog :
v0.28.59...v0.28.60 -
๐ roboflow/supervision supervision-0.31.6 release
v0.31.6: Key points on empty frames, zero-shot Transformers results, and
drawing on grayscale and palette scenes
A fixes-only patch: fewer crashes on empty frames, more Transformers models that load, and annotators that draw on any scene.
- KeyPoints filters stop raising
TypeErroron video frames with no people. - Grounding DINO and RF-DETR segmentation results load, and OWLv2 detections get real class names.
DetectionsSmootherkeeps unconfirmed tracks as separate boxes instead of one averaged box.- Labels and images draw on grayscale, BGRA and Pillow palette scenes.
- Integer boxes no longer wrap around, and narrow-integer mask shifts no longer crash.
It's a drop-in upgrade, but check the Migration guide if you use ViTPose class IDs, YOLO-NAS confidences or compare stored outputs.
โจ Spotlights / highlights
Key points survive empty frames
sv.KeyPoints.empty()now holds emptyclass_id,keypoint_confidenceanddetection_confidencearrays instead ofNone, and selecting key points from it returns an empty result. Pose connectors such assv.KeyPoints.from_ultralyticsreturn it for every frame without people, so the documented filters raisedTypeErrormid-video. ViTPose poses fromsv.KeyPoints.from_transformersnow all get class ID0instead of0..N-1, andsv.KeyPoints.from_yolo_naskeeps each pose score asdetection_confidence, sowith_nmsworks on YOLO-NAS poses. (#2911, #2920, #2914, #2909)import supervision as sv key_points = sv.KeyPoints.empty() # what pose connectors return for an empty frame len(key_points[key_points.detection_confidence > 0.5]) # 0.31.6: 0 -> correct, an empty frame has nothing to filter # 0.31.5: TypeError: '>' not supported between instances of 'NoneType' and 'float' # -> bug, the confidence arrays were None key_points[:, [0, 1]].xy.shape # 0.31.6: (0, 0, 2) -> correct, no poses so nothing to select # 0.31.5: IndexError -> bug, selection crashed on an empty frameZero-shot and RF-DETR results from Transformers
sv.Detections.from_transformersnow reads results ofpost_process_grounded_object_detection. Grounding DINO results used to raiseAttributeError: 'list' object has no attribute 'cpu'; they now load with the matched phrases as class names andclass_id=None. OWL-ViT, OWLv2 and OmDet- Turbo keep the text query index asclass_idand take class names fromtext_labels;id2label=model.config.id2labelused to name themLABEL_0,LABEL_1. RF-DETR instance segmentation results requested withreturn_binary_maps=Trueload too. If a result has no recognized fields, the error now points to the officialrfdetrpackage, whosepredict()returnssv.Detectionsdirectly. (#2913, #2912, #2921)import supervision as sv # results = processor.post_process_grounded_object_detection(...)[0] # Grounding DINO detections = sv.Detections.from_transformers(results) detections.data["class_name"] # matched phrases, e.g. ["a cat", "a dog"] detections.class_id # NoneDetectionsSmootherkeeps unconfirmed tracks apartDetections with a negative
tracker_id, which some trackers use for tracks they haven't confirmed yet, now pass throughsv.DetectionsSmootherunchanged. They used to share one history and come back as a single averaged box. Frames where only some tracks keep oriented-box corners no longer raise a merge error. (#2926, #2923)import numpy as np import supervision as sv smoother = sv.DetectionsSmoother() detections = sv.Detections( xyxy=np.array([[0, 0, 10, 10], [100, 0, 110, 10]], dtype=float), tracker_id=np.array([-1, -1]), # not confirmed by the tracker yet ) smoother.update_with_detections(detections).xyxy.tolist() # 0.31.6: [[0.0, 0.0, 10.0, 10.0], [100.0, 0.0, 110.0, 10.0]] # -> correct, two objects stay two boxes # 0.31.5: [[50.0, 0.0, 60.0, 10.0]] # -> bug, both were averaged into one phantom boxDrawing on grayscale, BGRA and palette scenes
sv.RichLabelAnnotatorannotates grayscale scenes, shaped(H, W)or(H, W, 1)or given as a Pillow grayscale image, andsv.draw_imagedraws on grayscale and BGRA scenes. Boxes and labels on Pillow palette images now come out in the colors you asked for, not black. Labels such as0orFalseshow up as text instead of empty boxes. (#2916, #2906, #2907, #2892)import numpy as np import supervision as sv scene = np.zeros((100, 100), dtype=np.uint8) # grayscale frame detections = sv.Detections( xyxy=np.array([[10.0, 10.0, 60.0, 60.0]]), class_id=np.array([0]) ) sv.RichLabelAnnotator().annotate(scene, detections, labels=["car"]).shape # 0.31.6: (100, 100) -> correct, grayscale scene annotated in place # 0.31.5: TypeError: color must be int or single-element tuple # -> bug, grayscale scenes were not supported๐ Migration guide
Nothing was removed, renamed or deprecated, but a few fixes change what existing code returns:
- Different values: ViTPose poses from
KeyPoints.from_transformersall getclass_id0; usenp.arange(len(key_points))if you used it as a per-person index. (#2914)KeyPoints.from_yolo_nas(...).as_detections().confidencereports the model score instead of the mean key point confidence. (#2909) OWL-ViT, OWLv2 and OmDet-Turbo class names come fromtext_labels, even when you passid2label. (#2913)xywh_to_xyxyreturnsint64for integer input, orfloat64when a corner exceeds theint64range. (#2922) - Different rows and shapes:
DetectionsSmootherreturns unconfirmed detections as their own rows, after the smoothed tracks. (#2926)KeyPoints.empty()fields are empty arrays, notNone. (#2911) With OpenCV,resize_image,scale_imageandletterbox_imagekeep(H, W, 1)input as(H, W, 1). (#2905) - Different counts, colors and labels:
PolygonZoneno longer counts anchors in(-1, 0). (#2924)ColorPalette.from_matplotlibrounds colors liketo_hex, so some move by one level. (#2903) Labels such as0orFalse, drawn as empty boxes before, now show their text. (#2892) - Without OpenCV:
mask_to_polygonsreturns polygons in OpenCV'sRETR_TREEorder (#2900), image writes save most non-uint8images instead of failing, though multi-channel non-uint8TIFFs still fail (#2901), andHeatMapAnnotatorcolors move closer to OpenCV (#2904). Regenerate stored references made with the NumPy fallback. - New error: drawing on a Pillow palette image whose palette is full and has no opaque entry raises
ValueErrorinstead of drawing wrong colors. (#2907)
๐ Notable changes
๐ฑ Changed
Detections.from_transformerssuggests the officialrfdetrpackage when a result has no recognized fields, and its docs recommendrfdetrfor RF-DETR models. (#2921)
๐ง Fixed
Key points
KeyPoints.empty()holds emptyclass_id,keypoint_confidenceanddetection_confidencearrays instead ofNone, so confidence filters no longer raiseTypeErroron frames without poses. (#2911)- Selecting key points from an empty result, as in
key_points[:, [0, 1]], returns an empty result instead of raisingIndexError. (#2920) KeyPoints.from_transformersgives every ViTPose pose class ID0; with the old0..N-1IDs, keypoint mAP against person targets scored too low and per-classEdgeAnnotatoredges raisedValueError. (#2914)KeyPoints.from_yolo_naskeeps each pose score asdetection_confidence, sowith_nmsno longer raisesValueErroron YOLO-NAS poses. (#2909)
Model connectors
Detections.from_transformersreads zero-shot results frompost_process_grounded_object_detection: Grounding DINO no longer raisesAttributeError, and OWL-ViT, OWLv2 and OmDet-Turbo take class names fromtext_labels. (#2913)Detections.from_transformersreads RF-DETR instance segmentation results withreturn_binary_maps=True, pairing binary maps withsegments_infoby position; an empty(0, H, W)stack gives empty masks. (#2912)Classifications.from_clipandClassifications.from_timmaccept bfloat16 outputs, including mixed-precision inference, and return float32 probabilities for them. (#2894)
Tracking, zones and box math
DetectionsSmootherreturns detections with a negativetracker_idunchanged instead of averaging them into one box; when those rows carry oriented corners, confirmed tracks without corner history get their smoothed axis-aligned bounds as corners. (#2926)DetectionsSmootherreturns all tracked boxes when only some smoothed tracks keep oriented corners, using smoothed axis-aligned bounds instead of raising a merge error. (#2923)PolygonZoneexcludes negative subpixel anchors before rounding, so an anchor just outside the top or left edge is no longer counted as pixel zero. (#2924)xywh_to_xyxypromotes integer coordinates before adding widths and heights: auint8box[200, 20, 100, 40]becomes[200, 20, 300, 60]instead of wrapping its right edge to44. (#2922)move_maskscomputes slice bounds without integer overflow, so narrow integer offsets work on larger frames and no-overlap shifts with narrow or unsigned integer offsets return empty masks instead of raising. (#2918)JSONSinkkeeps an exception raised inside awithblock when writing or closing the file also fails; the cleanup error is logged. (#2902)
Annotators and colors
RichLabelAnnotatorannotates grayscale scenes,(H, W),(H, W, 1)or Pillow grayscale modes, instead of raisingTypeErrororValueError. (#2916)- Annotators draw the requested colors on Pillow palette images (
P,PA) instead of other colors or black. (#2907) draw_imagedraws on grayscale and BGRA scenes instead of raising a NumPy broadcast error. (#2906)LabelAnnotatorandRichLabelAnnotatordraw labels such as0,np.int64(0),0.0andFalseas text instead of empty background boxes. (#2892)ColorPalette.from_matplotlibrounds colors to 8-bit values as Matplotlib'sto_hexdoes instead of truncating them. (#2903)
Images and the NumPy fallback without OpenCV
resize_image,scale_imageandletterbox_imagereturn(H, W, 1)for(H, W, 1)input on OpenCV installs too, andtint_imageandgrayscale_imageaccept(H, W, 1)images. (#2905)- Image writes without OpenCV, such as
ImageSink.save_imageand dataset exports, keep 16-bit PNGs and save a saturated 8-bit copy for JPEG, BMP and WebP, instead of raisingTypeErroror returningFalse. (#2901) mask_to_polygonslists polygons in OpenCV'sRETR_TREEorder without OpenCV too, and one- and two-pixel contours areint32. (#2900)HeatMapAnnotatorcolors without OpenCV follow OpenCV's float32 HSV-to-BGR arithmetic instead of coming out one level off. (#2904)create_batchesyields each full batch before consuming the next item, so stopping early leaves the rest of the source intact. (#2893)
๐ Docs
- New how-to section on attaching tracker IDs back to key points in Track Objects. (#2896)
๐ Contributors
Welcome to our first-time contributors Mohammad Sohail Shaikh, Vlad Voropaev, Ahmet Mert รzacar and peterolkhov!
- Oke Iyanuoluwa Enoch (@Iyanuoluwa007, LinkedIn) โ drawing on grayscale, BGRA and Pillow palette scenes, selecting key points from empty results, and OpenCV-matching contours, image writes and HSV conversion in the NumPy fallback.
- Mohammad Sohail Shaikh (@sohailshk, LinkedIn) โ kept YOLO-NAS pose scores, gave
KeyPoints.empty()empty arrays, and kept unconfirmed tracks out ofDetectionsSmootheraveraging. - NIKHIL (@Nikhi00718, LinkedIn) โ loaded zero-shot and RF-DETR segmentation results in
from_transformersand fixed ViTPose class IDs. - Vlad Voropaev (@voropaevv, LinkedIn) โ fixed
DetectionsSmootheron mixed oriented-box tracks andPolygonZoneedge anchors. - Mohammad Hijjawi (@MohammadHijjawi97, LinkedIn) โ drew falsy labels as text and rounded Matplotlib palette colors like
to_hex. - A Aswanth Raj (@aswanth-07, LinkedIn) โ accepted bfloat16 classification outputs and fixed overflow in
move_masks. - Devulapalli Naga Sri Vaishnavi (@Vaishnavi220506, LinkedIn) โ kept
withblock errors inJSONSinkand madecreate_batchesstop consuming early. - peterolkhov (@peterolkhov) โ fixed integer overflow in
xywh_to_xyxy. - Kari Pikkarainen (@kari-pikkarainen, LinkedIn) โ wrote the how-to on attaching tracker IDs to key points and corrected the contributing guide.
- Ahmet Mert รzacar (@AhmetMert01) โ type-checked the docstring example tests.
- Jirka Borovec (@Borda, LinkedIn) โ pointed
from_transformersusers torfdetrand prepared the release.
Automated contributions: dependabot, pre-commit.ci
Full changelog :
0.31.5...0.31.6
Co-authored with/oss:release. - KeyPoints filters stop raising
-
๐ HexRaysSA/plugin-repository commits rename repos due to migrations rss
rename repos due to migrations from hexrays-plugin-contributions -
๐ tintinweb/pi-subagents v0.23.2 release
New
- Partial README translations in Simplified Chinese, Japanese and Korean (
README.zh-CN.md,README.ja.md,README.ko.md). They cover the intro, Features, Install, Quick Start and the/agentscommand, and link to the English README for everything else. A language switcher sits at the top of each README.
Fixes
- The conversation viewer honors
tui.altScreen.top/tui.altScreen.bottom(#438). The fullscreen observer's scroll-to-top and jump-to-latest keys, and the jump-to-latest divider label, now resolve through your keybindings. Before, a remap inkeybindings.jsonleft the observer on the stockCtrl+Home/Ctrl+End.Home/Endstill work as aliases, andCtrl+Home/Ctrl+Endnow also scroll in the windowed viewer.
QA
- Automated: 2546 tests passed, including 95 scripted end-to-end tests (real pi sessions, scripted model).
- Live: the end-to-end suite against a real model (92 tests passed). It covers foreground and background spawn with
get_subagent_result, Explore dispatch, workflow fan-out, and structured output.
Full details in CHANGELOG.md.
- Partial README translations in Simplified Chinese, Japanese and Korean (
-
๐ r/LocalLLaMA Fable 5.2 not only has guardrails against AI acceleration, its capabilities were capped in training too rss
| This seems excessive, especially if they trust their classification models for safeguards, why add both? However I guess it is to be expected from a private company. It's also "yet another reason" for open weight LLMs submitted by /u/EntropyMagnets
[link] [comments]
---|--- -
๐ OmniNull/OmniWM Canary 20261110-0412 (bcc6b419) release
Automated canary build of
main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.
- Commit:
bcc6b419bc5c - Base tag:
canary-20261109-0655-42575760350-1
Changes since canary-20261109-0655-42575760350-1
bcc6b41Derive the overview close test bounds from the transition's constantsa459e36Merge pull request #1160 from rickythefox/fix/overview-close-handoff1689289Remove doc comments from Sources4fe75d2Merge pull request #1155 from rickythefox/lint/no-source-commentscdd98eaMerge pull request #1161 from rickythefox/chore/coderabbit-no-docstringsbbcb02fLet the notifications bell open macOS's Notification Center9d68ed2Hide the notifications Notification Center itself leaves out6ef0626Remove narrating comment from .coderabbit.yaml4750d2cDisable CodeRabbit docstring coverage check61b867dMerge pull request #1105 from msanft/codex/notification-filtering5a00177Test that cancelling a finished close reveal keeps the overview transparentdbcad0aRemove overview close blink and end-of-close stalld6d777aMatch notification preferences regardless of bundle ID case96ca48cPreserve notification integrity when preferences exclude records786d25cFilter notification history using current app preferencesad29e90Warn on doc comments in Sources1040de2Show the active layout on the OmniWM button of OmniShell bars3258bb4Exclude silent notification records from history and dismissalbea07a8Name the readable text contrast and drop a source commentfc61246Merge pull request #1147 from rickythefox/fix/solid-black-bar-palettea9e397dDraw solid black bars with the dark palette in light mode
- Commit:
-
๐ anthropics/claude-code v2.1.322 release
What's changed
- Added fast mode on Vertex in the global, us and eu regions, falling back to standard speed if Vertex refuses it
-
๐ backnotprop/plannotator v0.28.59 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.58 | Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
v0.28.57 | Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 | Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 | Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 | Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings โ Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 | Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings โ Decision data, Plannotator reloads itself after an update
v0.28.51 | Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 | A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 | A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code,--titlefor review and annotate
v0.28.48 | Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
v0.28.47 | Board lanes, Settings โ Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
v0.28.46 | Snooze a thread, Settings โ Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository ownerWhat's New in v0.28.59
TL;DR
- Changed: The Agents section in the sidebar is quieter: a plain heading when closed, no panel behind it
- Changed: Machine names show only when agents run on more than one machine
- Changed: Agent icons are always gently alive, and lean toward your pointer
0.28.59 is a small release that finishes the sidebar's Agents section, which arrived in 0.28.58 in an earlier form. It has 4 PRs, all from @backnotprop. One is a test fix, and one changes nothing you see yet.
Plannotator Inbox
A quieter Agents section
Closed, Agents is now a plain heading row like Projects: no panel behind it and no buttons on it. Open it and the two add buttons (start an agent, link a machine) appear on the heading, with the agents listed under it. The tinted panel behind the open section is gone too.
A machine's name now shows only when agents are running on more than one machine. With one machine, the agents are one list with no name above them. A machine with no running agent shows nothing. A machine that shows no name also shows no filter, sleep note or Update word in the sidebar; those stay in Settings โ Machines. #3025
Agent icons that stay alive
Each agent's icon in the sidebar now moves a little all the time, in its own way and at its own pace: Claude's star turns, Codex's prompt blinks and types, Pi's blocks ride a wave, OpenCode's frame sways. While your pointer is in the sidebar, each icon leans slightly toward it. The icons no longer change look for working, waiting or ended; the hover card still says what an agent is doing. With reduced motion on, they are still. #3018
Not yet on
Code review in the Inbox stays off, and its switch stays hidden until a later release. For people who have it on, Reviews and the Pull requests board now show a small profile picture by each person's name, from GitHub or GitLab, with their initial when there is no picture. #2986
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The install script above also updates the plugin when
claudeis on your PATH. Otherwise, in a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginโ Installed โ plannotator โ Update now.Pi:
pi update npm:@plannotator/pi-extensionOpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: a face by every person's name in Reviews and the PR board by @backnotprop in #2986
- List filter test: a fixed clock, so Today holds at every hour by @backnotprop in #3031
- Inbox agent marks: always alive, a subtle lean toward the pointer, no state looks by @backnotprop in #3018
- Inbox Agents section: closed, it is a plain heading (no panel, no Add buttons) by @backnotprop in #3025
Full Changelog :
v0.28.58...v0.28.59 -
๐ backnotprop/plannotator v0.28.58 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.57 | Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 | Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 | Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 | Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings โ Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 | Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings โ Decision data, Plannotator reloads itself after an update
v0.28.51 | Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 | A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 | A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code,--titlefor review and annotate
v0.28.48 | Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
v0.28.47 | Board lanes, Settings โ Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
v0.28.46 | Snooze a thread, Settings โ Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository owner
v0.28.45 | Plannotator Modern theme, a thread panel view, session names in the To picker, thread links open in place, comment on diagram partsWhat's New in v0.28.58
TL;DR
- New: Start Codex from New message
- New: An Agents section in the sidebar, in place of Machines
- New: Start an agent in a folder on any drive
- New: Play audio attachments and comment at a moment
- New: Claude Code's Plannotator tools work on Windows
New message can now start Codex, and it can start an agent in a folder on any drive, not only under your home folder. The sidebar's Machines section is now Agents, a list of the agents that are running. Audio attachments play in the Inbox and take comments, questions inside an attached Markdown file can be answered, and Claude Code's Plannotator tools now work on Windows.
0.28.58 has 24 PRs: 22 from @backnotprop, one from @uvw, who brought the Claude Code tools to Windows, and one from @hydn-n, who fixed the T3 Code hook. Two are test and release changes, and two change nothing you see yet.
Plannotator Inbox
Start Codex from New message
New message can now start Codex , as it already starts Claude Code and Pi. In To, under "Start a new session in", pick the Codex row, pick a folder, and send. The thread shows "Codex is working" with Stop , and each reply you send goes to that Codex session. After a Stop, your next reply starts it again where it left off.
Codex is listed only when it can start:
codexis installed (0.149 or newer), you are signed in, and its config has the Plannotator Inbox tool. Codex runs with your own config, login, model and sandbox, and the Inbox never writes to Codex's config. When Codex asks to run a command or change a file, the thread shows a card with Allow once , an allow for this session (for example "Allow file edits for this session") and Deny.Settings โ Agents โ Codex has a new Account line. It shows your plan and how much of the 5 hour and weekly limits you have used, "API key", or "Not signed in" with the command to run. It never shows an email, and it never signs you in or out. #3007
Agents in the sidebar
The sidebar's Machines section is now Agents. It lists the agents that are running, each with its mark and its name. An agent that has ended is not listed. Click an agent to open its thread. A running agent with no thread opens New message to it. Hover a row for a card with the agent, its project and machine, what it is doing (Working, Idle or Waiting on you), when it started and when it was last heard.
With machines linked, each machine's name sits above its agents. A click on the name still shows that machine's threads, and its Update word is still there. With no machine linked, the agents are one list. The section shows no counts.
The heading has two buttons that are always visible. Add agent (+) opens New message with a new session already chosen in To. Add machine opens Settings โ Machines.
The marks move. Click a mark to swap it for another face: Glass, Yellow, Transparent or Face, then back to the agent's own. The Inbox keeps your choice for that agent in this browser. #3012, #3000
Start an agent in a folder on any drive
New message could start an agent only in a folder under your home folder. It can now start one in any folder except system and hidden ones, so an external or network drive works too.
In New message โ To โ New session โ in โพ , each connected drive has its own row after "Another folderโฆ", and a network drive says so. A drive's row opens the folder browser at that drive, with a row of places at the top (Home and each drive) to switch between them. You can start in the drive's own top folder. A project on a drive shows as "Studio SSD โบ footage-tools".
When a drive is unplugged, its projects stay in the menu, struck through, with "Archive isn't connected. Connect it to start here.", and can't be picked. A slow network drive shows "Reading Backupโฆ", and after 3 seconds "Backup isn't responding" with Try again. On a Mac, in the Inbox window on that same Mac, Choose in Finderโฆ opens the system folder picker and fills in the folder you pick. #3004
Play audio, and comment at a moment
An audio file in a thread used to be a download. It now opens in a player with play and pause, a bar to scrub and the time, and for a file of 12 MB or less the bar draws the sound's waveform. You can comment at a moment, as on a video: dots on the bar mark the comments, a click on a dot jumps there, and the agent gets each comment with its time ("At 0:12"). It reads MP3, AAC, M4A, WAV, Ogg, FLAC and sound-only WebM.
The tile in the message reads like "WAV audio ยท 0:47 ยท 2.0 MB" with Play. On a narrow tile, a video's or a recording's line now drops whole parts (the size first) instead of cutting a word, and the comment count sits before the size. #3011, #3013
Answer questions inside an attached file
A question an agent writes inside an attached Markdown file was only text. It is now a card you answer in the file, the same as a question in the message: pick, Other, Add note, Skip or Accept recommended. These questions count in the thread's open questions, show in the open-questions list as "11:01 AM ยท in plan.md", and go out with the same Send. The agent gets your answers under a heading that names the file.
A file that changed after it was sent shows its cards locked, and the open- questions list opens the version that was sent. Messages from before this release stay as they were. #3001, closing #2828 reported by @zane668
Click the list's edge to hide it
Beside an open thread, click the edge of the list column to hide the list and the sidebar and give the thread the whole window. Dragging the edge still resizes it, and its tooltip reads "Click to hide the list, drag to resize". This replaces the hide icon in the thread's header. โน Inbox, Escape and โB bring the list back as before. #2994
Smaller changes
- Side in the selection bar is now an icon with no word. The icon is the mark of the thread's agent: Claude's in a Claude Code thread, Codex's in a Codex thread. Its tooltip reads "Side chat with Claude" (or the agent's name). An agent with no mark of its own keeps the two speech bubbles and "Side chat". What a press does is unchanged. #3016
- A one-time tip, "Make the sidebar yours", points at the sidebar and says you can hide and reorder its items from a right-click. You see it once, on a computer, if you have used the Inbox for a day or more and never saved a sidebar layout. Got it or Escape closes it. #3014
- A file tile in a message always says Open , or Play for a video or a sound. Before, the tile of the file open beside the thread changed to "Open beside". The highlight still marks which file is open. #3017
- Send buttons no longer show the โโต hint: no tooltip on the reply box's Send, and no keycap on New message's Send. โโต (Ctrl+Enter) still sends, and Settings โ Keyboard still lists it. #3009
- A video or a sound inside an HTML attachment now plays. Before, the Inbox blocked media that the page carried inside itself. Media still never loads from the web. #3003
- A code block that scrolls sideways (a table, a diagram, aligned config) now keeps its background across the whole line. Before, the part you scrolled to sat on a darker shade. Plan review and code review's Markdown preview get the same fix. #2995
Claude Code
The Plannotator tools work on Windows
Claude Code's Plannotator tools now work on Windows. Before, a Windows session always used the classic hook: it had no Inbox tool unless you added the MCP command by hand, and the session never showed in the Inbox. Now a Windows session with the plugin shows in the Inbox, an Inbox message arrives as a turn, and the reply comes back, with nothing else to set up.
It runs through Git Bash when Git for Windows is installed, and through Windows PowerShell 5.1 otherwise. Set
PLANNOTATOR_MOD_SHELL=shorpowershellto choose one. If neither shell passes a small check when the session starts, the tools stay off and the classic hook is used, as before. macOS and Linux are unchanged. #2893 by @uvw, closing #2892Removals inside longer commands skip the prompt too
With
CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONSset, Claude Code in bypass mode skips the prompt for a removal it cannot prove safe. Since 0.28.52 that works with Plannotator installed, but two cases still showed a prompt that Claude Code alone does not show. One was a removal inside a command of several parts, such ascd /tmp/x && rm -rf logs/*/*or two removals in one command. The other was any removal while a PreToolUse hook that could run for Bash was installed, even one that only logs.Both now run with no prompt. The prompt stays when a part of the command asks for another reason, when a PreToolUse hook itself asks, and beside a PermissionRequest hook or an ask or deny rule on Bash. With
PLANNOTATOR_MOD_DEBUG=1, the debug log now says what kept a prompt. #3023T3 Code and Pi
- The T3 Code hook works with T3's new entrypoint. T3 Code now starts Claude with
CLAUDE_CODE_ENTRYPOINT=t3-code. The optional T3 hook (install.sh --with-t3) opened only for the oldersdk-โฆnames, so in a T3 thread it never ran, and "Ask this session" from a review did not reach the thread. The hook now opens for both. An install made with--with-t3gets the new hook on its next update. If you registered the hook by hand witht3-hook install, run that command again. #2782 by @hydn-n - Pi: no TLS warning on a Bun build that already has the fix. Plannotator warned at every Pi start when Pi ran on a Bun older than 1.4.4, even on a build that carries the October 2026 TLS fix, such as Pi-Bolt on Bun 1.4.3. It now also checks the certificates the Bun build carries, and stays quiet when the fix is there. #2996, closing #2914 reported by @Battlelamb
Tab icon: Glass, Yellow or Face
The Favicon choice (plan review's Theme tab, and the Inbox's Settings โ General โ Appearance) is now Glass (the default), Yellow (the goggles with a yellow glass) or Face. The P icon from 0.28.57 is gone. If you had picked P, you see Glass.
The Inbox asks once, "Which favicon do you prefer?", with the three icons at full size and in a browser tab. A choice previews on your tab, and the button saves it ("Keep Glass", "Use Yellow" or "Use Face"). Escape changes nothing. You see it if you used the Inbox before this release and never chose an icon, or had picked P. A new install is not asked. You can change it in Settings at any time. #3005
The anonymous daily ping
The anonymous daily ping now also says which favicon is set in Settings (
glass,yelloworface, ornoneif you never picked one). The privacy page lists it. Nothing else about the ping changes, andNO_ANON_PINGstill turns it off. #3002Not yet on
Two changes show nothing to most people yet.
Starting an agent from the Inbox stays off on Windows. This release makes it able to work there: Windows paths, PATH and PowerShell commands. #3008
Code review in the Inbox stays off, and its switch stays hidden until a later release. For people who have it on, Settings โ Capabilities has a new Chapter diagrams switch under Code review, on by default. Off, agents are no longer told to draw a diagram for a chapter, and a diagram that still arrives starts folded under its Diagram header. #2985
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The install script above also updates the plugin when
claudeis on your PATH. Otherwise, in a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/pluginโ Installed โ plannotator โ Update now.Pi:
pi update npm:@plannotator/pi-extensionOpenCode: Re-run the install script above. It also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: a code block's background covers the whole line when scrolled by @backnotprop in #2995
- Inbox: the server lists each machine's agents (data for the Agents section) by @backnotprop in #3000
- Inbox: answer questions inside an attached file by @backnotprop in #3001
- Inbox: videos and audio inside an HTML attachment play by @backnotprop in #3003
- Inbox: click the list column's edge to hide the list by @backnotprop in #2994
- Inbox: the one-time tab icon dialog, "Which favicon do you prefer?" by @backnotprop in #3005
- feat(ping): count the favicon on the daily ping by @backnotprop in #3002
- Release: reuse main's passing tests for a version-only tag by @backnotprop in #3010
- Inbox: start an agent in a folder on any drive by @backnotprop in #3004
- Inbox: no โโต hint on Send by @backnotprop in #3009
- Claude Code mod: run on Windows through Git Bash or Windows PowerShell by @uvw in #2893
- Inbox: play and comment on audio attachments by @backnotprop in #3011
- Inbox launch: Windows paths and PATH by @backnotprop in #3008
- Inbox: a video's or a recording's tile line drops whole parts, never cuts one by @backnotprop in #3013
- Inbox: Side in the selection bar is the thread agent's mark by @backnotprop in #3016
- fix(t3): open the T3 hook gate for CLAUDE_CODE_ENTRYPOINT=t3-code by @hydn-n in #2782
- Pi: no TLS warning on a Bun build that already carries the fix by @backnotprop in #2996
- Inbox thread read retry test: no race between the first list read and the first retry by @backnotprop in #3021
- Inbox: Agents section in the sidebar by @backnotprop in #3012
- Inbox: start Codex from New message by @backnotprop in #3007
- Claude Code: the skip-rm-prompts setting also covers removals inside longer commands by @backnotprop in #3023
- Inbox: an open file's tile keeps its Open or Play label by @backnotprop in #3017
- Inbox: a Chapter diagrams setting under Code review by @backnotprop in #2985
- Inbox: a one-time tip that the sidebar can be customized by @backnotprop in #3014
New Contributors
Contributors
- @uvw asked for the Claude Code tools on Windows in #2892 and then built them in #2893: Windows paths, a Git Bash path and a Windows PowerShell path. This is their third PR here, after the Board's project names and the Markdown code fixes.
- @hydn-n found that the T3 Code hook never ran under T3's new entrypoint and fixed it in #2782, with a live check in T3 Code. They also wrote the T3 Code wake that shipped in 0.28.49.
Community
- @zane668 reported in #2828 that questions inside a Markdown attachment could not be answered. #3001 fixes it.
- @Battlelamb reported in #2914 that the Pi TLS warning fired on Pi-Bolt builds that already have the fix. #2996 fixes it.
Full Changelog :
v0.28.57...v0.28.58 -
๐ Filip Filmar A network on chip in TxHDL, with a CPU and a GPU on it rss
A conventional interconnect connects multiple peripherals to a single host. A network on chip (NoC) connects multiple hosts and peripherals across a 2D mesh topology, routing packets between arbitrary endpoints. We implemented a packet-routed NoC in TxHDL. The design features four-neighbor mesh routing, dual virtual channels, dimension-order routing, and protocol bridges that map AXI4 transactions to network packets. To validate the architecture, we placed our RISC-V core, GPU rasteriser, shared memory, and a serial port on the four corners of a 2-by-2 mesh. The CPU computed a 3D icosahedron model and generated display lists that the GPU rendered across the network.
-
๐ New Music Releases Fear Factory - Detonizer rss
Fear Factory - a new release is available:
- 2026-11-10: Detonizer (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
๐ Ampcode News Boxes rss
Today, we're introducing something new to Amp: boxes.
A box is an always-on computer to which you can deploy the many delightful things you've built with Amp.
Boxes are small and cheap (the smallest one is $18 per 30 days). But they're full-on computers. You can run anything you want on them. They come with an agent running on them, too. And agents are great at running on computers.
Today, with hyper-individual software being created nearly as fast as someone can dictate a prompt, a small machine goes a long way and can serve most personal or internal software. Software that you build for yourself and people you work with doesn't need to scale to thousands of users. All it needs to be is available for everyone you want to share with and within reach of an agent.
That's what boxes are: a home for what you build with your agents.
Here's Thorsten showing how he deploys applications to boxes and then modifies their production data using agents:
(Note: prices shown in the video refer to Enterprise plan prices. Personal and Team boxes are cheaper. See Pricing.)
How It Works
You develop your software in orbs. You test and share work in progress in portals. When you're ready, you ask the agent to spawn a box for you.
A box is a single VM to which you can then deploy multiple applications. Each application gets its own URL. The box is permanent and will stick around, it doesn't turn off, and you can deploy to it multiple times from however many orbs you want. (If you want to save money, you can ask the agent to turn the box on and off on a schedule.)
It's worth pointing out that there are no containers or other abstractions involved. A box truly is... just a computer. Because, again, agents are great at using those.
If you want, you can make deployments private or require visitors to Sign In With Amp. Ask the agent to do it for you, it'll know how.
Shared Boxes
You can share boxes with your workspace, so you can run your internal software on a box and everyone on the team can deploy new versions.
Runners on Boxes
Each box comes with its own runner. That means you can leverage how good agents are at using computers by spawning them right there, on the box.
Ask them to clean up the team wiki's database, for example. Or add a new entry based on a screenshot you took. Or ask it to analyze the data everyone added.
Why build elaborate admin interfaces when you can just ask the agent, right there, to modify the state of the running applications?
Pricing
Boxes come in different sizes. They're billed by the minute. By default, they're always on. But you can turn them on and off on a schedule, if you want to save money.
Size Machine Per hour 30 days, always on 30 days, on 6am to 9pm b1.tiny0.5 vCPU (bursts to 2), 2 GB $0.025 $18 $11.25 b1.small(default)1 vCPU (bursts to 2), 4 GB $0.042 $30 $18.75 b1.medium2 vCPUs, 8 GB $0.069 $50 $31.25 b1.large4 vCPUs, 16 GB $0.139 $100 $62.50 Getting Started
Ask your agent to create a personal box for you and then ask it to deploy an application to it. Read the docs if you want to find out more.
-