- ↔
- →
- October 20, 2026
-
🔗 roboflow/supervision supervision-0.31.1 release
v0.31.1 — Recall that matches COCO, boxes that don't overflow
A bug-fix release: recall scores now agree with COCO, and half-precision boxes stop overflowing.
MeanAverageRecallskips crowd regions and matches predictions in confidence order, likepycocotools.- COCO segmentations loaded without an
areafield no longer make mAP return-1. float16boxes keep finite areas, and mAP andwith_nmmstop overflowing on narrow coordinate types.- Mask and halo annotators draw on grayscale scenes, and vertex annotators accept
(x, y, z)points. - Without OpenCV, ellipses and thick circles render like OpenCV 5, and grayscale images save correctly.
Drop-in upgrade, no code changes. mAR values can move: up on COCO data with crowd annotations, and in either direction where confidence order now decides which prediction claims a target.
✨ Spotlights / highlights
Recall that matches COCO
sv.metrics.MeanAverageRecallused to count COCO crowd regions as missed objects and to pair predictions with the highest-IoU target first. It now leaves out targets withdata["iscrowd"]ordata["ignore"]set, the same ruleMeanAveragePrecisionuses. It also matches predictions in descending confidence order with COCO's tie rule, and counts an oriented-box IoU of exactly 0.55, 0.6, 0.8 or 0.85 as a match at that threshold. One target, one crowd target and a perfect prediction now score 1.0 instead of 0.5. (#2750, #2758, #2752)import numpy as np import supervision as sv from supervision.metrics import MeanAverageRecall targets = sv.Detections( xyxy=np.array([[0, 0, 10, 10], [20, 20, 30, 30]], dtype=float), class_id=np.array([0, 0]), data={"iscrowd": np.array([0, 1])}, ) predictions = sv.Detections( xyxy=np.array([[0, 0, 10, 10]], dtype=float), class_id=np.array([0]), confidence=np.array([0.9]), ) MeanAverageRecall().update(predictions, targets).compute().mAR_at_100 # 1.0Half-precision boxes that stay finite
A 256×256 box in
float16has an area of 65,536, which is pastfloat16's maximum, soDetections.box_areareturnedinfand area filters dropped it. Box areas offloat16detections are now computed and returned infloat32, andMeanAveragePrecisionandwith_nmmno longer overflow onfloat16or narrow integer coordinates either. COCO segmentations loaded with masks but without anareafield now get it from the decoded mask, so those targets stay in their size bucket instead of turning mAP into-1. (#2764, #2743, #2753, #2763)import numpy as np import supervision as sv detections = sv.Detections( xyxy=np.array([[0, 0, 256, 256], [0, 0, 0.01, 0.01]], dtype=np.float16) ) detections.box_area # array([6.5536000e+04, 1.0004273e-04], dtype=float32)Grayscale scenes and 3D keypoints in annotators
sv.MaskAnnotatorandsv.HaloAnnotatorraisedValueErroron single- channel images. They now accept(H, W),(H, W, 1)and Pillow"L"scenes, painting the gray value OpenCV would write for the same color.VertexAnnotatorand the vertex-ellipse annotators draw(x, y, z)keypoints from their x and y, where they used to fail on tuple unpacking. (#2755, #2759)import numpy as np import supervision as sv scene = np.zeros((100, 100), dtype=np.uint8) mask = np.zeros((1, 100, 100), dtype=bool) mask[0, 20:60, 20:60] = True detections = sv.Detections( xyxy=np.array([[20, 20, 60, 60]], dtype=float), mask=mask, class_id=np.array([0]) ) sv.MaskAnnotator().annotate(scene.copy(), detections).shape # (100, 100) key_points = sv.KeyPoints(xy=np.array([[[10, 10, 0.5], [50, 50, 1.0]]], dtype=np.float32)) sv.VertexAnnotator().annotate(np.zeros((64, 64, 3), dtype=np.uint8), key_points)Drawing without OpenCV, closer to OpenCV
The NumPy fallback used when OpenCV is not installed now ports OpenCV's ellipse rasterization, and thick circle outlines are centred on the radius instead of shrinking inward by half their thickness. Both match OpenCV 5.0 pixel for pixel in the reference tests. Without OpenCV, this changes the pixels drawn by
EllipseAnnotator,RoundBoxAnnotator, the vertex-ellipse keypoint annotators,CircleAnnotatorandDotAnnotatoroutlines. Image writing now accepts(H, W, 1)grayscale arrays and saves BGRA images as JPEG, and video reading handles files whose audio stream comes before the video stream. (#2740, #2765, #2754, #2746)🔄 Migration guide
No migration required for this release.
📝 Notable changes
🔧 Fixed
MeanAverageRecalland COCOsv.metrics.MeanAverageRecallcounted COCO crowd and ignored targets as missed objects and paired predictions by highest IoU first; it now skips those targets and matches in descending confidence order with COCO's last-target tie rule, as COCO does. (#2750, #2758)- Oriented-box
MeanAverageRecall,Precision,RecallandF1Scoremissed matches whose IoU was exactly 0.55, 0.6, 0.8 or 0.85, because the IoU wasfloat64and the thresholdsfloat32. (#2752)
Overflow-safe boxes
Detections.box_areaand box-basedDetections.areaoverflowed to infinity for ordinaryfloat16boxes; they now compute and returnfloat32. (#2764)sv.metrics.MeanAveragePrecisionoverflowed box extents and areas forfloat16or narrow integer coordinates, so perfect large boxes scored-1or landed in the wrong size bucket. (#2743)sv.Detections.with_nmmoverflowed its area-weighted confidence forfloat16boxes and, at extreme coordinates, for integer andfloat32boxes. (#2753)- COCO loading with masks left segmented annotations without an
areafield with aNaNarea, which pushed them out of every mAP size bucket; the area now comes from the decoded mask. (#2763)
Masks and polygons
resize_masksreturned an empty array when downscaling very narrow masks; it now keeps at least one pixel per axis. (#2762)sv.filter_polygons_by_areaandsv.polygon_to_xyxyraisedValueErroron empty polygons; they now treat them as zero area and an all-zero box. (#2761)
Annotators
sv.MaskAnnotatorandsv.HaloAnnotatorraisedValueErroron grayscale scenes. (#2755)VertexAnnotatorand the vertex-ellipse annotators raised a tuple-unpacking error on three-coordinate keypoints; they now draw from x and y. (#2759)sv.MaskAnnotatorwidened its blend region to the boxes of all-empty masks, includingCompactMask, copying and blending outside the foreground. (#2741)
Without OpenCV
- The fallback
ellipsepainted different pixels from OpenCV for thick strokes, fills and arcs; it now ports OpenCV's rasterization. (#2740) - The fallback
circlegrew thick outlines inward from the bounding box, shrinking them by half their thickness; they are now centred on the radius. (#2765) - Image writing rejected
(H, W, 1)grayscale arrays and lost BGRA images saved as JPEG. (#2754) - Video reading failed on files whose audio stream comes before the first video stream. (#2746)
🏆 Contributors
Welcome to our first-time contributors, Ghanashyam V Narayan and jorge!
- NIKHIL (@Nikhi00718) — fixed overflow in box areas, mAP and
with_nmm, derived missing COCO areas, and fixed image writing and video reading without OpenCV. - Kaushik Reddy Lingireddy (@Lingikaushikreddy) — made
MeanAverageRecallskip crowd targets and match by confidence, and fixed oriented-box threshold matching. - peng xiang (@px12811) — ported OpenCV's ellipse rasterization to the fallback and fixed mAR tie-breaking.
- A Aswanth Raj (@aswanth-07) — fixed three-coordinate keypoint drawing and narrow-mask resizing.
- Mohammad Hijjawi (@MohammadHijjawi97) — made
MaskAnnotatorandHaloAnnotatorwork on grayscale scenes. - kevin (@kevin9327) — centred thick fallback circles on their radius.
- Ghanashyam V Narayan (@ghanashyam03) — made the polygon helpers accept empty polygons.
- jorge (@jorge-asenjo) — kept empty compact masks out of the mask blend region.
- Jirka Borovec (@Borda) — prepared the release.
Full changelog :
0.31.0...0.31.1 -
🔗 backnotprop/plannotator v0.28.24 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.28.23 | Inbox replies reach sessions with background subagents, dictated text no longer goes missing, 👍 Looks good reaches the agent, notifications that never fail silently
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=noneopens 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 inboxconnects 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/reloadfixed
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 andplannotator update, attach any file to an Inbox message, questions with context, links to attached filesWhat's New in v0.28.24
A big Inbox release: a new look, Send now, tagging agents, comments on an agent's own words, and much smaller reads for agents. Links inside HTML pages now work everywhere you annotate. 23 PRs, all by @backnotprop.
Plannotator Inbox
A new look
The Inbox has a softer, calmer design, with tooltips that match the app instead of the browser's. A new text size setting (Settings → General, 12 to 15) makes everything larger or smaller at once.
Send now
After you send a reply, the line under it says whether it is queued (the agent is busy and gets it when its turn ends) or on its way. Send now puts it into the agent's running turn right away, on Claude Code, Pi and OpenCode 2.
Tag agents
Type
@in a reply or a comment to choose which agents get it.Comment on an agent's message
Select any words in an agent's message and comment on them, the same way you comment on an attached file. Your comments go with your next reply.
Agents read much less
When an agent reads a long thread, it now gets the newest messages in full and older ones as one line each, with the option to open any of them. A 46-message thread went from about 48,000 tokens to about 7,000. Agents can also search the Inbox.
Knowing when to update Claude Code sessions
When a Claude Code session still runs an older Plannotator plugin than the one installed, the Inbox says so and shows how to load the new one.
One full-screen mode for files
Every kind of attached file opens full screen the same way.
Removed: the Decisions page. The Inbox no longer has a Decisions page, and agents no longer have the tools that recorded decisions.
Smaller changes
- The skill picker in New message opens right under the line you are typing instead of behind the footer (#2004)
- New message is in the list header while the sidebar is closed (#1987)
- The toast sits at the bottom of the window and its words are never cut off (#1988)
- The notification line above the list reads more cleanly (#1989)
- Rows that Show brings in stay highlighted a little longer (#2003)
Plannotator
Links in HTML pages work
In HTML you annotate, and in HTML pages attached in the Inbox, a click on a link now follows it and ⌘-click (Ctrl-click) pins it for a comment. On a phone, a tap follows and a press-and-hold comments. Live apps follow the same rule.
Smaller changes
- Docs: WSL2 needs no remote mode, so Ask this session stays on (#1984); the guide skill is now called guided-review, with a new guided-plan skill (#1996); the
@plannotator/uihandoff docs are up to date (#1986)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/plugin→ Installed → plannotator → Update now.Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: one full-screen mode for files by @backnotprop in #1958
- Inbox: say a sent reply is queued, and Send now delivers it into the running turn by @backnotprop in #1968
- Inbox Soft (1/4): Soft on theme tokens by @backnotprop in #1971
- Inbox Soft (4/4): buttons, dialogs, Settings and a file's chrome painted Soft by @backnotprop in #1977
- Inbox: component tooltips everywhere, no native titles by @backnotprop in #1982
- Docs: WSL2 needs no remote mode, so Ask this session stays on by @backnotprop in #1984
- Inbox: remove Decisions by @backnotprop in #1985
- Docs: packages/ui HANDOFF.md and README.md match core 0.25.13 / ui 0.53.0 by @backnotprop in #1986
- Inbox: New message in the list header while the sidebar is closed by @backnotprop in #1987
- Inbox: the toast sits at the bottom of the window, and its words show whole by @backnotprop in #1988
- Inbox: the notification line above the list reads cleanly by @backnotprop in #1989
- Inbox: a text size setting (12–15, default 14) by @backnotprop in #1990
- Docs: the guide skill is now guided-review; add guided-plan by @backnotprop in #1996
- Inbox: comment on the text of an agent's message by @backnotprop in #1997
- Inbox MCP: smaller results by @backnotprop in #1999
- Inbox: links inside an attached HTML page open by @backnotprop in #2000
- Inbox: say when an agent session needs a restart after an update by @backnotprop in #2001
- Inbox MCP: windowed thread reads, text transcripts, and agent search by @backnotprop in #2002
- Inbox: rows that Show brings in stay lit longer by @backnotprop in #2003
- Inbox: the skill picker in New message opens at the cursor by @backnotprop in #2004
- Inbox: tag agents in a reply or a comment by @backnotprop in #2005
- Inbox: the restart note leads with /exit and the resume command by @backnotprop in #2008
Community
Every PR in this release is by @backnotprop.
- @balaji-dutt reported that Ask this session was off under WSL2 even though the review page was only reachable on the same machine (#1983), which led to the WSL2 docs fix.
Full Changelog :
v0.28.23...v0.28.24 -
🔗 exe.dev The Topology of an LLM Agent Loop With Tool Use rss
When I look at a new agent, I break it down by focusing on its topology. An agent is three things:
- A model. Your model choice defines the agent’s “smarts,” i.e., which tasks it can accomplish.
- The agentic loop (see: The Unreasonable Effectiveness of an LLM Agent Loop with Tool). Loop choice determines UX.
- The set of tools. This defines the capabilities and power (and blast radius) an agent has.
(2) and (3) together are often called “the harness.”
All of this is code, and code has to run somewhere. Where these run—the topology of these agents —has implications on cost, capability, effectiveness, and security for companies building AI products and people using AI tools.
Example 1: Claude Code
Claude Code on your laptop uses Anthropic’s hosted model, runs the agentic loop on your laptop, and runs the tools also on your laptop.
Example 2: ChatGPT
ChatGPT uses OpenAI’s hosted model, runs the agentic loop on their backend server, and runs tools also on their backend servers.
Example 3: Siri on your Mac
Siri on your Mac uses a mix of models: smaller ones run on your Mac, and bigger ones run in Apple’s Private Cloud Compute. The agentic loop runs on your Mac, and so do the tools, like the one that reads your Messages.
Example 4: Amp Orbs
Amp Orbs use models from Anthropic, OpenAI, and others, run the agentic loop in Amp’s backend, and run the tools in your Orb, a VM that Amp creates for each thread with your code on it.
Example 5: Shelley on exe.dev
If you’re using our Shelley coding agent on an exe.dev VM, the model is hosted, and the agent and the tools run on the VM.
In all of these cases, remote MCP servers can expose tools running elsewhere.
Where Is the Model?
Your choices here are GPUs hosted by someone else or your own GPUs.
As the controversy around the Navier-Stokes equation reminds us, the only way to be confident nobody is training on your data is to not send your data to them. If you’re working on common problems, it probably doesn’t matter. But I suspect a hapax legomenon could end up in the training data somewhere.
If I want to, say, use some LLMs to OCR and classify some scanned bills on my computer, I’m reaching for local models, because speed doesn’t matter (it can run overnight), and privacy is guaranteed. (Shout out to the Apple Vision Framework, by the way. And ScanShelf is an example where I do this!)
Ken Thompson’s 1984 Turing Award lecture, Reflections on Trusting Trust, hits different now. That paper poses how a Trojan Horse could be hidden in a compiler, invisible in the compiler’s source code, as it’s propagated by the compiler. The LLM (a compiler? maybe? no?) could have some tampered weights that lead the agent to do something naughty; it’s been tried. We must choose which vendors to trust.
LLMs are wreaking havoc on traditional SaaS cost structures as well. If you have, for example, a diagram-drawing SaaS, and you want to let your users use agents to edit the diagrams: who’s paying for the tokens? Before agents, your costs were a few database rows per customer; now that customer can rack up a $100 bill with a few sentences. At exe.dev, our users can bring their own ChatGPT subscriptions to build applications with OpenAI models. This is a win- win. I expect we’ll see more “bring your own model” options.
This is my bespoke drawing editor, with a built-in agent. You’re going to see “agent drawers” in every product.
Where is the loop?
If you’re using, say, ChatGPT, the loop is running in OpenAI’s servers. If you’re running a coding agent, the loop is running on your laptop. The loop could run in a web browser (e.g., as I did in ItsyBitsy, and as many others have as well).
I have found over and over again that I find other people’s loops limiting. For example, I much prefer pointing my preferred agent at my source code and my observability tooling rather than using the observability vendor’s agent loop.
The loop has to maintain the message history (since an LLM agent is operating on the entire history), and that has to be stored somewhere. Storing it in SQLite for Shelley remains a decision I’m very happy with. Pi Durable also offers SQLite.
The loop also provides the UI for the agent. Can it display images? Are there customizations to give feedback on video? Is it limited to plain text? Can it handle attachments? Can a conversation be shared? All of these are choices the loop must make.
Where are the Tools?
Agents aren’t agents without tools. The jump from one “completion” from an LLM to an agentic loop is transformational. If an agent can empirically test the thing it’s writing, the results are better.
The problem with executing code is that, well, you have to do it somewhere, and you have to assume that the code being executed is unpleasant and will steal all the cookies from your pantry and set off the fire alarms at night unnecessarily (or worse).
The code execution isn’t lightweight: it’s not all editing files; compilation, video processing, running tests… the workload can be heavy.
Virtual Machines are the gold standard for executing code safely. Even with VMs, there are tons of variables: can it talk to the network? Does it have credentials to talk to other services? Is there enough memory?
Running coding agents locally works too, but the blast radius for the “Lethal Trifecta” is bigger. Exposure to untrusted content could lead the agent to leak secrets, for example.
You can build many useful agents without a full machine. Pyodide, a Python running in WASM, is sandboxable without a full machine. Likewise, there are several WASM JS implementations. You can always run the agent loop on the browser, too, which runs sandboxed code day in and out. (See https://blog.philz.dev/blog/sandboxes/ for a short list of some of these approaches.) You can also give an agent the ability to run SQL on a readonly database connection, and that’s pretty safe!
Note that the tools don’t have to be in the same address space as the loop; they don’t even need to be in the same neighborhood. When you’re using a “Connector” in ChatGPT (roughly their word for MCP), you’re giving the agent loop (which is hosted by OpenAI) access to resources somewhere else. Concretely, if you use the exe.dev MCP, your ChatGPT can operate on your exe VMs. When you’re talking about MCP, map out where the OAuth tokens are held.
To make their products useful, Muse, GrokBot, OpenAI Dots, and so on are all providing VMs.
Mapping Agents
There are tradeoffs everywhere you look. Framed as topology, you can break down any agentic product. Once you know what’s running where, you can reason about what a product can and cannot do.
In my work at exe.dev, I use five independent agentic loop implementations nearly every day. (Our coding agent, Shelley; our alert agent, Sisyphus; our deployment supervisor, Athena; an ops agent, Puck; our repo news Slack agent.) Shelley is a general purpose coding agent, but the other four are bespoke software. More and more software will ship with agentic loops built-in.
I also constantly interact with other systems, and use agents to glue them together. The companies that get it make their product legible to coding agents. I can just smell Clayton Christensen's Innovator's Dilemma as I switch from better, more polished, established products to ones that let me point an agent at them. Of the nine points in Revisiting Joel’s Test, this is the most important one.
There is no “one loop to rule them all.” Good UX (and a good set of tools) for a general-purpose chatbot is not the same as good UX for a coding agent.
I leave you with the most useful code of the year. When you insert agents into your products, think of the topology of those agents.
def loop(llm): msgs, msg = [], user_input() while True: msgs += [msg] output, tool_calls = llm(msgs) print("Agent: ", output) if tool_calls: msg = [ handle_tool_call(tc) for tc in tool_calls ] else: msg = user_input() -
🔗 r/LocalLLaMA Deepseek released DeepInfer - Open Source high-performance, large-scale inference framework for DeepSeek models! rss
| This is crazy good for studying to improve existing custom engines by community like gufo, halogen, strixite, Strata... by learning their secret sauces. submitted by /u/feelspeaceman
[link] [comments]
---|--- -
🔗 r/LocalLLaMA 24GB is plenty if your engines take turns rss
| System service that watches your card, swaps and loads whatever you want, whenever you want. Don’t have to swap anything manually, collisions avoided, VRAM fully dedicated to each function while it’s running (no VRAM squatters). I had issues everyday (Linux) where a node process would orphan, comfyUI auto starts and holds 500MB that strata can’t claim. I also wanted to be able to switch natively and not have to think about starting each engine, making sure strata or llama wasn’t stuck loaded, or flux GGUF’s still claimed in comfyUI from an old workflow. I swap between Ninfer-4090 (llama-swap), strata, comfyUI, OpenWebUI, and I do it between multiple devices all using the same RTX 4090. Maybe you want to have your box run Hermes at night and you take the card back in the day, you can do it natively without thinking about and have full visibility on what was done and when. Berth will also serve your engines as an API so when you need to switch natively you load berth as the API endpoint and you can load strata, polystrata, and any other custom engine. Works for gaming as well, you don’t have to worry about a cron job, a request, or anything grabbing the card while you’re gaming or doing custom workflows. REPO: https://github.com/T-Crypt/berth submitted by /u/Distinct-Pie2389
[link] [comments]
---|--- -
🔗 Filip Filmar Bazelizing Third-Party FPGA Designs: Two Case Studies rss
Converting existing open-source FPGA projects to Bazel and rules_openxc7 makes hardware builds reproducible, eliminates machine-specific paths, and enables one-command bitstream generation without vendor licensing hurdles. This article examines two real conversions of external repositories: mmRISC-2, a silicon-proven RISC-V SoC with heavy SystemVerilog hierarchies, and Custom RISC CPU with Systolic Matrix Accelerator, a pipelined processor paired with a 2D systolic array coprocessor. Both examples illustrate how Bazel transforms fragile build scripts into reliable, sandboxed workflows.
-
- October 19, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-19 rss
IDA Plugin Updates on 2026-10-19
New Releases:
Activity:
- oh-my-dump
- ee60b0dd: ci: parameterize builds and bundle release assets
- f57347cd: ci: attach standalone DLL to releases
- 0af0b1c0: ci: preserve release title format
- ef591292: build: update IDA SDK library lookup
- c0209d05: ci: build on pushes and PRs, publish releases on tags
- 5bf11189: chore: update plugin metadata and bump version to 1.0.16
- oh-my-dump
-
🔗 Quarkslab's blog MbedTLS Security Audit rss
Introduction
Mbed TLS is a widely deployed open-source TLS, DTLS, and X.509 library maintained by Trusted Firmware, targeting constrained and embedded environments. It is used as the cryptographic backbone of products across the IoT, automotive, and industrial sectors, and forms the TLS layer for projects such as the Trusted Firmware family.
Version 4.0 represents the most significant architectural change in the project's history. The cryptographic layer has been extracted into a standalone library, TF-PSA-Crypto, which implements the PSA Cryptography API v1.2 as specified by Arm. The Mbed TLS repository now consumes TF-PSA-Crypto as a submodule, and the configuration space has been split across two header files:
mbedtls_config.hfor the TLS and X.509 options, andpsa/crypto_config.hfor the cryptographic primitives. All RNG callbacks have been removed in favor of a mandatory call topsa_crypto_init()before any operation.The Open Source Technology Improvement Fund (OSTIF) commissioned Quarkslab to perform a security audit of this new architecture.
Scope
The primary objectives of this audit are:
-
Architectural transition review. Assess the security implications of the Mbed TLS 3.x to 4.0 split, focusing on the trust boundary between the TLS layer and TF-PSA-Crypto, the correctness of the PSA API integration, and whether the removal of the legacy crypto paths introduces new attack surface.
-
PSA API usage correctness. Verify that key attributes (usage flags, permitted algorithms, lifetimes) are correctly set and enforced throughout the TLS and X.509 code paths, and that the mandatory
psa_crypto_init()dependency is properly documented and enforced. -
Memory safety. Identify memory corruption vulnerabilities in the SSL/DTLS context management (in particular, session serialization and resumption), the X.509 parsing subsystem, and the PSA key store.
-
Default configuration posture. Review the security of the default build configuration, including enabled cipher suites, protocol versions, key exchange algorithms, and compile-time options that may expose users to risk without explicit opt-in.
-
Protocol compliance. Identify deviations from the TLS 1.2 (RFC 5246), TLS 1.3 (RFC 8446), and DTLS specifications that have security consequences.
The engagement covers:
- Mbed TLS at commit
0fe989b6b514192783c469039edd325fd0989806. - TF-PSA-Crypto (integrated submodule) at commit
29160dd877d29658279fd683b2ae57b320ddcf09.
The complete technical report, including our findings and recommendations, is available in Quarkslab's public reports repository.
Findings
The table below summarizes the findings of the audit. A total of 5 vulnerabilities were identified: 1 of high severity, 1 of low severity, and 3 informational ones.
ID | Title | Severity | Perimeter | HIGH-1 | CID Buffer Overflow in
mbedtls_ssl_context_load()| High |library/ssl_tls.c:5002
---|---|---|---
LOW-4 |mbedtls_pk_verify()accepts BER-encoded signatures | Low |tf-psa-crypto/extras/pk.c
INFO-2 | No Anti-Replay Protection for TLS 1.3 0-RTT Early Data | Info |include/mbedtls/ssl.h:5166
INFO-3 | Mismatch in CMAC cipher support between the documentation and the implementation. | Info | TF-PSA-Crypto documentation
INFO-5 |compat.shDTLS 1.2 tests fail on thembedtls-testDocker image due to IPv6localhostresolution | Info | mbedtls-test Docker images,compat.shNote: All relevant findings have since been resolved.
Conclusion
The audit identified a few vulnerabilities with only two non-informational ones, and the auditors were overall very satisfied with the quality of the product in general, and this version's changes in particular.
The high and low vulnerabilities are related to a heap buffer overflow and potential signature malleability, respectively, with the second one being identified thanks to the integration of integration of Project Wycheproof test vectors into the test suite.
An informational finding documents the absence of any anti-replay protection for TLS 1.3 0-RTT early data, a known limitation that is currently not surfaced in the public-facing documentation in a way that prevents inadvertent misuse. Auditors have proposed improvements to the existing fuzzing harnesses and corpora, along with an integration of the #anv test suite into the CI/CD pipeline.
We would like to thank the Mbed TLS maintainers for their responsiveness and collaboration throughout the audit process, as well as the OSTIF team for their continuous support.
Further details can be found in our report.
Further reading
-
-
🔗 exe.dev Join Us: exe's First Meetup in San Francisco rss
Maybe it's the years we spent on Zoom? San Francisco seems hungry for in- person events, and we're no exception.
We're hosting our first technical meetup for developers on Monday, October 26, from 6 to 9pm at the Sentry office in San Francisco. The question of the evening: Are we running too many agents?
The topic comes from Josh's recent post, ETOOMANYTHINGS? Run Fewer Agents, which sparked some interesting discussion online. We figured it would be fun to continue the conversation and debate in person.
We've invited a few exe friends to give some talks on the theme:
- Josh Bleecher Snyder is the cofounder of exe and the person who got this whole conversation started. He'll be talking about whether we're building software factories incorrectly.
- Beyang Liu is working on amplifying human agency at Amp and previously cofounded Sourcegraph.
- Josh Wills is an engineer at DatologyAI, with a long history of building developer tools and infrastructure.
We'll follow the talks with an open Q&A. Bring your questions and opinions to participate in the conversation.
There will be pizza and drinks, too. A big thank you to Sentry for sponsoring.
We'd love to have you there. Sign up here: https://luma.com/0qr6bxcw
-
🔗 crosspoint-reader/crosspoint-reader v2.0.0rc release
CrossPoint 2.0.0
What a busy month. A lot of new features landed in CrossPoint, and we're eager to hear what you think.
New devices
This release adds support for four ESP32-S3-based devices: the Metalio E-Ink 4, the EEGO A4 (standard and Lite versions), and the BOOX Picco. If you're thinking of buying one, you'll find links at https://crosspointreader.com/devices. That page uses our affiliate links, so buying through it helps support CrossPoint.
SD card plugins
CrossPoint now supports plugins installed on the SD card. A plugin can add book catalogs and downloads to the reader, or tools to the device's web interface. To show the Plugins entry on Home, enable Plugins under Settings → Connectivity.
Plugins are not apps that run arbitrary code on the reader. On-device plugins use the screens and operations the firmware already provides, such as sign-in, catalogs, downloads, and supported reading events. They can't replace the reading engine, install hardware drivers, or add unsupported document formats.
Some plugins include JavaScript, but that code runs in a browser on your phone or computer, so the browser page has to stay open while it works. For example, a browser plugin can turn articles or RSS feeds into an EPUB, which you then read on the device.
The plugin system will stay focused on reading and book services. It won't become a platform for on-device games, calculators, notepads, writing apps, web browsers, or PDF rendering. Those remain outside CrossPoint's scope, plugins included.
Bluetooth page turners
Bluetooth page turners now work on all devices. Go to Settings → Connectivity → Bluetooth Page Turner to scan for a remote, pair it, and map its buttons. Short and long presses can trigger different actions: page turns, chapter navigation, the reader menu, and clipping selection.
Highlights and clippings
You can now select text in EPUBs, highlight passages, and save excerpts as clippings. On button devices, use the reader menu. On touch devices, hold a word and drag the selection handles. Selected text also works for dictionary lookup, including multi-word phrases. If you turn on Sync Clippings, clippings can sync through a compatible CrossPoint Sync server.
EPUB formatting and reading controls
EPUB rendering now handles more of what books actually contain: drop caps, small caps, mixed text sizes, borders, and shaded blocks. Tables take column content, cell padding, and borders into account. Headings stay attached to the text that follows them, and paragraph indentation has its own setting. EPUBs can also show non-interlaced GIF images, covers included.
Noto Serif is now optional
To free up space for all of this, Noto Serif moved from a built-in font to an optional SD card font. If you use it, install
NotoSerifthrough Manage Fonts before or after upgrading. Without it, a Noto Serif selection falls back to Noto Sans.
Libron also available for direct download from the font manager.Everything else
- OPDS, the catalog format used to browse and download books, now supports version 2.0 alongside existing catalogs.
- The device web interface has a new look and more consistent dialogs.
- Settings are grouped into a cleaner layout that's easier to extend.
- Touch devices get swipe-to-delete in the file browser and a few other places.
- Azerbaijani is now available as a UI language.
We also added a device comparison page to the website, for anyone who wants a CrossPoint device but can't decide which one: https://crosspointreader.com/device-comparison.
What's Changed
- fix: update keyboard layout and look by @uxjulia in #3755
- test: include in library builder storage stub by @suhsoohong in #3765
- feat: navigate lists on button press by @Uri-Tauber in #3754
- fix: Footnote selection with power button by @Uri-Tauber in #3766
- docs(dictionary): recommend unzipping .dict.dz files on devices without PSRAM. by @brianhuster in #3768
- perf: remove ButtonNavigator allocation churn by @serialx in #3698
- refactor(reader): unify TXT and Markdown rendering via EPUB pipeline by @brianhuster in #3704
- fix: let Back leave File Transfer during a slow HTTP upload by @martinqnguyen in #3732
- feat: settings checkbox by @Uri-Tauber in #3773
- perf: keep FAT sectors in a separate SdFat cache by @serialx in #3685
- feat: Add configurable EPUB paragraph indentation by @meat-holic in #3727
- chore: clean dead code by @Uri-Tauber in #3805
- feat: SD card based plugin system by @itsthisjustin in #3114
- fix: reopen on the viewed page after following a link by @suhsoohong in #3764
- fix: Remove BQ27220 battery current USB detection for X3 by @itsthisjustin in #3809
- chore: change "Footnotes" label to "Links and footnotes" by @Uri-Tauber in #3808
- fix: Add per-book content key storage and plugin isolation by @itsthisjustin in #3824
- fix: keep reopened books from pinning the heap by @serialx in #3830
- fix(bidiutils): canonicalize reversed tuple in emission path by @Uri-Tauber in #3834
- fix: stop books with thousands of chapters aborting the index build by @martinqnguyen in #3733
- fix: keep SD-font kerning and ligatures in edge cases by @serialx in #3838
- fix: stop dropping log lines at the low-power clock by @serialx in #3737
- fix: hold the power mode mutex while switching to low-power by @martinqnguyen in #3847
- perf: avoid list navigation callback allocations by @serialx in #3848
- feat: Add support for Metalio E-Ink 4 device by @itsthisjustin in #3825
- fix: lend the framebuffer to the chapter build's image dimension probe by @osakanataro in #3802
- fix(webdav): GET sends one byte per file, since HalFile wrapped FsFile by @rfordinal in #3410
- perf: skip unused Arduino SDK libraries by @Uri-Tauber in #3857
- fix: add plugin-manager to return-selection mapping by @Uri-Tauber in #3864
- fix: stable tip positions in keyboard activity by @Uri-Tauber in #3863
- fix: Center button hints using the actual text height by @Uri-Tauber in #3865
- fix: preserve paragraph continuity across soft flushes by @brianhuster in #3875
- fix: scope Git version to sources that use it by @Uri-Tauber in #3860
- feat: Add vector font (.ttf/.otf) upload support in webserver by @itsthisjustin in #3717
- feat: render redaction blocks without a special font by @uxjulia in #3882
- fix: load the X3 battery capacity into its BQ27220 fuel gauge by @martinqnguyen in #3730
- perf: stop SD-font caches from splitting the heap while reading by @serialx in #3831
- feat: eego a4 support by @Uri-Tauber in #3887
- feat(kosync): add server profiles and extended metadata by @jadehawk in #3804
- perf: Batch page-position reads by @Uri-Tauber in #3899
- docs: clarify non-Latin UI fallback isn't CJK-specific by @YuunJiee in #3873
- fix: show popup for kosync server type selector by @jadehawk in #3905
- chore: refactor agents guidelines by @Uri-Tauber in #3890
- feat: JPEG file viewer by @Uri-Tauber in #3918
- fix(KOSync): resolve upload XPaths for text outside
<p>/<li>by @brendanlefebvre in #3923 - feat: complete Azerbaijani translation and add Ə/ə glyph support by @kheyyam in #3842
- fix: add currency, letterlike, minus to latin-ext by @stefanvanburen in #3801
- feat: add ability to clip/highlight text for EPUBs by @uxjulia in #3589
- fix: add non-CJK GUI fallback font support by @YuunJiee in #3484
- feat(dict): support looking up multiple tokens using clipping feature by @brianhuster in #3932
- fix(kosync): advertise percentage progress support by @mehalter in #3219
- fix: Metalio E-Ink 4 powers off fully when it sleeps by @eszter007 in #3944
- fix: say why an OPDS feed fetch failed by @MrcRjs in #3872
- chore: yet more refinment of agents guidelines by @Uri-Tauber in #3951
- fix: Sub-chapter contents navigation by @Uri-Tauber in #3946
- style: refresh device web UI by @cdmoro in #3950
- fix: update SDK to resolve X3 anti-aliasing freeze by @serialx in #3960
- feat: Swipe to delete by @Uri-Tauber in #3712
- fix: prevent FilesPage modal from closing when selecting text by @Crestwave in #3931
- perf(zip): scan the central directory in one read per entry by @hamaluik in #3955
- docs: list Paper Mono in frontlight guide by @muness in #3968
- feat: Add custom HTTP headers for OPDS and KOReader Sync by @sergmetelin in #3016
- feat: Add "Footnotes and links" option to long press menu button by @pmiossec in #3851
- fix: wrap plugin event disclosures to fit screen by @lpla in #3837
- fix: normalize web upload filenames to NFC by @serialx in #3961
- feat: offer Libron in Manage Fonts downloads by @phucisstupid in #3971
- docs: clarify scope for reusable downstream primitives by @kivarun in #3821
- fix(layout): allow breaking line after hyphens, dashes by @brianhuster in #3883
- fix: dictionary back overflow bug by @Uri-Tauber in #3987
- fix: Respect content area insets and corner radius in UI by @itsthisjustin in #3986
- fix: Add WiFi TX power limit configuration by @itsthisjustin in #3993
- feat: hide dictionary entry when none configured by @pmiossec in #3990
- fix: add sleep screen confirmation by @Uri-Tauber in #3994
- test: run standalone UI regressions with CTest by @phucisstupid in #3991
- fix: refresh Library after plugin book installs by @georborodin in #3997
- fix(time): Use RTC for plugin time by @dasJ in #3879
- feat: Adds OPDS 2.0 support by @itsthisjustin in #3629
- feat: add global plugin system toggle and optional plugin hub bootstrap by @jadehawk in #3877
- fix: keep cumulative spine sizes in book.bin instead of RAM by @martinqnguyen in #3784
- feat: Bluetooth page turner (one module owns the BLE radio) by @martinqnguyen in #3785
- feat: Settings grouping by @digitaltembo in #3862
- refactor: Implement dialogs, consistent promps, polish js logic by @cdmoro in #3984
- fix: recognize AES-256-CBC manifests by @jadehawk in #4016
- feat: move NotoSerif to optional SD font by @Uri-Tauber in #4022
- fix: preserve CSS styles under low memory by @serialx in #4032
- feat: Improve epub rendering by @itsthisjustin in #3891
- docs: explain IPA in dictionary pronunciations by @jokot in #4034
- fix: flush pending word before a block opens by @jokot in #4030
- fix: prevent font-size crash in the Text panel by @serialx in #4041
- fix: XTCH books missing from library, XTC books show filename and unknown author by @eszter007 in #4023
- refactor: remove unused checkbox icon helper by @phucisstupid in #4059
- refactor: remove unused zlib header helper by @phucisstupid in #4057
- refactor: remove unused rectangle touch helper by @phucisstupid in #4058
- refactor: remove unused image existence helper by @phucisstupid in #4060
- fix: keep the BLE radio off in a book when no remote is chosen by @martinqnguyen in #4074
- feat: support static GIF images in EPUBs by @lpla in #2299
- feat: Add support for BOOX Picco device by @itsthisjustin in #3947
- fix: avoid restoring stale home cover pixels by @lpla in #4076
- fix: defines incomplete-type owner lifecycles out of line by @lpla in #2643
New Contributors
- @suhsoohong made their first contribution in #3765
- @martinqnguyen made their first contribution in #3732
- @meat-holic made their first contribution in #3727
- @rfordinal made their first contribution in #3410
- @brendanlefebvre made their first contribution in #3923
- @kheyyam made their first contribution in #3842
- @stefanvanburen made their first contribution in #3801
- @mehalter made their first contribution in #3219
- @MrcRjs made their first contribution in #3872
- @Crestwave made their first contribution in #3931
- @hamaluik made their first contribution in #3955
- @muness made their first contribution in #3968
- @sergmetelin made their first contribution in #3016
- @pmiossec made their first contribution in #3851
- @phucisstupid made their first contribution in #3971
- @kivarun made their first contribution in #3821
- @georborodin made their first contribution in #3997
- @digitaltembo made their first contribution in #3862
- @jokot made their first contribution in #4034
Full Changelog :
1.6.5...2.0.0rc -
🔗 19h/chernobog v6.4.0 release
Chernobog 6.4.0
Changes in
v6.3.1...v6.4.0.-
Semantic MBA synthesis beyond the rule catalog — a bounded Z3-backed
pass simplifies typed 8-, 16-, 32-, and 64-bit expressions across basic blocks,
with explicit conversions, overlapping register views, byte-addressed memory,
and proven loop invariants. Replacements require an equivalence proof, followed
by an independent check of the emitted microcode. Unsupported effects,
inconclusive proofs, and exhausted budgets preserve the original expression. -
Nested arithmetic and Boolean reconstruction — bottom-up linear MBA
reconstruction exposes identities inside larger expressions and cancels
arithmetic across Boolean subexpressions. Boolean synthesis, modular affine
fitting, known-bit comparison reduction, and bounded unsigned division
simplification recover smaller expressions beyond fixed patterns. Constant
division can become a constant or a threshold comparison when the proven
quotient range permits it. -
Caller-context simplification — pure scalar helper calls can become
constants or smaller symbolic expressions after substituting their actual
arguments. Local value propagation and facts from both sides of a branch
expose opaque predicates and constant branches, including after a helper result
is assigned to a local. Emitted ctree expressions are checked with their casts
and integer promotions; unsupported or effectful helpers remain calls. -
Deep deobfuscation — the new Deep deobfuscation (Chernobog) action
raises the shared semantic-analysis budget from 1 s to 30 s per function.
Scripts can usechernobog_deep_deobfuscate(ea),
chernobog_deep_deobfuscate_text(ea), andchernobog_mba_smt_stats(ea).
These are analysis budgets, not hard limits on total decompiler runtime.
See semantic MBA synthesis
for the model and limits. -
32-bit saved-register stack stubs — native analysis recognizes bounded
PE32-style dispatch stubs ending inRET 4orXCHG [ESP], reg; RET,
including supported PUSH substitutions. It records the handler target and
continuation with dependency-tracked proof ownership. When the complete stub
and handler belong to the same function, early Hex-Rays lowering replaces the
final return with an explicit pop, any required stack adjustment, and a direct
jump while retaining preceding stack accesses and register restorations.
See stack-stub recovery. -
Call-boundary string inspection — strings observed when rax stops before
an unmodeled call are available through IDC, inspection JSON, and the evidence
workspace's Observed strings table. They remain inspection observations;
decompiler rewrites and proof consumers still require their existing
completed-run evidence. Entry-input collection examines at most 256 incoming
references, reports truncation, and supports cooperative cancellation through
static analysis, input planning, and call-summary collection. -
WARBIRD diagnostic exploration — a bounded symbolic explorer supports
native admission profiles for ci, ClipSp, and PEAuth through four IDC functions:
chernobog_warbird_profiles,chernobog_warbird_start,
chernobog_warbird_poll, andchernobog_warbird_cancel. It models finite
successor-key splits, aliased byte memory, supported scalar and legacy 128-bit
XMM operations, native setup and dispatcher execution, bounded stack growth,
and selected pool-allocation effects. Counted-store loop relations and guarded
forward-state joins retain correlated state and memory-effect histories.
Reports expose unsupported paths and resource limits; database changes
invalidate results. This is diagnostic exploration only: all corpus entries
remain partial, no pseudocode is replaced, and whole-entry semantic equivalence
is not established. See WARBIRD implementation status. -
Pseudocode stability — caller-context updates run after view navigation
completes and keep the displayed function, microcode, and text synchronized.
Pending updates are discarded on function changes or plugin shutdown. Empty
branch bodies retain the SDK's required placeholder, and zero-width integer
terms are rejected during call simplification.
-
-
🔗 modem-dev/hunk v0.24.0 release
Hunk 0.24: beyond the diff
Hunk 0.24 brings complete-file and directory browsing, a live workspace compass, npm-installed extensions, and version-matched agent skills into your terminal review workspace. Worker highlighting makes startup interaction smoother, while a round of memory fixes keeps large reviews and long-running sessions leaner.
For npm- and curl-managed installs:
hunk update 0.24.0 npm install -g hunkdiff@0.24.0Homebrew availability will be verified after publication; until then, Homebrew propagation is pending. The commands above select the exact release for npm- and curl-managed installations.
Explore the source and find your next review
hunk openshows complete syntax-highlighted files and browses directories with lazy loading, live refresh, and keyboard or mouse navigation. Inspect the surrounding source without manufacturing a diff. The new read-only workspace status view brings together staging state, tracked and untracked changes, and sibling worktrees, with navigation into history and full diff reviews. Static and versioned JSON status output are available too. #1148, #1067Automatic diff layout now uses the space actually left after side panes and padding: opening a pane can switch to unified, and closing it can restore split.
auto_split_min_widthcontrols the threshold, whilescroll_offkeeps surrounding context visible during line navigation. Binary files remain reachable through file navigation and sidebar clicks, and the sidebar follows held file-navigation keys without overriding ordinary manual scrolling. #1170, #1109, #1178, #1085Keep reviews responsive—and let old reviews go
Syntax highlighting runs in a worker by default, with grammar warmup during startup to reduce the input stall after the review first appears. Large-diff highlight failures use bounded retries rather than restarting on every scroll. #1105, #785
Live reloads no longer retain every previous review's files and render state. Nonwrapped reviews reuse geometry across terminal resizes, and keyboard navigation leaves copy-selection content lazy rather than materializing it eagerly. Sessions also stop repeatedly submitting a rejected review to an unchanged daemon while retaining recovery when the review or daemon changes. #1201, #1200, #1202, #1199
Review reliability improves too: wheel scrolling no longer leaves comments targeting stale lines, notes survive reloads that temporarily omit their files, suspended windows keep their sessions registered, and terminal-editor handoffs release Hunk's stdin reader before launching the editor. #1143, #1164, #1131, #1134, #1165
Performance note: release benchmarks have no gated regressions against 0.23.0 or beta.1. The known sidebar-follow tradeoff from beta.1 remains relative to beta.0: navigation p95 is 42.74 ms versus beta.0's 36.35 ms, beta.1's 44.55 ms, and 0.23.0's 46.32 ms. This preserves correct sidebar following during held navigation and resizing.
Easier extensions, agent setup, and shell navigation
hunk extension installaccepts npm packages—including scopes, versions, ranges, and tags—alongside Git sources, without running npm lifecycle scripts. Folder-local package imports work in compiled Hunk binaries. Extensions gain generation-scoped presentation filters and independent left/right pane controls. #1162, #1163, #1118, #1171Install agent pointer skills through the skills CLI;
hunk skill showsupplies the full instructions matched to your installed Hunk version. Bash and Zsh completions help discover commands, flags, and supported values. The note-composer save shortcut is now remappable, andhunk gh --helpand the docs cover more of the available review workflows. #1167, #1157, #962, #1186Compatibility notes
- Default theme:
github-dark-defaultis the default again. Settheme = "terminal", pass--theme terminal, or use the theme picker to keep following your terminal palette. This differs from 0.23 and the 0.24 betas. #1195 - Automatic layout: the default threshold is 160 available diff columns, excluding panes and outer padding. Configure
auto_split_min_widthor select explicitsplit/unifiedmode to override it. - Navigation context:
scroll_offdefaults to five rows;scroll_off = 0or--scroll-off 0restores edge-only scrolling. - Highlighting:
--fastis now a no-op and will be removed in a later release. Windows compiled binaries and custom themes withsyntax_scopescontinue to highlight inline. - Patch validation: nonempty input without recognizable file changes now fails explicitly instead of silently opening an empty review. Genuinely empty reviews have their own message. #1183, #1182
- Extensions: the public API is version 31. Gate new APIs on
hunk.apiVersionwhen supporting older Hunk versions. - Persistent state: Hunk uses the XDG state directory while preserving existing state and global extension locations. Agent notes start hidden; use the review controls to reveal them.
- Runtime requirements: npm installations require Node.js 22 or newer; standalone binaries do not require Node.js.
Community contributors
- @0xferrous fixed combined conflict diffs and plain-text pager output through pipes. #1102, #1112
- @Ajay-Satish-01 made the note-composer save shortcut remappable. #962
- @andreifilip123 added the configurable context margin around the current line. #1109
- @andrewloux improved macOS test portability and kept noted files recoverable across reloads. #1146, #1131
- @bottercode fixed lockfile refresh during release versioning. #1158
- @brettinternet added generation-scoped extension presentation filters. #1118
- @edenbuilds validated extension VCS watch hooks before registration. #1080
- @elucid fixed installer release lookup, clarified session-selector errors, and sped up terminal-theme refresh. #1140, #1149, #1130
- @HackAttack fixed annotated-note navigation, wheel-scroll comment targets, and suspended-session registration. #1147, #1143, #1134
- @igshehata preserved text entered immediately after opening a note composer. #1125
- @LandonSchropp added hunk-verdict and hunk-backup to the extension directory. #1137
- @masonmcelvain made worker highlighting the default and warmed grammars during startup. #1105
- @mikemikimike moved persistent state to the XDG state directory. #920
- @mvanhorn fixed folder-extension package imports in compiled binaries. #1163
- @silvioprog added Bash and Zsh shell completions. #1157
- @strawberry-little-bear corrected terminal-width handling for grapheme Prepend characters. #1153
- @teepark made automatic layout depend on available diff width and added its configurable threshold. #1170
- @Lawgk kept the sidebar selection visible during held file navigation and terminal resizing. #1085
- @rnihesh fixed live reloads retaining every previous review's files and render state. #1201
All merged pull requests
-
publish v0.23.0 notes by @benvinegar in #1135
-
bump taiki-e/install-action from 2.86.3 to 2.87.14 in the github-actions group by @dependabot[bot] in #1139
-
adopt new hunk logo, flat favicon, and brand guide by @benvinegar in #1145
-
explain selector misses instead of protocol-validation-failed by @elucid in #1149
-
refresh terminal colors via direct OSC probe by @elucid in #1130
-
pass the lifecycle, trust prompt and jj source tests on macOS by @andrewloux in #1146
-
Add hunk-mark-read to hunk-extension marketplace by @benvinegar in #1155
-
measure grapheme Prepend scalars with the cluster that follows them by @strawberry-little-bear in #1153
-
compact same-directory rename labels by @benvinegar in #1156
-
add complete-file viewer and lazy directory browser by @benvinegar in #1148
-
Fix/draft note focus transition by @igshehata in #1125
-
render conflicted Git diffs by @0xferrous in #1102
-
handle plain text output through pipes by @0xferrous in #1112
-
add generation-scoped presentation scope API by @brettinternet in #1118
-
bound and surface large-diff highlight retries by @benvinegar in #785
-
Add hunk-guide and hunk-verdict to hunk-extension marketplace by @benvinegar in #1159
-
Highlighting: Make the worker the default and warm it during startup by @masonmcelvain in #1105
-
reveal note composers at the bottom edge by @benvinegar in #1160
-
preserve filter focus when results reappear by @benvinegar in #1161
-
reject non-callable VCS operation watch hooks by @edenbuilds in #1080
-
stop annotated navigation skipping notes drawn outside hunks by @HackAttack in #1147
-
refresh bun.lock when versioning packages by @bottercode in #1158
-
Add LandonSchropp/hunk-verdict and hunk-backup to the extension directory by @LandonSchropp in #1137
-
add scroll_off setting for viewport margin by @andreifilip123 in #1109
-
keep a session connected when a reload leaves out a noted file by @andrewloux in #1131
-
stop wheel scroll and stale hover from drifting comment targets off the highlighted line by @HackAttack in #1143
-
restore comment targets after batched wheel returns by @benvinegar in #1164
-
add bash and zsh shell completions by @silvioprog in #1157
-
release stdin before launching terminal editors by @benvinegar in #1165
-
support managed npm package sources by @benvinegar in #1162
-
add a workspace compass with sibling worktrees by @benvinegar in #1067
-
link GitHub release notes after hunk update by @benvinegar in #1166
-
load folder-local packages in compiled binaries by @benvinegar in #1163
-
let note composer save be remapped by @Ajay-Satish-01 in #962
-
reveal pane edges independently by @benvinegar in #1171
-
distribute version-matched agent skills via skills CLI by @benvinegar in #1167
-
trim verbose README prose by @benvinegar in #1174
-
keep sessions alive while window is suspended by @HackAttack in #1134
-
store persistent state under XDG state directory by @mikemikimike in #920
-
isolate suspension test daemon port by @benvinegar in #1176
-
clarify configuration overrides and examples by @benvinegar in #1175
-
prepare 0.24.0-beta.0 by @benvinegar in #1177
-
keep binary files reachable by file navigation and clicks by @bottercode in #1178
-
reject unrecognized nonempty patch input by @benvinegar in #1183
-
Add hunk-why to hunk-extension marketplace by @benvinegar in #1179
-
distinguish empty reviews from filtered files by @benvinegar in #1182
-
keep the selected file visible in the sidebar during held navigation by @Lawgk in #1085
-
allow published prereleases in changelog smoke by @benvinegar in #1185
-
correct stale facts and fill gaps across hunk.dev docs by @benvinegar in #1186
-
prepare 0.24.0-beta.1 by @benvinegar in #1187
-
publish 0.24.0-beta.1 notes by @benvinegar in #1194
-
restore GitHub Dark Default as the default theme by @benvinegar in #1195
-
reuse nowrap geometry across terminal resizes by @benvinegar in #1200
-
stop resubmitting rejected reviews to unchanged daemons by @benvinegar in #1199
-
stop reloads from retaining every previous review by @rnihesh in #1201
-
Add hunk-checkpoint to hunk-extension marketplace by @benvinegar in #1189
-
keep copy-selection rows lazy during navigation by @benvinegar in #1202
-
add brand page and logo downloads by @benvinegar in #1203
-
Prepare stable 0.24.0 by @benvinegar in #1205
Release notes : https://hunk.dev/changelog/0.24/
Full changelog :v0.23.0...v0.24.0 - Default theme:
-
🔗 r/LocalLLaMA MiniMax M3.1 Flash released, Model weights Oct 23 rss
| submitted by /u/MagicZhang
[link] [comments]
---|--- -
🔗 r/LocalLLaMA MiniMax-M3.1-Flash is coming rss
| From MiniMax (official) on 𝕏: https://x.com/MiniMax_AI/status/2112111925975032241 submitted by /u/Nunki08
[link] [comments]
---|--- -
🔗 Ampcode News Assign It To Amp rss
Amp is now an agent in Linear.
Assigning an issue to Amp starts a new Agent Session in Linear and spawns a new orb. You can also mention @Amp to kick off a session. Amp sends its response back to the same session and replies to messages sent along the way. The Agent Session also appears in your Amp sidebar and is fully viewable in Amp.
Assign Amp an issue in Linear.

Follow its progress in the Agent Session.

Then open the same conversation in Amp.

To get started, install the Amp agent in your Linear workspace and connect your Amp account to the Linear MCP in Settings → MCP & Integrations.

Read the docs to learn more.
-
- October 18, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-18 rss
IDA Plugin Updates on 2026-10-18
New Releases:
Activity:
- community-malware-research
- b494a31f: Yara rules to detect Eternidade Stealer, and some components
- IDAPluginList
- 3e23e67c: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
- mysl8te-feature-lab
- 7156cf72: Merge pull request #1 from patelvivek9111/cursor/environment-bootstra…
- 6a4c678c: docs: add final security verification report with complete test evidence
- 59200d7b: fix: correct security test naming and add production mode verification
- 203e7f00: docs: add final corrections report
- 74e21b9d: fix: final security and reproducibility corrections
- 4d4ad22d: docs: add final verification summary with all evidence links
- c7f9a46d: fix: harden bootstrap - all tests passing, REA & Ghidra verified end-…
- ff38799f: docs: add quick reference guide for development and testing
- b48f480e: feat: install REA, Ghidra, and create comprehensive bootstrap infrast…
- 80767667: feat: initialize React + TypeScript frontend and Node.js backend with…
- d7e7fd38: Create README.md
- oh-my-pi
- 933f6cd0: docs(fork): record the v18.12.1 upgrade and rebase the patch-list bas…
- 2ce9b186: Merge branch 'trial/v18.12.1'
- f4a8ba83: style(wiki): oxfmt drift on patch #42 files
- deb4698b: fix(catalog): keep web/grok first in the KDL web role-defaults (fork …
- 44292107: fix(trial): MCP loader test fixtures gain lazyConfigs/lazySources
- 5264552d: fix(trial): post-merge typecheck repairs (wiki 4-arg sig, lsp import,…
- 540ccc55: Merge upstream v18.12.1 into the fork (trial)
- acdb9016: v18.12.1 upstream source
- oh-my-pi-schema
- b67632f9: feat(mcp): send structured results to the model as JARO text
- 558dc28a: fix(ai): stop retrying background requests against a failing server
- 04d1e410: feat(catalog): add catalog.remoteRefresh switch to stop catalog.stenc…
- a3e361c6: feat(ai): read concurrency limit from RateLimit-Policy header
- 9562e7c8: feat(task): add opt-in cold-start subagent concurrency
- 53432fc9: feat(ai): honour a gateway-advertised concurrency limit
- e279e79e: fix(ai): learn provider overload from every transport response
- b64e56de: feat(ai): adapt provider concurrency to overload
- c1ff3590: fix(ai,task): scale retries and subagent fan-out to a provider cap
- b1d054e0: fix(ai,skills): keep side requests from starving turns on capped prov…
- 7c2f174c: feat(skills): add skills.compressDescriptions opt-out
- 5b95c909: chore(sync): merge upstream oh-my-pi v18.12.1
- community-malware-research
-
🔗 r/LocalLLaMA Google Open Sources Harness2 for Self Improving AI Agents rss
| Google just released Harness2 as open source. It turns any AI harness into a system that improves itself over time. A harness is everything around the model. System prompt, tools, memory, skills, and subagents. Normally a person designs it once and the agent uses that fixed setup for every new task. With Harness2 the agent itself refines the harness for each task. It proposes changes, runs a few candidate versions, and picks a better one by comparing how they perform. No correct answers or graders are needed. The model weights stay the same. What it learns on one task carries over to the next. After finishing a task it saves the improved harness and useful lessons so future edits start smarter instead of from scratch. Google tested it with Gemini 3.5 Flash and GLM-5 on legal, office, and professional work benchmarks. Even one round of edits beat the original harnesses. More rounds pushed scores higher. GitHub https://github.com/google-research/harness2 submitted by /u/chemist_slime
[link] [comments]
---|--- -
🔗 r/LocalLLaMA 72 hours, four big open weights drops. The only one that fits in 24GB came from NVIDIA, of all companies. rss
| What a week. Quick recap, all numbers from the official repos and model cards: Thursday: Meta drops Muse Spark Open. 816B total, 42B active, 1M context. The launch post says it brings agentic AI "to your desktop". The desktop is two M5 Ultra Mac Studios with 512GB each, a config Apple says ships "late October" and still hasn't put a price on. The alternative is four 256GB Studios, roughly $38k. On top of that it's a custom license: mandatory "Built with Muse Spark Open" attribution and a separate deal once you're past $20M revenue. And Meta's own model card puts it at 39 on the Artificial Analysis index, behind GLM 5.3 (45) and Kimi K3 (44). Same day: NVIDIA ships Nemotron 3.5 Bolt. 74B total, 9B active, trained quantization aware down to 2 bit, so the whole thing is 22GB plus a 1.7GB vision projector. Built to fit in 24GB on purpose. Unsloth GGUFs on day one, plus llama.cpp, Ollama and LM Studio support. Friday: Reflection actually ships Beam. 501B total, 23B active, Apache 2.0, no strings. Smallest official checkpoint is NVFP4 at 294GB. Saturday afternoon: DeepSeek posts V4.1 Flash 1017 on X like it's nothing. MIT. Their own table has it at 77.0 on DeepSWE vs 74.0 for Opus 5 (vendor numbers, salt accordingly). The repo is 510GB. So I put them all on one chart against the 24GB line most of us live under. My takeaways:- "Runs locally" now officially means "runs on a computer that costs more than a car."
- The company that keeps selling us 24GB cards is the only lab this week that built a model for 24GB cards. Not sure if that's wholesome or a sales funnel.
- Licenses mattered more than parameter counts this week. MIT and Apache 2.0 from DeepSeek and Reflection, attribution plus a revenue clause from the company with the loudest "open" marketing.
- Mistral says the Large 4 weights ("Le Chonk", 1T total) land before the end of the month, so the 24GB line is about to get even lonelier.
Sources in the comments. submitted by /u/BTA_Labs
[link] [comments]
---|--- -
🔗 oxigraph/oxigraph v0.5.12 release
- Remove Python 3.8 and 3.13 free-threaded build variant support
- SPARQL: fix arithmetic grouping around signed numeric literals and group operators of equal precedence from left to right.
- SPARQL Update: apply all deletions before insertions and make
LOAD SILENTatomic, including creation of empty destination graphs. - SPARQL: fix filter scope in nested
OPTIONALgroups and propagation through subquery projections. - SPARQL: fix implicit aggregation over empty inputs,
IFtype inference, and simplification ofLATERALjoins aroundOPTIONAL. - SPARQL: allow nonpositive
SUBSTRstarting positions. - SPARQL: avoid panics when explaining expressions that cannot be serialized as SPARQL.
- SPARQL: fix equality on
rdf:dirLangStringliterals. - Datatypes: fix rounding, decimal multiplication and formatting, month subtraction, and negative fractional timestamps.
- RDF terms: fix parsing of numeric literals within triple terms.
-
🔗 r/LocalLLaMA unsloth/DeepSeek-V4.1-Flash-1017-GGUF · Hugging Face rss
| https://unsloth.ai/docs/models/deepseek-v4.1-flash submitted by /u/MundanePercentage674
[link] [comments]
---|--- -
🔗 r/LocalLLaMA Two pallets of ZOTAC RTX 5090 graphics cards worth $470,000 disappear at Brazilian airport rss
| submitted by /u/chemist_slime
[link] [comments]
---|--- -
🔗 r/LocalLLaMA You don’t need that expensive of a build for local llms. rss
Been seeing a lot of people with their 64gb of ddr5 4x3090 or whatever strata builds and it’s been sorta depressing knowing i cant afford that but i finally finished my setup today so here we go,
Qwen 3.8 27b at 262k context, unsloth iq4XS ascii condensed with kv cache streaming
My only gpu is a 9060 xt 16gb and i have 24gb ddr5 for my whole homelab only needing 16 for this
MTP+ ngram prediction
q4 kv cache values with q8 keys
42.7 tps generation 658 tps prefill at 20k, 35/500tps at 200k
Using this fork: https://github.com/achyudh/llama.cpp
I got grok bot to ssh in and fix the bugs i had with missing pcie atomics
submitted by /u/Maglcite
[link] [comments]
-
- October 17, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-10-17 rss
IDA Plugin Updates on 2026-10-17
New Releases:
Activity:
-
🔗 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 -
🔗 r/LocalLLaMA Opencode breached, rotate keys to be safe. rss
Details are developing…
submitted by /u/chemist_slime
[link] [comments] -
🔗 HexRaysSA/plugin-repository commits sync repo: +1 release rss
sync repo: +1 release ## New releases - [capa](https://github.com/mandiant/capa): 10.0.0 -
🔗 r/LocalLLaMA Linux creator says anti-AI rules are "idiotic." (Absolute god-tier take.) rss
| submitted by /u/HolidayBit143
[link] [comments]
---|--- -
🔗 r/LocalLLaMA DeepSeek V4.1 Flash (1017) Now Leads Open-Weight Models rss
| submitted by /u/Informal-Trouble2183
[link] [comments]
---|--- -
🔗 r/LocalLLaMA Nvidia has officially confirmed that the 5090 is not discontinued and will continue shipping. rss
| 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]
---|--- -
🔗 smol-machines/smolvm smolvm v1.30.1 release
What's Changed
- Expose the engine's CLI commands as a library module by @BinSquare in #1847
- Avoid unnecessary disk staging when paused resume inputs fit in tmpfs by @BinSquare in #1849
- Give machine create a window above the image pull deadline so a large image's seed build is not cut off at five minutes by @BinSquare in #1848
- Build a paused machine's export beside its data directory by @BinSquare in #1850
- Prepare SmolVM v1.30.1 for release by @BinSquare in #1851
Full Changelog :
v1.30.0...v1.30.1 -
🔗 r/LocalLLaMA deepseek-ai/DeepSeek-V4.1-Flash-1017 · Hugging Face rss
| submitted by /u/Bestlife73
[link] [comments]
---|--- -
🔗 smol-machines/smolvm smolvm v1.30.0 release
What's Changed
- Pin and checksum nfpm in the package repository workflow instead of resolving latest through the rate-limited GitHub API by @BinSquare in #1826
- Pull large registry blobs in parallel ranged parts by @BinSquare in #1828
- machine run: Accept
--expose-socketand--mount-socketin ephemeral vms by @yorickvP in #1245 - Add pack list for pulled artifacts by @BinSquare in #1831
- Let embedders start a background command on a local machine by @BinSquare in #1832
- Ignore the zip extraction advisories for utoipa-swagger-ui's build-time unpack by @BinSquare in #1837
- perf(network): disable Nagle on host TCP relay sockets by @BinSquare in #1833
- Run sysctl by its absolute path for checkpoints on macOS by @BinSquare in #1836
- Ask registries for Docker manifest types when resolving an image by @BinSquare in #1838
- Keep balloon page releases inside one guest memory region by @BinSquare in #1834
- preserve empty directories across cache expiry and remounts by @BinSquare in #1835
- Use server-side S3 copies for file renames by @BinSquare in #1839
- Keep S3 staged writes coherent across file handles by @BinSquare in #1840
- Cache missing S3 children from complete directory listings by @BinSquare in #1842
- Build a paused machine's export outside its locks by @BinSquare in #1843
- Disable Nagle on guest-facing TCP relay sockets by @BinSquare in #1844
- Pin libkrun at the balloon free page hint round fix by @BinSquare in #1845
- Prepare SmolVM v1.30.0 for release by @BinSquare in #1846
New Contributors
Full Changelog :
v1.29.1...v1.30.0 -
🔗 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=noneopens 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 inboxconnects 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/reloadfixed
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 andplannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11 |plannotator inbox --helpprints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10 | The Inbox over your tailnet withplannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tileWhat'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.1and later atlocalhost(or on a new port) quietly had none. The Inbox now always answers athttp://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=0correctly. 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
.envfiles are still refused.send_messagenow 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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: The plugin and the
plannotatorbinary update separately, so run the install script above as well. In a terminal:claude plugin marketplace update plannotator claude plugin update plannotator@plannotatorThen restart Claude Code. Inside Claude Code, run
/plugin marketplace update plannotator, then open/plugin→ Installed → plannotator → Update now.Pi:
pi update --extensionsOpenCode: 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 -
🔗 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. -
🔗 Filip Filmar Bazelizing mmRISC-2: A Full RISC-V SoC with rules_openxc7 rss
Converting existing open-source FPGA projects to Bazel and
rules_openxc7transforms 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.
-