🏡


  1. August 24, 2026
    1. đź”— WerWolv/ImHex Nightly Builds release

      Nightly

      1d54431 Changelog

      • patterns: Update pattern language
  2. August 23, 2026
    1. đź”— MetaBrainz GSoC 2026: Modernize search storage format for the MusicBrainz database rss

      Hello Everyone!

      I’m Junaid (fettuccinae), an undergraduate Computer Science student at MGIT in India. This summer, I returned to MetaBrainz for my second GSoC project, where I worked on modernizing the MusicBrainz search under the mentorship of @kartikohri13 and @bitmap.

      Project Overview: MusicBrainz uses Apache Solr for search queries. The previous implementation serialized all the response data into a single _store field. The response writers reads _store, unmarshal the XML into a MusicBrainz XML Metadata Format (MMD) object and then serialize it again as XML or JSON for the response. Few problems with this design are: 1. The indexer must construct a complete XML representation for every document, even though much of the same information is already available in normal Solr fields. 2. Most of the response data is stored in an opaque _store XML blob. This project focused on moving the fields from one _store XML blob into their own flat fields (and JSON strings for nested fields). The main goals of this project were: 1. Upgrade the Solr schema version from 1.5 to 1.7 2. Add fields (in configsets and indexer) to store all the data to be returned 3. Create response writers to return data from fields The proposal for this project can be found here. Result: This project replaced the _store blob with stored fields and JSON string fields across all 16 search entities. I reindexed both the old and new configurations using the sample MusicBrainz database, then force-merged the indexes before measuring them. I wrote a python script to measure their sizes using Solr's status API and compared them. The total core size went from 3.8 GiB to 2.8 GiB, saving around 1 GiB or 26%. Collection| Old core| New core| Difference% ---|---|---|--- annotation| 15.8 MiB| 14.8 MiB| 5.8% area| 7.9 MiB| 4.5 MiB| 42.9% artist| 131.3 MiB| 81.2 MiB| 38.2% cdstub| 94.0 MiB| 56.0 MiB| 40.5% editor| 5.6 MiB| 1.9 MiB| 65.6% event| 2.3 MiB| 1.4 MiB| 39.7% instrument| 542.8 KiB| 405.2 KiB| 25.4% label| 10.7 MiB| 6.3 MiB| 40.6% place| 6.2 MiB| 3.7 MiB| 40.1% recording| 3.0 GiB| 2.2 GiB| 26.1% release| 37.2 MiB| 25.9 MiB| 30.5% release-group| 42.1 MiB| 31.7 MiB| 24.7% series| 1.2 MiB| 624.5 KiB| 49.6% tag| 3.6 MiB| 1.6 MiB| 56.0% url| 65.7 MiB| 44.4 MiB| 32.3% work| 363.0 MiB| 307.1 MiB| 15.4% Total| 3.8 GiB| 2.8 GiB| 26.1% With codec enabled, it reduces to 2 GiB with a size difference of 1.8 GiB or 47.9%. (The trade-off here is the search speed performance) Collection| Old| New| Difference % ---|---|---|--- annotation| 15.8 MiB| 12.1 MiB| 23.4% area| 7.9 MiB| 4.0 MiB| 49.7% artist| 131.3 MiB| 66.2 MiB| 49.6% cdstub| 94.0 MiB| 49.8 MiB| 47.1% editor| 5.6 MiB| 1.7 MiB| 68.9% event| 2.3 MiB| 1.2 MiB| 47.5% instrument| 542.8 KiB| 370.2 KiB| 31.8% label| 10.7 MiB| 5.5 MiB| 48.5% place| 6.2 MiB| 3.2 MiB| 48.7% recording| 3.0 GiB| 1.5 GiB| 49.5% release| 37.2 MiB| 19.6 MiB| 47.2% release-group| 42.1 MiB| 20.2 MiB| 52.1% series| 1.2 MiB| 570.6 KiB| 53.9% tag| 3.6 MiB| 1.4 MiB| 61.2% url| 65.7 MiB| 38.1 MiB| 42.0% work| 363.0 MiB| 236.1 MiB| 34.9% Total| 3.8 GiB| 2.0 GiB| 47.9% Implementation details:

      Upgrading the schema:

      The Solr schema change from 1.5 to 1.7 enables docValues by default for primitive field types.
      Most primitive fields are already stored directly with stored="true". Since docValues are mainly used for faceting, sorting, and function queries, I added docValues="false" to primitive field types to avoid storing the same value twice.
      ref_count is used in boost functions in some cores , which needs docValues.
      I created a new int_dv field type with docValues="true" and used it for ref_count and the other count fields used by boost functions.
      Finally, I bumped the schema version from 1.5 to 1.7 in each core and verified that indexing and search continued to work.

      Schema upgrade PR

      Configset:

      I changed fields that can be stored directly to stored="true" and added the remaining fields with indexed="false" and stored="true".
      I then removed _store field from the schemas and request parameters.

      I replaced ngram with edge-ngram, since we don't require non-edge permutations of a query during search.

      Configset PRs

      Indexer:

      In the SearchEntity class, I added a preserve_og flag. When converting a result dictionary into a Solr document, this flag preserves the original field order instead of converting the values to a set.
      I also added an objconverter method, which allows a specific field’s structure to be converted before it is sent to Solr.
      The preserve_og flag is enabled for simple parallel fields, such as tags. These fields do not need to be stored as JSON, instead, they use two parallel multi-valued fields. Preserving their order is necessary so that each tag_count remains associated with its corresponding tag_name.
      The objconverter method is used to convert nested fields into JSON strings.

      In each Search, I moved fields from extrapaths to their respective fields and added the required objconverter methods for nested fields.
      The existing wscompat converter logic for nested objects was mirrored to create these objconverter methods.
      The remaining logic for creating MMD objects is now handled by the response writers.

      Indexer PRs

      Response Writer:

      I added MBFlatXMLWriter, a field based response writer that reads the stored fields and, by mirroring the logic in wscompat's converters, create a MMD object and write it to the response.
      I added entity-specific builders to construct MMD object from its stored fields. MBFlatXMLWriter uses these builders as helper classes.

      I made MBJSONWriter which is currently used by MusicBrainz website search, to extend MBFlatXMLWriter instead of MBXMLWriter and verified that search works.

      I also updated the tests to validate the new flat field logic instead of the old _store logic.

      Response Writer PR

      Future

      The next steps for this project are to:
      1. Benchmark it in production and measure disk, RAM, and CPU usage to see whether the optimizations hold up in a real environment or introduce any regressions.
      2. Use Solr’s default response writers instead of custom response writers, and build the MMD objects in musicbrainz-server itself.

      Conclusion

      This project was more complex than my previous one. I spent a good amount of time understanding and deep-diving into Apache Lucene and Solr internals.

      The implementation was a lot of fun because I was constantly experimenting with different approaches and reporting my findings. Each time I triggered a reindex, I stared at the terminal, hoping that indexing would not throw a wall of errors and that the core size would at least remain the same as the baseline.

      Overall, the project gave me a much better understanding of search engines, some of the distributed-system techniques used by Solr, and the complexity of MusicBrainz itself.

      I’m thankful to my mentors, @kartikohri13 and @bitmap, for their support and guidance. It has been a pleasure working with you all. Thanks for an incredible summer!

    2. đź”— backnotprop/plannotator v0.27.7 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.27.6 | Live app annotation lands on Pi, one interaction model for HTML pages (same-day patch on v0.27.5)
      v0.27.5 | Annotate your running app, Agent TUI placement, collapsed lockfiles, VS Code theme fix, Pi fixes
      v0.27.4 | Portable Guided Review exports, guides.show share links, guide CLI, favicon switcher, jj Call Flow
      v0.27.3 | Folder watcher freeze fix on large repos, first SBOM-attested release pipeline
      v0.27.2 | Mobile plan and code review, Codex CLI 0.147 fix, folder annotate cold-start, configurable markdown extensions
      v0.27.1 | Open-in-editor launch fix, file headers respect Viewed/Git-add visibility toggles
      v0.27.0 | Call Flow analysis, --tailscale remote reviews, review panel remembers your view, Pi rebuild (breaking command rename), focus-mode shortcut
      v0.26.8 | Placed comment markers on HTML pages, shift-click multi-select, live app annotation
      v0.26.7 | Pinpoint targets any element on HTML pages, smarter hover labels, zero-scan hit testing
      v0.26.6 | Fixed empty environment variables in sandboxed sessions (Bun 1.3.14 builds)
      v0.26.5 | HTML pinpoint element annotations, durable annotate submissions, installer fallback for old git, vim HUD cursor fix
      v0.26.4 | Skill-menu hover jitter fix (same-day patch on v0.26.3)

      What's New in v0.27.7

      A patch release led by a crash fix for Pi on Windows: a broken provider pipe could take down the entire Pi host mid plan review. Five PRs, three from returning community contributors, plus a new top-level knowledge skill that also powers plannotator.ai/llms.txt.

      Pi no longer crashes when a provider pipe breaks

      On Windows, opening a plan review from Pi could kill the whole Pi host with an unhandled EPIPE error. The provider child process's stdin pipe broke, nothing was listening for the failure, and the host process died with it.

      This is fixed as a class, not a symptom. Every provider child process (Pi and the Codex app-server transport) now routes its pipe writes through a shared guard: a broken pipe fails that provider's query cleanly, the provider is marked dead and restartable, and the host keeps running. The regression test reproduces the exact pre-fix crash in a real Node child process.

      Thanks @Kaelenx for the detailed report and for verifying the fix on the original machine within the hour.

      Call Flow stops failing on normal reviews

      Call Flow rejected any analysis producing more than 100 call trees, and languages that emit many small per-function trees (Swift, TypeScript) hit that ceiling on ordinary branch reviews. @sergdort's measurements in #1351 showed a normal 161-file review producing 470 valid trees, computed in under 800ms, rejected whole.

      The tree cap is now 2,000, and a result that still exceeds it degrades instead of failing: the first 2,000 trees render and a visible warning in the panel says how many were truncated. The caps that guard against genuinely unbounded output (total nodes, tree depth, raw length) still reject exactly as before.

      jj reviews start from where your work actually began

      The jj Line of work view always diffed against trunk(). If your work branched off a staging or development line instead, the review included every commit from that line too, burying your changes in unrelated ones.

      Plannotator now asks jj where the current line of work forked from shared history and starts the review there. The base is named by its remote bookmark when one exists, then its local bookmark, then the commit ID, and jj's internal push-* bookmarks are never used as names. Older jj versions that cannot answer the fork-point query fall back to trunk() instead of failing the review.

      A knowledge skill for every agent, and llms.txt

      Agents had launcher skills for opening reviews but no reference for everything else Plannotator can do. The new top-level plannotator skill is that reference: every subcommand, flag, and workflow, installed for Claude Code, Codex, OpenCode, Pi, Kiro, and Gemini through their own install paths. A CI freshness guard ties the skill to the CLI source, so it cannot silently drift from what the binary actually accepts.

      The same document is now served at plannotator.ai/llms.txt following the llmstxt.org convention, generated from the identical source at build time.

      oh-my-pi is its own agent origin

      Sessions launched from the oh-my-pi harness were detected as Claude Code, because OMP exports Claude Code's environment markers into its shells. OMP is now detected as its own origin, ordered so nested runtimes still detect correctly, and sessions report the agent you are actually using.

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: Run /plugin in Claude Code, find plannotator , and click "Update now".

      Pi: Update @plannotator/pi-extension to 0.27.7 and restart Pi.

      OpenCode: Clear cache and restart:

      rm -rf ~/.bun/install/cache/@plannotator
      

      What's Changed

      • feat: detect the oh-my-pi harness as its own agent origin by @FNDEVVE in #1373
      • fix(review): detect JJ mutable line-of-work base by @graemefolk in #1365
      • feat(skills): top-level plannotator knowledge skill with a CLI freshness guard by @backnotprop in #1377
      • fix(ai): a broken RPC pipe must fail the provider, not kill the host by @backnotprop in #1379
      • fix(call-flow): keep big-but-valid tree lists instead of failing by @ashish921998 in #1370

      Contributors

      Three returning contributors landed code in this release. @graemefolk continues to own Plannotator's jj support end to end, this time replacing the assumed trunk() base with real fork-point detection. @ashish921998 turned @sergdort's Call Flow measurements into the fix that stops normal reviews from failing. @FNDEVVE made oh-my-pi a first-class agent origin.

      Community reports that shaped this release:

      • @Kaelenx reported the Pi host crash on Windows in #1378 and verified the fix on the same machine
      • @sergdort measured exactly which Call Flow cap was failing normal reviews in #1351

      Full Changelog : v0.27.6...v0.27.7

    3. đź”— Confessions of a Code Addict Demand Paging: What Happens When Linux Handles a Page Fault rss

      Welcome back to the video series on virtual memory based on my article on the same topic. It is also available in ebook format on Gumroad (pdf/epub) and Amazon Kindle, if you prefer those formats.

      Buy PDF/Epub

      Get Kindle Edition

      So far in this video series we have covered the foundational pieces behind virtual memory:

      From here on, the next set of topics is going to be more advanced and important for debugging memory issues in real-world systems. The topic of this video is demand paging, which is central to how memory allocation works inside the kernel.

      Demand paging simply means that when you ask the kernel for more memory, it reserves a virtual address range for you but does not perform physical memory allocation until you actually need it. This can lead to tricky situations and unpredictable system performance if you do not design your systems keeping this in mind.

      The famous OOM killer that appears and kills your processes is also a result of demand paging, because the kernel may end up overcommitting more memory than what is physically available, and ultimately it has to kill a process to free up some memory to recover the system.

      In this 45-minute video, we cover in depth what demand paging is, what its benefits are, and how it works inside the Linux kernel. And if you watch the full video, you would also get an idea of how the kernel handles page faults for various situations, such as when the page has been swapped, illegal address access, accessing file-backed pages, accessing an unmapped, copy-on- write fault, etc.

      In the next follow-up video, I plan to do a hands-on demo of demand paging in action. We will use mmap and inspect the virtual memory of the process to see that merely calling mmap does not cause a physical page allocation, but accessing a page does. Wait for the next video!

      Read more

    4. đź”— smol-machines/smolvm smolvm v1.10.1 release

      What's Changed

      • Remote volumes: mount S3 and any rclone remote with the volume flag by @BinSquare in #986
      • Rebuild the Windows krun.dll so machines boot on WHP again by @BinSquare in #1025
      • Resume and bound-retry a broken blob download so a stalled registry cannot hang a machine create indefinitely by @BinSquare in #1026
      • Bump libkrunfw to the guest kernel with IPv4/IPv6 policy routing so TUN-based VPN and proxy clients work by @BinSquare in #1024
      • Bump libkrun so Windows 10 hosts can start machines and aarch64 fork rollback keeps the golden alive by @BinSquare in #1028
      • Gate the guest's IPv6 on real host reachability and default its resolver to IPv4-first by @BinSquare in #1023
      • Bump the workspace to 1.10.0 by @BinSquare in #1029
      • Install the rebuilt agent into the rootfs directory the current platform actually uses by @BinSquare in #1031
      • Mount S3 volumes natively from the agent instead of requiring rclone in the image by @BinSquare in #1032
      • Bump the workspace to 1.10.1 by @BinSquare in #1033
      • net: verify host IPv6 reachability probe caching and gate Unix fabric tests by @swar09 in #1030

      New Contributors

      Full Changelog : v1.9.2...v1.10.1

    5. đź”— r/LocalLLaMA Don't want to be this guy, but I need Qwen 3.8 35B A3B rss

      Qwen 3.8 27B is great, however it takes me ages to do tasks on xhigh. I need Qwen 3.8 35B A3B. It'll be a little dumber but faster. I am also aware of the fact that 27B gets its "intelligence" from the long thinking time. I therefore assume that 35B would also be a long-thinking model, however running Qwen 3.8 27B over night on my M1 Max for just one task is impractical and no fun.

      I love the progress and the work of alibaba with 27B but... yeah I sadly don't own a faster RTX. What are you guys wishing or hoping for? Where do you see the future going? - Longer thinking times for higher intelligence?

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

    6. đź”— Register Spill Joy & Curiosity #96 rss

      When I compare the first 10 years of my professional life as a software developer to the last two it's mind-boggling how many things that seemed foundational, or: institutional, in the life of a software developer from, say, 2008 to 2022 are now anything but that:

      GitHub and open source contributions (maintainers are closing down pull requests; who cares about their GitHub contribution graph anymore? When was the last person hired due to their open source contributions?), StackOverflow (you just said "ahh, right, StackOverflow", didn't you?), O'Reilly books, FANG as the hottest place to work, 2-week sprints (2 weeks, man! You know how long that is now?), TDD (I wrote books that use TDD! I loved TDD! And yet at some point in the last 2 years I wrote my last test by hand), text editors (man, I had heated arguments about text editors; I worked on a text editor; I was close to getting Vim tattooed on my body at some point), …

      It's like Lenin said: "There are decades where nothing happens; and there are weeks where decades happen."

      • My Laracon talk now on YouTube: How I Prompt. What an intro from Aaron. I swear I didn't pay him to say all of that.

      • I love this idea for a Greasemonkey 2.0: "Modern coding agent + browser use + a custom personal extension that allows you easily modify your most frequently visited sites. Have extension track which sites you visit and then coding agent proactively suggests modifications to make sites less distracting / more efficient." I just checked, though: 2.0 was released in 2014, so this will need to be called Jellymonkey 1.0.

      • This is the best and most beautiful and most inspiring and most thought-provoking and humbling thing I've read this week: Canon. There are many great things in this post, but here's one special snowflake of a paragraph that I want to present to you: "Cant is a language designed to be frustrating in enlightening ways. A reasonable objection might be that it will teach bad coding habits. But from my own childhood experience, what it will actually teach is why the good habits are good and how the layers of abstraction and expressibility get built one on top of another."

      • Stripe acquired OpenRouter for $7.5 billion and the letter to investors leaked. What writing! You can tell it's the Collisons: "Stripe is, of course, a private company today. We view this as a growing advantage as we venture into the vicissitudes of the singularity. The world is becoming harder to predict and we expect that deft helmsmanship will be required of every company. We're fortunate to have a corporate structure that helps us steer the right long-term course."

      • On that acquisition, I found this post by Martin Casado interesting (even though, of course, when you read his "what a time to be alive!" chant at the end and know that he invested in Cursor and OpenRouter, it's hard not to go "yeah, I bet, mate"): "AI has given us two modern miracles. The first one everyone knows, which is that we can turn electricity into intelligence. But the second one is more subtle but equally miraculous. It's that we now have intelligence as a universal medium of exchange, in the form of tokens." Tokens as an exchange medium is very interesting.

      • The Vicent Marti post on the history of scaling Git is as good as everyone says it is: Git at any scale.

      • A lot of people are shitting on GitHub for their outages but, dude, look at the numbers: 2.9 billion commits per month, 24 million new repos. "Since April, monthly commits have grown from 1.4 billion to 2.9 billion." Since April! "We have since added more than 3 million CPU cores, 120 petabytes of high-speed storage". Hot damn.

      • Thomas Dullien / Halvar Flake: Three important steps in my maturation process. The whole thing is very good and I feel bad about highlighting one of the three steps here, but, well, this bit here was very neat: "The monocausal determinism that young computer enthusiasts get used to is an illusion that generations of electrical and process engineers spent their lives perfecting and maintaining. It is because of these engineers that computer scientists could largely get away without probabilities or any empirical grounding in the past. There is an argument that you have so many natural scientists that crossed over into AI because CS education was for a long time too focused on reasoning within the deterministic monocausal illusion."

      • I need someone to explain the Nvidia & Poolside deal to me.

      • Thought-provoking, nearly sci-fi level stuff on emergency alerts: And then the men with guns tell you to do it anyway.

      • Someone tweeted a photo of a handout that David Foster Wallace gave to his students in 2002 in his Advanced Fiction class and I loved it so much that I threw the photo into Amp and had it build a nice HTML version for me that I can reference: Your Liberal-Arts $ at Work. The punctuation in dialogue is fascinating. Not only because it just seems like arbitrary rules, but also because it's completely different in German writing, or French.

      • David Senra interviewed Travis Kalanick. Listened to the whole thing and still don't know what to think of Kalanick. There's some good entrepreneur porn in there ("I can take more pain than the other guy") and Kalanick obviously loves big statements and big visions and big numbers, but I found some half-sentences here and there surprisingly nuanced and interesting. And how he thinks about "work" vs. "management capacity" matches what I think we're seeing with AI now: you still need humans, you still need to hire humans, because, yes, the AI can do the work, but you only have so much management capacity to manage that work.

      • Derek Sivers is "building my dream house without predicting - by living in a bare cabin in the woods, then adding only what I find I actually need." Here's my bet: there are at least (!) six paragraphs in there that will make you go "wait, what", each one with more incredulity than the last. But then at the end, you think: what a guy, I'm glad he's out there and doing this and writing about it.

      • People of ACM - Russ Cox. "Ousterhout introduces the term 'tactical tornado' for a programmer who churns out tons of working but overly complex code that doesn't fit well into the existing system. Worse, a bad manager often sees a tactical tornado as the most productive programmer on a team, failing to recognize the complexity and code debt left behind for the rest of the team to clean up. If we aren't careful managers, AI agents can easily become the ultimate tactical tornadoes."

      • Really, really enjoyed this Invest Like The Best episode with Ben Thompson. Listening to Thompson speculate on token prices and talk about depreciation of GPUs makes me happy.

      • Do this for me: open the Bun 1.4 release notes but before you do anything I want you to look at the scroll bar. Yes, that's a single release. I bet that whole post is AI-generated, but that's also probably the whole point of this post.

      • Same: I'm becoming AI-blind. We've had Amp post messages into our Slack when something went wrong or when something was shipped and it took just a couple of days for everyone to glaze over them. Disabled it right after someone mentioned it.

      • Very good: Responsibility Is Taken Before It Is Given.

      • Dan Luu: There's no reason for software to be slow anymore. That's right. As I was saying: if you have more bugs due to AI now, that's on you, not the AI. Dan also quotes Marc Brooker who talked about "workload-specific optimizations", i.e. optimizations of a program for a particular customer and workflow, and, man , right! AI and agents could be super compilers!

      • Gabriel Valdivia's beautiful personal timeline. Go and open this in a desktop browser, hover over the age in the top right corner, and then slide left and right.

      Hey, we're nearly there: 1 million subscribers. You could be the one that gets us over the line:

    7. đź”— smol-machines/smolvm smolvm v1.10.0 release

      What's Changed

      • Remote volumes: mount S3 and any rclone remote with the volume flag by @BinSquare in #986
      • Rebuild the Windows krun.dll so machines boot on WHP again by @BinSquare in #1025
      • Resume and bound-retry a broken blob download so a stalled registry cannot hang a machine create indefinitely by @BinSquare in #1026
      • Bump libkrunfw to the guest kernel with IPv4/IPv6 policy routing so TUN-based VPN and proxy clients work by @BinSquare in #1024
      • Bump libkrun so Windows 10 hosts can start machines and aarch64 fork rollback keeps the golden alive by @BinSquare in #1028
      • Gate the guest's IPv6 on real host reachability and default its resolver to IPv4-first by @BinSquare in #1023

      Full Changelog : v1.9.2...v1.10.0

    8. đź”— r/LocalLLaMA Qwen 3.8 27B is a game changer. rss

      Our devs got their hands on it a few days ago. One wired it into Codex to compare with GPT Luna, our usual workhorse right now for its cost effectiveness. Another tried it out on one of our OCR pipelines.

      It's comparable to Luna for coding and OCR quality appears to be better than Gemini 3.5 Flash Lite. That's huge. We pay a ton of money for OCR.

      This is the first local model that feels like more than a toy. It's truly as capable as the frontier models from a year ago. For the first time ever there's serious discussions about buying our own hardware. With estimates that such an effort would pay for itself in less than 2 months.

      Hyper scalars are in big trouble this time. Their whole "moat" is buying up all the hardware. And thanks to sanctions on China we're seeing the quality of small local models skyrocket. As someone who's been around a while, this feels like an "IBM moment". Where the industry assumed that databases would always run on huge mainframes. Only to be wiped out by cheaper local solutions a few years later.

      I have a feeling this release will trigger another Llama style open source Renaissance. We're already getting better quants. Inference will be further improved. We might even see a comparable MoE with 500+ Tok/sec on consumer hardware soon.

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

    9. 🔗 r/LocalLLaMA “The All Spark” Cluster: Upgrading from 16 - 36 DGX Sparks rss

      “The All Spark” Cluster: Upgrading from 16 - 36 DGX Sparks | Earlier this year I posted about building what at the time I believe was the first 16x DGX Spark Cluster.
      I’m now adding 20 more Sparks to the cluster in my homelab server rack, giving me 4.6TB of unified memory. • 36x Sparks • 1x 200Gbps FS 24 x 200Gb QSFP56 + 8x 400Gb Switch • 24x QSFP56 DAC cables • 6x 400gb to 2x 200gb breakout cables Over the last 4+ months i’ve been running nearly every notable model that’s landed. The cluster however isn’t just being used to serve single inference points, I’ve split the cluster up to house “inference modules” that get managed into a single persistent agent using a combination of Hermes + a custom memory sidecar system i’ve built. It’s become an agent capability cluster more than just one big inference machine: I’m expanding the cluster to 36 now because I want 16 nodes dedicated to SOTA models such as Kimi K3 while being able to retain enough nodes to perform rerank/embeddings tasks, video generation, Image gen, audio processing etc all simultaneously. Now, you may ask why not just buy 6000 Pros, or B200s or even a B300 and the answer comes down to a few reasons. 1) This server rack will also have 2 6000 pro systems (a 4x Max Q low power build + an 8x enterprise server) which replace my H100s and GH200 I had earlier in the year. 2) B200/B300 for a homelab create substantial cooling and energy problems than even this currently absurd homelab and a big point of this build is to be completely sovereign with zero datacenter or third party storage reliance. 3) Sparks in my view are still the greatest value for scalable unified memory you can get. When M5 Ultras come out I think adding Mac Studios and investing in figuring out disaggregated inference will be a massive win. 4) Sparks + 6000 Pros give massive flexibility for configuration, power optimization and relatively easier liquidity access when I want to offload and upgrade to something new submitted by /u/Kurcide
      [link] [comments]
      ---|---

    10. đź”— Ampcode News Friendly URLs for Sharing Orbs rss

      We use orb portals all the time to share what we're builing and get feedback.

      But the URLs were ugly and auto-generated. So, we made them nice and friendly. Now, instead of sharing t-01a0095e-9568-whatever-p1234.onamp.dev, you can share foo--yourname.onamp.dev or even use your own domain like park.mixfox.org (which is on an orb, basically).

      Sharing an orb portal in Slack with a rich preview and an Open Portal button

      This is especially nice when a portal is a long-lived application, not just a preview of changes to your local dev server. And that's increasingly how teams are using portals.

      Click the in the Portal tab to set the hostname, or ask Amp to do it for you in an orb. You can set up a personal custom domain or a workspace custom domain, or just customize the hostname prefix before --yourname.onamp.dev.

      The Portal Hostname dialog with a friendly onamp.dev hostname

  3. August 22, 2026
    1. đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-22 rss

      IDA Plugin Updates on 2026-08-22

      Activity:

      • REToolSync
        • f74fa218: Add some error logging and fix websocket shutdown
      • twdll
        • 1ca38ad6: fix(core): ensure luaopen_twdll idempotency via registry caching and …
        • aef7cdb7: refactor(attila): introduce typed TW_VectorNcc and TW_OneToOneLink te…
        • e639862f: refactor(world): resolve max units limits via campaign model initiali…
        • 70e5cb85: refactor(world): manage character max traits limit via engine tweaker…
        • 54fcf456: refactor(attila): resolve refresh_settlements_display via tweaker reg…
        • 3ef93ba6: refactor(core): remove obsolete offset_tag and raw-offset Getter cons…
        • 3bf93c8f: refactor(attila): structure political parties hash map with typed buc…
        • f012ff0f: refactor(attila): clean up reverse engineering notes, standardize com…
        • f22cc342: refactor(attila): clean up reverse engineering comments from engine h…
        • f3d038aa: feat(tweakers): implement engine tweakers and campaign variable routing
        • ee129ba1: refactor(attila): model engine tweaker with typed TW_Tweaker struct
        • 5a0f0543: fix(character): use native string assignment operators in name setters
        • fff36d3a: refactor(attila): standardize includes, remove diagnostic scaffolding…
        • 29643fb0: fix(test): use native save/load persistence for reload check and fix …
        • 468fc97d: feat(test): add automated multiplayer smoke test suite and dual-insta…
        • 535fee7e: tests: remove previously added usless test
    2. đź”— smol-machines/smolvm smolvm v1.9.3 release

      What's Changed

      • Remote volumes: mount S3 and any rclone remote with the volume flag by @BinSquare in #986
      • Rebuild the Windows krun.dll so machines boot on WHP again by @BinSquare in #1025
      • Resume and bound-retry a broken blob download so a stalled registry cannot hang a machine create indefinitely by @BinSquare in #1026

      Full Changelog : v1.9.2...v1.9.3

    3. đź”— HexRaysSA/plugin-repository commits sync repo: +2 releases, -1 release rss
      sync repo: +2 releases, -1 release
      
      ## New releases
      - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.7.0
      - [ida-rpc](https://github.com/bkerler/ida_rpc): 0.1.9
      
      ## Changes
      - [BinSync](https://github.com/binsync/binsync):
        - removed version(s): 5.11.2
      
    4. đź”— Armin Ronacher Fast and Hard Code rss

      One of the memes on Twitter is that "programming is solved now." I'm not sure to what degree it is, but one thing is pretty clear: the act of familiarizing yourself with a language no longer matters and some of the friction that mattered for humans does not matter for agents.

      As a result, LLMs make language choice much less consequential than it used to be. If you don't like the choice, you can seemingly rewrite it in another language and you can make it pick a language that you, as a programmer, are entirely unfamiliar with.

      Which in turn means that people can, and do, choose based on the marketing of languages much more. As a long-term Rust programmer I found it quite fascinating to see people now ship Rust code who previously might not have chosen it. I attribute at least one part of this to two recent vibe shifts: there is a lot more talk about wanting fast software, and about LLMs being exceptional at optimizing code without regressing behavior.

      Folks like Mitchell Hashimoto, Charlie Marsh, Jarred Sumner, Daniel Lemire and quite a few others always carried a certain level of obsession with fast and performant software and they also all happen to be receptive to agents writing code. Maybe as a result, or unrelated others are now joining in. That's because with things like autoresearch you don't even necessarily need to know all the tricks: you just need to put an agent on it — though knowledge greatly helps!

      If you look around, there are plenty of projects that want to be fast and small, and they increasingly pick "hard languages". And it's not just Rust that is benefiting. Even Zig — despite the fact that the creators and parts of the core community are pretty negative on the whole AI thing — is too. For instance Cloudflare's new Artifacts service uses a pure-Zig Git-protocol engine, compiled to a roughly 100 KB WebAssembly module and Vercel released fx, a Zig coding agent advertised to be small and fast. From what I can tell, all these projects are largely LLM- assisted.

      But it's not just people picking less common languages but also that they are increasingly working with "much harder" technologies. All of a sudden I have seen people do some really impressive stuff with DWARF files, eBPF, custom network drivers, custom crypto and really old computing hardware. Many of these things were previously off-limits for lots of developers. In some cases (eg: crypto) you were even pushed away because those things were intentionally gatekept by the people in the know.

      So maybe the world will have more slop, but it might also have more developers in it, that want things to be fast and small.

  4. August 21, 2026
    1. đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-21 rss

      IDA Plugin Updates on 2026-08-21

      New Releases:

      Activity:

      • augur
        • c7ddc53d: Merge pull request #6 from 0xdea/dependabot/github_actions/actions-de…
        • 0d1d6814: ci: bump taiki-e/install-action in the actions-dependencies group
      • binsync
      • disrobe
        • e1558315: python: republish the four bands whose figures were measured before t…
        • db3303a6: flutter: surface a class whose metadata the precompiler dropped by it…
        • b7ab8223: xtask: refuse a published figure that cites its constant by line number
        • d4f15ec3: data: cite the constant a published figure rests on by name rather th…
        • b4d0aa7b: python: correct the prose that still cited the rounded pinned-corpus …
        • 6f86b5de: js: grade the high preset route by what it decodes rather than what i…
        • be87d514: js: grade every control fixture for string-array recovery and drop th…
        • 719763e5: js: grade obfuscator.io detection on every control fixture instead of…
        • 0fcb0c7f: flutter: stop deriving a dart nullability suffix from a flag field th…
        • 2f1b8f46: flutter: pin the pool entry index against its byte offset on every co…
        • 912cc90c: js: derive the differential token set from the authored program and f…
        • b3b0976a: xtask: grade the denominator scan floor the same way the skip census …
        • c6163050: xtask: grade the census scan floor instead of trusting it to fire
        • e6244a56: xtask: raise the vacuity floor both censuses guard themselves with
        • 64bee502: workflows: provision the exact cpython releases the band figures were…
        • d7ab6141: js: grade the clean-token differential over all twenty tracked obfusc…
        • 986c7544: python: resolve and assert the patch release each band is pinned to
        • a6b90fc3: python: publish the pinned-corpus rate as the truncation its own coun…
        • 5b04f1ff: native: bound a resolved branch target to its code section and grade …
        • 5e1d4b46: jvm: bind the published body figure to the methods that declare a cod…
      • haruspex
        • 37f80f46: Merge pull request #9 from 0xdea/dependabot/github_actions/actions-de…
        • 1e3a6290: ci: bump taiki-e/install-action in the actions-dependencies group
      • ida-nexus
        • a844c20a: Fix omp install instructions
      • ida_rpc
        • 68ca0f87: Update deprecated functions, improve ui handling
      • Luc-Nhan
        • e4f90e8f: fix(agent): wrap untrusted prompt streams and sync hallucinated-API c…
        • 6ba056c9: refactor(agent): remove dead prompt code and fix dangling _parse_plan
        • 2da345e4: chore(test): replace pytest.raises with try/except in test_workspace_…
        • 67b36438: fix(verifier): match func/string/global addresses in hypothesis prompt
        • e6a8c589: fix(providers): tolerate GLM model_override on effort-mismatch
        • 32ffadd8: fix(schema): gate legacy verified=True records from /report
        • c2b38ca1: fix(agent): restore mode-runner imports and cache GLM config
        • 9d1cd91b: fix(memory): handle portalocker 3.x LockException rename
        • 0dddc177: Add support to a lot of things
        • f6143d25: Point installers at EliteClassRoom/rikugan (master branch)
      • rhabdomancer
        • f4beceb8: Merge pull request #8 from 0xdea/dependabot/github_actions/actions-de…
        • bf7d07be: ci: bump taiki-e/install-action in the actions-dependencies group
      • twdll
        • 6e3292d9: feat(attila): add tw-tdd target for the dawnless days campaign
        • 006ce7aa: feat(test): add tw-test-keep-nosavereload target to skip save and loa…
        • 180ed1cb: docs(faction): enhance GetTechnologyStatus and SetTechnologyStatus LD…
        • cfe155a5: docs(faction): document technology save/load persistence notice and a…
        • e01e52c9: feat(faction): implement GetTechnologyStatus and SetTechnologyStatus …
        • 5333fb5c: feat(world): add game save, load, and exit lifecycle api
        • edf3073e: feat(world): implement automatic engine state rollback on detach and …
        • 31ca5355: refactor(cai,model): resolve make_occupation_decision via signature a…
        • 0f4383d4: refactor(core): eliminate raw pointer arithmetic, inline RVAs, and ru…
    2. đź”— PrimeIntellect-ai/prime-agent Beta (v0.8.0-beta.543.1.e319a66) release

      Automated beta build from main (e319a66d7351c75abe7f040d02d9a8d6e25028e9).

    3. đź”— smol-machines/smolvm smolvm v1.9.2 release

      What's Changed

      • Relocate libkrun.dylib's Homebrew dylib references to @loader_path so macOS packed launchers boot by @BinSquare in #1013
      • Point the install.sh sync note at the real website path so the website copy is kept in sync by @BinSquare in #1017
      • Widen the read window for the whole flatten so a large pack does not fail with a spurious EAGAIN by @Bnjoroge1 in #957
      • Name machine options that were written after -- instead of silently ignoring them by @Bnjoroge1 in #958
      • Skip the /workspace fallback for volumes mounted below it, not only at it by @NickyHeC in #1005
      • Support automatic CUDA replay and distributed multi-GPU execution by @BinSquare in #998
      • Use as_chunks instead of chunks_exact with a constant size in the gpu_loopback example so clippy passes by @BinSquare in #1019
      • Reject unknown fields on the exec and run API so a mis-cased safety field can't be silently dropped, and clarify that --storage bounds the writable disk by @BinSquare in #1018
      • Grow an existing storage/overlay disk to the requested size instead of booting the stale one by @Bnjoroge1 in #956
      • Bump libkrun to the build with aarch64-KVM snapshot and fork support so machine fork works on Linux aarch64 by @BinSquare in #1021
      • Stage archive-flatten scratch on the storage disk instead of the guest tmpfs by @BinSquare in #1014
      • Bump the workspace to 1.9.2 by @BinSquare in #1022

      Full Changelog : v1.9.1...v1.9.2

    4. đź”— PrimeIntellect-ai/prime-agent v0.8.0 release
      • Fixed an OAuth login that finishes after its server was retargeted arming the old-endpoint token against the new URL: credentials are endpoint-bound at issuance, and the host and kernel only use a token bound to the configured endpoint. Breaking : generic MCP OAuth credentials stored before this release lack the binding and require one /mcp login <server>.
      • Fixed mcp add keeping a stored mcp:<name> credential when the entry was new: any add now drops the name's credential, so tokens for authored non-catalog skills (e.g. slack) cannot replay to a user-configured URL.
      • Fixed kernel MCP shutdown budgets exceeding the host's kill deadline; graceful close now finishes inside it, and a kernel that exits without a shutdown_reply no longer stalls shutdown for the full deadline.
      • Fixed a shutdown race that could leave an MCP server process running after its generation was dropped from the registry.
      • Fixed the kernel MCP regression test and the Python runtime tests not running in CI.
      • Fixed first IPython calls after an upgrade failing with a raw "Operation was not possible or timed out": kernel startup now tolerates cold venv boots (30s budget; crashes still fail fast via the exit handler), and zmq socket-teardown rejections surface as actionable retriable kernel errors.
      • Fixed headless completion reporting a clean finish when a post-compaction continuation failed to start: ACP and print-mode idle waiters now see the failure, while interactive idle behavior is unchanged.
      • Added a pre-imported generic MCP API and shell/TUI commands to manage persistent Streamable HTTP and stdio servers in user settings.
      • Breaking : removed the documented catalog-name override — an mcpServers entry named after a built-in integration (e.g. linear) no longer repoints the built-in at a custom url/bearerTokenEnvVar; it now disables the built-in skill and is not served by the generic runtime. Rename the entry (e.g. linear-proxy) to keep using a custom endpoint via the generic API. This closes a credential-replay surface where name-keyed tokens could be sent to an override URL.
      • Fixed agents overlooking enabled generic MCP connections by advertising their names and pre-imported mcp API usage in the system prompt.
      • Fixed /mcp management feedback disappearing during resource reload and limited server details in TUI output to names and transports.
      • Fixed credentials configured as env var names resolving to the literal variable name when the variable is set but empty; an empty env var now reports a missing credential (#1468).
      • Fixed ACP rejecting an immediate follow-up prompt when injected work restarted the session; follow-ups now queue behind in-flight work, and cancellation drops queued follow-ups before they start.
      • Added correlated ACP terminal-quiescence metadata, resident session settlement, and fail-closed daemon input fencing; prevented recovery state from persisting runtime credentials or model configuration.
      • Fixed explicit RLM child deletion leaving hidden unsettled work after runtime teardown, including reporting cleanup failures and notifying the parent when deletion completes.
      • Added changelog fragments (packages/<pkg>/.changes/*.md) with a CI check and release-time aggregation, eliminating [Unreleased] merge conflicts.
      • Fixed the queued-message browse controls (Option+Up) rendering in the same style as typed prompt text inside the input box; the header is now dimmed like other hints so it cannot be mistaken for part of the prompt.
      • Fixed IPython kernels and forkserver processes outliving their owner after a hard crash: kernels now arm ipykernel's parent-death poller via JPY_PARENT_PID, the forkserver watches its parent pid, and both pids are registered in the orphan process journal for supervisor recovery.
      • Fixed a pid-reuse race for forked IPython kernels: signaling and liveness now go through the forkserver (the kernels' parent) instead of raw pid operations from Node, and the orphan journal's inactive record is only written on a confirmed kill outcome.
      • Added session-scoped ACP MCP servers through the kernel MCP program API (#1378 by @hallerite).
      • Changed the subagents summary under the prompt into a bordered agents tile with color-coded running/idle/inactive counts and a right-aligned open hint.
      • Enabled /fast with OpenAI API-key authentication for GPT-5.4/GPT-5.5/GPT-5.6 and updated the unavailable message (#1595).
      • Fixed /goal re-prompting a parent that had correctly delegated to subagents and ended its turn: the continuation now waits until descendant work settles, then resumes automatically.
      • Changed post-compaction continuation error classification to typed AgentContinueError codes instead of matching error message text.
      • Fixed the working-status elapsed timer (e.g. "Waiting · 5s") restarting at 0s after leaving and re-entering a session or re-attaching to it; the timer is now anchored to the in-flight turn's user message and keeps counting.
      • Added a session_before_refine extension hook: extensions can replace /refine and auto-refine planning with their own proposal (for example using a cheaper model — see examples/extensions/custom-refinement.ts) or skip a refinement round; rollbacks bypass the hook and extension edits go through the normal apply-time validation. Also documents refine_complete.
      • Added a durable [refinement] transcript message after each refinement showing the applied harness edits (expandable to exact before/after diffs via the shared tool-output toggle), and a live loader while a user-issued /refine runs.
      • Fixed the Agents View heartbeat refresh failing entirely ("Cannot list heartbeats while session worker is failed") when any resident worker was terminally failed: failed workers are now excluded from the global catalog while recovering and disconnected workers still fail closed.
      • Refreshed MCP providers immediately after server changes so OAuth connections can be started without restarting Prime Agent.
    5. đź”— r/LocalLLaMA Qwen3.8-27B Q6 is a beast at agentic coding rss

      Qwen3.8-27B Q6 is a beast at agentic coding |

      [UPDATE 08/22/2026]

      Hey everyone! Unfortunately, I can't reply to everyone, so I'm going to prepare a video and give you all the details for optimizing llama.cpp with my two GPUs. Once I finish a few personal projects, you'll have a practical and straightforward guide within 24 hours!

      --- Quick update after intensive testing: nearly 20 hours of continuous and targeted work with Qwen3.8-27B Q6, running on an RTX 3090 and an RTX 3060. The speed remained around 60 to 63 tokens/s throughout the session. submitted by /u/Ok_Ninja7526
      [link] [comments]
      ---|---

    6. đź”— backnotprop/plannotator v0.27.6 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.27.5 | Annotate your running app, Agent TUI placement, collapsed lockfiles, VS Code theme fix, Pi fixes
      v0.27.4 | Portable Guided Review exports, guides.show share links, guide CLI, favicon switcher, jj Call Flow
      v0.27.3 | Folder watcher freeze fix on large repos, first SBOM-attested release pipeline
      v0.27.2 | Mobile plan and code review, Codex CLI 0.147 fix, folder annotate cold-start, configurable markdown extensions
      v0.27.1 | Open-in-editor launch fix, file headers respect Viewed/Git-add visibility toggles
      v0.27.0 | Call Flow analysis, --tailscale remote reviews, review panel remembers your view, Pi rebuild (breaking command rename), focus-mode shortcut
      v0.26.8 | Placed comment markers on HTML pages, shift-click multi-select, live app annotation
      v0.26.7 | Pinpoint targets any element on HTML pages, smarter hover labels, zero-scan hit testing
      v0.26.6 | Fixed empty environment variables in sandboxed sessions (Bun 1.3.14 builds)
      v0.26.5 | HTML pinpoint element annotations, durable annotate submissions, installer fallback for old git, vim HUD cursor fix
      v0.26.4 | Skill-menu hover jitter fix (same-day patch on v0.26.3)
      v0.26.3 | Skill references in comments with / or $, reachable remote session URLs, worktree switcher tooltips

      What's New in v0.27.6

      You can now annotate your running app. Point plannotator annotate at a localhost URL and the actual application opens inside the annotate UI: click any element to comment on it, press Esc to use the app normally, and send it all back to your agent. This works on Claude Code and Pi. The release also brings configurable Agent TUI placement, collapsed lockfiles in code review, and a wave of fixes across Pi, VS Code, and the annotation surface. Nineteen PRs, three from first-time contributors.

      Note: v0.27.6 is v0.27.5 plus same-day Pi support for live app annotation; these notes cover both.

      Annotate your running app

      plannotator annotate http://localhost:5173 no longer converts the page to a snapshot. A per-session loopback proxy mirrors your dev server and opens the real, running app inside the annotate UI, hot reload and SPA navigation included. Click any element to pin a comment on it, shift-click to join more elements into the same comment, and use placed numbered markers to track everything. --static forces the old conversion; --app forces live mode and fails loudly if the server is not reachable.

      The security boundary is deliberate: the proxy binds loopback only, validates the Host header before touching your app, authenticates every message between the page and the editor with a per-session token, and refuses to run at all in remote or tailnet-published sessions (use --static there). Live sessions write no session content to disk beyond your annotation draft, which is keyed per target app.

      Pi users get the same feature. The proxy's decision logic (injection, host validation, security gates, redirect handling) lives in one shared core used by both server runtimes, and the Pi extension ships its own Node transport with every security guard test-covered, including working hot reload through the proxied WebSocket. /plannotator-annotate http://localhost:5173 on Pi opens the live app.

      One behavior change to know: under PLANNOTATOR_REMOTE, annotating a localhost URL previously converted the page silently. It now exits with a clear message asking for --static, because silently converting when you asked for the live app hides what you are actually reviewing.

      This closes the oldest open feature request in the tracker. Thanks @JulianS- Uni for the original ask in #642, and @notxcain, who saw this feature early and built the first working take on a preview proxy in #1049 before we landed a from-scratch implementation.

      One interaction model for HTML and live pages

      HTML and live-app annotate sessions now open with annotation armed: hover outlines what you are pointing at, a click opens the comment composer. Press Esc and you are in interact mode, where clicks, forms, and navigation reach the page itself. The pen button in the header (or Mod+Shift+A) re-arms annotation, text selection comments work in both modes, and the eye button hides every floating control when you just want to read. These surfaces are comment-only now: the markup-delete and label tools were markdown concepts that never fit pages, and removing them made the whole flow simpler. On phones and tablets the same controls live in the Options menu.

      This also fixes the class of bug where a JS-driven page could not be used at all during annotation, reported by @Chrysweel in #1360 for slide decks.

      Put the Agent TUI where you want it

      The annotate-mode agent terminal can now dock Left or Right, or stay Hidden until you ask for it. The preference persists in ~/.plannotator/config.json, and the terminal's Position control lives in its Display popover with a matching entry in Settings. A bug fix rides along: entering wide mode used to unmount the terminal and kill a running agent session; it now stays alive in the background.

      Lockfiles stop burying your review

      Generated files (lockfiles, minified bundles, source maps, and anything marked linguist-generated in .gitattributes) now start collapsed in the all-files review view, the way GitHub treats them. The patch itself is never filtered; a visible notice shows what was collapsed and one click expands any of it.

      Your VS Code theme choice wins

      The VS Code extension used to force the IDE's colors onto the panel, so choosing Plannotator's light theme in a dark IDE gave you a broken mix. Now your chosen theme always wins and only the System setting follows the IDE, with a one-time migration so panels upgraded from older versions follow a light IDE again instead of being stuck on an auto-seeded dark.

      Pi fixes

      Three fixes for the Pi extension. thinking: "max" in phase config is accepted now (the whitelist predated Pi adding the level) and unrecognized values warn instead of vanishing, closing #1304 reported by @edision. Hosts that do not expose Pi's project- trust capability get an honest warning instead of being told to update Pi, closing #1353 reported by @materemias from OMP. And turning plan mode off can no longer leave stale planning instructions steering the session, closing #1320 reported by @nwhitley-trAIner.

      Additional Changes

      • Shift+1-4 switches annotation mode from the keyboard, and the shortcuts yield when you are typing into the comment toolbar. #1244 by @galmadar
      • The review annotation toolbar stays on screen when the sidebar is closed, clamped exactly to the viewport. #1354 by @unexge
      • Concurrent settings writes no longer lose changes : config saves take a bounded advisory lock, and two server processes sharing a data dir both land their writes. Part of #1364
      • guides.show touches : two real example guides linked on the landing page, a "Made with Plannotator" link in the viewer header, and a footer credit to diffs.com. #1339, #1340, #1342, #1347
      • Docs caught up with the code : the annotate command page covers live apps, and the config reference documents the new Agent TUI settings. #1361
      • Security scanning : guides.show share links are allowlisted in gitleaks so encrypted share URLs stop tripping secret scanning. #1343

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: Run /plugin in Claude Code, find plannotator , and click "Update now".

      Pi: Update @plannotator/pi-extension to 0.27.6 and restart Pi.

      OpenCode: Clear cache and restart:

      rm -rf ~/.bun/install/cache/@plannotator
      

      What's Changed

      • guides-show: drop the @ redirect on the 2x screenshot, credit diffs.com in the footer by @backnotprop in #1339
      • guides-show: "Made with Plannotator" link in the viewer header by @backnotprop in #1340
      • guides-show: link two real example guides under the screenshot by @backnotprop in #1342
      • ci(security): allowlist guides.show share links in gitleaks by @backnotprop in #1343
      • feat(review): collapse generated files by default in the all-files view by @backnotprop in #1346
      • guides-show: landing copy fix by @backnotprop in #1347
      • fix(pi): countermand stale plan-mode instructions on toggle-off by @backnotprop in #1348
      • feat(ui): Shift+1-4 shortcuts to switch annotation mode by @galmadar in #1244
      • feat(annotate): live local app annotation through a loopback reverse proxy by @backnotprop in #1352
      • fix(review): clamp annotation toolbar to viewport by @unexge in #1354
      • fix(pi): accept Pi's full thinking-level range and warn on unknown values by @backnotprop in #1356
      • fix(vscode): user-chosen theme wins over IDE theme sync by @backnotprop in #1357
      • fix(pi): honest capability warning when the host lacks ctx.isProjectTrusted by @backnotprop in #1355
      • feat(annotate): configurable Agent TUI placement with durable config and Hidden state by @leoreisdias in #1050
      • docs: align AGENTS.md and public docs with the v0.27.5 behavior by @backnotprop in #1361
      • fix(vscode): migrate the legacy auto-seeded dark theme cookie to system by @backnotprop in #1362
      • fix(annotate): armed-mode interaction fixes from the v0.27.5 QA gate by @backnotprop in #1363
      • fix(server): live-proxy injection and config write hardening by @backnotprop in #1364
      • feat(pi): live local app annotation through a shared proxy core and Node transport by @backnotprop in #1366

      New Contributors

      Contributors

      Three first-time contributors landed code in this release. @leoreisdias built the Agent TUI placement feature, and it arrived alongside a stack of other PRs from them that are working through review; more of that work lands soon. @galmadar added the Shift+1-4 annotation mode shortcuts. @unexge fixed the review toolbar drifting off screen, with before/after recordings that made the review easy.

      @notxcain gets a special mention: their PR #1049 was the first working take on live localhost annotation, months before this release shipped it. We missed the PR at the time, which was our failure, not theirs.

      Community reports that shaped this release:

      Full Changelog : v0.27.4...v0.27.6

    7. đź”— backnotprop/plannotator v0.27.5 release

      Follow @plannotator on X for updates

      Missed recent releases? Release | Highlights
      ---|---
      v0.27.4 | Portable Guided Review exports, guides.show share links, guide CLI, favicon switcher, jj Call Flow
      v0.27.3 | Folder watcher freeze fix on large repos, first SBOM-attested release pipeline
      v0.27.2 | Mobile plan and code review, Codex CLI 0.147 fix, folder annotate cold-start, configurable markdown extensions
      v0.27.1 | Open-in-editor launch fix, file headers respect Viewed/Git-add visibility toggles
      v0.27.0 | Call Flow analysis, --tailscale remote reviews, review panel remembers your view, Pi rebuild (breaking command rename), focus-mode shortcut
      v0.26.8 | Placed comment markers on HTML pages, shift-click multi-select, live app annotation
      v0.26.7 | Pinpoint targets any element on HTML pages, smarter hover labels, zero-scan hit testing
      v0.26.6 | Fixed empty environment variables in sandboxed sessions (Bun 1.3.14 builds)
      v0.26.5 | HTML pinpoint element annotations, durable annotate submissions, installer fallback for old git, vim HUD cursor fix
      v0.26.4 | Skill-menu hover jitter fix (same-day patch on v0.26.3)
      v0.26.3 | Skill references in comments with / or $, reachable remote session URLs, worktree switcher tooltips
      v0.26.2 | Single-file diff tabs render fully, no more silently dropped review files, light/dark theme pairs, palette-matched code blocks

      What's New in v0.27.5

      You can now annotate your running app. Point plannotator annotate at a localhost URL and the actual application opens inside the annotate UI: click any element to comment on it, press Esc to use the app normally, and send it all back to your agent. This release also brings configurable Agent TUI placement, collapsed lockfiles in code review, and a wave of fixes across Pi, VS Code, and the annotation surface. Eighteen PRs, three from first-time contributors.

      Annotate your running app

      plannotator annotate http://localhost:5173 no longer converts the page to a snapshot. A per-session loopback proxy mirrors your dev server and opens the real, running app inside the annotate UI, hot reload and SPA navigation included. Click any element to pin a comment on it, shift-click to join more elements into the same comment, and use placed numbered markers to track everything. --static forces the old conversion; --app forces live mode and fails loudly if the server is not reachable.

      The security boundary is deliberate: the proxy binds loopback only, validates the Host header before touching your app, authenticates every message between the page and the editor with a per-session token, and refuses to run at all in remote or tailnet-published sessions (use --static there). Live sessions write no session content to disk beyond your annotation draft, which is keyed per target app.

      One behavior change to know: under PLANNOTATOR_REMOTE, annotating a localhost URL previously converted the page silently. It now exits with a clear message asking for --static, because silently converting when you asked for the live app hides what you are actually reviewing.

      This closes the oldest open feature request in the tracker. Thanks @JulianS- Uni for the original ask in #642, and @notxcain, who saw this feature early and built the first working take on a preview proxy in #1049 before we landed a from-scratch implementation.

      One interaction model for HTML and live pages

      HTML and live-app annotate sessions now open with annotation armed: hover outlines what you are pointing at, a click opens the comment composer. Press Esc and you are in interact mode, where clicks, forms, and navigation reach the page itself. The pen button in the header (or Mod+Shift+A) re-arms annotation, text selection comments work in both modes, and the eye button hides every floating control when you just want to read. These surfaces are comment-only now: the markup-delete and label tools were markdown concepts that never fit pages, and removing them made the whole flow simpler. On phones and tablets the same controls live in the Options menu.

      This also fixes the class of bug where a JS-driven page could not be used at all during annotation, reported by @Chrysweel in #1360 for slide decks.

      Put the Agent TUI where you want it

      The annotate-mode agent terminal can now dock Left or Right, or stay Hidden until you ask for it. The preference persists in ~/.plannotator/config.json, and the terminal's Position control lives in its Display popover with a matching entry in Settings. A bug fix rides along: entering wide mode used to unmount the terminal and kill a running agent session; it now stays alive in the background.

      Lockfiles stop burying your review

      Generated files (lockfiles, minified bundles, source maps, and anything marked linguist-generated in .gitattributes) now start collapsed in the all-files review view, the way GitHub treats them. The patch itself is never filtered; a visible notice shows what was collapsed and one click expands any of it.

      Your VS Code theme choice wins

      The VS Code extension used to force the IDE's colors onto the panel, so choosing Plannotator's light theme in a dark IDE gave you a broken mix. Now your chosen theme always wins and only the System setting follows the IDE, with a one-time migration so panels upgraded from older versions follow a light IDE again instead of being stuck on an auto-seeded dark.

      Pi fixes

      Three fixes for the Pi extension. thinking: "max" in phase config is accepted now (the whitelist predated Pi adding the level) and unrecognized values warn instead of vanishing, closing #1304 reported by @edision. Hosts that do not expose Pi's project- trust capability get an honest warning instead of being told to update Pi, closing #1353 reported by @materemias from OMP. And turning plan mode off can no longer leave stale planning instructions steering the session, closing #1320 reported by @nwhitley-trAIner.

      Additional Changes

      • Shift+1-4 switches annotation mode from the keyboard, and the shortcuts yield when you are typing into the comment toolbar. #1244 by @galmadar
      • The review annotation toolbar stays on screen when the sidebar is closed, clamped exactly to the viewport. #1354 by @unexge
      • Concurrent settings writes no longer lose changes : config saves take a bounded advisory lock, and two server processes sharing a data dir both land their writes. Part of #1364
      • guides.show touches : two real example guides linked on the landing page, a "Made with Plannotator" link in the viewer header, and a footer credit to diffs.com. #1339, #1340, #1342, #1347
      • Docs caught up with the code : the annotate command page covers live apps, and the config reference documents the new Agent TUI settings. #1361
      • Security scanning : guides.show share links are allowlisted in gitleaks so encrypted share URLs stop tripping secret scanning. #1343

      Install / Update

      macOS / Linux:

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

      Windows:

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

      Claude Code Plugin: Run /plugin in Claude Code, find plannotator , and click "Update now".

      OpenCode: Clear cache and restart:

      rm -rf ~/.bun/install/cache/@plannotator
      

      What's Changed

      • guides-show: drop the @ redirect on the 2x screenshot, credit diffs.com in the footer by @backnotprop in #1339
      • guides-show: "Made with Plannotator" link in the viewer header by @backnotprop in #1340
      • guides-show: link two real example guides under the screenshot by @backnotprop in #1342
      • ci(security): allowlist guides.show share links in gitleaks by @backnotprop in #1343
      • feat(review): collapse generated files by default in the all-files view by @backnotprop in #1346
      • guides-show: landing copy fix by @backnotprop in #1347
      • fix(pi): countermand stale plan-mode instructions on toggle-off by @backnotprop in #1348
      • feat(ui): Shift+1-4 shortcuts to switch annotation mode by @galmadar in #1244
      • feat(annotate): live local app annotation through a loopback reverse proxy by @backnotprop in #1352
      • fix(review): clamp annotation toolbar to viewport by @unexge in #1354
      • fix(pi): accept Pi's full thinking-level range and warn on unknown values by @backnotprop in #1356
      • fix(vscode): user-chosen theme wins over IDE theme sync by @backnotprop in #1357
      • fix(pi): honest capability warning when the host lacks ctx.isProjectTrusted by @backnotprop in #1355
      • feat(annotate): configurable Agent TUI placement with durable config and Hidden state by @leoreisdias in #1050
      • docs: align AGENTS.md and public docs with the v0.27.5 behavior by @backnotprop in #1361
      • fix(vscode): migrate the legacy auto-seeded dark theme cookie to system by @backnotprop in #1362
      • fix(annotate): armed-mode interaction fixes from the v0.27.5 QA gate by @backnotprop in #1363
      • fix(server): live-proxy injection and config write hardening by @backnotprop in #1364

      New Contributors

      Contributors

      Three first-time contributors landed code in this release. @leoreisdias built the Agent TUI placement feature, and it arrived alongside a stack of other PRs from them that are working through review; more of that work lands soon. @galmadar added the Shift+1-4 annotation mode shortcuts. @unexge fixed the review toolbar drifting off screen, with before/after recordings that made the review easy.

      @notxcain gets a special mention: their PR #1049 was the first working take on live localhost annotation, months before this release shipped it. We missed the PR at the time, which was our failure, not theirs.

      Community reports that shaped this release:

      Full Changelog : v0.27.4...v0.27.5

    8. đź”— @binaryninja@infosec.exchange Hopefully you won't need this one very often, but Sidekick 26.1 now has mastodon

      Hopefully you won't need this one very often, but Sidekick 26.1 now has Revert. Sidekick already groups related database changes into transactions. Now you can view those changes as a diff and revert any committed transaction without having to unwind everything that came after it. More here: https://sidekick.binary.ninja/blog/sidekick-26-1-a-proper-home-for- sidekick/#revert-for-when-you-need- it

    9. đź”— smol-machines/smolvm smolvm v1.9.1 release

      What's Changed

      • Use as_chunks instead of chunks_exact with a constant size across the workspace by @BinSquare in #1008
      • Make image pulls work behind a proxy: thread it through the init bake and inherit it from the environment by @BinSquare in #1007
      • Join a keep-alive container for fork-clone exec instead of launching a fresh container each call by @BinSquare in #1009
      • Keep a forkable golden forkable across a config-change VM restart by @BinSquare in #1010
      • Rebuild a damaged imported layer cache from the source artifact instead of trusting the extraction marker by @BinSquare in #994
      • Bump the workspace to 1.9.1 by @BinSquare in #1012

      Full Changelog : v1.9.0...v1.9.1

    10. đź”— r/LocalLLaMA DeepSeek-V4-Flash-Vision-Exp rss

      DeepSeek-V4-Flash-Vision-Exp | submitted by /u/Xhehab_
      [link] [comments]
      ---|---

    11. đź”— Rust Blog Enabling the next-generation trait solver on nightly rss

      After nearly 4 years of active development, the next-generation trait solver is close to stabilization. We are enabling it by default on nightly to surface any remaining issues and plan to stabilize it in the next months. This is the largest single change to the Rust compiler since its initial release. It completely replaces how we prove where-clauses, normalize associated types, and much more. Please try out the latest nightly andopen an issue if you encounter any bugs or regressions.

      This is an internal component of the compiler. The main benefits of this rework will come in the future. The removal of the old implementation will unblock features such as Type Alias Impl Trait and Return Type Notation, allow us to add new implicit default trait bounds (e.g., Move and Forget), and enable us to fix the remaining type system unsoundnesses.

      Even so, this already fixes a huge number of issues. As an underapproximation, we currently know of more than 200 issues on GitHub fixed by this change. This also has a significant impact on compile times; more on that later. When developing on nightly, you may accidentally rely on behavior only supported by the new trait solver.

      This is an incredibly big change which results in a non-trivial amount of breakage. Most of these changes are intended improvements to type inference or the removal of undesirable behavior. We are tracking the known issues and breakage in a pinned GitHub issue.

      What can I do?

      Please update to the latest nightly version by using rustup update nightly and use it to test your existing projects and libraries.

      Please tell us if you encounter any breakage, compile-time performance regression, or bad diagnostics. We have not yet spent too much time on error messages for the next-generation trait solver, so we would also appreciate you using this nightly for development to find poor diagnostics and other bugs in our error handling.

      If you encounter any issue, take a quick look at the pinned GitHub issue to see if the affected crate is already listed, and if not, please open a new issue! To disable the next-generation trait solver on nightly, you can pass -Znext- solver=coherence to rustc, use RUSTFLAGS=-Znext-solver=coherence, or change your project's .cargo/config.toml configuration file:

      [build]
      rustflags = ["-Znext-solver=coherence"]
      

      What exactly does this mean?

      We will go into more detail about the next-generation trait solver, how we got here, and what it changes when fully stabilizing it. This is a quick summary of its main impact.

      impl Trait handling

      The way opaque types — return-position impl Trait (RPIT), but also the unstable Type Alias Impl Trait (TAIT) and Return Type Notation (RTN) — are handled in the type system has nearly completely changed. This fixes a lot of bugs and edge cases with them and should make their behavior a lot more consistent in general. This change is why the next-generation trait solver is necessary to stabilize TAIT and RTN.

      The implementation change mostly does not matter for RPIT as we special-cased impl Trait from the method signature when type checking the method body. This means the only way to observe the old behavior is via recursive function calls. The following snippet errors with the existing implementation, but compiles with -Znext-solver enabled: godbolt

      fn foo(b: bool) -> impl Sized {
          if b {
              // The old implementation errored here.
              foo(false) + 1
          } else {
              0
          }
      }
      

      Associated types in higher-ranked types

      The most impactful change is way we handle associated types referencing bound variables, i.e., lifetimes from a for<'a> binder, for example, the type for<'a> fn(<T as Trait>::Assoc<'a>). While most users don't encounter such types directly, there are widely used crates which do. This change impacts existing code by removing incorrect type inference, such as in bevy and minijinja.

      It also fixes a bunch of unnecessary errors like in the following example: godbolt

      trait OtherTrait {
          type Assoc<'a>;
      }
      impl OtherTrait for u32 {
          type Assoc<'a> = &'a u32;
      }
      
      
      trait Trait {}
      impl<T: OtherTrait> Trait for (T, for<'a> fn(<T as OtherTrait>::Assoc<'a>)) {}
      
      
      fn impls<T: Trait>() {}
      
      fn main() {
          // The old implementation failed to prove
          // the where-bound of `impls`.
          impls::<(u32, for<'a> fn(&'a u32))>();
      }
      

      Compile-time performance

      co-authored with jana :3

      We've spent a lot of time on the compile-time performance of the next- generation trait solver. There have been many cases where it performed quadratically or even exponentially slower than the old solver.

      Especially the last few weeks were mainly spent on improving performance. This work was shared by many people, with major contributions by Nick Nethercote, jana, Rémy Rakic, and mira.

      As part of this effort, Rémy Rakic compared the performance of both implementations for the top 20,000 crates on crates.io. Below you is a visualization of the performance changes over the last two months.

      The performance of 1000 crates (on the x-axis) plotted against their
slowdown factor (logarithmic) on the y-axis. Many crates are around the 1.0
mark (no slowdown), with major outliers at both ends. Colors show
progression over time.

      On the left and the right, the major outliers can be found. Note that the sample of crates here is biased towards such crates, because those are more interesting to us. Nearly all crates we tested in the top 20k had effectively the same performance with both implementations.

      This graph shows that we've mainly focused our efforts on the negative outliers and made significant progress there. While many of the crates that previously took more than twice as long to compile with the new solver are still slightly slower, our work has made a few of them actually compile faster than with the old solver.

      We will continue to improve its performance over the coming months, and there are still a lot of optimization opportunities compared to the existing implementation. My expectation is that, in the long term, nearly all crates will benefit from the next-generation trait solver. I am especially excited about the huge performance benefits for some trait-heavy crates.

      As an example, a Chess implementation in Rust's type system hangs with the old implementation while taking a minute with the new one. There are also more practical crates with huge performance benefits, e.g., the datafusion crate compiles more than 8x faster now. For more details about the recent performance work, see this blog post by jana.


      Again, thank you for testing with the latest nightly and opening a GitHub issue if you encounter any issues! We're excited to fully stabilize the next-generation trait solver soon.

    12. đź”— matklad Rust Glancer rss

      Rust Glancer

      Aug 21, 2026

      Rust Glancer, a functional LSP server for Rust which uses two orders of magnitude less RAM, is incredibly cool. Go check it out! This post started as a comment on lobste.rs, but I figured it out that it’s better to publish it somewhat more prominently. Don’t expect polished writing though!

      Some thoughts:

      rust-analyzer uses rowan for syntax tree representation

      Yeah, rowan is garbage :P I was really thinking about

      • incremental parsing,
      • incremental, DOM-mutation style refactorings,

      And Rowan is pretty good for that. But that’s 1% use case. The 99% use case is all the code in your 6666 dependencies which you won’t ever look at, but which needs to be at least shallowly analyzed. Even for incremental tool whose main goal is refactoring, the primary AST structure should be just a list of arrays. There might be a real post about that at some point, see https://youtu.be/G93oYL1ry70 as a teaser.

      Rust workspaces genuinely have a lot of information that must be indexed: thousands of functions, structures, traits, relationships between these, function bodies and statements in them, etc. Each of these needs to be analyzed and remembered, and you can’t really cheat if you want to have things like “find all references to this structure”.

      If I understand correctly, Rust Glancer wants to process each function body. I think that part can perhaps be made lazy (but not incremental!) with little overhead? Index all items, but, for functions, do only the currently opened file? This might combine some of the better parts of both worlds.

      Would be interesting to compare memory usage with Rust Rover. Net of the IDE GUI itself, I would expect RR to be more compact.

      Some features are unlikely to be supported though, such as build scripts / proc macros support via proc macro invocation

      I might be rationalizing/misremembering things, but IIRC it’s exactly around adding proc macros that the thing began to feel unreasonably bulky. Expanding proc macros is slow as we are running real code, we can’t really do normal IDE cheats. And proc macros generate a lot of code. At one point I measured, it was like 30% of rust-analyzer binary size was attributed to JSON parsing code. If no one sees the code, it can’t harm anybody, right?

      One potential approach here is to pull the Sorbet trick, where you don’t run meta programming at all, and instead have a plugin interface to “explain” the effects of what that would have done. Instead of running serde, we just add a shim that injects imp Serialize for T {} with an empty body.

      I’m not sure why, but in rust-analyzer I’ve observed that when agents edit the code, inlay hints can get out of place

      Rust analyzer’s core data model is very pedantic about always observing consistent snapshots of the code, and does its best to ensure that the language client and server have a shared, strictly serializable view of the world. It’s a shame that LSP doesn’t allow that to be correct , only heuristically right, unlike the older Dart Analyzer protocol, which has sound data synchronization.

      However our implementation of file watching is sketchy! First, there are two backends: we can ask the editor to do watching for us, or we can use server side watching. Try changing this option and see if it helps? But then, yeah, my recollection is that our native watcher’s API was fundamentally racy, and I didn’t do the messy platform-specific work of making it correct.


      But the main thing I want to write, and why I moved from the cozy lobste.rs text area to the luxurious comforts of an Emacs buffer, is that right now rust-analyzer is a bit like that half-drawn horse meme, except that it’s only the head half of the horse.

      One Big Idea of IntelliJ is that its PSI API (essentially AST with resolved types) is really an interface, and there are multiple providers. And in a typical usage, there’re at least three backends in play:

      • For the files opened in the editor, actively modified by the user, the PSI is backed by the concrete syntax trees.
      • For the rest of the project files, the PSI is backed by the so called Stub Tree, a compact on disk representation storing only the “externally visible” parts of the file (so, without function bodies). If the user navigates to a new file, its PSI transparently switches from stubs to syntax tree.
      • For dependencies, the PSI is often backed by the compiled .class files, produced by javac. If you navigate there, the IDE just decompiles stuff for you! Super cool!

      This is how I think such things should work. rust analyzer shouldn’t use salsa for all those 6666 dependencies you still haven’t looked at. It should just use rustc’s .rmeta files, switching to salsa, transparently, only when the user starts messing around their ~/.cargo/registry/src folder.

      The prerequisite for that is defining the abstract API for accessing Rust code. That was always the plan, and we did start on that at some point:

      https://hackmd.io/ytd82QNiT_Ku2XFr1EAtiQ

      rmeta-transparent – source code might not be available for some crates, the API should support pre-compiled rmeta files as inputs.

      But I don’t think that work was ever completed.

      This still seems to me to be the lowest-hanging watermelon here — split the world into arcy-pointy incremental tip of the iceberg, and mostly read-only, on disk, compact, dark, moist breeding ground for supply chain attacks.

      Such glance analyzer architecture would be great, imo!

    13. đź”— New Music Releases Linkin Park - What I've Done - Unshatter Film Soundtrack (Live in SĂŁo Paulo) rss

      Linkin Park - a new release is available:

      • 2026-08-21: What I've Done - Unshatter Film Soundtrack (Live in SĂŁo Paulo) (Single)

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

      Visit muspy for more information.

    14. đź”— Ampcode News Explain Usage rss

      You can now ask Puck about your token, credit, and orb usage.

      Try questions like:

      • Which threads used the most tokens today? Orb time?
      • Which models did I use the most in my 5 most expensive threads today?
      • In my monorepo, based on my latest threads, can I use a smaller orb size or would that make stuff too slow?
      • Is it orbin' time? To the millisecond, how much orbin' time have I had in my threads from the last 3 hours?

      Puck reads your personal usage and per-thread usage to answer these questions for you. Just ask Puck, or click Explain Usage on those pages.

      You can also run amp usage --details and amp threads usage <thread-id> --details to get the data yourself, or to make a cool visualization of your Amp usage in an orb portal.