- ↔
- →
- August 04, 2026
-
đź”— jesseduffield/lazygit v0.64.0 release
What's Changed
This release has massive changes, but most of them should hopefully not be visible: I completely overhauled lazygit's concurrency model, which was, let's say, less than robust; there were lots of data races, and we were just lucky that this didn't result in crashes or misbehavior more often. We now have a robust concurrency model with no known data races, and in fact we run our integration test suite on CI with the
-raceflag to prove that. The user visible part of this is that some operations run a little more smoothly now; for example, there used to be an ugly spinner freeze at the end of checking out a branch, which is now gone.However, since the changes were so massive there's a higher-than-usual chance of regressions, so please report any that you find.
Apart from that, we also have a few useful enhancements; the most notable one is probably that we now show the Github checks status of pull requests in the branches panel.
Enhancements 🔥
- Show a spinner for more long-running operations by @stefanhaller in #5765
- Remove the BLOCK_UI refresh mode by @stefanhaller in #5790
- Support a
{{diffContext}}template variable in external diff command by @stefanhaller in #5841 - Some small UI polish by @stefanhaller in #5853
- Auto-scroll when dragging to create range selection in staging view by @stefanhaller in #5855
- Create a range selection in list views by dragging with the mouse by @stefanhaller in #5856
- Reorder commits (or rebase todos) by dragging with the mouse by @stefanhaller in #5857
- Rework the custom pager config (rename to diff renderer) by @stefanhaller in #5870
- Show a Github PR's combined checks state in branches list (and main view for selected branch) by @stefanhaller in #5874
Fixes đź”§
- Fix stuck inline status when pushing/fetching by @stefanhaller in #5768
- Escape the merge conflicts view before prompting to continue the rebase by @stefanhaller in #5822
- Fix side panel rendering when branches/commits are not their panel's first tab by @stefanhaller in #5825
- Suppress output from a few git commands that pollute the command log by @stefanhaller in #5834
- Fix stall with ctrl+z and fg by @stefanhaller in #5830
- Fix more problems related to concurrent repo switch and background refresh by @stefanhaller in #5839
- Fix Windows crash when switching to fullscreen mode with a custom pager by @stefanhaller in #5838
- Fix multi-selection of files with common prefix not working in commit files panel by @stefanhaller in #5868
- Support absolute paths when detecting edit preset from EDITOR env var by @stefanhaller in #5876
- Exclude more commit trailers from auto-wrapping by @stefanhaller in #5871
- Prevent stale index.lock files from diffs rendered through a pty on Windows by @stefanhaller in #5888
- Fix orphaned processes on Windows when quickly navigating between commits by @stefanhaller in #5885
Maintenance ⚙️
- Perform refresh model and view updates on the UI thread instead of using mutexes by @stefanhaller in #5767
- Fix data race with status string by @stefanhaller in #5777
- Fix data race with command log by @stefanhaller in #5779
- Make integration tests using commits more robust by @stefanhaller in #5782
- Synchronize ViewBufferManager.Close with a starting task by @stefanhaller in #5786
- Make model<->view index conversions independent of rendering by @stefanhaller in #5785
- Fix idle notification deadlock by @stefanhaller in #5821
- Bump tcell to an unreleased snapshot to fix a shutdown race by @stefanhaller in #5824
- Fix command log streaming race by @stefanhaller in #5789
- Synchronize async view rendering by @stefanhaller in #5791
- Run tests with race detection on CI by @stefanhaller in #5792
- Gocui mouse event fixes by @stefanhaller in #5854
- Move Github PR cache out of state.yml into a separate file by @stefanhaller in #5884
- Make justfile commands available in the Nix development shell by @TyceHerrman in #5890
Docs đź“–
- Clarify contribution policy by @stefanhaller in #5809
I18n 🌎
- Update translations from Crowdin by @stefanhaller in #5891
Performance Improvements 📊
- Make scrolling down a very long diff with the scroll wheel much smoother by @stefanhaller in #5780
New Contributors
- @TyceHerrman made their first contribution in #5890
Full Changelog :
v0.63.1...v0.64.0 -
đź”— WerWolv/ImHex Nightly Builds release
Nightly
fd214d5Changelog- impr: Render disassemblers as a stacked tab bar
- build: Vendor GLFW
- impr: Align opcode mnemonics
- impr: Merge jump arrows with same destination together
-
đź”— New Music Releases Northlane - CUT_it rss
Northlane - a new release is available:
- 2026-08-04: CUT_it (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
- August 03, 2026
-
đź”— r/Harrogate Lost cat nr Mayfield Grove/Nydd Vale Terrace rss
| Hi, our girl Kalo got out in the night (Mayfield Grove/Nydd Vale Terrace) and hasn't come back yet. She has a tiny white speck near her left leg and is otherwise black with yellow eyes. She should be wearing a yellow and white collar but may have done away with it on her adventures. She is medium sized and quite skinny. She likes to hide under things. Could everyone please check their back gardens/sheds for her and let us know if they see anything? submitted by /u/HEDGEHOG_ANUS
[link] [comments]
---|--- -
đź”— @HexRaysSA@infosec.exchange "In this new world of hacking, how do we optimize the way information is mastodon
"In this new world of hacking, how do we optimize the way information is relayed and validated in an agent-human hacking environment?"
@mahal0z explores how LLMs killed the old decompiler-collaboration playbook — and what could replace it.👉 Check out our latest guest blog: https://hex-rays.com/blog/llms-have- reshaped-how-we-think-about-decompilation-and-collaboration
-
đź”— Anton Zhiyanov Going Backward rss
Go's standard library has a
slicespackage with a function calledBackward. It lets you iterate over the elements of a slice in reverse order:// Backward returns an iterator over index-value pairs in the slice, // traversing it backward with descending indices. func Backward[Slice ~[]E, E any](s Slice) iter.Seq2[int, E]If you're not deeply familiar with generics and iterators, the natural reaction to this signature (and to the others in the
slicespackage) is: "couldn't this have been made simpler somehow?"To answer that, let's run a thought experiment. Let's picture ourselves as a distant ancestor, living in the pre-iterator era, who decided to implement
Backwardfrom scratch.Our imaginary ancestor doesn't work at Google, so don't project their decisions onto the Go development team. They had their own reasons — and no Jira.
1. A slice in reverse A pleasant, sunny summer day, birds singing. You're at the keyboard as usual, and suddenly you decide to write a function for walking a slice in reverse order. Anything beats working on yet another Jira ticket. // Backward returns the slice in reverse order. func Backward []T { n := len(s) res := make([]T, n) for i := n - 1; i >= 0; i-- { res[n-1-i] = s[i] } return res } Usage example: s := []int{11, 22, 33, 44, 55} b := Backward(s) fmt.Println(b) // [55 44 33 22 11] The implementation is simple and works reliably. There's one drawback, though: Backward creates a copy of the slice, which can be wasteful for large slices. Besides, the sun has hidden behind a cloud, and it looks like rain is coming. You decide to work a bit more. 2. Gimme, gimme, gimme
To avoid copying the slice, you decide to return a closure that knows the current position in the original slice and returns the next element on each call:
// Backward returns a function that, on each call, returns the next // element of the slice (in reverse order) and a flag indicating // whether to continue iterating (false means done). func Backward[T any](s []T) func() (T, bool) { i := len(s) return func() (T, bool) { if i == 0 { var zero T return zero, false } i-- return s[i], true } }Usage example:
s := []int{11, 22, 33, 44, 55} next := Backward(s) for { v, ok := next() if !ok { break } fmt.Print(v, " ") } fmt.Println() // 55 44 33 22 11Now it allocates O(1) memory instead of O(n). That's better.
Before moving on, you glance out of the window. Yep, sure enough, the rain has started, and the sky is even cloudier than before. Excellent working weather!
3. A callback-based iterator Something about the calling code keeps bothering you. It came out rather imperative. You'd like to hand the loop mechanics over to Backward and leave the caller with nothing but the application logic (whatever it is you do with the slice elements). You decide to complicate Backward's signature a little. Now it will return an iterator function that takes a callback as an argument and applies it to each element of the slice: // Backward returns a function that takes a yield callback. // The callback is invoked for each element of the slice (in reverse order). func Backward func(yield func(T) bool) { return func(yield func(T) bool) { for i := len(s) - 1; i >= 0; i-- { if !yield(s[i]) { return } } } } The yield function returns a bool — that's so the callback can signal when it wants to stop the traversal early. Now you can turn the for loop body in the calling code into a callback, and you don't need the loop anymore: work := func(x int) bool { if x < 30 { return false // early exit } fmt.Print(x, " ") return true } s := []int{11, 22, 33, 44, 55} it := Backward(s) it(work) fmt.Println() // 55 44 33 Mmm, very functional. One small nuance: Backward's signature looks a bit heavy. You add a separate type for the return value: // Seq is an iterator over sequences of individual values. // When called as seq(yield), seq calls yield(v) for each value // v in the sequence, stopping early if yield returns false. type Seq[T any] func(yield func(T) bool) The function looks much better now: func Backward[T any](s []T) Seq[T] { // body unchanged } Praising yourself for inventing the iterator, you walk over to the window. It looks like the weather's gotten worse. The rain is coming down in buckets, and the sky is so overcast that it's grown as dark as evening. 4. Iterator 2: Return of the Iterator
It's all great, but then it hits you: an ordinary
rangeover a slice returns both the index and the element's value. Your iterator returns only the value. You decide to fix this vexing oversight:func Backward[T any](s []T) func(yield func(int, T) bool) { return func(yield func(int, T) bool) { for i := len(s) - 1; i >= 0; i-- { if !yield(i, s[i]) { return } } } }Usage example:
work := func(i int, x int) bool { fmt.Print(i, ":", x, " ") return true } s := []int{11, 22, 33, 44, 55} it := Backward(s) it(work) fmt.Println() // 4:55 3:44 2:33 1:22 0:11Since the result's signature has changed, it no longer fits the
Seqtype. What can you do — you'll have to add a new type. After ten minutes of deliberation, you decide to call itSeq2:// Seq2 is an iterator over sequences of key-value pairs. // When called as seq(yield), seq calls yield(k, v) for each pair // (k, v) in the sequence, stopping early if yield returns false. type Seq2[K any, V any] func(yield func(K, V) bool) func Backward[T any](s []T) Seq2[int, T] { // body unchanged }You get up to stretch your legs, and go to the window. The downpour is so heavy you can't make anything out. Lightning is flashing. Hail the size of your fist is falling — you've never seen anything like it in your life. Well, these things happen!
5. Not quite a slice
Have you thought of everything? Seems so. But you're not going back to Jira tickets just yet. Refreshing your memory of the Go spec, you realize that besides ordinary slices there are "user-defined" ones — types whose underlying type is a slice:
// IDs is a slice of identifiers. type IDs []intBackwardworks perfectly well withIDs— the compiler accepts a value of typeIDssince its underlying type is[]int:ids := IDs{11, 22, 33, 44, 55} it := Backward(ids) it(work) fmt.Println() // 4:55 3:44 2:33 1:22 0:11But what about this?
// backwardIDs builds an iterator over a slice of identifiers // in reverse order. var backwardIDs func(IDs) Seq2[int, int] = Backward[int] // ERROR: cannot use Backward[int] // (value of type func(s []int) Seq2[int, int]) // as func(IDs) Seq2[int, int] value in variable declarationHere's where the difference between
IDsand[]intshows up.When you assign the function itself, it's the signatures that get compared:
func(IDs) Seq2[int, int]versusfunc([]int) Seq2[int, int]. Signatures match only if the parameter types are identical. ButIDsand[]intare different, even though one is based on the other. The signatures differ → you get an error.Scratching your head, you turn to the spec once again and find a special generic syntax:
~T. It represents the set of all types whose underlying type isT. Just what you need!Now you'll have to parameterize not only the element type (
E) but the slice type (Slice) as well.Eis needed for the returned values, whileSlicelets the function accept not just[]E, but any types based on it:func Backward[Slice ~[]E, E any](s Slice) Seq2[int, E] { return func(yield func(int, E) bool) { for i := len(s) - 1; i >= 0; i-- { if !yield(i, s[i]) { return } } } }Now the example:
var backwardIDs func(IDs) Seq2[int, int] = Backward[IDs, int] ids := IDs{11, 22, 33, 44, 55} work := func(i int, x int) bool { fmt.Print(i, ":", x, " ") return true } it := backwardIDs(ids) it(work) fmt.Println() // 4:55 3:44 2:33 1:22 0:11It works! You've ended up with something similar to
Backwardfrom theslicespackage.You exhale wearily and walk over to the window. The downpour and hail have given way to a hurricane. Trees and billboards go flying past. Toads, for some reason, are falling from the sky.
6. Iterator 3: Judgment Day
To take your mind off the strange events outside the window, you keep pondering.
An ordinary
Backwardis already great. But it would be even better if the traversal logic itself were configurable. On the other hand, if you end up with a lot of parameters, a strategy would suit better. And, by the way, it wouldn't hurt to add a factory that produces iterator factories according to given criteria...Before you can finish the thought, the ground outside the window tears open with a deafening roar. An enormous black hand, streaming molten lava and flickering flames, bursts out of the fissure, seizes you, and drags you straight down to hell.
P.S. Despite the article's tongue-in-cheek tone, the "complicated" version in the standard library is justified (
Backwardjust follows suite with other package functions). But if you're doing something similar in a project that solves a specific problem — it might make sense to stop at the simpler option. -
đź”— r/Harrogate Does anybody know of a RSPB pin badge box somewhere near or in Harrogate? My kids and I collect these. rss
| submitted by /u/OnCrystalsLane
[link] [comments]
---|--- -
đź”— smol-machines/smolvm smolvm v1.7.4 release
What's Changed
- Ship the disk templates zstd-compressed and expand them to sparse files on first use by @BinSquare in #771
- Copy the storage template by seeking between its data extents instead of scanning its whole logical size by @BinSquare in #770
- Harden fused rollout lifecycle by @BinSquare in #801
- Avoid copying CUDA module state for clone channels by @BinSquare in #804
- Load device-resident LoRA policies through managed executors by @BinSquare in #806
- Reject a registry-image machine that has no network at create instead of failing every start with a raw DNS error by @BinSquare in #807
- Perform machine file reads and writes inside the running workload container so uploads are visible to exec by @BinSquare in #810
- Reuse CUDA module handoffs across clone workers by @BinSquare in #808
- Cache pulled OCI images on the host so repeat ephemeral machine runs skip the registry pull by @BinSquare in #805
- Signal guest boot-readiness with an event-driven vsock doorbell as the primary ready signal, keeping the marker file and control-channel ping as fallbacks by @BinSquare in #811
- Map CUDA module handoffs across clone workers by @BinSquare in #814
- Preserve per-device GPU admission headroom by @BinSquare in #826
- Promote CUDA pool readiness and refill improvements by @BinSquare in #828
- Bump the workspace to 1.7.3 by @BinSquare in #829
- Install the zstd-compressed disk templates in the Arch package so the build no longer fails on the removed uncompressed storage template by @BinSquare in #830
- Set the library search path on the boot subprocess before launch so libkrun can load libkrunfw when embedded without a wrapper script by @BinSquare in #832
- Make fork-pool lease activation retry-safe by @BinSquare in #831
Full Changelog :
v1.7.2...v1.7.4 -
đź”— smol-machines/smolvm smolvm v1.7.3 release
What's Changed
- Ship the disk templates zstd-compressed and expand them to sparse files on first use by @BinSquare in #771
- Copy the storage template by seeking between its data extents instead of scanning its whole logical size by @BinSquare in #770
- Harden fused rollout lifecycle by @BinSquare in #801
- Avoid copying CUDA module state for clone channels by @BinSquare in #804
- Load device-resident LoRA policies through managed executors by @BinSquare in #806
- Reject a registry-image machine that has no network at create instead of failing every start with a raw DNS error by @BinSquare in #807
- Perform machine file reads and writes inside the running workload container so uploads are visible to exec by @BinSquare in #810
- Reuse CUDA module handoffs across clone workers by @BinSquare in #808
- Cache pulled OCI images on the host so repeat ephemeral machine runs skip the registry pull by @BinSquare in #805
- Signal guest boot-readiness with an event-driven vsock doorbell as the primary ready signal, keeping the marker file and control-channel ping as fallbacks by @BinSquare in #811
- Map CUDA module handoffs across clone workers by @BinSquare in #814
- Preserve per-device GPU admission headroom by @BinSquare in #826
- Promote CUDA pool readiness and refill improvements by @BinSquare in #828
Full Changelog :
v1.7.2...v1.7.3
-
- August 02, 2026
-
đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-02 rss
IDA Plugin Updates on 2026-08-02
Activity:
- augur
- disrobe
- 66848a6d: sync measured evidence and verification gates
- 08f98a2b: swift: align evidence and cli scope
- e6d6ea83: evidence: separate roster and recovery counts
- a46471b2: as3: preserve postfix index semantics
- 8e6067b6: as3: type whitespace fixture bindings
- a0fa9924: as3: pin whitespace short-circuit fixture
- a74c661a: docs: narrow auto recovery claim
- f2602cfd: jvm: fail closed on javap errors
- ef097d69: jvm: require compiler equivalence gates
- a059a93d: jvm: bind link-skipped evidence
- aaaae4bc: dotnet: validate field rva metadata ownership
- 4d07545f: dotnet: authenticate field rva primitives
- 56f8d700: dotnet: harden field rva recovery
- 057ecf29: dotnet: recover authenticated field rva arrays
- 3842d8cd: security: document wired plugin library path
- 073b1445: native: prove ms x64 fp parameter recovery
- f6d3a648: as3: report structural recovery status
- 14fdc0af: native: grade gcc frame reload returns
- haruspex
- ida_rpc
- 3a398d1a: Minor fixes
- rhabdomancer
- twdll
- 8939b3fa: feat: add battle hooks
-
🔗 @HexRaysSA@infosec.exchange 🏠idalib is now available in IDA Home. mastodon
🏠idalib is now available in IDA Home.
That means hobbyists and enthusiasts can now call IDA's analysis engine as a library — running headless analysis, automating workflows, and integrating IDA into their own tools — without needing an IDA Pro license.
To celebrate, we're offering 30% off IDA Home until August 14th.* Use promo code HOME30 at checkout.
👉 If you've been on the fence, now's a good time. https://hex-rays.com/ida- home
*Offer not available for corporations, agencies or resellers.
-
đź”— Register Spill Joy & Curiosity #93 rss
Friends, yesterday got back from Boston where I gave a talk at Laracon about how I prompt Amp. Tomorrow I'm taking the train to Munich, where I'm meeting with the whole Amp team. Here's some telegraph dispatches from this week, imagine someone saying "full stop" after each line.
-
Laracon, what a pro operation! The A/V setup backstage was mind blowing. So many helpers! Going on stage felt like I was about to go on live TV. Few things as enjoyable as getting to see proper professionals up close when they do their job.
-
A moment of these times: Taylor presented latest changes in Laravel live on stage (man, I don't think I've ever seen someone be calmer and cooler while giving fantastic live demos) and started by saying "well, I don't write that much code by hand anymore, but yeah, maybe let's look at the code." And then we all looked at the code and I couldn't stop thinking about whether these abstractions in a framework are useful or not. Can't the agent one-shot these helpers to display images? It could, I know that. But isn't it useful to have these primitives in a framework? Maybe? He also showed some helpers around queue management, such as debouncing. I know what debouncing is, I can instruct the agent to add debouncing, I don't need the helper. But what if you don't know what debouncing is? What if you don't even thinking of asking the agent for it? It would help to have these primitives in the framework, no?
-
A self-driving Cybertruck chauffeured me through downtown Boston. How are they not going to win this? Serious question.
-
Finally had Raising Cane's chicken fingers. Good! Very good even, but… not life changing? I kinda expected it to be life changing.
-
At times I felt like a heretic. I would watch a talk and thinking to myself: "The tokens will wash all of this away." Then I'd talk to people and would have to admit that I don't know exactly how this is going to play out, but I do know that in five years there'll be more tokens than you can imagine now and that thinking about the command line flags of a linter will seem funny.
-
Finally had Chick Fil-A. Now that was life changing. Man , that was good.
-
Walked past multiple Taco Bells. Didn't go in. You gotta pick your battles before you board a 7hr flight. Taco Bell: still on the bucket list.
-
Saw The Odyssey. Really, really good, but not… the best movie of all time?
-
Met up for coffee with Ben and we walked to MIT and back. Beautiful walk and fantastic conversation.
-
I read this two weeks ago and still think about it: Grip Strength. I also watched the movie it references, Comedian, way back, in 2010 or 2011. That too left a lasting impression, for many many years. I'm also relatively sure that Seinfeld's anecdote in that movie about the Glenn Miller Orchestra musicians played at least a tiny part in me abandoning my dream of becoming a professional musician.
-
Hot, hot, hot & breaking news: OpenAI's unreleased model made "ten advances in mathematics and theoretical computer science" and everyone's losing their mind over it. I'm not going to downplay anything. It's just hard to tell whether we're on top of the curve or at the start of an exponential. I can see the former, but I can also see a headline like this as part of a two minute intro montage of a sci-fi movie that recaps the last fifty years to show how humanity ended up with robots and flying cars in 2076.
-
By now this is old news, but in case you haven't read through it: an OpenAI model broke out. Many machines and networks, a lot of tokens, zero-day exploits. I had to think of Stuxnet and then thought: well, Stuxnet took a lot of effort and time to develop, and this here was an accident.
-
Fantastic, deep, interesting write-up of Roc's rewrite from Rust to Zig: How Our Rust-to-Zig Rewrite is Going. Yes, opposite direction of the recent Bun rewrite. Very good.
-
Don't ask me how I ended up reading English Teacher Weekly because I don't know either but somehow I did and I found these 25 Unsolicited Thoughts on American Literature for America's 250th very fascinating.
-
Never Enough: "Technology was supposed to make room for life but instead for more and more people life is slowly being rearranged around AI. People fear being replaced by machines and respond by giving those machines more of their judgment, attention and time. And for what? Every 'saved' hour is returned to a race with no finish line."
-
Re-read Sahil Lavingia's Reflecting on My Failure to Build a Billion-Dollar Company and this part stood out: "The eight years I worked on Gumroad were full of personal ups and downs. There were months where I worked 16 hours a day, but there were also some months where I worked four hours a week. Here's one way to picture that time: […] Can you tell which is which? I can't. We had a sales team for a few years, then we didn't. Can you tell when we made the switch? I can't. It doesn't matter how amazing your product is, or how fast you ship features. The market you're in will determine most of your growth. For better or worse, Gumroad grew at roughly the same rate almost every month because that's how quickly the market determined we would grow." As far as I can tell by now, there's entrepreneurs who think in products and there's entrepreneurs who think in markets. When the former get it right, they see that as confirmation of their approach, but the latter say that it's still the market, it's all the market. (I once read a very, very good article on this, which used dating apps as an example for product categories that live and die with trends and there's nothing you can do about it.)
-
businesses with ugly AI menu redesigns!!! What if slop doesn't exist, what if enshittification doesn't exist, what if, instead, it's just a lack of ideas laid bare? It's very, very easy to create a flyer or menu that doesn't look like the default ChatGPT output, but, well, you have to put in more than the bare minimum.
-
Finally got around to reading Benedict Evan's Ways to think about token pricing.
-
And in the same week I read that, OpenAI slashes prices: "In other words, roughly four months later, OpenAI is selling March's full flagship intelligence at about one-thirteenth the token price." Now imagine one hundred times more tokens, ten times faster. That's the near future.
-
There's a newsletter called Perfect Sentences! "Every Sunday, you get a collection of the best sentences I've come across all week. That's pretty much the whole idea. Reader submissions are accepted." What a fantastic idea.
-
Watched all four episodes of Rafa on the plane to Boston. And then, in Boston, in an Irish Pub, I read David Foster Wallace's How Tracy Austin Broke My Heart. Incredible pairing. "The real secret behind top athletes' genius, then, may be as esoteric and obvious and dull and profound as silence itself. The real, many-veiled answer to the question of just what goes through a great player's mind as he stands at the center of hostile crowdnoise and lines up the free-throw that will decide the game might well be: nothing at all."
-
The coolest use for the Vision Pro. Indeed: very cool. Or should one say: finally a use for the Vision Pro? (I never tried one, I'm talking out of my ass here.)
-
Simon Spati's Book Recommendations and Notes. I love pages like this one, with personal notes and book recommendationsl
-
Rex's provocation: "Imagine you were the only person on earth with access to AI. No one else knew it existed. What would you do with it? How much of an edge would that give you?"
-
Sierra's lessons learned from AI-pilling our company. Very much not a rah-rah-more-tokens post. Mature and interesting.
-
Now, I'm very much not a fan of writing by hand. It's too slow, you can't copy & paste, and can't reorder thoughts quickly, can delete. And all the touted benefits sound a bit woo woo to me. I just think more when I write by hand -- yeah, right. But then yesterday I finally read Neal Stephenson's (!) post here: Writing by Hand is Good for your Brain. And yes, there's a bit of woo woo in there, but man, it's so well written and so easy breezy that it really did make me curious. Obviously I'm not going to do it, I'm not a maniac, but still: maybe some day.
-
Another fantastic post by a professional writer: The End of an Era. This was really good. Calm & pragmatic and thinking from first principles. If you're worried about the future of art, or slop, or "enshittification": read this.
-
This was published in the The Lamp which I didn't know and which self-titles as "A Catholic Journal of Literature, Science, the Fine Arts, etc." and I don't know how I ended up there either but it is very thought-provoking: How to Write English Prose. I found it hard to read and I had to look up several words and I don't even think I agree with most of it but man is it fascinating to read something that goes against the mainstream like that. On Strunk & White: "by far the most influential and most pernicious book of its kind in English: a total congeries of fatuous advice and grammatical ignorance." And: "In fact, if you own a copy of The Elements of Style , just destroy the damned thing." On Hemingway's Old Man and the Sea: "an excruciating specimen of bad schoolboy prose, written by a man who by that point had, alas, been too often drunk, too often concussed, and too often praised." He's right on so many things and weirdly off-putting on others, but I loved the thoughts on simplicity vs. complexity: "Good writing is produced not by forsaking the beautiful for the sublime or the exorbitant for the restrained, but by finding new ways of orchestrating the interplay between them."
-
Okay, so I was on a 3-day bike trip last week. 300km in 3 days. That's why you didn't get a newsletter. Once back, the Gods of the YouTube algorithm sent me this message here in the form of a short. And, gods damn, if that isn't the most fascinating video I've seen in many weeks. Is the guy joking? Is he serious? He can't be serious? What are you talking about, man? Tanning salon? Cooking spray? You're insane. But… Hmm, maybe I get it? I mean, that's a big maybe but, yeah, maybe you're an artist. But did you really say "Luft" as in the German word Luft for air? Incredible video. I've watched it ten times by now. Read the comments for a good time.
Do you also prefer Chick Fil-A over Raising Cane's? You should subscribe:
-
-
đź”— Andrew Healey's Blog Adding Go's defer to the TypeScript Compiler rss
Forking tsc to support Go's defer.
-
đź”— exe.dev Devtools must be open source rss
Five years ago, most software engineers I spoke to had no programs they had written for themselves. (I was asking this question a lot as part of trying to understand how Tailscale could fit into engineers’ lives.) All day, every day, engineers use programs written by others to write programs for others. Many of us customized the programs we used, through config files or plugins or extensions, and many of us used the programs we wrote for others, as users. It was always an unusual treat to ask someone what they had written for themselves and learn about the bespoke software behind their blog, or their home automation, or their homelab, instead of an off-the-shelf, almost-the- right-size static site generator or Zigbee appliance.
This state of things made a lot of sense to me. Over the years I have written plenty of software for myself, and the return on doing so was always questionable. I could only write so much in a day. There were always more important things to do (Something Was Wrong At Work), and coming back to a project after a year to do maintenance on it was always extraordinarily painful. There were plenty of years in my career where I had thrown out all my custom software and used the most bog-standard environments I could to produce code. In my early years as an engineer at Google I did not even own a personal computer.
That was then. Things are different now.
How to Personalize Software
It is astonishingly easy to personalize software today. There are two general categories of prompts to an agent that make all of this possible:
- Download the source for
and build it for local use. Modify to know that any future changes to this software mean changing the sources and replacing the current version. Record in version control the original motivation behind the change.
and, more importantly :
- Set up a nightly cron job that executes the prompt: fetch upstream changes to the
and rebase all local changes on top of upstream. Check that the software works as intended and replace the current version.
At the heart of this is the realization that agents can not only hack up some code for a specific use but also automatically manage the process of synchronizing changes with upstream releases. This means agents change the ROI on customizing software on two fronts simultaneously: it is much easier to get started personalizing, and much easier to keep going.
Another astonishing thing about the two prompts above for editing software is that you can build them right into an agent. As long as the agent is open source, it does not even require programming. The two prompts can be loaded into a skill (i.e., some text instructions) put somewhere discoverable to the agent. We built this into Shelley, so now if you want to edit Shelley you don’t even need the preamble or to configure the timer. It takes care of it for you. You can type in a prompt like “make Shelley’s UI high-contrast” and you have personalized your agent.
A Worked Personalization Example: Shelley and Meat
I have a personal project I have been idly toying with for the last month: meat.dev. The principle is that while agents write code, I still read it before pushing to our serious systems. As the underlying models improve, what I look for has changed. The humans I have spent twenty years reviewing code for have always struggled with edge cases: do the errors report useful information; are nil-checks handled, etc. (We all do it; when writing code, I am one of the worst offenders.) One of my roles as a reviewer was looking for these details. Over the past six months, I have discovered I don’t need to read for edge cases like that any more: models are far more diligent than humans at rote correctness. Their errors are isolated to architecture, unexpected use cases, visual output their test environment is not feeding back to them, etc. This means most of the lines of code I review are not very useful. So I wrote a tool that takes diffs and uses LLMs to strip out the unimportant stuff. I almost never need to see the import blocks, or the nil- checks, or the error handling any more, so get it off the screen so I can focus on the meat.
I like this tool, but it has two downsides: first, I like to read my diffs in Shelley with a good UI, not in a terminal. Second, it takes a couple of minutes for an LLM to digest and minimize a diff, and I don’t want to wait. So ideally I would not run
meaton the command line, but have it built into Shelley and have it pre-processing commits the moment they are created. It turns out I can do that with a single prompt:Please build meat.dev into Shelley. Install the latest version in the PATH. When a git commit is created by Shelley, start meat processing in the background on the commit. Add a toggle to the Shelley
Diffsview for meat. If the commit is still being processed, so the user it is in process.This single prompt was all it took not just to add meat to Shelley, but to appropriately pre-process commits in the background before I came back to session to review the diff, saving me waiting for a model to reduce the diff. The only unfortunate choice the model made was using the 🥩 emoji for the toggle button.
Imagine the convoluted misery it would be trying to plug that into the VS Code extensions API! Or trying to get it into
vimdiff. It would certainly be possible, but the machinery to start pre-processing the commits as soon as they appear would be nigh-on impossible. I would be better off implementing an out-of-bandmeatdthat listened to the file system and provided a cache for themeattool that a customization API could use, because the points of extension and configuration would not be the right shape.And that is the fundamental difference between classic configuration/customization and agent-driven personalization: you can do so much more. The agent will do the hard work of understanding the source and changing it to suit the particular task you have in mind. The software we live with is far more powerful with personalization. All you need is the source code.
The Age of Personalized Software
The pre-agent development costs meant it was rational for complex software to ship with large configuration files, extension systems, and plugin systems. The core code of even a moderate project like Vim is huge and baroque, and takes weeks for a human to digest. The thought that, on wanting line numbers to print by default, an engineer would learn the code base and add it just for themselves is unreasonable. Better to design it for sharing with others, which justifies the expense of implementing it by amortizing it over many users. As features in a code base grow, it makes sense to look for common abstractions where you can break out an extension or plugin system.
Now the expense of learning the code and making a change has dropped dramatically. Agents do the heavy lifting. For a single user—which implies extremely constrained conditions under which the program runs—a top-end agent can usually now add a feature in a single shot. For single-user software, the need for careful code review can often be replaced by “does it seem to work?”
The result is that software that can be personalized doesn’t need a plugin system or a config file. Want to change the font size in your text editor? Give the agent the source and tell it to. If it is a hardcoded value it will find and edit it. If it’s a hardcoded bitmap font it will download another and replace it, or it will use Monobit to make you one! You have incredible capabilities on tap.
Whole Categories of Software Products Need to Be Reinvented
Personal software applies well to small teams too. Why would an engineering team purchase an extremely configurable task manager (or a CMS or CRM), spend time learning and configuring it, and contort their team to its limits, when they can assemble just the features they want from common building blocks?
Both the upfront fixed costs and the ongoing costs of personalizing software have disappeared.
The blog you are reading is bespoke software, written in Shelley, because it was easier to piece together and personalize libraries like Tiptap than it is to try and customize traditional software products. For end-user products to make sense in a company today, they need to be personalizable. Which means we need the source code.
Where Codex and Claude Code Diverge
This same skill-based technique that was applied to Shelley to make it personalizable can be trivially applied to other open-source agents like Pi. (So much so that I am left wondering why Pi needs an extension system built into it. The source code is the extension system.) It would require a lot more tokens, but you could do the same to Codex, which is an open-source agent.
Where you would hit a wall, however, is Claude Code. It is closed-source software, so you don’t get to personalize it. There are a lot of old-fashioned customization hooks in Claude Code. Hopefully, how you want an agent to work fits in their hooks. If not, switch to an agent that lets you personalize it.
- Download the source for
-
- August 01, 2026
-
đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-01 rss
IDA Plugin Updates on 2026-08-01
Activity:
-
đź”— crosspoint-reader/crosspoint-reader v1.5.0 release
Summary
This is one of the biggest updates we've shipped: new hardware support, faster loading on big books, offline dictionary lookups, and a UI overhaul.
Seeed reTerminal Sticky support
For the first time, CrossPoint is expanding beyond its original ESP32-C3 roots (XTeink X3/X4). We are officially introducing support for ESP32-S3 devices!
- First Supported Device: The upcoming Seeed reTerminal Sticky
- A huge shoutout to Seeed Studio for reaching out, sending test hardware, and being incredible partners throughout the process.
- Get Yours: You can order a Sticky (Launching July 30th) at crosspointreader.com/devices using our affiliate link to support the project.
Note
The XTeink X4 Pro isn't supported in this build yet, but a dedicated release will follow once we've got hardware to test against.
Big books open fast now
Big books used to take minutes to open the first time. That's basically gone: sections index on demand in the background while you read, so books open in around 5 seconds. Page turns feel smoother too, from rendering and memory work throughout the app, and we fixed memory allocation and CSS parser bugs that were causing out-of-memory crashes on complex EPUBs.
Offline dictionary lookups
Drop a StarDict dictionary onto your SD card and you can look up words with no connection. Select a word, get the definition popup. There's a setup guide if you want to get one running.
"What to read next"
Finish an EPUB and CrossPoint looks at what's on your device and suggests something next, right on the end-of-book screen.
Text settings got a rework
Font and layout options now live in one menu, with a live preview so you can watch line spacing, margins, and font changes happen without leaving the settings screen.
There's also a new selection popup. Any setting with three or more choices opens a dialog now instead of making you cycle through options one at a time.
Arabic, Farsi, and Urdu
1.4.0 added right-to-left text support. This one finishes the job for Arabic, Farsi, and Urdu: proper bidi handling and contextual glyph shaping, built-in fonts with full Arabic character sets, and the UI itself translated into Arabic.
Hebrew Niqqud is correctly rendered.Everything else
KOReader sync now handles custom sync servers, account registration, and metadata uploads. Wi-Fi should behave better — it reconnects to saved networks automatically, including hidden ones, and picks access points more sensibly. The web UI shows image previews in the file browser now and lists device serial numbers. OPDS downloads let you set your own folder and file format.
We also added the Vollkorn serif font (grab it from Manage Fonts), cleaned up
<br>handling and list bullet alignment, and expanded CSStext-decorationsupport.
Translations got updates across Swedish, Italian, Spanish, Catalan, Valencian, Czech, Turkish, Portuguese (BR & PT), and Vietnamese, and we added brand new Norwegian BokmĂĄl , Indonesian and Bosnian translations. Chinese entries are now shown correctly in the File Browser and chapters list.Note
If you are upgrading from v1.0.0 or earlier , please upgrade to v1.4.1 first before installing the latest release. Skipping this step will cause your settings to be reset to their default values.
What's Changed
- chore: migrate from open-x4-sdk to freeink-sdk by @itsthisjustin in #2449
- docs: adding quick resume option and quick resume on timeout to userguide by @dasrecht in #2425
- fix: update Portuguese (Brasil) translations by @Rodrigo-Matsuura in #2458
- fix: x4 ghosting by bumping sdk by @itsthisjustin in #2469
- fix: x4 sleep/boot ghosting by @itsthisjustin in #2471
- feat: add Vollkorn font by @mrtnvgr in #2473
- fix(icons): align home menu icons with their labels by @fain182 in #2470
- chore: Initial multi-core compatibility by @Uri-Tauber in #2294
- feat: Selection Popup by @Uri-Tauber in #2358
- fix: sort sleep screen menu options to be more logically consistent by @dasrecht in #2480
- docs: update TOC in userguide by @dasrecht in #2479
- fix(reader): correct slider side-button direction and legend on X3 (#2402) by @tomlarse in #2428
- fix: changing translation in czech to fix overflowing navigation by @dasrecht in #2502
- fix: Add socket module import to build-sd-fonts script (#2504) by @itsthisjustin in #2505
- feat(network): add device serial number to web UI by @rahatarmanahmed in #2506
- feat(epub): improve text-decoration support by @lpla in #2397
- fix: settings persist on font clear, reserve() before push_back, minor by @sypianski in #2519
- feat: Lazy incremental EPUB section indexing by @itsthisjustin in #2452
- feat(reader): End of Book next-book suggestions (#2499) by @tomlarse in #2532
- fix: follow spec for zxing qr code generation by @latonis in #2540
-
fix: render
between paragraphs as a visible section break by @Uri- Tauber in #2548 -
chore: Replace product link with affiliate tracking link by @Uri-Tauber in #2401
- fix: Flatten TextBlock word storage into single allocation by @itsthisjustin in #2547
- feat: preview image files inline in web file browser by @fain182 in #2429
- fix: FontDecompressor OOM aborts on the render path (-fno-exceptions makes vector resize fatal) by @k5njm in #2526
- chore: Refactor stores to use PersistableStore CRTP template by @Uri-Tauber in #2464
- fix: show "Failed to index" when failing to parse epub by @Uri-Tauber in #2556
- chore: update the Italian translation by @matteoscopel in #2559
- perf: skip redundant progress writes when position is unchanged by @hooligan333 in #2436
- chore: update Spanish, Catalan, and Valencian translations by @lpla in #2566
- fix: update czech.yaml by @Pitel in #2574
- fix: Swedish translation by @steka in #2577
- fix: oom exceptions for OPDS, KOSync, and OTA via wolfssl by @itsthisjustin in #2475
- fix: handle low-bit-depth, upscaled, and SVG EPUB images by @lpla in #2503
- feat: Add Finnish hyphenation by @timo-mart in #2084
- perf: drop per-image delay(50) on chapter build, retry getDimensions by @hooligan333 in #2434
- perf: reserve CSS rule map before loading from cache by @hooligan333 in #2435
- feat: auto-connect saved Wi-Fi networks by @axhoff in #2189
- docs: add script to generate EPUB from USER_GUIDE.md by @jhuebel in #2152
- perf: always binary-search idref lookups in content.opf by @hooligan333 in #2433
- perf: stream NCX/NAV TOC into parser, drop temp-file round-trip by @hooligan333 in #2440
- perf: release CSS rule map after warm open by @hooligan333 in #2439
- chore: update Spanish, Catalan, and Valencian Wi-Fi strings by @lpla in #2578
- fix: Add framebuffer release/realloc and improved lazy indexing by @itsthisjustin in #2563
- feat: render placeholders while waiting for images to render by @Tritlo in #1003
- feat: Send optional document metadata with KOSync progress uploads by @nperez0111 in #1820
- feat: implement captive portal redirects for auto-loading the management page on hotspot mode by @latonis in #2550
- feat: Hidden wifi ssid support by @HgGamer in #2360
- fix: keep list item bullet inline with nested paragraph text by @jan-xyz in #2589
- feat: Arabic/Farsi/Urdu bidi reordering and contextual shaping — PR 1/3 by @YouHusam in #2541
- feat: add portuguese-PT.yaml by @Uri-Tauber in #2597
- feat: Arabic/Farsi/Urdu glyphs in built-in UI fonts - PR 2/3 by @YouHusam in #2596
- fix: Use HALF_REFRESH for sleep and boot instead of FULL by @itsthisjustin in #2588
- feat: complete Turkish translation (390/390) by @metoli86 in #2592
- feat(i18n): add Norwegian BokmĂĄl translation by @tomlarse in #2113
- fix(css-parser): don't save unusable rules to RAM by @brianhuster in #2604
- feat: Arabic translation YAML - PR 3/3 by @YouHusam in #2599
- fix: ignore open-x4-sdk and fs_ by @Uri-Tauber in #2609
- fix: remove duplicate sleep logic by @Uri-Tauber in #2492
- feat(i18n): add Bosnian translation by @arunoruto in #2616
- feat: configurable OPDS download folder and filename format by @oscarnogueira in #2571
- fix(kosync): reload Epub before reading upload metadata by @W-Floyd in #2608
- feat: add options to remember web upload settings & rename ebooks to
{title} - {author}by @victor141516 in #2534 - feat: add smart KOReader progress sync by @axhoff in #2192
- feat: Back on home menu opens the most recent book by @rxmmah in #2619
- feat: enable CORS headers in the HTTP API by @metoli86 in #2594
- fix: reduce CSS parse-time OOM risk in chapter layout by @brianhuster in #2606
- fix: correct the settings enums for "blank" and "cover + custom" sleep screens by @uxjulia in #2635
- feat: Add kosync user registration and switch to crosspoint-sync server by @itsthisjustin in #2587
- feat: Add option to switch behavior for "back to browser / home" in Reader activity by @tsymalla in #2366
- fix: EndOfBookOptions fails to compile by @Uri-Tauber in #2646
- feat: Slim dictionary by @Uri-Tauber in #2583
- fix: swedish translation by @steka in #2649
- feat: add Nix development shell by @thiagokokada in #2645
- fix(i18n): add missing strings in PT-PT translation by @CookieCaptainD in #2632
- fix(epub): preserve word continuation when splitting CJK text on MAX_WORD_SIZE by @brianhuster in #2652
- fix: select strongest AP for matching WiFi SSID by @lpla in #2655
- chore: Clarify project scope and development priorities by @itsthisjustin in #2149
- feat: Add touch coordinate mapping and RTOS task yielding by @itsthisjustin in #2481
- fix: duplicate User-Agent header on wolfSSL requests breaks strict servers (aiohttp 400) by @dylanbyars in #2661
- chore: update Vietnamese translations by @brianhuster in #2667
- chore: Migrate Settings/State onto PersistableStore; by @Uri-Tauber in #2647
- add Bahasa Indonesia Translation by @chalei in #2666
- feat: unified Text Settings screen with live preview by @PaulDelestrac in #2605
- fix: Move sunlight fading fix setting to different group by @itsthisjustin in #2689
- chore: update Italian translation by @matteoscopel in #2691
- feat: cjk UI font fallback by @szetszho in #2521
- chore: update Spanish, Catalan, and Valencian translations by @lpla in #2651
- feat: deferred refresh, memory work port, and first-open speedups by @itsthisjustin in #2611
- fix: Warp around in Percent Selection by @Uri-Tauber in #2677
- fix: STR_RESTARTING_HINT text overflow bug by @Uri-Tauber in #2692
- fix: restore antialiasing after manual refresh by @thiagokokada in #2683
- fix(epub): split text blocks on closed tags to prevent style leaks by @brianhuster in #2679
- fix: avoid X3 Quick Resume flashes by @Sichroteph in #2698
- feat: Add UC8279 panel controller detection for X3 devices by @itsthisjustin in #2707
- feat(epub): native support for Chinese, Japanese by @brianhuster in #2665
- fix(i18n): add missing strings in PT-PT translation by @CookieCaptainD in #2701
- chore: small Italian translation fixes by @matteoscopel in #2703
- fix: ignore ambiguous EPUB guide text so books open at the right location by @uxjulia in #2716
- fix: Lower TLS minimum free memory threshold to 35KB for kosync by @itsthisjustin in #2719
- feat: point-size font selection by @Uri-Tauber in #2720
- fix: preserve custom font ligatures by @thiagokokada in #2673
- test: repair malformed section-break EPUB fixture by @lpla in #2728
- chore: Update czech.yaml by @Pitel in #2726
- fix: translate BMP viewer error messages by @lpla in #2730
- fix: fixing german translation inconsistencies by @dasrecht in #2702
- feat: Add packages to nix dev shell required for clang-format-fix and… by @Katherine1 in #2695
- fix: name dictionary lookup failures (low-memory vs decompress vs read) instead of 'Not found' by @W-Floyd in #2706
- fix: bind settings labels to enum values by @lpla in #2644
- fix: TextSettingsActivity default to selected font by @Uri-Tauber in #2739
- docs: Add instructions to fix a bricked Xteink (#2622) by @paulporto in #2682
-
fix: treat
in CJK flowing text as a paragraph separator by @szetszho in #2710 -
perf: drop all-empty ruby vectors from TextBlock by @Uri-Tauber in #2772
- chore: remove redundant wolfSSL TLS defines by @lpla in #2727
- fix: Gyro not powering down on x3 and newer x4 battery latch issues by @itsthisjustin in #2774
- perf: skip ruby scratch allocations on ruby-less lines by @W-Floyd in #2735
- fix: derive file-transfer WebSocket port from HTTP by @lpla in #2729
- fix: restore spaces between CJK words by @Uri-Tauber in #2768
- fix: clean image page after sync return by @thiagokokada in #2747
- feat: Access text settings from epub reader by @Uri-Tauber in #2788
- fix: Restrict CrossPoint position extension to official server by @itsthisjustin in #2790
- fix: order languages by native name instead of language code by @dasrecht in #2803
- fix: Save text settings immediately on each change by @itsthisjustin in #2806
- fix: Properly power down SD power rails on x3 by @itsthisjustin in #2808
- fix: orient dictionary navigation buttons by @thiagokokada in #2749
- fix: avoid duplicate OTA update actions by @ed-fruty in #2807
- fix: Replace vector with deque for text token storage by @itsthisjustin in #2814
- fix: dictionary lookup OOM on .dict.dz definitions by @W-Floyd in #2791
- perf: open dictionary index files once per lookup by @W-Floyd in #2733
- perf: share one static bidi scratch buffer to save ~1.5 KB RAM by @pillarsdotnet in #2554
- fix: make EPUB sync positions content-based by @thiagokokada in #2805
New Contributors
- @Rodrigo-Matsuura made their first contribution in #2458
- @tomlarse made their first contribution in #2428
- @rahatarmanahmed made their first contribution in #2506
- @sypianski made their first contribution in #2519
- @hooligan333 made their first contribution in #2436
- @Pitel made their first contribution in #2574
- @timo-mart made their first contribution in #2084
- @axhoff made their first contribution in #2189
- @nperez0111 made their first contribution in #1820
- @HgGamer made their first contribution in #2360
- @jan-xyz made their first contribution in #2589
- @metoli86 made their first contribution in #2592
- @brianhuster made their first contribution in #2604
- @arunoruto made their first contribution in #2616
- @oscarnogueira made their first contribution in #2571
- @W-Floyd made their first contribution in #2608
- @victor141516 made their first contribution in #2534
- @tsymalla made their first contribution in #2366
- @thiagokokada made their first contribution in #2645
- @CookieCaptainD made their first contribution in #2632
- @dylanbyars made their first contribution in #2661
- @chalei made their first contribution in #2666
- @szetszho made their first contribution in #2521
- @Sichroteph made their first contribution in #2698
- @Katherine1 made their first contribution in #2695
- @paulporto made their first contribution in #2682
- @ed-fruty made their first contribution in #2807
- @pillarsdotnet made their first contribution in #2554
Full Changelog :
1.4.1...1.5.0 -
đź”— smol-machines/smolvm smolvm v1.7.2 release
What's Changed
- Fix CUDA fork compatibility for vLLM workloads by @BinSquare in #764
- Read older .smolmachine pack formats and point to a rebuild when a legacy pack cannot run by @BinSquare in #768
- Remove agent helpers whose only remaining callers are their own unit tests by @NickyHeC in #760
- Reclaim case-sensitive pack volumes on macOS that were left mounted by runs killed before releasing their lease by @BinSquare in #769
- ci: widen Linux clippy/tests and guard the CUDA guest build by @NickyHeC in #761
- fix: stream progress during detached local-archive start by @NickyHeC in #699
- cudart: stub Runtime exports required by conda libtorch_cuda by @NickyHeC in #638
- Construct the archive worker panic error with Error::other so the widened Linux clippy run passes by @BinSquare in #772
- Improve CUDA fork-pool capacity and worker lifecycle by @BinSquare in #774
- Pass the executable stub path rather than the sidecar name when exporting a machine by @BinSquare in #780
- Promote CUDA golden eviction, auto-graph, and clone restore fixes by @BinSquare in #778
- Probe the guest agent socket from the start of the readiness wait so a marker that cannot be written no longer costs five seconds per boot by @BinSquare in #773
- Add transactional batch forks by @BinSquare in #783
- Fix virtio-net guest→host connections via the gateway IP blackholing after the handshake by @BinSquare in #784
- tiny nit: Stop reporting a skipped test suite as all-passed by @Bnjoroge1 in #790
- Restrict the node's plain-HTTP loopback port to liveness routes by @BinSquare in #791
- Harden the registry pull path against SSRF: reject repository traversal and private pull hosts by @BinSquare in #792
- Confirm VM exit before deleting storage by @Bnjoroge1 in #788
- Add one-shot held fork slots for hot pool reuse by @BinSquare in #786
- Rebuild the macOS libkrun.dylib with a static ELF guest init so a source checkout can boot VMs by @BinSquare in #793
- Add automatic held-fork pool leases by @BinSquare in #794
- Batch automatic pool refills by @BinSquare in #795
- Stage lease payloads before worker release by @BinSquare in #796
- Bump libkrunfw to the connected datagram socket network-namespace fix and rebuild the bundled libraries by @BinSquare in #797
- Add automatic CUDA admission and fused rollouts by @BinSquare in #798
- Bump the workspace to 1.7.2 by @BinSquare in #799
Full Changelog :
v1.7.1...v1.7.2 -
đź”— modem-dev/hunk v0.18.0-beta.0 release
What's Changed
Minor Changes
-
#570 - Add exact Shiki/TextMate overrides via
custom_theme.syntax_scopes, with compatibility for deprecatedcustom_theme.syntax. -
#629 - Add live
ctx.navigation.selectFileandselectHunkAPIs for guarded review-stream navigation. -
#616 - Give extension commands a frozen snapshot of the current review selection through
ctx.selection. -
#588 - Render tabs at four-column stops by default, configurable through
tab_width,-x, or--tab-width. -
#632 - Advance the extension API to v2 with experimental fixed-height React/OpenTUI file-view rows and semantic theme painting.
-
#617 - Add queued
ctx.dialogs.confirm,select, andinputprompts to extension commands. -
#619 - Add extension UI lifecycle events, sidebar controls for event handlers, and an inter-extension event bus.
-
#599 - Add experimental TypeScript extensions, bundled VCS adapters, multiple custom themes, trust controls, and configurable loading paths.
-
#615 - Expose resolved command keybindings to custom extension sidebars so they honor remapping and unbinding.
-
#512 - Add experimental STML agent-note markup,
hunk markup guide/render, and live note-width validation APIs. -
#614 - Make menus and help reflect remapped keys, add an Extensions menu, and expose formerly menu-only actions as commands.
-
#611 - Add extension commands, multiple sidebar views, configurable
[keybindings], shared key APIs, and namespaced command/view IDs. -
#647 - Give
hunk pagerthe full review controls while keeping its menu bar and sidebar initially hidden. -
#626 - Expose ordered
ExtensionDiffHunksummaries with headers, indexes, and inclusive line spans in public file views. -
#632 - Add an experimental host-rendered extension file-view contract and an optional Markdown preview example.
-
#468 - Offer to save changed view preferences on quit, with a persistent “never ask” option.
-
#609 - Let extensions replace file navigation with React sidebars that receive live review props and safe navigation actions.
Patch Changes
-
#531 - Reduce Git polling and CPU use in watch mode while preserving continuous refreshes with a polling fallback.
-
#599 - Store repo-extension trust by canonical root so trusted extensions load through symlinked and Windows short paths.
-
#625 - Discover
.tsxand.jsxextension entries alongside TypeScript and JavaScript entries. -
#606 - Support folder-extension entry points and multiple entries through
package.jsonhunk.extensionsmanifests. -
#599 - Harden extension types, themes, lifecycle data, reloads, VCS detection, configured paths, and user-facing failures.
-
#606 - Load directories with
index.ts,index.js, orindex.mjsas single folder extensions. -
#649 - Prevent one keypress from triggering both a modal action and the focused widget beneath it.
-
#589 - Require
--experimentalfor STML note rendering and advertise thestmlcapability only in opted-in sessions. -
#519 - Label repo-root file runs with a
./sidebar header without changing review order. -
#531 - Reduce watch-mode startup cost on macOS and Windows with bounded native recursive filesystem observation.
-
#574 - Show a startup notice when deprecated
custom_theme.syntaxcolors are translated to approximate Shiki scopes. -
#572 - Restart stale session daemons during upgrades so rich STML comments reach live reviews.
-
#627 - Upgrade
shell-quoteagainst a denial-of-service flaw and keep file-watch refreshes responsive after missed events. -
#630 - Document the supported scrollbox ref, stable row IDs, selection following, and pane geometry APIs for custom sidebars.
-
#596 - Generate the hunk-review skill from typed session commands and document missing note, markup, rationale, and author flags.
-
#652 - Skip inactive custom file-view preparation to reduce rerenders and retained memory in raw-diff reviews.
-
#655 - Keep delayed scroll alignment from changing the file selected by navigation.
-
#645 - Preserve one-line keyboard scrolling after clicking in the review stream.
-
#599 - Write
state.jsonatomically and preserve unreadable state asstate.json.corrupt. -
#573 - Teach STML authors to compose within Hunk’s native note frame while preserving focused inset boxes.
-
#598 - Show Nix-aware update guidance instead of suggesting npm installation for the Nix package.
Full Changelog :
v0.17.7...v0.18.0-beta.0 -
-
đź”— r/Harrogate Key lime pie in Harrogate rss
Someone who really deserves a treat told me they’d always wondered what Key Lime pie was like. Any idea where I can find it in Harrogate?
submitted by /u/Lumpyproletarian
[link] [comments] -
đź”— New Music Releases Phish - 2026-08-01: Fenway Park, Boston, MA, USA rss
Phish - a new release is available:
- 2026-08-01: 2026-08-01: Fenway Park, Boston, MA, USA (Live)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-