🏑


  1. October 16, 2026
    1. πŸ”— DioxusLabs/blitz v0.3.0-beta.4 release

      v0.3.0-beta.4

    2. πŸ”— HexRaysSA/plugin-repository commits sync repo: +7 releases rss
      sync repo: +7 releases
      
      ## New releases
      - [IDA-MCP-Hub](https://github.com/captain-ai-hub/ida-mcp): 0.9.7, 0.9.6, 0.9.5, 0.9.4
      - [functionloader](https://github.com/tien0246/functionloader): 0.1.1
      - [mcrit-ida](https://github.com/familiary/mcrit-plugin): 2.1.1, 2.1.0
      
    3. πŸ”— jesseduffield/lazygit v0.66.2 release

      What's Changed

      Enhancements πŸ”₯

      • Improve display and handling of deleted submodules and nested repos/worktrees by @stefanhaller in #6134

      Fixes πŸ”§

      Maintenance βš™οΈ

      Performance Improvements πŸ“Š

      Full Changelog : v0.66.1...v0.66.2

    4. πŸ”— streamyfin/streamyfin v0.55.2 release

      What's Changed

      0.55.2 is another bug fix release. One thing does change: a TV is now signed in from your phone with Quick Connect, so Quick Connect has to be on in your server's dashboard (it is by default) and both devices need this version. The rest again comes out of the crash and error reports, plus a round of fixes to accounts and the Seerr sign-in

      Thanks to everyone who reported a problem, and to @Gauvino for the Quick Connect and Seerr fixes!

      ✨ Highlights

      • Signing a TV in from your phone uses Quick Connect , with a code or a QR code, and no longer sends your password over the local network (#2240) by @Gauvino
      • Freezes of a few seconds when playback starts or resumes on iOS and tvOS are fixed (#2205) by @fredrikburmester
      • Access tokens are kept out of the app log , including the logs you export, and entries written by earlier versions are cleaned up (#2103) by @Gauvino
      • Seerr access no longer carries over to the next account signed in on the same device (#2233) by @Gauvino
      • Quick Connect in Settings sends the code on its sixth digit and tells you why a code fails (#2246) by @Gauvino
      • Luxembourgish is available as an app language (#2195) by @Gauvino

      🎬 Player

      • iOS and tvOS: the app no longer freezes for several seconds when playback starts or resumes while the system audio service is slow to answer (#2205) by @fredrikburmester
      • Music: tapping a track far down the queue before the rest has loaded no longer fails, and neither do previous and next with repeat all (#2212) by @fredrikburmester

      πŸ“Ί TV

      • Pairing a TV with a phone goes through Quick Connect: the TV shows a code and a QR code, your phone approves it, and the TV signs in by itself. No password travels between the two devices, and the TV picks its own server (#2240) by @Gauvino
      • On the phone, Settings > Log in on TV scans the QR code or takes the code typed in, and the entry now shows on iPhones too (#2240) by @Gauvino
      • The TV offers a new code when the old one runs out after ten minutes, and says so when Quick Connect is turned off on the server (#2240) by @Gauvino
      • "Save this account" works with a Quick Connect sign-in: the TV asks how to protect the account before showing the code (#2240) by @Gauvino
      • The TV signs in as the phone's user, and a TV still on an older version has to be updated before it can be paired (#2240) by @Gauvino
      • Switching account on a TV no longer leaves the previous account's Seerr session and plugin settings in place for the next one (#2197, #2233) by @Gauvino

      πŸ”‘ Sign-in & Accounts

      • Settings > Quick Connect sends the code on its sixth digit or when you paste one, and shows why a code failed under the cells instead of in a dialog, with the code kept for a fix (#2246) by @Gauvino
      • Approving a Quick Connect code while Quick Connect is turned off on the server no longer signs you out. The app tells you it is off instead (#2246, #2247) by @Gauvino
      • iOS: the toolbar with a "Default" button above the number pad is gone from the Quick Connect code and the account PIN fields, and a tap beside the field closes the keyboard (#2236, #2242) by @Gauvino
      • Settings from the Streamyfin plugin are applied right after signing in, Quick Connect included, instead of at the next refresh (#2197) by @Gauvino
      • The Seerr sign-in that follows a login runs right away, and only once (#2197, #2231) by @Gauvino
      • One account's Seerr session, and the Seerr and OpenSubtitles keys the plugin gave it, no longer reach the next account signed in on the device (#2197, #2233) by @Gauvino

      ⬇️ Downloads

      • An item with nothing to download, like a folder, a photo or a book, shows a message instead of doing nothing (#2210) by @fredrikburmester
      • Downloading the last missing episode of a season uses that episode's own version, audio and subtitle tracks, not the first episode's (#2214) by @fredrikburmester

      πŸ› Fixes

      • Access tokens are redacted from the app log and from exported logs, and entries written before this update are redacted too. On iOS the name of an external subtitle track carried the token into the log (#2103) by @Gauvino
      • Opening a library sends one request with that library's own sort and filters, instead of a first one carrying the previous library's (#2256) by @fredrikburmester
      • The Live TV guide and the item counts on library cards load when they open before the session has been restored, instead of staying empty (#2209) by @fredrikburmester
      • Streamystats: an answer without results no longer breaks the home recommendation rows and search (#2203) by @fredrikburmester
      • A custom link the in-app browser cannot open is handed to the system, and one that nothing can open shows a message instead of doing nothing (#2211) by @fredrikburmester
      • Fixed an error after restarting the app when something had been changed while offline, like marking an item as played (#2208) by @fredrikburmester
      • iOS: custom header values can be read when the system starts the app in the background on a locked phone, once this version has been opened one time (#2215) by @fredrikburmester and @Gauvino

      πŸ”§ Build & Infra

      🌍 Translations

      πŸ›Ÿ Support & Reporting Bugs

      Include in bug reports: app version, platform and device, OS version, Jellyfin server version, direct play or transcoding, the media's codecs and subtitle format, which player you used (native or standard), steps to reproduce, and logs or a screen recording if possible.

      Full Changelog : v0.55.1...v0.55.2

    5. πŸ”— backnotprop/plannotator v0.28.22 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.21 | Message an agent from the Inbox, video attachments, Open in for attachments, Code / Tests / Generated in code review, writes from other websites refused
      v0.28.20 | Inbox search (⌘K), real folder names for projects, data files open in the code view, word-only replies leave questions open
      v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
      v0.28.18 | plannotator inbox connects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
      v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
      v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
      v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
      v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
      v0.28.12 | Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
      v0.28.11 | plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
      v0.28.10 | The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
      v0.28.9 | Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo

      What's New in v0.28.22

      Mostly Inbox work: a silent πŸ‘ for messages that need no reply, a full view for files, and one viewer for every image and file in a thread. Two changes reach every Plannotator session: each one now prints its URL, and PLANNOTATOR_BROWSER=none really opens nothing. 12 PRs.

      πŸ‘ Looks good

      A thread's foot now has πŸ‘ Looks good beside Reply. It tells the agent "read it, nothing more needed" without starting a turn: the thread moves to Quiet and the agent sees the πŸ‘ the next time it reads the thread (read_thread, or wait_for_reply, which now answers acknowledged). Undo takes it back. The button shows only when nothing in the thread waits on an answer. The in-thread New message button is gone; Reply and the compose button cover it.

      Full view for files

      The eye button (or βŒ˜β‡§X on an HTML file) hides the tools on a full-screen file, as plan review does for HTML. A small floating bar keeps the comment count, the file picker and the way back. For HTML files the choice is shared with plan review.

      One viewer for a thread's images and files

      Images inside an agent's message now open in the same viewer as attachments. You can comment on them, draw on them, and step through every image and file in the thread with the arrow keys or the picture list. The Inbox keeps a copy of each image as it was sent, and says so when the file on disk changes. Plan review and annotate get the lighter version: clicking an image steps through every image in the document.

      Every session prints its URL

      Every review, annotate and plan session now prints Plannotator session ready: <url> before it tries to open a browser, on every host. If no browser opens (a remote machine, a container, a terminal without one), the link is still on screen. This brings back the fix from #1184.

      PLANNOTATOR_BROWSER=none opens nothing

      PLANNOTATOR_BROWSER=none now opens nothing at all, local or remote, for every command and on Pi. Before, some paths fell through to the system browser. The session prints its URL instead.

      Behavior change: PLANNOTATOR_BROWSER set to false, 0, off, no, true, 1 or : now also means "open nothing". Before, true, 1, false, 0 and : ran the default browser. BROWSER=true, which Claude Code's agent view sets, is unchanged and still treated as unset.

      Additional Changes

      • A notification for every new thread an agent starts, even with the Inbox in front; the "Click to turn on sound" row is gone, and the first click arms the sound (#1941)
      • Toasts centered on the window , never on one pane (#1948)
      • Inbox list polish: the selected row is an inset pill, a cut-off name shows in full on hover, a cleaner focus ring, and a message's header no longer moves when it opens (#1937)
      • Compose's To picker shows just the agent and the project (#1935)
      • Copy connect prompt is a pill with the agents' icons (#1936)
      • Groundwork for the upcoming phone app (#1942) and a test fix (#1950)

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. 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 --extensions
      

      OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

      What's Changed

      • Inbox compose: To picker shows only the agent and the project by @backnotprop in #1935
      • Inbox: the connect prompt row becomes a pill with the agents' marks by @backnotprop in #1936
      • Inbox: polish β€” inset selected row, label tooltip, focus ring, steady message head by @backnotprop in #1937
      • Every session prints its URL (re-applies #1184) by @backnotprop in #1938
      • PLANNOTATOR_BROWSER=none opens nothing by @backnotprop in #1940
      • Inbox: notify on every new thread; drop the 'Click to turn on sound' row by @backnotprop in #1941
      • Inbox phones: door routes for compose, send to another session, search, project menu, skills, uploads and markups by @backnotprop in #1942
      • Inbox: one viewer for a thread's images and files by @backnotprop in #1944
      • Inbox: full view for files by @backnotprop in #1946
      • Inbox: πŸ‘ Looks good (silent acknowledge); drop the in-thread New message button by @backnotprop in #1947
      • Inbox: center the toast on the window, not the pane by @backnotprop in #1948
      • Test: inline-image label test allows the date by @backnotprop in #1950

      Community

      Thanks to @technicalpickles for #1184, which asked for the session URL on every start and is what #1938 restores.

      Full Changelog : v0.28.21...v0.28.22

    6. πŸ”— New Music Releases Caspian - Caspian rss

      Caspian - a new release is available:

      • 2026-10-16: Caspian (Album)

      Amazon: Canada | Deutschland | France | United Kingdom | United States

      Visit muspy for more information.

    7. πŸ”— New Music Releases Max Richter - While the Flood Rages rss

      Max Richter - a new release is available:

      • 2026-10-16: While the Flood Rages (Album)

      Amazon: Canada | Deutschland | France | United Kingdom | United States

      Visit muspy for more information.

  2. October 15, 2026
    1. πŸ”— crmne/spotifast Spotifast v0.13.3 release

      Spotifast 0.13.3 strengthens sign-in, cover art downloads, MilkDrop preset loading and playback connections. It keeps tokens and credentials out of debug logs and makes playback's push connection use your configured proxy.

      Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM

      On Windows, pick the .msi. The setup program (-setup.exe) is still attached so that installs from 0.12.0 and earlier can update through it.

      Fixed

      • Sign-in no longer gets held up by another program on your computer. The local sign-in listener now limits how long it waits for each connection and how much it reads. By @crmne.
      • MilkDrop preset packs stay inside the presets folder. Pack entries must name a single .milk file, including on Windows. By @crmne.
      • Oversized cover art is refused during download. Downloads are limited as they arrive, and stored zip entries must match their declared size. By @crmne.
      • MilkDrop rejects presets with overly long shader identifiers. Spotifast carries a projectM fix that prevents overly long identifiers from corrupting memory. By @crmne; thanks @kblaschke. (projectM #1049)
      • Tokens and credentials stay out of debug logs, even at trace level. Spotifast carries the fix in librespot until it is released upstream. By @crmne. (librespot #1806)
      • Playback's push connection uses your configured proxy. Spotifast carries the librespot proxy fix by @photovoltex. (librespot #1665)
      • Malformed network handshakes no longer crash playback. Spotifast carries a librespot fix that rejects oversized handshake packets. By @crmne. (librespot #1807)

      Thanks

      @thealps01-netizen for the reports, @kblaschke for the quick response on projectM, @photovoltex for the librespot proxy fix, and everyone who reported problems since 0.13.2.

      Full changelog : v0.13.2...v0.13.3

    2. πŸ”— earendil-works/pi v1.3.0 release

      New Features

      • Choose where/share uploads: sessionShareDestination selects auto, gist, or radius. See Sessions and context and Export or share a session.
      • Cache-preserving thinking level changes on OpenAI GPT-6 : changing the thinking level mid-session with an API key keeps the prompt cache.
      • Kimi Code over Chat Completions : tools added mid-conversation no longer invalidate the prompt cache. models.json base URL overrides must now include /v1. See Providers.
      • Clean model switching : thinking from a previous model is dropped instead of being shown to the new model as text.
      • Resumed sessions keep their active tools : --tools +name/-name applies on top of them. See Tools.

      Added

      • Changing the thinking level mid-session on OpenAI GPT-6 models (API key) now keeps the prompt cache (#10853)
      • Added the sessionShareDestination setting to choose automatic, GitHub gist, or Radius uploads for /share (#10870 by @vegarsti)

      Changed

      • Changed the kimi-coding provider to use OpenAI Chat Completions at https://api.kimi.com/coding/v1, the protocol used by the official Kimi Code client. K3, K3-256K, and Kimi For Coding now accept tools added mid-conversation without invalidating the prompt cache. models.json overrides of the kimi-coding base URL must now include /v1 (#10720)
      • Changed model switching to drop thinking blocks from earlier assistant messages produced by a different model, instead of sending them as plain text. The new model previously saw the old model's reasoning as part of its replies and could start writing its own reasoning into the visible answer (#10995)

      Fixed

      • Pinned internal Pi dependencies to exact release versions to prevent fresh installs from mixing incompatible packages (#10865)
      • Fixed resumed sessions dropping tools activated during the session. Resume now restores the session's active tools, with --tools +name/-name entries applied to them, unless --tools with tool names, --no-tools, or --no-builtin-tools selects tools explicitly (#10785)
      • Fixed stopping a codemode script or reaching its deadline waiting for a non-interruptible built-in to return on Bun (#10748)
      • Fixed repeated codemode timeouts or aborts accumulating surviving workers; admission now limits live workers to two across sessions, counting cancelled workers until actual exit (#10748)
      • Fixed --model choosing a provider by catalog order when several providers offer the match; Pi now prefers the provider with credentials and otherwise reports the ambiguity. --models and enabledModels add a model for each provider that offers it and warn about the ambiguity (#10160)
      • Fixed read line-range labels for numeric-string or null arguments in the TUI, session tree, HTML exports, and examples (#9887)
      • Fixed the Nix flake build failing when a provider switched APIs: the model catalog pin is now refreshed from the newest published catalog when its model API groups differ, and releases pin the newest catalog and build with it before tagging (#10985)
      • Fixed the Nix package putting its Node.js first on PATH, which made bash tool shells use Pi's Node instead of the user's node/npm. Pi's Node is now only a fallback (#10519)
      • Fixed prompt templates dropping empty quoted arguments ("" or ''), which shifted later positional arguments and prevented positional defaults from applying (#10867)
      • Fixed the Nix package build failing in its install check because it still expected chord and esbuild, which Pi no longer depends on
      • Fixed tool-call argument parsing dropping fields when a string contains an invalid \u escape such as \usepackage (#10868)
      • Fixed Anthropic and Bedrock Claude requests failing with a 400 when an error tool result contains images; the images are now sent after the tool results of the turn, so the model still sees them (#10794)
      • Fixed OpenCode Go Gemini models failing with a 404 by moving OpenCode Zen and OpenCode Go to the opencode.ai/inference endpoints, and added Google Generative AI support to the OpenCode Go provider
      • Fixed OpenCode Go MiniMax M2.7 failing with "Model does not support this protocol" by using the Anthropic Messages API
      • Fixed automatic retry not triggering for gateway Unable to forward upstream stream errors (#10920)
      • Fixed automatic retry not triggering for The service is temporarily unavailable errors, which also made compaction fail on the first attempt (#10965)
      • Fixed OpenAI-compatible responses showing thinking after the answer when a proxy such as LiteLLM sends reasoning and content in the same stream chunk (#10926)
      • Fixed Gemini 4 Argon requests on Google Vertex failing with "Thinking budget is not supported", and its thinking level being ignored on the Gemini API (#10890)
      • Fixed Xiaomi MiMo models failing with a 400 at the minimal thinking level; they now expose only the off and high levels (#10818)
      • Fixed openai-codex/gpt-6.1-sol using a 272K context window instead of the 500K window Codex now provides (#10840)
      • Fixed tool calls whose final arguments are malformed JSON silently running with only the fields parsed before the error; they now fail validation and show the model the raw arguments it sent (#10897)
      • Fixed Claude Haiku 5.5 and Claude Opus 5 not supporting the off thinking level (#10753)
      • Fixed done() of an extension's ctx.ui.custom({ overlay: true }) closing the topmost overlay instead of its own, which left the finished overlay on screen and another extension's dialog unresolved (#10648, #10999 by @masonc15)
    3. πŸ”— r/LocalLLaMA Introducing Muse Spark Open: the most capable US open-weight model to date rss

      Introducing Muse Spark Open: the most capable US open-weight model to date | Hey r/LocalLlama - Today we’re excited to release Muse Spark Open, the most capable US open-weight model to date. Built for coding and agentic work, it excels at long-horizon tasks, complex software engineering, and multi-step reasoning. Key Model Specs

      • Parameters: 816B total / 42B active
      • Context Window: 1M tokens
      • Modalities: Text, image, video, audio
      • Safety Post-Training: Additional safety post-training, with evaluations conducted under Meta's Superintelligence Scaling Framework.

      Inference, fine-tuning & deployment

      • Helion GPU kernels: Ships with custom, auto-tunable Helion kernels in SGLang, providing 1.03–3.95Γ— kernel speedups across NVIDIA and AMD GPUs and a 3% E2E improvement on AMD MI350.
      • Engines: Runs on leading inference engines including SGLang, vLLM, TensorRT-LLM, Hugging Face Transformers, Apple MLX, llama.cpp and Unsloth, with optimizations for AMD, Apple, Intel and NVIDIA silicon.
      • Optimized for Apple Silicon: To help make advanced models more accessible, Muse Spark Open is optimized to run on two Apple M5 Ultra Mac Studios with the latest MLX framework.
      • Fine-tuning: Developers can further customize the model with PyTorch, including TorchTitan for fine-tuning.
      • API platforms: Available today through Baseten, Fireworks AI, Groq, Modal, Nebius, OpenRouter, Together AI.
      • Where to download: Model weights are available for download on Amazon SageMaker AI, Google Cloud Model Garden, Hugging Face, and Microsoft Foundry Models.

      We’re releasing the weights under the Muse Model License, with limited commercial terms that let many developers use it for free. We look forward to your feedback! Learn more on our research blog: https://go.meta.me/museopen
      Download the weights: https://huggingface.co/collections/meta-models/muse- spark-open submitted by /u/AIatMeta
      [link] [comments]
      ---|---

    4. πŸ”— The Pragmatic Engineer The Pulse: new trend of building β€œinternal vibe-coding apps” at tech companies rss

      Hi, this is Gergely with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. Today, we cover one out of four topics from last week 's issue of The Pulse . Full subscribers received the article below seven days ago. If you 've been forwarded this email, you can subscribe here .

      When I visited Ramp's headquarters last month in New York, I talked with the four-person development team behind 'Glass,' which is Ramp's "internal Lovable." This name refers to Lovable.dev, the leading AI vibe-coding tool.

      Ramp's 'Glass' is basically a vibe-coding platform for non-engineers to create complex applications which run internally. They can share the applications they make with others to use and modify. This is what the landing page looks like:

      altThe landing page for Glass. Source: Ramp

      Users can connect various internal systems as "connectors" that can then be used as data sources for their apps:

      altSetting up connectors in Glass

      The team showed me a few popular apps, including a custom CRM built by someone in marketing, which had 50+ fields and filters on-screen. It seemed overwhelming to me, but the creator reportedly finds it extremely powerful to use.

      Since then, I've learned that many other mid-sized-and-above companies are building similar "internal Lovables" that don't usually see the light of day in the outside world.

      As of today, Ramp has launched Glass as an external product, describing it as "An AI workspace where knowledge compounds." It's interesting to see Ramp productionizing a formerly internal-only tool!

      Stripe 's "internal Lovable", Harbor

      Stripe shared details last month about its own vibe-coding tool (my words) that they refer to more elegantly as an "AI- assisted prototyping tool" called 'Harbor'. It was built by a single engineer in around six weeks. Here's an example of a prototype built with Harbor:

      altThe prototype Harbor built (left) and the prompt history to build it (right). Source:Stripe

      Why build your own internal "prototyping tool?"

      Lovable, Replit, Retool, and other vendors specializing in prototyping and building internal tools already exist, so what's the point in bothering to build your own? Here are the main reasons I've gathered:

      • A tiny investment. Stripe had a single engineer build Harbor v1, and Ramp had two engineers put it together in a matter of weeks. For companies with hundreds of engineers or more, this is a very reasonable time/effort investment.
      • Expose internal data to be used. Because the tool produces internal-facing prototypes/tools, it's a lot safer to expose internal data sources to it. Doing the same with third-party tools like Lovable or Replit would be risky.
      • Use the existing design library. Both Ramp and Stripe paid special attention to ensuring that the apps generated do follow internal design guidelines. Third-party apps are not great at this, out of the box.
      • Onboard most non-engineers, when done right. Ramp's Glass project is extremely widespread, to the point that onboarding to Glass and creating a simple tool is now part of new hire onboarding. Pretty much every non-engineer uses Glass to build their own tools.
      • Don 't wait on vendors to build what's needed. Why spend time and effort on tailoring a vendor solution which is straightforward enough to build? It would probably be a comparable effort to select the right vendor to go with, in terms of compliance reviews and price negotiations.
      • It 's educational and helps engineers to upskill. Engineers building these tools get better at building and maintaining AI infra at a time when recruiting engineers who are experts at AI infra is hard enough. Internal Lovables are a way to train more devs in-house by investing a few weeks in putting a solution together.

      Among tech companies that have built their own coding agent harness that runs in their cloud, I expect many to build internal vibe-coding tools for non- engineers like Stripe and Ramp have done. After all, it's not that complicated, gets much higher adoption than vendor products, and helps build out more AI infra expertise in-house.


      Read the full issue of The Pulse this is from, or check out this week 's The Pulse. This week's issue covers:

      1. OpenAI software engineer accused of spying. A software engineer working on OpenAI's Agents SDK has been arrested after allegedly planting a secret audio recording device in a meeting room at the AI company. The FBI and US Department of Justice are involved. The details read like the plot for an espionage movie.
      2. Anthropic builds its own source control system. Git had too many performance problems at 30,000 PRs per day, so Anthropic built its own. I talked with the team, including asking why they didn't open source its new system, 'Scion.'
      3. New trend: AI-coding rounds in Big Tech? Meta and Google are adding an additional "AI-assisted" coding round to the interview loop. From a hiring manager's perspective this sounds sensible, and I bet other places will follow - or have already done.
      4. Industry Pulse. An observation that college students are not always so "AI-native", Netflix lets go 6% of staff, a16z disbands recruitment team, Satya Nadella warns against trusting AI models (and frontier labs), and Meta's new state-of-the-art 'Muse Wonder' model.
    5. πŸ”— r/LocalLLaMA nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB Β· Hugging Face rss

      nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB Β· Hugging Face | https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-GGUF https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr-GGUF NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB is a vision-language model (VLM) designed to run everyday agentic tasks locally, using a native 2-bit quantization to fit in 24GB of memory and run alongside other applications. It optimizes intelligence and speed per GB. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint. This model is ready for commercial or non‑commercial use.

      Model Summary

      | Total Parameters | 74B (9B active)
      ---|---
      Architecture | Mamba-2–Transformer hybrid LatentMoE with a C-RADIO v4-H vision encoder
      Precision | IQ2 (2-bit quantization with quantization-aware training)
      Context Length | Up to 256K tokens
      Inputs / Outputs | Text, images, and video / text
      Deployment | 24GB packed model; vLLM on NVIDIA Ampere (A100), Hopper (H100-80GB), or Blackwell
      Speculative Decoding | LiLiCorr drafter via DFlash; 7 speculative tokens in the companion Bolt vLLM recipes
      Reasoning Mode | Chat-template controls (enable_thinking=True/False), inherited from the Super 3.5 VL client
      Recommended Sampling | Text: temperature 1.0, top_p 0.95 (inherited from the Super 3.5 VL client)
      Best For | Running everyday agentic tasks locally
      License | OpenMDW-1.1

      Model Overview

      Model Developer: NVIDIA Corporation

      Model Dates: December 2025 - May 2026

      Data Freshness:

      • The post-training data has a cutoff date of May 2026.

      What is Nemotron?

      NVIDIA Nemotronβ„’ is a family of open models with open weights, training data, and recipes, delivering leading efficiency and accuracy for building specialized AI agents.NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB is a vision- language model (VLM) designed to run everyday agentic tasks locally, using a native 2-bit quantization to fit in 24GB of memory and run alongside other applications. It optimizes intelligence and speed per GB. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint.

      This model is ready for commercial or non‑commercial use.

      bolt!

      submitted by /u/jacek2023
      [link] [comments]

    6. πŸ”— Locklin on science LLMs are not AGI (though some have internal monologue) rss

      The entire marketing message of the leading US based LLM companies seems to be that they will be the first to achieve actual artificial intelligence aka what these dweebs call β€œartificial general intelligence” or AGI. Furthermore that once a LLM achieves this, it will recursively improve itself, becoming a super-sentient god-like being. Both of these […]

    7. πŸ”— backnotprop/plannotator v0.28.21 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.20 | Inbox search (⌘K), real folder names for projects, data files open in the code view, word-only replies leave questions open
      v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
      v0.28.18 | plannotator inbox connects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
      v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
      v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
      v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
      v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
      v0.28.12 | Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
      v0.28.11 | plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
      v0.28.10 | The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
      v0.28.9 | Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
      v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window

      What's New in v0.28.21

      You can now start a conversation with an agent from the Inbox, attach videos, and open files in their own apps. Code review sorts files into Code, Tests and Generated. All servers now refuse writes from other websites. 18 PRs.

      Message an agent from the Inbox

      A compose button beside Search (or "New message…" in ⌘K) writes to any live agent session on this computer. Pick the session, attach files by dropping them in, and send. Its reply comes back to the thread. Unsent messages can be saved as drafts.

      Video attachments

      Agents can attach MP4, MOV and WebM files. They play in the Inbox, and you can comment at a moment in the video.

      Open an attachment in its own app

      An Open button on each file opens it in your editor, the browser (HTML), the default app, or Finder. Copy path is there too.

      Code, Tests and Generated in code review

      When a change touches more than one kind of file, the code review file tree splits into Code, Tests and Generated, each with its own counts. Guided Reviews show the same kinds.

      Skills in Inbox replies

      Type / or $ in the reply box, New message or a file comment to reference a skill. A human-only skill's instructions are sent along with your reply.

      Tidy sidebar projects

      Each project in the Inbox sidebar has a β‹― menu with Mark all as read and Archive all, with Undo. A project with nothing left in the list hides until something new arrives. Git worktrees (including Claude Code's agent worktrees) now file under their main repository instead of each becoming a project.

      Writes from other websites are refused

      Behavior change: every plan, review and annotate server now refuses a POST, PUT, PATCH or DELETE that a browser marks as coming from another site, before any route runs. Before, only some routes checked. The VS Code panel, the agent integrations and command-line tools are unaffected. If you reach Plannotator through a reverse proxy that rewrites the Host header, add the proxy's hostname to PLANNOTATOR_ALLOWED_HOSTS. Open-in no longer falls back to the OS default handler, and served images get a sandbox policy.

      Additional Changes

      • Accept recommended on pick-any questions stays offered until your picks match the recommendation, in plan review, annotate and the Inbox (#1913)
      • One-line Inbox toast over the pane it belongs to (#1918)
      • Agents learn theStopped: and Holds up: lines for questions that block their work (#1912)
      • A words-only reply to a session that asked twice stays words-only (#1929)
      • T3 Code: a stopping worker unregisters first, so a new request starts a fresh one (#1928)
      • Inbox groundwork for the upcoming phone app (#1930) and test hygiene (#1923)

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. 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 --extensions
      

      OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

      What's Changed

      • Inbox: teach agents the Stopped: and Holds up: lines by @backnotprop in #1912
      • Question cards: Accept recommended stays on pick-any questions until the picks match by @backnotprop in #1913
      • Inbox: skill references in the composers (picker, pasted SKILL.md, folded Skills line) by @backnotprop in #1914
      • open-in: same-origin and session guards, no implicit OS-default launch by @backnotprop in #1915
      • Review: file kinds (Code, Tests, Generated) in the tree and Guided Reviews by @backnotprop in #1916
      • Inbox compose, part 1: threads the person starts, drafts, uploads, Pi/OpenCode poll fields by @backnotprop in #1917
      • Inbox: a cleaner toast, one line over the pane it belongs to by @backnotprop in #1918
      • Inbox: fold worktrees into their main repository's project by @backnotprop in #1919
      • Inbox: open attachments in their own apps (Open in) by @backnotprop in #1920
      • harden state-changing routes: same-origin + session guards by @backnotprop in #1921
      • Inbox compose, part 2: the window (compose dialog, To picker, drafts, uploads, Not delivered) by @backnotprop in #1922
      • Tests: never set PLANNOTATOR_BROWSER=none (it opens the system browser); use a real no-op program by @backnotprop in #1923
      • Inbox: a menu on each sidebar project (Mark all as read, Archive all, automatic hiding) by @backnotprop in #1926
      • /api/image: sandbox CSP, nosniff and CORP by @backnotprop in #1927
      • T3: a worker unregisters before it stops answering (daemon.json race) by @backnotprop in #1928
      • Inbox: a words-only Send where one session asked twice stays words-only; the phone contract states when a Send skips by @backnotprop in #1929
      • Inbox: a message's images on the phone door, with an ETag and 304 by @backnotprop in #1930
      • Inbox: video attachments you can watch and comment on by @backnotprop in #1931

      Full Changelog : v0.28.20...v0.28.21

    8. πŸ”— HexRaysSA/plugin-repository commits sync repo: +3 plugins, +6 releases, ~1 changed rss
      sync repo: +3 plugins, +6 releases, ~1 changed
      
      ## New plugins
      - [IDA-MCP-Hub](https://github.com/captain-ai-hub/ida-mcp) (0.9.3, 0.9.2, 0.9.1, 0.9.0)
      - [const-loader](https://github.com/tien0246/constloader) (0.1.0)
      - [functionloader](https://github.com/tien0246/functionloader) (0.1.0)
      
      ## Changes
      - [IDA-MCP](https://github.com/captain-ai-hub/ida-mcp):
        - 0.6.0: archive contents changed, download URL changed
      
    9. πŸ”— r/LocalLLaMA New TTS king in town: Fish's Drama 3 35B3A! rss

      New TTS king in town: Fish's Drama 3 35B3A! | Yesterday Fish released this incredible text-to-speech model, so naturally I spent the rest of the day building a great demo for them :D The model is a chunky MoE (35B3A), but it runs well on a DGX Spark. The 4bit quants get very close to the original. You can try it here: https://huggingface.co/spaces/fishaudio/Drama-3 or download the model and run it locally πŸ€— submitted by /u/futterneid
      [link] [comments]
      ---|---

    10. πŸ”— Console.dev newsletter WorkOS rss

      Auth and access control.

      What we like: Pre-built UI and widgets, but with APIs for full customization of auth flows. Delegate credential storage for third-party logins and mint access tokens on demand. Handles agent auth, SAML, SSO, etc. Complementary features like audit logs, secrets vault, impersonation, access controls.

      What we dislike: Verifying sessions across language boundaries e.g. from web / JS to a Go API backend requires some extra work to implement.

    11. πŸ”— Console.dev newsletter GoNIX rss

      UNIX with a Go userspace.

      What we like: Init, coreutils, networking, etc all written in Go. Statically linked. Includes a package manager, also written in Go. Can upgrade running systems in place. Built on the Linux kernel, then the Go init becomes PID 1. Supports both server and (Wayland) desktop. Website is served by GoNIX itself.

      What we dislike: Does have to build some C, which it does with musl.

    12. πŸ”— Rust Blog Announcing Rust 1.99.1 rss

      The Rust team has published a new point release of Rust, 1.99.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.

      If you have a previous version of Rust installed via rustup, getting Rust 1.99.1 is as easy as:

      rustup update stable
      

      If you don't have it already, you can get rustup from the appropriate page on our website.

      What's in 1.99.1

      Rust 1.99.1 fixes the following regressions from prior releases:

      • Missing symbol wcslen: Some Rust targets were getting link errors for missing wcslen, and that function is now present in Rust's compiler-builtins library as a fallback.

      The LLVM loop-idiom-wcslen pass may introduce calls to wcslen as an optimization, and some Rust targets did not have that function readily available in libc or elsewhere. The UEFI targets in particular were broken for any project using std, as some of these calls were introduced in the precompiled standard library, but the issue was also reproducible for similar user code patterns.

      • Miscompilation of FFI bool return values on x86_64: Rust functions returning bool through FFI could leave bits 1-7 of the return register unspecified, causing callers to observe raw values other than 0 or 1. This return type is now marked for zero-extension again, as required by the ABI.

      • rust-lld failed to load libLLVM on macOS: This linker could fail to run if the compiler was invoked without the rustup proxy, as there was no direct setting for the appropriate library search path. Now rust-lld is built with an rpath entry for the directory containing libLLVM.dylib.

      If you'd like to help us out by testing future releases, you might consider using the beta (rustup default beta) and nightly (rustup default nightly) channels locally and in your CI. Please report any bugs you might come across!

      Contributors to 1.99.1

      Many people came together to create Rust 1.99.1. We couldn't have done it without all of you. Thanks!

    13. πŸ”— Will McGugan The Living Mountain Chapter 2 rss

      2. Sealg

      Calum reached the Land Rover first, panting from the thrill of defying his parents. He climbed into the driver seat as a child might tackle a climbing frame. Alastair followed, carrying with him a bundle of something wrapped in a blanket, which he casually tossed onto the back seat. Only two years older than Calum, Alastair was as tall as a full-grown man and swung himself in without effort.

      β€œYou got it?” asked Calum.

      β€œOf course I fucking got it. What do you think that is in the back seat?”

      Calum looked at the bundle in the back. The blanket had slipped off, exposing gun-metal as dark as a shadow against the back-seat fabric.

      β€œFuck. Keys! Where does he keep them?” Alastair scanned the interior of the Rover. He pulled down the sun-visor. Nothing. He reached into the glove compartment, digging through the assortment of objects he found there. A spanner, a lighter, map, and finally car keys, which he held up and jingled playfully. β€œFuck, aye,” Alastair said, grinning. He slid the keys into the ignition and stopped. Then he turned to Calum who recognized the wide-eyed look. Like a cat about to pounce.

      As much as Calum had managed to avoid the extremes of their parent’s wrath his brother was adept at invoking, he suspected his reputation as the good brother would not be enough to protect him from the consequences of this night-time jaunt they had planned. Leaving the house and taking the Rover without permission would earn them both a hidingβ€”but taking the Browning was beyond forbidden. There was no precedence for such a transgression.

      It wasn’t too late to turn back. Dad was in the living room digesting dinner and drinking lager, oblivious to the whereabouts of his sons. They could restore the shotgun to its place on the top of the rack in the shed and return to their shared bedroom without their parents suspecting a thing.

      β€œHe loves that shotgun,” Calum noted. The Browning B-80 was Dad’s favorite amongst his guns andβ€”Calum suspectedβ€”his favorite amongst his children. He had spent the previous evening polishing the walnut stock with hard wax oil until the mottled wood grain gleamed.

      Experienced hunters by they time they reached their teens, the boys were no stranger to guns. Alastair in particular delighted in shooting rabbits and regularly re-stocked the freezer with venison. Taking one of the other half dozen shotguns or rifles in the shed without permission would have been considered a misdemeanor at most. But not the Browning. Dad would take that personally. A point Calum thought to raise with his brother before it occurred to him that offending their father was rather the point.

      Alastair didn’t say a word as he turned the key in the ignition. The engine turned over and the cabin rumbled. This would surely rouse their father who could hear a car engine from half a mile down the mountain. Alastair put the vehicle into reverse and turned around in the driveway a little too fast, knocking over his mother’s plant pots which shattered and spread dirt over the driveway. Facing the gate, Alastair put the vehicle into first, stopping short of engaging the clutch. The gate to the farmhouse was closed. No lock, just a latch built from the same cast iron as the gate itself and as solidly constructed. There was no time to get out of the Rover, open the gate, and return to the Rover for a quick getaway. Not before his father was there to grab both of them by the scruff of the neck. Calum saw only two options. They could stop and face the music, perhaps using a last-minute change of heart as a bargaining chip to reduce their collective punishment. The second option would be more dramatic and almost too ridiculous to consider. Even before Calum had thought it through he knew that to Alastair, who invariably chose the path of greatest chaos, there was only one option.

      β€œNo”, Calum said, meekly.

      β€œI’m doing it.”

      Alastair engaged the clutch and floored the accelerator as the farmhouse door swung open to the silhouette of their father. Dirt and gravel kicked up from the back wheels. Alastair turned the vehicle away from the gate as they accelerated, aiming for the fenceβ€”much to Calum’s relief as the sturdy gate was cemented into the ground. Calum braced himself against the dash as the Rover’s grill collided with the fence, sending a starburst of sparks into the air. The Rover pulled away from the farmhouse, their father standing in the doorway, back-lit and casting a long shadow over the crushed fence and ruined flower beds.

      Alastair, watching the rear view mirror, gestured a raised middle finger behind him just as soon as he felt they were far enough away for his father not to see it.


      β€œDid you see those sparks?” asked Alastair. Calum, barely able to assemble words into a sentence after all the excitement, agreed with a vigorous nod. β€œJust like the A-team,” Alastair continued, β€œNo. Dukes of Hazard. Hey, do you think we could get some air-time in this thing?”

      Calum giggled. The Land Rover felt as anchored to the ground as the granite boulders that littered the slopes of Ranoch. Implausible as it seemed, the imagery of them jumping a gulch while being pursued by a cavalcade of cop cars had them both in hysterics.

      The Rover reached a fork in the gravel track. One branch turned into single lane tarmac and would take them into the village. The other carried on snaking upwards into the mountain. Alastair braked and put the Rover in neutral.

      β€œHave we got any food?” asked Alastair. They had just eaten dinner, but it would be a long night ahead of them.

      β€œThink so,” Calum said, β€œDad always keeps biscuits in the Rover.” He fished around in the door bin and pulled out a long cylinder of Rich Tea biscuits, about half of which had been eaten.

      β€œIs that all?”

      β€œAfraid so,” Calum confirmed, mournfully.

      β€œLet’s go into town and get a chippy for later,” Alastair said, putting the Rover into gear.

      β€œWe can’t do that. Somebody might see you.”

      β€œSee me doing what? Buying chips?”

      β€œDriving without a license.”

      Alastair cursed. On the mountainside, nobody cared about him drivingβ€”it was common for the children of the handful of families still living on Ranoch to be regularly driving in their teens. Even the local police would turn a blind eye beyond the farmhouse where there were few roads, and even fewer cars. But on council roads about town, a boy of barely sixteen driving a Range Rover would be challenged. Reluctantly, Alastair turned the wheel in the opposite direction. Calum wasn’t sure if Alastair wanted to avoid being arrested or simply didn’t want to risk missing out on the evening he planned for all of three hoursβ€”pretty much the extent of the boy’s ability to think ahead. Alastair banged the steering wheel with two fists. β€œFuckin’ hell. I can drive better than half the old farts in the village,” he protested.

      Calum had observed his brother’s mood could change quickly like that. From cheerful to angry and bitter, like flipping a coin. If Calum didn’t do anything, Alastair might be stuck in that bad mood for the rest of the night, and that would not bode well for either of them. Alastair wasn’t always so volatile. Before he started clashing with Dad, the boys were close and often the only source of entertainment was each other. They spent many days playing silly games on the mountain which invariably resulted them coming home mucky from head to toe. That was before the fights; shouting matches with Dad that resulted in Alastair being confined to his room, often after a belting that left angry streaks criss-crossing his buttocks. He claimed it didn’t hurt that much, but Calum saw something change in his brother with every application of the belt. He became sullen, less joyful, with a tendency for random cruelty. Lately he had taken to giving Calum a β€œknuckling”—a knuckle forcefully dug between Calum’s ribs with a twist to maximize discomfort. He did it with such regularity that he often hit a bruise from the previous knuckling.

      β€œThere is beer in the boot,” Calum offered. He had helped his mother carry an entire pack of beer from the village shop to the Rover that day. Twelve tall cans of strong lager, of the brand their father like to drink while watching television. The pack was heavy, and the fridge was full, so it remained in bootβ€”and would still be there.

      β€œSeriously?” Alastair’s tone lightened.

      β€œAye,” Calum confirmed.

      β€œFuck aye, little brother!” Alastair floored the accelerator and tore the Rover up the mountain, kicking up fresh gravel behind them.


      Alastair followed the gravel track uphill, in what seemed like a route scribbled on paper by a toddler. Never a straight line, sometimes the track crossed a stream, only to cross back to the other side a few yards later, then deviate around an outcrop of rock, briefly pointing away and not towards the summit where they were heading. Dad explained to them as young boys that the route was not planned, rather it was worn in by successive generations of vehicles seeking to minimize the incline.

      What little second-hand sunlight they had when setting out soon diminished, leaving only the Rover’s headlights to illuminate the trackβ€”so overgrown to the point it that it became hard to distinguish from the heather and grass that surrounded it. The boys talked as they drove. Mostly it was Alastair lamenting about the new girl in his class, Catriona with black hair, who had taken to teasing him about his name. Alastair Alastair, Alistair MacAlastair , she would chant, much to the delight of the other kids in class, who gleefully joined in. Kids that would previously have been too afraid of Alastair to tease him like that were now saying it directly to his face, and he could do nothing about it because hitting a girl was shameful. To make matters worse, he liked Catriona, who he described as a stoater while also telling Calum she wasn’t that pretty. When it came to girls, Alastair rarely made any sense to Calum and had learned it was best not to point out such contradictions.

      Calum slowed the Rover to a crawl. Leaning over the steering wheel, he admitted that he had probably lost the track ten minutes ago. They had been heading for a plateau around two thirds of the way to the summit where there was a car-park of sorts and a few decaying picnic tables placed there for hikers and day-trippers. It had served as the starting point for the Sealg for many years, but it didn’t look like they would reach it without back-tracking and Alastair was not one for back-tracking.

      β€œWhere are we?” Calum asked.

      β€œNo fuckin’ clue. But this is a good spot. Those old farts don’t know everything.” Alastair parked and left the Rover. He returned with two cans of lager, handing one to Calum. β€œDrink up bro. It puts hair on your balls.” The brother’s drank and ate the biscuits. Alastair drank with gusto, while Calum sipped. Calum didn’t much care for the bitter drink and would have chosen a Cola given the chance. Alastair finished his lager with a satisfied ahhh. β€œIs it time?”

      Calum checked his watch. Well past sun-down. β€œIt’s time,” he confirmed.

      β€œLet’s do it.” Alastair jumped out the Rover. Calum followed, leaving behind half a can of lager. Alastair surveyed the contents of the boot and reached for another can of lager. β€œOne for the road,” he said, depositing the can in an army-surplus ruck-pack then adding another lager for good measure. β€œWhat else?”

      β€œTorch.” Calum said.

      β€œAye. Torch. You numpty. It’s dark.” Alastair fished out the camping torch, switched it on and banged the red plastic housing. The torch was the kind with a handle and a big square battery that could last several hours on a single charge. Calum was concerned it might not be fully charged, but it seemed pointless to raise that concern to Alastair who was clearly committed to the enterprise and would in all likelihood do it in the dark if he had to. β€œHere, you carry these,” Alastair said, handing Calum the backpack and torch.

      Alastair retrieved the Browning from the back-seat and stuffed the blanket and loose shells into Calum’s rucksack. They set out facing the summit, Ranoch village at their back.


      Alastair walked with the business end of the Browning resting on his shoulder, while Calum held a little back, keeping the torch leveled on the terrain ahead. Alastair talked as they walked, mostly about Catriona and how annoying she was, while Calum focused on his flashlight duties. Behind them, the Rover grew smaller and dimmer, finally merging with the night sky. With the Rover out of view it felt as though they were adrift in an ocean of heather. Unsure of what lay ahead, the boys continued their march up the bank of the mountain in silence.

      The brothers reached an outcrop of exposed granite, its feldspar flecks caught the torchlight like tiny Christmas lights. β€œBreak time,” Alastair said, setting the Browning down next to the rock. He pulled out a lager from Calum’s rucksack, offering it first to his brother, who declined with a hand gesture, before cracking it open and taking a gulp himself.

      β€œWhat if we don’t find anything?” Calum asked.

      Alastair swallowed a mouthful of lager and hesitated before speaking. β€œIf we don’t find anything, then—” he left his response hanging, building suspense in Calum who suspected his brother had started the sentence before knowing how he would complete it. β€œβ€”then we join the French Foreign Legion,” Alastair said with a sense of satisfaction. It was an in-joke. Calum had told Alastair about the French Foreign Legion, which Calum himself had learned about from a novel. β€œMon Dieu, Pepe le Pew,” Alastair said. They both laughed at Alastair’s cartoonish French accent. The joke confirmed that Calum’s suspicions that his brother’s plan was as reckless as it seemed and without consideration for the consequences.

      The boys reclined against the rocks, while Alastair drank. Ranoch village was visible in the distance as a yellowish bloom of light from a smattering of street-lamps and windows. The emerging full-moon lifted the landscape just enough to make out the topology of the mountain slope which somehow seemed disconnected from the tiny village as though Ranoch mountain and Ranoch village were separate ethereal realms and not a single land mass.

      β€œPretty,” Calum remarked.

      Alastair laughed. β€œAye, its pretty. But we are not tourists. Our mission is a sacred one, entrusted to us by our fore-fathers.” Alastair mimicked his Father’s pompous tone, expecting to elicit a laugh from his younger brother. Calum didn’t respond to his brother’s jape. He had heard a noise from a little further up the mountain and had turned his head to listen for it. β€œWhat is it?” asked Alastair.

      Calum held up a hand to silence his brother. There it was again. The noise he had heard moments ago, repeated. Unmistakably it was a growl produced by an animal. β€œGet the Browning,” Calum said, coldly.

      Alastair grabbed the Browning propped up against the rocks. They walked slowly in the direction of the noise, while Calum scanned the foreground with a beam of focused torchlight.

      Alastair hadn’t yet heard the noise for himself. β€œIs it a brollachan?” he asked.

      β€œDo they growl?”

      Alastair admitted he didn’t think so, but held the shotgun in front of him all the same. The brothers walked steadily forward, intent and silent, approaching the source of the growls which had grown louder andβ€”in the brother’s mindsβ€”angrier. They traced the sound to a mound of dirt, not so far away. Alastair raised the browning to eye height, carefully lining up the sight-bead with the mound as they stalked. The growls stopped before they reached the mound. Concerned they had been spotted, the brother’s froze in their tracks. Then a pair of piercing eyes suspended in a stout face erupted from behind the mound. Alastair pulled the Browning trigger which clicked impotently. Calum yelped, nearly dropping the torch.

      β€œBadger!” Calum said, noting the round body and sturdy legs of the creature bolting up the mountain out of reach of the torchlight.

      β€œFuckin’ badger,” Alastair said, lowered the Browning. He looked to his bother, sheepishly. β€œForgot the shells.”

      β€œYou would have got him.”

      β€œDamn right I would have got him. Blown him to Smithereens.”

      β€œWhat was it growling at?”

      β€œI don’t know, bro. Do I look like David Attenborough?”

      They walked the remaining few feet to the mound of dirt which had clearly been excavated from an adjacent pit. There, something or perhaps several somethings moved beneath the soil.

      Alastair set the Browning down, knelt in front of the pit, and began brushing lose dirt away from the surface while Calum stood over him holding the torch. Calum couldn’t help but admire his brother’s nerve; he doubted he would have the guts to dig in a hole without knowing what manner of creatures were down there.

      Alastair swept a final layer of dirt aside, revealing fingers. Human fingers. Slender and pale, they were moving, clawing at the earth, part of a hand apparently trying to dig its owner free.

      Alastair scrambled to his feet.

      β€œHoly fuckin’ shit. It is a brollachan. Has to be. Jesus, fuck.” He grabbed Calum and spun him around to retrieve a handful of shells from the rucksack. Alastair’s hand shook as he loaded the shotgun, at one point dropping a shell which almost ended up in the pit. He leveled the fully loaded shotgun at the pit, looking down at the hand clawing at the dirt. Another hand appeared near the first, peaking through the surface, moving in the same way. The brothers stood watching the coordinated motion of the hands.

      β€œIt’s like it is swimming,” Calum remarked.

      β€œAye. Swimming in dirt.”

      β€œIs that how they all come out?”

      β€œDad never said. I think this is the first time anyone caught a brollachan before it hatched.”

      β€œAre you going to shoot?”

      Alastair lowered the gun. β€œNo point.” He explained to Calum that when a rabbit went to ground there was no getting it. Shotgun pellets would shred the rabbit, but wouldn’t go far in dirt. The brollachan may as well be wearing a suit of armor while it was stuck in the ground.

      β€œShould we dig it out?” Calum asked.

      β€œNo, dummy. It will bite us.”

      β€œRight.”

      β€œWhat are we going to do?”

      β€œWe wait until it digs itself out. Then we shoot it.” Alastair spoke with an air of certainty Calum had never observed in his brother before. For once he didn’t seem to be winging it.

      The boys retreated to vantage point a little further up the hill where they watched the hands swimming in the filth and the mud, leaving a slow-motion wake of dirt. Gradually forearms were revealed. Pale skinned and caked in dirt, the arms writhed as they shoveled the peaty earth at a greater rate that the hands could alone. Later, the top of a head was exposed, topped with a tangled mass of matted hair.

      The boys watched intently, fascinated by the progress of the creature being birthed by the mountain in front of them.

      β€œHave you ever seen one. You know. Close up?” Calum asked.

      Alastair admitted he had not. Of the three hunts he had been on, he had only ever seen a brollachan wrapped in tarpaulin, bundled and tied in the back of a truck. Dad was always been quite vague as to the appearance of the brollachan, but he had once asked his Uncle Joey who described his killβ€”a particularly vicious specimenβ€”as having frog eyes, a mouthful of fangs and an forked tongue like an adder. Alastair related the story to Calum. β€œThat’s why you have to get them early,” he explained, β€œchangelings could become anyone and you would never know they were a brollachan. But when they hatch they are like monsters.”

      Calum had heard this explanation before. It was family lore. His family, his uncles, and the neighbors on Ranoch. Homesteaders, game-keepers, and others living on the mountain who could trace their family back to the local area for generations. They defended the good Christian people against the brollachansβ€”creatures that devoured children and would take on the appearance of the villagers to spread wickedness should they escape the mountain. He had read similar tales in the second-hand novels he liked to read in his bedroom. Different monsters, different good-guys, but not all that different to the tale of the Christians versus the brollachans he had grown up with. So similar, that he had started to doubt brollachans were real at all.

      The Sealg was real enoughβ€”he knew that much. His uncles came round when the moon was full. They ate, they drank, they prayed, then they piled into trucks with their shotguns in high spirits and left. On hunt nights Calum would hear distant gunfire muffled and echoed in the night air. Dad would return in the small hours with a story of his or Uncle Joey’s bravery defending the mountain against the changelings. Calum had never seen any evidence of brollachan and concluded they were hunting ptarmigan which would appear in the freezer the next day. He never raised his suspicions with Alastair and at that moment was glad he did not. A brollachan hatching in front of his eyes was all the proof he needed.

      In the pit, the brollachan had squirmed and excavated enough dirt to expose a head, caked in mud and tangled hair, hiding its features from Calum’s probing torchlight. Alastair moved to the edge of the pit, kneeling as close as he dare. Dangerously close to falling in it seemed to Calum.

      β€œCareful,” warned Calum.

      β€œGet the beer,” Alastair said, ignoring Calum’s concern.

      Calum placed the torch on the ground so that it still illuminated the pit and bounded downhill to retrieve the beer. He didn’t quite understand Alastair’s need for the drink, or is father’s for that matter, but he had learned not to dally when his father requested a beer and extended the same privilege to his brother. Back at the pit, he handed the half can of lager to his brother. Alastair didn’t drink from the can. He poured the lager over the creatures face, washing away some of the grime. Then, in what appeared to Calum an act of immense bravery, Alastair began wiping at the remaining dirt and moving strands of hair away from its face. The face revealed from the beer cleansing was not monstrous. Its feature were soft, delicate, unmistakably feminine.

      β€œIt’s a girl,” Calum said. The creature raised an arm which was entirely free at that point. For a moment, Calum feared it would grab his brother by the throat and throttle him, but its hand merely rose to shade its eyes from the torch Calum had trained on its face.

      β€œIt’s not a girl. It’s a brollachan.”

      β€œBut why does it look like a girl,” Calum protested, β€œwhere’s the frog eyes and fangs?”

      β€œIt’s a brollachan.” Alastair’s tone was somber and resolute, telling Calum not to press his doubts any further. Alastair went back for the Browning. After checking a round was chambered he returned to the pit where he stood over the creature, barrels aimed squarely at the creature’s head. β€œYou’re only a man on Ranoch after you bag your first brollachan,” Alastair said, sounding for all the world like their father. Alastair said again, β€œYou’re only a man on Ranoch after you bag your first brollachan.” Calum heard him perfectly the first time around.

      Calum wasn’t at all certain the creature was a brollachan. If it didn’t have frog eyes and fangs how could they be sure? But then he knew that a real person would have suffocated under all the dirt. If it wasn’t a person, what else could it be but a brollachan? The frustrating circular reasoning froze him to the spot, unable to act, desperate for new information that might allow him to break out of the cycle.

      Through gritted teeth Alastair said, β€œYou are only a man. On Ranoch. After you bag your first… brollachan.” The face in the pit looked up at Alastair as he spoke. The creature’s expression was without malice or any emotion that Calum could discern. It had stopped digging itself out of the earth and was gazing up at Alastair as though waiting for something. Alastair met its gaze down the barrel of the Browning.

      Calum looked on, unable to see the face in the pit as anything other than a young woman. β€œAlastair. No. Don’t do it,” he pleaded.

      After what felt like an eternity to Calum, his brother sighed, breaking eye contact with the face in the pit and lowering the gun. β€œFuck you, Dad,” he said. Alastair placed the gun on the ground before climbing into the pit where he began excavating dirt around the creature’s limbs with his hands. He worked with the zeal of a life guard pulling an incapacitated swimmer from of the ocean. Calum joined his brother ripping tangled roots and hurling clods of dirt out of the pit. Soon the torso was exposed and the girl-creature was revealed to be more girl that creature. With the weight of dirt removed from her upper body, the girl was more able to contribute to digging and was soon wriggling free while the boys worked around her. Once she pulled her legs free, the girl climbed out of the pit after the boys, partially aided by Alastair who extended a hand and pulled her over the threshold of the pit.

      Out of the pit, there was nothing to suggested she was anything other than a flesh and blood girl, naked, filthy, and shivering in the cold night air. Calum ran to get the blanket from the rucksack which he draped over the girl’s shoulders for warmth and to cover her nakedness.

      β€œLet’s get her to the Rover,” said Alastair.

      Calum agreed. He didn’t have any other suggestion to offer. The night had become a rescue mission, and getting the girl to safety suited him much better than a hunt.

      With Calum back on torch duty, the boys made their way back down the mountainside. Alastair with his arm around the girl holding blanket in place, guided her over the rough train. With the Rover in view, Alastair handed Calum the keys and suggested he go get the engine started and turn on the heating.

      Calum bounded down the mountain in the direction of the Rover which he found where he expected it to be. Climbing in the driver side, he turned the ignition and switched on the heater. Soon warmth radiated from somewhere behind the dash. When Alastair arrived with the girl, he opened the passenger side door and guided her in, before joining her on the oversized passenger seat of the Series III.

      β€œDrive safe little brother. Catriona has had a rough night,” Alastair said.

      β€œCatriona?”

      β€œThat’s her name. She’s from Ireland.”

      Catriona turned to Calum and spoke, with a gentle Irish accent. β€œThat’s right. I grew up in Belfast.”

      Calum was taken aback by the strange coincidence she had the same name as Alastair’s girl-enemy at school, but concluded that was the least odd thing about her presence that night and said nothing about it.

      Calum adjusted the driver seat for his smaller frame and turned the Rover around, choosing to focus on the driving rather than dwell on the strange events of that night. Soon enough he located the track they had lost earlier.

      As Calum drove, peering over the steering wheel, his brother talked with Catriona about many things: his love of western movies, his aptitude for sports and distaste for mathematics, but never how she had come to be buried in the peat. It seemed a strange omission to Calum who considered asking her himself, but the pair were engaged such an intense conversation as to never allow Calum the opportunity. By the time the farmhouse was in sight, Alastair and Catriona were laughing and giggling like firm friends.

      At the farmhouse the gate was open and the house lights were all on. Calum guided the Rover up the driveway over the tire-marks they had made earlier. They parked a short distance from the front-door.

      Calum jumped out while Alastair helped Catriona down from the Rover and lead her to the door, where their parent’s stood like sentinels guiding the entryway.

      β€œThis is Catriona,” Alastair said.

      To Calum’s surprise his parents welcomed them in without another word from him or his brother. It was like he wasn’t thereβ€”his father, smiling broadly, put an arm around Alastair while Catriona was ushered away by their mother.

    14. πŸ”— New Music Releases Above & Beyond - Nights Like This rss

      Above & Beyond - a new release is available:

      • 2026-10-15: Nights Like This (Single)

      Amazon: Canada | Deutschland | France | United Kingdom | United States

      Visit muspy for more information.

  3. October 14, 2026
    1. πŸ”— IDA Plugin Updates IDA Plugin Updates on 2026-10-14 rss

      IDA Plugin Updates on 2026-10-14

      New Releases:

      Activity:

      • capa
        • 804c8893: ci: key vivisect workspace cache only on inputs that affect .viv files
        • 9863ff5f: ci: test macos-15-intel only on Python 3.10
        • 9cf793ab: build(deps-dev): bump build from 1.5.0 to 1.6.1 (#3180)
        • 2928304a: build(deps): bump postcss-selector-parser and eslint-plugin-vue in /w…
        • 0f55fb73: ci: replace deprecated node20 actions with gh CLI and harden workflow…
      • idamcp
        • d7de12a5: Merge pull request #30 from doomedraven/windows-agy-install
      • mcrit-plugin
        • 10e278dc: Bump the actions group with 3 updates
      • omppp
        • 5cc1299c: chore: bump version to 1.11.8
        • ba6ef1a1: Merge PR #249: ci: shard native/unit tests on every event and de-race…
        • 45a76e49: test: wait for the ctime tick without a real timer
        • 5f38318b: ci: shard native/unit tests on every event and de-race the archive ca…
        • cb369b78: Merge PR #248: fix(security): bump rustls to 0.23.46 (@qtnx)
        • 0e0dee79: chore: refresh MODULE.bazel.lock for rustls 0.23.46
        • e4057cef: fix(security): bump rustls to 0.23.46 for RUSTSEC-2026-0346..0349
        • 5f149d93: Merge PR #247: fix(security): clear OSV findings from the upstream 18…
        • f1988dff: fix(security): clear OSV findings from the upstream 18.10.3 sync
        • 2184d359: Merge PR #246: sync: merge upstream/main 18.10.3 into OMPx 1.11.7 (@q…
        • a15faa9a: test: align explore tool surface and install smoke with structured ta…
      • ToCode
        • 5999db18: Merge pull request #19 from buzzer-re/dev
        • d2e253b5: Merge pull request #18 from buzzer-re/dev
        • 59bbe1f4: Release 0.3.1
        • 05a69ae4: Export folder binaries in parallel
        • 20e314a1: Merge pull request #17 from buzzer-re/dev
        • eab2ee11: Simplify the README
        • 5f4e8145: Add headless and MCP Binary Ninja backends
    2. πŸ”— Quarkslab's blog Internship Offers for the 2026-2027 Season rss

      We also welcome people with wide but realistic creativity, so if you have an idea and want to join the team, don't hesitate to reach out to discuss it with our experts!

      Our goal is to publish most of the results of our internships. Here are some examples of publications from previous internships:

      Quarkslab's team is always pleased to welcome new talents who want to work on complex security research subjects. If you want to face new challenges and work in a dynamic environment where curiosity and teamwork are at the heart of our way to do R&D, please apply!

      In particular, we would be very happy to welcome more applications from female candidates, and under-represented minorities. Quarkslab is dedicated to making the cybersecurity world more welcoming and inclusive for all, and that starts with our internships.

      With that in mind, and because we know impostor syndrome is a big obstacle for women in particular -- we've been there -- don't hesitate to reach out to us at icandoit-AT-quarkslab-DOT-com to discuss your skills, and we will help you navigate our offers.

      How to Apply?

      To apply for an internship position, you must be a student , able to efficiently communicate on technical matters in written and spoken English, and willing to present the results of your internship to a large group of curious Quarkslab colleagues. Beforehand, you need to prepare the following elements:

      • A resume;
      • A cover letter: avoid the generic letter saying that you are so motivated and that we are so interesting. We welcome a more personal letter which explains why the topic is of particular interest to you, why you, and why us;
      • Your proposed solution to the assignment attached to the offer you are interested in.

      Package these elements and send them via email to internship-AT-quarkslab- DOT-com, with the subject field containing the internship name mentioned in the respective offer.

      Do not forget that the key aspect of a good application is being curious and motivated, not meeting all requirements listed in the offers below should not prevent you from sending us your application, and we can discuss your skills. Keep in mind that internships are meant for learning. Let's go!

      Selection Process

      Each internship offer comes with a little assignment that should not require too much time to be completed. The result will show us not only the type of skills and knowledge you already possess, but also how ingenious you are and how well you can present your reasoning. It will serve as the basis for the interview you will have in the selection process. The assignment works both ways and is also intended to make sure that you like the topic as well as the technical aspects of the internship. If unsure about a specific aspect of a challenge, do not hesitate to drop us an email. We are open to discussion!

      The first applications usually reach us a few days after publication, and we start reviewing them right away. Some internships are filled before the end of the year, while others remain open until March.

      Did you notice the colored circles next to the title of the offers at the top of this blogpost? They reflect the state of internships:

      • 🟒 Waiting for applications;
      • 🟠 Reviewing applications, we are still accepting internship assignments but hurry up;
      • πŸ”΄ Internship is filled.

      Being an Intern at Quarkslab

      Training and helping people grow in the security industry is part of the company's DNA. That is why we provide in-depth blogposts, tools, trainings, weekly internal conferences (called Fridaycon, guess when they are), we teach in universities and schools and write articles in tech magazines. Sharing is caring, but sharing is also learning. We provide the environment for that and the rest relies on you.

      Intern package in France:

      • Salary: €1800 gross per month (approximately €1550 net);
      • "Tickets restaurant" (restaurant coupons);
      • In-depth and challenging topics.

      Internships Topics

      🟒 Vulnerability assessment and exploitation of a Telematic Control Unit

      Description

      Since 2016, every new model of vehicle sold in Europe should be equiped with an eCall module, that provides voice and data connectivity for emergency services. This was an important milestone in the connectivity of road vehicles, as manufacturer are using this data capability to enhance the driver experience, with live information, remote control, ...

      Therefore, the telematic control module (TCU) is a key element in the security of a car, with a permanent 3GPP connectivity. From this perspective, questions arise:

      • Are these modules secure enough to prevent an attacker to get a remote access to a vehicle ?
      • What kind of data are transmitted to backend server, brokers, and what could be the impact from a privacy point of view ?

      During this internship you'll focus on one or two telematic control unit, to get an understanding on how they work, analyze communications and evaluate the maturity of their security features.

      Required Skills

      • ARM reverse engineering (intermediate)
      • Fuzzing (basic to intermediate)
      • Programming: Python, C

      What you will do

      The goals of this internship are:

      • Extract and analyse the operating system of a telematic control unit
      • Reverse-engineer targeted binary to understand how the device communicate with the backend
      • Analyze the TCU baseband

      Assignment

      Download the assignment.zip file and follow the instructions in assignment.md.

      Duration

      6 months

      Location

      Paris, France


      🟒 Vulnerability assessment and exploitation of satellite communication

      systems

      Description

      This internship focuses on the practical security analysis of satellite communication systems, starting from the completion and operation of an existing ground station project.

      The first objective will be to finalize the ground station setup and validate its ability to receive and process satellite signals. The intern will then use the station to capture and analyze real satellite communications , identify the protocols and implementations in use, and understand the different layers involved in the communication chain.

      From these observations, the intern will study the security properties of the identified protocols and software implementations, map potential attack surfaces, and investigate possible weaknesses or vulnerabilities.

      Depending on the results, the project may include reproducing known vulnerabilities, analyzing protocol weaknesses, developing test or fuzzing environments, and experimenting with potential attacks in a controlled environment.

      The overall objective is to follow the complete path from signal acquisition to security research , combining radio communications, protocol analysis, reverse engineering and vulnerability research.

      Required Skills

      • Programming: Proficiency in Python, C/C++, or similar languages.
      • Cybersecurity: Understanding of vulnerability research, reverse engineering, and security assessment techniques.
      • Networking & Protocols: Familiarity with communication protocols and packet analysis.
      • Research: Ability to investigate unfamiliar technologies, read technical specifications, and independently formulate hypotheses.
      • Radio/SDR knowledge: Familiarity with SDR or digital communications is appreciated but not mandatory.

      Assignment

      Choose a publicly documented vulnerability from 2022 or later affecting a space-related protocol, software component, ground station, or satellite communication system.

      Rather than simply summarizing the CVE:

      1. Analyze it: Explain where the vulnerable component fits within a realistic satellite communication architecture, the root cause, and what an attacker would realistically need to exploit it.
      2. Investigate it: Perform a small technical experiment: analyze the vulnerable code and its patch, reproduce the behavior, build a test harness, craft an input reaching the vulnerable code path, or propose another relevant experiment.
      3. Go beyond the documentation: Identify one question or hypothesis that is not answered by the CVE/advisory and explain how you would investigate it.

      A successful exploit is not required. We are more interested in your technical reasoning, methodology, observations, and ability to investigate an unfamiliar system.

      You may use AI tools during the assignment. Briefly indicate how you used them and describe at least one AI-generated suggestion or conclusion that you verified, corrected, or rejected , and explain why.

      Duration

      • 6 months

      Location

      Paris, France.


      🟒 Protections against dynamic attacks for firmware

      Description

      If you like playing cat and mouse and getting your hands dirty, this internship is for you!

      At Quarkslab, we have been developing application protection tools since 2014, featuring obfuscation and runtime application self-protection (RASP). One of these tools (QShield App Protection) relies on a compiler framework, LLVM, and comes as a replacement for the regular compiler used by our customers.

      While desktop and mobile targets have been supported for several years, supporting embedded targets is more challenging, due to the variety of situations.

      The goal of this internship is to ~~help the QShield team~~ improve ~~both~~ the level of protection for the IoT/embedded domain by developing sensors to detect dynamic attacks.

      For that you will need to reproduce the setup of attackers, analyze the weaknesses of the tooling they use, and develop proof of concepts to detect them or prevent their usage. You will then integrate them in our software protection tooling.

      Required Skills

      • Have an experience in building a firmware or a static library for an embedded device, and playing with compiler options.
      • Have some familiarity with either Arm32 or AArch64 instruction sets.
      • Be able to demonstrate experience developing in C.
      • Have an interest in compilers and software protection or security (you don't need to be an expert in compilation ;) ).

      What you will do

      During this internship, you will:

      • research and develop detection or counter measures for dynamic tools/techniques used to reverse-engineer embedded software such as JTAG/SWD debugging, emulation with QEMU, dynamic instrumentation, etc.;
      • integrate them into our coverage testing infrastructure which ensures that the sensors behave as expected in different environments;
      • work on the integration in the development toolchains to improve the user experience.

      For that you will work with people with various skills, such as reverse- engineering, software development with huge code bases and testing them.

      Assignment

      Write a small bare-metal firmware for the Arm Cortex-M3 emulated by QEMU (qemu-system-arm -M mps2-an385). You don't need any hardware. Use any Arm toolchain (e.g. Arm Toolchain for Embedded or the GNU Arm toolchain), but no vendor SDK, HAL, IDE or RTOS.

      The firmware must:

      1. use your own linker script and startup code (vector table, reset handler);
      2. print its output through the board's UART (not semihosting);
      3. determine whether it runs on an emulator or on real silicon , using at least two independent checks , and print the verdict and the raw values it observed.

      Send us a zip containing:

      • the sources;
      • a Makefile (or CMake) where make run builds and runs everything;
      • the ELF;
      • a report of 2 pages at most that:
      • explains the boot sequence of your firmware, from reset to main;
      • for each check: what it reads, the value seen under QEMU, the value you expect on a real Cortex-M3 with a reference to the Arm documentation , and how an attacker could get around it;
      • describes at least one check that did not work, and why;
      • lists the tools you used, LLMs included, and what you checked yourself.

      This should take 3 to 4 hours. We don't expect a perfect detector: a check that fails, with a good explanation, is worth more than a long list of checks you can't explain.

      If you're selected, you'll run the firmware during the interview and we'll change it together, look at the binary, and discuss how to bypass your checks.

      Duration

      6 months

      Location

      Paris, France


      🟒 Development of tooling for fuzzing infrastructure

      Description

      Fuzzers produce a lot of output data and it can sometimes be hard to sift through the results. Furthermore, different fuzzing targets require different sets of tools which might not share output formats.

      To face this, you will implement an aggregator that defines a common format for integrating fuzzing results into a unified dashboard. On top of displaying fuzzing campaign results, the goal of this aggregator is to triage bugs for efficient vulnerability research. The methodology will be different for each bug class and target, so the system shall be modular to allow for the integration of different types of fuzzers on different platforms.

      Required Skills

      • Proficient in C, C++ for analyzing code, experienced in python, js, or others for development work
      • Deep understanding of fundamental bug classes in binary exploitation (buffer overflow, use-after-free, race condition, ...)
      • Good communication skills
      • Proficient in French and/or English

      What you will do

      Most of your work will be programming the dashboard with the help of LLMs when applicable. Alongside that, you will come up with ad-hoc strategies for automatically analyzing certain bug classes in a specific context and producing actionable insights.

      Assignment

      This assignment is mostly theoretical.and consists of two write ups:

      • A 5 page (maximum) document describing the state of the art of binary fuzzers. In this report, include a comparison of the different fuzzing methodologies available and their use-cases.
      • Pick any Android application that uses a native library to parse user-provided data, and write a small document on how you would fuzz that library.

      Duration

      6 months

      Location

      Paris, France


      🟒 Fighting Dynamic Binary Instrumentation

      Description

      If you like playing cat and mouse and getting your hands dirty, this internship is for you!

      At Quarkslab, we have been developing application protection tools (QShield) since 2014, featuring protections against static attacks (obfuscation) and dynamic ones.

      Among the latter, Dynamic Binary Instrumentation (DBI) frameworks such as QBDI, Intel Pin, DynamoRIO, WinDBG TTD and Frida have become foundational tools in software security, enabling fine-grained runtime analysis, tracing, and modification of program execution without requiring source code.

      While invaluable for legitimate purposes such as vulnerability research, malware analysis, and software testing, these same capabilities make DBI a powerful vector for reverse engineering, intellectual property extraction, and license or DRM circumvention when turned against commercial or sensitive software.

      As a result, anti-DBI techniques have become a critical component of software protection strategies. However, developing robust anti-DBI protections faces substantial technical barriers. DBI frameworks operate at a privileged level close to the CPU and OS, making their artifacts (timing anomalies, memory layout changes, code cache behavior) subtle and inconsistent across platforms and versions.

      The goal of this internship is to help the QShield team improve their current protections and develop new anti-DBI sensors.

      For that you will need to reproduce the setup of attackers, analyze the weaknesses of several DBI frameworks, and develop proofs of concept to detect them or prevent their usage. You will then integrate them into our software protection tooling.

      Required Skills

      • Be familiar with reverse-engineering.
      • Be able to demonstrate experience developing in C.
      • Have an interest in software protection or security.

      What you will do

      During this internship, you will:

      • research and develop detection or counter measures for DBI frameworks;
      • integrate them into our coverage testing infrastructure which ensures that the sensors behave as expected in different environments.

      For that you will work with people with various skills, such as reverse- engineers, and the developers of huge code bases and their testing infrastructure.

      Assignment

      • As a first step, you will develop a "hello world" Linux x64 binary that detects when it is being executed under this tracer.
      • As a second step, you will assess whether your solution still works if the tracer is modified to hide or alter the artifacts you rely on (for example a string identification), and propose a more resilient detection mechanism.

      Expected outputs :

      • A PoC in source code form (feel free to use the language you want), that builds cleanly on a standard Linux environment (dockerfile accepted), with no manual tweaking required.
      • A write-up in Markdown explaining the choices made for the PoC and detailing the second part of the assignment.

      Duration

      6 months

      Location

      Rennes, France

    3. πŸ”— exe.dev A Healthier Way to Snack on UI Work rss

      Snackingβ€”focusing on small, shippable tasks that make the product better but don’t necessarily help it growβ€”is addictive. Sometimes your main project is a slog. Why not take a break and fix something? You get that sense of accomplishment and suddenly your main project feels less daunting (the power of dopamine!).

      My guilty snack is UI work. I started out my career as a mostly front-end engineer. I would obsess over pixel-perfect designs and building a strong FE style guide (this was before they were even called style guides). Chris Eppstein’s Compass was my bread and butter. I’ve since moved on to other roles and I am not doing much front-end work these days. So how do I satisfy my cravings?

      I recently built a Figma-like tool called Radiant. Except, unlike Figma, Radiant is 100 percent agent-driven. It allows me to snack in a healthier way on UI work because it generates high-fidelity mockups based on prompts I provide. Also, instead of the traditional approach wherein someone gives the engineer a mockup that is either way out of scope or just technically infeasible, Radiant constrains itself to what our current code is capable of doing. Agents are great at scanning code and doing a deep dive on all the layers. So why not use that to our advantage when mocking up UI?

      To prove this idea, I decided to tackle a rough part of our UI: the current user dropdown. I had Radiant look at the current implementation and, based on the issues I called out, redesign it in a mockup and present some options. (For context, the model I used was Claude Fable).

      Here’s what we got:

      What impressed me was that Radiant also managed to pull our current styles from our code to generate these mocks. This was exactly what I wanted because instead of hallucinating a UI, Radiant just took what we had and modified it and presented multiple options. Once I chose a design, the final chef’s kiss was having Radiant generate a prompt to hand off to another agent for the implementation. That agent was able to one shot implement it (I used Claude Fable for the implementation).

      Radiant is still new in my toolbox, but being able to do UI work by asking for mockups and then quickly iterating on them is my new favorite way to snack.

    4. πŸ”— backnotprop/plannotator v0.28.20 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.19 | Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
      v0.28.18 | plannotator inbox connects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
      v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
      v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
      v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
      v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
      v0.28.12 | Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
      v0.28.11 | plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
      v0.28.10 | The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
      v0.28.9 | Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
      v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window
      v0.28.7 | Ask this session keeps your drafts as drafts, image comments survive a reload, hostname check on every server

      What's New in v0.28.20

      The Inbox gets search: one box that finds threads, messages, answers, files and decisions, and opens a result on the exact message. Most of the rest comes from one exercise: we filled an Inbox with worst-case data (long and duplicate project names, right-to-left text, emoji, huge counts, old dates, panoramic screenshots, minified files, multi-megabyte logs) and looked at every screen at every width. That found 75 places where the Inbox broke, and two PRs fix most of them. The release also changes what happens when you reply to an agent with words only, and stops a hung agent command from outliving the Inbox. 7 PRs in all.

      Search the Inbox

      Search sits at the top of the Inbox sidebar, and ⌘K (macOS) or Ctrl+K (Windows and Linux) opens it from anywhere in the window, the reply box included. It is the Inbox's one keyboard shortcut. On macOS, Ctrl+K keeps its usual text-field meaning.

      Results come back grouped: threads, messages, questions and your answers to them, your replies, file names, decisions and projects. Filters narrow them by project (it starts on the project you have open, and one click searches everywhere), by status, and by who wrote it. Opening a result lands on the exact message, unfolds it if the thread had folded it, and highlights your search words in it; a match in a question lands on its card. Back returns you to where you searched. ⌘/Ctrl+Enter opens a result in a new tab. The searches you opened come back as recent searches the next time, with a Clear button. On a phone, search is a full-screen sheet, reached from the sidebar or a search icon in the list header.

      Search stays fast on large Inboxes. On a test Inbox of 4,000 threads and 30,000 messages, most searches take a few milliseconds, including searches for ids and log timestamps inside multi-megabyte logs. Short commit hashes of 7 characters or more find the full hash. Matching ignores case and accents (resume finds rΓ©sumΓ©) and works in scripts written without spaces, such as Chinese, Japanese and Thai. The index is built the first time you search (the window shows "Indexing N threads…" for a second or two on a large Inbox), kept in memory on your computer, and updated as messages arrive. Nothing is sent anywhere, and the search routes refuse requests from other websites.

      The Inbox holds up with real-world data

      Project names are now the folder's real name, taken from where the project lives, instead of the shortened tag used for storage. When two projects share a name, each also shows its parent folder ("api Β· work"), and the "N new in X" notice counts them as two. Plan history, the feedback archive and the stored project folders do not move.

      Dates and text read correctly. A time from another day shows the day ("Oct 10, 8:22 PM"), a time from another year shows the year, and the full date is in the hover text. Names, subjects and message paragraphs in right-to-left scripts take their direction from their own text, while centered HTML in a message stays centered. Shortened text is never cut inside an emoji or a combined character, counts get thousands separators, and a name that is cut shows the whole name on hover.

      File names are cut in the middle so the end and the extension stay visible, in tiles, the gallery caption, the stepping bar, the file header and the download card. Copying a cut name gives the plain name, and a screen reader hears the whole name. A changed tile says "Changed" with the day or time on one line, and keeps its annotation count.

      Things that grow now stop growing: the reply box, the decision form, the New message picker and the "where should this reply go?" chooser each have a height limit, and their contents scroll inside it so Send and Back stay in view. Narrow windows got their own pass: Decisions switches to two-line rows under 960 px, the list header cuts its title and path with "…", the Storage table keeps size and Delete on one line, install commands wrap in full, and the update dialog lists five open sessions and then "and N more". On a phone, tables wrap at word boundaries, the "↓ N new" pill no longer pushes the reply area around, the Comments sheet covers the file in landscape, and tall images in a message are cropped from the top.

      At 1280 and 1440 px with ordinary data, the list, threads, open files, Settings and Decisions are pixel-identical to the previous release.

      Files, images and question cards

      When an open file is beside a thread and the pane is narrower than 780 px, the comments panel now folds into a Comments button in the file header and opens over the file. Before, it squeezed the file at medium window widths. A guided review folds its panel the same way under 1,200 px; previously it was hidden at 900 px and below with no way to open it. A PDF or other download no longer shows an empty comments panel.

      Behavior change: log, YAML, CSV, JSON and other data files now open in the code view in the Inbox, with line numbers, highlighting and line comments. .txt files keep the text view. Comments left on such files before this release were text comments, so they show as Unanchored; their text is kept and still goes out with your reply.

      Files with a line over 1,000 characters (a minified bundle, a log line) wrap instead of scrolling sideways forever. A comment on a very long line stores an excerpt of the line instead of the whole thing. Panoramic screenshots crop to a 4:1 strip in a message's gallery and scroll sideways in the viewer, and an image smaller than its box is drawn at its own size.

      Two fixes to question cards reach plan review and annotate as well as the Inbox. A choice question whose recommendation names none of its choices now shows the recommendation as a "Suggested" line instead of dropping it, and a read-only card no longer draws an empty "Other" row. In guided reviews, the "Everything else" card is no longer numbered, so the card count matches the header, and headings inside a section's text render as headings.

      A reply with only words leaves the questions open

      Behavior change. Since v0.28.16, a Send skipped every question it left unanswered unless you pressed Keep open. That made sense when you answered some questions and not others, but a reply with only words ("let me check with the team first") also closed every question as skipped, and the agent moved on without the answers.

      The skip chip under the reply box now starts from what the Send carries. A Send with no answer in it (words, annotations or both) keeps the questions open. Once at least one question is answered in the Send, the chip switches to skipping the rest, as before. Clicking the chip still decides either way.

      The agent gets your words followed by one line, such as "No questions answered yet; all 3 are still open. Don't re-ask them; the person will answer in the Inbox.", then any file comments. Replies that answer at least one question are unchanged.

      A hung agent command no longer keeps running after the Inbox stops

      Since v0.28.18, the Inbox can connect your agents by running their own CLIs (codex mcp add, gemini mcp add, amp mcp add and so on), each with a time limit. If one of those commands hung and the Inbox quit, restarted to update, or reached the overall time limit first, the command was left running in the background indefinitely. It is now stopped in each of those cases. A command that finished on its own is left alone.


      What's new shows the notes for a version you installed yourself

      The Inbox saved release notes only from its daily update check, so a version installed with the install script before that check ran showed a "What's new" link that opened to "No release notes for that version." The Inbox now fetches that version's notes once when they are missing, and shows the link only when there are notes to show. With update checks turned off it never contacts GitHub.

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. 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 --extensions
      

      OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

      What's Changed

      Full Changelog : v0.28.19...v0.28.20

    5. πŸ”— crmne/spotifast Spotifast v0.13.2 release

      Spotifast 0.13.2 keeps Windows from marking it as not responding in the tray, stops MilkDrop from stalling the window, reconnects playback by itself after a network drop, and keeps your playback approval when its port is busy. The Flatpak moves to a runtime that still gets security updates.

      Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM

      On Windows, pick the .msi. The setup program (-setup.exe) is still attached so that installs from 0.12.0 and earlier can update through it.

      New

      • Your screen's rate on the visualizer frame-rate dial, without opening MilkDrop first. Spotifast now asks the monitor showing the window how often it refreshes. By @dennisgr7. (#893)
      • A header tint for custom palettes, and a header wash that scrolls with the page. A palette's new tint colour gives page headers a wash when album art doesn't colour them, and the wash now scrolls away with the header instead of staying put. By @sasoder. (#752)

      Fixed

      • Windows no longer marks Spotifast as not responding while it sits in the tray. By @crmne.
      • The window no longer stalls every 30 seconds with a large MilkDrop presets folder. With Settings or MilkDrop open, listing thousands of presets froze the window for about 0.4 seconds every 30 seconds. They are now listed in the background. By @crmne.
      • MilkDrop no longer opens to a blank window on some Windows PCs. A display set to "hardware default" reported 1 Hz, and MilkDrop could save that as its frame rate. Such reports are now ignored, and a frame rate saved that way is forgotten. This is probably what @Olafosboss saw. By @dennisgr7. (#896, #885)
      • Playback reconnects by itself after a network drop or waking from sleep, using your saved approval, instead of asking you to set up playback again. Setting up playback also tries the saved approval before opening the browser. By @crmne; thanks @kakulukia and @Jaideepo7. (#818, #824)
      • A busy port 8898 no longer throws away your playback approval. Spotifast now reserves the port before opening the browser, so another app holding it shows a clear message in Settings instead of a hung page and a lost approval. By @crmne; thanks @dams. (#899)
      • Windows may now keep your sign-in across restarts. On some PCs Spotifast forgot every Spotify sign-in at restart. When Windows refuses to save a sign-in the usual way, Spotifast now saves it in a way that also survives a restart, and the log names the error. If you still have to sign in after every restart, please report it with your log. By @crmne; thanks @sasirmishamsi, @HyPeRXKo and @Th3H3ll50. (#815, #748, #803)
      • Your playlist order follows changes made in Spotify's other apps. Spotify custom order is read again when you come back to the window, instead of only at launch. By @SametKaras; thanks @loessy. (#749, #683)
      • x64 Windows says why Spotifast can't start without OpenGL 2.0, for example in a virtual machine without a graphics driver, instead of quitting silently. By @crmne.
      • Task Manager shows "Spotifast" instead of "A native Spotify client". By @crmne.
      • Uninstalling removes leftover update folders, and updates clean up the ones earlier updates left behind. By @crmne.
      • The Flatpak gets security updates again. It now uses the Freedesktop 25.08 runtime, as 24.08 has reached end of life. By @crmne; thanks @uAliAmer. (#886)
      • Spanish shows ready playback as "Listo". By @dennisgr7. (#900)

      Thanks

      @dennisgr7, @sasoder, @SametKaras, @Arthurandrealmeida, @Olafosboss, @kakulukia, @Jaideepo7, @dams, @sasirmishamsi, @HyPeRXKo, @Th3H3ll50, @loessy, @uAliAmer, and everyone who reported problems since 0.13.1. Thanks also to @dennisgr7 and @Arthurandrealmeida for documentation fixes. (#873, #887)

      Full changelog : v0.13.1...v0.13.2

    6. πŸ”— r/LocalLLaMA NVIDIA Nemotron Bolt 3.5 74B A9B releases Oct. 15th rss

      NVIDIA Nemotron Bolt 3.5 74B A9B releases Oct. 15th |

      This model is a 74B parameter, 9B-active-parameter mixture-of-experts (MoE) model, packed into 24GB using 2-bit quantization with advanced quantization- aware training techniques to retain quality. It aims to achieve the optimal balance between speed and intelligence, being faster than most popular dense models while smarter than most popular MoE models with a similar memory footprint.

      Nemotron 3.5 Bolt E4B 4GB releases Oct. 23 Additional detail submitted by /u/CulturalKing5623
      [link] [comments]
      ---|---

    7. πŸ”— r/LocalLLaMA The AI race: China's open-weight models trail US closed models by just 7 months rss

      The AI race: China's open-weight models trail US closed models by just 7 months | Source: whatmodel.sh, an open source AI leaderboard I built (and launched here yesterday). Every point comes from published benchmark results: 22,113 of them across 987 benchmarks, from 1,011 sources, each one linked to where it was published. This chart uses data for the text models: 18,755 results for 1,211 models on 617 benchmarks. - 14,436 results are independent evaluations: papers whose authors ran the models themselves (mostly CC BY papers from the ACL Anthology and arXiv), Epoch AI, the LMArena dataset, EvalPlus, the EleutherAI harness and others. - 7,677 are scores labs report for their own models, labelled as lab-reported. Everything is open: the dataset (CC BY-SA 4.0) and the scoring code (MIT) are at https://github.com/jakemanger/whatmodel, with CSV downloads at https://whatmodel.sh/data/manifest.json. Every number links back to its source, and each source's licence is recorded. Interactive version (click any model to see its scores and sources): https://whatmodel.sh/race Please star on github if you find it useful! submitted by /u/jakecoolguy
      [link] [comments]
      ---|---

    8. πŸ”— HexRaysSA/plugin-repository commits sync plugin-repository.json rss
      sync plugin-repository.json
      
      No plugin changes detected
      
    9. πŸ”— HexRaysSA/plugin-repository commits fix: drop renamed-repo aliases that index plugins twice (#42) rss
      fix: drop renamed-repo aliases that index plugins twice (#42)
      
      GitHub redirects a renamed repo's old name, so seeding both the old and
      new name makes the snapshot index the same plugin under two hosts
      (patching-ng, efiXplorer). Remove the old names from the seed list and
      ignore them so search can't re-add them.
      
    10. πŸ”— crmne/spotifast Spotifast v0.13.1 release

      Spotifast 0.13.1 stops the window from freezing while the disk is busy, checks that a Google Cast speaker is genuine before signing it in, opens full-screen lyrics with F, and lets you choose how often the player bar's visualizer draws.

      Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM

      On Windows, pick the .msi, as in 0.13.0. The setup program (-setup.exe) is still attached for this release only.

      New

      • Google Cast speakers must prove they are genuine. Before it sends a Cast speaker anything, Spotifast now asks it to prove it is a real Google Cast device, as Chrome does, and stops if it can't. 0.13.0 accepted any device that answered at the speaker's address. See how it connects. By @colsontabbert. (#883)
      • F opens and closes full-screen lyrics, when no text field has focus. By @PixelAsh6. (#874)
      • A frame rate for the player bar and mini player visualizers. Frame rate in Settings β†’ Appearance sets how often they draw: 30, 60 (the default), your screen's rate, or Uncapped. Before, they drew at your screen's rate, which on a fast screen cost power for little gain. MilkDrop keeps its own rate. By @crmne.

      Fixed

      • The window no longer freezes while the disk is busy. 0.13.0 saved settings, the session and history on the window's own thread, so under heavy disk use the window could stop responding and Pause or a click could wait for seconds. They are now saved in the background, and anything waiting is still written before Spotifast quits or the computer sleeps. If the window ever stalls again, the log now says so, which helps when you report it. By @crmne.

      Thanks

      @colsontabbert, @PixelAsh6, and everyone who reported problems since 0.13.0.

      Full changelog : v0.13.0...v0.13.1

    11. πŸ”— Jessitron Sharing Theories with Agents rss

      As I'm working with an agent to upgrade a repo from vibe-coded to something I can understand and dig into, I am reminded that Programming is Theory Building.

      By "theory" we mean: an understanding of the world, the software and how they relate that's good enough to let us work intelligently on them, answer questions about them, and argue about them.

      Like: we have a theory about what the world needs (I need to be able to comment on this HTML!), how the software meets those needs (a server injects the buttons for this), and how it's going to meet more (let me edit the content as markdown!).

      Software development is reality construction. We make something real in the world, we change what happens when I move my finger this way or click these clackety keys. Conceiving the new world (and how we get there) is programming. That work used to take more typing, more troubleshooting, and more puzzle solving. It has always been, at its core, building a theory of how a piece of the world works and how it can work.

      To go from vibe-coded to programmed, I build that theory. I get the agent to start a document explaining what's going on in that software and why. Then I iterate on that document with it until we're in agreement. I check it against the world and what we need and what makes sense to me; it checks it against the code.

      Building that document together builds the theory of this software for me. Reading it builds the theory for every agent that starts up in this repository.

      Reading only that document means that the agent's theory is shared with me. More documentation is not better! The only context I want the agent to have is documentation I've read and iterated on (so it's connected to my reality) and the code (which runs, so it's real).

      The documentation I read needs to maximize its communicative power. That means diagrams, pictures, and varied structure. HTML beats markdown for this, and the agent is a whiz at writing HTML with SVG figures.

      Markdown is a lot easier for me to tweak and comment in, though. I have a need to comment on HTML! And modify its content as easily as markdown. Good thing we have agents to solve this!

      Here's a skill, based on Arlo Belshee's process, that helps an agent iterate on a document with you. The plugin includes a tool for commenting on HTML and tweaking the content. Also included is a skill for making a project overview document (like this one) as part of theory-building.

      Programming is theory building more than ever. The distance from a conception of how the world can be to some new reality is so much shorter with agents! We still need to understand what we want, and conceptually how it can work, and how we'll get there. That is still the hard part, and we get to work ever harder on it.

    12. πŸ”— Filip Filmar First Steps with rules_openxc7: A Beginner's Guide rss

      This tutorial teaches you how to build your first FPGA bitstream with Bazel and the open-source rules_openxc7 toolchain. You do not need any prior Bazel experience, and you do not need to install AMD Vivado or compile EDA tools from source. In four small files, we create a complete working project that synthesizes Verilog with Yosys, places and routes with nextpnr, generates a 7-series bitstream, and flashes your development board.

    13. πŸ”— Baby Steps What agents mean for Rust (and vice versa) rss

      Sheldon breathing into a paper
bag. Me, calmly assessing the implications of LLMs for programming language design(ers).

      As someone who has made a career of programming language design, I definitely have moments of existential dread about the rise of LLMs. I started coding in 5th grade on an x861 that ran at 5MHz, had something like a 5MB hard-disk and 512K of RAM2. Computers were really, really different back then. But honestly, programming wasn't. For all the advances in IDEs and programming languages and so forth, the basic act of entering code into a file has remained surprisingly constant3 - right up until a few years ago, when everything kinda turned on its head. That's been exciting and empowering at times4 but also scary and disorienting. Will my skills in programming matter? What about my skills in programming languagedesign (such as they are)? This blog post is my attempt to answer those questions.

      So as not to keep you in suspense, let me just give you the conclusion. In short, yes, I believe there will still be a role for humans in programming. And yes, I think that programming language design is still relevant. And, naturally, I also happen to think Rust is a really good fit for agentic development - but that's not to say we can't make it a better fit. And that's what this post is ultimately about: what makes Rust and agentic development work well, and where we could double down on those strengths.

      This is a kind of "blog post companion version" of a talk I gave this week at REBASE, part of SPLASH. You might also enjoy the slides from the talk I gave at IWACO, IWACO and Rust: hidden links revealed, which was a bit more of a retrospective (no soundtrack for those, though). In any case, this turned out to be a great conference! Jack Huey presented on the Rust Vision Doc and, quite to my surprise, Steve Klabnik and Dorian Scheidt presented "LLMs as Collaborators in Language Specification and Design", talking about their process in building out Rue. It was fun to see Steve again. On top of that, there was a ton of great research presented at IWACO in particular. I was particularly taken by the work on Reachability Types and Information Borrowing. I also really liked learning about Hylo Lang, particularly their approach to projections. Clever and cool.

      Rust is popular in the agentic era

      Meme dialogue: β€œI wrote this in Rust!” β€œBe honest.” β€œI am being honest!” β€œAn
agent wrote it.” β€œThank
you.” From the most important Slack channel at Amazon, #aws- memes.

      Rust is popular right now. Very popular:

      Stratospheric among the breakout languages is TypeScript, cropped from the chart and sitting currently at +1200% growth from the prior year. [..]

      The second most rapid recent growth is in Rust. Meta engineers have written twice as much first-party Rust code so far this year than in the previous 9 years combined.

      β€” David Tolnay (emphasis mine)

      Some of that is because agents make it very easy to try out new things. And some of that is because Rust has a reputation for being performant and, if it's just as easy to pick any language, why not pick one that will yield faster execution times?

      But I think Rust is popular for another reason: because Rust happens to be a really good fit for agentic coding6. Of course, I would, wouldn't I? The point of this post is (1) to argue for why that is and then (2) to discuss what we might change about Rust to make it work even better.

      Foundational Software construction with agents

      It seems to me that an effective "software factory" will have three pillars:

      • Design: figure out and specify clearly what the code is supposed to do.
      • Construction: author code that does what it is supposed to do.
      • Optimization: optimize the code so that it runs efficiently.

      None of these pillars are solved, but some have made more progress than others.

      Rust and optimization: fast by default, knobs when you need 'em

      Rust is designed to give "good performance by default", making the idiomatic thing typically also be the fastest thing. But another key part of Rust is that you have the knobs to eke out better performance when you need it. You control when something is stack- or heap-allocated and where pointer indirection occurs. If you want to, you can force the layout of your structs to be done in a particular way, or decide where to introduce boxing into your async stack frames. In the limit, you can put in inline assembly.

      In the past, learning how to "tune the performance knobs" could be a bit of a black art: but agents are making that much easier.7 It turns out that agents are really good at fine-tuning the performance of existing code. For example, people who work on super high-performance cryptographic algorithms used to do so by hand-tuning assembly code. But those people tell me that they are now turning to agents for that same job. More prosaicly, a lot of people building network services are finding that, using a profiler like dial9, agents can quite effectively diagnose async performance pitfalls, like long polls or blocking.

      Therefore, I think the task for Rust is clear. We keep on with our goal of "low-level enough for a kernel, high level enough for a GUI". If anything, I think the shift around agents means we can tolerate a bit more "noise" in the form of explicit calls to clone() or share() - but not too much, since we still want the "happy path" of the code to be clear and evident8, even as we surface details that are important in specific scenarios (like tracking precisely how many clones you have of a channel endpoint). Combined with a profiler, you get an effective feedback loop to get your code running fast:

      flowchart LR
          Code -- Benchmark --> Profile
          Profile -- Analyzed by --> Agent
          Agent -- Propose --> PR
          PR -- Improve --> Code
      

      Reliability is king, as always

      As usual though, while a reputation for good performance is what brings people to Rust, what makes them want to stay is a sense that using Rust "just seems to work better". The basic theory is that Rust's type system and guardrails help keep agents on track:

      rust is a perfect language for agents, given that if it compiles it's ~correct

      -- Greg Brockman (@gdb) January 2, 2026

      I think there's truth in that: languages like Rust, Ocaml, or Haskell all share this "if it compiles, it works" feeling, and I think that agents will benefit from that.

      Testing is not enough, type systems help

      Testing can show the presence of bugs, but not their absence.

      β€” Edsger W. Dijkstra, 1970

      A woman presents a lopsided cake with the words β€œNailed
it!” Agents presenting their work.

      Writing tests has never been enough to show that your program is correct - but, with agents, it's not even close. It happens so often that my first few tests seem great and then the next one goes completely bonkers. Usually bonkers in a way where I cannot even imagine how that bug could have come about. Then I dig in and I realize the agent completely missed the boat on the logic I was trying to express.9

      This is where a type systems really shines - particularly an advanced one like Rust. Type systems give you some guardrails that keep the agent on track. In Rust, those guardrails extend beyond simple stuff like "do all fields have the correct names" and to stuff like never having to close a socket.

      Type systems are not enough either

      Type systems can show the absence of bugs, but not the presence of correctness.

      β€” Me, failing to coin a phrase of equal eloquence10, 2026

      So yeah, type systems are helpful! But they have inherent limits. A type system is a simple set of rules that, if you follow them, make sure that you avoid (certain kinds of) mistakes. But they don't tell you that you do the right thing - only that you don 't do (certain kinds of) wrong things. If you want to go further, you need a proof system - something that will let you show that richer properties are actively true, not just that you're avoiding bugs.

      As it happens, there are a lot of interesting proof tools for Rust, like Verus, Creusot, Aeneas, and Kani. As a starting point, you can prove that your code is panic- free, which will eliminate a lot of bugs, though it is still fundamentally a "type-checker-like" property (i.e., you avoid doing things wrong). But you can also go further and add assertions that show your code is computing the results you expect.

      Strong guardrails give better performance

      Deplying proofs is not just good for getting code right - it's good for getting code fast. This is somewhat counterintuitive, but it's true. Earlier I mentioned how optimized cryptographic algorithms were now being written by agents. Part of what makes that possible is that cryptographic algorithms have a very clear mathematical definition. This means that you can basically tell the agent "do whatever you want, as long as you can prove that the code still computes the correct result". These proofs can be done with theorem provers like Lean or Rocq. The blog post "Why Lean is faster than Rust" makes the point quite well.

      For Rust, a good example of this would be around unsafe code. Right now, people are sometimes reluctant to deploy unsafe code even if it might make their code faster because it's not worth the risk of getting it wrong. And I applaud that effort. But what if you could use a prover to show that your unsafe code is, in fact, safe (i.e., incapable of causing undefined behavior)? Then you'd be free to optimize to your heart's content.

      If we are going to prove things, do we need type systems?

      You might wonder: if we're deploying a proof system on our code, do we still need type systems? I think the answer is definitely yes. Type systems are infinitely simpler to work with, which is why they are much more popular. Using a type system lets you rule out all kinds of annoying bugs so that you can focus your "proof energy" only on the important stuff.

      As a simple example of this, consider the following Java code:

      void setFoo(Bar bar) {
          this.foo = bar;
          assert this.foo == bar;
      }
      

      Without seeing more code, it is impossible to prove whether this assertion is true or not! This is because there could be any number of other threads running around mutating this. In contrast, the following Rust code must be true (at least, so long as the Eq operator is reflexive for Bar):

      fn set_foo(&mut self, bar: Bar) {
          self.foo = bar;
          assert_eq!(self.foo, bar);
      }
      

      We know this because the type system of Rust guarantees that &mut self implies a unique reference.

      This is in fact exactly how Verus works. By trusting the Rust borrow checker to track uniqueness etc, it simplifies the job of the SMT solver, making proof checking must faster and more reliable than it would be otherwise.

      Where I think Rust should go on reliability

      So my take is that Rust should double down on if it compiles, it works. As expressive as Rust's type system is, there are plenty of things that it cannot capture. This includes fairly common things, like this method only reads one particular field or internal references, but also fancy things like "no logging of personally identifiable information". We should work to lift those limits, giving agents room to prove more complex properties.

      We also need to improve the experience of integrating a proof tool by working towards an extensible compiler. As cool as the existing Rust-based proof tools are, using them is a janky experience involing annoying macros and pinned compiler versions. We can do better.

      A north star: No more unsafe code

      I'd like to propose a north star for Rust: no more unsafe code. By that, I don't mean that we never use the unsafe keyword. Rather, I mean that we have the power to prove that all the unsafe code we write is correct and cannot cause undefined behavior. Don't get me wrong: knowing exactly what code needs to be vetted is a huge step forward, as is normalizing the idea that libraries need to be responsible for protecting their users from undefined behavior via safe API boundaries11. But given agents' ability to find vulnerabilities, I think we need to up-our-game if we want to stop the steady stream of CVEs.12

      Design is an open problem

      But before you go about proving things or optimizing them, you need to have a clear idea of what you are building. As far as I can tell the state of the art here is basically variations on "markdown-driven-development", developing docs and hoping that agents pay attention.

      I don't know how much of a role for Rust there is in this space. I think there are some steps we might wind up taking that could be helpful here - for example, having ways to separate out interface from implementation so that it's easier to review the interface in isolation or to see when the agent made changes there.13 Or perhaps just providing betters tools to review that.

      I also think there's space for dedicated "modeling languages", something that let you iterate quickly with agents on the high-level designs and invariants without having to get into the weeds and read the code. I have more thoughts on this but it merits many blog posts all of its own. For the moment, I'll start by pointing you all at this post by Kari Wilhelm, "Principles of Anchor Engineering", which I think does a nice job of describing what it means to pull out the key elements of a design and drive the coding from there.

      Conclusion

      We covered a lot of ground here, so let me put this all together. What makes Rust a good choice for developing with agents?

      • It offers good default perf (why pay more?) and, in conjunction with a profiler, can be tuned as much as you want.
      • The type system gives stronger guardrails, and if you setup your agents right, you can strengthen those guardrails through techniques like new types.

      And what could make it better, from a language design perspective? Overall, I think it's very similar to what we were doing, except that the way we weight the tradeoffs is tweaked to account for agents doing the code authoring, and humans focused more on code comprehension:

      • If it compiles, it works - our type system is our big advantage, we need to make it more expressive and more functional so that agents don't get stuck trying to work around it!
        • And as an adjunct, establish a North Star: Enable Unsafe code without unsafety by supporting proof, and see the most widely used Rust libraries proven sound.
      • Low-level enough for a kernel, high-level enough for a GUI - make sure we expose the knobs needed to tune for performance, while also making the code's intent clear (but don't worry about golfing the code down to an absolute minimum number of characters).
      • Extensible and versatile - one of Rust's great strengths is that, with macros + our type system, we support DSLs and a wide variety of targets. We need to bring that spirit of extensibility into the compiler so we can target more styles of development (e.g., GPU, deep language interop, etc) and also integrate theorem provers and other tools that require more than just tokens.

      As a final close, let me point you at this interesting article by Marc Brooker, "What's easy now? What's hard now?". He posits that the more it is possible to clearly specify success criteria for a task, the easier it is, and that we may find that tasks we traditionally think of as 'hard' (e.g., building out an efficient implementation of a cryptographic algorithm) may soon become automated, whereas tasks that we have thoght of as 'easy' (e.g., making a unique, compelling website) may become more valued.

      Looking at it from a PL point-of-view, I think Marc's point reinforces my sense that the biggest action is going to come from design languages , things that let you capture the architecture and intended behavior at a very high-level. The goal would be to let humans intuitively specify a design that gets translated into effective guardrails, whether that's type system checks, lints, or theorems to be proven. Agents would then take on the task of translating the design into code written in a traditional PL like Rust, with humans looking at it only rarely. This doesn't make the design of traditional PLs less interesting, but it definitely makes the tradeoffs very different than they were before.


      1. Secretly I have always been jealous of people that coded using punchcards and stored things on gigantic rolls of tape or whatever. I just want to be world weary so badly! I am kinda delighted that I'm finally old enough that I can say things like "I remember when we had to edit CONFIG.SYS before we could play a computer game!" and younger programmers will gasp in horror.5 But I still feel like I must sound like a silly kid to folks who were around "back in the day". β†©οΈŽ

      2. I still remember when my dad told me he had bought me a 10MB disk and secretly he had bought a 40MB disk to surprise me. It seemed absurdly large. "I'll never need a new disk again!" β†©οΈŽ

      3. I mean my god, we're even using vi again! My first editor! β†©οΈŽ

      4. I built an electron app! And it was so easy to do! And reading weird papers and things is so much more accessible now that I can ask an LLM to translate all the math jargon for me. β†©οΈŽ

      5. I remember once trying to tell Alex Crichton how I used to "order shareware from a paper catalog by putting a check in the mail" and he was like "I do not understand any of the nouns in that sentence". Highlight of my life, right after Rust 1.0. Oh, and maybe the birth of my child and getting married. I guess. β†©οΈŽ

      6. I'm not saying Rust is the only language that's a good fit. I'm not even saying that the way that Rust is a good fit is the only way to be a good fit. I have heard for example that Go is a really good fit for agentic coding and I believe it: I think it hits a different sweet spot, one that helps agents iterate quickly (although I do suspect agents will let data races and subtle bugs slip through that Rust would have prevented). β†©οΈŽ

      7. The fact that agentic development makes more room for knobs is good for Rust performance, but it is quite likely an even better fit for performance in other languages. Tuning a GC has traditionally been a job that really requires a GC expert, but agents can likely fill that role pretty well these days. β†©οΈŽ

      8. On this pont, I'm even more convinced of the importance of ergonomic RC now that I work with agents. Agents are good at introducing the extra clones and things you need to deal with capturing around async tasks, but the resulting code is so annoying to read, it really hides what's going on. β†©οΈŽ

      9. "Claude, this is not what we talked about!" - me, all too often. β†©οΈŽ

      10. So close though, right? I just .. couldn't land the plane. β†©οΈŽ

      11. All too often, C++ libraries consider it adequate to tell users "you're holding it wrong" - i.e., that they are responsible for causing undefined behavior by misusing the API. Rust takes a clear position that a safe API has to protect its users, no matter how much they abuse it. β†©οΈŽ

      12. To be fair, if Rust is encountering a stream of CVEs, other languages like C++ and Java are encountering a veritable flood, since they lack the protection of Rust's type system. st takes a clear position that a safe API has to protect its users, no matter how much they abuse it. β†©οΈŽ

      13. The revenge of .h files? β†©οΈŽ

  4. October 13, 2026
    1. πŸ”— IDA Plugin Updates IDA Plugin Updates on 2026-10-13 rss

      IDA Plugin Updates on 2026-10-13

      New Releases:

      Activity:

      • BenchLog
        • c185f5f4: Merge pull request #4 from liquidsax/cursor/rtt-swd-backend-53cd
      • capa
        • 965c0486: Merge pull request #3184 from mandiant/dependabot/pip/msgspec-0.22.0
        • 9e41a1f1: Merge pull request #3179 from mandiant/dependabot/pip/funcy-2.1
        • 3ced5c30: Merge pull request #3185 from mandiant/dependabot/pip/mypy-2.4.0
        • b924aa74: Merge pull request #3189 from mandiant/dependabot/npm_and_yarn/web/ex…
        • c6201778: Merge pull request #3190 from mandiant/dependabot/npm_and_yarn/web/ex…
        • f426f14a: Merge pull request #3191 from mandiant/fix-viv-workspace-loading
        • f7ddbb4f: Merge pull request #3193 from mandiant/fix-ghidra-shutdown
        • 3413a090: Merge branch 'master' into fix-viv-workspace-loading
        • 2966d2cc: ghidra: clean up cached extractors before JVM shutdown in tests
        • 7b14161e: Merge pull request #3192 from mandiant/ci-ubuntu-24.04
        • 5464a9a1: ci: fix zizmor bot-conditions and ref-version-mismatch findings
        • a872dd8c: ci: migrate macos-14 to macos-15 and bump actions to node24
        • 3ab6400d: ci: update Ubuntu runners from 22.04 to 24.04
      • Luc-Nhan
        • 93b801df: fix(ui): persist model catalog cache across restarts
      • oh-my-pi
        • 74c049e5: docs(fork): record the v18.10.3 upgrade and rebase the patch-list bas…
        • 847cae7f: fix(catalog): re-derive compat leaves on fork-carried rows for the v1…
        • ae3543de: Merge upstream v18.10.3 into the fork
        • 2816fe6d: v18.10.3 upstream source
        • 172a4fbc: fix(slash-commands): inject tools into whitelist-restricted sessions
      • omppp
        • fcdd88ed: sync: merge upstream/main 18.10.3 (f1ac114d8d) into OMPx 1.11.7
        • f1ac114d: Merge pull request #15616 from can1357/fix/gc-compress-followup
        • 9395e164: fix(gc): skip leading JSON whitespace before ruling out a session header
        • 966e0dc1: fix(gc): lease each session id once and skip non-JSON artifacts befor…
        • 29ed918c: fix(gc): close compress gaps Codex flagged after #15600's last review…
        • 74df786d: Merge PR #15600: feat(coding-agent): compress idle sessions in place …
        • 414500c7: fix(gc): keep compress running past unreadable sessions; stats skips …
        • 7863d393: Merge remote-tracking branch 'origin/main' into pr-15600
        • 684877c2: fix(gc): detect compression by volume, drop btrfs, use LZNT1 on NTFS
        • e25ea00e: fix(coding-agent): skip stale and blank plan reviews from openPlanReview
        • d40b86cf: Merge PR #15552: feat(extensions): let extensions reopen the plan rev…
        • f411d326: fix(extensions): open plan reviews from extensions without aborting work
        • 4a780a40: Merge PR #15561: fix(browser): discard shared browser session-restore…
        • 4d264c1f: refactor(browser): guard shared-browser detach in modeService
        • 8c08c4ac: Merge PR #14891: fix(catalog): price Devin cache writes and long-cont…
        • a02dba99: fix(catalog): bounded Devin GPT cache-write rate and excluded unpubli…
      • plugin-ida
        • 763f3c35: chore(deps): Bump step-security/harden-runner from 2.21.1 to 2.22.1 (…
    2. πŸ”— r/LocalLLaMA Someone is running Qwen 27B at ~20 tok/s on a jailbroken PS5's GPU rss

      Someone is running Qwen 27B at ~20 tok/s on a jailbroken PS5's GPU | submitted by /u/LatentSpacer
      [link] [comments]
      ---|---

    3. πŸ”— Jeremy Fielding (YouTube) Professional Design Tips for Young Engineers rss

      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

    4. πŸ”— r/LocalLLaMA Character.AI files for bankruptcy, to sell some assets to Disney for $20 million rss

      Are we seeing early signs of the bubble popping?

      submitted by /u/jld1532
      [link] [comments]

    5. πŸ”— crmne/spotifast Spotifast v0.13.0 release

      Spotifast 0.13.0 plays on Google Cast speakers, checks the release signature before it installs an update, and comes to Windows as a Windows Installer package. It also speaks Ukrainian, opens upcoming albums, removes one song from the queue, draws its own title bar on Linux, goes easier on the battery, and fixes Sonos playback, resuming a paused playlist and much more. More than thirty people contributed to it.

      Download Spotifast: Mac Β· Windows Β· Windows ARM Β· Linux Β· Linux ARM Β· Flatpak Β· AppImage Β· AppImage ARM

      New

      • Play on Google Cast speakers and groups. Cast speakers and speaker groups now appear in the device picker. Turn on local playback, pick the speaker, and Spotifast starts Spotify on it; from then on it plays like any other Spotify Connect device. Cast devices use certificates that your computer's trust store doesn't hold, so Spotifast accepts the certificate the device presents: whatever answers at the address of the speaker you pick on your local network receives a token issued for that speaker, not your reusable sign-in. See Google Cast playback and how it connects. By @izadiegizabal. (#858)

      • Updates must carry the release's signature. Spotifast now installs an update only when the release's checksums.txt has a valid Ed25519 signature from the Spotifast release key, then checks the download against it. A missing or wrong signature means no update. By @Josmar-o; thanks @realrandolph for the security audit that recommended it. (#836)

      • A Windows Installer package (.msi). Antivirus engines kept flagging the old setup program, so Windows now gets a Windows Installer package for both x64 and ARM PCs. It installs for your user only, without an administrator password, like before. This release ships both:

        • for a new install, or to install by hand, pick the .msi; run over an existing Spotifast, it takes the installation over and keeps your settings, folder and Start menu entry, and Windows lists one Spotifast;
        • if you update from inside Spotifast, do nothing: 0.12.0 updates to this release through the setup program (-setup.exe), and from 0.13.0 on, updates move you to the .msi by themselves;
        • the next release ships only the .msi.

      By @crmne.

      • Ukrainian. Spotifast is now available in Ukrainian. By @bun4uk. (#718)

      • Upcoming albums and Pre-save. Opening an upcoming album's Spotify link shows its artwork, a countdown to release and the songs you can already preview, with a Pre-save button that adds it to your library. It needs local playback. By @github-lover-9999. (#830)

      • Remove one song from the queue. A queued song's menu can now take just that song out of Playing next. By @ftupas; thanks @Raus0n. (#724, #721)

      • Play a song by name from the command line. spotifast play-search <words> searches Spotify with your sign-in and plays the best match; --kind album, artist or playlist picks something else. Handy for launchers, scripts and voice assistants. By @oxatruchdev. (#738)

      • Show only your own playlists. A By You toggle under Playlists in the Library hides the playlists you only follow. By @shaswat28. (#706)

      • Spotifast's own title bar on Linux. Turn on Custom title bar in Settings to have the window buttons share the top bar, following your desktop's icons and button layout where it can. By @ttmx. (#648)

      • A Now Playing widget under the MacBook notch. Turn on MacBook notch widget in Settings to get the playing song, artwork and controls when you hover the notch while Spotifast is in the background. By @saikumargudelly. (#528)

      • Playlist headers show their saves and the owner's picture, as Spotify's app does. By @renaldypr. (#849, #848)

      • The playing device shows its own icon. When music plays on a phone or computer, the Playing on badge and the device button no longer draw a speaker. By @Espaye. (#833)

      • Added By in Blends, and the name of whoever added a song stays once it is found. By @luisfernalme. (#745, #744)

      • Made for you shows your real Home shelf, in Spotify's order and your language, instead of a guess from four searches. By @hani64. (#802)

      • Less motion when your system asks for it. With Animation effects off in Windows, Reduce motion on macOS or GNOME's Animations off, fades, slides and smooth scrolling show their end at once. By @dennisgr7. (#867)

      • Middle-click autoscroll starts anywhere and stops when you let go, with its speed following the pointer, as in a browser. By @Felitendo. (#650)

      • The player bar's visualizer click can be turned off. Uncheck Click player bar to change visualizer under Settings β†’ Appearance. By @samboland; thanks @jaysuna. (#757, #781)

      • The playing playlist shows pause on its cards and sidebar cover, and the play button spins while the next song loads. By @YuEfSaEDU. (#655, #654)

      • Easier on the battery. Spotifast now follows the system's power and session state, sleeps in the tray until something is due, polls your other devices less while nobody can see it, paces the visualizers and MilkDrop by what is on screen, and lets dual-GPU Macs stay on the integrated GPU. On a metered Windows connection it holds automatic update downloads and large media-control covers. By @dennisgr7. (#728, #730, #733, #732, #736, #735, #726, #681)

      • A faster start. Home is ready sooner, the last library and Home show while Spotify catches up, artist pages read popular songs without waiting on the shared app, and Liked Songs loads a page at a time. By @lmarkmann, @dennisgr7, @github-lover-9999, @Ar-maan05 and @knocking4thcylinder. (#784, #826, #805, #777, #778, #717)

      Fixed

      • Playing a paused playlist resumes it. The cards, sidebar cover and page header started a paused playlist over from its first song. By @YuEfSaEDU. (#657)
      • Sonos speakers play again. Picking a Sonos speaker could fail with "receiver refused the connection". By @brandly; thanks @Aloe-recite and @elliotmartin. (#823, #612, #767)
      • Fewer "Spotify is rate limiting requests" errors. Spotifast checks playback at most every 15 seconds instead of every 4. By @aw-snap. (#840)
      • Music keeps playing when the audio output changes, such as when you plug in headphones. By @dennisgr7. (#731)
      • The resume point survives a dropped network or a sudden quit. By @saikumargudelly and @dennisgr7. (#795, #793, #727)
      • Uninstalling on Windows while Spotifast runs no longer leaves half an install. The uninstaller offers to close it first. By @samboland; thanks @AndrewDragonCh. (#766, #753)
      • A busy sign-in port is reported clearly, before the browser opens. By @samboland; thanks @drewwells. (#768, #754)
      • The mini player opens on a connected display after the screen it was on is gone, on macOS. By @HEOJUNFO; thanks @future10se. (#774, #719)
      • Song radio opened from a list is named after its song. By @kevin9327; thanks @Slaurits. (#659, #644)
      • The Linux tray icon shows on Qt desktops such as KDE. By @kevin9327; thanks @paganotoni. (#670, #660)
      • Dragging several songs within a playlist moves them instead of adding copies. By @s6hib; thanks @jorisw. (#684, #669)
      • Sorting by album keeps each album's songs in track order. By @SametKaras; thanks @sea2horses. (#701, #699)
      • A search typed with pauses leaves one Recent search, not one for each pause. By @SametKaras; thanks @hpaliwal8. (#747, #741)
      • Playback artifacts are fixed, and a held volume slider responds. By @samboland. (#686)
      • Closing a minimised window sends it to the tray with Keep playing in the background on, instead of quitting. By @dennisgr7. (#725)
      • Playlist covers show when Spotify sends them as WebP, and library playlists the Web API leaves blank are filled in. By @renaldypr. (#814, #813, #807)
      • Covers are drawn sharp from copies scaled to the size they're shown, and use less memory. By @dennisgr7. (#866)
      • Colour from album art works on Liked Songs. By @sasoder. (#750)
      • The Windows title bar buttons line up with the top bar and react when pressed. By @samboland. (#742)
      • Small interface fixes: the shuffle, saved and liked buttons stay green on hover, the search clear button is centred, playlist dialogs stay compact, side-by-side autoscroll areas no longer clash, and sign-in checks no longer keep the activity spinner busy. By @GoktugEk, @renaldypr, @ECuteri, @PixelAsh6 and @Iskrata. (#722, #822, #790, #855, #862, #797)
      • Better Turkish. By @alikaanztrk. (#668)
      • Security updates. rustls is updated for RUSTSEC-2026-0285, and chacha20 to 0.10.2. By @seichris and @Yaraill. (#743, #811) The saved sign-in token can no longer end up in debug output. By @DougNeo. (#756)

      Thanks

      @izadiegizabal, @Josmar-o, @realrandolph, @bun4uk, @github- lover-9999, @ftupas, @oxatruchdev, @shaswat28, @ttmx, @saikumargudelly, @renaldypr, @Espaye, @luisfernalme, @hani64, @dennisgr7, @Felitendo, @samboland, @YuEfSaEDU, @lmarkmann, @Ar- maan05, @knocking4thcylinder, @brandly, @aw-snap, @HEOJUNFO, @kevin9327, @s6hib, @SametKaras, @sasoder, @GoktugEk, @ECuteri, @PixelAsh6, @Iskrata, @alikaanztrk, @seichris, @Yaraill, @DougNeo, @tyhallcsu, @Raus0n, @jaysuna, @Aloe-recite, @elliotmartin, @AndrewDragonCh, @drewwells, @future10se, @Slaurits, @paganotoni, @jorisw, @sea2horses, @hpaliwal8, and everyone who reported problems since 0.12.0.

      Full changelog : v0.12.0...v0.13.0

    6. πŸ”— backnotprop/plannotator v0.28.19 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.18 | plannotator inbox connects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections
      v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
      v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
      v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
      v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
      v0.28.12 | Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
      v0.28.11 | plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
      v0.28.10 | The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
      v0.28.9 | Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
      v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window
      v0.28.7 | Ask this session keeps your drafts as drafts, image comments survive a reload, hostname check on every server
      v0.28.6 | Ask AI names the lines you selected, reorder quick labels and edit their emoji, Pi fixed-port crash fixed, OpenCode 2 subagent notice fixed

      What's New in v0.28.19

      A small release with two contributions from @leoreisdias: Ask this session for Claude conversations in T3 Code, as an opt-in install flag, and folder annotate sessions that load a page's shared stylesheets and images from anywhere in the folder. On the Inbox side, the question about adding a note to your agents' instructions moves from a card above the list into a one-time dialog that asks once per agent, and the session-start reminder now tells agents where to read how the Inbox works. 5 PRs in all, 2 from an external contributor.

      Ask this session in T3 Code

      When Claude runs plannotator review, plannotator annotate or plannotator last inside a T3 Code conversation, the review used to open with no link back to that conversation: Ask AI could only start a separate agent, and the decision came back as the output of a command that had blocked Claude until you were done.

      With the new opt-in installer flag, those reviews connect to the conversation that ran the command. Ask this session sends your question into that T3 conversation as an ordinary turn and shows the answer in the review, including when the conversation was idle. The command returns as soon as the review opens and Claude ends its turn, and your decision (feedback, Approve with notes, or a gated approval) arrives later in the same conversation, worded the way the Claude Code integration words it. Claude keeps running the same commands as before and needs no T3 address or thread id; the hook finds the conversation from Claude's own tool call and never guesses by title or folder.

      Setup, on macOS or Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash -s -- --with-t3
      plannotator t3 login --url <the MCP URL from T3 Settings β†’ Connections>
      

      The flag adds one Claude PreToolUse hook to your Claude settings (backed up first), and automatic updates keep it. plannotator t3 login asks T3 to authorize Plannotator once. --without-t3 removes only that hook. Nothing changes for anyone who does not pass the flag: the Claude plugin, the skills and default installs add no T3 hook.

      Limits worth knowing. Only Claude conversations are routed, and only simple Bash runs of review, annotate and last; plan review, compound shell commands and strict scripted gates keep their usual behavior. The hook runs for every Claude Agent SDK session on that profile, so a claude -p run or another SDK app pays roughly a third of a second per Bash call before the hook finds no T3 conversation and leaves the command alone. Setup details and diagnostics are in packages/t3-code/README.md.

      Folder sessions load shared stylesheets and images

      Annotating a folder of HTML pages that share one assets/ directory left nested pages unstyled. In plannotator annotate course/, a page at lessons/lesson.html that links ../assets/lesson.css could only load files from its own directory, so the stylesheet, scripts and images never arrived.

      In a folder session the selected folder is now the asset root for every page inside it, while relative references still resolve from each page's own directory. ../assets/lesson.css loads, and so do shared images, inline CSS url()s and srcset entries. Share links carry the same assets. Single-file sessions keep their current scope.

      A page still loads anything in its own folder, exactly as before, hidden folders such as .vendor/ or .vitepress/ included. What is new is that it can also reach the rest of the selected folder, and there it is refused hidden files and folders (any path segment starting with .) and the .env family, whether it asks for them directly or through a symlink. Because a page can load the folder's other non-hidden asset files, pick the folder you mean to review rather than your home directory.

      The agent note is asked once per agent, in a dialog

      In v0.28.18 a card above the Inbox list asked, once, whether to add a short Inbox note to your agents' instruction files. That card is gone. The question is now a dialog that opens once, after the sound dialog and never on the same page load.

      Each agent gets a row with the exact file the note goes into and whether it adds to the end of that file or creates it. Every agent starts ticked, Claude Code included, and the main button names who it adds to ("Add to Codex, Gemini CLI and Claude Code"), or reads "Don't add a note" when you untick them all. Results show in the same rows: Added, Created, or Not added with the reason and Try again. When plannotator inbox connected agents since you last looked, the "Connected …" report sits at the top of the dialog. Escape, the backdrop and Not now write nothing.

      The question is now asked once per agent rather than once ever. An agent you install later gets the dialog for itself alone, and an agent whose note could not be written is asked again. If you already answered the card in v0.28.18, those agents count as asked and you will not see the question again for them. Nothing is written without your yes, and Settings β†’ Agents and plannotator inbox --notes work as before.

      Copy connect prompt in the Inbox sidebar

      A new row above Settings copies a short prompt you can paste into any agent, at any time. The agent reads plannotator inbox --help, connects itself to your Inbox for its next sessions, and sends you a first message there. The prompt names this computer's own plannotator, so it works when pasted into an agent on this machine.

      The session reminder points agents at plannotator inbox --help

      The one-line Inbox reminder that each session gets at start now ends with "Run plannotator inbox --help for how it works.", so an agent that has never seen the Inbox knows where its full guide is. It is still fixed text, so the first session after updating misses the prompt cache once and later sessions do not.

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. 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 --extensions
      

      OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

      What's Changed

      • fix(annotate): resolve shared HTML assets within selected folders by @leoreisdias in #1568
      • Inbox: the session reminder points agents at plannotator inbox --help by @backnotprop in #1895
      • Annotate: folder sessions keep a page's own hidden asset folders by @backnotprop in #1900
      • Publish prep: @plannotator/core 0.25.13 and @plannotator/ui 0.53.0 by @backnotprop in #1898
      • feat(t3): connect Ask this session through an optional Claude hook by @leoreisdias in #1807
      • Inbox: the agent note asks in a dialog, once per agent by @backnotprop in #1896
      • Inbox: Copy connect prompt in the sidebar by @backnotprop in #1901

      Contributors

      @leoreisdias wrote both of this release's community contributions. His T3 Code integration (#1807) maps Claude's tool call to the T3 conversation that made it through T3's own API, so Ask this session and review decisions reach that conversation without the agent knowing T3 is there; it was verified live against T3 Code before we finished it for release. His folder asset fix (#1568) makes the selected folder the shared asset root in both the Bun and Pi servers and in share links; we added the hidden-file refusal on top of it. Both build on his earlier work on annotate and code review, including HTML Refresh and comparing a local branch with its remote.

      Full Changelog : v0.28.18...v0.28.19

    7. πŸ”— r/LocalLLaMA "New AI fake text generator may be too dangerous to release, say creators" (2019 Guardian headline) rss

      I'm sure some here read this at the time and remember, but I recently found this hilarious Guardian article from 2019 through Wikipedia:

      https://www.theguardian.com/technology/2019/feb/14/elon-musk-backed-ai- writes-convincing-news-fiction

      Some choice quotes:

      "OpenAI ... says its new AI model, called GPT2 is so good and the risk of malicious use so high that it is breaking from its normal practice of releasing the full research to the public in order to allow more time to discuss the ramifications of the technological breakthrough."

      "One is its size, says Dario Amodei, OpenAI’s research director. ... It was trained on a dataset containing about 10m articles, selected by trawling the social news site Reddit for links with more than three votes. The vast collection of text weighed in at 40 GB, enough to store about 35,000 copies of Moby Dick."

      Some people never change!

      submitted by /u/Frail_Waif
      [link] [comments]

    8. πŸ”— r/LocalLLaMA LiquidAI/LFM2.5-24B-A2B rss

      LiquidAI/LFM2.5-24B-A2B | Gguf's: https://huggingface.co/LiquidAI/LFM2.5-24B-A2B-GGUF Free Demo: https://playground.liquid.ai "LFM2.5-24B-A2B is a 24B-parameter reasoning model with only 2B active parameters, built for fast, private agents on-device. It is the largest and final model in the LFM2.5 family, which now spans two orders of magnitude: from LFM2.5-230M to LFM2.5-24B-A2B.

      • Best-in-class agent : Competitive with Qwen3.6-35B-A3B, a model with ~50% more total and active parameters, on agentic and tool-use tasks, scoring 48.09 on LiveClaw versus 38.19.
      • Reasoning at MoE speed : Always thinks before it answers. With only 2B active parameters per token, each reasoning token is cheap.
      • Efficient inference : Runs up to 1.7Γ— faster than comparable MoEs on-device, with 184 tok/s on an Apple M5 Max and up to 21K output tok/s on a single NVIDIA B300 GPU.

      LFM2.5-24B-A2B is a general-purpose text-only reasoning model with the following features:

      • Total parameters : 24.0B
      • Active parameters : 2.45B
      • Number of layers : 40 (30 double-gated short convolution blocks + 10 GQA)
      • Experts : 64 per MoE block, top-4 routing
      • Training budget : 36 trillion tokens
      • Vocabulary size : 128,000
      • Context length : 131,072 tokens
      • Languages : English, Arabic, Chinese, French, German, Italian, Japanese, Korean, Portuguese, Spanish, Vietnamese, Thai, Indonesian, Hindi, Russian, Polish
      • Generation parameters :
        • temperature: 0.1
        • top_k: 50
        • repetition_penalty: 1.05"

      submitted by /u/Skyline34rGt
      [link] [comments]
      ---|---

    9. πŸ”— backnotprop/plannotator v0.28.18 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.28.17 | The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
      v0.28.16 | The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
      v0.28.15 | Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
      v0.28.14 | Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
      v0.28.12 | Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
      v0.28.11 | plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
      v0.28.10 | The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
      v0.28.9 | Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
      v0.28.8 | The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window
      v0.28.7 | Ask this session keeps your drafts as drafts, image comments survive a reload, hostname check on every server
      v0.28.6 | Ask AI names the lines you selected, reorder quick labels and edit their emoji, Pi fixed-port crash fixed, OpenCode 2 subagent notice fixed
      v0.28.5 | Several files in one review, the plannotator tool on Pi and OpenCode 2, decisions name the exact file, Ask this session reconnects after sleep

      What's New in v0.28.18

      Until now an agent only used the Inbox if you had connected it by hand and told it when the Inbox was the right place. This release does both for you: plannotator inbox connects the agents it finds on your computer, and each agent is told, in a line or a short note, to bring you decisions and finished work there while you are away. Code review gets rendered Markdown views, started by @leostera in his first contribution. The rest is Inbox reading and navigation, a Settings page in sections, and a handful of fixes. 25 PRs in all, one from a first-time contributor.

      plannotator inbox connects your agents

      When you run plannotator inbox (not --background, which is how agents start it), it now finds the agents on this computer that are not connected yet, connects them, and says so on the terminal:

      Connected Codex, Gemini CLI and Cursor to the Inbox (Claude Code was already on).
      

      Codex, Gemini CLI, Amp and Windsurf/Devin get their own mcp add. Cursor, Kiro and the Claude desktop app get one plannotator-inbox key in their JSON config, and every other byte of that file stays as it was. Pi and OpenCode with Plannotator's extension or plugin get the inbox tool switched on, and Claude Code already has it through the plugin. Each entry runs <your plannotator binary> inbox mcp, and the agent uses it from its next session.

      A later run connects an agent you installed since, and names it once ("Connected Amp to the Inbox (new on this computer)"). An agent you turned off, or whose entry you removed, is never added back by itself, and an existing plannotator-inbox entry that runs something else is never replaced. PLANNOTATOR_INBOX_CONNECT=0 skips the step. plannotator uninstall removes only the entries it recorded adding, and gives each JSON file back exactly as it was; --dry-run lists them first.

      Agents are told when to use it

      Connecting an agent is half of it. The tool descriptions explained how to use the Inbox but never said when, so agents rarely reached for it unprompted. Four changes cover that:

      • The tool and MCP text now say when. The person may not be watching; a decision only they can make goes in a :::question, and the agent keeps working; finished long work goes with its files attached; ask in the chat when the person is there; never send routine progress. send_message no longer tells agents whose reply arrives by itself to call wait_for_reply. We checked the wording against scripted agent runs across nine scenarios, including the two where the Inbox is the wrong choice. (#1876)
      • A one-line reminder at session start. Once you have run the Inbox, a session that has the inbox tool gets one fixed line: "Plannotator Inbox is on: when you finish long work, or need a decision the person isn't here to give, send it with plannotator_inbox send_message and keep going. Their reply comes back here." Claude Code and Pi get it once per session, OpenCode on each request. It never changes during a session, so it does not break the prompt cache. Turn it off with inboxReminder in ~/.plannotator/config.json. Claude Code also gets the plannotator_inbox tool before you have ever opened the Inbox: its first call starts the Inbox in the background, with no browser tab. (#1886)
      • A note in each agent's instructions, with your yes. The first time you open the Inbox after it connected your agents, a card asks once whether to add a short marked section to each agent's own instructions file (~/.claude/rules/plannotator-inbox.md, Codex's AGENTS.md, GEMINI.md, Pi's instructions file, and OpenCode's AGENTS.md only when you already have one). It shows each file before writing. A note you edited is never overwritten, and removing a note gives the file back byte for byte. plannotator inbox --notes codex,gemini does the same from the terminal. (#1889)
      • Settings β†’ Agents. One group per agent found, with up to three switches: Reaches the Inbox, Reminder at session start, and Note in its instructions. A change applies to that agent's next session. Agents not found fold under "Not found on this computer", with the command or link to connect each by hand. (#1889)

      The plannotator skill's Inbox section is now short and points agents at plannotator inbox --help for the details, which keeps the skill from drifting out of date (#1887). And an OpenCode 2 bug that shut down the Inbox reply wake's event subscription at setup is fixed: the wake leaned on a fallback, and where that fallback failed, a reply never reached an idle session (#1891).

      Rendered Markdown in code review

      A Markdown file in a code review used to be readable only as a line diff. Each Markdown file now has a view menu in its header with three choices: Source (the line diff, as before), Changes (the rendered document with added, removed and changed sections marked, unchanged runs folded and source lines in a gutter) and Read (the whole new version rendered, with no diff marks). A view you pick becomes the starting view for every other Markdown file you have not set by hand, and is remembered for the next review. P steps the current file through the views.

      Select text in a rendered view to comment on it. The comment is a file comment that carries the quoted text, so the agent sees exactly what you meant, and the export, the sidebar and a PR review all show the quote. Images load from the revision on screen. In a PR review, remote images wait behind "Load remote images", so opening someone else's Markdown does not tell a tracking pixel your address. Mermaid and Graphviz fences show as code here, which keeps the review page as light as it was.

      @leostera wrote the first version, a Preview/Diff toggle for Markdown files, as his first contribution, and it grew into the menu above during review.

      Reading in the Inbox

      • A new message in the thread you have open counts as seen. Before, a message that arrived while you were reading stayed bold and "new" even though it was right in front of you. It now counts as seen once its first lines have been on screen for a second, while the tab is visible, the window has focus and nothing covers the thread. At the end of the thread the view scrolls just far enough to show it; elsewhere, the "↓ N new" pill counts it. Screen readers hear "New message from ". (#1890)
      • The row you open stays put. Opening a New row used to send it to the folded Quiet section a moment after the click, taking keyboard focus with it. While a thread is open, the list's rows no longer move. When you close the thread, the list settles into place with a short slide (none under reduced motion), and agent activity that arrived while you read waits behind "N new Β· Show". (#1875)
      • A way back to the list with a file open. With a file open beside a thread, the list and sidebar are hidden, and the first control at the top left was Archive. The thread header now leads with β€Ή Inbox (or the project's name), which closes the file and brings the list back with focus on the thread's row. The reply box's chips also wrap in that narrower column instead of spilling out. (#1871, #1881)
      • Attachments in the message header. A message with files shows "πŸ“Ž 3 attachments Β· 1 changed" in its sender line. Click it to see the tiles right under the sender, without scrolling to the end of a long message. (#1869)

      Inbox Settings, archived threads, and light or dark

      • Settings in sections. Settings is now a page with General, Agents, Devices, Archived, Storage and About, each at its own address (#settings/agents). General holds the theme, notifications and the sound; Devices holds Over your tailnet; About holds the version and updates. The sidebar steps aside while Settings is open. Old #settings links still land. (#1883)
      • Archived threads leave the list. They used to sit in Quiet with everything you had merely read. They now live in Settings β†’ Archived, newest first, with Unarchive , which opens the thread back in the list. If an agent writes in an archived thread, the thread comes back to the list while something waits on you, you can answer without unarchiving it, and it goes back to Archived once handled. (#1874)
      • Light and dark. A sun or moon button at the right end of the sidebar's Settings row flips the theme; Settings β†’ General has Light, Dark and Match system. It is the same preference plan review, code review and annotate use, so a choice in one carries to the others. (#1878)
      • The Decisions page's project switch shows counts. The plain dropdown is now a list that shows each project's folder and how many decisions are waiting and settled. (#1873)

      Quotes render as one quote

      A block quote with blank > lines, a code fence or a list inside it was split into one quote per line: the bar broke into segments, fences showed as literal backticks, and the code read as prose. A run of > lines is now one quote, with real code blocks, lists and nested quotes inside it. This applies to plan review, annotate and the Inbox.

      Two changes you might notice. A line like #Title (no space after #) is no longer a heading, following CommonMark and GitHub, so #123 at the start of a line keeps its issue link. And in a plan diff, an edit anywhere inside a quote that holds a code fence shows the whole quote as changed.

      The plannotator tool is on by default in Oh My Pi

      When our Pi extension runs inside Oh My Pi, the plannotator agent tool is now on by default. Oh My Pi lists an extension tool as one short line and loads its schema only when needed, so the tool costs about 50 tokens there, against about 780 on every request in plain Pi. Plain Pi and OpenCode 2 stay off by default. PLANNOTATOR_AGENT_TOOL and agentTool in config.json still override it either way.

      Additional changes

      • Long question choices can be picked. A choice longer than 200 characters was refused in the Inbox ("is not one of the question's choices"), and in plan review the pick saved but never showed. Both work now, and answers saved by older builds show their pick again. (#1888)
      • Stopped: no is not a stop. An agent that filled in Stopped: no, none or n/a put its thread in "Stopped on you". A bare negative word is now read as no stop, on Holds up: too. Threads already listed that way stay where they are. (#1877)
      • Mark read fixes. The note Mark read sends the agent no longer counts as your reply, so news that arrives after a Mark read shows as New. Mark read on an archived thread that came back sends it to Archived as the toast says. Undo reopens only the questions that Mark read closed. These were found by a new model of the Inbox's thread states, checked against the store after every step. (#1882, #1884)
      • The annotation toolstrip stays on top. In the Inbox's file view, scrolling put the document over the Select / Pinpoint / Markup toolstrip, and over the stepping bar's file list. (#1880)
      • jj reads file paths literally. In a jj review, a file whose name contains |, ~ or quotes was read as a fileset expression, so the review could show another file's contents. (#1879)

      Install / Update

      macOS / Linux:

      curl -fsSL https://plannotator.ai/install.sh | bash
      

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. 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 --extensions
      

      OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

      What's Changed

      • Inbox: attachments in the message header by @backnotprop in #1869
      • Pi extension: the plannotator tool is on by default in Oh My Pi by @backnotprop in #1870
      • Quotes: one quote per run of > lines, with code fences and lists inside by @backnotprop in #1868
      • Inbox: a way back to the list while a file is open beside the thread by @backnotprop in #1871
      • Inbox: tell agents when to use it (eval-backed instruction text) by @backnotprop in #1876
      • Inbox: a project switch on the Decisions page that shows each project's counts by @backnotprop in #1873
      • Inbox: light/dark toggle on the Settings row, and a Theme row in Settings by @backnotprop in #1878
      • Inbox: archived threads leave the list for a Settings panel with Unarchive by @backnotprop in #1874
      • Inbox: the reply box's skip chip wraps inside itself at any width by @backnotprop in #1881
      • Inbox: a bare negative word on Stopped: or Holds up: is no stop by @backnotprop in #1877
      • Inbox: keep the annotation toolstrip above the attached document by @backnotprop in #1880
      • Inbox: the thread-state model, checked against the store, with trace fixtures by @backnotprop in #1882
      • Inbox: the row you open stays put; the list settles when the thread closes by @backnotprop in #1875
      • Inbox: fix the thread-state model's violations A, B and C by @backnotprop in #1884
      • Questions: a choice longer than 200 characters can be picked by @backnotprop in #1888
      • Inbox: Settings in sections by @backnotprop in #1883
      • Skill: a short Inbox section that points at plannotator inbox --help by @backnotprop in #1887
      • Inbox: a new message in the thread you have open counts as seen on sight by @backnotprop in #1890
      • Review: add rendered Markdown previews by @leostera in #1879
      • Inbox: plannotator inbox connects the agents on this computer by @backnotprop in #1885
      • OpenCode 2 Inbox wake: keep the event subscription when the tool transform is lazy by @backnotprop in #1891
      • Inbox: a one-line reminder at session start, and Claude Code's Inbox tool before the first run by @backnotprop in #1886
      • Inbox: the note in each agent's instructions, the first-open card, Settings β†’ Agents by @backnotprop in #1889
      • Inbox: seen-on-sight DOM test no longer depends on wall-clock time by @backnotprop in #1892
      • Inbox: a restart from an older Inbox never connects agents by @backnotprop in #1894

      New Contributors

      Contributors

      @leostera built rendered Markdown previews for code review (#1879), his first contribution to the project. His Preview/Diff toggle, with the full document rendered through the shared Markdown renderer, is the base the Source / Changes / Read views grew from.

      @tedtramonte reported in #1814 that Ask this session was missing in Oh My Pi and confirmed the fix. Making the plannotator tool default to on in Oh My Pi (#1870) is a follow-up to that report.

      Full Changelog : v0.28.17...v0.28.18

    10. πŸ”— r/LocalLLaMA Is everyone in here buying up smart TVs now? rss

      Is everyone in here buying up smart TVs now? | Anthropic says we can run Gemma4 26b a4b with only 14 smart tvs. submitted by /u/SporksInjected
      [link] [comments]
      ---|---

    11. πŸ”— r/LocalLLaMA It's been too quiet on the other side of the Pacific rss

      It's been too quiet on the other side of the Pacific | submitted by /u/Nunki08
      [link] [comments]
      ---|---

    12. πŸ”— r/LocalLLaMA Anyone feel like reverse-engineering CUDA? rss

      I've been reading about all these modders using AI to reverse-engineer games and software. I've been trying out photocraft and gridcraft and have just watched a GTA5 mod featuring Sonic. It's pretty damn impressive.

      As a struggling AMD Radeon owner I'd love to see AI generated open source CUDA implementation.

      Not only do I dislike NVIDIA, but there's delicious irony in using CUDA cores to do it.

      Anyone up for the challenge?

      submitted by /u/Odd-World4925
      [link] [comments]

    13. πŸ”— r/LocalLLaMA Anthropic is doing free publicity for GLM again rss
    14. πŸ”— Ampcode News Take Puck with You rss

      You can now talk to Puck from ChatGPT, Claude, and other agents via MCP.

      ChatGPT opens Puck MCP and shows an Orbs card with one running orb, then lists what Puck can do: find previous work, delegate coding, inspect repositories, track development, coordinate agents, automate workflows, manage Amp, and communicate through connected services.

      After developing an idea with ChatGPT's voice mode on a walk, send it directly to Puck for implementation. Puck knows your projects in Amp and routes it to the right orb. In the same conversation, you can check in on your work in Amp directly from ChatGPT.

      Puck MCP offers two tools: puck for interacting with your Puck in Amp, and orbs for showing an interactive view of your running orbs with links to their portals.

      You're talking to the same Puck you use in Amp. It can look through your threads, find earlier work, and coordinate your agents.

      To connect, open Settings > Puck. Click Add to Claude, or copy https://ampcode.com/mcp into ChatGPT or another MCP client, then sign in with your Amp account.

      The Puck in Other Apps card in Amp's Puck settings, with an Add to Claude button, a Copy URL button for ChatGPT, and the https://ampcode.com/mcp server URL for other MCP clients.

      See Use Puck in Other Apps for details.

    15. πŸ”— muffinman Show page titles on Firefox's pinned tabs rss

      I love vertical tabs. I used Tree Style Tab for years, then switched to Sidebery and recently to Firefox's native vertical tabs. I like them, but I was annoyed how pinned tabs looked. By default they are collapsed, side by side, with only their favicon visible:

      Firefox's pinned tabs displayed side by side without
titles

      Luckily, there is a way to change that by adding some custom CSS. After applying it, my tabs looked like this:

      Firefox's pinned tabs stacked vertically with
titles

      CSS

      I couldn't find an existing snippet anywhere, and it took me some trial and error to get it right. Here is the CSS. I hope you find it useful.

      /* Show title */
      #pinned-tabs-container[orient='vertical'] .tab-label-container {
        display: flex !important;
        margin-right: 1.5rem;
      }
      
      /* Change tabs layout to be stacked under each other */
      #pinned-tabs-container[orient='vertical'] {
        --pinned-slot-display: block;
      }
      
      slot[part~='items-wrapper'] {
        display: var(--pinned-slot-display, flex) !important;
      }
      
      /* Remove extra vertical padding */
      #pinned-tabs-container > .tabbrowser-tab {
        padding-block: 0 !important;
      }
      
      /* Move the green status dot to the right */
      #pinned-tabs-container .tab-content:is([titlechanged], [attention]) {
        background-position: right 1.25rem center !important;
      }
      
      /* Make space for the green status dot */
      #pinned-tabs-container .tab-icon-stack {
        margin-inline: 0.5rem;
      }
      

      Tested on Firefox 157 on macOS.

      How to use userChrome.css

      To customize Firefox's UI via CSS, you'll need the following:

      • In Firefox, open the about:profiles page and open your profile's Root Directory in your file manager.
      • Inside your profile folder, create a folder named chrome.
      • Inside it, create userChrome.css (if it doesn't already exist).
      • Add your custom CSS to it.
      • Open about:config, find toolkit.legacyUserProfileCustomizations.stylesheets and set it to true.
      • Restart Firefox.

      If you need more details, there is a great website that explains it in detail.