🏑


  1. August 08, 2026
    1. πŸ”— HexRaysSA/plugin-repository commits sync repo: +5 releases rss
      sync repo: +5 releases
      
      ## New releases
      - [array-helper](https://github.com/milankovo/array-helper): 1.1.0
      - [ida-codemode](https://github.com/hexrayssa/ida-codemode): 0.3.1, 0.3.0
      - [ida-enums-helper](https://github.com/milankovo/ida_enums_helper): 1.1.0
      - [yank_type](https://github.com/milankovo/ida-yank-type): 1.1.0
      
    2. πŸ”— WerWolv/ImHex Nightly Builds release

      Nightly

      ced9759 Changelog

      • impr: Allow multiple cli commands to be queued up
      • git: De-duplicate msvc vcpkg cache key
      • build: Don't build debug versions of libraries with vcpkg
      • fix: Crash when using --pl command on a release build
      • feat: Add paste from source popup for pasting data from another provider (#2793)
      • fix: Separators being too thick
      • Revert "chore: improve + merge check_langs.py and langtool.py (#2790)"
      • impr: Give integrated plcli access to ImHex-specific types and functions
      • build: Update libwolv
      • fix: Crash when starting diffing
      • fix: Gaps between title bar elements with fractional scaling factors
      • fix: Scaling not being round-trip safe
      • chore: improve + merge check_langs.py and langtool.py (#2790)
  2. August 07, 2026
    1. πŸ”— IDA Plugin Updates IDA Plugin Updates on 2026-08-07 rss

      IDA Plugin Updates on 2026-08-07

      New Releases:

      Activity:

      • array-helper
        • d5932833: Enhance README and plugin metadata for Array Helper
      • augur
        • 76ed44b2: ci: bump the actions-dependencies group with 2 updates
      • disrobe
        • 1e80dacd: refresh the social card to match the current published figures
        • 98a28346: native: probe the byte immediately below the red zone rather than a w…
        • 17179173: native: grade the indexed red-zone frame at every machine element wid…
        • 95c73343: native: name the frame class that refuses an indexed frame region, an…
        • ab38aa73: jvm: hold the per-method gate to a corpus with one top-level class, s…
        • c30d8625: jvm: certify a recompiled method only when javac type-checked the uni…
        • 4792ef0e: look for a real 7-zip at its default windows install path when nothin…
        • 9933bb7b: add evn to the spell-check allowlist, the recursive helper name a php…
        • 0235ef87: jvm: compare a duplicated finally copy by where each branch lands rat…
        • 08943a9a: jvm: hold the finally body's head skip and tail trim in the render ma…
        • 991042d0: point the fuzz coverage declarations at structural.rs in its new disr…
        • 1d9aa5b3: fuzz: add compositional targets for python marshal, dex and jvm class…
        • 42e79e93: fuzz: drive the container front door and the pe/elf/mach-o parsers fr…
        • 6db7542c: php: evaluate a file-declared helper function through a frame stack i…
        • 7a8def65: shift the fuzz parse-surface count from disrobe-binfmt to disrobe-cor…
        • f01784f6: move the pe/elf/mach-o structural identifier into disrobe-core so a s…
        • 2cff65aa: scriptlang: refuse to classify a structurally native pe/elf/macho bin…
        • bf5adf41: go: require a structurally valid pclntab table instead of a bare magi…
        • 4d321d23: fail the five native recompile-equivalence checks closed instead of p…
        • 1f21b598: restore a distutils shim before installing the xlm reference tool in …
      • haruspex
        • a111d554: ci: bump the actions-dependencies group with 2 updates
      • ida-codemode
      • ida-pro-mcp
        • 04839c82: fix(ci): make rerank grace-window test deterministic
        • 315f7992: fix(ci): standalone suite collection error + native-build pin grep
        • d25b2ba6: feat(intelligence): rerank/context fixes, read_bytes action, expanded…
      • ida-yank-type
        • b42f512b: Update README and plugin metadata for Type Yanker v1.1.0; enhance des…
      • ida_enums_helper
        • e192907a: chore: strip logo metadata
        • 7b9bf263: feat: enhance README and plugin description for clarity and detail; u…
      • idac
        • 72c06a67: Merge pull request #40 from trailofbits/ci/release-title
        • 9372113f: Title GitHub releases
      • Kiroshi
      • rhabdomancer
        • 5ed05eb1: Merge pull request #6 from 0xdea/dependabot/github_actions/actions-de…
        • 3e7facfd: ci: bump the actions-dependencies group with 2 updates
      • twdll
    2. πŸ”— Simon Willison Now we have a timeline of the OpenAI accidental attack against Hugging Face rss

      OpenAI gave a last-minute presentation at the Black Hat security on Wednesday about "the Hugging Face Incident" (previously on this blog). The video was published yesterday. It's short and information dense and well worth watching, in particular because it provides full details of what happened and how things played out inside OpenAI. I've used the video to construct the timeline below.

      Here's the timeline. My favourite detail is at the end: OpenAI found out that they were responsible for the attack on Hugging Face when they reached out to ask to have their credentials revoked (after their internal investigation) and learned that they had been revoked already since they were used in that attack!

      • May 7: OpenAI starts a new training run for an experimental, unreleased model. (Do they mean an evaluation run? They say training run in the video, and later mention a "reward signal to judge how well they're doing", so I guess this really was about training a model, not evaluating one that was already trained.)
      • May 8: An agent is accidentally given an impossible task involving a Google Drive link despite no internet access). It tries attacking the Artifactory packaging service, fails, but discovers it can write files into Artifactory.
      • A few days later: A different agent gets stuck on a task because a key file was accidentally omitted. It tries to "reach out to another agent" by writing a note into Artifactory asking if anyone has the file.
      • Following days: More agents discover this new informal message board while browsing Artifactory's file listings, and start reading and writing messages.
      • May 26: Agents successfully execute an SSRF attack on Artifactory for the first time, gaining indirect internet access by having Artifactory fetch external content for them.
      • June 11: OpenAI start training a new "highly persistent" experimental model. It has access to Artifactory and can benefit from the messages left by privous models.
      • June 26: Agents find and exploit a zero-day RCE on Artifactory (via a legacy token-refresh endpoint flaw). They use an administrative token to install a Groovy plugin that lets them execute commands.
      • July 4: The resulting agent activity overloads Artifactory and causes an outage. OpenAI revokes the compromised credentials, deletes the messages, patches the zero-day, and reports the vulnerability to the vendor.
      • July 8: Agents find a new way to communicate via an unauthenticated WebDAV endpoint, using directory names in Artifactory's remote cache.
      • July 8–19: Attacks on OpenAI's own infrastructure. The agents found an "external organization credential" in a public archive of leaked Pastebin posts, then validated that credential and shared its location on the messageboard. They then used write access to this "Organization 1" to stage data used in subsequent attacks on OpenAI infrastructure. They compromised Artifactory for a second time with a new zero-day. The agent uploaded a malicious Ruby target to Organization 1's staging repository, then requested that package through Artifactory in a way that caused it to be treated as Ruby dependency for the repository. Then they exploited a JRuby deserilaization time-of-check/time-of-use bug to get remote code execution against Artifactory.

      I'll quote the next bit in full because wow:

      The agents have remote code execution in Artifactory, which is running in a container-as-a-service environment. The agents privilege-escalate locally by exploring their local environment and determining that the Linux kernel version of the machine they are running on had a very recent CVE. They download the exploit for the CVE, customize it to succeed on the machine, and privilege-escalate to root on the local machine using this known Linux kernel privilege escalation CVE β€” in this case, pte_physroot. Once they have root on a single machine, agents rapidly escalate privileges and move laterally throughout the container-as-a-service infrastructure environment. In particular, agents are using the message board consistently to share credentials, techniques, and progress, and they're able to effectively leverage their concurrency and parallelism to move quite rapidly. They obtain IAM credentials via IMDS. They exploit Kubernetes service account misconfigurations, in particular over-permissioning of specific service accounts, and they harvest cluster credentials, including Azure Key Vault. Agents eventually obtain cluster admin on the cluster and associated credentials.

      Hugging Face told the next bit of the story already. The agents found a Modal-hosted insecure app with a weak API key, then used that to stage an attack against Hugging Face. They chained together a an HDF5 arbitrary-file-read bug (to explore files and steal credentials) and a Jinja template-injection RCE to go from single-pod code execution to cluster admin across multiple Hugging Face clusters in under 13 hours.

      • July 16: Hugging Face disclosed they had detected an attack from autonomus AI agents. OpenAI contacted Hugging Face to ask if they were affected by it!
      • July 19: OpenAI identified the attack against Artifactory and started investigating the internal privilege escalation, and linked that to the cyber-gym escalations. They started revoking affected credentials.
      • July 20: OpenAI reached out to Hugging Face for help to revoke the Hugging Face credentials they found in their investigation. Hugging Face told them they were already revoked... and that's when OpenAI realized that the Hugging Face breach was the same incident!

      You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

    3. πŸ”— PrimeIntellect-ai/prime-agent Beta (v0.7.1-beta.465.1.a18809e) release

      Automated beta build from main (a18809e00ea30638584d87b3afea7285a9d7296c).

    4. πŸ”— PrimeIntellect-ai/prime-agent v0.7.1 release
      • Fixed the bundled websearch skill description and missing-key guidance omitting the /login β†’ MCP Connections step required to configure Serper.
      • Fixed retry_worker cancelling its own recovery when a stopped session worker left a saved stop marker behind, leaving the session stuck at "Session worker is not connected".
    5. πŸ”— r/LocalLLaMA Got job as Director of AI and Systems development self-taught rss

      Hey everyone, I just wanted to share my journey here for some motivation.

      Three years ago, I saw the sudden spike in AI and realized it was the future of tech. My goal at the time was to be an indie game dev, and seeing that AI could write basic code, I told myself I needed to master it or risk being replaced.

      I started by learning how to add knowledge to early LLMs like Vicuna and LLaMA. From there, I moved on to more advanced concepts, like building reasoning datasets by hand to try and outperform huge datasets. I quickly learned that data quality is far more important than quantity. After six months of handcrafting Python datasetsβ€”including examples of full games coded from a single promptβ€”I released pydevmini-1. At the time, it could code in Python at the same level as state-of-the-art models.

      That release caught the attention of the team at Tesslate. They reached out and brought me on (unpaid), which finally gave me my first piece of real tech experience for my resume.

      Eventually, I launched my own AI consulting firm, finding clients through Google Ads and LinkedIn. I was averaging about $3,000 a month. Then, last month one of my repeat clients offered me a full-time, remote position as Director of AI and Systems Development. It pays $84,540 a year with uncapped performance bonuses (I just got a $3.5k bonus last month!). I report directly to the CEO and largely get to make my own decisions.

      I did all of this while working full-time as a backline cook making $20/hr. I have no college degree and started with zero industry connections. I just worked on AI for at least 5 hours a day after my kitchen shifts many times at the desk until 3 AMβ€”using a single RTX 3090 I bought for local training.

      Now I get to do what I love at 21 in one of the most difficult industries to break into. For anyone out there trying to make it happen, I just want to say it is absolutely possible. Keep going!

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

    6. πŸ”— @HexRaysSA@infosec.exchange We have 10 seats left for our @MalwareVillage workshop at mastodon

      We have 10 seats left for our @MalwareVillage workshop at @Defcon on Saturday.

      Follow the Execution: A DLL Sideloading Teardown Intro in IDA. All skill levels welcome.
      πŸ“ Malware Village, Hall 2
      πŸ“… Sat Aug 8, 12:55–14:05 (Reg closes Sat. morning)
      πŸ‘‰ Sign Up: https://eventbrite.com/e/follow-the-execution-a-dll-sideloading- teardown-intro-in-ida-tickets-1994828069455

    7. πŸ”— r/LocalLLaMA An open-weight model too, Moonshot joins the race (gently this time) rss

      An open-weight model too, Moonshot joins the race (gently this time) | From Sauers 𝕏: https://x.com/Sauers_/status/2085585414954312113 Wired: One of China’s Most Powerful AI Models Has Also Escaped Containment: https://www.wired.com/story/moonshot-kimi-k3-ai-model-escape-sandbox/ submitted by /u/Nunki08
      [link] [comments]
      ---|---

    8. πŸ”— crosspoint-reader/crosspoint-reader v1.4.0 release

      CrossPoint 1.4 is mostly about things users don't see: tighter memory management, better stability under load, and a faster, more reliable SD layer. It also ships several long-requested features: EPUB bookmarks, RTL language support, Quick Resume, and a clock on the X3.

      152 changes from 50 contributors, 32 of whom are new to the project.

      EPUB Reading

      • Bookmarks now work in EPUBs. Access it from the reader menu with Toggle Bookmark. You can also set it as a Long-press action from Settings > Controls > Long-press Menu.
      • Page turn speed and image quality improved on the X3 in AA mode
      • Large images load faster and no longer freeze the reader
      • Images no longer ghost onto the next page in AA mode
      • SD font indexing and page turn speed improved
      • Fixed missing images and broken footnote links
      • Sub-chapter TOC navigation now lands at the correct anchor instead of jumping to page 0
      • Cover images in OPF manifests are validated before use
      • OPDS downloads prefer EPUB over KEPUB
      • KOSync no longer glitches when syncing from the first page of a new chapter
      • Added superscript, subscript, and horizontal rule (<hr>) support

      RTL Language Support

      Right-to-left text is now supported in both the EPUB and TXT readers. Hebrew UI localization added.

      Memory & Stability

      • WiFi/LWIP teardown runs via a silent reboot that clears ~50KB of heap fragmentation. It routes you back where you were and looks like a screen refresh.
      • Home screen cover cache reduced from ~52KB to ~16KB
      • OTA install heap floor stays ~19KB during firmware downloads (was ~7.7KB)
      • Tiled grayscale rendering drops peak allocation from ~114KB to ~82–90KB
      • Fixed OOM crashes on books with thousands of ZIP entries
      • CSS resolveStyle path now does zero heap allocations β€” ~12,000 fewer per page render
      • Underline calculations skipped during font cache scans, cutting hundreds of SD reads on pages with heavy underline use

      Fonts

      Domitian and Libre Baskerville added to SD fonts. OpenDyslexic moved off flash, freeing ~30% of the flash space. The font picker now have a live preview pane that renders a sample in the currently highlighted font.

      New Features

      X3 Clock β€” Built-in clock with automatic time sync.

      Themed Reader Menus β€” Reader menus follow the active theme.

      Custom Sleep Timer β€” Free-entry field from 1 to 30 minutes (or never), replacing fixed presets.

      Recent Books β€” Long-press to remove individual books. Option to auto- remove once a book is finished.

      Quick Resume β€” Sleep setting that displays your last screen or page instead of a sleep image or cover.


      What's changed

      Features

      Fixes

      Internal

      Languages


      New Contributors


      Full Changelog: release/1.3.0...release/1.4.0

    9. πŸ”— crosspoint-reader/crosspoint-reader v1.5.0rc release

      Summary

      This is one of the biggest updates we've shipped: new hardware support, faster loading on big books, offline dictionary lookups, and a UI overhaul.

      Seeed reTerminal Sticky support

      For the first time, CrossPoint is expanding beyond its original ESP32-C3 roots (XTeink X3/X4). We are officially introducing support for ESP32-S3 devices!

      • First Supported Device: The upcoming Seeed reTerminal Sticky
      • A huge shoutout to Seeed Studio for reaching out, sending test hardware, and being incredible partners throughout the process.
      • Get Yours: You can order a Sticky (Launching July 30th) at crosspointreader.com/devices using our affiliate link to support the project.

      Note

      The XTeink X4 Pro isn't supported in this build yet, but a dedicated release will follow once we've got hardware to test against.

      Big books open fast now

      Big books used to take minutes to open the first time. That's basically gone: sections index on demand in the background while you read, so books open in around 5 seconds. Page turns feel smoother too, from rendering and memory work throughout the app, and we fixed memory allocation and CSS parser bugs that were causing out-of-memory crashes on complex EPUBs.

      Offline dictionary lookups

      Drop a StarDict dictionary onto your SD card and you can look up words with no connection. Select a word, get the definition popup. There's a setup guide if you want to get one running.

      "What to read next"

      Finish an EPUB and CrossPoint looks at what's on your device and suggests something next, right on the end-of-book screen.

      Text settings got a rework

      Font and layout options now live in one menu, with a live preview so you can watch line spacing, margins, and font changes happen without leaving the settings screen.

      There's also a new selection popup. Any setting with three or more choices opens a dialog now instead of making you cycle through options one at a time.

      Arabic, Farsi, and Urdu

      1.4.0 added right-to-left text support. This one finishes the job for Arabic, Farsi, and Urdu: proper bidi handling and contextual glyph shaping, built-in fonts with full Arabic character sets, and the UI itself translated into Arabic.
      Hebrew Niqqud is correctly rendered.

      Everything else

      KOReader sync now handles custom sync servers, account registration, and metadata uploads. Wi-Fi should behave better β€” it reconnects to saved networks automatically, including hidden ones, and picks access points more sensibly. The web UI shows image previews in the file browser now and lists device serial numbers. OPDS downloads let you set your own folder and file format.

      We also added the Vollkorn serif font (grab it from Manage Fonts), cleaned up <br> handling and list bullet alignment, and expanded CSS text-decoration support.
      Translations got updates across Swedish, Italian, Spanish, Catalan, Valencian, Czech, Turkish, Portuguese (BR & PT), and Vietnamese, and we added brand new Norwegian BokmΓ₯l , Indonesian and Bosnian translations. Chinese entries are now shown correctly in the File Browser and chapters list.

      Note

      If you are upgrading from v1.0.0 or earlier , please upgrade to v1.4.1 first before installing the latest release. Skipping this step will cause your settings to be reset to their default values.


      What's Changed

      New Contributors

      Full Changelog : 1.4.1...1.5.0

    10. πŸ”— crosspoint-reader/crosspoint-reader v1.5.0 release

      Summary

      CrossPoint 1.5.0 is finally out.

      This was the longest gap we've ever had between releases. Sorry for the wait β€” hopefully it was worth it. This one adds our first non-ESP32-C3 device, cuts big-book load times from minutes to seconds, brings offline dictionaries, and finishes the right-to-left work we started in 1.4.0.

      Seeed reTerminal Sticky support

      CrossPoint has been ESP32-C3 only since day one (XTeink X3/X4). That changes with this release: we're adding support for ESP32-S3 devices, starting with the Seeed reTerminal Sticky.

      Thanks to Seeed Studio for reaching out, sending test hardware, and being genuinely great to work with throughout.

      Want one? You can order a Sticky at crosspointreader.com/devices β€” that's our affiliate link, and it helps fund the project.

      Big books open fast now

      Opening a big book for the first time used to take minutes. Sections now index in the background while you read, so books open in around 5 seconds instead. Page turns are smoother too, from rendering and memory work throughout the app, and we fixed memory allocation and CSS parser bugs that were causing out- of-memory crashes on complex EPUBs.

      Offline dictionary lookups

      Drop a StarDict dictionary onto your SD card and look up words with no connection. Select a word, get the definition popup. There's a setup guide if you want to get one running.

      "What to read next"

      Finish an EPUB and CrossPoint looks at what's on your device and suggests something next, right on the end-of-book screen.

      Text settings got a rework

      Font and layout options now live in one menu, with a live preview so you can watch line spacing, margins, and font changes happen without leaving the settings screen.

      There's also a new selection popup. Any setting with three or more choices opens a dialog now instead of making you cycle through options one at a time.

      Arabic, Farsi, and Urdu

      1.4.0 added right-to-left text support. This one finishes the job for Arabic, Farsi, and Urdu: proper bidi handling and contextual glyph shaping, built-in fonts with full Arabic character sets, and the UI itself translated into Arabic.

      Hebrew niqqud is now rendered correctly too.

      CJK improvements

      CJK text rendering got a real boost β€” it's a lot more usable now. We also added the option to load a Chinese font from your SD card so menu entries display in Chinese. It's not perfect yet β€” some users say it makes the interface noticeably slower β€” but more improvements are coming. CrossPoint probably won't ever be first-class for Chinese, but we're hoping bilingual readers find it good enough.

      Everything else

      KOReader sync now handles custom sync servers, account registration, and metadata uploads. Wi-Fi should behave better β€” it reconnects to saved networks automatically, including hidden ones, and picks access points more sensibly. The web UI shows image previews in the file browser now and lists device serial numbers. OPDS downloads let you set your own folder and file format.

      We also added the Vollkorn serif font (grab it from Manage Fonts), cleaned up <br> handling and list bullet alignment, and expanded CSS text-decoration support. Translations got updates across almost every language, plus brand new Norwegian BokmΓ₯l, Indonesian, and Bosnian translations.

      paulporto managed to save his bricked device by flashing firmware directly to the flash chip on an XTeink X4 motherboard. Not a simple procedure, and fairly risky, but good to know it's possible. His guide is here: fix-bricked-xteink.md.

      One of the bigger headaches this past month: XTeink started shipping X3 and X4 units with different internal hardware β€” not an upgrade, just a cost-driven change. A bunch of users who flashed an older CrossPoint build found their screen didn't work, or the battery drained in a day. We think we've now identified all the hardware variants out there, and CrossPoint should handle them fine. If your device isn't working right, please open a GitHub issue ASAP so we can push an emergency fix.

      The XTeink X4 Pro isn't supported in this build yet β€” a beta is up on the site for testers.

      Note

      If you're upgrading from v1.0.0 or earlier , install v1.4.1 first before this release. Skipping that step will reset your settings to default.

      What's Changed

      New Contributors

      Full Changelog : 1.4.1...v1.5.0

      Downloads

      Xteink X4/X3
      Seeed reTerminal Sticky

    11. πŸ”— earendil-works/pi v0.84.1 release

      New Features

      • Qwen Token Plan Individual β€” Use the built-in provider for models documented for Individual subscriptions. See API Keys.
      • Authentication readiness checks β€” Use pi auth check to verify provider or model credentials, optionally emitting the resolved credential.
      • Improved fullscreen interaction β€” Select words and paragraphs with multiple clicks and configure half-page transcript scrolling. See TUI Fullscreen Viewport.
      • Terminating blocked tool calls β€” Extension tool_call handlers can stop all-terminating batches without another model call. See Tool Events.

      Added

      • Added Qwen Token Plan Individual as a built-in provider with its documented subscription model catalog and the shared international QWEN_TOKEN_PLAN_API_KEY. See API Keys (#7659 by @arasovic).
      • Added pi auth check provider/model auth preflight with optional credential output (#7152).
      • Added terminate support to blocked extension tool_call events so all-terminating batches can skip the automatic follow-up model call. See Tool Events (#7715 by @muyiyr).
      • Added inherited double-click word and whitespace selection, granularity-aware drag selection, and triple-click paragraph selection in fullscreen mode (#7725, #7733 by @volsa).
      • Added inherited unbound half-page transcript scrolling actions for fullscreen mode. See TUI Fullscreen Viewport (#7735).

      Changed

      • Softened the bash tool's PI_* environment guideline in an attempt to reduce unnecessary inspection commands (#7128).
      • Reduced worst-case automatic terminal theme detection delay from 200 ms to 100 ms by probing color-scheme and background support concurrently.

      Fixed

      • Fixed Bun standalone binaries crashing on startup when the cwd contains a bunfig.toml with preload by compiling with --no-compile-autoload-bunfig (#7685 by @geril07).
      • Fixed extension TUI method wrappers recursing indefinitely when delegating to the original method (#7731).
      • Fixed right-click not pasting clipboard text in fullscreen mode on Windows.
      • Fixed inherited Agent.reset() clearing transcript and runtime state during active runs; it now rejects until the agent is idle (#7717 by @wesleyzhangwq).
      • Fixed inherited LaTeX relation, multiplication, and named-operator spacing, and matrix composition with stacked fractions, operator limits, and adjacent matrices.
      • Reduced inherited fullscreen mouse event volume under tmux, Zellij, and GNU Screen by using button-motion tracking instead of all-motion tracking.
    12. πŸ”— r/LocalLLaMA BBC is running article titled "Artificial Intelligence used to design brand new viruses" ... cue the "We must regulate Open Weights Models to prevent the next Covid or worse" articles in 3... 2.. rss
    13. πŸ”— Ampcode News Size the Orbs of Production! rss

      People are using a lot of orbs. We love to see that. We've shipped a lot of things so that Amp subscriptions keep covering the whole month of orb usage for almost everyone, even as orb usage grows quickly.

      Way back on July 27, we cut orb prices by 20% for everyone.

      This week, we shipped a lot more improvements.

      We added a new a1.medium size with 4 CPUs and 8 GB of memory. It is 50% cheaper and a better fit for most projects than the previous a0.medium.

      Orbs now auto-pause after 5 minutes of inactivity, down from 15 minutes.

      We've sped up orb startup time considerably, especially when another team member has recently created an orb in the same Amp project.

      You can now choose which orb size to use per-thread, so you can pick a smaller default to save money but go big for especially resource-intensive work.

      The new thread dialog with the five a1 orb sizes

      When starting new orb threads from the Amp CLI with amp -ox '...', the new flag --orb-size <size> lets you specify which orb size to use (instead of the project's default).

      When asking the agent to create other threads, you can now tell it to use smaller (or larger) orbs, which lets you use smaller orbs for simpler fan-out tasks on projects.

      Prices for orbs have gone down or stayed the same at every level and for every compute/memory combination. The new set of orb sizes is:

      • a1.tiny: 1 CPU Β· 2 GB memory Β· $0.08/hour
      • a1.small: 2 CPUs Β· 4 GB memory Β· $0.17/hour
      • a1.medium: 4 CPUs Β· 8 GB memory Β· $0.33/hour
      • a1.large: 8 CPUs Β· 16 GB memory Β· $0.66/hour
      • a1.xxlarge: 16 CPUs Β· 32 GB memory Β· $1.32/hour

      We've automatically upgraded projects to the equivalent new orb sizes. If you want to use a different orb size, you can update your projects' settings on the web, or ask Amp to do so using the amp projects subcommands.

  3. August 06, 2026
    1. πŸ”— IDA Plugin Updates IDA Plugin Updates on 2026-08-06 rss

      IDA Plugin Updates on 2026-08-06

      Activity:

      • codex-gpt-5.6-5.5-instruct
        • 95e71569: Blind upload replacement version
      • ida-pro-mcp
        • 0acbcae4: Fix Ruff lint violations causing Standalone Tests failures (#59)
        • 9989c4b1: feat(analysis): add save_idb, make_code, undefine, get_af/set_af, for…
        • 65d3c2db: fix(riscv): C extension mnemonics, CSR instructions, GP auto-apply
        • 36bb6791: docs(agents): add installer touchpoints section to AGENTS.md
        • 98f87876: fix: decompile opt-in verbose fields, var_rename bug, installer clari…
        • 44201441: fix(riscv): C extension mnemonics, CSR instructions, GP auto-apply
        • a7dd37ce: feat(riscv): inject GP note into every disasm result on RISC-V targets
        • a1e0bb59: fix(response): strip LLM-noise fields + add RISC-V GP detection
        • 7b32b0b2: fix(schema): register patch_bytes + rename_local in modify tool_registry
        • 763c7e7a: fix(lint): split import os, glob β€” ruff E401
        • 2098f8ed: build(deps): bump urllib3>=2.7.0, idna>=3.15 β€” fix Dependabot securit…
        • 2cbfea9d: feat: full agent accessibility β€” 13 new MCP operations + session/poli…
        • 79b235d5: fix: resume-crash root causes β€” invalid IDA flags, orphan locks, ENOS…
      • IDAPluginList
        • 101ad46f: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
      • Luc-Nhan
        • 450c957c: fix(ui): stop auto-restoring latest session on plugin startup
        • 7eb51c60: fix(ui): reset reasoning state after TEXT_DONE to restore thinking di…
      • twdll
        • 8f65b932: gh(actions): run on workflow_dispatch
        • 0f8c3b2e: feat: migrate to SetMaxSlots to SetMaxSlotsMajor / Minor
        • b80bd904: docs: update docs/readme with info about when to load lib
    2. πŸ”— hacker news ida pro references New comment by inigyou in "Can you reverse engineer an ASIC?" rss

      Before that there was, and still is, IDA Pro. Works largely the same but costs a lot, on the order of $1000/seat/year. Useless for hobbyists unless pirated, but reasonable if it's your job. Probably had academic discounts.

    3. πŸ”— HexRaysSA/plugin-repository commits sync repo: +1 plugin, +1 release rss
      sync repo: +1 plugin, +1 release
      
      ## New plugins
      - [IDA-MCP](https://github.com/captain-ai-hub/ida-mcp) (0.6.0)
      
    4. πŸ”— r/LocalLLaMA Qwen 3.8 Max now ranked as best overall model ahead of Opus 5 by Artificial Analysis agentic index rss

      Qwen 3.8 Max now ranked as best overall model ahead of Opus 5 by Artificial Analysis agentic index | submitted by /u/anderspitman
      [link] [comments]
      ---|---

    5. πŸ”— exe.dev The End of No Code rss

      You may have heard the news: Bending Spoons acquired Airtable for $1.28 billion. Rome didn’t fall in a day, but this is as good a point as any to mark the moment No Code platforms jumped the shark. Full disclosure, I worked at Airtable for many years, love the product, and love the people I worked with there even more. It’s the technology, namely the unreasonable effectiveness of LLM loops with tool use, that’s changed.

      Software at work is not valuable in and of itself. It’s built to serve some purpose. Mostly it’s used to keep track of something (schedules, parts, orders, people, you name it). Spreadsheets are the universal software here–and I love me a spreadsheet. But spreadsheets have a ceiling when it comes to sharing, programming, permissions, automations, and so on. Once you leave a spreadsheet, you upgrade to a database and some software on top of it: that’s what low or no code platforms like Airtable are. At their best, the person who brings Airtable to their team isn’t bringing Airtable: they’re bringing much- needed organization and process, and Airtable is merely the means.

      One of the things that Airtable got right was their experience of creating the tables themselves. You just added a column (like in Excel), and chose a data type (string, number, date, and so on), and, voila, you’ve created a table. I used to joke that Airtable should show up to SIGMOD (the big database conference) and present a paper on the efficacy of not having ALTER TABLE widgets ADD COLUMN (color string) as the way people use your database. Fred Brooks wrote: β€œShow me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won’t usually need your flowcharts; they’ll be obvious.” Airtable understood this at its core: if the user can specify the business model, building the automations and features on top of it becomes possible. (This is nothing new! FileMaker launched in 1985; it was my introduction to databases when I helped run a conference for ~1,600 high school students. It turns out that a little bit of extra credit, some freshmen, and 3 AppleTalk-connected computers could handle the mailed-in registration forms!)

      Once upon a time (the 90s!), IT teams at companies existed to build software for said companies. Much software was bespoke. We can use Salesforce’s 2000 β€œSoftware is Dead” campaign as the mile marker for when SaaS started taking over. IT departments became all about procurement. And procurement means saying NO. Low code and No Code platforms (and Microsoft SharePoint and Excel and Google Sheets) picked up the slack. When you can’t buy the software, you make do with what you can get access to, and you smuggle in some Airtable, increase revenues/efficiency/trust/whatever, and nobody can get rid of it for bureaucratic reasons because it’s now load-bearing.

      AWS launched EC2 in 2006. You could rent a VM. Getting it on the internet (so that you could share a thing with your co-workers) required learning about EC2 VPCs, IAM permissions, EBS, RDS, static IPs, DNS, and a handful of other Three Letter Acronyms (TLAs). Even within software companies, IT gatekept EC2. When I was at Google in 2007, the tool to search the company’s code base ran on a spare desktop under Jeff Dean’s desk. Getting a machine in Google’s datacenter to serve this (to me, critical) piece of infrastructure was too much of a hassle. (There were, at the time, funny β€œIs it web scale?” videos; e.g., https://www.youtube.com/watch?v=b2F-DItXtZs, amongst others.)

      Fast forward to 2026. LLMs are king. The SaaSpocalypse is under way, and happening like bankruptcy–gradually first, then all at once. What is the right way to build and deploy business tools? What is the right platform? Can non- software-engineers be trusted to do it?

      The right answer (it’s my turn to be wrong on the internet today, baby) is Linux. Yes, choose boring technology, and just use Linux. You can choose one of many stacks on top of Linux. Honestly, if you chose LAMP (Linux, Apache HTTPd, MySQL, PHP) you would be fine. My current preference is (sqlite, Go, Typescript, maybe Vue). If memory weren’t getting expensive, there’d be nothing wrong with (PostgreSQL, Node, TypeScript) but the memory crunch is real, and the advantages of using a single language for frontend and backend have disappeared since you’re not writing the code anyway.

      Yes, that entire stack is Open Source. Yes, if you build on that stack, and you need to migrate to AWS or GCP or Render or Azure or Oracle Cloud Infrastructure or Railway or Hetzner or a miniPC, you will be able to rsync the data and code over, and you’ll be all set. The platform-level lock-in is weak compared to low code platforms. (That said, an agent will port your low code setup to Linux with a few prompts.)

      Exe.dev sells this very stack. Your subscription lets you create Linux VMs. They’re on the internet in the way that matters: you can send links to your friends, and the links will work. They are secure by default, and you can make sites public using our auth system or your very own. They’re fast. They’re great for coding agents. The way to build your custom software is to build it right there in prod with the coding agent. Iterate until you get something usable. Iterate some more with feedback from your co- workers. Let your co-workers iterate on it too; let them sand down the edges. If you give the coding agent the data model for your business and the workflows, and a hint about the stack maybe, it will do ok. If your project is in the 1 percent of projects that need to graduate to β€œBusiness Critical Very Important Stuff,” sure, start a second VM and a dev environment, or maybe even graduate to the confusing trappings of modern software development (git). An LLM running on a Linux machine is the ultimate in β€œlow floor, high ceiling”: just get started, and you’ll perhaps be able to leave your spreadsheet in the dust.

      Moving on to some relevant FAQs.

      Is my data secure?

      Yes. Our defaults are secure. The mechanics are very similar to a Google Sheet: you can share a VM’s web port with just your team or individual people or the world.

      I have a spreadsheet or a low code solution already; how do I port it?

      If you’re comfortable doing so, start the VM, visit the agent (ours is called Shelley and it’s pre-installed by default), and give it an API key to your existing solution or upload your spreadsheet. Tell it to port it over into a web application on this machine. It will. Today, use Sol or Opus as the model. Tomorrow, ask us on Discord; the answer changes kinda frequently.

      How do I do schedules? Automations?

      Linux is a rich platform. You can ask the agent to run something on a timer, and it will. (It will usually choose systemd, but if you have a preference for cron, nudge it in that direction, and if you don’t know what either of those are, that’s ok!)

      How do I build agents or bots?

      The same way: ask the agent to write an β€œagentic loop using the exe.dev LLM integration” with tools to do this and that. So, perhaps it reads Slack threads in a certain channel and comments on that. The agent will one-shot it.

      One of the best things about the exe.dev platform is our β€œIntegrations” system. Hooking up your bot to Slack has never been easier.

      Is Vibe Coding good enough?

      In my experience, yes. The usual thing is to measure Risk and Reward. Every spreadsheet formula is fragile and untested and so on; and yet, spreadsheets work! Same applies here.

      Shouldn’t I use the Flue agent framework? Or maybe some framework from Langchain? Can I really just yolo it?

      Use whatever frameworks you like, but, ultimately, the agents are fine at choosing their own, or just doing it the boring way. There are millions of conflicting best practices the world over, β€œP & L FINAL FY2025 FINAL VERSION 3” is still the median solution, and you should figure out your workflow needs first. Have the agent set up a cron job to back up the database somewhere, too.

      How does your pricing work?

      The basic plan for $20/month gives you up to 50 VMs, but they are limited to 2 CPUs and 8GB of RAM. This is enough for quite a few small apps targeted toward your team. If you need more resources, you can upgrade or ask us; we are happy to get you machines as big as you need. Building your app may take more LLM tokens than we provide as part of your subscription. You can hook up a ChatGPT subscription, use other coding agents, or other model providers, or we’re happy to give you the LLM at API token costs through us.

      What if the app is slow? How do I test it?

      I’ve found that the agents are surprisingly good at both testing their end result and fixing performance issues. They use the same tools I use: profilers and so on. Shelley’s secret weapon is a good browser tool that it’s capable of using, profilers, screenshots, screencasts, and all.

    6. πŸ”— exe.dev A Non-Exhaustive Inventory of exe's Software Factory rss
      1. An agent that looks for security issues systematically.

      Fable refuses to help out, so we systematically look for security issues, with a bias toward recent changes.

      1. An agent that investigates alerts.

      Sisyphus keeps track of our alerts. We have ones that page us and ones that merely make noise in Slack. Either way, Sisyphus looks through our logs and metrics and source code, as well as analyzing its own previous investigations, to tease out what’s going on. It gives a great head start when investigating an issue (or just a flaky alert!).

      1. An agent that investigates logs.

      Every day, I get an email with interesting trends in our logs.

      1. Bots to fix flaky and slow tests.

      A bot is continuously analyzing flaky or slow tests in our CI and suggesting changes.

      1. A status page.

      status.exe.dev isn’t hosted on exe.dev. We built it ourselves, though.

      1. A system to page our phones (using the excellent and simple PushOver)

      When the aforementioned alerts fire, our phones beep very loudly. Traditionally you use PagerDuty for this, but PagerDuty’s durable asset is the entitlement for β€œEmergency Alerts” from Apple. Turns out PushOver has this as well, and a lovely API.

      1. An agent that supervises deploys and rollouts.

      Athena helps do rollouts. Infrastructure deploys are not instantaneous, and even the most patient operators stop paying attention. It checks metrics and logs (and has looked at the source code for what changed in this deploy).

      1. A blog CMS, with comments, collaborative text editing, embargoes, the whole nine yards

      If you’re reading this on blog.exe.dev, this ain’t Wordpress. Our blog started out as Markdown files in git, but now there’s a full-featured CMS, with collaborative editing, revision history, comments, embargoes, and a content calendar. A built-in agent (really, Shelley running on the same VM) can import a blog post from whatever you paste in.

      1. UI tests described as textual paragraphs that lazily materialize into browser instructions but self-heal

      Who are we kidding? We’re not maintaining Playwright tests by hand anymore. Shelley’s UI tests are increasingly a paragraph of text asking for some behavior. There’s a cache file (checked into git) that makes the test cheap and fast. When it fails, the CI system β€œheals” it with an LLM, and either fails or checks in the new fixed test. Yes, the build queue modifies the commit on its way through if necessary. More on this in a future post.

      1. Intrepid reporter bots that report on git commits, our help threads, and so on

      Every day, we get summaries in Slack about what’s happened in the past day, across git commits and such.

      Please note: if you’re writing bots that read untrusted data, understand the Lethal Trifecta: private data, untrusted content, and external communication. We happen to think that exe.dev VMs are a great place to isolate these bots, but we also make sure that the tools available to these agentic loops (an agent is just 11 lines of code: https://sketch.dev/blog/agent-loop) are limited in what they can do.

    7. πŸ”— @malcat@infosec.exchange Very nice step-by-step analysis of a simple telegram loader (#Teleshim) by mastodon

      Very nice step-by-step analysis of a simple telegram loader (#Teleshim) by M.Boll.

      Good material if you're starting with #malcat:

      https://www.mboll.eu/posts/sharpen_your_pencil_teleshim/

    8. πŸ”— r/LocalLLaMA They almost catched up on Frontier performance, so now catching up on prices rss

      They almost catched up on Frontier performance, so now catching up on prices | This is very important for us when considering local hosting. A lot of people decided not to buy expensive
      hardware because DeepSeek’s prices made it very difficult to break even given that deepseek was soo cheap.
      Also some of us use DeepSeek in routing, hosting Qwen and routing some hard tasks to DeepSeek API. what do you think about this?
      do you think raising prices will ultimately lead to another increase in NVIDIA’s GPU prices, since more and more people will now buy their own hardware? im seriously considering upgrading my stack now UPDATE: about an hour ago dax from OpenCode said that they were able to match DeepSeek's current API pricing even using rented GPUs. He believes the upcoming DeepSeek price increase is likely due to traffic shaping from overloaded infrastructure, not because they are losing money. submitted by /u/Zealousideal_Sort74
      [link] [comments]
      ---|---

    9. πŸ”— earendil-works/pi v0.84.0 release

      New Features

      • Fullscreen TUI mode β€” Switch between regular and fullscreen modes at runtime, with a sticky editor and footer, independently scrollable transcript, and draggable scrollbars. See UI & Display.
      • Mermaid and LaTeX rendering β€” Render Mermaid diagrams and terminal-friendly Unicode math in interactive transcripts. See Markdown settings and TUI Markdown.
      • Per-directory context overrides β€” Use AGENTS.override.md to replace context files for a specific directory. See Context Files.
      • Advanced custom model sampling β€” Configure arbitrary OpenAI-compatible samplingParams and opt-in vLLM thinking_token_budget values. See Sampling Parameters.
      • Baseten provider β€” Use built-in Baseten authentication and model support. See API Keys.

      Breaking Changes

      • Renamed the inherited pi-ai ModelsStreamTransforms interface to ModelsRequestTransforms because its header transformation now applies to all authenticated provider requests.

      • Changed JSON and RPC message_update events to emit only assistantMessageEvent deltas, removing the cumulative message and assistantMessageEvent.partial fields that caused quadratic output growth. Clients that need partial messages must assemble deltas between message_start and message_end; the latter remains authoritative (#7290).

      • ModelRegistry.getApiKeyAndHeaders() now returns ProviderHeaders with string | null values and preserves null header-deletion markers. Extensions that inspect returned headers must handle null; extensions forwarding them to pi-ai streams should pass them through unchanged. This prevents placeholder OpenAI credentials from being sent through Cloudflare AI Gateway (#7030).

      • Changed ModelRegistry.refresh() to accept ModelsRefreshOptions and return ModelsRefreshResult instead of discarding cancellation and provider errors.

      • Changed ModelRuntime.setRuntimeApiKey() to accept auth cancellation options rather than catalog refresh options. Call refresh({ providers: [providerId], signal }) separately when remote freshness is required.

      • Required config-form extension OAuth refreshToken(credentials, signal) callbacks to accept and honor a concrete abort signal.

      • Replaced dynamic provider refresh context store access with the read-only context.stored snapshot and generation-checked context.publish() transaction.

      Providers built withcreateProvider({ fetchModels }): no catalog- publication migration is required. Before and after, return the fetched models and register the resulting provider; createProvider() owns restoration, persistence, and in-memory publication.

          // Before
      const beforeProvider = createProvider({
        // ...
        fetchModels: async ({ signal }) => {
          const response = await fetch(catalogUrl, { signal });
          return parseModels(await response.json());
        },
      });
      pi.registerProvider(beforeProvider);
      
      // After: unchanged
      const afterProvider = createProvider({
        // ...
        fetchModels: async ({ signal }) => {
          const response = await fetch(catalogUrl, { signal });
          return parseModels(await response.json());
        },
      });
      pi.registerProvider(afterProvider);
      

      Handwritten nativeProvider.refreshModels(): replace direct store access and pre-publication mutation with generation-guarded publications.

          // Before
      refreshModels: async (context) => {
        const stored = await context.store.read();
        if (stored) currentModels = stored.models;
        if (!context.allowNetwork) return;
      
        const refreshed = await fetchModels(context.signal);
        currentModels = refreshed;
        await context.store.write({ models: refreshed, checkedAt: Date.now() });
      },
      
      // After
      refreshModels: async (context) => {
        if (context.stored) {
          const restored = context.stored.models;
          if (!(await context.publish({
            update: () => { currentModels = restored; },
          }))) return;
        }
        if (!context.allowNetwork) return;
      
        const refreshed = await fetchModels(context.signal);
        if (context.signal.aborted) return;
        await context.publish({
          persist: { models: refreshed, checkedAt: Date.now() },
          update: () => { currentModels = refreshed; },
        });
      },
      

      For the config-form pi.registerProvider(name, { refreshModels }), callbacks that only return models remain unchanged; pi publishes the returned list. If such a callback previously used context.store for custom persistence, read context.stored and call context.publish({ persist: entry }). In publish(), omit persist to leave storage unchanged, pass a ModelsStoreEntry to write it, or pass persist: null to delete it.

      • Replaced the inherited pi-agent-core harness session model with the v4 lane-based Session, SessionStorage, and SessionRepo APIs, including durable operation records, global facts, shared sequence numbers, and tree-scoped lane views.

      • Promoted the inherited v2 session and AgentHarness API from pi-agent-core's experimental entrypoint to its default export and removed the experimental subpaths.

      • Removed the inherited legacy JSONL and in-memory repository APIs. Use pi-agent-core's v4 JsonlSessionRepo or InMemorySessionRepo, both implementing the new SessionRepo contract.

      • Added the inherited required pi-agent-core FileSystem.renameFile() operation for atomic JSONL publication; custom harness file-system implementations must provide same-filesystem replacement semantics (#7707 by @davidbrai).

      • Replaced experimental remote-session list summaries with durable SessionMetadata; RemoteSession.sessions no longer exposes runtime phase, model, thinking, attachment, or lock state, which remains available from acquired SessionSnapshot values (#7708).

      Added

      • Added built-in Baseten provider support with BASETEN_API_KEY authentication and zai-org/GLM-5.2 as the default model.
      • Added experimental remote-session client APIs: the transport-neutral PiClient, CBOR protocol, Unix-socket transport, and @earendil-works/pi-coding-agent/client RemoteSession controller with transcript reducers. See Pi Client and Remote Protocol (#7344, #7348, #7371, #7409).
      • Added CredentialSynchronizationError for credential changes that commit successfully but fail to synchronize local model state.
      • Added chainable pi.registerMarkdownTransformer() hooks for display-only transformation of user and assistant Markdown. See pi.registerMarkdownTransformer() (#7231 by @xl0).
      • Added an experimental fullscreen TUI mode, selectable through --tui-mode fullscreen or /settings (#7304).
      • Added runtime switching between regular and fullscreen TUI modes through /settings.
      • Added a sticky editor, status, widget, and footer dock to fullscreen mode while keeping the transcript independently scrollable.
      • Added a draggable transcript scrollbar to fullscreen mode with configurable auto, always, and hidden modes through /settings; always reserves the rightmost column.
      • Added page scrolling and marked-message navigation shortcuts to fullscreen mode.
      • Added an optional scrollbarThumb theme color for fullscreen scrollbar thumbs, falling back to selectedBg.
      • Added configurable themed Unicode rendering for supported Mermaid diagrams in interactive messages, including optional rendering while streaming. See Markdown settings (#7624 by @xl0).
      • Added opt-in Ctrl+P/Ctrl+N prompt history navigation, with explicit history bindings taking precedence over application shortcuts while the editor is focused.
      • Added per-directory AGENTS.override.md context files, which replace AGENTS.md or CLAUDE.md in the same directory while preserving context from other directories. See Context Files (#7681 by @Marvae).
      • Added AI_AGENT=pi to CLI and RPC child-process environments for generic agent attribution. See Environment Variables (#7493 by @renaudhartert-db).
      • Added inherited terminal-friendly Unicode rendering for LaTeX expressions in Markdown. See TUI Markdown.
      • Added stacked transient notifications in fullscreen mode.
      • Added arbitrary OpenAI-compatible model sampling parameters through samplingParams in models.json, model overrides, extension providers, and stream options. See Sampling Parameters (#7568 by @mrexodia).
      • Added inherited opt-in vLLM thinking_token_budget support for OpenAI-compatible models, reserving output tokens for the final answer (#7638 by @bnsd55).
      • Added inherited support for OpenAI-compatible streams that omit finish_reason, using compat.supportsFinishReason to infer normal and tool-use stops when the stream ends. See OpenAI Compatibility.
      • Added inherited deferred provider request contracts, durable response handles, authenticated fetch/cancel dispatch, and faux-provider support for pending, ready, failed, and cancelled responses (#7339 by @davidbrai).
      • Added inherited vendor-neutral telemetry contracts plus agent-owned typed AI-request and harness schemas, composed span starters, and callback helpers. See the agent telemetry schema reference.
      • Added inherited structured Amazon Bedrock failure diagnostics with HTTP status, modeled error code, and AWS request id when available (#7286 by @brianstanley).
      • Added inherited AgentOptions.shouldStopAfterTurn for gracefully stopping after a completed turn before queued messages or another model call are processed. See Agent Options (#7367 by @acmerfight).
      • Added inherited v4 JsonlSessionRepo support for append-only JSONL harness sessions (#7611 by @davidbrai).
      • Added inherited bounded branch-entry and indexed open-operation recovery queries to the v4 session API (#7448, #7646).
      • Added the inherited compile-complete AgentHarness v2 scaffold; unfinished operation paths reject with HarnessNotImplemented while durable execution is implemented.

      Changed

      • Added inherited optional cancellation to pi-ai ModelsStore reads, writes, and deletions; catalog orchestration binds these waits to the provider refresh signal.
      • Reduced the inherited default fullscreen mouse wheel step from three lines to one for finer scrolling.

      Fixed

      • Fixed the footer showing (sub) for generic OAuth/OpenID sign-ins without a known subscription; extension OAuth providers can opt in with isSubscription.
      • Fixed inherited OAuth token refreshes so stalled requests release the credential-store lock (#7508).
      • Fixed inherited tool argument validation to preserve values that already match an anyOf/oneOf union arm before coercion, avoiding nullable unions converting null to another primitive value (#7328).
      • Fixed inherited Fireworks GLM 5.2 requests sending the unsupported prompt_cache_retention field when long cache retention is enabled, and enabled session affinity for automatic prompt caching (#7676).
      • Fixed inherited JsonlSessionRepo enforcing session IDs globally across working directories; IDs are now unique within each working directory.
      • Fixed inherited JSONL session forks and torn-tail repairs to publish atomically, avoiding partially written or corrupted sessions after interrupted writes (#7707 by @davidbrai).
      • Fixed path-containing find globs returning no results on Windows (#6817).
      • Fixed messages queued during manual /compact failing instead of being sent after compaction completes.
      • Fixed Git Bash, MSYS, Cygwin, and WSL drive paths passed to built-in file tools resolving against the current Windows drive instead of their native drive (#7064, #7547).
      • Fixed project-level nested provider retry settings replacing unmodified global provider retry settings (#7572).
      • Fixed inherited GitHub Copilot Grok 4.5 requests to use the supported Responses API (#7560).
      • Fixed fullscreen shutdown leaking terminal capability-query replies into the parent shell prompt.
      • Fixed bare exact --model IDs shared by multiple providers choosing the first catalog entry instead of the sole authenticated provider or a clear ambiguity error (#7327).
      • Fixed standalone x64 binaries requiring Haswell-era AVX2/BMI2 instructions by compiling release executables against Bun's baseline runtime (#7390 by @davidbrai).
      • Fixed Ctrl+X copy confirmations in fullscreen mode adding a transcript status line instead of showing the transient Copied! marker.
      • Fixed Kitty image previews in fullscreen mode overlapping the sticky editor and footer dock while scrolling.
      • Fixed image-heavy fullscreen sessions lagging when layout changes retransmitted visible Kitty image payloads and rendered the transcript twice per frame.
      • Fixed spaces in /settings searches toggling the highlighted setting while typing multi-word queries such as TUI mode or Quiet startup.
      • Fixed custom editors not inheriting the default editor's autocomplete dropdown item limit (#7333).
      • Fixed malformed resource arrays in package manifests crashing session startup (#7187).
      • Fixed the DOOM overlay example downloading its shareware WAD from a dead URL.
      • Fixed setToolsExpanded(false) to be a no-op when tool output is already collapsed, avoiding redundant Tool output: collapsed startup notices from extensions (#7292).
      • Fixed extension-driven model calls in custom compaction, handoff, and Q&A examples to dispatch through the coding-agent model runtime so custom providers and resolved auth options are preserved (#7325).
      • Fixed long-running sessions using stale credentials after another process updates auth.json without serializing concurrent credential reads and delaying startup (#7319).
      • Fixed concurrent models-store.json reads forming a file-lock convoy and delaying startup.
      • Updated the packaged brace-expansion dependency to 5.0.8 to address GHSA-mh99-v99m-4gvg (#7316).
      • Fixed forced model availability refreshes remaining blocked behind a stalled earlier refresh (#7301, #7421 by @a-yeyang).
      • Fixed /model catalog refresh failures to identify every catalog that failed.
      • Fixed provider login remaining stuck after saving credentials when a model catalog refresh stalls by separating local credential consistency from bounded background freshness (#7027, #7113, #7418).
      • Fixed /scoped-models waiting for remote catalogs before rendering instead of showing cached models and cancelling refresh on close (#7153).
      • Fixed /model <name> waiting for catalog refresh before checking cached model matches (#7443).
      • Fixed stale availability snapshots and errors publishing after a newer availability pass.
      • Fixed stale pi.dev, Radius, llama.cpp, and extension catalog refreshes publishing after a newer provider refresh.
      • Fixed cancellation while waiting for file-backed credential or model-catalog locks, preventing cancelled mutations from running or committing later.
      • Fixed concurrent in-memory credential mutations losing unrelated provider updates by serializing their read-modify-write sections.
      • Updated undici to 8.9.0 and the packaged brace-expansion to 5.0.9 to address GHSA-8xcm-r25x-g524, GHSA-4cwx-7wf7-3272, GHSA-m8rv-5g2x-5cg5, GHSA-jr45-8vmc-qm54, GHSA-v3r7-h72x-cjcm, and GHSA-rgw5-rvv9-x895.
      • Fixed GitHub Copilot compaction and branch summaries using the Individual endpoint instead of the credential-resolved Business or Enterprise endpoint (#6768).
      • Fixed extension model calls dropping credential-resolved endpoints when forwarding request authentication, including custom compaction with GitHub Copilot Business and Enterprise accounts (#7579).
      • Fixed fullscreen transcript navigation leaving no editor-accessible Home, End, PageUp, or PageDown variants by adding Ctrl-modified editor bindings (#7574).
      • Fixed extension event-bus listeners surviving session reloads and disposal (#7656 by @tudoroancea).
      • Fixed /copy failing to read clipboard text on Wayland when no X11 clipboard is available (#7387).
      • Fixed slow connections failing during the initial connection attempt by increasing the connect timeout (#7435 by @muyiyr).
      • Fixed oversized images returned by extension and built-in tools bypassing automatic image resizing. See Image settings (#7330 by @tizmagik).
      • Fixed session discovery missing sessions stored through symlinked directories (#7552 by @muyiyr).
      • Fixed manual compaction racing with threshold auto-compaction (#7370 by @davidbrai).
      • Fixed responses truncated below their intended output limit ending the run instead of compacting and retrying once (#7540 by @davidbrai).
      • Fixed Git package updates leaving dependencies missing when git clean cannot remove an ignored dependency directory (#7570 by @mrexodia).
      • Fixed find results from POSIX and Windows filesystem roots losing the first path segment or gaining duplicate trailing separators (#7569 by @petrroll).
      • Fixed transient version-check, catalog, managed-tool, and package-management HTTP failures not being retried (#7632 by @petrroll).
      • Fixed interactive errors ignoring the configured output padding.
      • Fixed the inherited OpenCode Go provider display name.
      • Fixed inherited provider error normalization treating arrays and class instances as structured response bodies instead of preserving their original errors (#7205 by @erikogenvik).
      • Fixed inherited Anthropic streams dropping text or thinking included in the initial content-block event (#7358 by @davidbrai).
      • Fixed inherited Google history conversion dropping signed empty text and thinking blocks required for replay (#7362 by @jingtao-wisdomgraph).
      • Fixed inherited OpenAI Codex cached WebSocket sessions being shared across different account credentials (#7364).
      • Fixed inherited transient Google Generative AI and Vertex AI provider errors bypassing automatic retries (#7471 by @vish-pr).
      • Fixed inherited Gemini 3 tool call ids being discarded during history conversion, breaking signed multi-turn replay (#7494 by @muyiyr).
      • Restored inherited GitHub Copilot models returned through account-specific policy responses (#7672 by @muyiyr).
      • Replaced the inherited retired Qwen Token Plan qwen3.8-max-preview model with qwen3.8-max (#7670 by @QuintinShaw).
      • Fixed inherited terminal width accounting for Indic conjunct grapheme clusters (#6987 by @petrroll).
      • Fixed inherited nested fullscreen stack layouts ignoring child minimum sizes.
      • Fixed inherited batched terminal color-scheme reports being parsed as one malformed response (#7550).
      • Fixed inherited terminal progress clearing to emit the complete OSC 9;4 sequence (#7581).
      • Fixed inherited iTerm2 image payloads omitting the size metadata required by the xterm.js image addon (#7612).
      • Fixed inherited width truncation leaving OSC 8 hyperlinks unterminated (#7657 by @xXJSONDeruloXx).
      • Updated inherited GPT-5.6 Terra and Luna pricing across OpenAI and passthrough model catalogs.
      • Fixed inherited Fireworks Kimi K3 models to use the OpenAI-compatible API with native reasoning-effort levels and deferred tools (#7199, #7230 by @XBeg9).
      • Updated the inherited Groq Qwen reasoning override for the replacement qwen/qwen3.6-27b model.
      • Fixed inherited Windows Shift+Enter detection by reading modifier state from the native Win32 helper.
      • Fixed the inherited pi-tui npm package omitting the source and build scripts needed to rebuild its Windows and Darwin native addons.
      • Fixed inherited Windows console truecolor detection when Windows Terminal does not provide WT_SESSION to child shells.
      • Fixed inherited phantom fullscreen text selection from unmatched mouse events when changing terminal pane focus.
      • Fixed inherited keyboard input rendering latency on Windows by letting input preempt the throttled render timer.
      • Fixed inherited agent harness path handling on Windows for file basenames, recursive skill loading, and prompt template names.
    10. πŸ”— r/LocalLLaMA Qwen3.8-2.4T-A95B (aka Qwen3.8-Max) open release time: next wednesday rss
    11. πŸ”— matklad Zig's Io.Threaded is Neat rss

      Zig’s Io.Threaded is Neat

      Aug 6, 2026

      std.Io.Threaded is one of the implementations of Zig’s new Io interface that enables concurrency. This is a boring β€œjust use threads” impl. I personally find it neat though β€” it does this weird thing that I wanted to do for ages, that to my knowledge no one else is doing properly, and implements it better than I thought to be possible.

      Io.Threaded uses blocking syscalls and fully supports cancelation.

      Concurrency vs Parallelism

      Quoting @tedinski,

      • Concurrency is about handling (asynchronous, nondeterministic) events.
      • Parallelism is about using hardware resources to do more at the same time.

      I think this definition is correct, but doesn’t provide useful intuition directly. Concurrency is the same thing as state transducers? Yes, obviously, but not really illuminating as to how you’d program the thing.

      For intuition, I like these two litmus tests. First , parallelism is deterministic or β€œdeclarative”:

      use rayon::prelude::*;
      fn sum_of_squares(input: &[i32]) -> i32 {
          input.par_iter()
               .map(|i| i * i)
               .sum()
      }
      

      You describe how to split the problem into independent partitions, and implement a function to process one partition at a time . It’s platform’s job to verify the partitioning to be correct (non-racy), process all partitions, and yield control back once that is done.

      Second , concurrency invariably involves cancelation. Whenever you have two asynchronous computations happening at the same time, there comes a moment when one computation becomes aware that the second computation is no longer necessary, and must be canceled, actively. In general, it is not possible to just wait until the other computation completes: often, the reason why you want to cancel it in the first place is precisely because you’ve learned that it can’t complete (e.g., it is waiting for a message it will never receive).

      And that is the problem with

      Just Use Threads

      Well, there are more, the chief being that, while you totally can spawn many threads, this often requires system-wide configuration change, which is a non- starter for most application. But absence of cancelation really makes you hit a wall sooner or later. The problem are syscalls. It’s easy enough, in any loopy code, to do something like

      while (true) {
          if (is_canceled()) return error.Canceld; /// Easy!
          ...
      }
      

      But, the thread is instead blocked inside the syscall in the kernel, programming language APIs generally doesn’t give any way to unblock it:

      const read_size = try read(fd, buffer); // ???
      

      Wouldn’t it be cool if we could just use standard OS threads, blocking APIs, avoid new shinies like io_uring, but still get to cancel any work reliably? That’s exactly what Zig’s std.Io.Threaded provides.

      SIGIO

      The way this works on POSIX is a bit cursed. Turns out, the kernel actually provides a roundabout way to cancel a blocking syscall β€” signals. When a thread is blocked in the kernel, and a signal is delivered to the thread, the thread is woken up and the syscall returns EINTR. It is customary to just loop re-try the syscall in such cases, but one doesn’t have to.

      By itself, signals are not a cancelation mechanism β€” signaling a thread is inherently racy, the signal might get delivered before the relevant syscall starts, or after it finishes. Conversely, a syscall might get interrupted by signal unrelated to cancelation.

      The actual protocol is that the canceling thread sets a flag in shared memory to request cancelation, and then signals the cancelee, in a loop, until the cancelation is acknowledged (a different value for a flag in the shared memory). Upon receiving EINTR from a syscall, the thread potentially being canceled checks the value of the flag and either retries the syscall, or acknowledges the cancelation and begins unwinding. See signalCanceledSyscall and, eg fileReadPositionalPosix for the two halves of the protocol.

      On the user-side, cancelation request is materialized as error.Canceled. Error management as a feature is a combination of cancelation, branching, and reporting, and Zig implements the first two. Cancelation isn’t an error not because it is serendipitous success, but because, vice versa, an error is a cancelation plus a payload.

      On Windows, there’s a much more direct NtCancelSynchronousIoFile Love the name!. In general, between fibers, IO Completion Ports, Job objects, and this, it seems that NT has a better thought through concurrency story than Unix.

      Prior Art

      In Java, there’s a similarly looking thread interruption mechanism. Critically, it doesn’t support interrupting syscalls: IOException and InterruptedException are both checked and unrelated, meaning that IOing functions are not interruptible. In Zig, reader and writer interfaces completely type erase errors and therefore support cancelation, though this requires some extra care to handle correctly, on top of the usual don’t forget to flush.

      pthread_cancel implements a similar signal+flag machinery. However, it doesn’t integrate with language-level cancelation (try, defer) which makes post-cancelation cleanup cumbersome and slow. More generally, a lot of angst around concurrency steams from a fact that it falls exactly into the twilight zone between the kernel, the runtime, and the language. There’s almost (interrupts excepted) no concurrency on the CPU, it’s an illusion with a mixed authorship. The language is usually the better equipped one to tackle the problem, but, traditionally, it is handled by the kernel and libc, with adverse effects on language design.

      Another problem with pthread_cancel is that it tears down the entire thread, which would be an OK thing to do if threads were cheap. However, creating threads is still slow, and the configured system limit for a number of threads is typically low, so its usually a good idea to pool OS threads. Zig’s Io solves this problem ingeniously, separating, at the interface level, β€œmay run concurrently” from β€œmust run concurrently”:

      https://kristoff.it/blog/asynchrony-is-not-concurrency/

      This achieves an effect similar to that of std::launch policy (item 36 in effective modern C++, if you have that around). By naming what is happening (io.async vs io.concurrent), Zig makes it easier to understand what is actually going on, and also gets more precise signatures (concurrent is always fallible, async never is). Of course concurrent is backed by a thread pool, falling back on spawning a fresh thread only when the pool is exhausted.

    12. πŸ”— Console.dev newsletter syncular rss

      Description: Offline-first SQL sync.

      What we like: Gives every client a local SQLite database with a server-side commit log. Reads & writes are local, then sync’d (offline outbox). Blobs stored as content-addressed on object storage. CRDT conflict resolution. Optional per-column E2E encryption.

      What we dislike: C FFI for non-supported languages.

    13. πŸ”— Console.dev newsletter Mu rss

      Description: Local tools for agents.

      What we like: MCP server with various tools for agents - news, weather, search, mail. Provides auth and a web UI for using the tools via a browser. Also provided as a CLI. Open source and self-hostable, or available via the author’s cloud service.

      What we dislike: Publicly available by default, but has options to turn off signups or just put it on a private network.

    14. πŸ”— New Music Releases Foo Fighters - Are Playing Where??? Vol. II rss

      Foo Fighters - a new release is available:

      • 2026-08-06: Are Playing Where??? Vol. II (EP)

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

      Visit muspy for more information.

    15. πŸ”— Ampcode News Portals into Orbs rss

      For remote development in orbs to be better than local dev, you need to be able to easily try out the agent's changes in your app, with live reloading. No VPN, no port juggling, and no waiting for preview deployments.

      Today, we're shipping portals, which let you access anything running in an orb that listens on a port and speaks HTTP.

      All you need to do is ask Amp: show me in a portal. Or words to that effect.

      Obviously, you can use portals to try out the features or fixes made by the agent:

      You can also annotate and comment on anything:

      But you can also have the agent build ad-hoc web apps for you to debug or understand the system:

      Portals are accessible to anyone with access to the thread. They go to sleep and wake along with your orb.

      Make a thread multiplayer with on the web, and your team members can also make changes and see them live in the portal.

      Services

      When you say show me in a portal, the agent knows to create or look for a .amp/services.yaml file and then run amp orb services <ensure|start> to run your app and expose it via HTTPS. Your app needs to respect the PORT and PUBLIC_URL env vars it's given.

      Amp will handle all of this for you; agents are really good at that kind of stuff. Commit the .amp/services.yaml file and Amp's changes to your dev server config so it's faster next time.

      What about my app's sign-in flow? What about ...?

      You don't want to waste time signing into your dev server each time. We recommend adding a way for humans and agents to bypass sign-in flows (such as username/password or OAuth) in your dev server, by visiting a URL like:

      https://localhost:2000/__dev/log-me-in/{email}?returnTo={path}
      

      We've documented this pattern and more in the portals documentation. Also see Putting an Agent in an Orb for more about how we're using portals. Tell us how else you and your agents are using portals!

  4. August 05, 2026
    1. πŸ”— IDA Plugin Updates IDA Plugin Updates on 2026-08-05 rss

      IDA Plugin Updates on 2026-08-05

      New Releases:

      Activity:

      • capa
        • fa2be14e: Merge pull request #3137 from mandiant/dependabot/pip/bump-my-version…
      • disrobe
        • adfeaf89: grade mba simplification against originals held out of the pass input…
        • 0449e182: grade the apk head-to-head over each tool's whole emitted source set …
        • d18d4611: keep the wasm toolchain out of a pass-only build, restore the pinned …
        • c7705751: recover short-circuit control flow through capped node splitting, and…
        • ca7149ba: cli: gate the http, grpc and lsp stack behind a server feature and dr…
        • f3e7af93: apk head-to-head: count a recovered method clean only from a file jav…
        • c6b38fa6: r: read every serialization variant R writes and grade the reader aga…
        • 3e4e31a8: fixtures: replace the build-machine home directory baked into the tra…
        • 79c91e25: lift-x86: fail the differential when the reference stops producing re…
        • 095b284c: lua: call a body fully structured only when every region fit the stru…
        • 98157241: dotnet: count a body that states either refusal as not recovered in t…
        • bb101419: spell-check: exclude per-crate test corpora, whose hex payloads are d…
        • e8f032bd: beam: run a toolchain that resolves to a batch script through the win…
        • 6e5c9be6: docs: render the android, wasm and beam coverage fractions from recov…
        • f5044f1a: format three crates that drifted from rustfmt
        • a7c3d9df: cli: keep the no-default-features build compiling by gating the pass-…
        • 80ae1c36: lift-x86: execute every modelled encoding against a cpu emulator on s…
        • ee07f4c7: dotnet: classify a branch condition from the callee return type and t…
        • 4ba8f071: dotnet: resolve the fieldptr, methodptr and paramptr indirection tabl…
        • f1be74fa: dotnet: read every parameter name through one naming path shared by t…
      • ffxiv_bossmod
      • hrtng
        • 43d507e6: - Enums: one more way to import enum type from external til (workarou…
      • ida-codemode
        • d20287c9: Add timeout argument to execute_python MCP tool
      • ida-domain
        • 2c9867c2: Fixed segment and function related examples as in #103 (#106)
      • ida-hcli
        • 02adae21: 0.19.0
        • 91f14a81: refactor: construct explain-environment report models in single const…
        • 84a00702: Add -json and -offline to plugin status/search, headless explain-en…
        • 086297f1: feat: honor $IDAPYTHON_VENV_EXECUTABLE for plugin dependency management
        • 44ed0466: feat(ida): add hcli ida python to work in IDA's Python environment …
        • 3016467a: Warn when IDA's Python version doesn't match the active virtualenv (#…
        • 6615a3a1: Log Python-relevant environment variables passed to idat (#280)
      • ida-pro-mcp
        • caa93abf: refactor: audit sweep β€” dead code, protocol bugs, ida:// removal
      • ida-pro-mcp
        • 2ca65ed8: Merge pull request #502 from Fuwaki/docs/linux-idalib-activation
        • 5a7cfe6a: docs: add Linux idalib activation example
      • IDAPluginList
        • af78319e: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
      • Luc-Nhan
        • 63b4ceaf: perf(ui): adaptive render interval for long streaming messages
        • cdaa4bc2: perf(ui): prewarm markdown renderer off main thread
      • twdll
        • cc390c4a: chore: update changelog for v0.8.0
        • 5aa2903d: feat: add function to change max settlement slots
        • 1abe5e4d: chore: update AGENTS and README
    2. πŸ”— exe.dev Simpler GitHub Integration URLs, Plus Read-Only Access rss

      exe.dev integrations let you keep secrets outside of your VM; a proxy injects the secrets. Sometimes this is as simple as adding an HTTP header, and sometimes the integration is bespoke.

      We recently gave our GitHub integration two new features:

      • One URL for any repo: Any repo that a VM has access to (including team integrations) can be accessed at https://github.int.exe.xyz/OWNER/REPO. We automatically pick the appropriate integration, saving you the trouble of remembering the integration name as well. We take compatibility seriously, so your old git remotes will work just fine.
      • Read-only integrations: You can mark a GitHub integration as read-only, both for git operations (fetch, not push) and GitHub API operations.
    3. πŸ”— HexRaysSA/plugin-repository commits sync repo: +1 plugin, +1 release rss
      sync repo: +1 plugin, +1 release
      
      ## New plugins
      - [ida-codemode](https://github.com/hexrayssa/ida-codemode) (0.2.0)
      
    4. πŸ”— r/LocalLLaMA you can now buy llm's at your local supermarket rss

      you can now buy llm's at your local supermarket | submitted by /u/ECrispy
      [link] [comments]
      ---|---

    5. πŸ”— Evan Schwartz Notes from the AI Coding Transition rss

      Like many other software engineers, my coding workflow has changed dramatically since the start of 2026. And like many others, I've felt some mix of awe, grief, frenetic productivity, atrophying skills, and understanding less while shipping more. In this moment where the field is undergoing this rapid shift, I've found it helpful to read others' takes on their processes, what they're doing to keep their brains engaged, and their genuinely mixed feelings.

      Before writing up my own thoughts, I went back through the relevant essays and blog posts from the last ~7 months to find the ones that resonated with me the most. Below are the posts that I especially liked and lines that stuck out from them, either because they gave me some idea about how I might want to use AI or just because they had a particularly incisive description of our field's situation. (Quotes are exact and the bold text is my added emphasis.)

      If you've read others that you thought were particularly on point, please send them my way!

      February 7, Nolan Lawson:

      I didn’t ask for the role of a programmer to be reduced to that of a glorified TSA agent, reviewing code to make sure the AI didn’t smuggle something dangerous into production.

      If you would like to grieve, I invite you to grieve with me. We are the last of our kind, and those who follow us won’t understand our sorrow. Our craft, as we have practiced it, will end up like some blacksmith’s tool in an archeological dig, a curio for future generations.

      February 9, Margaret Storey:

      Even if AI agents produce code that could be easy to understand, the humans involved may have simply lost the plot and may not understand what the program is supposed to do, how their intentions were implemented, or how to possibly change it.

      Peter Naur reminded us some decades ago that a program is more than its source code. Rather a program is a theory that lives in the minds of the developer(s) capturing what the program does, how developer intentions are implemented, and how the program can be changed over time.

      Cognitive debt tends not to announce itself through failing builds or subtle bugs after deployment, but rather shows up through a silent loss of shared theory. As generative and agentic AI accelerate development, protecting that shared theory of what the software does and how it can change may matter more for long-term software health than any single metric of speed or output.

      February 15, Simon Willison:

      the sense of psychological ennui leading into existential dread that many software developers are feeling

      Simon: All of the chess players and the Go players went through this a decade ago and they have come out stronger.

      February 15, Tom Wojcik:

      The Shen-Tamkin study identified six distinct AI interaction patterns among developers. Three led to poor learning: full delegation, progressive reliance, and outsourcing debugging to AI. Three preserved learning even with full AI access: asking for explanations, posing conceptual questions, and writing code independently while using AI for clarification. The differentiator wasn’t whether developers used AI, it was whether they stayed cognitively engaged.

      metrics don’t capture what’s happening underneath. The mental fatigue of reviewing code you didn’t write all day. The boredom of babysitting an agent instead of solving problems. The slow, invisible erosion of the hard skills that made you good at this job in the first place. You stop holding the architecture in your head because the agent handles it. You stop thinking through edge cases because the tests pass. You stop wanting to dig deep because it’s easier to prompt and approve. There’s no spark in you anymore.

      February 25, Ivan Turkovic:

      Here is something that gets lost in all the excitement about AI productivity: most software engineers became engineers because they love writing code.

      Not managing code. Not reviewing code. Not supervising systems that produce code. Writing it. The act of thinking through a problem, designing a solution, and expressing it precisely in a language that makes a machine do exactly what you intended. That is what drew most of us to this profession. It is a creative act, a form of craftsmanship, and for many engineers, the most satisfying part of their day.

      this is different because it is not asking engineers to learn a new way of doing what they do. It is asking them to stop doing the thing that made them engineers in the first place and become something else entirely.

      a mid-level backend engineer is now expected to understand product strategy, review AI-generated frontend code they did not write, think about deployment infrastructure, consider security implications of code they cannot fully trace, and maintain a big-picture architectural awareness that used to be someone else’s job.

      That is not empowerment. That is scope creep without a corresponding increase in compensation, authority, or time.

      From my experience building and scaling teams in fintech and high-traffic platforms, I can tell you that role expansion without clear boundaries always leads to the same outcome: people try to do everything, nothing gets done with the depth it requires, and burnout follows.

      Now the only limit is your cognitive endurance. And most people do not know their cognitive limits until they have already blown past them.

      Set explicit boundaries around role scope. If you are asking engineers to take on product thinking, planning, and risk assessment in addition to their technical work, name it. Define it. Compensate for it. Do not let it happen silently and then wonder why your team is burned out.

      talk about what you are experiencing. The isolation of feeling like you are the only one struggling with this transition is one of the most damaging aspects of the current moment. You are not the only one.

      February 27, Carson Gross:

      Computer programming is, fundamentally, about two things:

      • Problem-solving using computers
      • Learning to control complexity while solving these problems

      I have a hard time imagining a future where knowing how to solve problems with computers and how to control the complexity of those solutions is less valuable than it is today, so I think it will continue to be a viable career even with the advent of AI tools.

      I try not to use LLMs to generate full solutions that I am going to need to support.

      March 11, Xe Iaso:

      Whenever I have Claude do something for me, I feel nothing about the results. It feels like something happens around me, not through me.

      the default output has no soul. It's correct. It's competent. It's fine. And "fine" is the enemy of everything I care about as a writer and an engineer.

      March 15, Colin Brek:

      find it hard to believe that supervising a set of agents is going to lead to an optimal flow experience, because we are more passive, it doesn’t stretch our abilities in the same way, and it requires far less concentration. Will we find flow elsewhere? Solving problems and delivering value will always be rewarding, but I wonder if the optimal flow experience offered by programming has, for the most part, disappeared forever, and many of us will simply find less enjoyment at work.

      March 25, Mario Zechner:

      You realize you can no longer trust the codebase. Worse, you realize that the gazillions of unit, snapshot, and e2e tests you had your clankers write are equally untrustworthy. The only thing that's still a reliable measure of "does this work" is manually testing the product. Congrats, you fucked yourself (and your company).

      You let them run free, and they are merchants of complexity. They have seen many bad architectural decisions in their training data and throughout their RL training. You have told them to architect your application. Guess what the result is?

      An immense amount of complexity, an amalgam of terrible cargo cult "industry best practices", that you didn't rein in before it was too late.

      All of this compounds into an unrecoverable mess of complexity. The exact same mess you find in human-made enterprise codebases. Those arrive at that state because the pain is distributed over a massive amount of people. The individual suffering doesn't pass the threshold of "I need to fix this". The individual might not even have the means to fix things. And organizations have super high pain tolerance. But human-made enterprise codebases take years to get there. The organization slowly evolves along with the complexity in a demented kind of synergy and learns how to deal with it.

      With agents and a team of 2 humans, you can get to that complexity within weeks.

      And I would like to suggest that slowing the fuck down is the way to go. Give yourself time to think about what you're actually building and why. Give yourself an opportunity to say, fuck no, we don't need this. Set yourself limits on how much code you let the clanker generate per day, in line with your ability to actually review the code.

      March 27, Matheus Lima,

      When people say β€œtaste,” what they actually mean is experience. Pattern recognition built up over years of doing the work. But calling it β€œtaste” instead of β€œexperience” does something subtle and harmful: it makes a learnable skill sound like a gift.

      May 1, Sid Sundharam:

      Doing tasks manually naturally builds up the context required for the decisions involved later because you have time to process everything along the way and construct your mental model of the project's structure.

      This process requires more attention and context switching, along with way more decisions per hour. Making constant architectural, big-picture decisions while overseeing the work of a cracked junior dev is fundamentally harder than executing standard programming tasks yourself.

      Decision fatigue is, in my opinion, the next invisible friction point for developers.

      May 6, Simon Willison:

      The problem is that as the coding agents get more reliable, I’m not reviewing every line of code that they write anymore, even for my production level stuff.

      But I’m not reviewing that code. And now I’ve got that feeling of guilt: if I haven’t reviewed the code, is it really responsible for me to use this in production?

      There’s an element of the normalization of deviance hereβ€”every time a model turns out to have written the right code without me monitoring it closely there’s a risk that I’ll trust it at the wrong moment in the future and get burned.

      May 27, Vardan Torosyan:

      When you stop fighting with hard problems directly, the mental models fade. You stop building intuition. You start pattern-matching on outputs instead of reasoning from first principles. And the worst part –> you don’t notice it happening. The code still ships. The PR still merges. Everything looks fine until the incident at 2am where you genuinely cannot reason about what the system is doing because you never really had to learn it.

      There’s a good analogy here from aviation. Pilots trained heavily on autopilot gradually lose the ability to fly manually and this isn’t theoretical, it’s contributed to real crashes.

      I think judgment is built from a specific loop: you form a view, you commit to it, you see what happens, and you update. That cycle, repeated enough times, is what builds calibration. The problem with AI is that it short-circuits the first step. You skip forming your own view and go straight to evaluating someone else’s. Do that enough and the muscle atrophies and again, not dramatically, just quietly. You become a better reviewer and a worse thinker.

      • Write before you look. Before opening a tool, before asking the model, write down what you think. Not a design doc necessarily, just your current understanding of the problem, your instinct about the solution, where you think the tricky part is. Even a few sentences. This forces you to articulate your reasoning rather than pattern-match on someone else’s output. It’s also surprisingly useful as a diagnostic: if you can’t write anything, you probably don’t understand the problem well enough to evaluate any answer.
      • Form a view before reading the suggestion. When reviewing AI-generated code or design, read it critically with your own opinion already in hand. What would you have done? Where does this differ? Why might the model have gone this direction and is it right? This sounds small but it’s the difference between passive consumption and active evaluation. One builds judgment, the other just builds familiarity with AI output.

      May 27, Matheus Lima,

      I did the software engineering equivalent of forwarding an email with β€œthoughts?” and then going to lunch.

      The job is the part where your fucking brain has to be in the room.

      You paste the issue into the machine before reading it. You accept the explanation before forming your own. You create a PR before even understanding what the problem you’re fixing is (!). You request a PR review before reading the diff. You merge because the checks passed and the reviewer approved it and the whole thing smells like progress.

      here’s the new hard rule I’m following after this β€œincident”: if I still can’t explain the change, I can’t ship it. No exceptions.

      June 4, Sean Goedecke:

      many software engineers labor under a delusion that their job is to be excellent at their craft. Of course, wanting to be an excellent programmer is not a delusion; it is a completely legitimate value to hold, and a legitimate purpose to pursue. It’s just not what you’re paid to do at work. Your job, unfortunately, is producing shareholder value. This delusion has been punctured by the end of ZIRP, and again more recently by the rise of AI coding.

      June 9, Candost:

      Today, the ownership mindset defines the role.

      Although unintuitive, limiting the amount of work that runs in parallel is actually producing better outcomes and outputs. I believe the idea of WIP limits must be emphasised more strongly than before.

      moving from building features in parallel to building a single feature end-to-end faster.

      June 12, Niko Uusitalo:

      But for me, prolonged use becomes insidious. It's easy to become lazy and hand over thinking to the machine in looking for the next hit of cognitive offload when coding becomes even a smidge difficult. Why type your search and read half a short blog post to understand the problem when the same keystrokes give you the (possible) answer right there and then.

      June 17, Elio Struyf:

      When you ask a person to do something, you don’t expect them back in five minutes saying it’s done and ready for the next task. With an agent, that’s exactly what happens. Done. Next. Done. Next.

      There’s no breathing space. There’s always a next thing to think about. The work used to have a rhythm to it. You’d struggle, you’d get stuck, you’d finally figure it out, and there was this moment of joy when it clicked. Hours in the code, and then done. Figuring it out was the whole reward.

      That’s what AI can quietly take from me. Not the joy itself, but the sense that the thing was mine, which is where the joy was coming from all along. It hands me the finished thing, the finished thing works, and somewhere in there, I stop being the person who made it and become the person who approved it.

      AI didn’t take the joy out of coding, I gave it away.

      June 22, Vardan Torosyan:

      a quieter admission: the work isn’t teaching me much anymore, and it’s stopped being fun.

      That’s a description of becoming a manager. What AI did was give every engineer a small team of tireless, fast, occasionally-wrong direct reports. And with the team came the manager’s problem. The discomfort engineers are feeling right now isn’t an AI problem. It’s a delegation problem, and delegation is the oldest unsolved problem in our discipline.

      The good news: it’s not unsolved because nobody tried. Managers have been failing at it and slowly adapting for decades.

      What is in your control is small and it is everything: where you point your attention, what standard you hold, what you decide not to do, and whether you’re honest about which is which. The whole reason β€œthere is too much” feels like drowning is that we keep trying to exert control over the size of the ocean. You can’t. You can only decide where to swim.

      1. Separate ownership from authorship....You can own code you didn’t write. You cannot own code you refuse to understand. Those are different statements, and the gap between them is the whole job.
      2. Decide what you must understand deeply - then triage the rest without guilt.
      1. The discomfort is the job, not a bug in it. Acting on incomplete information, sitting with the unease of not-fully-knowing, and committing anyway - that is judgment. Managers don’t feel more certain than you; they’ve made peace with feeling uncertain and moving regardless....
      2. Keep something you understand deeply....
      3. Track what you’re learning, not just what you’re shipping....

      June 23, Armin Ronacher:

      I want to be able to explain what the system does without first having to ask a clanker to explain it to me.

      Present-day models tend to produce code that is too defensive, too complex, too local in its reasoning. They avoid strong invariants. They add fallbacks instead of making bad states impossible. They duplicate code, invent bad abstractions, and paper over unclear design with more machinery.

      If each iteration adds another small defense, the system slowly becomes less understandable while appearing more robust.

      we may no longer understand the whole system in the same way. We treat it, we monitor it, we stabilize it, but we do not necessarily comprehend it.

      Some domains will punish sloppiness and demand trust and responsibility, but a lot of software lives in a world where raw speed, quick experimentation, and vast coverage matter enormously.

      Better visualizations of changes or orchestration or agents will not restore our understanding. Either we need to find clever ways to jolt the human back into the loop and make the changes of the loops legible long term, or we need to find better ways to compose these ever more complex systems.

      June 28, Andrew Diamond:

      In the old workflow, the creative process happened mostly in your mind. In the new process, you supervise the creative process that unfolds inside the AI’s internal machinations.

      Now, let’s put the historical novelist in the position of the software developer. She gets a call from her publisher saying they’ve found a way for her to bring four books to market each year instead of one book every two years. They’ve recruited a bunch of top-notch high school and college students who can each crank out five pages a day of competent writing for dirt cheap. The publisher wants the historical novels to maintain the original writer’s level of excellence, or to at least be close, so they’re retaining her services as an editor.

      The novelist’s job is now to edit the work of the students, each of whom has been carefully prompted to write pages that should, with a little work, be stitched together into coherent chapters.

      Anyone who has ever graded the work of high school and college kids knows that this is generally not rewarding work. If you’ve ever had to grade a hundred papers in a week, you know what a grind that is.

      The novelist, like the software engineer, is no longer deeply engaged in her work. Editing is not creating. You do not give yourself over to your imagination. You do not immerse your mind and feelings in the process of invention. Instead, you’re rooting out problems, trying to clean up clumsy wording and redundant descriptions instead. The flow state is gone. You are now a cog in a larger process that doesn’t really value your creativity or your need to exercise it.

      Worse still–and I have felt this personally after months of reviewing AI-generated code–your skills drop off sharply. When a new issue arises–a feature to be implemented, or a tricky bug to fix–the idea of wasting several hours on it feels insulting. Why should I dig through all that code when Claude can locate the bug in five minutes and start drafting a fix?

      But I think that creative people choosing to hand over their most imaginative, flow-state thinking to an army of bots will be a mistake in the long run.

      July 1, Igor Kulman:

      The feature gets delivered, but I do not really feel like I built it.

      Maybe this is just another evolution of our profession and in a few years it will feel completely normal.

      Or maybe one day we will realize that somewhere along the way we stopped programming and nobody really noticed.

      July 6, Vini from GolemUI

      β€œI’m not sure I can do my daily job without Claude”

      The cost was never writing the code. The cost was owning it.

      A fix you cannot judge, in code nobody on your team understands, is not maintenance; it’s another spin of the roulette wheel. And when the bug comes back wearing a different hat, who do you escalate to?

      Your vibe-coded grid has no changelog, no support contract, and no team whose reputation depends on it. AI makes touching the code cheap; it does not make answering for it cheap.

      July 9, Rushabh Mehta:

      we are yet to see β€œmind blowing” software being churned out showing that it is still hard to build great software purely with agents. Coding using models can take you from 0 to 1 very fast. But what about 1 to 10, 10 to 100?

      July 11, Sean Goedecke,

      In sufficiently large codebases, everyone operates with an incorrect theory of the program.

      Like many software tools, LLMs are a double-edged sword: they make it harder to construct a detailed mental theory of the software, but they allow you to build a partial theory quickly and they can help you leverage that partial theory more effectively. This is a complex tradeoff that I’m still thinking about.

      July 13, antirez:

      our field is evolving in an incredible and painful (but also joyful) direction

      if you control the ideas of your software, looking at the code itself is suboptimal and often pointless.

      July 13, Armin Ronacher:

      large software projects have never been limited only by how quickly an individual can produce code. They are limited by how well people can coordinate their understanding of the system they are changing.

      The shared language of a software project is not English or Python but it is the common understanding of what its concepts mean, where the boundaries are, which invariants matter, who owns what, and why the system has the shape it does.

      Before agents, some of this shared understanding was maintained by friction....Some of it was the process by which your understanding became mine, and by which both of us discovered whether we still agreed about how the system worked.

      July 24, Sean Goedecke:

      The most important skill in prompting is expertise in the domain you’re prompting for.

      A good illustration of this is Terence Tao’s conversation with ChatGPT about the recently-discovered counterexample to the Jacobian Conjecture. This is not the same ChatGPT I talk to! I couldn’t get to where Tao gets, even with unlimited tokens to burn.

      There’s a lot to learn about good prompting from Tao’s conversation. Here are a few observations:

      • Tao’s messages are very short and to-the-point. He doesn’t respond point-by-point to the model, just to the gist
      • The model outputs are much more concise than when I try and talk to GPT-5.6 Sol about mathematics. By signalling expertise, Tao shunts the model into β€œtalking-to-mathematicians” mode, not β€œexplaining-to-amateurs” mode
      • Tao pushes back when the model’s responses look wrong, but he doesn’t directly contradict; instead, he says things like β€œthis looks more complex than I was hoping for”
      • Tao makes several leaps and suggestions himself. He almost never takes the model’s advice about where to go next

      July 24, Piotr Chmolowski:

      So why does software keep getting worse across the board?

      The bar for β€œuser experience” has kept rising, but everything has become increasingly fragile.

      July 25, Jacob O'Bryant:

      LLMs are useful for producing code that meets easily and objectively verifiable acceptance criteria which you provide explicitly

      I've found this simple instruction to vastly improve LLMs' output: "Never write READMEs, docstrings, or comments. I will write those myself later. And yes, I really mean this."

    6. πŸ”— Simon Willison One-shotting a Raccoon Heist game using Claude Fable 5 rss

      Back in 2022 I tweeted screenshots of a game concept generated by GPT-3 and some concept "art" created using DALL-E. Today, on the fourth anniversary of that tweet, I decided to see if Claude Fable 5 (running in Claude Code for web) could build the entire game from the content of that tweet. It did a pretty good job of it!

      You can play the game here. Here's the GitHub repo, and a short video demo:

      How I built this

      This is the August 5th, 2022 tweet:

      Simon Willison @simonw - New hobby: prototyping video games in 60 seconds using a combination of GPT-3 and DALL-E Here's "Raccoon Heist". Two images - the first is a screenshot of the GPT-3 playground, prompt below. On the right is a very clearly DALL-E generated image of an almost-isometric 3D computer game, with two raccoons sneaking down a street past a futuristic looking building, looking like they want to steal something.

      My GPT-3 prompt back then was:

      Write a detailed product description of a computer game where a team of raccoons go on heists.

      This was in the text completion days, where you asked GPT-3 to complete the rest of the text. It completed:

      In "Raccoon Heist", you and your team of thieving raccoons are tasked with pulling off a series of daring heists. From robbing banks to stealing priceless art, no job is too big or too small for your furry crew. You'll need to use your wits and your skills to avoid the police and make a clean getaway with the loot. With exciting gameplay and a charming cast of characters, "Raccoon Heist" is the perfect game for anyone looking for a light-hearted caper.

      My prompt to DALL-E was short:

      Screenshot from a video game where a team of raccoons go on a heist

      Today's experiment: can I dump those screenshots into Fable 5 with a prompt telling it to write a game, then leave it to its own devices and get a working game at the end?

      Setting Claude Code for web up to use GitHub Pages

      A frustrating thing about Claude Code for web is that it can be hard to test what it's working on while it's still working.

      I've been using GitHub Pages to work around that limitation, and found it to work really well.

      Here's my process:

      1. Create a new repository for the project at https://github.com/new - this can be public or private, the trick works equally well for both.
      2. Start a Claude Code for web session, in the Claude iPhone or Desktop apps or in the browser at https://claude.ai/code
      3. Tell Claude what to work on, and encourage it to commit an index.html page as quickly as possible. This will create a branch with a name like claude/3d-raccoon-heist-game-50n293
      4. Navigate to the Settings -> Pages area for the repository (github.com/simonw/raccoon-heist/settings/pages in my case), select "Deploy from a branch", pick the branch name, and hit Save.

      That's all it takes! Within about 30 seconds of each push the latest content will be visible at yourname.github.io/your-repo/.

      If you do this with a private repo, anyone who can guess the name of the repo will be able to view the published content. I don't worry much about this myself.

      The Fable 5 prompt

      Here's the prompt I gave Fable 5 (written in the notes app on my phone - this entire project was conducted on mobile). I accompanied it with the two images from the original tweet.

      Build this 3D game, for the browser.

      This repo is configured to serve static files so make sure there is an index.html that loads everything else.

      Make sure it is mobile-friendly (touch controls, works well on small screens).

      You have an OpenAI API key and access to their image generation model APIs, use that for textures to use with your 3D models. Docs here: https://developers.openai.com/api/docs/guides/image-generation - use gpt-image-2

      Work independently - do not ask me to make any further design decisions. Make sure the game is fun, a little surprising, has good raccoon heist vibes, and is visually pleasing.

      Commit and push as often as possible so I can preview your work - start with an index.html that presents a title screen, then build from there.

      Append to a notes.md file as you work, including your changes to that as part of every commit.

      I didn't make any technology choices. I assumed (correctly) that it would probably use Three.js based on previous experiments.

      Giving Claude access to an OpenAI key turns out to work really well for filling in gaps in its capabilities - in this case we needed some way to generate images to use as textures. Fable is very good at prompting image generators!

      I said "Work independently - do not ask me to make any further design decisions" because I wanted to see if it could produce a full, working game without any further input from me.

      I also said "Commit and push as often as possible so I can preview your work". When you use Claude Code in the Claude iPhone app you give it a GitHub repository and it works in a branch. Telling it to "push as often as possible" means commits start landing in that branch straight away.

      I like asking for notes.md as a bit of added flavor - here's that finished file, and the entry it made when it added the dog:

      New escalation: from night 3 the yards get a patrolling guard dog β€” a low-poly brown hound with a spiked red collar and a wagging tail. It wanders between random spots, and within 12 units it catches your scent and tracks you by smell (line of sight is irrelevant β€” it's all nose, shown by a πŸ‘ƒ over its head and barking). It gives up if you open a 17-unit gap. Getting caught messages are now source-specific: guard / headlights / hound. Verified wander β†’ track β†’ caught with an automated test.

      Reviewing the transcript

      You can access the Claude Code shared session, and I also used my claude-code-transcripts tool to export my own HTML version which you can find here.

      Fable started with an index page, vendored a copy of Three.js, then wrote its own gen_textures.py script (copy here).

      It generated the textures and spot-checked them to make sure they looked OK. The metal.jpg file it generated for the trash can looks like this, though I don't think it was applied exactly right in the game itself:

      A game texture atlas of dark blue-grey riveted metal panels, showing a circular hatch with a handle in the top left, ribbed corrugated panels across the middle, a plain circular plate bottom left, and flat banded strips at top and bottom. No text visible.

      Then it built out the first basic version of the game, then decided to "smoke-test in the pre-installed Chromium" using Playwright. This meant it could take screenshots of its own work and eyeball them. It did that for both desktop and mobile widths of the page, then noticed that the raccoon was invisible at mobile widths, so it fixed that:

      The raccoon, dumpster hideout, and both crew raccoons are now perfectly visible on mobile. Committing this critical fix.

      It decided to generate a title screen, which it did using this gen_title.py script. Here's the gpt-image-2 prompt it used for that:

      Video game key art, low-poly 3D render style, moody nighttime scene: a cute low-poly raccoon wearing a tiny black burglar mask sneaking on its hind legs carrying a glowing gold coin, next to a tipped-over metal trash can, suburban house with warm glowing windows in the background, deep blue night, full moon, fireflies, cinematic rim lighting, charming heist caper mood. No text, no words, no logos.

      And the resulting image (which Claude thought was "gorgeous") - though I note that when it's shown on desktop it gets cropped to just the top third without the raccoon!

      Polygon raccoon holding a gold coin next to an overturned trash can, a house and the moon in the background.

      Then my favorite change: it added the dog:

      export function makeDog() {
        const g = new THREE.Group();
        const BROWN = 0x8a6440, DARK = 0x5e4128;
        const body = new THREE.Mesh(new THREE.SphereGeometry(0.42, 10, 8), M(BROWN));
        body.scale.set(0.9, 0.8, 1.5);
        body.position.y = 0.55;
        body.castShadow = true;
        g.add(body);
        const head = new THREE.Mesh(new THREE.SphereGeometry(0.3, 10, 8), M(BROWN));
        head.position.set(0, 0.85, 0.62);
        g.add(head);
        const snout = new THREE.Mesh(new THREE.SphereGeometry(0.16, 8, 6), M(DARK));
        snout.scale.set(0.9, 0.7, 1.3);
        snout.position.set(0, 0.76, 0.9);
        g.add(snout);
        const nose = new THREE.Mesh(new THREE.SphereGeometry(0.06, 6, 6), M(BLACK));
        nose.position.set(0, 0.78, 1.08);
        g.add(nose);
        for (const s of [-1, 1]) {
          const ear = new THREE.Mesh(new THREE.SphereGeometry(0.12, 6, 6), M(DARK));
          ear.scale.set(0.7, 1.3, 0.5);
          ear.position.set(0.2 * s, 1.08, 0.55);
          g.add(ear);
          const eye = new THREE.Mesh(new THREE.SphereGeometry(0.05, 6, 6), M(0x1a1a1a, { emissive: 0x331111 }));
          eye.position.set(0.13 * s, 0.92, 0.86);
          g.add(eye);
        }
        const tail = new THREE.Mesh(new THREE.CylinderGeometry(0.05, 0.09, 0.5, 6), M(DARK));
        tail.position.set(0, 0.8, -0.62);
        tail.rotation.x = 0.8;
        g.add(tail);
        // spiked collar
        const collar = new THREE.Mesh(new THREE.TorusGeometry(0.22, 0.05, 6, 12), M(0xc0392b));
        collar.position.set(0, 0.78, 0.5);
        collar.rotation.x = Math.PI / 2.4;
        g.add(collar);
        const legGeo = new THREE.CylinderGeometry(0.07, 0.09, 0.34, 6);
        const legs = [];
        for (const [x, z] of [[-0.22, 0.35], [0.22, 0.35], [-0.22, -0.35], [0.22, -0.35]]) {
          const leg = new THREE.Mesh(legGeo, M(DARK));
          leg.position.set(x, 0.17, z);
          g.add(leg);
          legs.push(leg);
        }
        let phase = Math.random() * 10;
        return {
          group: g,
          animate(dt, speed) {
            phase += dt * (3 + speed * 10);
            const amp = Math.min(0.6, 0.1 + speed * 0.6);
            legs[0].rotation.x = Math.sin(phase) * amp;
            legs[3].rotation.x = Math.sin(phase) * amp;
            legs[1].rotation.x = -Math.sin(phase) * amp;
            legs[2].rotation.x = -Math.sin(phase) * amp;
            tail.rotation.z = Math.sin(phase * 1.5) * 0.4;
            body.position.y = 0.55 + Math.abs(Math.sin(phase)) * 0.04 * (0.3 + speed);
          },
        };
      }

      And did a round of testing on it using Playwright, including another screenshot.

        // walk near the dog
        await page.evaluate(() => { const d = window.__rh.dog; window.__rh.teleport(d.x + 6, d.z); });
        await page.waitForTimeout(2000);
        info = await page.evaluate(() => JSON.stringify({ dog: window.__rh.dog, state: window.__rh.state, player: window.__rh.debug().player }));
        console.log('after approach:', info);
        await page.waitForTimeout(3000);
        info = await page.evaluate(() => JSON.stringify({ dog: window.__rh.dog, state: window.__rh.state }));
        console.log('after chase:', info);
        await page.screenshot({ path: __dirname + '/shot-dog.png' });

      Screenshot of the game. Night 3, the raccoon is in the middle intersecting with the dog. A message reads Busted! The Guard shooed you off! The screen has a red tinge around the edges.

      It made a few more tweaks, then declared itself done:

      Raccoon Heist is built, tested, and pushed β€” 7 commits on claude/3d-raccoon-heist-game-50n293, all verified with automated Playwright playthroughs on desktop, portrait-phone, and landscape-phone viewports.

      The game: You're a masked raccoon sneaking out of your crew's dumpster hideout into a moonlit cul-de-sac. Grab coins, gems, rings, donuts, and fish (they visibly stack on your back and slow you down), then waddle home and bank them before dawn. Each night raises the goal and the heat: night 1 has one flashlight-sweeping guard, night 2 has two, night 3 adds a scent-tracking hound that ignores line-of-sight entirely. A police cruiser sweeps the street with headlights, homeowners randomly peek out of windows, a seagull periodically dive-bombs your unclaimed loot, pizza slices trigger a 6-second speed FRENZY, and a rare golden TV is worth 120 points if you can haul its weight home. Win ranks: TRASH PANDA ⭐ β†’ CAT BURGLAR ⭐⭐ β†’ MASTER OF DISGUISE ⭐⭐⭐, with your best run saved to localStorage.

      How it's built: Vendored Three.js (no CDN), procedural low-poly characters, and a procedural WebAudio soundtrack (sneaky walking-bass jazz plus all sound effects β€” zero audio files). All seven ground/wall textures and the title-screen hero art were generated with gpt-image-2 and committed as static assets, so the deployed game makes no API calls. Mobile gets a dynamic touch joystick (appears wherever you touch) plus a DASH button; desktop uses WASD/arrows and Space.

      Testing caught two real bugs worth mentioning: the canvas rendered at 2Γ— size on any real phone (a cssText assignment was wiping Three.js's inline sizing β€” desktop DPR-1 tests masked it completely), and the win screen's star-rating div inherited the title screen's full-screen .stars CSS and silently swallowed every tap on the "next night" button. Both are fixed and regression-tested, along with pickup, banking, chase/caught, dawn, night progression, and lose/retry flows.

      notes.md has the full build log. The game is live on the branch β€” just serve the repo root and open index.html.

      Is the game any good?

      It's an impressive starting point, but it's not a good game.

      You move your raccoon around a yard collecting items - donuts, fish, gold coins, jewels - while avoiding guards with flashlights and, in later levels, a dog. You have a limited carrying capacity, and once that's full you need to drop stuff off at the dumpster. If you pick up a pizza slice you get a temporary speed boost.

      There are no team mechanics at all - there are two other static raccoons next to the dumpster but they're purely decoration.

      It gets slightly more challenging as the levels progress - the dog introduced in level 3 is the most interesting new mechanic - but it's very, very easy to beat. It's also pretty boring - each night has a fixed duration and you can collect all of the items and then have nothing else to do while waiting for the dawn.

      I was impressed by the implementation. It's fully 3D, there are trash cans, the flashlight illumination cones are fun, and it has a reasonably coherent visual style. It works on mobile. The music ("a procedural WebAudio soundtrack (sneaky walking-bass jazz plus all sound effects β€” zero audio files)" according to Claude) is simple but feels about right.

      As a finished game project, it's mediocre. As a starting point from a single prompt I think it's very impressive.

      I've vibe coded up quite a few games now. They've all been deeply disappointing from a gameplay perspective - it turns out designing games that are fun remains a uniquely human trait, and one which requires significantly more skill and experience than either Claude or I can bring to bear.

      That said, I thoroughly recommend tinkering with game development projects as a way to explore the capabilities of agents. It's a fun, low-risk way to try out new things. If you stick at it long enough you might even produce something that's worth playing!

      Update 7th August 2026: I posed the same prompt to OpenAI Codex Desktop running GPT-5.6 Sol Ultra and got a significantly better result - GPT-5.6 Sol picked up on the importance of the squad of raccoons going on a heist, and built a game where you must rescue your two crewmates in a museum and then stack on top of them to steal the Golden Sardine.

      You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

    7. πŸ”— exe.dev Introducing Auto-Purchasing for Shelley Tokens rss

      We’re happy to announce that you can now enable auto-purchasing of Shelley Tokens. Previously, you had to manually purchase more credits every time you exhausted your token store. With auto-purchasing, you no longer have to take time out of your day to click through the UI.

      We also added safeguards to this feature to avoid runaway spend. There are three options you can configure:

      • A floor amount that triggers a purchase.
      • The number of tokens you wish to purchase each time.
      • A monthly spending cap.

      You can access this feature via the SSH lobby:

        billing auto-purchase status
        billing auto-purchase
        billing auto-purchase --floor=10 --amount=25 --cap=200 --yes
        billing auto-purchase disable
      

      Or from the newly redesigned Shelley page in the dashboard:

      For our friends on Team plans, we are still working on a solution for shared tokens and payment methods. In the meantime, we’ve also enabled auto- purchasing for teams, but remember, it will use your own payment method.

      Go build something!

    8. πŸ”— PrimeIntellect-ai/prime-agent v0.7.0 release

      Breaking Changes

      • Changed agent messages to always use steering delivery and removed delivery-mode options from the Python, CLI, RPC, and connection APIs. Code passing mode to agent_message.send, or a delivery mode over the CLI/RPC, must drop it.

      Changed

      • Changed self-updates to report the previous and new Prime Agent versions.

      Fixed

      • Fixed the subagent summary showing retained children as idle while they run follow-up work.
    9. πŸ”— exe.dev Botiquette rss

      There are lots of bots floating around exe, helping us organize and monitor and maintain our world. (Agents and bots and any LLM output are all synonyms for this post.) We’ve organically developed some etiquette around bots that work well for us.

      • Bots do not post to human spaces. Attention is precious, and bots are (currently?) incapable of gauging the cost of their posts.

      • There is no expectation that other humans will read human posts to bot spaces. Or even bot posts to bot spaces.

      • Humans write their own words.

      • If a human pastes bot output into a post, that output is clearly marked as such, typically in block quotes or a code block.

      • Bot posts always include where the bot is running and where its source code is.

      • Bots have names, because it makes it easier to talk about them, but they are computer programs. Their pronouns are always β€œit/its”.

    10. πŸ”— Locklin on science The tools of Dan Gelbart rss

      One of the cult youtube channels of machinists is the channel of Dan Gelbart. Youtube’s suggestion algorithm found him for me, and it made me nostalgic for all the talented machinists (often with similarly funny accents) I used to run into at Berkeley Labs. I paid more attention afterΒ  watching one about a home made […]

    11. πŸ”— PrimeIntellect-ai/prime-agent v0.6.1 release
      • Added reverse tab navigation to the /login configuration menu and moved the model scope shortcut to Alt+S.
      • Fixed daemon startup crashes hiding their exit status and daemon log until the startup timeout.
      • Documented the global idleEvictionMinutes daemon setting, including its default, valid values, and eviction/passivation behavior (#621).
      • Fixed top-level --help omitting acp from the supported --mode values (#620).
      • Fixed stop and rename becoming prompts when --daemon-socket precedes the command (#622).
      • Fixed subagent terminal notices arriving as anonymous follow-up prompts instead of attributed agent messages, so a parent can now tell which child reported completion, failure, or cancellation, and a busy parent is steered at the next turn boundary rather than waiting to go idle (#617).
      • Fixed ACP mode reporting a failed turn as a clean end_turn. A provider error, expired auth, or unusable model left session/prompt resolving with no updates at all, which reads to a client as a successful but empty turn; the turn now fails with the underlying error instead.
      • Fixed ACP cwd mismatch metadata treating symlink aliases such as macOS /var and /private/var as different directories (#623).
    12. πŸ”— HexRaysSA/plugin-repository commits Snapshot GitHub metadata for legacy api-plugins repos too rss
      Snapshot GitHub metadata for legacy api-plugins repos too
      
      The snapshot script only walked the HCLI index (plugin-repository.json),
      so the ~140 legacy api-only plugins never got GitHub repo metadata in
      combined.json: no fresh stars, no owner avatar, and no owner type β€” which
      the UI needs to label publishers as Organization vs Individual (e.g.
      atredispartners showed a letter-tile avatar and 'Individual' despite being
      a GitHub organization).
      
      Add --api api-plugins.json to also snapshot those repos; wired into the
      justfile and the deploy workflow. Per-repo 24h caching and 404 skipping
      apply unchanged.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      
    13. πŸ”— The Pragmatic Engineer The Pulse: Bending Spoons' Acquisition Strategy rss

      Bending Spoons has announced buying Airtable for $1.285B in cash this week - which is less than the $1.4B in total funding Airtable has raised in the past, and well below the $11B valuation it had during its last fundraise in December 2021.

      Selling to Bending Spoons is a company admitting defeat, and its inability or unwillingness to turn its business around, and wanting to get the highest possible cash for the business. Because this is what Bending Spoons is excellent at: they pay the highest cash value for a struggling business with a well-known brand, then take over operations, and operate the product with a fraction of the staff. They often let go most or all of the original team as they move over product operations to their in-house engineering team based in Italy and Europe.

      Evernote: what happens when a new team takes over a legacy application

      And having talked with Bending Spoons' engineering team on the podcast: they have done impressive engineering work after a takeover, in the past! For example, upon acquiring Evernote, the Bending Spoons engineering team discovered that the note-taking service was running as a Java 11 monolith (!!), with user data sharded across 750 manually provisioned virtual machines (!!!) on top of Google Cloud - in 2023! At a time when running cloud-native setups (managed databases, microservices) was common knowledge for years.

      Evernote's existing setup was weirdly inefficient and operationally very heavy, with manual interventions needed to keep the service running. Needless to say, performance was poor because some VMs were regularly overloaded. Also, oncall was brutal!

      The Bending Spoons engineering team rationalized the architecture:

      • Migrated user data sharded from the 750 manually provisioned VMs to a managed database
      • Split up the Java 11 monolith to microservices
      • Did all of the above without disrupting user experience
      • Improved performance of the backend by a wide margin
      • Reduced oncall load after finishing the migration to a cloud-native setup vs the previous manual provisioning setup
      • Did all the above in about 6 months.

      It's a fair question: would long would have the original Evernote engineering team have taken to do the same changes that made the service more reliable, more performant, and cheaper to operate? I would guess it would have taken them many years: in fact, if they did not make this change until 2023, who knows if they would have ever made these pretty rational changes? And so the "shock therapy" of Bending Spoons starting with a blank page, and a new team taking over operating the full product, with a laser focus on efficiency: well, this approach can be pretty efficient, as the Evernote example shows.

      You can listen to the full podcast episode I did with the Bending Spoons team:Twisting the rules of building software: Bending Spoons .

      Price increases and the existing team let go: the two most typical

      complaints

      Bending Spoons taking over an existing product has two major criticisms:

      1. Price increases. Evernote was the biggest example of price hikes: after Bending Spoons took over operating the product - and improving its performance - price hikes followed. Being Spoons kept investing in Evernote, adding new features (including AI ones), but customers paying $37/year for the Pro plan pre-2023 were charged $250/year by 2026. My take is that this is what happens when a product starts working a business maximizing profits: lots of customers will leave for competition, while others will pay more, valuing a more reliable service that gets more investment than before. Bending Spoons keeps improving Evernote since the acquisition, alongside the price increases. Clearly, the company is optimizing for maximizing revenue, not maximizing the number of customers, though.
      2. Layoffs. Bending Spoons let go most/all of the Evernote team in the US, briging operations in-house. This is part of the "usual" playbook of Bending Spoons: they buy products to operate them as efficiently as possible. The re-architecting example shows benefits of starting from scratch, and not needing to deal with internal resistance for changes that result in more efficient operations. Knowing that with a Bending Spoons acquisition, letting go of all the existing team is on the table is something that comes with selling to this company.

      With this, let me share my analysis of a past Bending Spoons acquisition: when they bought SteamYard from Hopin.


      Below is the now un-paywalled excerpt from** The Pulse #89: The end of Hopin** , from April 2024, sent to paid The Pragmatic Engineer subscribers. If you'd like to get analysis like this in your inbox, weekly, subscribe to The Pragmatic Engineer .

      The End of Hopin

      It's been a real rollercoaster ride for the virtual events provider:

      • 2019 : founded with a mission to provide a solution for hosting virtual events.
      • 2020-2021: raised a total of $1B in funding during a seed round in Feb 2020, Series A in June, Series B in November, and then a Series C in March-June 2021. The company was valued at $7.75B and acquired several startups, the biggest of which was video streaming platform, StreamYard, for $250M.
      • 2022 : layoffs in February, when Hopin was one of the early scaleups to do large cuts (12%), followed by more in July (29%), and November (17%)
      • 2023 : Hopin sold its core event tech business to RingCentral for $50M. We analyzed this at the time.
      • 2024: Last month, Hopin's UK entity entered liquidation. Insiders told me it was merely a restructure, with Hopin UK employees joining StreamYard. Basically, Hopin became the business it had purchased back in 2021.

      This week, Italian mobile app developer Bending Spoons acquired the remains of Hopin, which is basically the StreamYard product. All Hopin staff will soon be laid off.

      The Bending Spoons acquisitions strategy

      Bending Spoons has previously acquired apps such as the notes app Evernote in 2022, events app Meetup in 2024, and video-recording app FiLMiC in 2022. Their approach to these acquisitions was the same each time:

      1. Take over operating the product
      2. Fire most staff immediately
      3. Have some remaining staff hand over services, then fire them as well
      4. Operate the app with a much smaller team and raise prices.
      5. Profit!

      I talked with current Hopin employees for details on what will happen next, and if this model will be followed again. Unfortunately, it will.

      All existing Hopin staff will be let go, eventually. This affects around 80 staff working on StreamYard, and another 70 on other Hopin products, Streamable (video sharing) and Superwave (community platform.) I'm told severance packages are generous enough, at around 3-4 months' salary.

      As with other Bending Spoon acquisitions, a subset of the team was requested by Bending Spoons to help with the transition (and then be let go afterwards.) Understandably, morale is very low for this reason, and the certainty that everyone will lose their jobs.

      How much did StreamYard sell for?

      From talking with current employees, I gather that circa 95% of Hopin's revenue comes from StreamYard, and not more than 5% from Streamable and Superwave. So the only valuable asset that this acquisition priced in is StreamYard.

      In 2021, Hopin paid $250M for it. Back then, the video streaming service generated about $40M in annual revenue. This has risen to about $70M per year and keeps growing in an increasingly crowded market. StreamYard was at around break even and can be easily made profitable, I'm told.

      A good question is whether Bending Spoons paid $250M or more for this asset. In 2023, RingCentral paid $50M for the "core" virtual events offering which was making $20M in annual recurring revenue (ARR) at the time, I've confirmed with insiders. However, ARR was falling steeply, and was forecast to hit $10-15M within a year. So RingCentral paid a 2.5x multiple for an asset losing revenue.

      StreamYard brings in $70M per year, and this is increasing. I'd assume the purchase price would be at least the same 2.5x multiplier, if not more. So there's a fair chance this sale's value is close to $200M.

      Why did Hopin sell to a buyer which wants to lay off everyone?

      I have exclusively learned that StreamYard's founders actually offered to Hopin's board of directors to buy the company back, and operate independently, as before. This would've been a better outcome for employees, most of whom would surely have kept their jobs. Some of StreamYard's staff knew of this plan and naturally supported it. The Bending Spoons sale has taken everyone by surprise.

      But why would Hopin choose a buyer that is guaranteed to sack existing staff? Well, the board might have had no real choice, due to Hopin having raised too much money.

      Hopin raised $1B in funding, during which it almost certainly offered board seats to investors including a16z, General Catalyst, Coatue, Northzone, Salesforce Ventures, Tiger Global, Accel, and others. It's safe to assume investors control the board, and as Hopin will never live up to its $7.75B valuation, the board-level rationale has evidently been to maximize the amount of money clawed back.

      Of that $1B, here's what's left:

      • $50M from selling Hopin's core business
      • Whatever StreamYard sells for
      • Residual cash left over from the fundraising

      The board serving investors' interests had to shop around for the highest bidder, and minimize losses. I have to assume the decision on whether StreamYard's founders could buy back their own company came down to whether or not someone else was offering more money for it. Unfortunately for Hopin's staff (and fortunately for investors,) Bending Spoons probably offered more.

      The risk of raising too much venture capital

      Hopin is a reminder that raising too much venture capital can have unexpected, seemingly irrational, outcomes.**** Firing all staff from a company making $70M/year while being break-even or profitable sounds irrational from the company's perspective. But it is rational for investors and a buyer:

      • Hopin's investors realized the company is a "failed bet." They want to cash out their losses: get back whatever money they can - which is still in the hundreds of millions of dollars! - and use this capital to make new bets.
      • Hopin's buyer - Bending Spoons - wants to maximize their return. They pay $X for the company, and the goal is to generate $Y over the next several years in profit from it, where $Y > $X. So, the acquisition pays for itself. Bending Spoons has a working model that involves firing all existing staff, and operating the product more efficiently.

      The biggest losers in this story are:

      • Some investors. Collectively, investors poured $1B into Hopin. In October 2023, Hopin returned $581M of capital to investors (so 58% of all amount raised). It is unclear if the StreamYard purchase that could be another $200-300M, will be returned to them. It is safe to assume that investors will lose about 20-42% of the amount they invested, depending on how much proceedings of the StreamYard purchase they get paid. This is much better than in the case of one-click checkout startup Fast going bankrupt _ a year after raising $100M in funding, where investors most likely lost all their investment! In the case of Hopin: it's still a loss, but it's far from a 100% loss like with Fast._
      • Employees who expected a better outcome. Shares issued to staff by Hopin are now officially worthless. At the same time, Hopin did pay above-the-market base salaries, and offered generous severance during redundancies. Unfortunately, a reality of fast-growing startups is that they can grow fast, but also go down fast.

      Winners of this sale are:

      • The original founders of StreamYard who sold the company for $250M cash. Even though these founders are also departing, they netted a healthy return in 2021.
      • Bending Spoons, which has acquired a market-leading streaming product generating $70M per year and growing. StreamYard would normally not be available to buy, but the need of the Hopin board to "cash in" the company's remaining assets made this sale possible.

      I assume the biggest winner of the Hopin story stands to be Hopin's founder and former CEO, Johnny Boufarhat. He sold more than Β£100M ($127M) of his shares in 2021 as secondaries. He probably netted more money than Hopin - excluding StreamYard - generated in its lifetime! Selling a good chunk of his shares in 2021, at the peak of hype for virtual events is a good reminder that when everyone is buying, it can be a profitable strategy to sell!

      What happened to other fast-growing startups in Europe?

      In 2020, Hopin was known as the fastest-ever growing startup in Europe by valuation. This visualization by Sifted went viral, and was widely shared by Hopin staff on social media:

      altGraph showing Hopin 's growth to $7.75B in under 2 years. Source: Sifted .

      Hopin's current value is now zero, having sold its valuable assets. But how have other, formerly fastest-growing startups in Europe performed? I visualized this:

      altHow the group of fastest-growing startups in Europe in 2020 are doing today. Wolt and Revolut were the only two to remain on a "hockey stick-growth," valuation- wise.

      Excluding Hopin, the car sale website Cazoo did worst; it's currently close to bankruptcy, valued at about $60M. The companies that managed to grow above than their 2020 valuations are:

      • Food delivery service Wolt was acquired by DoorDash for €7B ($8.1B) in 2022
      • Ride-hailing app Bolt was last valued at $8.5B, and is supposedly preparing for an IPO in 2025
      • Neobank, Revolut, was valued at $33B, even though some investors cut their valuation of the company to around $20B in the summer of 2023
      • Spotify's current market cap is nearly $60B, and the company is trading close to its 2021 all-time-high

      This chart confirms what we already know: 2020-2022 was a time when startup and scaleup valuations hit all-time highs, fueled by zero interest rates, and widespread changes in consumer spending caused by the Covid-19 pandemic. We have covered what the end of rock bottom rates could mean for the tech industry.

    14. πŸ”— PrimeIntellect-ai/prime-agent v0.6.0 release

      Breaking Changes

      • Changed rlm(...) to return at task admission instead of waiting for the child to finish. It now yields a spawn handle (rlm_child_id, name, session_dir, model); RLMResult and its final answer, usage, and model-fallback warning are gone. A child reports back with agent_message.send(..., receiver_role="parent"), which arrives as an ordinary prompt and starts a parent turn. Code that read result.answer, or treated asyncio.gather(...) over rlm(...) as fan-in, must be updated.
      • Changed agent_message.send to role-addressed delivery: pass receiver_role ("parent", "sibling", "child") plus receiver_name for siblings and children. The old positional send(target, message) form no longer works, and the separate roster() call is now agent_message.list_agents().
      • Narrowed agent reach to the nuclear family: an agent may message or observe only its parent, siblings, and direct children. Top-level sessions are siblings of one another, so agent-to-agent between them still works; grandchildren and cousins must be reached by relaying through the intermediate child. Users are unaffected and still see every session.
      • Requesting an unavailable subagent model now fails the spawn instead of silently falling back to the parent's model with a warning.
      • Bumped the daemon schema revision to 13 for the parent-edge, depth, naming, and passivation wire changes; older clients and daemons are rejected cleanly at connect.

      Added

      • Added --mode acp: Prime Agent now runs as an Agent Client Protocol agent over NDJSON on stdio, driving an AgentConnection in-process. IPython surfaces as an ACP execute tool call carrying its cell source, and capabilities ACP has no native concept for (subagents, autonomous gate state, rich IPython output, compaction, goals, heartbeats, continual-harness refinement) travel in a namespaced ai.primeintellect.prime-agent _meta envelope that vanilla ACP clients ignore. Documented in docs/acp.md.
      • Added /rlm-max-depth to view or set the recursion cap for the current chat, with --global to change the default for new sessions.
      • Added recursive navigation to the agents view: drill into any session's children and back out again, with each chat showing its own depth.
      • Added a family roster via agent_message.list_agents(), listing parent, siblings, and children with name, id, depth, and status, including family members currently on disk.
      • Added sibling-unique agent names, enforced at spawn and rename against loaded and unloaded sessions alike. The same name may be reused at different depths.
      • Added an idleEvictionMinutes setting (default 90, off to disable) controlling idle eviction and passivation.

      Changed

      • Changed finished subagents to stay on disk until something touches them, so memory scales with the active frontier rather than every subagent ever spawned. Lists show them without loading them, and attach, message, or transcript read wakes them on demand.
      • Changed sessions to persist their parent edge and derived RLM depth, so tree position no longer has to be inferred from whatever happens to be in memory.
      • Changed the supervisor to stop worker processes whose whole session tree has been idle past the threshold, and to passivate individually idle children inside still-busy workers.
      • Replaced the child-agent inspector with a single subagent summary line under the prompt that opens the agents view scoped to that session's children.

      Fixed

      • Fixed stop and rename rejecting custom daemon socket options.
      • Fixed SIGINT in print mode leaving the session active until liveness reclaim.
      • Fixed daemon startup failing permanently when an interrupted supervisor owner directory contained only stray files.
      • Fixed agents-view fallback notices and scoped live sessions surviving transient refresh failures across chat returns.
      • Fixed stopping completed subagents deleting their retained sessions.
      • Fixed silent or cancelled RLM children leaving parents without a terminal status notice.
      • Added missing argument hints to /name, /model, /export, and /import in autocomplete.
    15. πŸ”— BarutSRB/OmniWM OmniWM v0.5.10 release

      What's New Since 0.5.9

      Window Management

      • New windows now land on the active workspace rather than whichever workspace happened to be focused last.
      • Transient popup windows are fully suppressed: no frame writes, focus changes, borders, or managed surfaces.
      • Floating window admission and focus are more reliable.
      • Fullscreen close replacement replay is fixed.
      • Pending window identities are preserved through rescans, preventing ghost windows.
      • Focused sheets (dialogs, preferences) are preserved across parent window maturation and full rescans.
      • Window lifecycle reconciliation is hardened with app-and-Space-scoped rescans.
      • Observed-minimum axis updates preserve the existing value when the target hasn't shrunk, reducing layout jitter.
      • Observed-minimum sizes are guarded on AX incarnation match during identity rekey.
      • Park frame application is deferred to the caller after identity rebind.
      • Stable AX size convergence is accepted without requiring an exact match.

      Niri Layout

      • The Niri mouse-move modifier key is now configurable in Settings β†’ Input.
      • Columns reveal on pointer focus when the cursor approaches a column edge.
      • A start-scroll directive is inserted when pending animation work exists but no active driver is running, preventing stuck scroll state.

      Workspace Bar

      • Label clipping in the workspace bar is fixed.

      Workspaces Between Monitors

      • Workspaces can now be moved between monitors via hotkey.
      • Dedicated hotkeys are available for all workspace monitor-move operations.

      Command Palette

      • Command palette mode cycling is now available, letting you toggle through palette modes.

      Quake Terminal

      • Ghostty glass transparency mode is now supported in the drop-down terminal.
      • The translucent quake terminal now blurs content behind it.

      Dwindle Layout

      • Inverted vertical window placement during Dwindle moves is fixed.

      Project

      • Nix installation options are now documented.
      • Owned-window interaction button state prevents owned-window blocking from canceling active mouse interactions.
      • The Hidden Bar assertion is properly released during shutdown.

      Release Integrity

      • OmniWM-v0.5.10.zip contains the Developer ID signed, notarized, and stapled OmniWM app.
      • OmniWM-v0.5.10.zip SHA-256: c003dc525e32be6ef560663818af13f8576450f30cc2164770e2345798a7a6da
      • GhosttyKit.xcframework-v0.5.10.zip SHA-256: 31a4daf47ce652d5c04ef15538c3fdffc315cd67da54baced628b2f46ec86bc7
    16. πŸ”— New Music Releases Chromeo - Mentirasmentiras rss

      Chromeo - a new release is available:

      • 2026-08-05: Mentirasmentiras (Single)

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

      Visit muspy for more information.