🏡


  1. October 18, 2026
    1. 🔗 pydantic/monty v1.2.0 - 2026-10-18 release

      What's Changed

      New Contributors

      Full Changelog : v1.1.0...v1.2.0

    2. 🔗 OmniNull/OmniWM Canary 20261018-0431 (b9b9374f) release

      Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

      See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

      • Commit: b9b9374f2959
      • Base tag: canary-20261017-0428-39001792292-1

      Changes since canary-20261017-0428-39001792292-1

      • b9b9374 Add scoped atomic Niri window gathering
      • eada9f2 Adapt the window switcher to current main
      • 86ce745 Merge PR #780: Add a workspace-aware window switcher with thumbnail previews
      • f1ab9be Choose Niri mouse drops from the drop position
      • cffe2ca Attribute the Dwindle edge insertion files to OmniNull
      • 01f9089 Merge PR #897: Add positional Dwindle drag insertion
      • ee9e67d Share the traced AX unminimize write
      • 092ef6c Merge PR #895: Restore minimized windows when selected from the workspace bar
      • 8393c16 Merge PR #893: Give a scratchpad window released onto another workspace its own column
      • d44baaa Split the workspace bar's scratchpad menu actions into helpers
      • 40dcf70 Merge PR #892: Re-tile a non-focused window from the workspace bar without taking focus
      • 3495354 Merge PR #891: Keep the focused column in place when a column before it leaves
      • 718c697 Merge PR #889: Keep the camera still when Overview moves a column that isn't the active one
      • 058c3fa Remove doc comments from the Overview notch layout
      • 9227907 Merge PR #882: Keep Overview search below the notch
      • 8ed4766 Measure scrolled Overview strip edges in content coordinates
      • 3b3b49d Merge PR #908: Auto-scroll a Niri strip when a dragged thumbnail reaches its edge
      • 3e07a28 Merge PR #907: Expose window ids on marks and column display mode on workspace queries
      • d0c6c68 Release background scratchpad windows from the workspace bar without taking focus
      • ac50cfe Keep the focused column in place when a column before it moves to another workspace
      • b209257 fix(overview): auto-scroll a vertical strip along its own axis
      • 1315035 test(ipc): assert the current protocol version in the v19 rejection test
      • 23fe1eb Merge remote-tracking branch 'upstream/main' into feat/ipc-mark-window-id-column-mode
      • b5617fa fix(overview): refresh the strip under a resting pointer on every auto-scroll tick
      • 0dce5d7 Merge remote-tracking branch 'upstream/main' into fix/overview-strip-horizontal-autoscroll
      • 774f977 feat(ipc): add window id to mark list and column mode to workspace queries
      • 5e12e48 Align newer test headers with OmniNull
      • 35b865f Merge PR #906: Attribute copyright to OmniNull
      • 4217f1c chore: attribute copyright to OmniNull
      • 0901866 fix(overview): scroll a niri strip when a dragged thumbnail reaches its edge
      • 9684bfe Prepare the sort timeout fixture with native table copies
      • f37a984 Make Luau interrupt callback access atomic
      • 784f425 Correct the current settings schema reference
      • f7021e7 Reject malformed resize bindings before migration
      • 5732989 Merge upstream main and preserve test consolidation
      • 383c2ac Merge PR #905: Park outgoing windows after the incoming ones are framed
      • 9dbcdcb Keep learned window sizes tied to AX identity
      • df030f1 Merge PR #903: Keep the inner gap edge margin in full screen
      • 1842fa8 Merge PR #901: Migrate renamed resize action ids
      • 969a11d fix(workspaces): hold outgoing parks while an incoming write retries
      • 2441663 fix(niri): keep border clearance in the full screen edge margin
      • bbb66de docs(settings): describe the version 5 upgrade in the settings reference
      • 7fdc609 Merge PR #904: Tile Adobe Creative Cloud windows
      • 34e84d3 Merge PR #902: Relocate floating windows moved across displays
      • 34e9990 Strengthen asynchronous test completion and native fixtures
      • 8ff3bc0 fix(workspaces): park outgoing windows after the incoming ones are framed
      • c2a19d3 fix(settings): migrate renamed resize action ids
      • 5f6c004 fix(workspaces): relocate floating windows moved across displays
      • d821259 fix(niri): keep inner gap edge margin in full screen
      • 2673b31 fix(admission): tile adobe creative cloud windows
      • 1813b4c Consolidate tests around current behavior
      • 60b4be8 Strengthen test oracles and isolate controller fixtures
      • 31e0bc1 Merge upstream resize previews into main
      • 60c500e Keep pointer tap shutdown within its run-loop lock
      • c1615d7 Remove redundant Dwindle edge-insertion checks
      • e75fa30 Reconcile the fin-press latch before draining a new press
      • 186edab Keep walls during crossing cooldowns and reset the fin latch per press
      • acd9724 Add positional Dwindle drag insertion
      • 55b3391 Restore minimized windows when selected from the workspace bar
      • 86371c8 Apply a released window's saved per-window sizing on its new workspace
      • 3efe15c Give a scratchpad window released onto another workspace its own column
      • 5a42469 Re-tile a non-focused window from the workspace bar without taking focus
      • 4a897ff Keep the focused column in place when a column before it is floated or hidden
      • a476c06 Keep the camera still when Overview moves a column that isn't the active one
      • 6e0f7fa Test monitor notch height forwarding in Overview projection
      • 6438d82 Document Overview safe-area layout functions
      • 7d6e198 Preserve the original Overview search bar height
      • 2061152 Fix Overview search placement on notched displays
      • d6be126 fix: prepare initial switcher previews before presenting the overlay
      • 2851607 fix: keep switcher previews stable throughout each opening
      • 9b91cfb fix: clip switcher preview surfaces reliably after window resize
      • 072c599 fix: reserve captured preview surfaces for their retained lifetime
      • d3d1312 Merge main into feature/window-switcher and adapt capture integration
      • ce390fa fix: skip single-window switcher and crop preview padding
      • efab243 feat: select last-used windows and bypass switcher for two windows
      • 8a0d05d fix: retain switcher previews and stabilize window interactions
      • ea410f2 docs: retain review screenshot in history only
      • b510c21 feat: match workspace layout order and refine switcher captions
      • a536b56 feat: add switcher grid, compact tiles and window closing
      • c729d92 feat: show workspace badges in the all-workspaces switcher
      • 4d4907e docs: place window switcher guide with website features
      • 68410e6 docs: add window switcher screenshots and demo
      • 11c4537 fix: mask window switcher material and shadow
      • a78c451 feat: configure window switcher shortcuts and footer
      • 2fb30f6 feat: add workspace-aware Command-Tab window switcher
  2. October 17, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-17 rss

      IDA Plugin Updates on 2026-10-17

      New Releases:

      Activity:

    2. 🔗 HexRaysSA/plugin-repository commits sync repo: ~1 changed rss
      sync repo: ~1 changed
      
      ## Changes
      - [BinaryLens](https://github.com/lumice/binarylens):
        - 1.2.0: archive contents changed
      
    3. 🔗 r/LocalLLaMA Opencode breached, rotate keys to be safe. rss

      Details are developing


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

    4. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 release rss
      sync repo: +1 release
      
      ## New releases
      - [capa](https://github.com/mandiant/capa): 10.0.0
      
    5. 🔗 r/LocalLLaMA Linux creator says anti-AI rules are "idiotic." (Absolute god-tier take.) rss

      Linux creator says anti-AI rules are "idiotic." (Absolute god-tier take.) | submitted by /u/HolidayBit143
      [link] [comments]
      ---|---

    6. 🔗 r/LocalLLaMA DeepSeek V4.1 Flash (1017) Now Leads Open-Weight Models rss
    7. 🔗 r/LocalLLaMA Nvidia has officially confirmed that the 5090 is not discontinued and will continue shipping. rss

      Nvidia has officially confirmed that the 5090 is not discontinued and will continue shipping. | During a post-event interview at the RTX Spark Launch Party: Taipei on October 16, 2026, Nvidia's Senior Vice President of Personal Computing, Jeff Fisher , explicitly debunked the recent discontinuation rumors. submitted by /u/chemist_slime
      [link] [comments]
      ---|---

    8. 🔗 r/LocalLLaMA deepseek-ai/DeepSeek-V4.1-Flash-1017 · Hugging Face rss

      deepseek-ai/DeepSeek-V4.1-Flash-1017 · Hugging Face | submitted by /u/Bestlife73
      [link] [comments]
      ---|---

    9. 🔗 backnotprop/plannotator v0.28.23 release

      Follow @plannotator on X for updates

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

      What's New in v0.28.23

      The main fix: Claude Code sessions that run background subagents get their Inbox replies again. Also in this release: dictated text no longer goes missing on Chrome 155-156 for macOS, 👍 Looks good now reaches the agent, Inbox notifications that never fail silently, and a run of Inbox improvements. 16 PRs, all by @backnotprop.

      Inbox replies reach Claude Code sessions with background subagents

      When a Claude Code session started a subagent (a background one included), the Plannotator mod counted the subagent's turn as the session's own and never saw it end. The session then read as busy for good, so Inbox replies to it waited forever and "Ask this session" said the session was busy. The mod now ignores subagent turns. Verified live on Claude Code 2.1.302.

      The fix is in the Claude Code plugin, which updates separately from the binary. The install script updates a user-scope plugin for you; otherwise run claude plugin update plannotator@plannotator --scope user, then restart Claude Code.

      Dictated text lands where you are typing

      On Chrome 155 and 156 for macOS, text from dictation apps such as Hex (and text expanders) often failed to appear: the first dictation after a page load worked, later ones inserted nothing. This is a Chrome bug (crbug 568453825), fixed upstream for Chrome 157. Until then, Plannotator inserts plain-text pastes itself in the Inbox, plan review, annotate and code review. The workaround runs only on Chrome 155-156 on macOS and turns itself off at 157; Safari, Firefox and other browsers keep their own paste.

      In the Inbox, a dictated paste also lands in the field you were writing in after a click moved focus away from it (a choice on a question card, the message text, a chip in the reply box, or a word you double-clicked).

      👍 Looks good reaches the agent

      👍 Looks good used to stay in the Inbox until the agent next read the thread. Now, once the 10-second Undo window passes, it goes to the agent that wrote the message, the same way a reply does: "The person marked your message 👍 Looks good. No reply needed unless you have a question." If you reply or the agent writes again inside the window, nothing is sent. The line under the message says whether it is queued, saved or delivered.

      Inbox notifications never fail silently

      Chrome grants notification permission per address, so an Inbox opened at 127.0.0.1 and later at localhost (or on a new port) quietly had none. The Inbox now always answers at http://localhost:<port>/, and when the address you are on has no permission it says so on every load with an Allow button. Settings → General shows whether notifications reach you right now, and through which tab, and has Send a test notification. A tab whose connection dropped also catches up on the notices it missed.

      Thread names for threads you start

      A thread you start from New message gets a short subject (the first sentence, with greetings and filler dropped) and a thread-name chip like the agents' threads. Type a name in the chip, or leave it and Plannotator suggests one from your message. Otherwise the agent that answers names it in its first reply; a name you typed is never replaced.

      First run: one next step

      The empty Inbox screen now shows one next step at a time, starting with Plannotator's own connections (Claude Code, Pi, OpenCode), which bring replies back into the session by themselves. It turns on a Pi or OpenCode Inbox tool with one click, gives the exact install command for a missing plugin, and moves on by itself once you install it. It also handles disabled plugins, a Claude Code mod that is turned off, OpenCode 1 and PLANNOTATOR_INBOX_TOOL=0 correctly. The Inbox tool's definition on Pi and OpenCode is about 40% smaller (7 KB instead of 11.7 KB per request).

      Paste images into replies and new messages

      Paste an image or a file into New message or the reply box and it attaches, with the same tiles and progress as the paperclip. Screenshots get a dated name. The agent gets the files with the reply.

      Message images load from anywhere

      An image an agent shows in a message now loads from any folder you can read, not only from the project, as attachments already did. Hidden folders outside the project and .env files are still refused. send_message now tells the agent which images will not show and why.

      Search results name their thread

      Every Inbox search result now shows the thread it belongs to, as the same chip the list uses: the thread's name, or its subject when it has none.

      Additional Changes

      • The "↓ N new" pill goes away once you have read the message , and does not come back when you scroll up (#1978)
      • A thread you start shows in Sent at once , even while another thread is open (#1978)
      • Thread header order: Mark read comes first and Archive sits beside the close (#1957)
      • A cleaner What's new page with a sticky header, an "Update to X.Y.Z" button, and the releases you skipped still listed after you update (#1952)
      • Copy prompt sits above What's new in the sidebar (#1951)

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

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

      Pi:

      pi update --extensions
      

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

      What's Changed

      • Inbox: Copy prompt above What's new in the sidebar by @backnotprop in #1951
      • Inbox: a cleaner What's new header (approved Toolbar design) by @backnotprop in #1952
      • Inbox: paste images into New message and the reply box by @backnotprop in #1953
      • Inbox: message images load from anywhere; send_message says which won't show by @backnotprop in #1954
      • Inbox: dictated (pasted) text no longer goes missing in the reply box by @backnotprop in #1955
      • Inbox: short names, a project badge, and agents name threads you start by @backnotprop in #1956
      • Inbox: Archive next to close, Mark read first by @backnotprop in #1957
      • Inbox paste: a selected word no longer stops the dictation by @backnotprop in #1959
      • Inbox first run: one next step, Plannotator's own connections first; the Inbox tool's cost measured and cut by 40% by @backnotprop in #1962
      • Inbox search: every result shows its thread as the list's chip by @backnotprop in #1965
      • Inbox notifications never fail silently: one origin, a re-allow that stays, live status, test, reach by @backnotprop in #1967
      • Text fields: insert plain-text pastes ourselves (Chrome 155-156 macOS dictation workaround) by @backnotprop in #1970
      • Inbox first run: say the right thing on every Claude Code / Pi / OpenCode computer by @backnotprop in #1974
      • Inbox: the new pill stays gone once read; a thread you start shows in Sent with a thread open by @backnotprop in #1978
      • Claude Code mod: a subagent's turn no longer leaves the session busy for good by @backnotprop in #1979
      • Inbox: 👍 Looks good is sent through to the agent by @backnotprop in #1980

      Contributors

      Every PR in this release is by @backnotprop. No linked issues this time; the fixes came from day-to-day use of the Inbox.

      Full Changelog : v0.28.22...v0.28.23

    10. 🔗 OmniNull/OmniWM Canary 20261017-0428 (a0e12012) release

      Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

      See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

      • Commit: a0e12012cf50
      • Base tag: canary-20261016-0427-38849660847-1

      Changes since canary-20261016-0427-38849660847-1

      • a0e1201 Merge PR #899: Opt in glass and snapshot previews for mouse and keyboard resize
      • 44af3e4 refactor(resize): intercept every layout plan and settle on layout
      • 0f6d77d feat(resize): preview keyboard resizes and moved neighbours
      • e7ac43d docs(resize): list resizePreviewStyle in settings search and the reference
      • feb363d Merge remote-tracking branch 'origin/feat/smooth-resize-overlays' into feat/smooth-resize-overlays
      • 2c03d01 fix(resize): make the preview opt in and keep shared previews alive
      • c6a19be Merge branch 'main' into feat/smooth-resize-overlays
      • b733da0 feat(resize): add smooth liquid glass and live snapshot resize overlays
      • c66c019 Merge upstream mouse session tap thread
      • e2edcdb Move Mouse Warp move crossings onto the pointer thread
      • 0eb5f1d Hold the pointer at parked-edge fins and push past to cross
      • 4bb7e7b Merge PR #888: Move mouse session event tap to dedicated thread
      • 81bd1be Add configurable edge timing and hover repeat
      • 637f313 fix(input): synchronize touchCountProvider and handle move candidates
      • 9ab9876 fix(input): replace mirrored state with fast-path filter and authoritative fallback
      • c9811f7 perf(input): move mouse session event tap to dedicated thread
      • 7746343 Merge upstream test reliability fixes
      • 3efaa97 Merge pull request #887 from dappermint/fix/shell-provider-flood-test-overfulfill
      • 683a637 Merge pull request #886 from dappermint/fix/test-flakes
      • f55fbb6 test(shell): stop the flood fixture's diagnostic lines over-fulfilling
      • 48fb35d test(palette): give the animated reveal 5 s on loaded runners
      • f24450e test(shell): report the scroll width when deltas go missing
      • d9133c7 test(shell): render widget fixtures under a correctness budget
      • 67040f6 test(shell): stop the provider fixture reporting its close twice
      • 25b6113 Merge remote main with parked-edge navigation
      • c711c43 Merge PR #884: Skip the redundant app activation when fronting a window
      • 4ba875c Add directional navigation to parked window edges
      • 459f455 perf(focus): skip the redundant app activation when fronting a window
    11. 🔗 Filip Filmar Bazelizing a Custom RISC CPU with 4x4 Systolic Matrix Accelerator rss

      Open-source digital signal processing and machine learning accelerators are frequently published as student or research projects. While the RTL architecture is often innovative, the surrounding build and test scaffolding frequently suffers from workstation-specific assumptions, absolute file paths, and missing simulation fixtures.

      In this case study, we document the Bazelization of Custom-RISC-CPU-with-Systolic-Matrix-Accelerator, authored by Mathew George. By applying Bazel and rules_openxc7, we transformed this 2D systolic array processor into a portable, reproducible hardware project that synthesizes and outputs a valid FPGA bitstream in under 25 seconds from a clean slate.

    12. 🔗 Filip Filmar Bazelizing mmRISC-2: A Full RISC-V SoC with rules_openxc7 rss

      Converting existing open-source FPGA projects to Bazel and rules_openxc7 transforms fragile, vendor-locked hardware build scripts into reproducible, sandboxed workflows. This case study examines our complete Bazelization of mmRISC-2, a comprehensive, silicon-proven RISC-V system-on-chip authored by Munetomo Maruyama.

      By pairing Bazel’s fine-grained dependency tracking with open-source EDA tools (Yosys, Slang, nextpnr-xilinx, Project X-Ray, and openFPGALoader), developers can clone the repository and produce a fully placed, routed, and verified bitstream for the Digilent Arty A7-100T board with a single terminal command.

  3. October 16, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-16 rss

      IDA Plugin Updates on 2026-10-16

      New Releases:

      Activity:

      • augur
        • 302c9939: Merge pull request #14 from 0xdea/dependabot/github_actions/actions-d

        • 10bcff96: ci: bump taiki-e/install-action
      • capa
        • 7a235c46: Sync capa rules submodule
        • 85813ebc: Merge pull request #3197 from mandiant/release-v10.0.0
      • haruspex
        • 95aad893: Merge pull request #17 from 0xdea/dependabot/github_actions/actions-d

        • 769f3a26: ci: bump taiki-e/install-action
      • ida-cli
        • 27a54cca: test(nexus): keep frozen baseline decompile requests plain
        • 83b0ebff: Merge master while preserving Nexus lifecycle and listing contracts
        • 761a0fde: fix(cli): display string contents and segment address ranges
        • 8c376b7f: test: separate MCP fixture startup from response bounds
        • 03677e29: fix(nexus): preserve early disconnect ordering and shared lease cleanup
        • acb61ba5: test(nexus): model public recovery probes in diagnostic open tests
        • 6739b35b: fix(nexus): veto rollback on external IDA locks and replaced snapshots
        • 5e430261: fix(nexus): retry initial Root failures and roll back recovery artifacts
        • efbee3c0: test(nexus): capture Root Node visibility failures and isolate reopen

        • 91022c33: fix(nexus): isolate diagnostics and opt in to IDB hashes
        • 7dd8c2da: fix(nexus): refuse writeback after owner Root Node loss
        • 54e4c60c: test(nexus): model public state-directory resolution in cache probes
        • 8bc34664: fix(nexus): close cache review residuals and isolate fixture startup 

        • 582568b7: test(nexus): retain zero-metadata contract with owner diagnostics
        • b72d987f: test(nexus): load metadata diagnostics in standalone tools fixture
        • c9b1374e: diagnose(nexus): retain owner evidence for missing input metadata
        • 41d34736: fix(nexus): address N7a cache coordination review
        • ff486d34: test(nexus): discover generation databases in N6 persistence fixtures
        • 35fc2311: feat(nexus): coordinate generation cache GC and cancellable input pre

        • 08055fe1: docs: accept N6 after F1 review
      • idamcp
        • 5fb2f304: Optionally show Hex-Rays warnings in decompile_function
      • oh-my-pi-schema
        • f9244c8b: chore(sync): merge upstream oh-my-pi v18.11.1
      • omp-zh-i18n
        • f81111c4: feat(i18n): localize for official v18.11.0 (v18.11.0-zh)
      • rhabdomancer
        • 2aa7dd92: Merge pull request #16 from 0xdea/dependabot/github_actions/actions-d

        • b7e4d022: ci: bump taiki-e/install-action
      • ToCode
        • 216f1f9d: Merge pull request #21 from buzzer-re/dev
        • b160c8b6: Release 0.3.2
        • 70cf5454: Merge pull request #20 from buzzer-re/dev
        • 435657fe: Add ToCode live for .NET
        • 6f0a5815: Add ToCode live: MCP server, incremental sync, and the agent skill
    2. 🔗 r/LocalLLaMA 10 Things you maybe didn't know you can do with Qwen 3.6 27B right now. (For Noobs) rss

      10 Things you maybe didn't know you can do with Qwen 3.6 27B right now. (For Noobs) |

      I know everyone's excited about 3.8, but honestly I'm still refining 3.6. And I hate the way 3.8 talks, so...

      I keep seeing all these posts about what's the use of open source, so I figured I'd submit my own answer with this post. Qwen 3.5 27B was my first agent, starting my journey around May 31st, and I've learned a lot in these 4+ months, so I wanted to share with other people just starting their journey because there are clearly a LOT of new users out there, and people want help but sometimes are afraid to ask or not sure the right questions. So, here are ten things that you should know you can do to empower you! (Oh, and I'd recommend using llama.cpp. That's what I've used to do all these tricks) 1. Create neat little apps for yourself. Qwen's really good at making apps for anything. I'm writing this post in a app I made as a replacement for Notepad, that has full word processing, side-panel, light/dark mode, etc. (image below). The first thing you should be thinking about when you run into any sort of issue is, "can I make an app that will make this simpler?" The answer is usually yes. https://preview.redd.it/xi91phrjwvvh1.png?width=993&format=png&auto=webp&s=3893dd6f6def7cfa6a2210b16e0d8f092224ceff 2. Create your own Chat UI frontend. If you don't feel that creative, just copy an existing one. LLMs are great copy cats. I liked claude, so I just copied it as my own frontend, customizing it for my own needs: https://preview.redd.it/xwu9o8wr0wvh1.png?width=1160&format=png&auto=webp&s=d6a2f9908ac9c6547a3581d20a24f084e624e1ce 3. Create ReAct Loops. This is what enables your model to use a tool, read the result, then use it again, multiple times. Qwen can make these in its sleep, and many different ways. It can create a loop anywhere you want it, and you'll need it for your own custom chat ui frontend if you make one. 4. Create MCP tools. This is my favorite. It can make almost any type of mcp tool you need. You don't have to use third party ones, which can be unsafe. Just tell it you want an mcp tool to do x, it'll make it. It might or might not require its own mcp server, but if it does, Qwen can make that too. 5. Spawn sub-agents. Another super-easy thing Qwen can do. Just tell it to create a sub-agent spawner, which is just a python file. Then, you can tell it to run that when it needs to create a sub-agent, or tell it to create an mcp tool to do it on-the-fly when it wants to. Simple. Oh, and a quick hack-tip: mcp tools use up a LOT of context, so a cheat is to spawn a sub-agent with its own context limit and have your main agent pass off work to the sub. Basically, you can double/triple/etc your context limit. And yes, you can retain it between turns, but you'll need to create a pipeline runner (see below). 6. Create a pipeline runner. Ever heard of n8n? Basically, it's a pipeline runner. It has a lot of features, but it has a few limitations and restrictions, and there were a few things I wished it could do. I learned I could just build something similar with Qwen super easy. There's some design work involved if you want a UI frontend to build, but it's completely doable. I made my own ui, but after a while, I got tired of tweaking it, so I just copied n8n's frontend and just customized it myself, lol. Another useful tip: You can run multiple sequential agents in a pipeline runner, but if you want them each to have their own context, you'll need to ensure cache-idle-slots is enabled in llama.cpp. This'll swap the kv caches each turn, ejecting the last one to cpu ram. There's a bit more to it, but Qwen's got you, so just ask. After a bunch of custom UI attempts, I just decided to clone n8n's look and just make my own version. 7. Create a model launcher (with options to select different models/jinja templates in llama.cpp). This is my bread and butter. Its a launcher that lets me choose any model in my directory and set its parameters. When I'm happy, I create an alias for it. On next launch, I can just choose the alias and it launches the model with the params for that alias only. So I can have 10 different types of param configurations for the same model if I want; I just need to give them their own alias. Hack tip: I'd recommend adding your jinja templates to the launcher to, and you can choose different custom templates for different model types. I made custom jinja templates for different model types https://preview.redd.it/8nzl8sjv4wvh1.png?width=1101&format=png&auto=webp&s=31c118f09cfefe5d2b8782317a3cbe99f55838fc 8. Install, test, fork, and/or rebuild open-source apps on the internet. The reason I moved to llama.cpp was lm studio pp was too slow, but I didn't want the stress of figuring it all out, so I just asked my agent to download and install llama.cpp for me. I've been using it ever since. It can also modify builds, fork repositories on github, and a lot more. For example, I was busy working on a project, but heard about some new TTS apps, so I told my agent to download and install Moss and OmniVoice, make some audio clips to make sure they run, and let me know when it's done. Of course everything worked fine. Great for multi-tasking. 9. Give your agent temporal awareness of the world around it. Ever used cloud models that argue with you about the date? Or wished your model knew when you were nearing your max context, so it could automatically start writing a session summary? What you can do is inject "metadata" into your agent either on session start and every turn (preferably both), giving it information like date, time, context length, max context, hardware and software stack, basically anything you want. With that, you can do all sorts of other tricks. For example (this should probably be its own "thing you can do with qwen", but whatevs), I made it so that my agent can swap its own model when it hits context limits: I can launch a session with a backup model. Because my agent can always see context, when it gets too high, it can swap to a backup model with a larger context on its own - all without restarting the server. 10. Give your agent memory that loads the moment you launch it. My agent ends each session writing a session summary of what we discussed. You can have your startup routine or launcher concatenate different sources into its context on launch. For example, my code always loads the most recent dated session summaries, and the previous day's, on launch, so it has a snapshot of recent events. You can expand this to be any additional documents you want, so just use your imagination. For example, my agent also loads reminders, and personal reflections it made at the end of the prior session (though I don't recommend the reflections anymore, because I've come to realize it contaminates context, but I'll share that at another time) Bonus: (I remembered this right as I was finishing, so I figured I'd toss it in because it's honestly one of the most important) - BUILD YOUR OWN HARNESS. Everyone's talking about pi, hermes, etc. I decided to just build my own using Qwen. It's a lot more work, but it has a much better payoff because you learn how these systems work and you can come up with your own really unique solutions using that knowledge. For example, the moment I learned about proxies, I figured out how to do all sorts of cool things with context compaction, history modifications, sanitization, jinja template hacks, hooks, etc. Anyway, I hope this helps inspire you new guys. I would recommend learning things from the ground up, you'll level-up faster. And get your Qwen access to online tools fast so it can do research and help you out. There's a bunch of other tricks I figured out, so maybe I'll save those for another post later on, but I think if you can get these up and running, you'll be on your way. Take care! Grunge https://preview.redd.it/5avp0volewvh1.png?width=1129&format=png&auto=webp&s=0fb9f82fde42d69ee4e61c9dbb6ffcdda856275b

      P.S. - I'm old-school forum/deviantart gang, so I keep ctrl+biu/shift+l on a swivel and have written bold-flavored posts like this for 20+ years. 100% human written. Receipts at bottom of post if you're interested. Only mentioning it because organization usually brings out the "this is AI-written slop" trolls.

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

    3. 🔗 exe.dev Shake to Tell Shelley rss

      When I want to improve one of my iOS apps, I shake my phone, type in a prompt, and off it goes to Shelley, together with a screenshot!

      Iteration (culture) is eating planning (strategy) for lunch.

      I'm finding that grinding down the friction, even as minimal as getting myself to the agent input, enables iteration.

      Ideally, you could just customize the app from within itself, like Pliable does, but that would be against the app store rules.

    4. 🔗 3Blue1Brown (YouTube) There's never been a better time to go into math rss

      Sharing a few thoughts on the future of math These videos are funded directly by viewers: https://3b1b.co/support An equally valuable form of support is to simply share the videos. Home page: https://www.3blue1brown.com

      If you want a finger on the pulse of how mathematicians are feeling right now, take a look at this post on Proofs and Prompt: https://proofsandprompts.com/2026/10/08/100-reactions-to-100-solutions/

      Timestamps 0:00 - Math student angst 3:10 - How does math work? 11:24 - A proof machine 25:12 - A conjecture machine 26:59 - A theory machine 31:31 - If AI is better at everything 34:58 - The best time to enter math

      Secret Endscreen Vlog: https://youtu.be/4GV1qlv_3qU


      These animations are largely made using a custom Python library, manim. See the FAQ comments here: https://3b1b.co/faq#manim

      Music by Vincent Rubinetti. https://vincerubinetti.bandcamp.com/album/the-music-of-3blue1brown https://open.spotify.com/album/1dVyjwS8FBqXhRunaG5W5u


      3blue1brown is a channel about animating math, in all senses of the word animate. If you're reading the bottom of a video description, I'm guessing you're more interested than the average viewer in lessons here. It would mean a lot to me if you chose to stay up to date on new ones, either by subscribing here on YouTube or otherwise following on whichever platform below you check most regularly.

      Mailing list: https://3blue1brown.substack.com Twitter: https://twitter.com/3blue1brown Bluesky: https://bsky.app/profile/3blue1brown.com Instagram: https://www.instagram.com/3blue1brown Reddit: https://www.reddit.com/r/3blue1brown Facebook: https://www.facebook.com/3blue1brown Patreon: https://patreon.com/3blue1brown Website: https://www.3blue1brown.com

    5. 🔗 Kagi release notes Oct 16th, 2026 - Smarter search widgets, Privacy Pass upgrades, and a calmer Assistant rss

      Search

      • We added a small animation to the coin widget – and clicking the coin does another flip! Try it for yourself!

      • We've increased the Quick Bangs and Quick Snaps limit from 20 to 50 #11480 @Kage), and known scam / phishing sites are now blocked when Safe Search is enabled, rather than just being downranked.

      • The weather widget has been updated. Its triggers have been improved and now support more than 40 languages. This change closes several issues: #3348 @CrunchyFritos, #4525 @lawngnome, #4612 @laiz, #3326 @ak42, #6474 @bram

      Improvements and bug fixes

      Browser Extensions & Privacy Pass v1.0.13

      • Kagi Search Extension Firefox Container Support #11563 @michaeljcallahan
      • Provide option to disable adding context menus in Firefox extension #8139 @emptyjar
      • Privacy Pass now works with Quick Answer & Inline Summarize features
      • Fetching session cookies no longer fails under First-Party Isolation (privacy.firstparty.isolate), which is the default in the Tor browser
      • Website Info doesn't work on Privacy Pass #11609 @Kagi_Search_User

      Assistant

      • Response steps are now fully collapsible, giving you a calmer space to get all your work done.

      • A Help menu has been added to the sidebar for quick access to helpful links.
        {Assistant Help menu in
sidebar}

      Apps

      • We saw reports from users unable to send follow-up messages on the mobile apps. This issue has been resolved. We apologize for the inconvenience.

      Improvements & Bug Fixes

      Translate

      • Kagi Translate has turned my blog post into a kagi.com page that outranks me, untranslated #11490 @AviD
      • Centred, dynamically expanding YouTube subtitles are nearly unreadable #10283 @JR

      Translate Extension

      • Kagi Translate Extension QOL Features #9470 @GravityMan
      • Proofread bang doesn't work when text contains a dot (in combination with Kagi translate plugin) #9734 @KagiMan
      • Proofread in Kagi Translate extension doesn't preserve line breaks #10634 @hmnd
    6. 🔗 r/LocalLLaMA China proposes export controls on 23 AI technologies (including large models, agents & clusters); already open-sourced tech is exempted rss

      On October 16, 2026, China’s Ministry of Commerce and Ministry of Science and Technology released a draft revision to the Catalog of Technologies Prohibited and Restricted from Export. It proposes adding 40 technologies across AI, biomedicine, and solar PV, of which 23 are AI-related (covering foundation/large models, intelligent agents, computing clusters, and information processing technologies).

      Public comments are open until November 15. Temporary pre-export registration requirements for the covered technologies take effect immediately.

      Key points relevant to open-weight models:

      ‱ Technologies already made public via open-source releases or academic publications are explicitly exempted and not subject to the controls.
      ‱ Open-sourcing AI technologies, plus certain other activities (e.g., Chinese firms building their own overseas compute centers), are eligible for streamlined automatic licensing.
      ‱ Providing access via APIs, apps, websites, or SaaS is generally not treated as a technology export.
      ‱ Overseas local deployment of restricted models can fall under the rules (with possible facilitation in lower-risk cases such as a company’s own overseas cloud).

      This is not a blanket ban on open-weight models. However, new models that have not yet been released may face registration or approval steps before their weights or source code can be transferred abroad (thresholds based on performance, parameters, data sensitivity, etc. are still being defined). Chinese labs such as DeepSeek and Qwen could see additional compliance requirements on future open releases.

      Source

      https://m.bjnews.com.cn/detail/1792137269129878.html

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

    7. 🔗 DioxusLabs/blitz v0.3.0-beta.4 release

      v0.3.0-beta.4

    8. 🔗 HexRaysSA/plugin-repository commits sync repo: +7 releases rss
      sync repo: +7 releases
      
      ## New releases
      - [IDA-MCP-Hub](https://github.com/captain-ai-hub/ida-mcp): 0.9.7, 0.9.6, 0.9.5, 0.9.4
      - [functionloader](https://github.com/tien0246/functionloader): 0.1.1
      - [mcrit-ida](https://github.com/familiary/mcrit-plugin): 2.1.1, 2.1.0
      
    9. 🔗 OmniNull/OmniWM Canary 20261016-0427 (ccc7f45c) release

      Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

      See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

      • Commit: ccc7f45cff9a
      • Base tag: canary-20261015-0437-38680472040-1

      Changes since canary-20261015-0437-38680472040-1

      • ccc7f45 Merge PR #881: Respect Reduce Transparency in shell tests
      • 39c14e3 Merge PR #879: Fix battery sampling and shell test assumptions
      • 48b8a07 Merge PR #878: Split palette selection dispatch
      • ffff96d Preserve Dwindle insertion animation continuity
      • 111c481 Merge PR #875: Add directional Dwindle drag insertion
      • ea1af59 Merge PR #828 updates for quiet-arrival plan acceptance
      • b452665 Assert the quiet token survives a rejected layout plan
      • 53fee12 Keep the blur and badge tests independent of Reduce Transparency
      • 127c4cd Keep quiet-arrival tokens until their layout plan is accepted
      • abff48c Preserve targeted window fields in generated IPC encoders
      • d140d45 Render each Celestial dashboard tab on its own in the test
      • 909c060 Split palette selection dispatch out of selectCurrent
      • 5233292 Expect the forecast rain chance in the system percent format
      • f01d543 Read the charging flag once when sampling the battery
      • 51fe5ef Merge PR #828: Add targeted window actions
      • c6e1dc5 Act on a window's column from the CLI without moving focus
      • 439c97b Skip the palette key-window test while the console is locked
      • 404dc96 Add per-monitor Niri span overrides
      • ca24069 Merge PR #873: Preserve custom Niri spans when visible counts change
      • 49fbaee Add directional Dwindle drag insertion
      • 5aff5a5 Correct Niri resize baselines and action IDs
      • af49efe Merge PR #874: Stop banking Niri resize steps below minimum sizes
      • 8c17a2a test(niri): drive the per-monitor visible containers override in the span tests
      • cfc4007 Complete and streamline the Niri movement preference
      • b45151a fix(niri): step relative primary resizes from the shown span
      • bca9c36 fix(niri): keep a custom default span when visible containers change
      • b3cdf11 Merge PR #829: Add Niri movement stacking preference
      • ca5aa5d Merge PR #835: fix Dwindle resize limits for collapsed splits
      • 98bd2c6 Remove comments from Accessibility revocation handling
      • 13b10c0 Merge PR #837: Stop services when Accessibility is revoked
      • 5cc4d33 Clear command search before switching palette modes
      • fff1ac7 Merge PR #861: Add palette mode hotkeys
      • f759c2e Merge PR #869: Reduce interactive resize AX writes
      • 500747e Merge PR #864: batch inactive workspace window parking
      • e474fd0 Merge PR #865: create SkyLight transactions only when needed
      • df5fb8f Make lock activation tests deterministic
      • 39a6255 Merge PR #862: track session lock state
      • d26aa08 perf(resize): skip redundant size writes and readback for moved neighbors
      • ee8c8cd perf(workspace): park inactive workspace windows in one batch
      • 7e67edd perf(skylight): create the scoped transaction on first use
      • f316514 Re-check session lock state on app activation while locked
      • f162854 Track lock state from session notifications instead of app focus
      • 5592211 Add hotkey actions for opening the command palette in a mode
      • 10e2a61 Stop services when Accessibility is revoked while running
      • 59aa412 Fix Dwindle resize limits for collapsed splits
      • 0adc29b Add Niri option to move windows without stacking into columns
    10. 🔗 backnotprop/plannotator v0.28.22 release

      Follow @plannotator on X for updates

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

      What's New in v0.28.22

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

      👍 Looks good

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

      Full view for files

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

      One viewer for a thread's images and files

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

      Every session prints its URL

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

      PLANNOTATOR_BROWSER=none opens nothing

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

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

      Additional Changes

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

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

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

      Pi:

      pi update --extensions
      

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

      What's Changed

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

      Community

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

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

    11. 🔗 New Music Releases Caspian - Caspian rss

      Caspian - a new release is available:

      • 2026-10-16: Caspian (Album)

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

      Visit muspy for more information.

    12. 🔗 New Music Releases Max Richter - While the Flood Rages rss

      Max Richter - a new release is available:

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

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

      Visit muspy for more information.

    13. 🔗 New Music Releases Paul Oakenfold - Eyes on You (Big Brother Theme) rss

      Paul Oakenfold - a new release is available:

      • 2026-10-16: Eyes on You (Big Brother Theme) (Single)

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

      Visit muspy for more information.

    14. 🔗 New Music Releases Kings of Leon - KOYSAR rss

      Kings of Leon - a new release is available:

      • 2026-10-16: KOYSAR (Single)

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

      Visit muspy for more information.

    15. 🔗 New Music Releases Eelke Kleijn - Her Name rss

      Eelke Kleijn - a new release is available:

      • 2026-10-16: Her Name (Single)

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

      Visit muspy for more information.

    16. 🔗 Ampcode News See Your Runner's Desktop rss

      You can now see and control your macOS or Linux runner's desktop. This is nice for trying native apps that Amp builds for you, such as iOS apps:

      Turn on Share This Mac's Display under Settings â€ș Runner in the macOS app, or start your runner with amp --no-tui --desktop.

      The Runner tab in the Amp macOS app's settings, with Share This Mac's Display turned on and its Sharing status highlighted. The Runner tab in the Amp macOS app's settings, with Share This Mac's Display turned on and its Sharing status highlighted.

      Your Amp client connects directly to the runner, so it's nearly instant when the runner is on your local network or nearby.

      Read See and Control the Runner's Desktop for more details.

  4. October 15, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-15 rss

      IDA Plugin Updates on 2026-10-15

      New Releases:

      Activity:

      • capa
        • e73de368: ci: speed up tests on macos-15-intel and improve vivisect cache reuse

      • disrobe
        • 2f2b546a: chore(xtask): regenerate the published figures
        • 6a1c5d75: test(bench): pin the dex head-to-head at 210 of 238 clean regions
        • 5e363267: docs(native): describe rust slot calls, dispatch loops and refusals
        • 992aeb92: fix(cli): name the classes the rust emitter still refuses
        • 69bd248f: test(nativelang): pin pseudo-rust rates that now match pseudo-c
        • 47b42336: test(native): grade msvc fixtures and goto shapes as rust by execution
        • 69f9c4c8: feat(native): emit rust for slot calls and unstructured gotos
        • 827799dc: docs(binfmt): describe nsis output directories and repeats
        • 3af74215: test(binfmt): grade nsis layout and repeats on makensis builds
        • fe2ead84: fix(binfmt): keep nsis output directories and repeated members
        • 0bc177d7: chore(xtask): regenerate the published figures
        • d2e31185: test(dotnet): pin edgecases whole-type recompile at 22 of 35
        • 10c44e0b: fix(dotnet): take by-ref argument modes from the callee signature
        • 948aea12: ci(github): route the rust inventory tests and shard-three cli build
        • 2a43ad63: test(nativelang): rebuild rust fixtures from the committed remap recipe
        • d5fc9616: fix(mba): refuse saturation by name when a rule table fails to load
        • 92d1a047: test(jvm): pin 130 of 131 edgecases methods as execution-equivalent
        • 51b2158f: fix(jvm): recover nest getters and refuse non-java bodies by name
        • 16b9a49b: test(py-decompile): pin cpython 3.8 at 4893 and 3.14 stdlib at 17637
        • ad039083: fix(py-decompile): refuse malformed try structures by name
      • functionloader
        • 582a6e83: Add sub_58E2F2 before and after screenshots
        • 66726f89: Add MIT license
        • 3945f11b: Flatten FunctionLoader plugin package
        • fd99ddef: Package FunctionLoader for IDA Plugin Manager
      • idawilli
        • 155e17a1: Merge pull request #164 from williballenthin/claude/lumina-history
        • 0c43b2dc: lumina: add lumina_metadata script and hint_lumina plugin
      • mcrit-plugin
        • 3945089d: Merge pull request #55 from familiary/release/ida-2.1.1
        • 362123f0: Release the IDA plugin as 2.1.1
        • 185b3def: Merge pull request #54 from familiary/fix/ida-live-query-hang
        • 31ddbc45: Start the GUI integration's no-view refresh from an IDA timer callback
        • 83677505: Hand IDA request results to the main thread with a queued Qt signal
        • a365522e: Merge pull request #53 from familiary/ci/binja-release-from-merged-ve

        • e90694e0: Release the Binary Ninja plugin from a version raised through a PR
        • e93c66e4: Merge pull request #52 from familiary/docs/familiary-links
        • 995e817d: Point the mcrit, docker-mcrit and mcrit-data links to familiary
        • 2ebf444e: Version 1.0.1
        • 77519a28: Merge pull request #51 from familiary/release/ida-2.1.0
        • 77ee4c8f: Name the 1.4.5 tag and the manifest version among unusable Binary Nin

        • cc9901a1: Release the IDA plugin as 2.1.0
        • 0d8bf83c: Merge pull request #50 from familiary/fix/47-job-sample-match
        • f312b768: Match jobs to a sample on the samples they name
        • e495a4e2: Merge pull request #41 from r0ny123/ida-perf
        • df487781: Name an import by ordinal that IDA cannot name by its ordinal
        • 1db732ea: Merge main into ida-perf
        • ebe3637f: Merge pull request #45 from r0ny123/align-client-1.15
        • 9d106a5d: Merge pull request #44 from r0ny123/match-graph-followups
      • oh-my-pi
        • a5acfb26: perf(natives): trim again once job results are freed on the JS thread
    2. 🔗 crmne/spotifast Spotifast v0.13.3 release

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

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

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

      Fixed

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

      Thanks

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

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

    3. 🔗 earendil-works/pi v1.3.0 release

      New Features

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

      Added

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

      Changed

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

      Fixed

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

      What's Changed

      • fix(ui): keep binary files reachable by file navigation and clicks by @bottercode in #1178
      • fix(cli): reject unrecognized nonempty patch input by @benvinegar in #1183
      • Add hunk-why to hunk-extension marketplace by @benvinegar in #1179
      • fix(ui): distinguish empty reviews from filtered files by @benvinegar in #1182
      • fix(ui): keep the selected file visible in the sidebar during held navigation by @Lawgk in #1085
      • test(website): allow published prereleases in changelog smoke by @benvinegar in #1185
      • docs: correct stale facts and fill gaps across hunk.dev docs by @benvinegar in #1186
      • chore(release): prepare 0.24.0-beta.1 by @benvinegar in #1187

      New Contributors

      Full Changelog : v0.24.0-beta.0...v0.24.0-beta.1

    5. 🔗 r/LocalLLaMA Introducing Muse Spark Open: the most capable US open-weight model to date rss

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

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

      Inference, fine-tuning & deployment

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

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

    6. 🔗 The Pragmatic Engineer The Pulse: new trend of building “internal vibe-coding apps” at tech companies rss

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

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

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

      altThe landing page for Glass. Source: Ramp

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

      altSetting up connectors in Glass

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

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

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

      Stripe 's "internal Lovable", Harbor

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

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

      Why build your own internal "prototyping tool?"

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

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

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


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

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

      Changed

      • SQLite schema tables: Fixed Date fields in State.SQLite.table({ schema })
        so their codecs round-trip through SQLite in structs and Schema.Class rows
        while preserving Date checks and transformations, including nullable encoded
        Dates. Thanks @acusti for the original fix
        (#1596,
        #1597,
        #1672).

      • Effect dependencies: Updated the aligned Effect 4 dependency cohort from
        4.0.0 to 4.0.3, including its AI, OpenTelemetry, platform, SQLite, and
        Vitest packages. Applications using Effect should align their dependencies
        to 4.0.3 or a compatible later 4.x release
        (#1669).

      • Contributor meetings: Added the canonical docs schedule for the next two
        fortnightly meetings at 19:00 Berlin, automatic Google Calendar publishing,
        and a stable Riverside room link
        (#1635).

      • Store commits: Fixed the callback form of store.commit and its TypeScript
        overloads, including calls with commit options. Synchronous callbacks return
        an event array that is collected before materialization, and throwing callbacks
        apply no events (#1611,
        #1616).
        Thanks @bohdanbirdie for the original fix.

      • Cloudflare sync telemetry: Added optional Effect tracer layers via otel: layer.
        Telemetry cleanup runs in the background, and finite WebSocket operations and
        DO-RPC pull streams now emit their sync spans
        (#1618).

      • Cloudflare adapter: Track state database ownership and remove obsolete
        tracked state after successful boot, preserving the current state, eventlog
        and untracked files. Failed cleanup is retried on a later boot without
        blocking the completed store
        (#1555).

      • Schema rebuilds: Batched eventlog replay to reduce repeated SQLite page
        writes, including billed row writes on Cloudflare Durable Objects. Replay order
        and recovery from incomplete rebuilds are preserved. Clients can tune the
        event-count batch per runtime with params.stateRebuildBatchSize (a positive
        integer, default 100); lower values trade more queries and writes for smaller batches
        (#1555).

      • State recovery: Interrupted rematerialization is retried from clean derived
        state instead of reopening partial results. Completion is recorded after all
        migration hooks finish. Browser fast-path startup waits for recovery when its
        snapshot is incomplete. The eventlog and pending events are preserved
        (#1605).

      • Cloudflare sync: Serialize push admission through pull publication so an
        accepted event cannot advance the backend head without notifying subscribers
        (#1537).

      • Cloudflare WebSocket sync: Live pulls interrupted after the sync Durable
        Object hibernates now receive their terminal RPC Exit, matching interruption
        behavior before hibernation. Completed and protocol-defected pulls are also
        removed from persisted fan-out state
        (#1418).

      • Cloudflare sync: Fixed live WebSocket pulls stopping permanently after a
        disconnect. Pulls now resume after reconnect without reloading the client,
        and HTTP transport failures also remain retryable. Offline pulls wait for
        reconnection rather than spinning, and resume as soon as the backend reports
        connected. Capped fallback probes cover stale connectivity signals and still
        wake immediately on later disconnect/reconnect transitions.
        Protocol failures stay terminal
        (#1650,
        #1673).
        For the root-cause analysis, thanks @bohdanbirdie.

      • Cloudflare DO-RPC sync: A temporary Durable Object RPC failure no longer
        stops replication for good. A call that Cloudflare marks retryable (and not
        overloaded) now surfaces as IsOfflineError, so the leader retries the pull
        after a jittered exponential backoff (1 s doubling to 30 s) on a fresh stub.
        Interrupted catch-up streams also recover when Cloudflare drops the error
        flags or the stream stalls for 60 seconds, resuming after the last applied
        event. Idle live subscriptions do not time out. Explicit overload and
        non-retryable remote failures keep their previous terminal handling
        (#1462,
        #1649).

      • Removed redundant devenv package entries now owned by the task guard modules.

      • Sync correctness: Prevented later client-session events from crossing an
        older rejected pending prefix, and made leader admission retain explicit
        reservation ownership through queue drain until apply, rejection, or stale
        dropping. Parent contiguity now compares DAG position independently of local
        rebase generation while stale epochs remain checked separately, avoiding
        duplicate materialization and ghost fences during multi-writer rebases
        (#1530).

      • Expo getting-started docs: The manual install command now installs
        @livestore/sync-cf instead of the import subpath @livestore/sync- cf/client,
        which package managers resolved as a git URL and failed to install
        (#1657,
        #1667).

      • Session IDs: Resolved symbol-backed session IDs at store, query and sync
        boundaries so queries receive stable session ID values. Thanks @IGassmann
        (#1297).

      • Cloudflare DO-RPC sync: Restored sync after the Effect 4 migration and
        isolated binary parsers per request so concurrent stream and unary responses
        cannot corrupt each other's frames. Thanks @IGassmann and @bohdanbirdie
        (#1389,
        #1266).

      • Cloudflare DO-RPC recovery: Persisted backend subscriptions and restored
        client stores after Durable Object reconstruction so live updates resume after
        deployment, eviction or hibernation. Reverse-RPC callbacks now receive
        syncUpdateRpc(payload, storeId) so clients can reopen the correct store.
        Thanks @bohdanbirdie
        (#1415,
        #1462,
        #1545).

      • Cloudflare DO-RPC shutdown: Graceful store.shutdown() now unsubscribes
        the client's live pull without removing a replacement store's subscription.
        Hibernating clients retain their subscriptions. Thanks @bohdanbirdie
        (#1418).

      • Cloudflare HTTP sync: Forwarded client payload to onPush, matching
        WebSocket and DO-RPC transports. Payload validation may now reject HTTP pushes
        that previously arrived with undefined. Thanks @bohdanbirdie
        (#1417).

      • Browser rebases: Preserved rollback metadata for accepted local events so
        conflicting backend events can be rolled back and rebased correctly.
        Thanks @victornyberg and @slashv
        (#1472).

      • Store shutdown: Orderly shutdown now drains admitted client events to the
        leader before closing the store. Commits remain synchronous during rebases,
        and a timeout closes the store scope if the leader is unresponsive. Hard crashes
        can still lose unacknowledged client commits
        (#1451).

      • Persisted web sessions: Persisted the state snapshot head separately from
        rollback data so restored browser sessions use the correct head. The added
        system table triggers a one-time state rebuild from the eventlog on upgrade
        (#1522).

      • OpenTelemetry compatibility: Removed dependencies on SDK-private span
        timing fields so SQLite and live-query instrumentation works with custom
        tracers. No-op spans now use the standard invalid span context, fixing Metro
        bundling in Expo
        (#1449,
        #1452).

      • Source types: Improved compatibility with newer TypeScript DOM and
        Cloudflare Worker global types
        (#1346).

      • Node utilities: Restored the public recursive-watch layer exports with
        Effect 4-compatible implementations
        (#1591).

      Breaking Changes

      • Effect 4 / LiveStore 0.5: Upgrade application dependencies and schema APIs
        from Effect 3 to stable Effect 4. Follow the
        0.4 to 0.5 upgrade guide
        for peer packages, schema substitutions, removed utilities, commit callbacks
        and Cloudflare DO-RPC changes
        (#1310,
        #1647,
        #1670).

      • Cloudflare adapter: createStoreDo, createStoreDoPromise and
        makeDoRpcSync take getSyncBackendStub: () => stub instead of
        syncBackendStub. LiveStore calls it for every sync call, because Cloudflare
        leaves a stub broken after many exceptions. Replace
        syncBackendStub: env.SYNC_BACKEND_DO.getByName(storeId) with
        getSyncBackendStub: () => env.SYNC_BACKEND_DO.getByName(storeId)
        (#1462,
        #1649).

      • Store commit callbacks: Callbacks now synchronously return an event array.
        Replace store.commit((commit) => { commit(event) }) with
        store.commit(() => [event]) or store.commit(event)
        (#1611,
        #1616).

      • Rebuild completion tracking: The first open after upgrading from a version
        without the completion marker rebuilds derived state once. No application
        configuration changes are needed. Cloudflare deployments should budget for
        replay duration and row writes. Migration hooks must tolerate retries after
        interrupted rebuilds (#1605).

      • State schema fingerprints: Replaced Effect-internal AST hashing with a
        LiveStore-owned canonical descriptor and a synchronous full-width SHA-256
        fingerprint. No application schema or configuration changes are required.
        The first open after upgrading intentionally creates a new state database and
        rematerializes it once from the event log, so Cloudflare deployments should
        plan for the corresponding row-write usage
        (#1555).

      • Effect dependency compatibility: The peer range is ^4.0.0, excluding
        beta/RC releases. Effect-only upgrades preserve state schema fingerprints,
        but changed event schema hashes can produce warnings on rematerialization
        (#63). Refined
        Schema.DateFromMillis and Schema.Uint8Array retain INTEGER and BLOB storage
        (#1557,
        #1606,
        #1647).
        Thanks @JamieMason for the migration work.

      • SQLite migration configuration: Removed the unsupported manual migration
        strategy and strategy: 'auto'. Remove the strategy field from migration
        configuration. State databases are rebuilt automatically from the eventlog
        when their schema changes, while hooks and logging remain supported.
        Thanks @IGassmann
        (#1525).

      • Cloudflare DO-RPC routing: Pass the client's Durable Object ctx to
        handleSyncUpdateRpc(ctx, payload) and supply durableObjectState to
        makeDoRpcSync. Live-pull routing is now scoped to the instance instead of
        leaking across co-located or reconstructed objects. Thanks @bohdanbirdie
        (#1415,
        #1545).

      • Worker entry points: Import the generic worker mesh bridge from
        @livestore/webmesh/worker and the browser DevTools channel protocol from
        @livestore/adapter-web/devtools-web-channel
        (#1293).

      • Effect utility facade: TestSchema is no longer exported from
        @livestore/utils/effect, keeping Node-only test assertions out of browser
        bundles. Import it from effect/testing instead
        (#1433).

      • Effect utility migrations: Replace Schema.DateFromEpochMillis with
        Schema.DateFromMillis (the encoded value remains epoch milliseconds).
        Replace the removed Scheduler.messageChannel() helper with Effect's default
        MixedScheduler or an application-specific scheduler. Thanks @IGassmann
        (#1385,
        #1370).

      • Effect helper errors: Renamed Effect.tryAll to
        Effect.trySyncOrPromiseOrEffect. Promise rejections now fail with
        Cause.UnknownError, and returned Effects preserve their failure and service
        channels. Thanks @IGassmann
        (#1527).

      • Effect facade exports: Replace the removed Encoding export with
        Base64Url and move imports of the removed BucketQueue and ServiceContext
        helpers to the corresponding Effect 4 APIs. The upgrade guide lists the
        consolidated Effect modules and obsolete peer packages to remove
        (#1310,
        #1647,
        #1670).

      Internal Changes

      For maintainers and contributors:

      • Unit-test tooling: Local mono test unit and devenv tasks run test:unit
        now fail when any package's Vitest process exits nonzero, matching CI.
        Package output streams directly to the terminal instead of being buffered
        (#683,
        #1671).

      • CI composition: Aligned the megarepo setup with the automatic CI worktree
        policy and consolidated devenv resolver from
        effect-utils#1207.

      • Release tooling: Pull-request CI now packs exact-head snapshot candidates
        for forks without secrets. Maintainers can allow npm publication for a fork's
        current and later PR heads with the revocable ci:publish-snapshot label
        (#1559). The trusted
        publisher leaves npm registry configuration unset so actions/setup-node
        does not inject its token-auth placeholder into the OIDC-only job.

      • Effect rc.111 API burndown: Ported the internal Effect surface that moved
        between beta.99 and rc.111 — Schema.TaggedErrorClass →
        Schema.TaggedError, Schema.UnknownFromJsonString →
        Schema.fromJsonString(Schema.Unknown), Schema.toArbitraryLazy →
        Schema.toArbitrary, Schedule.andThen → Schedule.concat, and the
        SchemaIssue constructors that dropped their actual argument. SQLite column
        inference now keys off the open representation annotation instead of the
        removed typeConstructor/meta annotations, and JSON-string columns are
        detected through the application/json content annotation now that
        SchemaTransformation.fromJsonString is a factory rather than a singleton.
        Schema issues no longer carry a toString()
        (Effect-TS/effect#7093), so
        the Durable Object RPC server renders decode failures through
        SchemaIssue.makeFormatterDefault() like the rest of the codebase.
        The @effect/vitest record-arbitrary workaround was dropped because
        Effect-TS/effect#7148 fixed it
        upstream (#1557).

      • Effect rc.113 API burndown: Replaced the removed MessagePack RPC layer
        with SchemaBinary, migrated sockets to the pull reader and scoped writer
        APIs, and updated CLI constructors and schema transformations to their rc.113
        names. The FastCheck-based Vitest.asProp helper was removed; use
        Vitest.live.prop with arbitrary options
        (#1606).

      • Tooling: Shell entry no longer runs the full TypeScript build after
        dependency and generated-source setup. The shared Effect-utils
        otel:profile:setup task captures the strict setup graph through native
        devenv tracing and otelite; otel:verify:setup gates the connected trace
        shape without a repository-local orchestration module
        (#1402).

      • Tooling: Unit-test failures now block merges. The test-unit job ran
        packages/@livestore/webmesh and tests/package-common through
        Effect.ignore on CI, so their failures produced a passing required check.
        Removing that also restores the intent-layer invariant suite as a real gate on
        context/ changes (#1404).

      • Tooling: The DevTools Playwright suite is currently broken (0/15) and
        carries a declared, expiring quarantine entry instead of an unrecorded
        || echo wrapper. Its check does not gate merges yet — the quarantine
        records the failure with a reason, an issue, and an expiry date rather than
        hiding it (#1489).

      • Tooling: Cloudflare sync-provider failures now block merges. All six cf-*
        matrix cells previously exited 0 on failure, which is why the Durable Object
        hibernation guards could not gate merges
        (#1404).

      • Materialization internals: Added a journal service for recording,
        rolling back and pruning state database changesets
        (#1531).

      • Leader sync internals: Local pushes now always await processing, and
        client-only event predicates use explicit isClientOnly naming
        (#1303,
        #1310).

      • Mock sync backend: Each connection now receives the full live event stream
        instead of competing for events on one shared queue. Thanks @victornyberg
        and @slashv
        (#1535).

      • Build tooling: Adopted TypeScript 7 tooling compatibility updates and
        vendored SQLite's contrib extension source so Nix builds no longer download
        it from sqlite.org
        (#1628,
        #1460).

    8. 🔗 r/LocalLLaMA nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB · Hugging Face rss

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

      Model Summary

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

      Model Overview

      Model Developer: NVIDIA Corporation

      Model Dates: December 2025 - May 2026

      Data Freshness:

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

      What is Nemotron?

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

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

      bolt!

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

    9. 🔗 Locklin on science LLMs are not AGI (though some have internal monologue) rss

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

    10. 🔗 backnotprop/plannotator v0.28.21 release

      Follow @plannotator on X for updates

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

      What's New in v0.28.21

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

      Message an agent from the Inbox

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

      Video attachments

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

      Open an attachment in its own app

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

      Code, Tests and Generated in code review

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

      Skills in Inbox replies

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

      Tidy sidebar projects

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

      Writes from other websites are refused

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

      Additional Changes

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

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

      claude plugin marketplace update plannotator
      claude plugin update plannotator@plannotator
      

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

      Pi:

      pi update --extensions
      

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

      What's Changed

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

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

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

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

    13. 🔗 Console.dev newsletter WorkOS rss

      Auth and access control.

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

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

    14. 🔗 Console.dev newsletter GoNIX rss

      UNIX with a Go userspace.

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

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

    15. 🔗 OmniNull/OmniWM Canary 20261015-0437 (bd832da8) release

      Automated canary build of main. It is signed and notarized like a release but skips the owner review, so treat it as unstable.

      See the canary guide to install, update, or return to stable. For everyday use, download the latest stable release.

      • Commit: bd832da8b642
      • Base tag: canary-20261014-0432-38510568082-1

      Changes since canary-20261014-0432-38510568082-1

      • bd832da Fix editable monitor overrides and surface config errors
      • 2edee92 Merge PR #855: animate workspace swipes along their gesture axis
      • 6e3086a Refactor Swift code to clear repository lint warnings
      • 7323872 Follow captured window outlines for missing corner radii
      • 8fd5fe7 Merge PR #857 to update border corner fallbacks
      • 6985f3d Merge remote website updates with local focus cleanup
      • 15f509b Remove redundant focus clearing during window retirement
      • 9e15b47 Merge updated PR #858 while retaining local focus handling
      • abd322d fix(focus): keep externalized focus when a rejected window is retired
      • 12cf599 Preserve external focus when retiring managed windows
      • fcf4558 Merge PR #858 to clear focus after window closure
      • d1ca444 Merge pull request #860 from OmniNull/dependabot/npm_and_yarn/website/npm_and_yarn-4f49698a6d
      • 8fdb1df Bump the npm_and_yarn group across 1 directory with 3 updates
      • b9c8d15 Document OmniShell with guides and a Luau API reference
      • 079a35e Reduce redundant work in Desktop settings
      • 87d917a fix(border): clear focus owner and hide border when last floating window closes
      • 68db161 fix(border): update corner radius fallback for macos 26+ and handle xpc panel corners
      • 3d8594b Mirror direction of workspace swipe gesture in animation
    16. 🔗 Rust Blog Announcing Rust 1.99.1 rss

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

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

      rustup update stable
      

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

      What's in 1.99.1

      Rust 1.99.1 fixes the following regressions from prior releases:

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

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

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

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

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

      Contributors to 1.99.1

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

    17. 🔗 Will McGugan The Living Mountain Chapter 2 rss

      2. Sealg

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

      “You got it?” asked Calum.

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

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

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

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

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

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

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

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

      “No”, Calum said, meekly.

      “I’m doing it.”

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

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


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

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

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

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

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

      “Is that all?”

      “Afraid so,” Calum confirmed, mournfully.

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

      “We can’t do that. Somebody might see you.”

      “See me doing what? Buying chips?”

      “Driving without a license.”

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

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

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

      “Seriously?” Alastair’s tone lightened.

      “Aye,” Calum confirmed.

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


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

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

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

      “Where are we?” Calum asked.

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

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

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

      “Torch.” Calum said.

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

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


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

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

      “What if we don’t find anything?” Calum asked.

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

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

      “Pretty,” Calum remarked.

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

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

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

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

      “Do they growl?”

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

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

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

      “You would have got him.”

      “Damn right I would have got him. Blown him to Smithereens.”

      “What was it growling at?”

      “I don’t know, bro. Do I look like David Attenborough?”

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

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

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

      Alastair scrambled to his feet.

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

      “It’s like it is swimming,” Calum remarked.

      “Aye. Swimming in dirt.”

      “Is that how they all come out?”

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

      “Are you going to shoot?”

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

      “Should we dig it out?” Calum asked.

      “No, dummy. It will bite us.”

      “Right.”

      “What are we going to do?”

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

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

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

      “Have you ever seen one. You know. Close up?” Calum asked.

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

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

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

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

      “Careful,” warned Calum.

      “Get the beer,” Alastair said, ignoring Calum’s concern.

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

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

      “It’s not a girl. It’s a brollachan.”

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

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

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

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

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

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

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

      “Let’s get her to the Rover,” said Alastair.

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

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

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

      “Drive safe little brother. Catriona has had a rough night,” Alastair said.

      “Catriona?”

      “That’s her name. She’s from Ireland.”

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

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

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

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

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

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

      “This is Catriona,” Alastair said.

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

    18. 🔗 New Music Releases Apocalyptica - Tango rss

      Apocalyptica - a new release is available:

      • 2026-10-15: Tango (Single)

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

      Visit muspy for more information.

    19. 🔗 New Music Releases Above & Beyond - Nights Like This rss

      Above & Beyond - a new release is available:

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

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

      Visit muspy for more information.

    20. 🔗 Filip Filmar rules_fusesoc: FuseSoC Cores as Bazel Dependencies rss

      rules_fusesoc integrates FuseSoC, the FPGA core package manager, into hermetic Bazel builds. Users declare desired core libraries and IP dependencies in Bazel build files. The module resolves dependencies and exports Verilog and VHDL filesets as standard Bazel filegroup targets for synthesis and simulation. This post, part of the series on the build infrastructure behind cocoapuffs-fpga, examines the division of responsibility between package managers and build systems.

      What a .core file hides

      The open-source FPGA ecosystem maintains a substantial library of reusable IP packaged as FuseSoC .core manifests. At first glance, a .core file appears to be a static list of source files. Parsing the manifest directly with custom scripts seems straightforward, but that shortcut fails quickly.