๐Ÿก


  1. November 13, 2026
    1. ๐Ÿ”— 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

    2. ๐Ÿ”— r/LocalLLaMA Hugging Face CEO vows to keep fighting for open source AI after Jensen Huang's exit rss

      Hugging Face CEO vows to keep fighting for open source AI after Jensen Huang's exit | 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]
      ---|---

  2. November 12, 2026
    1. ๐Ÿ”— 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 space now 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 jj version increases from 0.37 to 0.39. Snapshotting now uses the documented jj util snapshot command, replacing the deprecated jj debug snapshot command.

      (#780)

      Restore jump-to-parent after selection

      To make space select a revision and jump to its parent as before, add this action override to config.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

    2. ๐Ÿ”— 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"] to plugin.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 --strict fails on it
      • Added to claude plugin validate the $ nouns a mod's engine.create hook adds, withholds or replaces
      • Added support for CLAUDE_CODE_AUTO_MODE_MODEL in 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 -p and SDK sessions, so a host such as Claude Desktop won't end the turn as hung (once it includes this version)
      • Added .docx support to Artifact tool asset uploads
      • Added a /diff to close hint 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 as Bash(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_MODE when Perforce settings are found and the mode is off
      • Added CLAUDE_CODE_DISABLE_AGENT_PROGRESS_SUMMARIES (available since 2.1.318): set it to 1 to 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 unsetOptionCount to the claude plugin install --json result: how many userConfig options are not yet set
      • Added isPromptCovered to 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 /compact again, 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.json moments earlier; a settings file you delete during a session now stays deleted
      • Fixed claude plugin commands and claude mcp list signing 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 /proc files, 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 /resume leaving 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 ps processes 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 WorktreeCreate hook 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 --bg continued 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 login profile 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 /login in another terminal, they carry on at the next message
      • Fixed the billing notice naming your ant auth login organization when a custom X-Api-Key header is set
      • macOS: Fixed "Not logged in ยท Please run /login" coming back right after a successful /login or 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 awsAuthRefresh or gcpAuthRefresh command sometimes running twice for one request when three or more sessions needed a fresh sign-in at once
      • Fixed the claude -p warning about an ended claude.ai login to say that claude auth logout also 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 .git or .claude, where the saved rule did not stop the next prompt
      • Fixed a case where some lsof commands ran without a permission prompt
      • Fixed Bash commands that write a file with `cat > file <
    3. ๐Ÿ”— @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-contest

      Heโ€™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

    4. ๐Ÿ”— 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
      
    5. ๐Ÿ”— Hex-Rays Blog Divining vulnerabilities: powered by the Hex-Rays Contributor Program rss

      Divining vulnerabilities: powered by the Hex-Rays Contributor
Program

      "Real hackers were so multi-lingual they often knew more platforms than they had pants."
      -- Dave Aitel

      About 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 .h files 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.md that 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 .h header 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 decompile function tells apart functions that can't be decompiled from errors that affect all functions, decompile_to_file now returns a DumpedFunction with the paths of the files it wrote, and DumpedFunction::copy_to copies the output elsewhere without decompiling again. augur is built entirely on top of this API.
      • A much smarter rhabdomancer. Calls through ELF .plt stubs 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 #memcpy kept by IDA 9.5, Apple's stat$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, and LoadLibrary families, and many more. The default configuration is now embedded in the binary, and you can point the RHABDOMANCER_CONFIG environment 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 .plt segment 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 (stdcall names). 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 .plt references 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- checks to 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. โœŠ

    6. ๐Ÿ”— 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:

      altWhat changed in two years for various metrics at incident.io

      Pull request stats

      At a glance:

      altChanges in numbers of PRs over two years

      AI 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.

      altAgent usage exploded in June, when Claude Agents launched

      In 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:

      altPercentage of all PRs with parts of the code generated by agents

      More:

      • 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:

      altAllocation of spend on AI at incident.io , mostly on Claude

      Opus 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:

      altOpus 5.5 is resulting in less than half the previous monthly cost on AI, per engineer

      Also, the adoption of Opus 5.5 has been rapid:

      altShare of models used by engineers inside incident.io

      Cost 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:

      altCost of generating a medium-sized PR peaked in July-August with Opus 5 and Fable

      Infrastructure 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:

      altThe cost of an "effort point" (generating a medium-sized PR) varies based on team

      But 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:

      altFast turnaround times both for review readiness, and for deployments

      Let's take an average day - a Tuesday last month - when 185 changes were shipped to production, 75 of which without human review:

      altPRs shipping to production with & without human review at incident.io

      There 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:

      altFew incidents per PR, but more overall incidents

      The good news is that the rate of incidents is lower than expected, given the PR volume:

      altTaking last year's PR "defect rate", there should have been more production incidents

      The 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.

      altCategorizing production incidents by root cause at incident.io

      I 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:

      1. 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.
      2. 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.
      3. 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.
      4. 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.
    7. ๐Ÿ”— r/LocalLLaMA So this will be true in couple of years? rss

      So this will be true in couple of years? | I think after jensen they will fully focus on AI compute for data centers submitted by /u/UltramanQuar
      [link] [comments]
      ---|---

    8. ๐Ÿ”— 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 backup command (and its good friend, the restore command) 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ร .

      Animation: a backup snapshots the VM's disk, cuts it into 1 MB chunks,
hashes each chunk, and uploads, compressed, only the chunks the S3 bucket
doesn't already have under chunks/. It then writes an index from each disk
offset to its chunk under indexes/. When the VM later writes, the next backup
hashes the changed chunks and uploads only the missing ones, so backups are
incremental.

      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!

    9. ๐Ÿ”— tintinweb/pi-subagents v0.24.0 release

      What changes for existing users

      • Nested spawns are refused once 10 nested subagents are running (#427). Set maxConcurrentNested to 0 to restore unbounded nesting.
      • FleetView rows show each agent's own tokens , the selection is marked โฏ, and โ— marks the view in front (#446).

      New

      • maxConcurrentNested caps running nested subagents (default 10) (#427).
      • FleetView lists nested subagents under their parent , with mouse support in fullscreen mode (#446).
      • showModel names 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.

    10. ๐Ÿ”— 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
    11. ๐Ÿ”— 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, --title for review and annotate

      What'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 carries PATH again. macOS and Linux are unchanged. #3154

      New message's folder box now reads the paths people type and paste on Windows. C:\Users\me\code, c:/users/me/code, ~\code and a file:///C:/... link all work, and a pasted path keeps its backslashes. A folder outside your home folder, a system folder such as C:\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. #3156

      No more console windows flashing up

      A console window opened by itself every few minutes while the Inbox was running. It came from the gh and glab lookups 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. #3143

      Paths 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-annotate or /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. #3161

      Starting 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.json or .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 @Arobotmaster

      The 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.json the rules are prompts.inbox.rules, or prompts.inbox.runtimes.<agent>.rules for one agent. #3145, toward #2194 by @zane668

      Your 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)". #3080

      From 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>. #3083

      Your 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 E and 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. #3079

      More 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. E and H work 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=1 still means remote mode for every request. #3121

      On 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 &lt;img&gt; tags inside a description's table now show as pictures instead of raw text. #3149

      The 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+Enter opens "Send with a note" (or "Send a note") directly; Mod+Enter in 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=0 turns it off. #3074, #3073

      Inbox 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: inboxSqlite in config.json, or PLANNOTATOR_INBOX_SQLITE=1. It is off unless you set it, and has no Settings row. When on, the next start moves your records into inbox.db after 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. #3114

      Fixes

      • A stuckgh or glab no 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 | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator --scope user
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin โ†’ Installed โ†’ plannotator โ†’ Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: 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

      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

    12. ๐Ÿ”— r/LocalLLaMA Nvidia's Jensen Huang Resigns as CEO, Colette Kress Named Interim rss
    13. ๐Ÿ”— 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)
      
    14. ๐Ÿ”— 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=0 to 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.

    15. ๐Ÿ”— HexRaysSA/plugin-repository commits add nightshift-labs-ai/kflow to known repositories rss
      add nightshift-labs-ai/kflow to known repositories
      
    16. ๐Ÿ”— 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

      • 16bc3c4 Put Apple's Developer ID G2 intermediate in the System keychain for CI signing
      • 26f19a0 Fix stale table reads in Luau widgets and harden their VMs
      • d633935 Slide keyboard workspace switches the way a trackpad swipe does
      • 540be3c Slide keyboard workspace switches with the swipe's spring
      • e60f5d7 Slide keyboard workspace switches only when the setting is on
      • c39176b Merge pull request #1210 from 5achin/animate-keyboard-workspace-switch
      • 5828526 Merge pull request #1209 from hezhizhen/codex/preserve-late-native-drag-annotation
      • 605a615 Type OmniShell elements as the props tables they are
      • 21e4dba Drop the Wayline hidden indicator border when every window is hidden
      • ae04d78 fix(input): preserve late native drag annotation order
      • 7aad8f5 Keep the newest wallpaper palette and test the recheck without waiting
      • ea89acd Merge pull request #1205 from OhNoIBrokeIt/fix/wallpaper-palette-follows-shuffle
      • 8f0865d Follow the contributor guide for the keyboard switch animation
      • 4918512 Animate workspace switches made from the keyboard
      • e26b13b Capture an Aerial that a live wallpaper app covers
      • 99e33ed Look up the menu bar clock host directly
      • b804db2 Keep queued clicks when own-window input drops stale mouse movement
      • 876327e Merge pull request #1203 from megafloras/fix/notification-clock-host-macos26
      • cf73a7e Merge pull request #1202 from hezhizhen/codex/order-native-resize-input
      • fccfe38 Remove the in-app issue reporter and its on-device AI rewrite
      • 20c9544 Reorder bar widget priority per style in Settings
      • 3efc5ec Scroll a window title that does not fit its space
      • d245418 Let crowded full-width bar widgets give way instead of overlapping
      • 137c424 Capture the wallpaper when its file cannot be read
      • 40afaf0 Rewrite a deleted wallpaper palette on the next recheck
      • 79c5958 Look at the wallpaper file off the main actor during a recheck
      • 372c70d Read an Aerial wallpaper's palette from its thumbnail
      • e36e93e Skip the recheck decode of an unchanged still wallpaper
      • 8af987d Keep the recheck sample only after the palette is written
      • f54e9ae Check the wallpaper Store entry for the display and its active Space
      • 243d5d7 Read a still wallpaper from its file for the wallpaper palette
      • 301b2a2 Recheck the wallpaper palette so it follows a shuffled folder
      • 9cd40bb Find the menu bar clock in ControlCenter before macOS 27
      • 9eb0e1b Leave the switcher's event tap alone while hotkeys keep it on
      • 8c1f074 Drop the input source test's actor drain and copied widget strings
      • 49cf0bc Stop retrying unresolved notification dismissal confirmations
      • cb5669d Derive the path animation tests' geometry from one fixture
      • 07f8f76 Merge pull request #1198 from rickythefox/feat/switcher-ipc-command
      • 453c9e8 Merge pull request #1196 from rickythefox/feat/switcher-visible-workspaces
      • 3207089 Merge pull request #1193 from hezhizhen/codex/test-input-source-suspension
      • 16389f6 Merge pull request #1188 from hezhizhen/codex/fix-notification-dismissal
      • 3c7b432 Merge pull request #1194 from hezhizhen/codex/fix-path-morph-animation
      • 188a6e6 Merge pull request #1190 from hezhizhen/codex/fix-startup-menu-bar-gap
      • fdde41d fix(input): preserve native resize mouse event order
      • c1d2cf9 Remove the SwiftUI command palette
      • dfc51f5 Give the palette Vitreus, Lake and Sakura looks
      • 7384127 Give the palette Celestial, Nocturne and Wayline looks
      • 05ccf56 Measure palette rows by their own height
      • 6ed73b2 Draw the palette's Apps and Files with OmniShell
      • 7409048 Keep ui.path paint animations on the shape
      • 8f8e61b Drive the window switcher from omniwmctl
      • 235ebf0 Draw the palette's Menu, Clipboard and unified search with OmniShell
      • e15dbf8 Test input source updates during notification suspension
      • b940325 Address review: cycleScope name, exhaustive badge switch, TOML coverage, Unreleased docs
      • c0c23b4 Add a Visible Workspaces scope to the window switcher
      • a3f3886 Keep the OmniShell command palette working with the bar off
      • f88ac41 Draw the command palette's Windows and Commands modes with OmniShell
      • 817c7cd Merge pull request #1195 from Jonathanm10/feature/round-notification-badges
      • efacbd6 Keep short notification badges round
      • 7215cbc Reconcile display geometry when observation starts
      • f8e6d1b Keep dismissed notifications hidden while storage catches up
      • 893688e Name the managed Settings window's icon
      • 7a5b39b Merge pull request #1186 from rickythefox/fix/1148-managed-settings-window
      • e89a736 Spell out the test serial queues' arguments to avoid a compiler crash
      • 55c2967 Match full-rescan fullscreen frames in AppKit coordinates
      • 563c639 Check the symbol colour test against exact composited colours
      • 9baff24 Read the bar icon tests' expected values from the default widgets
      • 8e920e6 Merge pull request #1185 from rickythefox/feat/1149-output-device-and-ethernet
      • a1975b7 Merge pull request #1184 from rickythefox/fix/1151-bar-icon-consistency
      • 173d40f Merge pull request #1183 from rickythefox/fix/1150-battery-bolt-on-ac
      • 01ca4d2 Address review: Settings window glue, late admission, hosted raise focus
      • 16b9363 Show the output device and wired connection in the bar
      • 0d7e4d8 Use the props returned by barSymbolProps for the OmniWM button
      • 5957a9e Share the WindowServer-to-AppKit frame conversion and name the replacement tolerance
      • 1c41ddd Drop the unsuspended observer's comment and duplicate test
      • fb3383d Merge pull request #1176 from hezhizhen/codex/fix-placement-frame-coordinates
      • b57db65 Merge pull request #1173 from hezhizhen/codex/managed-replacement-frame-coordinates
      • 4b766cf Merge pull request #1174 from hezhizhen/codex/fix-full-rescan-floating-frame
      • 648fa12 Merge pull request #1167 from pltanton/feat/keyboard-layout-indicator
      • 95b0df1 Merge pull request #1165 from rickythefox/fix/terminal-cell-width-marks
      • 1dd6566 Share the bar symbol size and weight between barGlyph and the OmniWM button
      • 8ab0a22 Manage OmniWM's Settings window as a floating window
      • 22bfefc Give default bar icons one size and weight
      • 899c488 Render named colours on symbols as bright as on paths and text
      • ba63ffe Show the battery bolt whenever the Mac is on its power adapter
      • 8cc4faa Merge pull request #1181 from rickythefox/chore/ignore-glossary
      • 89415b0 Merge branch 'main' into chore/ignore-glossary
      • 9e921f4 Remove the PayPal sponsor buttons from the app
      • 67d8e73 Ignore local GLOSSARY.md
      • aef3e6e Warn about fake accounts and drop PayPal from the sponsor links
      • 18203ff Move widget data demand out of ShellWidgetHost+Delivery
      • e635900 Take the unified search tests' sizes and timeout from named values
      • 97e28b1 Merge pull request #1153 from rickythefox/feature/palette-unified-search
      • 92cc8f1 Normalize WindowServer frames before workspace placement
      • ea6e21f Match cached replacement frames in WindowServer coordinates
      • 96563f7 Store full-rescan floating frames in AppKit coordinates
      • 1669e2a Deliver keyboard layout changes while OmniWM is inactive
      • 126a737 Keep Return waiting when the chosen row vanishes and no rows remain
      • cebe180 Fold launcher history and drop a vanished row's highlight
      • 3437e02 Cancel a waiting Return or Command-digit when the highlight moves
      • c7dda42 Render unified results as one list so moved rows refresh
      • cf2218a Give combining and enclosing marks zero cell width on every macOS
      • 58bf773 Address review on unified search
      • a9f4920 Store admitted windows' frames in AppKit coordinates
      • 9e3e8b8 Merge pull request #1154 from hezhizhen/codex/float-read-only-windows
      • 0970d3d Separate menu path parts with commas for VoiceOver
      • 4c3d681 Include the menu path in unified menu rows' VoiceOver label
      • 824d62d Address CodeRabbit review on unified search
      • c30abba Announce top-hit shortcuts to VoiceOver
      • 8ed743b Show each top hit's Command-digit shortcut on its row
      • 747fc0f Open unified search top hits with Command-1 to Command-3
      • e46bfa4 Reorder searched modes by dragging a row handle
      • 17fd8af Add unified search to the command palette
      • 2874f1e Float windows with read-only AXSize
    17. ๐Ÿ”— Console.dev newsletter Sponsor: WarpBuild rss

      WarpBuild - Linux, macOS and Windows on x86-64 and ARM64. Unlimited macOS concurrency. Get $50 in free credits.

      Visit WarpBuild

    18. ๐Ÿ”— 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!

    19. ๐Ÿ”— 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.

    20. ๐Ÿ”— Console.dev newsletter Sponsor: ARCA rss

      Get paid for your AI coding

      Visit ARCA

    21. ๐Ÿ”— Console.dev newsletter Sponsor: Token Custodian rss

      AI, governed

      Visit Token Custodian

    22. ๐Ÿ”— 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 stable
      

      If you don't have it already, you can get rustup from 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

      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 as return, break, and std::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 a match or an if:

      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 Infallible to be an alias to the never type. That makes all old APIs that used Infallible be compatible with using !. This was the plan ever since the introduction of Infallible and 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.

      Allocator API

      This 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 - currently Vec and Box. These are enabled through the newly-stabilized Allocator trait.

      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 path

      The Drop trait in Rust makes it possible to run code when a variable goes out of scope, regardless of whether we return, ?, or panic. Drop being a part of types means that in Rust you never have to close a socket.

      Implementing Drop can however feel a little inconvenient when all you want is to run some code unconditionally when a function exits. This is why weโ€™re introducing core::mem::DropGuard: a new helper type that runs a closure when dropped.

      DropGuard takes two arguments: a variable and a closure. It implements Deref and DerefMut so you can keep working with the variable as normal. But when dropped it runs the closure and consumes the variable.

      DropGuard also implements a dismiss method 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_dependencies lint for this but it has false positives when used with Cargo because dependencies may be shared between multiple build targets, e.g. dependencies.tracing- subscriber being available for every bin in 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 foo won't show warnings for unused [dependencies] because another bin may be present that uses them. No warning will be shown for unused dev-dependencies because 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 in Cargo.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-dir and then uplifts final artifacts to the target-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 the build-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 a build-dir across git worktrees.

      The build-dir now 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.lock and kept from then on until a later cargo update re-resolves it.

      A few things to keep in mind:

      • This depends on the registry recording when each version was published. Versions without a pubtime field in the index are never held back.

      • cargo install ignores the minimum publish age, for both the installed crate and its dependencies. Pin a version with cargo install foo@1.2.3 if 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

      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!

    23. ๐Ÿ”— 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.

    24. ๐Ÿ”— Ampcode News Bye Bye, Dial rss

      Today we're saying goodbye to the Dial and its four modes: low, medium, high, and ultra.

      A model selector takes its place:

      The model selector open below the prompt box. Opus 5.5 is at the top with a Staff Pick tag, then GPT-6 Astra, GLM-5.3-Flash, and GPT-6.1 Sol. An icon on each row shows who bills you: Claude, ChatGPT, or Amp. A card next to the list describes Claude Opus 5.5 and says it is served by your personal Claude subscription.

      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. medium on 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 high continues 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-Flash
      • medium: Claude Opus 5.5
      • high: GPT-6 Astra
      • ultra: 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.

  3. November 11, 2026
    1. ๐Ÿ”— IDA Plugin Updates IDA Plugin Updates on 2026-11-11 rss

      IDA Plugin Updates on 2026-11-11

      New Releases:

      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โ€ฆ
    2. ๐Ÿ”— r/LocalLLaMA Nvidia is Preparing to Oust Nvidia CEO Jensen Huang rss
    3. ๐Ÿ”— ghostty-org/ghostty vt-1.0.1 release

      libghostty-vt 1.0.1

    4. ๐Ÿ”— 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 contourArea and convertScaleAbs fallbacks 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

      MeanAveragePrecision matches pycocotools more closely

      sv.metrics.MeanAveragePrecision now puts objects in the small, medium and large buckets that pycocotools gives them: a prediction's own geometry (box, mask or oriented-box polygon) decides, and its data["area"] is ignored. Target data["area"] is read as float64, so an area such as 9216.0004 is no longer scored as both medium and large. With MetricTarget.ORIENTED_BOUNDING_BOXES, targets with data["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 small
      

      Misread inputs raise, and scalar key point indexing works

      sv.CSVSink raises ValueError when additional data uses a built-in column name such as confidence or x_min, instead of writing a duplicate column that shadows the detection value. sv.KeyPoints selection 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.
      

      PolygonZone survives integer coordinate limits

      sv.PolygonZone computes its mask bounds as Python integers, so a polygon whose coordinates reach their dtype limit, for example uint8 255, 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 contourArea fallback adds the shoelace terms in OpenCV's order and reads integer points as float32, so sv.filter_polygons_by_area no longer flips at a min_area or max_area boundary between backends. The convertScaleAbs fallback scales in float32 with a single-rounding multiply-add, so values on a .5 tie such as 95 * 1.3 round to the same uint8 as OpenCV. (#2936, #2935)

      Labels and dataset exports

      sv.LabelAnnotator and sv.RichLabelAnnotator with smart_position=True keep an oversized label at the frame's left and top edges, and shaped right- to-left text in RichLabelAnnotator keeps its leading characters at the visible right edge. DetectionDataset.as_yolo and as_pascal_voc retry a failed mask-hole seam search with traced contours, so more masks export when you simplify them with approximation_percentage, and as_coco uses 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: MeanAveragePrecision sizes a prediction by its geometry and ignores its data["area"], and reads target data["area"] as float64, so small, medium and large mAP can move. (#2939) Oriented-box mAP on iscrowd targets can rise, never fall, because crowd overlaps are ignored. (#2941) as_coco writes box area, not 0, for empty mask placeholders. (#2942) Oversized labels with smart_position=True stop at the left and top frame edges. (#2940)
      • New errors: CSVSink raises ValueError for extra fields named like a built-in column. (#2934) KeyPoints selection raises IndexError for a nonempty boolean mask of the wrong length. (#2943)
      • Without OpenCV: the contourArea fallback can flip filter_polygons_by_area at a boundary (#2936), and the convertScaleAbs fallback rounds some uint8 results one level differently, up or down (#2935). Regenerate stored references made with the NumPy fallback.

      ๐Ÿ“ Notable changes

      ๐Ÿ”ง Fixed

      Metrics

      • MeanAveragePrecision puts objects in the small, medium and large buckets pycocotools gives them: prediction area comes from its own geometry (box, mask or oriented-box polygon), and target data["area"] is read as float64. (#2939)
      • MeanAveragePrecision with MetricTarget.ORIENTED_BOUNDING_BOXES uses the COCO crowd IoU for targets with data["iscrowd"] set, so predictions inside a crowd region are ignored instead of counted as false positives. (#2941)

      Key points, zones and sinks

      • PolygonZone preserves mask dimensions when integer polygon coordinates reach their dtype limit, instead of overflowing. (#2945)
      • KeyPoints rejects nonempty one-dimensional boolean selection masks whose length does not match the number of skeletons or keypoints; keypoint selection on KeyPoints.empty() stays empty. (#2943)
      • KeyPoints accepts a zero-dimensional NumPy integer row index combined with a list or boolean mask of keypoints, preserving coordinates and aligned fields instead of raising ValueError. (#2930)
      • CSVSink raises ValueError when additional data uses a built-in column name such as confidence or x_min, instead of writing duplicate columns. (#2934)

      Annotators and the NumPy fallback without OpenCV

      • LabelAnnotator and RichLabelAnnotator with smart_position=True keep an oversized label at the frame's left and top edges; shaped right-to-left text in RichLabelAnnotator retains its leading characters at the visible right edge. (#2940)
      • The contourArea fallback returns exactly what cv2.contourArea returns, so filter_polygons_by_area agrees across backends at its boundaries. (#2936)
      • The convertScaleAbs fallback scales in float32 with a single-rounding multiply-add, like OpenCV's fused float32 path. (#2935)

      Dataset exports

      • DetectionDataset.as_yolo and as_pascal_voc retry a failed mask-hole seam search with traced contours when simplification removes usable vertices; as_yolo and as_pascal_voc still raise if no seam is found, and as_coco also tries this for iscrowd=0 annotations. (#2933)
      • DetectionDataset.as_coco uses 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 develop branch. (#2944)
      • The SAHI notebook shows the corrected tile size output. (#2937)
      • The SAHI notebook calls InferenceSlicer with overlap_wh and no longer passes the removed overlap_ratio_wh, so its cells run again, and outputs from the old 2560-pixel image were cleared. (#2938)
      • The CSVSink how-to now says that extra fields named like a built-in column raise ValueError, and the snap_boxes and MeanAveragePrecisionResult docstrings 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 MeanAveragePrecision size buckets and oriented-box crowd IoU to pycocotools.
      • 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 CSVSink extra 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 PolygonZone masks intact at integer coordinate limits.
      • kevin (@kevin9327) โ€” made the OpenCV-free contourArea and convertScaleAbs fallbacks 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 develop branch.
      • 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.

    5. ๐Ÿ”— 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]

    6. ๐Ÿ”— 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
      
    7. ๐Ÿ”— r/LocalLLaMA Open source self driving is here! rss

      Open source self driving is here! | 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]
      ---|---

    8. ๐Ÿ”— r/LocalLLaMA New Qwen3.8-27B Unsloth Dynamic V3.1 GGUFs rss

      New Qwen3.8-27B Unsloth Dynamic V3.1 GGUFs | 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]
      ---|---

    9. ๐Ÿ”— 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/afvpfibvypeti2loorhfumrxj5cvoskjkfgvasv7rsp4l2ckxl6q
      

      If youโ€™re logged in, this will take you to a simple screen:

      Approval screen: VM drum-dragon is trying to use integration demo. Approve
for 10m, 1h, 6h, or 1d, with Don't approve and Approve
buttons. 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.

    10. ๐Ÿ”— r/LocalLLaMA NVIDIA reportedly cancels GeForce RTX 5080 24GB launch, brings back 16GB model over GDDR7 costs rss
    11. ๐Ÿ”— 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:

      And now strap in, as there is a ton of great content to read about here!

      A Frontend for Safe GPU Offloading in Rust

      Marcelo worked on improving the usability of cross-vendor GPU programs in Rust using the std::offload module. 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

      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

      The goal of this project was to build the experimental std::autodiff module, which implements automatic differentiation of Rust code, and the std::offload module, 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 nightly compiler 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

      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- establish priroda, 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 for priroda, 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 priroda together 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

      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

      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

      libc is 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 moving libc towards 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 libc reviewers were not able to keep up!

      You can find all Adam's libc pull 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 libc to 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

      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 btrfs or amdgpu 2-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

      rust-analyzer uses rowan for its syntax trees, a library for Concrete Syntax Trees. rowan has 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 rowan to 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 of rowan that 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 from rowan altogether.

      The migration process is incremental and rowan is 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

      The std::arch module 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 stdarch tests in its CI. That can cause friction when we synchronize the changes between the two repositories. Ideally, we would run all of stdarch'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 (called bootstrap) and a CI workflow structure that is quite different from the stdarch repository. 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 stdarch test suites to bootstrap, 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-lang PRs 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

      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

      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

      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 uninstall and $CARGO_HOME/bin as a warmup. This issue itself is a very good demonstration of all that compatibility baggage: somehow $CARGO_HOME/bin has 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_HOME is gone with rustup 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.

      1. 97.5% over a three-year period, if you are wondering (40 out of 41 projects were successful so far). โ†ฉ

      2. If you were wondering, then yes, this is actually related to the famous 2038 problem :) โ†ฉ

      3. In case you were wondering, the mold linker does not support linker scripts required to link Linux kernel modules at the moment, so Vishruth did not compare the performance of Wild against mold here. โ†ฉ

  4. November 10, 2026
    1. ๐Ÿ”— IDA Plugin Updates IDA Plugin Updates on 2026-11-10 rss

      IDA Plugin Updates on 2026-11-10

      New Releases:

      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
        • 74114afa: Merge pull request #3224 from reyyanxahmed/fix/3223-disable-cache-write
        • 47267b6e: added PR number to CHANGELOG.md
        • da7bc0a8: tests: compare decoded freeze documents in snapshot tests
      • 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
      • idamcp
        • 8fd02013: Merge pull request #31 from doomedraven/add-pyproject-toml
        • 95c15f79: Add pyproject.toml for packaging, editable installs, and tool configuโ€ฆ
      • idawilli
        • 4f3e4872: plugins: bump global-struct-dissector, oplog, colorize-calls; fix navโ€ฆ
        • 7c6357e2: plugins: rename readme.md to README.md, drop stale hard link docs
      • 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 โ€ฆ
    2. ๐Ÿ”— 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, --title for 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

      What'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 for claude only on your PATH. Claude Code's own installer puts claude in ~/.local/bin, and that folder is often missing from the PATH an 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/bin and ~/.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 the PATH of your login shell, which covers claude installed with npm or Homebrew. #3070

      The 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. #3071

      If your plugin is already behind

      Updating to 0.28.61 repairs it: this update finds claude and brings the plugin up to date by itself. Afterwards, run /reload-plugins in 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 user
      

      An 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 | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator --scope user
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin โ†’ Installed โ†’ plannotator โ†’ Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: 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

    3. ๐Ÿ”— r/LocalLLaMA Apple has new Mac app coming to make running local AI models easy rss

      Apple has new Mac app coming to make running local AI models easy | submitted by /u/themixtergames
      [link] [comments]
      ---|---

    4. ๐Ÿ”— r/LocalLLaMA The Surprising Effectiveness of Deleting Weights in LLM Post-Training rss

      The Surprising Effectiveness of Deleting Weights in LLM Post-Training | 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]
      ---|---

    5. ๐Ÿ”— 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
      
    6. ๐Ÿ”— 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
      
    7. ๐Ÿ”— 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:

      1. ssh exe.dev
      2. The web
      3. The Android app
      4. The iOS app
      5. The Mac app
      6. 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:

    8. ๐Ÿ”— r/LocalLLaMA MiniMax H3-Image Released, an Open-Weight Image Model built on H3 rss

      MiniMax H3-Image Released, an Open-Weight Image Model built on H3 | submitted by /u/MagicZhang
      [link] [comments]
      ---|---

    9. ๐Ÿ”— 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
      
    10. ๐Ÿ”— 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, or Cancel instead of only continuing. Continue runs the session in the current directory without storing the choice, as before; Fork copies 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 to ctx.switchSession() from extensions (#11975 by @petrroll, fixes #11060)

      Fixed

      • Fixed /import of 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.jsonl and s-1.jsonl); the failed copy is now removed (#11975 by @petrroll, fixes #11060)
      • Fixed Anthropic OAuth requests reporting an outdated Claude Code version
    11. ๐Ÿ”— 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, --title for 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

      What'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: /side in 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). #3049

      New 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. #3037

      The 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-in side row. Pick it and the side chat opens with what you typed in its box, not sent. Nothing goes to the thread. #3032

      Modern 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.

      #3042

      For agents

      send_message can 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 carry Pros:, Cons: and Prototype: lines. A session gets each hint once, and at most one per send. The message itself always goes through unchanged. #3044

      plannotator inbox rows prints every row option and its value now. plannotator inbox rows set name=value โ€ฆ changes options in one save, and plannotator inbox rows undo puts the last change back. A wrong name or value changes nothing. #3049

      Fixes

      • 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 | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin โ†’ Installed โ†’ plannotator โ†’ Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: 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

    12. ๐Ÿ”— 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 TypeError on video frames with no people.
      • Grounding DINO and RF-DETR segmentation results load, and OWLv2 detections get real class names.
      • DetectionsSmoother keeps 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 empty class_id, keypoint_confidence and detection_confidence arrays instead of None, and selecting key points from it returns an empty result. Pose connectors such as sv.KeyPoints.from_ultralytics return it for every frame without people, so the documented filters raised TypeError mid-video. ViTPose poses from sv.KeyPoints.from_transformers now all get class ID 0 instead of 0..N-1, and sv.KeyPoints.from_yolo_nas keeps each pose score as detection_confidence, so with_nms works 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 frame
      

      Zero-shot and RF-DETR results from Transformers

      sv.Detections.from_transformers now reads results of post_process_grounded_object_detection. Grounding DINO results used to raise AttributeError: 'list' object has no attribute 'cpu'; they now load with the matched phrases as class names and class_id=None. OWL-ViT, OWLv2 and OmDet- Turbo keep the text query index as class_id and take class names from text_labels; id2label=model.config.id2label used to name them LABEL_0, LABEL_1. RF-DETR instance segmentation results requested with return_binary_maps=True load too. If a result has no recognized fields, the error now points to the official rfdetr package, whose predict() returns sv.Detections directly. (#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  # None
      

      DetectionsSmoother keeps unconfirmed tracks apart

      Detections with a negative tracker_id, which some trackers use for tracks they haven't confirmed yet, now pass through sv.DetectionsSmoother unchanged. 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 box
      

      Drawing on grayscale, BGRA and palette scenes

      sv.RichLabelAnnotator annotates grayscale scenes, shaped (H, W) or (H, W, 1) or given as a Pillow grayscale image, and sv.draw_image draws 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 as 0 or False show 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_transformers all get class_id 0; use np.arange(len(key_points)) if you used it as a per-person index. (#2914) KeyPoints.from_yolo_nas(...).as_detections().confidence reports the model score instead of the mean key point confidence. (#2909) OWL-ViT, OWLv2 and OmDet-Turbo class names come from text_labels, even when you pass id2label. (#2913) xywh_to_xyxy returns int64 for integer input, or float64 when a corner exceeds the int64 range. (#2922)
      • Different rows and shapes: DetectionsSmoother returns unconfirmed detections as their own rows, after the smoothed tracks. (#2926) KeyPoints.empty() fields are empty arrays, not None. (#2911) With OpenCV, resize_image, scale_image and letterbox_image keep (H, W, 1) input as (H, W, 1). (#2905)
      • Different counts, colors and labels: PolygonZone no longer counts anchors in (-1, 0). (#2924) ColorPalette.from_matplotlib rounds colors like to_hex, so some move by one level. (#2903) Labels such as 0 or False, drawn as empty boxes before, now show their text. (#2892)
      • Without OpenCV: mask_to_polygons returns polygons in OpenCV's RETR_TREE order (#2900), image writes save most non-uint8 images instead of failing, though multi-channel non-uint8 TIFFs still fail (#2901), and HeatMapAnnotator colors 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 ValueError instead of drawing wrong colors. (#2907)

      ๐Ÿ“ Notable changes

      ๐ŸŒฑ Changed

      • Detections.from_transformers suggests the official rfdetr package when a result has no recognized fields, and its docs recommend rfdetr for RF-DETR models. (#2921)

      ๐Ÿ”ง Fixed

      Key points

      • KeyPoints.empty() holds empty class_id, keypoint_confidence and detection_confidence arrays instead of None, so confidence filters no longer raise TypeError on frames without poses. (#2911)
      • Selecting key points from an empty result, as in key_points[:, [0, 1]], returns an empty result instead of raising IndexError. (#2920)
      • KeyPoints.from_transformers gives every ViTPose pose class ID 0; with the old 0..N-1 IDs, keypoint mAP against person targets scored too low and per-class EdgeAnnotator edges raised ValueError. (#2914)
      • KeyPoints.from_yolo_nas keeps each pose score as detection_confidence, so with_nms no longer raises ValueError on YOLO-NAS poses. (#2909)

      Model connectors

      • Detections.from_transformers reads zero-shot results from post_process_grounded_object_detection: Grounding DINO no longer raises AttributeError, and OWL-ViT, OWLv2 and OmDet-Turbo take class names from text_labels. (#2913)
      • Detections.from_transformers reads RF-DETR instance segmentation results with return_binary_maps=True, pairing binary maps with segments_info by position; an empty (0, H, W) stack gives empty masks. (#2912)
      • Classifications.from_clip and Classifications.from_timm accept bfloat16 outputs, including mixed-precision inference, and return float32 probabilities for them. (#2894)

      Tracking, zones and box math

      • DetectionsSmoother returns detections with a negative tracker_id unchanged 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)
      • DetectionsSmoother returns all tracked boxes when only some smoothed tracks keep oriented corners, using smoothed axis-aligned bounds instead of raising a merge error. (#2923)
      • PolygonZone excludes 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_xyxy promotes integer coordinates before adding widths and heights: a uint8 box [200, 20, 100, 40] becomes [200, 20, 300, 60] instead of wrapping its right edge to 44. (#2922)
      • move_masks computes 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)
      • JSONSink keeps an exception raised inside a with block when writing or closing the file also fails; the cleanup error is logged. (#2902)

      Annotators and colors

      • RichLabelAnnotator annotates grayscale scenes, (H, W), (H, W, 1) or Pillow grayscale modes, instead of raising TypeError or ValueError. (#2916)
      • Annotators draw the requested colors on Pillow palette images (P, PA) instead of other colors or black. (#2907)
      • draw_image draws on grayscale and BGRA scenes instead of raising a NumPy broadcast error. (#2906)
      • LabelAnnotator and RichLabelAnnotator draw labels such as 0, np.int64(0), 0.0 and False as text instead of empty background boxes. (#2892)
      • ColorPalette.from_matplotlib rounds colors to 8-bit values as Matplotlib's to_hex does instead of truncating them. (#2903)

      Images and the NumPy fallback without OpenCV

      • resize_image, scale_image and letterbox_image return (H, W, 1) for (H, W, 1) input on OpenCV installs too, and tint_image and grayscale_image accept (H, W, 1) images. (#2905)
      • Image writes without OpenCV, such as ImageSink.save_image and dataset exports, keep 16-bit PNGs and save a saturated 8-bit copy for JPEG, BMP and WebP, instead of raising TypeError or returning False. (#2901)
      • mask_to_polygons lists polygons in OpenCV's RETR_TREE order without OpenCV too, and one- and two-pixel contours are int32. (#2900)
      • HeatMapAnnotator colors without OpenCV follow OpenCV's float32 HSV-to-BGR arithmetic instead of coming out one level off. (#2904)
      • create_batches yields 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 of DetectionsSmoother averaging.
      • NIKHIL (@Nikhi00718, LinkedIn) โ€“ loaded zero-shot and RF-DETR segmentation results in from_transformers and fixed ViTPose class IDs.
      • Vlad Voropaev (@voropaevv, LinkedIn) โ€“ fixed DetectionsSmoother on mixed oriented-box tracks and PolygonZone edge 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 with block errors in JSONSink and made create_batches stop 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_transformers users to rfdetr and prepared the release.

      Automated contributions: dependabot, pre-commit.ci


      Full changelog : 0.31.5...0.31.6
      Co-authored with/oss:release.

    13. ๐Ÿ”— HexRaysSA/plugin-repository commits rename repos due to migrations rss
      rename repos due to migrations
      
      from hexrays-plugin-contributions
      
    14. ๐Ÿ”— 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 /agents command, and link to the English README for everything else. A language switcher sits at the top of each README.

      Fixes

      • The conversation viewer honorstui.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 in keybindings.json left the observer on the stock Ctrl+Home/Ctrl+End. Home/End still work as aliases, and Ctrl+Home/Ctrl+End now 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.

    15. ๐Ÿ”— r/LocalLLaMA Fable 5.2 not only has guardrails against AI acceleration, its capabilities were capped in training too rss

      Fable 5.2 not only has guardrails against AI acceleration, its capabilities were capped in training too | 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]
      ---|---

    16. ๐Ÿ”— 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

      • bcc6b41 Derive the overview close test bounds from the transition's constants
      • a459e36 Merge pull request #1160 from rickythefox/fix/overview-close-handoff
      • 1689289 Remove doc comments from Sources
      • 4fe75d2 Merge pull request #1155 from rickythefox/lint/no-source-comments
      • cdd98ea Merge pull request #1161 from rickythefox/chore/coderabbit-no-docstrings
      • bbcb02f Let the notifications bell open macOS's Notification Center
      • 9d68ed2 Hide the notifications Notification Center itself leaves out
      • 6ef0626 Remove narrating comment from .coderabbit.yaml
      • 4750d2c Disable CodeRabbit docstring coverage check
      • 61b867d Merge pull request #1105 from msanft/codex/notification-filtering
      • 5a00177 Test that cancelling a finished close reveal keeps the overview transparent
      • dbcad0a Remove overview close blink and end-of-close stall
      • d6d777a Match notification preferences regardless of bundle ID case
      • 96ca48c Preserve notification integrity when preferences exclude records
      • 786d25c Filter notification history using current app preferences
      • ad29e90 Warn on doc comments in Sources
      • 1040de2 Show the active layout on the OmniWM button of OmniShell bars
      • 3258bb4 Exclude silent notification records from history and dismissal
      • bea07a8 Name the readable text contrast and drop a source comment
      • fc61246 Merge pull request #1147 from rickythefox/fix/solid-black-bar-palette
      • a9e397d Draw solid black bars with the dark palette in light mode
    17. ๐Ÿ”— 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
    18. ๐Ÿ”— 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, --title for 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

      What'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 | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin โ†’ Installed โ†’ plannotator โ†’ Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: 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

    19. ๐Ÿ”— 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, --title for 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 parts

      What'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: codex is 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=sh or powershell to 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 #2892

      Removals inside longer commands skip the prompt too

      With CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS set, 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 as cd /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. #3023

      T3 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 older sdk-โ€ฆ 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-t3 gets the new hook on its next update. If you registered the hook by hand with t3-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, yellow or face, or none if you never picked one). The privacy page lists it. Nothing else about the ping changes, and NO_ANON_PING still turns it off. #3002

      Not 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 | bash
      

      Windows:

      irm https://plannotator.ai/install.ps1 | iex
      

      Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

      Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin โ†’ Installed โ†’ plannotator โ†’ Update now.

      Pi:

      pi update npm:@plannotator/pi-extension
      

      OpenCode: 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

    20. ๐Ÿ”— 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.

    21. ๐Ÿ”— 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.

    22. ๐Ÿ”— 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

      1. You develop in orbs and, once the app is ready, deploy it to the box. 2. The box runs several apps, bug-tracker, tiny-crm, and team-wiki, and each app has its own onamp.dev URL. 3. You start a thread on the box's Amp runner to work on the live app.

      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.

      The new thread composer with the executor picker open. Under Boxes, the workspace box acme/workbench is selected with its app bug-tracker checked, below the Machine directory and above the tiny-crm, team-wiki, and incident-database apps.

      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.tiny 0.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.medium 2 vCPUs, 8 GB $0.069 $50 $31.25
      b1.large 4 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.