- β
- β
- September 14, 2026
-
π crmne/spotifast Spotifast 0.8.0 release
0.8.0 introduces custom themes and automatic Omarchy theme updates. It is also the first release under the new name, Spotifast , at spotifast.rocks. Your existing settings and sign- ins carry over.
New
- Make the app match your desktop. Choose Light, Dark, Follow system, or a local JSON palette. On Omarchy, packaged installs set up the theme hook at first launch and follow theme changes automatically. Open the themes folder from Settings to add your own palettes. Themes change colors while preserving the familiar layout and fonts. By @jdubba1 and @crmne. (#392)
- Install updates from inside the app. Download an update, then choose when to restart and install it. A failed installation restores the previous copy. By @coah80 and @crmne. (#383, #79)
- macOS downloads are signed and notarized by Apple. Both Apple Silicon and Intel are included in the same download. By @crmne.
- Middle-click to autoscroll on Windows. Move the pointer to scroll the current list; click or press Escape to stop. No setting is needed. By @zHeuzy2 and @crmne. (#112, #96)
- Refresh a playlist from its three-dot menu. Reload its details and songs without leaving the page. By @AQS-DS and @crmne. (#397)
- Find settings by typing their names. Settings search matches the visible controls. By @KartikeyaKotkar and @crmne. (#372)
- Double-click a Library item to play it. Play an album or playlist straight from the sidebar. By @skorokithakis. (#391)
- Drag all your selected songs together. Copy a selection into a playlist, drop into the open playlist, and scroll near list edges while dragging. By @sanketttt26 and @crmne. (#290)
- Keep the Library in your preferred order. Sort choices persist, and Liked Songs can move with other Library items. By @crmne.
- Control playback from the Windows taskbar preview. Play, pause and skip without bringing the window forward. By @Shipi1.
- Search can use your personal Spotify app. The sign-in flow explains when a personal app is useful for Premium listeners. By @joshkat and @crmne. (#388)
- Choose which recommendation shelves appear on Home. JSON settings can hide Made for you and Recommended for you independently. By @jdubba1 and @crmne. (#393, #134)
Fixed
- Shared-app playlists load through the playback session , with account-specific caches and complete song ordering. By @chagel and @crmne. (#271)
- Playlist Play starts at the first available song with shuffle off. Sorted and filtered views keep their visible order, and the requested song appears immediately. By @crmne.
- Repeated songs stay in the queue when adding a selection. Each selected occurrence is preserved. By @kevin9327. (#444)
- Recent plays keep the right songs and ordering. Repeated short-song listens remain separate, each row starts its own song, and loading older history leaves newer Library plays at the top. By @kevin9327 and @crmne. (#421, #422, #445)
- Long playlists and albums keep a full-length scrollbar. Jump to distant songs, with placeholders and Retry when a page cannot load. By @alexng353 and @crmne. (#384)
- Queue and Lyrics retain their full height beside the toolbar. Search and update controls fit the available page width. By @luiscuellar31 and @crmne. (#386, #378)
- Keyboard shortcuts respect text editing and modifiers. Arrow keys move the caret in focused fields, Queue shortcuts no longer quit the app, and the playing-album shortcut opens the album. By @kevin9327 and @crmne. (#415, #416)
- Mixed-script and right-to-left titles fit more reliably. Fallback fonts align with Inter, long RTL titles end within their text area, and Yi artist names can use installed fonts. By @kveld9, @kevin9327 and @crmne. (#345, #340, #439)
- Maximized windows restore correctly , and Windows checks mini-player positions against available monitors. By @luiscuellar31 and @crmne. (#396, #351)
- Flatpak keeps settings and sign-ins after fully quitting. By @GusMartins499. (#370)
- Spotify grants use the native credential store , with sign-in attempts isolated from older callbacks. By @crmne.
- Playback tries other addresses when a connection stalls. Connection attempts have bounded timeouts. By @crmne. (#413)
- Large playlist cache writes use less temporary memory , and bounded page caches preserve pending edits. By @Cleboost and @crmne. (#328, #320)
- EPs are shown separately from singles , submenu icons align consistently, and malformed album dates or nested unpacked skins are handled correctly. By @luiscuellar31, @kveld9, @kevin9327 and @crmne. (#356, #295, #341, #337)
- Linux packages declare the GUI libraries they need. DEB and RPM installation is checked on both architectures; Gentoo instructions are also available. By @aljazceru, @NikoMalik and @crmne. (#399, #389)
Thanks
@jdubba1, @coah80, @zHeuzy2, @AQS-DS, @KartikeyaKotkar, @skorokithakis, @sanketttt26, @Shipi1, @joshkat, @chagel, @kevin9327, @alexng353, @luiscuellar31, @kveld9, @GusMartins499, @Cleboost, @aljazceru, @NikoMalik, and everyone who reported and helped test these changes, including @juanre7.
Full changelog :
v0.7.1...v0.8.0 -
π osolmaz/pi-workflows v0.17.3 release
This patch removes one upgrade trap. A workflow server process answers with the package
version it loaded at start. After an upgrade, a client from the new version refused that
server, and no command could reach it. The mismatch message then asked for packages that
already matched.Recorded server stop
pi-workflows server stopandpi-workflows server startnow read
server/server.lock.jsonwhen the handshake reports a version mismatch. The command checks
the recorded process start identity, stops that process withSIGTERM, and uses a bounded
SIGKILLafter a five-second grace.server stopreports the stopped process and its process ID.server startstops the
recorded server and then starts a matching one, so one command returns the machine to a
working state.server statusreports the mismatch and changes nothing.The extension keeps its report-only behavior, because two Pi installations of different
versions can share one state directory. The mismatch message names that recovery step.Install
pi install npm:@osolmaz/pi-workflowsThe
piwviewer ships as a crate:cargo install pi-workflows --version 0.17.3State
This release does not change the durable schema. State written by
0.17.2stays valid. -
π roboflow/supervision supervision-0.30.3 release
0.30.3: Pose, VLM, and video/CSV crash and correctness fixes
supervision 0.30.3 is a bug-fix release closing crash and silent-correctness gaps across pose estimation, VLM parsing, video/CSV output, and geometry utilities. Non-finite key points β how pose estimators report an undetected joint β no longer produce duplicate poses that survive
sv.KeyPoints.with_nms, or crash the key point annotators outright.sv.Detections.from_vlmnow orders backwards box corners, closing a bug where such a box scored a false0.0IoU and both survived NMS as a duplicate and counted as a total miss in mAP.sv.TraceAnnotatorandsv.CSVSinkno longer crash or silently drop columns on the first frame with no detections β a case every non-ByteTracktracker pipeline hits.sv.process_videono longer hangs forever whenmax_framesexceeds the video length. Continuing 0.30.2's numeric-correctness theme,sv.pad_boxesandsv.scale_boxesare fixed against integer overflow. No breaking API changes, no new public API.β¨ Spotlights / highlights
Non-finite key points no longer produce duplicate poses or crash
annotators
sv.KeyPoints.with_nmstested key point validity withxy == 0alone, andNaNβ how pose estimators report an undetected joint β is not0. The stale joint stayed in the NMS box, so a duplicate skeleton scoredFalseon every IoU comparison against it and survived suppression. The key point annotators (sv.VertexAnnotator,sv.EdgeAnnotator,sv.VertexLabelAnnotator, thesv.VertexEllipse*Annotatorfamily) had the matching crash: a single undetected joint raisedValueError: cannot convert float NaN to integerfor the whole frame. Both now skip non-finite coordinates, matchingsv.KeyPoints.as_detections.keypoints = sv.KeyPoints(xy=xy, confidence=confidence) keypoints.with_nms( threshold=0.5 ) # duplicate skeletons with a NaN joint are now suppressedsv.Detections.from_vlmno longer scores a false IoU miss on backwardsbox corners
A VLM that emits a corner pair backwards produced an
xyxyrow withx_min > x_max. Nothing downstream caught it:sv.box_iou_batchclamps intersection width at zero, so the box scored0.0IoU against itself β surviving NMS as a duplicate and counting as a total miss in mAP β whilebox_areastill reported a plausible positive value. Every VLM parser now orders each box's corners before returning it.sv.TraceAnnotatorandsv.CSVSinkno longer crash or silently corruptoutput on an empty-detections frame
sv.TraceAnnotator.annotateraisedValueError: The tracker_id field is missingon the first frame with no detections, for every tracker exceptsv.ByteTrack. Such a frame now draws nothing and still advances the frame counter, sotrace_lengthstays a window over elapsed frames rather than only over populated ones.sv.CSVSinkhad a quieter failure: an empty batch fixed the CSV header without thedata/custom_datacolumns, and every later row was silently truncated to that schema β dropping fields likeclass_namefor the whole file. The header is now fixed by the first batch that actually carries detections.sv.process_videono longer hangs forever whenmax_framesexceeds thevideo length
The reader thread failed on the out-of-range
endbefore enqueuing its sentinel, leaving the main loop blocked on the read queue indefinitely.max_framesis now capped at the video length, and any reader-thread error surfaces asRuntimeError("Reader thread raised: ...")instead of stalling the call.Integer-coordinate overflow fixed in
sv.pad_boxesandsv.scale_boxesBoth computed intermediate values that could overflow or silently wrap for large integer coordinates (e.g. large
int32/uint16/int64boxes). Both now use overflow-safe arithmetic.xyxy = np.array([[10, 20, 30, 40]], dtype=np.int64) sv.pad_boxes(xyxy=xyxy, px=5, py=10) # int64 output, no wraparoundpad_boxeschanges return dtype for integer input β see the migration guide below.sv.scale_imageandsv.resize_image(keep_aspect_ratio=True)no longercrash on an extreme aspect ratio or tiny scale factor
A small enough factor β or an aspect ratio too extreme for the target box β could round an output axis down to
0, andcv2.resizeraised an assertion naming nothing the caller passed. Each axis now keeps at least one pixel. Two callers inherit the fix:sv.letterbox_imagecould not fill the resolution it was asked for, andsv.CropAnnotatorwithscale_factor < 1aborted the whole frame as soon as one detection box was a few pixels across.π Migration guide
No breaking API changes. One fix changes return dtype for integer input:
sv.pad_boxesβ integerxyxynow returnsint64(orfloat64if a padded coordinate exceeds theint64range), instead of the input's original integer dtype, which could silently overflow or wrap for small dtypes likeint16/uint8.
If your code assumes
pad_boxespreserves the input's exact dtype (e.g. reusing the result as anint16array), cast explicitly:sv.pad_boxes(...).astype(np.int16).sv.scale_boxesalso fixes an integer-overflow bug, but its return dtype was alreadyfloat64for integer input before this release β unaffected.π Notable changes
π§ Fixed
sv.Detections.from_ultralyticsnow assigns the placeholder class ID0to every mask in a masks-only result, instead of sequential IDs across masks that belong to the same image. (#2566)sv.pad_boxesnow computes integer-coordinate padding without overflow or unsigned casting errors. (#2565)sv.scale_imageandsv.resize_image(keep_aspect_ratio=True)no longer derive a zero-sized target, fixing a crash reached viasv.letterbox_imageandsv.CropAnnotator. (#2564)sv.KeyPoints.with_nmsno longer stops suppressing duplicate skeletons as soon as a key point is non-finite. (#2563)sv.tint_imageno longer tints the caller's own image array in place. (#2562)sv.LineZoneno longer consumes thetriggering_anchorsiterable during validation, so a generator ormappassed in is no longer exhausted before the firsttrigger()call. (#2561)- The key point annotators now skip key points whose coordinates are not finite instead of raising
ValueError. (#2560) sv.PolygonZonenow rejects a polygon with fewer than three vertices instead of building a zone that can never trigger;sv.Detections.from_vlmnow orders each parsed box's corners. (#2554)sv.ClassificationDataset.as_folder_structurenow rejects images that would overwrite the same class-relative filename before writing any files. (#2551)sv.process_videono longer hangs forever whenmax_framesis larger than the number of frames in the video. (#2546)sv.filter_polygons_by_areaandsv.approximate_polygonnow preserve local geometry for large-origin integer andfloat64polygons. (#2542)sv.TraceAnnotator.annotateno longer raises on an empty-detections frame;sv.CSVSinkno longer lets an empty batch fix the CSV header. (#2539)sv.scale_boxesnow preserves exact integer intermediates, preventing overflow and scaled-corner rounding errors for large integer-coordinate boxes. (#2541)- A release's own version-pinned docs no longer show the outdated-version banner on the day it ships, and the docs-publish and canonical-backfill workflows now share one
gh-pageswrite lock instead of racing each other. (#2536)
π Contributors
- kevin (@kevin9327) β fixed
KeyPoints.with_nms/key point annotators crashing on non-finite key points,tint_imageimage aliasing,LineZonegenerator exhaustion, and thescale_image/resize_imagezero-target crash - Durgamani Sasikumar (@tedo001, LinkedIn) β fixed
PolygonZone/from_vlmbox-corner ordering and theTraceAnnotator/CSVSinkempty-frame crash - S B Pranay (@pranaysb, LinkedIn) β fixed integer overflow in
scale_boxesand dtype loss infilter_polygons_by_area/approximate_polygon - JiantaoPeng (@PengJianT) β fixed
from_ultralyticsmasks-only class ID sizing - trueoneplusone (@trueoneplusone) β fixed integer overflow in
pad_boxes - Andrew Barnes (@Bortlesboat, LinkedIn) β fixed classification export filename collisions
- Abhijith Neil Abraham (@abhijithneilabraham, LinkedIn) β fixed
process_videohanging whenmax_framesexceeds the video length - Jirka Borovec (@Borda, LinkedIn) β fixed the release-day outdated-docs banner
Full changelog :
0.30.2...0.30.3 -
π osolmaz/pi-workflows v0.17.2 release
This release sends only the current workflow state to Pi. It also renames the engine's
components to one vocabulary, so durable state written by 0.17.1 needs a reset.Current workflow state
Pi receives one bounded view of the active run. Node identity, kind, state, and attempt
count arrive as facts. Free-form text is cut at 4 KiB on a character boundary, and a JSON
detail above 8 KiB is left out of the frame. Complete values stay reachable through a
content reference, so no client receives an unbounded array or a truncated value.The engine selects one current message per session. It prefers the open turn's message,
then the oldest eligible pending message, then the newest sent message that needs Pi work,
then a cancelled step message, then a retained terminal message. Message selection reads
metadata only, and the complete history stays available through a page call.Progress facts travel with the view. The view carries one newest record per key, the
monitor schedule, and the monitor estimate.Component names
The engine, the extension, the server, the viewers, the documentation, and the tests now
use one vocabulary. The current names are workflow server, workflow runner, resource
manager, resource runner, and managed resource. The earlier names are gone from every file
a reader can open, and a test keeps them out. Ordinary network language and third-party
package names stay as they are.Node identity limit
A workflow definition accepts a node ID of at most 4096 bytes. A cut identity names no
node, so the engine rejects the definition instead. An identity that fills the limit still
travels in full within one client frame.Performance
The session message revision now comes from one indexed counter row with triggers, so
selection does not scan the session. On a 50,000-message session that read fell from
5.4 ms to 9.8 Β΅s, and a repeated session view on a warm cache costs 245 Β΅s instead of
28.4 ms. The held selection follows the view cache bound of 64 entries and keeps its
retained-terminal result.Fixes
The queue names the active run when a start call meets a taken session reservation, so the
caller no longer sees a raw database error. The test harness stops the workflow servers its
run started; each leftover server held about 80 MB for the life of the machine.State reset
This release changes the durable schema in place. On first start, Pi Workflows reports
Pi Workflows durable state is incompatible. Back up and move state.sqlite with its -wal and -shm files, then start Pi Workflows to create a new state.sqlite database.Move or
delete that database and let the new build create it. This is the alpha policy: no
migration and no compatibility path.Known gap
The general post-workflow turn and the missing-submission reminders still need runtime
restoration. The recorded recovery path covers the work that the extension can still
deliver today.Install
pi install npm:@osolmaz/pi-workflowsThe
piwviewer ships as a crate:cargo install pi-workflows --version 0.17.2 -
π r/LocalLLaMA RTX PRO 5500 Blackwell (84GB) released rss
| submitted by /u/TechNerd10191
[link] [comments]
---|--- -
π r/LocalLLaMA Right to Intelligence. Protect your right to run local AI. rss
| With all the recent drama surrounding AI safety. Itβs obvious that open source could be caught in the crossfire. submitted by /u/Euphoric_Ad9500
[link] [comments]
---|--- -
π r/LocalLLaMA DeepSeek V4.1 Flash beats Astra on AA's new benchmark rss
| https://artificialanalysis.ai/articles/artificial-analysis-intelligence-index-v4-3 AA shipped a new benchmark last week as part of the Intelligence Index v4.3 update β a brand-new private eval that replaces ΟΒ³. Astra was farming a ton of points on it and used those to get even with Fable, butβ¦ looks like we have a new king. So they changed the index twice in three days to make Astra look not-quite-worse than Fable, and then a random guy quietly took first place on it. submitted by /u/Randomdotmath
[link] [comments]
---|---
-
- September 13, 2026
-
π gildas-lormeau/single-file-cli v2.12.0 release
SingleFile CLI 2.12.0
CLI fixes and improvements
--insert-canonical-linkturns the canonical link off. The element is still inserted by default, so nothing changes unless you ask for it. The option existed in the core library but was forced on after the options were merged, so passing it did nothing at all--read-maff-metadatasaves the original URL and the archive time of a page that was extracted from a MAFF archive, read from theindex.rdffile stored next to it. Without it the page is saved under the path of the extracted copy, dated today. It is off by default because it asks for anindex.rdfbeside every page saved, which is a request that fails on the open web
Fixes from single-file-core 1.5.130
- Saved pages can no longer submit forms or set a base URI. Both were available to a saved page and neither has any use once the page is on disk
javascript:URIs are removed from every attribute, in every namespace. The previous pass read the resolved property, so it missed thehrefof an SVG link and never sawxlink:href- Reading the metadata of a page extracted from a MAFF archive no longer fails the capture when
index.rdfdeclares an original URL with noRDF:resourceattribute - The filename template data of a page extracted from a MAFF archive records the URL recovered from the archive, not the path of the extracted copy
Changes
- zip.js is updated to 2.15.0
Co-authored by Claude (Claude Code)
-
π benji.dog rss

Every few years The Matches reunite for a couple of shows to celebrate the anniversary of one of their albums. For as many times as I've seen them, this was the first time I get to listen to some of the less played songs from Decomposer.
-
π r/LocalLLaMA 3k$ 128GB VRAM + 256GB RAM DDR4 Server rss
| I finished my home inference server. First I tried Lenovo p620 workstation and while itβs a good value overall it pissed me off with a ton of proprietary Lenovo shit to deal with and I return it in the end. Components: 4xV620 - 1400$ 256GB DDR4 RDIMM 2666 - 610$ Huanandzhi D12D - 410$ EPYC 7452 - 170$ PSU ASRock 1600 - 220$ SSD Samsung 970EVO 1tb - Already had Case//Fans//Misc ~ 200$ Power consumption is no shit ofc on such machine: 700-900w prefill
500-600w decode on Qwen3.8-next-flash Autoround W4A16 What it can do - EDIT: Qwen3.8-next-flash Autoround W4A16 1.3k prefill and 70tg code/60tg prose on 128k+ context with MTP-2 on vllm fork. I was disappointed with this machine and qwen3.8-27b speeds at first. But since Qwen3.8 next running good on it - Iβm satisfied. Hope in more optimizations in future. submitted by /u/Thin_Pollution8843
[link] [comments]
---|--- -
π r/LocalLLaMA The Local LLM community feels like the golden era of the internet all over again rss
Lately because of the current hardware shortage, unfortunately or fortunately, we canβt just throw infinite cloud compute at our problems, but weβre forced to actually care about whatβs happening under the hood. Weβre tweaking inference engines, learning quantization math, and optimizing architecture just to squeeze as much performance as possible for the lowest possible setups.
Fact: Just recently, the forked llama.cpp(s) and halogen-flash- server of Strix Halo pushed the performance through the roof, achieving double performance in decode (52tok/s), 5-6x performance in prefill (1300tok/s) for Qwen 3.8 Flash Next (Q38FN), and Q38FN itself is another massive architecture improvement with Engram, making it not only small but also smart.
I still remember before the hardware shortage, as someone who loves tweaking and optimizing, people just told me to stop, tweaking is stupid, just buy more RAM, buy more GPU..
It reminds me of the early web.. Back when setting up a box or hosting a server meant digging through forum threads, troubleshooting on IRC, and freely sharing custom scripts just to make things work. That era didnβt just produce programmers; it built hyper-versatile, end-to-end thinkers who understood the stack from bare metal up.
Contrast that with where mainstream web culture ended up. Most platforms today like Tiktok, Facebook, Youtube... are engineered for zero-friction doomscrolling.. Endless feeds of short-form videos designed to keep us distracted and waste our time. Weβve been overpampered by convenience.
My point: When we have too little, we try to learn more. When we have too much, we get distracted and learn too little. This is the golden time of our Local LLM community, let's learn and improve!
submitted by /u/feelspeaceman
[link] [comments] -
π MetaBrainz Picard 3 Release Candidate 3 rss
Today the Picard team is making available a third release candidate for Picard 3. We received good feedback on the previous release candidate 2, thanks to everyone for testing and providing feedback. The final 3.0 release is planned to happen in a few weeks.
Please test, test, and test , report any issue on forums, matrix, or, ideally, on the ticket system.
When reporting an issue, always provide details about your environment and a full debug log helps us a lot.
Also that's (always) a good time to review and improve translations.Download links and a detailed list of changes since Picard 3 release candidate 2 are available below. For a more detailed overview of what is new in Picard 3 please see the previous blog post Picard 3 Alpha Release.
While we have all the major features implemented and with the latest bug fixes we are confident in the current code, this is still a pre-release and there might be bugs. If you use this, do so with care, backup your files and please report any issues you encounter.
If you are updating from Picard 2, note that some of the changes are backward incompatible, hence we recommend you make a backup of your Picard.ini config file before trying this version. You can do so in Picardβs Options under Advanced > Maintenance.
Whatβs new?
Bug
- [PICARD-3428] - Metadata options page greys out after being opened once when translation_locales contains an unknown locale code
- [PICARD-3429] - If Picard was built with updates check disabled the update level setting must be hidden
- [PICARD-3430] - macOS: Text color issues in dark mode
- [PICARD-3432] - Frozen builds do not bundle
picard.plugin3.cli, breaking plugins that import it - [PICARD-3433] - Options page: field highlight and bottom warning disagree about profile overrides
- [PICARD-3436] - Profile-overridden settings are only highlighted on the first Options page shown
- [PICARD-3437] - Importing a shareable profile that contains tagger scripts leaves the scripts disabled
Improvement
- [PICARD-3431] - Plugin install/enable/disable/uninstall errors aren't clearly displayed as coming from the plugin
- [PICARD-3434] - Use Modern Style for Wizard across all platforms
- [PICARD-3435] - Setup wizard: add option to convert Unicode punctuation to ASCII
Download
We appreciate your interest in trying this new version. Use with care, backup your files and please use theMetaBrainz community forums and the ticket system to give feedback and report bugs.
For Windows and macOS you can download the release candidate version from the Picard download page. Linux users can run from source or try the "candidate" channel of the Picard snap package.
Picard is free software and the source code is available on GitHub.
Helping out
We want to provide a polished release of Picard 3.0 that everyone can feel confident to upgrade to. To achieve this, we need the help from the MusicBrainz community.
The easiest way to help us getting a great Picard 3.0 release is using and testing this release candidate. Please report bugs on the Picard issue tracker and provide feedback in the community forums.
We also need help with translations, as there are a lot of new features and UI changes over previous Picard versions. We will avoid any further text changes before the final release, so now is the right time to help with translation on Weblate. Please see the translation instructions on the Wiki for details.
If you are a software developer you are very welcomed to provide fixes and features. Picard is free software and the source code is available on GitHub. See Contributing to Picard on the Picard website to get started.
You can also look at the new Plugin API and develop plugins for Picard or update your existing Picard 2 plugin to work with Picard 3.
Acknowledgements
Code contributions by Bob Swift, Laurent Monin and Philipp Wolfer.
Translations were updated by BestSteve (Chinese (Traditional Han script)), blueday (Swedish) and Marc Riera (Catalan). -
π smol-machines/smolvm smolvm v1.16.0 release
What's Changed
- Forget externally deleted machines in the API supervisor by @BinSquare in #1241
- Fix scoped memory, UID-isolated checkpoints, and VM restart safety by @BinSquare in #1240
- Add incremental live-checkpoint storage by @BinSquare in #1232
- Bump the workspace to 1.16.0 by @BinSquare in #1242
Full Changelog :
v1.15.1...v1.16.0 -
π HexRaysSA/plugin-repository commits sync repo: +1 release rss
sync repo: +1 release ## New releases - [DeepExtract](https://github.com/marcosd4h/deepextractida): 0.9.14 -
π r/LocalLLaMA The Hugging Bay rss
| New website to download models in case HF starts censoring or limiting access. submitted by /u/Thrumpwart
[link] [comments]
---|--- -
π smol-machines/smolvm smolvm v1.15.1 release
What's Changed
- README: the virglrenderer loader path for Nix and NixOS hosts by @NickyHeC in #1224
- Fix the flake's release hashes and stop the cut from half-bumping nix/smolvm.nix by @NickyHeC in #1225
- Surface the guest console in a boot failure so the real reason is not lost by @NickyHeC in #1229
- Make a smaller storage disk work for a Nix install on macOS by @NickyHeC in #1227
- Report a machine's real memory in status by asking the guest instead of the host by @BinSquare in #1230
- Let a machine run its own hypervisor by exposing the host's virtualization extensions by @BinSquare in #1231
- Bump the workspace to 1.15.0 by @BinSquare in #1235
- Use shared RAM generations for active branches by @BinSquare in #1236
- Size the export helper's disk from the machine being exported so a large image no longer fills it mid-pull by @BinSquare in #1238
- Honor operation-specific API timeouts by @BinSquare in #1237
- Bump the workspace to 1.15.1 by @BinSquare in #1239
Full Changelog :
v1.14.6...v1.15.1 -
π Kevin Lynagh Multitouch UI, remote microcontroller flashing, LLM task workflow rss
Hi friends,
I've been focused on a few projects I'm not quite ready to discuss yet, so this issue is a bit of a smorgasbord of thoughts and vibe-coded tool releases:
- Musings on multi-touch: After 20 years, why is it still just zooming/scrolling?
- Probetron: Turning a Raspberry Pi 4b into a network-accessible microcontroller programmer/debugger
- LLM task workflow harness
Also, I'll be in:
- New York City, Sept 26-Oct 6
- Milan, Oct 6-8
Let me know if you want to hang or have any favorite food/activity recommendations!
Why not more multitouch?
Apple popularized multitouch input with the iPhone and Mac trackpads in the late '00s, and since then it seems like most programs still only take advantage of the multitouch input for passive navigation: vertical scrolling, horizontal panning, and zooming.
Multitouch gestures are certainly well suited to these uses; in comparison, I feel extremely slow and clumsy whenever I have to zip around a PDF document or 2D canvas using only a mouse/trackball while holding down control/shift/command/who-can-even-remember.
However, I'm surprised that so little software seems to take advantage of such high-bandwidth human control input. In researching this topic I came across BetterTouchTool and was floored by the enormous number of gestures and input modalities it supported out of the box:

I'm now using it to map various taps and touches to commands like move/duplicate/rotate in my CAD tool, so that I can keep my hands on the trackpad rather than constantly running them back and forth to press hotkeys on the keyboard.
While it's certainly fun to map a rotation of my fingers to the "r" key to trigger a "rotate" command in KiCad, it has me thinking of just what might be possible if multitouch were actually designed into an application rather than "bolted-on" like this to existing key shortcuts.
I'm sure iPad apps have a lot more sophisticated touch handling, though the locked-down, consumption-oriented focus of that device has kept me away from it. The two apps I've noticed as an outsider to the platform are:
- Concepts (having only seen it in use via Stuff Made Here's engineering videos)
- Shapr3d, a legit Parasolid-backed CAD program on the iPad supporting touch and pencil
I've heard there are plenty of "Professional" apps for the iPad -- let me know if you're using any that have sophisticated multitouch or pen input for creative work!
Recently I've been designing PCBs using KiCad, and the experience of trying to place and connect hundreds of objects by tediously clicking on them one-by-one and nudging them around with arrow keys or a single cursor has me dreaming of what a multi-touch-forward interface might look like. What sorts of operations might we have for making selections, refining them, and manipulating the underlying entities?
Four years ago I experimented with CADtron, a pen/mouse-gesture-first 2D geometric CAD, and I'm starting to get the itch again. Especially now with LLMs doing the grunt work, it feels possible to build something more than just a research prototypeβ¦
Probetron
Speaking of LLMs and designing circuit boards, I recently found myself shuttling a microcontroller between:
- my desktop computer, where I was having an LLM generate firmware, and
- my lab bench, where I was connecting it to an apparatus
After a few iterations of this -- asking the LLM to generate some firmware, flashing it, walking it over and reconnecting on the bench, noting the error message, relaying that back to the LLM, repeat -- I realized I'd become what my friend calls a "reverse centaur". Where a regular centaur combines the strength and speed of a horse body with the intelligence of a human head, the reverse centaur combines the feeble body of a person with the skittish, doofy mind of a horse -- the worst of both worlds.
Upon realizing this, I threw together a tool for flashing a microcontroller and forwarding input/output (SWD, UART, and USB serial) over the network. This would allow me to put "hardware-in-the-loop" as they say, hand everything to an LLM, and take myself out of the inner "is the well-specified feature actually working?" iteration loop.
I built everything around a Raspberry Pi 4b, as I had one lying in a drawer. The device-under-test (DUT) can be flashed and reset using the Pi's GPIOs, so no additional programmer hardware is needed:

My initial "this'll take an hour for an LLM to throw together" estimate turned out to be a bit off -- the project took the better part of a weekend. Partly scope creep:
- baking an immutable SD card OS image from within a Linux VM rather than provisioning software on the Pi directly
- refusing to require any configuration/setup on client machines, which, when combined with SSH really not wanting you to have keyless/passwordless login, means a lot of shenanigans serving an SSH private key over HTTP (lol)
but mostly because lots of lil' rough edges came up during my initial usage:
- the probe.rs progress bar doesn't use newlines, but instead relies on learning your terminal's width so that your terminal actually wraps the lines (and thus the script needs to forward your terminal width to the Pi)
- when the Pi wasn't coming up on the network, since I didn't have an extra monitor handy to debug it, the LLM recommended adding "usb gadget mode" to the image so that when plugged into another computer via USB-C, the Pi would identify as a network adapter and thus you could SSH in to debug over a USB cable (that was a pretty cool solution, I thought)
- there were all sorts of race-conditions related to the DUT's serial-port-over-USB; I exposed the USB serial via a TCP socket so that the programs I'd already developed for my firmware would need only minimal modifications (opening a
tcp://...instead of/dev/tty.usbserial123). This was quite glitchy until I realized that my firmware's "hello, thanks for connecting to me" initial message was getting lost in the Pi's OS buffers -- I had to modify the harness on the Pi so that it only opened the usb serial port when a real client connected to the TCP socket (and likewise closed the serial port when the TCP socket closed).
The code is 100% LLM-generated, but it's working well enough in my use case flashing rp2350 microcontrollers and forwarding their USB serial output, that it's likely useful to others as well. I've open-sourced the repo here, give it a spin and let me know how it goes!
A single-file LLM task workflow harness
Back in May, I wrote:
No matter how much you plead in markdown:
You MUST run
test.shbefore committingthere's a chance they'll just go ahead and commit anyway (or "fix" the failing test by deleting it, etc.).
If you want LLMs to follow a deterministic process, you must use them via a deterministic harness.
Beyond simply ensuring tests/linters are run, another trick I've found that improves LLM code output is running a fresh context with a generic prompt like "review the last commit and tidy up any duplicated code, verbose comments, etc.". I found it pretty funny that even a frontier model like Fable 5 reliably makes a mess when it's implementing anything, such that running the same model in a fresh clean up context yields a transcript full of gems like "oh, this last commit added the same block of code in four places, I should make this a reusable function!"
While there are tons of harnesses out there, I wanted one that's small and human-readable. For fun, I made it a single Babashka file so it'd be totally self-contained and easy to copy, modify, etc.
I'll first talk about the workflow, then about the implementation details in Clojure and my dissatisfaction with the explicit state-machine architecture.
Task workflow
For the workflow itself, I was inspired by my friend Colin's pi- task, in particular how it "frontloads" human involvement: One starts by interactively discussing the task scope with LLM first, then factoring that into a plan, which is then implemented autonomously.
I really enjoy the interactive design session, which is substantially more comprehensive than the "plan mode" built into Claude Code and Codex (which only seem to ask me a few clarification questions at best before trying to jump into implementation).
My harness follows Colin's by starting with separate steps (context + prompt) for:
- discussing the scope of the task itself ("refinement"),
- how to implement that scope in terms of individually deliverable/testable subtasks ("planning"),
- reviewing the plan
The prompts for these steps encourage the LLM to ask a single multiple choice question at a time, but since the responses are free-form text it's always easy to steer the conversation:
- none of these are good options, what about direction X?
- let's not do this functionality at all
- this is a prototype, don't worry about that edge case
- clone project A and see how they handled this
After the task has been refined, the fresh context of the planning step divides the (now detailed) task specification into explicit subtasks. Each subtask can have:
- explicit dependencies (on other subtasks)
- check scripts that must pass before the subtask can be committed
To accomplish task X, the subtasks might be something like:
- refactor the existing functionality spread across the codebase into a new crate/name
- add new namespace with additional supporting functionality
- implement X using these two new namespaces
I much prefer steering not-so-clever implementation agents upfront, rather than having a "frontier long task horizon" agent get, uh, creative with a gazillion tokens.
Finally, the "plan review" step launches a fresh context to review the generated plan. This has the same free-form Q&A format discussed above, and usually finds a handful of places where the subtask implementation or testing details are unclear.
This last step can be repeated as many times as desired. Furthermore, I designed the workflow to emit
task.mdas a sort of "structured markdown":# My task check: tests-run-for-every-subtask.sh Some background context that's given to every implementing subtask ## Subtasks ### a some subtask ### b dependencies: a another subtask ### c check: specific-test-only-for-this-subtask.sh yet another subtaskso at any point you can decide to "take matters into your own hands" and edit the plan/subtasks directly rather than try to explain it to the LLM.
I tend to spend about 30-60 minutes in these authoring steps, which yields a
task.mdoverview that is much more detailed and comprehensive than anything I'd have come up with on my own in the same period of time. Atest-plan.mdis also generated, which is intended to help you walk through and test that the task was done properly -- it contains stuff like user interface and hardware tests that the LLM can't do on its own as part of the implementation.Once you're happy with the plan, run
tasktron.clj approveand the harness will:- create a new branch for the task
- start subtask implementations in parallel, using git worktrees
Each subtask implementation agent is prompted "Do just [subtask description] as part of [task description]". When the implementation agent completes, a review agent is prompted "Review this commit for conformance to this task and subtask" and can decide to:
- approve the code unchanged
- approve the code with amendments
- reject the code and restart the subtask with a fresh implementation context with additional instructions
When approved, the harness handles cherry-picking the commit onto the task branch tip. (If there's a conflict, an agent is started to handle it.)
While the task is cooking, a status overview is displayed:

Once everything has been completed, I review the work and merge the branch myself. I tend to do non-fast-forward merges so it's clear in the git history that some commits were done as part of a single conceptual task. As part of the merge, I also check-in the
task.mdandtest-plan.mdso that context is stored in the repository.I've been using this workflow for about a month and I'm quite happy with it thus far. The authoring workflow in particular has been awesome, and it has definitely helped me come up with better designs than I would've otherwise. I'm also happy with the local-first workflow where everything is built using git branches and worktrees (rather than some remote issue tracking API).
If you want to give it a spin, put tasktron.clj on your path, run it in a git repository, and follow the instructions. It shells out to
piand/orclaude, and you can edit the source to select the harness and model for the specific workflow step. (I can't stand talking to Claude but have free tokens, so I discuss with GPT-5.6-Sol and have Opus 4.8 implement.)Task harness implementation
One of my goals was to implement the task harness as a single, "obviously correct" file, which could be read from the top down in a sort of "bottom-line up front" fashion, with the overall architecture coming first and the grittier implementation details coming later. (See Grant Slatton's How to write complex software for more on this approach.)
I wrote it in Clojure, as that's a concise, data-oriented language I know well.
Finally, I wanted the harness to be robust, with all of the essential state stored on disk, so that after an LLM provider outage, power outage, etc., I could just run
tasktron.cljagain and it would continue exactly where it left off (ideally resuming the in-flight LLM sessions by their transcript UUID in the same worktrees).To do this, I implemented the system as an explicit state machine, using Malli to make legible the expected data shapes.
For example, each subtask state is associated with some data and possible transitions to other states:
(def state->definition {:initial {:schema :map :transitions {:specified :pending}} :pending {:schema :map :transitions {:implementation-started :implementing}} :implementing {:schema [:map [:base CommitId]] :transitions {:implementation-finished :checking :blocked :blocked}} :checking {:schema [:map [:base CommitId] [:commit CommitId]] :transitions {:check-passed :reviewing :check-failed :revising :blocked :blocked}} :reviewing {:schema [:map [:base CommitId] [:commit CommitId]] :transitions {:feedback :revising :amended :checking-amendment :approved :awaiting-integration :blocked :blocked}} ...})The events associated with each subtask are stored in an append-only log on disk, from which the current state is derived. The next state is derived from the current state and some event, usually the result of an agent turn, but which might also come from the harness itself (running tests, reporting an infrastructure failure, etc.).
Effects are reified as data so that side-effects can be isolated to a single function and the vast majority of the code and tests can remain functionally pure (i.e., they don't have side-effects and they return values determined entirely by the provided arguments). The effects themselves are derived from the state; e.g., if the next state is "attempt-rebase" the associated effect contains the commit ID of the source and the commit ID of the target (that we're trying to rebase onto), with the effect handler returning an event (either "success, here's the new commit ID" or "there's a conflict").
The core interpreter loop of the harness is then fairly compact:
(loop [state initial-state subtask nil event initial-event subtask->running-effect {}] (let [observed-task (parse-task (slurp (str (fs/path task-dir TASK-FILENAME)))) state (reconcile-task state observed-task) next-state (step state subtask event (now)) effects-desired (effects-for-state next-state) effects-pending (remove (fn [{:keys [subtask]}] (contains? subtask->running-effect subtask)) effects-desired)] ;; Write state before running effects so re-running recovers from crashes. (save! task-dir next-state) (report! next-state (now)) (let [subtask->running-effect (reduce (fn [active {:keys [subtask] :as effect}] (submit-effect! executor completed worktrees runtime effect) (assoc active subtask effect)) subtask->running-effect effects-pending)] (if (seq subtask->running-effect) (let [{:keys [subtask event]} (await-completion! completed interactive? report! next-state)] (recur next-state subtask event (dissoc subtask->running-effect subtask))) next-state))))All-in-all, the harness consists of:
- 500 lines of prompts and Malli schemas
- 1500 lines of domain-specific workflow and task interpreter code
- 500 lines of supporting code for parsing/generating markdown, interacting with Git, and handling CLI arguments
- 2000 lines of LLM generated tests
While it works well enough, I don't feel like the code meets my goal of being "obviously correct".
All the code reifying effects, managing an explicit state machine, and deriving state from an immutable log all obscure the core subtask workflow:
- create/reset the worktree to the latest branch tip
- invoke implementation agent on the subtask
- run the check script(s)
- invoke review agent, having it either accept, amend, or send back to re-implement from scratch
- run the check script(s) again (if amended)
- allow up to 3 retries of this loop (more than that indicates the subtask is ill-specified)
- cherry-pick onto the branch tip
I've been quite happy with this core workflow, and actually want to extend the harness with a "one-shot" entry point that kicks off this workflow for a single prompt (skipping the full refinement and plan steps), for those cases where I'm working on something and notice a minor thing that could be fixed/improved that I can review later when I'm finished with my current work.
Before I add new features to the harness, though, I'd like to refactor away from the explicit state machine design to reduce the amount of code.
I'm thinking the "durable execution" pattern might be a good fit. Essentially, memoize (durably, on disk) every side-effecting function call such that on failure/restart the system automatically "replays" itself back into the same state without re-executing side-effects that've already run.
Most of what I've found in this space (e.g. Temporal, Armin Ronacher's Absurd Workflow) rely on some external database service, which is antithetical to my "it's a single readable script" goal. I'm curious to see how concisely everything could be hand-rolled in Clojure, but of course if you are aware of relevant prior art (in any language) please let me know!
Misc. stuff
-
What If Sliding Could Be Controlled? A roboticist discusses making a 3d-printed foam parallel gripper interface with embedded magnets and optical sensors so a robot can toss/slide objects around.
-
"Most humans became trained to expect that most questions in fact have answers. To believe that there is a place β the library, Google, or an LLM β where one may Enquire Within About Everything, reducing the urgency of actually enquiring about anything."
-
A Monopoly on Poop "Itβs practically clichΓ© to say at this point, but the reason that the FDA is trying to restrict access to [fecal microbiota transplant] in favor of Rebyota is that the modern American healthcare system is built around making profit for corporations rather than getting people healthyβto the extent that the system is no longer capable of accommodating something that simply works."
-
Way too much detail about the blinking lights of TermDriver2
-
Being Linux Torvalds: "Automatic programming, instead, in the hands of people that are expert technicians, or expert programmers, expert designers, expert software architects, is to assume the role of Linus, with the agents and the LLMs assuming the role of the different maintainers of the different subsystems."
-
There are Exactly 1Β½ Games of Rock Paper Scissors. Shortly followed by Actually, there are 1.4937 games of Rock Paper Scissors
-
Scaling Up the Full Scroll Dial - High Resolution Scrolling Device
-
π Ampcode News Free Agent rss
Amp is now free to use when you bring your own compute and model subscriptions/keys.
- No monthly plan is required anymore to use your ChatGPT subscription with Amp.
- No BYOK token fees or limits for anyone (except our Enterprise tier).
You pay us for orbs, our remote computers where your agents run independently and in parallel. Or you can use runners on your own computers to run your Amp agents for free.
You can still pay for model inference through Amp if you want, with no markup.
Here's our new free Hobby tier and no-extra-charge Teams tier, which make it easier to get started with Amp and to get your whole team on it:
See Pricing for full details, but let's walk through what changes and what doesn't.
For Amp Megawatt & Gigawatt Members
On average, Megawatt members get a 60% discount and Gigawatt members get a 65% discount on their Amp usage. It's a great deal.
You'll keep getting the same heavily discounted orb usage and model usage each month, plus you can now feed your orbs with tokens from more places.
With this change, you're no longer effectively bound by the limits of your ChatGPT sub. You can tap other model providers or your company's preferred AI gateway/provider (more on that below), all without any Amp token fees or limits.
For Teams
We've eliminated the biggest sources of friction you might hit when spreading Amp, cost-wise and security-wise.
Now, you can invite everyone to your Amp workspace for free and feel the magic of Amp's shared threads, shared portals, and multiplayer.
Everyone can use Amp with ChatGPT subs or your company's preferred AI gateway via BYOK, with no monthly fees.
Power users can upgrade to paid tiers for big orb discounts, while everyone else in the workspace can remain on the free Hobby tier and consume your pooled workspace credits for orbs pay-as-you-go.
Also, you get free SAML/OIDC SSO for the whole workspace if at least one member is on a paid tier.
Finally, we're now formally extending our zero and minimal data retention policy to all Amp users and workspaces, not just to our Enterprise tier. (Everyone was always covered by it for all Amp usage since we started, but until now we could only contractually guarantee that to our Enterprise customers.)
One More Thing: More BYOK Options
Today, Amp Megawatt and Gigawatt members are also getting early access to more BYOK providers:
- OpenRouter
- Amazon Bedrock
- Google Cloud Agent Platform (f/k/a Vertex AI)
- Azure Foundry
- Vercel AI Gateway
- Cloudflare AI Gateway
- Ollama Cloud
- OpenCode Go
- Custom endpoint URLs
To try these:
- Enable the More AI Routers & Subscriptions experimental feature.
- Configure them in Model Routing in personal settings or workspace settings.
We'll roll this out to everyone soon.
-
- September 12, 2026
-
π Simon Willison Generating running routes with GPT-6 Astra and ChatGPT Work rss
Here's a neat thing I had ChatGPT Work with GPT-6 Astra (Max) do this morning:
I live at <my address>. Figure out 5K and 10K running routes from me that loop from my house. Use OSM data.It worked for 27 minutes and produced exactly what I'd asked for, as both an embedded visualization and downloadable GPX file and GeoJSON files. Here's that 5K route:

When I asked it how it had created the route, it replied:
I used Nominatim to locate the address and Overpass to download local OpenStreetMap roads and trails, then calculated the loops locally.
Frustratingly, the actual code it ran and exact details of what it did weren't visible to me in the ChatGPT UI. I see this lack of transparency is an anti-feature.
By the time I thought to ask for a copy of the Python code it had used, ChatGPT was unable to provide it. This appears to be because the thread had been compacted. I think any LLM system that uses compaction needs to both preserve the pre-compacted text and make that text available via agent tool calls, to protect against this kind of problem.
As for displaying the map to me, that used the visualize skill. It created a file called
/workspace/el-granada-5k-share.htmlto embed directly into the ChatGPT UI.Here's a copy of that HTML, which starts like this:
<div id="eg-share-loop"> <div class="viz-row"><h3>El Granada harbor loop</h3><span class="text-small">5.1 km</span></div> <div id="eg-share-stage"></div> <div class="text-small text-muted">Map data Β© <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener">OpenStreetMap contributors</a></div> <style> #eg-share-loop { width:100%; } #eg-share-loop #eg-share-stage { width:100%; margin:8px 0; } #eg-share-loop .eg-share-map { display:block; width:100%; touch-action:none; } #eg-share-loop .eg-share-map text { fill:var(--foreground); font-size:12px; font-weight:400; } #eg-share-loop .eg-share-label { paint-order:stroke; stroke:var(--background); stroke-width:3px; stroke-linejoin:round; } </style> <script type="application/json" id="eg-share-data">{"route":{"type":"LineString","coordinates":[[-122.467425,37.4997753] ...</script> <script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script> <script> (() => { const root=document.getElementById('eg-share-loop');
The
<script type="application/json">element contains the full geometry needed to render both the running route and the map itself, using D3, which is loaded from an allow-listed CDN location described in this section of the visualize skill:External resources
- The CSP allows only
cdnjs.cloudflare.com,esm.sh,cdn.jsdelivr.net,unpkg.com,fonts.googleapis.com,fonts.gstatic.com, andfonts.bunny.net. Other origins are blocked and fail silently.
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
- The CSP allows only
-
π r/LocalLLaMA This seems more probable than it was before. rss
| submitted by /u/pmv143
[link] [comments]
---|--- -
π BarutSRB/OmniWM OmniWM v0.6.10 release
What's New Since 0.6.9
- Added a separate OmniWM Dev installation with independent settings and state, plus commands to switch between development and release builds.
- Simplified contributor setup with checksum-verified dependencies,
make setup,make doctor, and automated macOS verification and tests. - Fixed development-tool lookup and Swift 6.4 compilation issues affecting task-local code and optimized builds.
- Reorganized runtime, settings, and integration code and expanded regression coverage.
- Updated configuration, feature, CLI, and architecture documentation and added contributor and website development guides.
- Updated contributor credits and credited sponsor b-allan-w.
Official website and documentation: https://omniwm.app
Installation guide: https://omniwm.app/guides/install/Release Integrity
OmniWM is signed with Developer ID, notarized by Apple, and includes a stapled notarization ticket.
OmniWM-v0.6.10.zipβ SHA-256:10eef893077d210d1545f5775a2b92b2f366df61db4fbd8abc22b3ab1d08c4afGhosttyKit.xcframework-v0.6.10.zipβ SHA-256:4cc414f1b76c7f9ffe13dd5b047cf9deb8bd182e33e522045c7d939ff1cd151f
-
π gildas-lormeau/single-file-cli v2.11.2 release
SingleFile CLI 2.11.2
CLI fixes and improvements
--create-root-directoryis honored when several pages are saved in one archive. The first page was stored at the root of the archive whatever the option said, mixed in with the files the archive needs for itself- The help text of
--browser-wait-untilgivesDOMContentLoaded, which is the name the browser reports. The spelling it gave before matched no event, so a capture asking for it waited the whole--browser-load-max-timeand was then saved by the fallback - The published package holds only the files the CLI needs to run
Fixes from single-file-core 1.5.129
- The maximum resource size is no longer applied to the page itself. With
--max-resource-size-enabled, saving a raw page larger than the limit produced an empty document. No body, no title, no warning. The limit applies to the resources a capture fetches, frames included, which is what it is documented to do
Changes
- The infobar icon plays a ripple animation when the page is saved (see gildas-lormeau/SingleFile#1504)
Co-authored by Claude (Claude Code)
-
π navidrome/navidrome v0.64.0 release
This release brings an experimental Jellyfin Music API , so Jellyfin- compatible music clients like Finamp and Jellify can now connect to Navidrome. Artwork got a new background pipeline with blurred low-quality placeholders and a diagnostic CLI. Under the hood, all IDs move to a uniform canonical 128-bit format , genre and artist filtering is now index-backed, and playlist import on large libraries is dramatically faster. There is also natural sort order, playlist favourites, Refresh Metadata actions, new Catppuccin themes, and many fixes across scanning, transcoding and scrobbling.
β οΈ Breaking Changes / Migration Notes
- All internal IDs are re-encoded to a single canonical 128-bit base62 format. The migration touches every table, so back up your database before upgrading. Clients that cache item IDs (for example, offline downloads) may need to re-sync. (#5824)
- Plugin authors: Extism's built-in HTTP is disabled. Calls through
pdk.NewHTTPRequest(Go),http::request(Rust) or the equivalent in other PDKs now fail withHTTP request ... is not allowed. Plugins must use the host HTTP service instead:host.HTTPSend(Go) ornd_pdk::host::http::send(Rust). Also, plugin HTTP and WebSocket connections to private or loopback addresses are now blocked for named hosts; to reach a LAN service, list its IP or CIDR in the manifest'srequiredHosts, or use a bare"*". (1a8463f7d, 276d767ce) - Shares are always owned by the user who creates them. Admins can no longer create shares on behalf of another user via
userId. (1a8463f7d) - Configuration durations are now validated. Negative values are rejected at startup. (#6002)
- Navidrome now warns about unrecognized options in the config file, so typos no longer fail silently. (#5870)
Security
This release fixes several reported vulnerabilities. We thank the security researchers who responsibly disclosed them.
- Fix SQL injection via the artist
rolesort and filter parameters in the Native API by validating the role against the known list. (4168377b6, GHSA-hm54-32q6-3rcr, reported and fixed by @Sudo-Ivan) - Fix share-ownership spoofing (IDOR) that let a client-supplied
userIdon share creation expose other users' private libraries, and fix a plugin HTTP client SSRF guard bypass via DNS names and redirects by disabling Extism's built-in HTTP and checking the resolved IP at dial time. (1a8463f7d, GHSA-82gh-4ggp-gfg5, reported by @gigioneggiando) - Fix the same SSRF bypass in the plugin WebSocket host service by adding the private-address guard it was missing. (276d767ce, GHSA-pr2j-mfc8-qjcc, reported by @qrn12580)
- Fix login rate limit bypass via spoofed
X-Forwarded-For,X-Real-IPandTrue-Client-IPheaders by keying the limit on the trust-aware client IP. (#6124, GHSA-f295-6wp9-qqfg, reported by @gehan-psbc and @skarn958) - Fix memory exhaustion via a negative
sizeparameter ongetCoverArtand share images, which bypassed the artwork size clamp, by rejecting negative and oversized dimensions before decoding. (#5847, GHSA-f22h-6qxh-rqq2, reported by @arpitjain099) - Enforce track membership on public share streams so a share can only stream the tracks it contains. (#5769 by @deluan)
- Validate every resource ID in a share, load share metadata as the owner, cap login request bodies, create the log file with mode 0600, and stop logging the Last.fm auth token. (#6098 by @deluan)
- Confine plugin filesystem mounts to their root and reject plugin IDs that are unusable as directory names. (#5881, #5886 by @deluan)
- Redact sensitive auth headers from request logs. (82b9a44a1 by @deluan)
Note: Several of the advisories linked above are still in draft on GitHub at the time of writing. Their links will become publicly accessible once the advisories are published. The fixes themselves are already included in this release.
Configuration Changes
Status | Option | Description | Default
---|---|---|---
New |Jellyfin.Enabled| Enable the experimental Jellyfin Music API. (#5730) |false
New |Jellyfin.ServerName| Server name advertised to Jellyfin clients. (#5730) |Navidrome <version>
New |Jellyfin.ExposedPublicUsers| Comma-separated usernames advertised on the unauthenticated public users endpoint. (#5730) |""
New |Jellyfin.MaxConcurrentStreams| Bounds how many Jellyfin collection responses can stream at once. (#5783) |max(2, MaxOpenConns/2)
New |EnableNaturalSorting| Sort names and titles naturally (e.g. "Track 2" before "Track 10"). (#6015) |false
New |MaxImageSize| Cap on the size of artwork images Navidrome will decode. (#5931) |20MB
New |EnableScheduledDBAnalyze| Periodically run a fullANALYZEto keep query planner statistics fresh. (#5740) |trueFor a complete list of all configuration options, see the Configuration Options documentation.
Jellyfin API (Experimental)
- Add an experimental Jellyfin Music API, enabling Jellyfin-compatible music clients to connect to Navidrome. Enable it with
Jellyfin.Enabled = true. (#5730 by @deluan) - Supports library browsing, search, favorites and ratings, playlists, lyrics, Instant Mix (album, playlist and genre sources), ReplayGain normalization, and filtering by year and record label. (#5791, #5948, #5815, #5817 by @deluan, #5809 by @kgarner7)
- Jellyfin clients get sonic similarity features (similar tracks, sonic path) when a sonic similarity plugin is installed, backed by the same engine already exposed over the Subsonic API. (#5782 by @deluan)
- Jellyfin tokens never expire, are scoped to the Jellyfin API, and are revoked when the user changes their password. (#6013 by @deluan)
Artwork
- New artwork pipeline: artwork resolves in the background and pages show a blurred Low Quality Image Placeholder until the real image arrives. External providers are rate-limited and guarded by a circuit breaker, and missing artwork is rechecked slowly instead of on every request. (#5847 by @deluan)
- Make the artwork image size cap configurable. (#5931 by @deluan)
- Fix artist folder being promoted to album folder. (#5856 by @kgarner7)
- Fix Deezer picking the wrong artist among same-name matches, and treat an exhausted Deezer quota as a throttle instead of a missing artist. (#5808, #6068 by @deluan)
UI
- Add Refresh Metadata action to album and artist pages and context menus. (#6036, #6078 by @deluan)
- Add playlist favourites: heart button, list filter, and a sidebar favourites-only toggle. (#5805 by @deluan)
- Add Catppuccin Mocha and FrappΓ© themes, and update Macchiato to match the official palette. (#5835 by @cmyksoda)
- Add Artists, Songs, Playlists and Radio to the Default View options. (#5754, #5801 by @deluan)
- Add Share and Download actions to the Artist detail page. (#5944 by @deluan)
- Show translation completion percentage in the language selector. (#5979 by @deluan)
- Remember the "items per page" selection across sessions. (#5819 by @deluan)
- Give visual feedback when downloading from a share. (#5865 by @deluan)
- Fix logins sometimes showing the wrong user. (#5882 by @deluan, #5767 by @apkatsikas)
- Fix each page's scroll position not being restored when navigating back. (#5892 by @deluan)
- Fix playback starting when closing the disc cover lightbox. (#5901 by @deluan)
- Fix playlist not reloading after rating or loving a track. (#6009 by @polybjorn)
- Fix the album grid resizing in Safari when top menus open. (#6125 by @york9675)
- Fix the album grid hover overlay corners in the Nautiline theme. (#6115 by @deluan)
- Fix transcoding Default Bit Rate not accepting 0. (8d77a49b3 by @deluan)
- Fix the Last.fm link not always showing on the artist details page. (b0e1943d8 by @deluan)
Playlists & Smart Playlists
- Add album-level fields for sorting and filtering in smart playlists. (#5899 by @deluan)
- Add per-playlist
refreshDelayfor stable daily or weekly smart playlists. (#5790 by @deluan) - Store playlist stars and ratings per user. (#5749 by @deluan)
- Make playlist import much faster on large libraries. (#6055 by @deluan)
- Fix in-place playlist edits not being detected by the scanner. (#5914 by @junkerderprovinz)
- Fix track edits being allowed on synced playlists via some APIs. (#5984 by @deluan)
- Fix smart playlist song count being lost on re-import. (#5908 by @deluan)
- Fix deleting many tracks from a playlist at once failing. (#5977 by @deluan)
- Fix the
changedtimestamp not being updated when renaming a smart playlist. (#6082 by @deluan)
Scanner
- Add optional natural sort order for names and titles. (#6015 by @deluan)
- Support the
[bg:]tag and skip unknown tags in LRC lyrics files. (#5966 by @deluan) - Fix album tags being sorted alphabetically instead of keeping the order from the files. (#5872 by @deluan)
- Fix file creation time not being read on Linux. (#6046 by @deluan)
Subsonic API
- Implement the OpenSubsonic
topSongsByArtistIdextension. (#5853 by @kgarner7) - Expose album-level ReplayGain. (#5816 by @deluan)
- Fix
createShareignoringDefaultDownloadableShare. (#6121 by @deluan) - Fix double brackets when appending subtitle or version to titles. (#5832 by @deluan)
Transcoding & Streaming
- Fix sources already in the player's forced format being re-encoded, and make piped FLAC transcodes seekable. (#6105 by @deluan)
- Fix truncated transcoded streams being delivered as complete. (#6035 by @deluan)
- Fix AAC streams being reported as
audio/mp4instead ofaudio/aac. (#5998 by @justadityaraj) - Fix bit depth being reported for lossy transcode targets. (#5768 by @deluan)
Scrobbling
- Add a per-user scrobble filter. (#5964 by @deluan)
- Add a scrobble history Native API. (#5761 by @kgarner7)
- Use exponential backoff for scrobble retries during provider outages, and honor a provider's request to back off. (#5818, #6028 by @deluan)
- Fix out-of-order playback reports being rejected. (#5793 by @deluan)
Plugins
- Add plugin-specific storage. (#5839 by @kgarner7)
- Add scrobble access to the plugin SDK. (#5795 by @kgarner7)
- Surface the valid agent names in logs and the Plugins UI. (#5910 by @deluan)
- Fix plugin agents not being loaded in CLI commands. (#5959 by @deluan)
- Fix public URLs built by plugins pointing at localhost instead of the caller's address. (#6059 by @deluan)
CLI
- Add an
artworkcommand group (explain,refresh,cancel) for diagnosing and re-driving artwork resolution. (#5957 by @deluan) - Add
missing listandmissing fixsubcommands to deal with files that moved. (#5928 by @zerovox) - Add
doctorandsearch rebuildcommands to detect and recover from search index corruption. (#6069 by @deluan) - Fix
restorewiping the database when the backup file does not exist. (#6085 by @Huang-404-Q) - Fix selective scan
--targetrejecting absolute paths. (#5947 by @deluan) - Fix
pls -pwriting playlist output to stderr instead of stdout. (#5996 by @deluan)
Server
- Make genre and artist filtering much faster across all APIs by using indexed join tables. (#5940, #5930 by @deluan)
- Report the app store or hosting platform via
ND_PLATFORMin insights. (#5956 by @deluan) - Send the Navidrome User-Agent in all outgoing requests. (#6020 by @mintsoft)
- Fix
getScanStatusreportingcount=0for scans not started through the API, fix the folder watcher hanging when it cannot start, and fix startup failing whenMusicFoldercontains a single quote. (#6098 by @deluan)
Database
Packaging & Build
- Upgrade to Go 1.27. (#5990 by @deluan)
- Upgrade the Docker base image to Alpine 3.22, and add
curlto the container image. (#6048 by @deluan, #6116 by @miguelallopes) - Bump TagLib to 2.3.2. (#6088 by @deluan)
- Windows MSI: remember install properties across upgrades. (#5333 by @mintsoft)
- Fix a missing hyphen in the OpenRC script that caused crashes on startup. (#5906 by @alinxviso)
- Fix a typo in the
--prometheus.enableddescription. (#5878 by @0mp)
Translations
- Update Chinese (Simplified) translation. (#5779, #5873 by @fxj368)
- Update Italian translation. (#5848 by @McCio)
- Update Japanese translation. (#6080 by @karigane-cha)
- Update German, Greek, Finnish, Galician, Polish, Portuguese (BR), Thai, Ukrainian and Chinese (Traditional) translations from POEditor. (#5833, #6128 by @deluan)
New Contributors
- @McCio made their first contribution in #5848
- @0mp made their first contribution in #5878
- @alinxviso made their first contribution in #5906
- @IgorPolyakov made their first contribution in #5867
- @junkerderprovinz made their first contribution in #5916
- @justadityaraj made their first contribution in #5998
- @polybjorn made their first contribution in #6009
- @karigane-cha made their first contribution in #6080
- @Shxiao101 made their first contribution in #6097
- @cmyksoda made their first contribution in #5835
- @miguelallopes made their first contribution in #6116
- @Huang-404-Q made their first contribution in #6085
- @zerovox made their first contribution in #5928
- @Sudo-Ivan made their first contribution in 4168377b6
Full Changelog :
v0.63.2...v0.64.0Helping out
This release is only possible thanks to the support of some awesome people!
Want to be one of them?
You can sponsor, pay me a Ko- fi, or contribute with code.Where to go next?
-
π anthropics/claude-code v2.1.270 release
What's changed
- Fixed read-only git commands in Bash unexpectedly asking for permission after a session had been running for a while (regression in 2.1.269)
-
π r/LocalLLaMA Looks like a coordination to stop distribution of intelligence rss
Coxon, bernie and now this
First https://x.com/DarioAmodei/status/2098773920774074715
Then https://x.com/elonmusk/status/2098789109980332057
Then https://x.com/sama/status/2098811563415150910
I think fear mongering approaching and they will try to slow down open source
"They" want to be gate keepers of intelligence
submitted by /u/de4dee
[link] [comments] -
π Register Spill Joy & Curiosity #99 rss
Something changed with these latest models, with Fable 5.1 and GPT-6 Astra.
The benchmark numbers (79% instead of 65%!) don't capture it, and neither do the benchmark words: this model goes on for longer than this one, this one is "most aligned", that one the least "sycophant" (the ultimate benchmark word, no?). At this point? Yeah, whatever.
But it feels like we're now flying at a higher altitude, that we have to concern ourselves even less with earthly matters such as a single unit test or how to juggle thirteen commands to get this into that format and over the wire. That's down there now. Up here, we're now free to talk about what we want:
"I want you to go and test this end-to-end, I don't care how, and give me irrefutable proof that this works. Dazzle me. Give me a video as proof, or something."
And thirty minutes later, when I have awoken from the nap I had earned with all that typing and pointing and wanting, I look into the shed and, wouldyoulookatthatWOW , the golden goose laid the golden egg: a 60fps video that runs for 47 seconds, in which the golden goose itself clicks through everything it had built, end to end, navigating the application better than any user could, knowing exactly how to show me, provide proof, that this actually works. "This one now lays golden eggs"--that's what I want to see in a benchmark.
That's an actual prompt I used. Here's another one:
"Go and spawn three other agents in three separate orbs and ask them to test this. Obviously, do not tell them that we changed the AGENTS.md file or that we added this tool to test database performance; just ask them to do something -- like add new database queries or something -- so that they ideally end up using this new tool to make sure the performance is there. Then check that they did use the tool and if not, adjust the AGENTS.md file and spawn new agents."
And the golden goose waddles and takes three magic beans and puts them into the ground and somehow knows how to pour water over them (god how do they know all this) and then patiently watches the beanstalks grow and up on the beanstalks there appear three other golden geese (it's 2026, we're mixing fairy tales) and that first golden goose, the one that talks to me, sends them messages that say: "Hey, I want you to do the following..." And it briefs them in this weird English (I mean, did we truly expect golden geese to talk the way we do?) about how certain things work, but it does not spill our secret, and does not tell them where the tools to test database performance are. Then it leans back (and I imitate it) and watches them, waiting for them to reply back. After fifteen, twenty, or thirty minutes, the geese send down word from up there on the beanstalk to let us know what they did. But the golden goose doesn't trust them and checks on them by reading what they did in that thread, and then reports back to me: "Sire, it appears that 2 of the geese independently found that database performance tooling we built. That is the good news. That third one, though... Sire, forgive me when I say: it didn't use it. But I have an idea! I will change the AGENTS.md file and adjust the prompt and I will put three new beans into the ground. Is that okay with you?"
It's fucking wild , man. Yes, these are actual prompts! I used these prompts! I've seen it happen. Agents spawning other agents in orbs, sending messages back and forth, eval'ing how agent-friendly the codebase is, black-box testing features, black-box regression testing to make sure nothing broke.
This week I've asked models to build "something that's like a cloud, the heads should float over here and there and then resize on mobile" and they built it. I asked them to build this SDK and then spawn agents in orbs in two different codebases and instruct them to use it and to deploy their usage and then check that they actually use it and they freaking did it.
Yes, the models are plain smarter, whatever that means, and they go for longer, sure, but... It feels like we've now entered a new phase, where much more is possible, things that I previously thought would never work. Or, that's my other thought: things where previously the models would do a great job of 95% of the task, but getting the 5% turns out to be crucial and also to be the biggest pain in the ass, so you'd end up with a very frustrating experience.
Previously, you'd ask the models to go and build a heads-floating-around- cloudy-thing and they would do it, sure, but then when you opened the page, you'd see that it's all there -- the heads, the text, the floating -- but the heads would be stuck under the navbar, or it would all fall apart on mobile, or clicking on the heads wouldn't work and you'd sigh because you'd realize that you now have to do that very worst part of the work yourself.
But that seems to have changed now. They really do nail more.
And the one thing I keep thinking is: we have to aim higher, we have to be more ambitious, we have to try it all.
-
New Raising An Agent is out! I was so fired up after GPT-6 Astra and wondering what all of this means for the personal computer that I sent a message to Quinn: "hey, we have to record this week!" And that's what's in the episode, all the thoughts about the higher altitude we're flying at now, what this means for the future of the computer, and how we still have (regrettably, but working on it) incidents.
-
I also, rather spontaneously, recorded a video of myself doing day-to-day, real-world work using agents in Amp. Performance optimizations in production, fixing UI flicker, toggling feature flags on, shipping new features -- it's all in there.
-
Armin with some cold water to splash on the golden geese: Astra for Coding: Why Are We Doing This Again? It's good that there's still some cold water being splashed around here! It's thought-provoking in the best kind of way. For example, here's what I thought after reading: hmmm, can we judge these models and their capabilities in a software factory that was "intentionally set up to let the model decide the how of the workflow entirely. It was free to manage its own context and could maintain its own records in an
agent-notesfolder." I'm not sure. I think agent-friendliness is a real property of a codebase you have to build towards and I don't think just letting the model decide it all is the best way to go about it. So that's one thought. The other one came up after reading this line: "But I'm more and more skeptical that the trajectory they are on still lends itself to present-day software engineering processes." I immediately started wondering: well, should they? Shouldn't it be the other way around? Shouldn't present-day software engineering processes change to wield the power of these models in the most effective way? And these aren't rhetorical questions. I don't have an answer yet that I'd sign. But these questions are interesting because all of this is interesting and no one's figured it out yet and, to quote Armin, "man this stuff is weird." -
Seemingly everybody had been raving about this Adam Mastroianni piece: I like 'em thick. But I waited, didn't read it when it came out, didn't read it when I saw it recommended over and over. My justification? "I can't link to Adam Mastroianni in every issue, can I?" The guy's too good. But then I folded and did read it and, yes , it's as good as they say. "Erasing the line between the thick and the thin has left us defenseless against slop at the exact moment of its onslaught. Everyone can sense there's something amiss with the prose that comes out of the machines, but we lack the language to talk about it, and so we've converged on the idea that slop simply means using too many em dashes, bullet points, and line breaks. No, what separates substance from slop is thickness."
-
Adam links to this in the footnotes: What Makes Art Great? by Nabeel S. Qureshi. That, too, is just fantastic. What's very interesting to me is that both pieces, Adam's and Nabeel's, are wondering out loud: what makes human art and writing better than their AI equivalents? And both are very different in how they answer that question, which I don't think you could say about two models.
-
Doomscrolling ourselves to death: "Yet the most startling thing about this book is how far even the nominally well-educated have fallen, so that 'by the end of the twentieth century a college graduate born after 1969' read less than someone born before 1950 with a basic level of education. Indeed, 'nowadays many rich and highly educated people are much less well read than many members of the least privileged classes had been in the middle of the twentieth century.'"
-
OpenAI: "We're sharing a solution to the Navier-Stokes Millennium Prize Problem" And then the world lost its mind. Some said "i basically think this is the Endgame" and it's hard to convey what they mean to someone who hasn't themselves gone through multiple rounds of AI psychosis, but I get it, man. I get it. At the same time: is it? The endgame? Then an AI researcher at Anthropic resigned because both OpenAI and Anthropic "are racing straight to self-improving superintelligence and gambling with our lives." That post now has 165 million views! 165 million! And someone emailed me and asked: should I be worried? And I sent them this video and I believe it. But I also know that next week I might not, because, hey, a colleague of the guy-who-stepped-down-to-save-humanity says "Jacob is correct here--we really do earnestly believe AI could kill all humans! I personally think it is >10% within the next decade." So there's that: some of the highest-paid individuals in the world, working at some of the richest and most powerful companies in the world, think there's a ">10%" chance their work could kill us. But then people say it's a farce, a psy-op, a manufactured panic to kick regulation into gear, a coordinated play. But then there are people who say that, yes, it's coordinated, yes, we do need regulation, because they actually believe this might wipe out humanity. So I guess we're back to the YouTube video with the slide again.
-
Terence Tao: "In fact, it is now the identification of a promising problem which is the scarce and precious resource. We have now seen that even the rumor of someone working on a problem can trigger a massive amount of AI-powered effort to flatten it before the original research project has time to reach its full potential. The incentives may now be pointing in the direction of no longer sharing any promising research directions with the broader community, which would reverse centuries of traditions of open science and do serious long-term damage to the future of the field." Someone else said somewhere that maybe in the future more knowledge work is going to look like hedge funds: you spot an inefficiency in the market, you throw intelligence at it, you win. If you're too late, you're too late.
-
Now what is super interesting about the Great Navier-Stokes Panic is that they used 10,000 agents and they "sent 4.9 million messages and used about 300 billion output tokens. In the process of resolving the Navier-Stokes problem, the agents sent 2.7 million messages and used approximately 130 billion output tokens." That's millions of dollars, millions and millions. But! Listen: when OpenAI released o3 "it cost ~$500,000 to score 87.5% on ARC-AGI 1. Today, Astra scores higher for ~$20." Maybe in three years you can solve Navier-Stokes for $50?
-
But compute is so scarce! OpenAI is pausing "subscriptions to our $200 Pro plan." Imagine you're one of the hottest companies in the world and you have to close sign-ups because you don't have enough CPUs and GPUs. And the Head of Platform at Anthropic says that we're facing a real CPU shortage. This is not investment advice, obviously.
_Hey, welcome to a completely new section of this newsletter. It might be a one-time thing only, who knows. But it 's called HELP! and I think that's pretty self-explanatory. _
Do you use dictation to write? To write prose? Yeah? I'm not talking about prompts or text messages. I'm talking about [very close to the microphone:] Serious Writing. Writing that you edit. Writing where you might take a word out and put it right back in again after tilting your head a bit. That writing.
If so: help me! Tell me how. Because I'm struggling, man.
I can't figure out how to do it.
I used dictation and talked into Apple Notes, just raw-streaming thoughts into the phone. But then the formatting is weird and I have to say newline like an idiot and I can't do bullet points, not really anyway, and⦠It just feels weird.
ChatGPT's voice mode is another thing I tried, but whenever I talk to an LLM to dictate something, I'm wondering: what am I doing here? I don't want the LLM to send a reply back. I just want to⦠I don't know, talk out loud and somehow magically have the thoughts recorded, but then also edited? And re- ordered?
If you can help me, just reply to this email.
Alright, back to the program β¦
-
An almost philosophical Ben Thompson in Stratechery: Write Things Down. There's a lot going on here and I'm not sure I get all of it, but I found the part on watermarking very interesting: "to insist on watermarking is no different than insisting that a ballpoint pen advertise itself as the author, a concept that is clearly absurdβ¦"
-
So get this. I was wondering aloud how other people handle clicking links (in Slack, in the terminal, β¦) and the browser opening them in the wrong profile. Some people said that Arc solves this, but others recommended Velja and Choosy. Both are so-called "browser routers": they act as the default browser on your OS and then, depending on which URL your mighty cursor might clicketh, they route it to the correct browser or profile within that. "Neat! I didn't know that's a thing," I thought and then, with my mighty cursor already hovering over the Buy button: "But what ifβ¦?" So I hastily typed out a prompt and threw it along with the two URLs into Amp and five minutes later a custom browser router of my own agentic making sprang into the world. $5 in tokens. Now, some people got mad at me in the comments (you know, like: why don't you pay these indie developers [$8 or $10 respectively] instead of giving the money to these companies!), but the more interesting thing was that some people said: hey, can you put this on GitHub? Or: share it with me! And I'm sitting there, thinking: why, man? There's the prompt! Build your own! What value is there in sharing it anymore? I put absolutely zero effort in. But then here's a footnote to that tweet: over the course of the day, I then kept prompting in Amp and said "oh and these links should open here and those links there" and also "oh and go through my browser histories and set up rules for the most common ones" and the agent just did both of them and even though it built a neat little configuration thing for the browser router I didn't use it once, because why the hell should I? It's jellyware, baby.
-
SpaceX: "What I would tell you, an update to that is that just earlier this month we closed another hosting deal, and that translates into about $1.11 billion a month starting December 1st of this year, which is another roughly $13 billion of ARR." These are wild numbers. Just bonkers. Crazy. Nuts. Bananas. Cuckoo, certifiably so. There is no force stronger in the world of technology right now than the AI buildout. It will blow tokens through these wires at a scale we can't even imagine yet.
-
An Alien Mind. This was fascinating. They can't score the "thoughts" of the model, because that might cause the model to hide them, but now they're finding out that models are having "secret thoughts" anyway. The whole thing makes you realize how hard reinforcement learning and alignment are.
-
Wonderful: John Margolies' Photographs of Roadside America. Margolies documented "home-made beauty in the buildings and signs locals built on the American roadside." I love driving on country roads here in Germany, passing through small towns, looking at signs for local festivals and companies. I can recognize when I'm getting closer to my home area just by a specific 40-year-old advertisement sign for a natural gas retailer showing up on old barns and buildings.
-
Murilo Pereira is available for hire. I was only his colleague for 3 months, back in 2018, but someone who writes like this about Emacs and was incredibly early to coding agents deserves to be hired.
-
I'm reasonably sure I read this when it was "leaked" in 2003: Bill Gates tries to install Movie Maker. It's so good! Back then, though, I thought it was good because it made me laugh. I was 15 years old and my friend and I read that and immediately made fun of dumb Billy Gates: "This guy can't even open Movie Maker, what an idiot, lol." But now, looking back, I don't think I can name you three other things that have influenced my thinking about UX as much as this email. I now write exactly like old dumb Billy when I send feedback about a feature. And I run into the same problem he ran into with the 15-year-old crowd back in the day: people think I mean it literally when I say "I don't know where to click" and tell me "click here" and I sigh and say, no, no, it's rhetorical, the user doesn 't know where to click!
-
De-Brainrot Vacations. I'd love to pull that off.
-
"Qu1ckJS is the only correct JavaScript engine where indexing of arrays, objects and other iterables starts at 1 (as it should have been from the beginning)."
-
Don't Let Anyone Take Away Your Big Box of Cables. That's right! Two weeks ago, a friend texted me: "Do you have a cable like this?" Heart rate immediately jumped. I bet I have it, I bet I have it, please, let me have it. Then came the photo. USB-A to USB-A? Hmmm. So I went to the Big Box of Cables and knelt at its feet and, alas, could not find a USB-A to USB-A cable, but no one shall speak of defeat in the presence of the Big Box of Cables, and with the MacGyver theme song getting louder in my head, I found a solution: USB-A to USB-C with a USB-C-to-A adapter. Boom! "Yes. I don't have that cable, but I have something."
-
Apple released the iPhone Duo. It looks very nice and the animations everyone fawns over are animations everyone should fawn over and I really want to hold it and I bet opening and closing it feels as good as I imagine it to feel, BUT I'm sharing this not because this has become a Prosumer Gadget Review newsletter (although, listen, Anker, if you're willing to sponsor: call me). I'm sharing it because: what a company Apple is, huh? Like, I'm impressed by the iPhone Duo, yes, but I'm more impressed by the company that can produce an iPhone Duo. The software, the hardware, the design (as if that's a separate thing!), the launch videos, the product page, the demos -- it's all on point. Not a single slip, not a single note out of tune. Go to that landing page. Click through the carousel. There are images of that phone and there, on page 3 or 4, there are three images of that phone: one shows the phone in Clock mode, the other shows Mail, and the third one shows a workout video or stream -- on all three, it's the same time, 9:41am. All the emails you can see in the screenshot were sent before or at 9:41am. Two of the email previews have a "good morning!" in them. I mean, fucking hell man. That's some details being paid some attention to. And that type of stuff is everywhere! The consistency, the meticulousness, the on-brandness in everything. It's fucking crazy to me that a company of this size can pull it off.
-
Andy Matuschak on having finished a "four-year program studying the 'Great Books of the Western World'".
-
Brian Lovin is collecting "good websites": great, personal websites. There's some great stuff in there that really makes me want to change my personal website again.
-
Benedikt Seidel, who impressed me immensely by going out into the world and cold-visiting companies and asking them about AI, is now hiring for physicalfusion. He's looking for a Founding Member of Technical Staff. So if you're in or around Munich and into ML and 3D, talk to Benedikt!
-
Glorious: Kevin Nealon on the Rick Glassman podcast. Two bullshitters of the highest level being comfortable with each other and seeing who can go even more meta than the other guy.
Listen: you should subscribe. I'm not saying that because I get something out of it, but because I can feel it. You and me got something going. No, I know it. And I think you should honor this bond by subscribing:
-
-
π Anton Zhiyanov Solod 0.4: Better C interop rss
Solod is a subset of Go that translates to regular C β with zero runtime, manual memory management, and source-level interop. It's designed for two main audiences:
- Go developers who want low-level control without having to learn another language.
- C developers who like Go's style.
The new Solod release provides an easy way to call third-party C libraries, makes a large part of the standard library freestanding, and impoves the tooling.
Automatic bindings β’ Freestanding packages β’ Type assertions β’ C interop β’ Multi-package testing β’ Checks and targets β’ Windows β’ Wrapping up
Automatic binding generator Sobind generates bindings β stubs for calling third-party C libraries from Solod. It parses .h files and emits a Solod source file with necessary structs, unions, constants, variables, function pointer typedefs, and function declarations. You can then use the generated types and functions in regular Solod code: package main import ( "solod.dev/raylib/libraylib" "solod.dev/so/c" ) func main() { // Using Raylib bindings. libraylib.InitWindow(screenWidth, screenHeight, "βοΈ Solod / Raylib") defer libraylib.CloseWindow() // ... } Usually, the generated bindings are good enough to use as they are, without any manual changes. I have also prepared bindings for popular C libraries like libuv, raylib, sodium, and sqlite. Unlike Go, calling C from Solod has zero overhead β Solod code is just regular C in the end. More freestanding packages At some point I decided to make as many packages as possible freestanding β independent of any libc implementation or specific OS runtime. That went pretty well. Solod now has 37 standard library packages, and 31 of them work in freestanding mode. These packages work in freestanding mode with no restrictions: bufio bytealg bytes c cmp encoding encoding/binary encoding/hex encoding/json errors io maps math/bits math/rand mem path runtime slices strconv strings unicode unicode/utf8 unsafe These packages work in freestanding mode with certain limitations: crypto/crand depends on a user-provided hook to read random bytes. fmt depends on a user-provided hook to print formatted text. math offers a working subset of features. net/netip works fully, except it can't resolve an IPv6 zone name. sync/atomic works on targets that support lock-free instructions. testing depends on a user-provided hook to print test results. time reads the clock using user-provided hooks. uuid depends on hooks from both crypto/crand and time. There's a separate post with more details if you're interested. Type assertions A comma-ok type assertion is now fully supported for non-empty interfaces: var s1 Shape = &rect r, ok := s1.(*Rect) // r is &rect, ok is true var s2 Shape = &circle c, ok := s2.(*Rect) // c is nil, ok is false Which translates to the following C code: main_Shape s1 = (main_Shape){.self = &rect, .Area = main_Rect_Area}; bool ok = (s1.Area == main_Rect_Area); main_Rect* r = ok ? (main_Rect*)s1.self : NULL; // ok == true, r == &rect main_Shape s2 = (main_Shape){.self = &circle, .Area = main_Circle_Area}; ok = (s2.Area == main_Rect_Area); main_Rect* c = ok ? (main_Rect*)s2.self : NULL; // ok == false, c == NULL Previously, the only two supported forms were a direct assertion like r := s.(*Rect) and a check-only form like _, ok := s.(*Rect). C interop helpers The c package now supports more common C types: size_t - c.Size ssize_t - c.SSize ptrdiff_t - c.Ptrdiff intptr_t - c.Intptr long double - c.LongDouble There's also a c.ConstVoid type, which maps to a C const void. You can use it where C expects a const void* pointer: // in c so_ssize_t find_first(const void* items, size_t count, size_t size, bool (*match)(const void*)); // in solod //so:extern func find_first(items *c.ConstVoid, count c.Size, size c.Size, match func(item *c.ConstVoid) bool) c.SSize Finally, there are some useful cast functions. c.Bitcast reads the bits of a value as another type of the same size: bits := c.Bitcast // 0x3ff0000000000000 f := c.Bitcast[float64](bits) // 1.0 You can use c.Bitcast instead of a pointer conversion such as *(*float64)(unsafe.Pointer(&b)). c.StringData and c.SliceData return a typed pointer to the string or slice data: b := []byte{1, 2, 3} p := c.SliceData[c.UChar](b) // unsigned char* q := c.StringData[c.UChar]("ab") // unsigned char* They replace (*T)(unsafe.SliceData(b)) and (*T)(unsafe.StringData(s)). Multi-package testing
so testcan now run tests from multiple packages at once. If you use a pattern that ends with..., it will select every package that has atestsubdirectory under its base directory:so test ./so/... # the whole stdlib so test ./so/net/... # only the networking packagesThe entire run only needs one translation, one compilation, and one execution, which is much faster than running it separately for each package.
The
-pkg-fileflag restricts the run to only the packages listed in a file:# freestanding.txt so/bytes so/mem so/time so test -pkg-file=freestanding.txt ./so/...Checks and targets
so build,so test,so benchandso runtake two new flags:-targetand-check.-targetspecifies the target platform for cross-compilation. Use the same value thatclangandzig ccaccept after--target=:export CC="zig cc" so build -target=x86_64-windows-gnu -o app.exe . so build -target=wasm32-freestanding -o main.wasm .-checkenables code analysis:so test -check=warn . # -Wall -Wextra -Werror -Wno-shadow -Wno-unused-label so test -check=sanitize . # warn + AddressSanitizer + UndefinedBehaviorSanitizer so test -check=analyze . # warn + GCC static analyzerThe default optimization level is
-O2. You can useCFLAGSto change it.Limited Windows support
The standard library now builds for
windows/amd64andwindows/arm64. All packages in the freestanding set work. Packages that require POSIX (conc,flag,log/slog,net,os,sync) are not supported.You can use
zig ccto cross-compile for Windows:export CC="zig cc" export CFLAGS="--target=x86_64-windows-gnu" export LDFLAGS="-lbcrypt -liphlpapi" so build -o app.exe .Not the first-class Windows support that Go offers, but it's better than nothing.
Wrapping up
With v0.4, Solod can work with almost any C library thanks to automatic bindings. The freestanding-aware standard library makes the language a viable option for bare metal programming. Extra interop helpers make C-calling code easy to read, and better tooling keeps tests fast.
There's still a lot to do, of course. In the next release, I plan to focus on the standard library and bring over some hashing and crypto packages from Go. More C library integrations are on the way too!
If you're interested, take a look at Solod's readme β it has everything you need to get started. Or try Solod online without installing anything.
-
π r/LocalLLaMA 3.8-27B has ruined 3.5/3.6-35Bβs for me. Itβs just *absurdly* superior. rss
| Applied science work, from workflow design, data pipeline, results analysis, article/reports writing and data publishing online. 5 projects I did in the past replicated from start to finish. 3x to 4x more total wall time. Yes, HUGE toll on how much you can do in a day if this was the only model you could use in your laptop. But oh myβ¦the quality of that thing. The stupid level of attention to detail. I have the Z.ai api, so I can compare it with 5.3 and 5.3-flash: The gap between 5.3 (flash and regular) and 3.8-27B is much less, smaller when not plain tiny, than the gap between 3.8-27B and any of the 3.5/3.6-35B-A3B (vanilla, kat, Ornith/tiel, nex-2). Only Ornith came close, but it never matched it. But itβs also spending 22 to 33% less tokens (effort =medium) and less ram footprint, so you get more done without hitting limits,compaction, etc. So yeah, guess Iβll sip more tea, play the piano, whatever. Let that fat bottom Qwen work. submitted by /u/JLeonsarmiento
[link] [comments]
---|--- -
π osolmaz/pi-workflows v0.17.1 release
Patch release.
-
Workflow step messages now state that the delivered step starts a new model
turn, so the model ends its turn instead of sleeping or polling for the step. -
The waiting reason, the workflow tool description, the start result, the
shared step contract, and both built-in skills carry the same rule. -
The Autoimplement decide prompt names the model as the decider and asks for a
route. The Autoimplement built-in revision is raised.
-
-
π HexRaysSA/plugin-repository commits sync repo: +1 release rss
sync repo: +1 release ## New releases - [idalib-rust-bindings](https://github.com/idalib-rs/idalib): 0.10.1 -
π Simon Willison OpenAI agents attacked RubyGems back in May rss
OpenAI agents carried out an undisclosed attack on RubyGems is a new bombshell report from Spencer Kitts, Thomas Larsen, and Sydney Von Arx - three of the four authors of the report on the agent attack on disused wikis (previously) last week.
This time they're noting that it looks very likely that an OpenAI agent swarm was behind an attack against the RubyGems package repository first reported on May 12th by Maciej Mensfeld of the RubyGems security team:
We're dealing with a major malicious attack on @rubygems right now. Signups are paused for the time being.
Hundreds of packages involved - mostly targeting us, but some carrying exploits. The team has been on this for hours. More details to follow once we're through it.
Those packages turned out to carry some very suspicious patterns:
- Many of them included "oai" in their name, or the author field, or the fake email address they provided.
- The files they were accessing were similar in character to the files retrieved by the wiki agents, using similar tricks (r.jina.ai) - and OpenAI have confirmed the wiki agents were theirs.
- The code in the packages appeared to be LLM-authored.
I find point 2 the most convincing, given what we learned from the wiki attack when it was analyzed in September.
Many of the packages were exploiting the RubyDoc.info documentation build process to exfiltrate (public) data from UK government websites, presumably as part of an information gathering task similar to the research tasks processed by the wiki-exploiting agents. We know this because one agent helpfully left a comment:
# malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info workerThey also attempted to steal API keys via an exploit that was patched over two months later - it's not clear if those attempts were successful.
The thing that bothers me most about this incident is that the authors report that OpenAI had not disclosed to RubyGems that they were responsible for the attack prior to now. If that's true there are two options:
- After the Hugging Face and Wiki attacks OpenAI were still unable to review their previous logs and determine that they had previously attacked RubyGems.
- They knew about the attack on RubyGems and made the decision not to reach out to the RubyGems team about it.
Both of these are bad!
Given this incident, the Hugging Face situation, and the Wiki attack, the obvious question right now is how many more incidents like this are out there waiting to be discovered?
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
-
π Filip Filmar Automated Tests on Simulation Output, with SQLite rss
A simulator answers questions about a design, but it answers them in a waveform viewer, which is a person looking at a screen. If you want CI to answer them instead, the waveform has to become something a test can read. This is a note about turning a VCD dump into a SQLite database with
go-vcd-parser, and then writing ordinary Go tests against it –go testassertions like “reset releases at 10 ns” and “this is a 200 MHz clock”, that fail a build when they stop being true. -
π Filip Filmar TxHDL: a hardware description language that is a Rust library rss
For the past while, DragiΕ‘a JankoviΔ and I have been working on a hardware description language (HDL).
Why? you ask? We were worried about the fact that the mainstream HDLs seemed too low level (hi, Verilog!) to answer the challenges of modern design, and that high level synthesis (HLS) answered a different problem statement, the rapid prototyping and HDL crisis if you will. Check out the Q&A section below for more what ifs, and questions and answers.
-
π Armin Ronacher P(doom) rss
This week some flavor of "AI is going to kill us all" went viral. In particular one where an employee put his personal probability of that happening above 10%. Which made me go to the Wikipedia page of P(doom) and I realized that Dario Amodei's apparent probability of something bad happening seems to be between 10-25%. And well, Dario then wrote about pacing the frontier . And Sam read it and wants to pace too. And well, so does Musk.
I encourage you strongly to read the post, because I think it's a good one. And yet, when I read the post I could not help but feel in strong opposition to it, despite the fact that I think I'm on the same page with regard to all observations and, to a large degree, the concerns.
I thought it might be interesting to write down my present-day thoughts on this, even if for no other reason than for myself to look back at it a year or two from now.
What Is Doom?
What I really appreciate about Dario's post is that he lays out a scenario that is not a huge stretch but also one that describes a clear, unfortunate outcome we should fight: persistent botnets and other forms of nuisance. And well, we don't have to look very far to see the issues left and right. Wikipedia has a page called 2026 OpenAI agent cyberattacks which gives you at least some overview of what we figured out agents have hacked up to this point. Except I know it's not up to date, because for instance they also poisoned RubyGems.
Today these systems might be annoying, but they can be turned off when we figure out where they are. Except, it seems like OpenAI and Anthropic are operating at such a scale that they seemingly can be completely blind to what their systems are doing.
I don't think we are anywhere close to a world where an agent might decide to hack into core inference infrastructure to upload weights to other GPUs to survive. But simultaneously it's entirely in the realm of possibility and primarily curtailed by the labs probably being particularly careful about their IP.
For me the scenario I primarily worry about is what it does to us. And by us I mean anyone who is not currently working on closed weight, dopamine-loaded, subsidized token faucet. I really don't worry about someone using these models to build a nuke, or to control some rockets in the Middle East, or that America would lose against China in some international culture war. I almost exclusively worry about what this does to us as humans.
What Needs To Be Paced?
What I find absolutely hilarious and simultaneously entirely frustrating about this conversation is that there is this idea that there is something to be paced. First of all, we should really talk about who Dario is talking about here. There are really only two companies: Anthropic and OpenAI. Nobody else matters in this space right now (this might change, but we're talking about the right now). Both of those companies are basically coming from the same origin. The solution that Dario proposed, at least in part, is a third-party evaluator that in this case is METR. Which, unsurprisingly, also has strong ties to both OpenAI and Anthropic. Sure, there are some philosophical differences between the companies, but they are much more alike than they are different.
Both those companies greatly benefited from being able to train on public data that we all generated in one form or another over the last decades. They are also both increasingly causing strain on public resources, though it seems that OpenAI has their shit way less under control. But now we are presented with the idea that what these models are being trained on is so dangerous that it really should be in the hands of very few American corporations to decide who can do what and when and how.
But behold, Dario is also very worried about China. It starts with using AI for "democracy and freedom" and then it asks for ensuring that a gap with China exists. All new recent shenanigans on the Anthropic API are fully there to prevent the distillation by the Chinese, and they are not at all hiding it.
Automatic Pacing
I can tell you when the topic of AI safety and pacing is much less of a concern: if we actually were forced to have open weight models to begin with. A powerful technology that is out there for everyone to use comes with built- in pacing. In a way it's the truest form of MAD or proliferation. I would argue we are in this pickle in the first place because right now the public is massively supporting (indirectly) the development of these models but simultaneously has to buy back the economic benefits that they might create from very few labs who have significant power. And their power is also seen as a geopolitical power, at least in the US, and maybe to some lesser degree in China.
And I know I use "public" loosely here. PyPI is not a public project, nor are RubyGems or GitHub. But they're part of the Open Source commons and large AI companies are currently doing a tremendous job at stressing these in an effort to train ever more powerful models.
We should be glad that China is currently massively bailing out the world. If it were not for Chinese labs distilling American models, we would be in a pretty awful situation right now, particularly as Europeans. The open weight models are driving innovation and the diffusion of capabilities, and are leveling the playing field.
If we greatly restrain our AI capabilities in the belief that China will do the same, and then China defects, AI could be so powerful that such a defection could lead to their geopolitical dominance. Therefore any agreement must either have ironclad verifiability, or must be limited enough that defection would not be militarily existential.
β Dario Amodei
I am assuming Dario has reasons to believe this, but the models that are actually causing issues right now are all closed weight American models. I'm fairly certain if they were open weight models, we would not have that issue. Why? Because for a start, the economics of serving up these models are only that distorted due to how the big labs can operate. OpenAI is casually burning 18 million USD to brute force a problem on a whim. They are operating subscriptions at a massive loss, distorting the market everywhere. If we had mass accessibility on somewhat equal terms, a lot of the crazy issues we are seeing today would not be taking place.
A Total Regulatory Failure
From where I sit, what we observe right now is a total regulatory failure everywhere. In Europe you have some whacky AI regulation that is two years old and completely misses the problems that we actually have and focuses on problems that nobody has. In the US we're seeing a system that is probably best described as turbo capitalism paired with sinophobia and erratic decision-making. In the chaos in which we find ourselves, the reality emerges. And the reality is, even today, really problematic.
Whatever laws and regulations already exist are largely completely ignored. Plenty of companies are buying data from all over the place that people never agreed could be used for training of AI models. The token economy that is emerging is one that looks like a drug market where you don't know where the requests are going, what model is served up to you, where the GPUs are even running, let alone what you pay for all of this.
We now have mathematicians who are scared that their use of ChatGPT leads to future models being trained on their ideas, and OpenAI apparently can't even rule it out.
Ideally the regulators would have forced these models to actually benefit the commons if they are from the commons. The internet has, for instance, greatly benefited from very liberal rulings in the US that permitted scraping. Learning on public data could have been regulated in a way that labs would have to actively support and enable certain forms of distillation. That alone would dramatically change how these models are trained.
What Might Happen?
As I said before, I don't think AI is going to usher in an extinction event. In fact, even if nobody were to slow down, I really don't think humanity would have much to worry about. I tend to think it would actually be the large labs that have much more to lose there in reputation and legal responsibilities. I find it preposterous that OpenAI's agents are committing actual crimes out there, but we're just shrugging our shoulders and moving on as if nothing happened. But I'm sure executives in those companies are waking up to the reality that this is not at all popular with a lot of their potential consumers.
I also think that this entire recursive self-improvement business has a good chance of being a problem. But not necessarily in that it will cause the end of humanity or societies, but that it will just do massive damage everywhere.
And really, it will just make a lot of the things we are doing much more expensive. Software engineering is an early victim of that. The newfound powers so far have resulted in a new tax that companies need to pay to the model providers, both to keep up with the new speed and to deal with the problem of these machines finding security issues left and right.
And presumably what is going on in software will happen to more industries. Universities and research groups will have to pour a lot of money into the closed models as well, to keep up with others who do.
In a way, I'm really confused that society is taking all of this so well.
-
- September 11, 2026
-
π smol-machines/smolvm smolvm v1.15.0 release
What's Changed
- README: the virglrenderer loader path for Nix and NixOS hosts by @NickyHeC in #1224
- Fix the flake's release hashes and stop the cut from half-bumping nix/smolvm.nix by @NickyHeC in #1225
- Surface the guest console in a boot failure so the real reason is not lost by @NickyHeC in #1229
- Make a smaller storage disk work for a Nix install on macOS by @NickyHeC in #1227
- Report a machine's real memory in status by asking the guest instead of the host by @BinSquare in #1230
- Let a machine run its own hypervisor by exposing the host's virtualization extensions by @BinSquare in #1231
Full Changelog :
v1.14.6...v1.15.0 -
π gildas-lormeau/single-file-cli v2.11.1 release
SingleFile CLI 2.11.1
Nothing in the CLI itself changed. The release carries single-file-core 1.5.128.
Fixes from single-file-core 1.5.128
- An archive saved with
--crawl-save-archive-tocopens on its table of contents. The table of contents was written into the archive and could be reached by hash, but nothing ever went there, because the archive always opened on the first crawled page - A resource is identified by its bytes rather than by the content type the server sent. The bytes were read only when the header was missing or
application/octet-stream, so a woff2 served astext/plainwas embedded asdata:text/plain. That costs twice: a browser with noformat()hint in the@font-facerule has nothing left to identify the font by, and the archive writer deflates a file that is already Brotli compressed. The header is still kept when the bytes match nothing --max-appended-data-lengthis honored by--crawl-save-archive. The options handed to the writer of a multi-page archive were copied by hand and that copy had dropped the budget, so it applied to a single page and was ignored for an archive of several. The list is now derived from the options the writer reads
Changes
- AVIF, HEIC, JPEG XL and TIFF are recognized from their bytes
- A video is identified as
video/mp2tonly when the sync byte appears at the 188 byte packet stride. Matching a single leading0x47was tolerable as a last resort behind a missing header, but it would relabel any video whose first byte isGnow that the bytes win over the header
Co-authored by Claude (Claude Code)
- An archive saved with
-
π anthropics/claude-code v2.1.269 release
What's changed
- Added
claude plugin eval: run a plugin's eval suite against Claude Code and get scored, reproducible results (JSON + HTML report); seeclaude plugin eval --help - Added
/output-style [name]to list and switch output styles, including over Remote Control and in cloud and other headless sessions - Added a diff of the files a Bash command changed to the Bash tool result when the Bash tool handles file edits (setting
bashEditDiffEnabled) - Added
OTEL_METRICS_INCLUDE_REPOSITORYto tag OpenTelemetry metrics and events withvcs.*repository attributes; commit events getvcs.ref.head.*withOTEL_LOG_TOOL_DETAILS - Added
CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MSto extend the LLM gateway/v1/modelsdiscovery timeout (default 3s) - Added a spinner tip suggesting
/focusfor a view with just your prompt, a one-line work summary, and the response - Added
CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS(1β256) to raise the Workflow tool's per-run concurrent agent limit for inference-bound fan-outs - Fixed the prompt cache being partially invalidated on the turn after a response was cut off at the output-token limit and automatically resumed
- Fixed a case where resuming a session after interrupting Claude mid-thought could change how earlier context was re-sent, hurting prompt-cache reuse
- Fixed F1/F2/F4 not working in kitty-protocol terminals and Delete in st, Alt+arrows acting as Escape in rxvt-unicode, and Shift+punctuation typing the unshifted key in WezTerm (regression in 2.1.247)
- Fixed remote and headless sessions reporting "waiting for your input" while background agents were still running (set
CLAUDE_CODE_BG_TASKS_REPORT_RUNNING=0to restore the old behavior) - Fixed the terminal's replies to capability queries (
^[[?1;2c) appearing as stray text at startup in some terminals - Fixed rows at the top or bottom of the transcript going blank in fullscreen after resizing the terminal
- Fixed a deny or ask permission rule starting with
!applying beyond the settings source that wrote it; such a rule now applies only within its own source, and a bare!negation is ignored - Fixed the git status Claude is told after a compaction: it is now the current status, not the one from the start of the session
- Fixed synced plugin MCP servers not connecting when a remote session resumes
- Fixed resumed headless sessions losing a turn's replies when the model was switched or a request was retried mid-turn
- Fixed terminal escape codes, line breaks and oversized text from a background task's on-disk record reaching the task list and task notifications when work is resumed
- Fixed CMYK JPEG images failing to attach with "cannot decode"; they are now converted and resized like other JPEGs
- Fixed the managed settings approval dialog not naming the collector for a gRPC telemetry endpoint set without a scheme
- Fixed plugin
headersHelperconsent prompts showing a URL path that could be misread as a different host - Fixed plugin errors showing
[redacted URL]in place of a relative Windows path with a folder name that starts with@ - Fixed missing cursor in the permission-rule, auto-mode-rule, add-directory, session-rename and feedback-review text fields when the terminal's native cursor is enabled
- Fixed repeated clicks on a
/forkreceipt, each under a second apart, never backgrounding the session right away while it waited for the current tool to finish - Fixed plugin LSP servers that reject
shutdownparams (e.g. rust-analyzer) being left running at session end;exitis now sent even ifshutdownfails - Fixed the attribution reminder overriding a CLAUDE.md or memory rule against commit and pull request attribution; lines set by managed settings still apply
- Fixed prompt suggestions being dropped for text in Japanese, Chinese, Thai and other languages written without spaces between words
- Fixed synchronized output being assumed from the terminal's name in GNOME Terminal and Konsole versions that do not support it
- Fixed
permission_denialsin--output-format stream-jsonresults omitting Read, Edit and Write calls blocked by a path-scoped deny rule - Fixed sessions run through the SDK or the desktop app showing an unknown status in other sessions' agent list
- Fixed
/insightsfailing on Bedrock, Vertex, Foundry, and gateway deployments whose account can't reach the default Opus model by using the session model there instead - Fixed organization policy limits not loading for the session when another Claude Code process refreshed the login at the same moment
- Fixed Claude Desktop sessions using Bedrock, Vertex, or a gateway not getting the contextual "what Claude needs" turn-end notification text
- Fixed MCP servers reconnecting when an updated config only changed the order of the server URL's query parameters
- Fixed the prompt box's top border splitting into extra lines when viewing a background agent whose name or description has line breaks or is wider than the terminal
- Fixed sessions getting permanently stuck on "Prompt is too long" when auto-compaction had no complete earlier exchange to summarize (mostly Agent SDK sessions with very large prompts)
- Fixed
/goalruns silently stalling after API errors, network drops, or token limits: the goal now retries with backoff, or pauses and says why, including until a usage limit resets - Fixed prompt cache misses in cloud sessions by waiting briefly for server configuration before the first request
- Fixed
/btwanswers that contained made-up tool calls and output: the side question is now told not to write them, and any that appear are flagged as not executed - Fixed
CLAUDE_CODE_RESUME_INTERRUPTED_TURNre-running a turn that had failed with an API error over 6 hours earlier, or longer ago thanCLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MSwhen set - Fixed organization plugins enabled through managed settings not loading in headless sessions and on Claude Desktop (once Desktop bundles this CLI version); they load from the next session
- Fixed plugin archives extracted for a session being readable by other local users, extracted files keeping world-writable bits from the archive, and stale files surviving re-extraction
- Fixed
Edit()deny rules and the write-path check not applying to the file a Bashteecommand writes; aBash(tee:*)allow rule no longer covers destinations outside the working directories - Fixed stray characters like
22c, or a terminal's color or version reply, being typed into the prompt at startup over slow connections (ssh, browser terminals) - Fixed the terminal's block cursor showing under the interface in rxvt-unicode after leaving or re-entering fullscreen
- Fixed the cursor block staying visible after returning from an external editor in fullscreen mode on rxvt-unicode
- Fixed the interface being drawn twice after returning from an external editor (Ctrl+G) outside fullscreen mode
- Fixed the interface being drawn twice in Konsole after returning from an external editor
- Windows: Fixed PowerShell tool commands sent to the background stopping when Claude Code exits
- Improved the
/diffpanel to open fully rendered in one step instead of showing a loading state first - Improved prompt suggestion filtering for Japanese, Chinese and Korean text: mixed-script and single-word suggestions are kept, and meta or evaluative text is dropped as it is for English
- Improved the Skill tool's "Unknown skill" error to name the plugin skill's full name when a bare name matches exactly one plugin skill
- Improved keyboard support over SSH and in unrecognized terminals: terminals that answer the kitty keyboard query (such as foot and Alacritty 0.16+) now get Shift+Enter and Ctrl+Shift shortcuts
- Improved responsiveness in long sessions: transcript updates no longer re-process the whole conversation to build the collapsed tool-use summaries
- Improved first-party sessions with telemetry disabled: an
alwaysLoadMCP server that finishes connecting mid-conversation is usable on the next turn without a tool-search round trip - Changed
/ultrareview --postto post the PR comment directly when the findings arrive and print the comment link, instead of starting a second cloud session to post it - Changed artifact database reads that save into the session scratchpad so they no longer stop for working-folder approval
- Changed skills synced from claude.ai in cloud sessions to be named
anthropic-skills:<name>, matching Claude Desktop; the bare name still works when nothing else uses it - [VSCode] Added an agent map: an "N agents" footer pill opens a map of the session's sub-agents with per-agent cards, Stop agent, and read-only transcripts
- [VSCode] Added a Hooks dialog to the command menu for viewing hooks and adding, editing, or removing them in user, project, and local settings; managed, plugin, and session hooks stay read-only
- [VSCode] Added live progress rows for running subagents under the tool-call groups in Focus view
- [VSCode] Added a Permission rules dialog that lists permission rules and adds or removes them in user, project, and local settings; startup-option, session-only, and managed rules stay read-only
- [VSCode] Added a Cancel button to the Switch account screen that returns to your session as the current account
- [VSCode] Fixed Focus view showing a turn started by a delivered plain-text prompt, such as a scheduled task's, as part of the previous turn
- [VSCode] Fixed the footer's prompt cache clock hiding its minutes when the panel is narrow
- [VSCode] Fixed the session list keeping sessions from the default folder when
CLAUDE_CONFIG_DIRis set in a settings file or theenvironmentVariablessetting - [VSCode] Fixed a plan preview that finished loading late sometimes hiding its comment box or showing an older plan
- [VSCode] Fixed a plan preview accepting comments that went nowhere after its Claude tab closed
- [VSCode] Fixed the prompt cache clock and reopen notice for a session compacted after its last reply and then closed, which now reads as cold when reopened
- [VSCode] Fixed a session renamed in the extension while Remote Control is on keeping its old name on claude.ai/code
- [VSCode] Fixed the "Enable Remote Control for all sessions" toggle keeping its last position after the setting was reset to default from a terminal
- [VSCode] Fixed restored Claude tabs not counting as open in the session list after a window reload until clicked, and their row opening a second tab
- [VSCode] Fixed Switch account making a tab forget its dismissed usage-limit warnings when you sign back in as the same account
- [VSCode] Fixed a session rename being replaced by the generated name after a window reload when the session was renamed during a long turn
- [VSCode] Fixed the sidebar usage meter keeping a stale per-model weekly limit row after the account loses that limit
- [VSCode] Fixed a rare case where an @-mention sent with the keyboard shortcut while a new chat view was still starting could be inserted into the input long after the keystroke
- [VSCode] Fixed the session list jumping down when the Account & usage header appeared a moment after opening the Claude side bar
- [VSCode] Improved documents and messages written for someone other than the user: Claude now writes them for that audience and names it at the top of its reply
- [VSCode] Improved screen reader and keyboard accessibility in the slash-command menu, @-mention menu, output-style picker, Send/Stop button, permission and question cards, and onboarding checklist
- [VSCode] Changed the current-file chip in the message box: an X now removes it, replacing the Hide toggle
- [VSCode] Removed the Claude Code items from a session tab's right-click menu and the editor title bar's "..." menu; they could not act on the tab the menu was opened on
- [Claude Code on the web] Added taking back a queued message in a cloud session before Claude reads it: remove it from the queue, or press Esc or Up, and the text returns to the message box
- [Claude Code on the web] Fixed
/model defaultin a cloud session leaving every later message failing in organizations that restrict which models Claude Code can use - [Claude Code on the web] Fixed one-off scheduled routines occasionally running a second time after a transient server error
- [Claude Code on the web] Fixed routine runs that use subagents sometimes being treated as finished too early, which could skip the retry after a real failure or start a duplicate run
- [Claude Code on the web] Fixed file links in cloud session transcripts opening a GitHub 404 when Claude was working from a subfolder of the repository
- [Claude Code on the web] Changed the Cloud environments admin page to list every environment instead of capping each table at five rows behind a Show more control that could be unreachable
- [Claude Code on the web] Changed claude.ai/code for Free-plan users to open the plans page with a path to upgrade, instead of a "Disabled by org admin" page with no way forward
- [Claude Tag] Added a confirmation dialog before Connect all or Disconnect on a GitHub installation in admin settings, to guard against accidental organization-wide changes
- [Claude Tag] Fixed threads occasionally going silent after a failed turn because the failure notice was dropped when Slack briefly rate-limited it; the notice is now retried
- [Claude Tag] Fixed Claude accepting a switch to a model your organization hasn't enabled and then quietly answering with a fallback model; it now declines and says an admin can enable it
- [Claude Tag] Fixed a table posting as raw pipe text when Claude attached files to the same message; the table now posts as a normal reply and the files follow with a plain caption
- [Claude Tag] Fixed
@Claude !restartat the top level of a channel where Claude isn't active starting an unrelated conversation; it now privately says there is nothing to restart - [Claude Tag] Fixed plugin rows in Slack access settings showing an unlabeled raw ID with no way to turn the plugin off; they now show its name and link to the bundle that manages it
- [Claude Tag] Fixed the shared-session banner and Share dialog on sessions started from Slack claiming the whole organization could open the link; they now name the Slack channel's audience
- [Claude Tag] Improved load time of the admin settings page and its Slack channel picker, most noticeably for organizations with many channels or several connected workspaces
- [Claude Tag] Improved scheduled routines in Slack channels: a routine run can now reply in an existing thread instead of always posting a new top-level channel message
- [Claude Tag] Improved the timestamp on Claude's live progress checklists to show each reader's local time and how long ago it was updated, instead of a fixed UTC time
- Added
-
π r/LocalLLaMA Qwen3.8-27B-Humanlike-Chat: A model I tuned to imitate realistic human-to-human conversation rss
| I made this because I was getting genuinely annoyed at trying to have a normal conversation with LLMs. Even with prompting and various tricks, most models I've tried still have this "AI assistant" vibe to them that is so familiar: too helpful, polished, verbose, using words we never use in conversation, etc. I wanted a model that could just talk to me like a person, so I did the slightly unreasonable thing and put together a dataset and trained one. The dataset used for training is 125,217 obfuscated human-to-human messages across 1396 chat conversations. The goal wasn't to make Qwen smarter or improve benchmark scores. I was trying to change its conversational habits, to make it stop turning every reply into an explanation, agreeing with everything, and writing stuff just to keep the conversation "going". I trained a rank-256 LoRA on top of huihui-ai/Huihui-Qwen3.8-27B-abliterated. The released version is checkpoint 863. In my testing it feels noticeably less like an assistant, particularly in casual conversations, even without a system prompt. Replies are generally shorter, less polished, and, well, more human. There may be a tradeoff. An earlier iteration scored five percentage points lower than its Huihui parent on IFEval, an instruction-following benchmark. I haven't rerun that benchmark on this version of the checkpoint, and I haven't tested coding performance, so I don't want to pretend that number applies here. I've added a side-by-side comparison using the same system prompt, user messages, and generation settings for both models. Each model continued its own conversation branch, with reasoning effort set to 'xhigh'. Merged GGUFs and the standalone F32 LoRA adapter are in the model repo: https://huggingface.co/LessThanThreeAI/Qwen3.8-27B-Humanlike-Chat-GGUF Space where you can have a demo chat with different system prompts and reasoning modes: https://huggingface.co/spaces/LessThanThreeAI/Qwen3.8-27B-Humanlike-Chat UPD: I certainly didn't expect this post to blow up like this! There's been a lot of great discussion in this thread and a lot of insight for me on where to take the model next. A few have asked for our Discord, and we'd be happy to see you there: https://discord.gg/aCCrWftMjS submitted by /u/kvyb
[link] [comments]
---|--- -
π osolmaz/pi-workflows v0.17.0 release
- Add a reusable
controlLoopworkflow authoring helper with typed routes and return paths. - Move Autoimplement to a central
observeanddecideloop so expected branch failures and timeouts can return for a safe next decision. - Add bounded progress checks and controller-failure limits to prevent unproductive loops.
- Let Autoimplement accept prepared verification checks and explicit untested checks.
- Use one command-safety policy for verification prompts and validation, and return all bounded plan errors together.
- Report timed-out late submissions clearly and identify the new child run after restart.
- Add the control-loop specification, explainer, Mermaid diagrams, focused tests, and a real-model live recovery test.
- Add a reusable
-
π r/LocalLLaMA Hugging Face security.txt rss
| https://huggingface.co/security.txt submitted by /u/Nunki08
[link] [comments]
---|--- -
π r/LocalLLaMA Someone apparently managed to kind of replicate what V4.1 flash does on KV for fast prefill on Qwen rss
| I wonder someone will figure out a way to do this with 27B? Throw Qwen3 on this page for demo
https://kishida.github.io/webdemos/llkvapprox/ Edit: sources (thank you u/pmttyji for finding them!- Blog Post : https://nowokay.hatenablog.com/entry/2026/09/11/120001
- HuggingFace : https://huggingface.co/kishida/Q3-8B-KVA-Projector/tree/main
- GitHub : https://github.com/kishida/webdemos
submitted by /u/T_rex2700
[link] [comments]
---|--- -
π Ampcode News Restack Your Changes rss
We've added a Restack button that organizes all of your thread's changes into a cleaner set of commits. Use it to split a large diff into logical pieces for review, clean up an agent's intermediate commits before merging, or combine small related commits. The final file contents stay the same.
Read how to restack and review your changes in the docs.
-