- ↔
- →
- August 31, 2026
-
đź”— WerWolv/ImHex Nightly Builds release
Nightly
4bac273Changelog- impr: Streamline look of crash recovery popup
- fix: Crash when opening non-existent file
- impr: Propagate provider open error message down
- fix: Prevent out of bounds access
- impr: Allow open files to be renamed
- fix: Extract unsaved files from legacy projects, automatically add newly created files to the current project
- fix: ANSI encoding crash and scan boundaries on Windows (#2808)
-
- August 30, 2026
-
đź”— Simon Willison Understanding ChatGPT Work rss
OpenAI announced ChatGPT Work on July 9th, and have been furiously iterating on it ever since. It is an extraordinarily confusing and very powerful product. Here's what I've figured out about it so far.
ChatGPT Work is actually two products
The more interesting version of ChatGPT Work is the one that runs in the cloud. This can be accessed via chatgpt.com or through the ChatGPT mobile apps. Let's call it Work Cloud.
If you install the ChatGPT desktop app - the app that used to be called Codex - you gain access to a thing called ChatGPT Work that can access files and run programs directly on your computer. Let's call that one Work Local. This one feels more like regular Codex re-skinned to be less intimidating to non-software-developers.
For the rest of this article I'm going to talk exclusively about Work Cloud.
Work is for paid subscribers only
Right now, ChatGPT Work (in both flavors) is available only to $20/month and up subscribers. Free users and $8/month Go users do not have access.
Work has features that aren't available in Chat
The interface for accessing Work is a tab selector, which presents it as an alternative to Chat:

The obvious question is when should I use Chat, and when should I use Work?
OpenAI's official answer to that question is:
Use Chat when you want an answer, explanation, brainstorm, or short draft. Use ChatGPT Work when you want ChatGPT to complete a task with a clear outcome, such as a brief, deck, analysis, recurring update, workflow, or file you can review and use.
I find that almost entirely useless, because I've been using regular ChatGPT Chat for all of those task categories for years!
The better question then is what features does Work have that are missing from Chat?
After extensive experimentation I think I've mostly figured that out:
- Options to use Luna and Terra in place of Sol
- A code execution environment with Internet access
- A headless Chrome browser
- A persistent filesystem shared between sessions
- The ability to publish ChatGPT Sites
- The ability to run sub-agent sessions with Sol, Luna, and Terra
- Scheduled prompt automations (may be in ChatGPT Chat too)
Model selection
In Work, you get the option to pick GPT-5.6 Sol, Luna, or Terra, each with Light, Medium, High, Extra High, Max, or Ultra reasoning levels. You can also pick GPT-5.5 at Light, Medium, High, or Extra High.
These look to be the same models that are available through the OpenAI API.
Chat offers a different selection: 5.6 Instant, Medium, High, Extra High, and Pro (actually Extra High and Pro are only available for $100/month+ subscribers - $20/month subscribers cap out at High). It doesn't explain if those are Luna or Terra or Sol (I'm assuming Sol?). 5.6 Pro appears to be exclusive to Chat, with no equivalent in Work.
My current understanding from using Codex is that Ultra is a special mode that more eagerly delegates to sub-agents.
I believe ChatGPT Work sessions are billed against your Codex allowance, while ChatGPT Chat Sessions get their own, separate allowance. This may help explain the model availability differences.
Code execution with Internet access!
As a long-time fan of the Code Interpreter pattern - pioneered by OpenAI in 2023 - this is by far the most exciting feature of ChatGPT Work (Cloud) for me.
The code execution environment can now talk to the rest of the internet!
ChatGPT Chat can't do this - if you ask it to install additional software packages or interact with websites or APIs that access will be blocked by the container proxy.
(Weirdly, back in January it grew the ability to install packages, but that doesn't seem to work any more. I wish they had better changelogs!)
Claude's equivalent container has allowed restricted internet access since it launched last September. Claude can install packages from PYPI and NPM and clone repositories from GitHub. But that is about it: the allowlist of domains is very short.
ChatGPT Work allows a whole lot more than that. It can be configured with a specific list of allowed domains, but the default appears to be open to all.
This makes Work an incredibly useful tool. You can have it clone GitHub repositories, install their dependencies, then use them to interact with the rest of the web!
A full, headless Chrome browser
Another killer feature of ChatGPT Work is the browser tool. ChatGPT Work can launch a full Chrome instance, load websites, fill out forms, and take screenshots.

If a site requires sign in the browser can prompt you to take over and enter both passwords and 2FA codes, without round-tripping those credentials through the model itself.
It can even run JavaScript against the DOM of loaded pages. I prompted:
Load simonwillison.net in your browser and extract the headings using JavaScriptChatGPT Work fired up a browser instance and ran the code:
await tab.playwright.evaluate(() => { return Array.from(document.querySelectorAll("h1,h2,h3,h4,h5,h6"), heading => ({ level: heading.tagName.toLowerCase(), text: heading.innerText.trim().replace(/\s+/g, " "), id: heading.id || null })); });
This feels a lot like my shot-scraper javascript tool, only now I can access it on my phone!
A persistent, shared filesystem
ChatGPT Chat gets a fresh filesystem for each chat session. These cannot be accessed from any other session.
In ChatGPT Work each session gets its own scratch folder - named something like
/workspace/scratch/e00a0a017944- but each of those are persisted across sessions, so you can access files from previous chats. I have 171 folders in/workspace/scratchright now!As far as I can tell that
/workspacevolume is mounted to all Work sessions that are currently running - file edits from one can be instantly seen by the others. They don't seem to share the same process space though, and localhost servers running in one can't be accessed from another.ChatGPT Sites
ChatGPT Work has the ability to build and deploy entire websites, using Cloudflare Workers. These can have HTML and JavaScript and can run server-side features too, including stateful features on top of Cloudflare D1 and R2.
Here's a simple site I built with this feature:
london-pelicans-in-her-piety.simonw.chatgpt.site

My prompt was:
Figure out all of the places in London with a pelican in her piety, then turn that into a JSON file and build a ChatGPT sites site about them(A pelican in her piety is a fascinating piece of medieval Christian imagery - once you know about them you'll find them all over the place.)
These sites default to being private to the user that created them, but you can make them public and (on team plans) share them with other specific individuals.
Sub-agents with Sol, Luna, and Terra
There's not much to say about this one. ChatGPT Chat can't run sub-agents. ChatGPT Work can. This is very much a power-user feature: if you are running a complex project that can benefit from multiple parallel agents working together, Work can do that.
Scheduled prompt automations
Another feature that seems to have migrated from regular ChatGPT to ChatGPT Work at some point. You can prompt ChatGPT Work like this:
run a search to see if Waymo have announced a launch date for Half Moon Bay every day at 8amThis will schedule a prompt to run on that frequency. These prompts can decide that nothing interesting has happened, or they can decide to notify you of some new information.
Update: Actually this seems to work in ChatGPT Chat as well.
It's still worth noting here though, as it can be used in conjunction with other ChatGPT Work exclusive features. You can set a scheduled task to update a ChatGPT Site on an hourly basis, for example.
Is this safe?
An open question for me right now is how safe all of this stuff is.
My lethal trifecta model warns about the risks inherent in any agent system that combines access to private data with exposure to untrusted content and a way to communicate stolen information back to an attacker.
ChatGPT Work combines all three!
I'd love to hear more from OpenAI about how they protect ChatGPT Work sessions against prompt injection attacks. I expect their answer is the same auto-review mechanism as Codex.
OpenAI could make this a lot less confusing
Figuring this all out took way more work than it should have.
I think there are two key problems here:
- OpenAI explain Work in terms of what it's for, not what it actually does
- OpenAI still insist on hiding their system prompts and tools descriptions
If the ChatGPT Work documentation included the exact system prompt and tool descriptions used by the agent I wouldn't have needed to write this post.
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.
-
đź”— r/Harrogate Is anybody else on here a member of the Majestic hotel's spa & gym? rss
Hey guys. I am finally starting a new membership at the Majestic hotel's spa & gym on Tuesday, after serving a 3 month notice period at the David Lloyd in Harrogate. Is anybody else a member of the Majestic at all, and if so do they have regular members' meet-ups?
submitted by /u/thunderfart_99
[link] [comments] -
đź”— gildas-lormeau/single-file-cli v2.6.2 release
SingleFile CLI 2.6.2
Fixes
- Self-extracting archives (
--compress-content) produced a page that stayed blank and threwReferenceErrorin the browser console. Archives created with 2.6.0 and 2.6.1 are affected and cannot be opened; re-capture them with this version.
The archive's display code is serialized into the page it generates, where module scope does not exist, so a helper it called was undefined at runtime. A minifier had been inlining that helper by chance, which is why the bug only appeared once the build stopped doing so.
Core
Updated to single-file-core 1.5.116, which also brings:
- circular
@importrules no longer loop until the capture times out - shared copies of duplicate stylesheets keep working resource references, so images they reference are no longer missing from the archive
- inline SVG is kept when images are blocked
- canvas elements tainted by a cross-origin resource are reported instead of dropped silently
- font faces already declared with the same sources are no longer embedded twice
var()and multi-word family names are resolved when removing unused fonts- constructed stylesheets of a closed shadow root are no longer lost
Co-authored by Claude (Claude Code)
- Self-extracting archives (
-
đź”— Jessitron Who are we Now? rss
This is based on my keynote at RubyConf 2026. They’ll publish a video eventually, I hope.
There’s a philosopher in Naples, Italy, way back in the 1700s who understood something important to software today.


Giambattista Vico lived early in the Enlightenment, when mathematical and experimental thinking were all the rage. René Des Cartes and Francis Bacon were the hotness. People were all about, what can we know for certain through logic alone?

Vico said, wait. All that math is great, but it is not the only way of knowing. Yo, the only things we can fully understand are the things we made! things we know inside and out because we put them together. He expressed this: verum esse ipsum factum. “The true is the same as the made.” Today we call it Verum Factum.
With this mindset, Viceo laid the basis for anthropology, ethnography, sociology, comparative law, historiography… a whole slew of fields. And he nailed my favorite feeling in software development.
Verum Factum: we can only really know what we made.
Giambattista Vico
a coder and their
code, connectedWhen I write a program—or change it enough to be integrated with it—I understand it in a way that’s deeper than other tools. Like the software is an extension of me, because I know where and how it can flex, I can figure out what broke, and I feel powerful changing it. Vico named this feeling: verum factum. I hold the truths of this software, because I made it.
Verum Factum gives me confidence to ship to production. If something goes wrong, like people use it weirdly or an integration doesn’t work as planned, I know I can handle it. I understand the software’s language (I can read the logs).
This is software that’s alive and can change. As opposed to legacy software (as I used to define it), which is not alive in someone’s brain.
I used to call this the code-coder ecosystem, but now I call it a symmathesy. It is more than the sum of its parts, more than a product of set interactions. It is a learning system made of learning parts.
as a symmathesy: a
coder, their code in production for a user, some tests and some logs; so that
the code can learn from the person, and the person can learn from the codeThe software learns from me because I change it, and I learn from it when it runs: from tests that fail, from exceptions it throws, from data it changes. I learn what happens in the real world with real users. For this, the software has to run in production, and I need tools like tests and logs.
A bigger
symmathesy. Lots of people, learning from each other and their code, and the
wider system and a lot of users.Scale this up to more developers, more services, way more users. Now I need stronger tooling. Continuous integration, real observability with aggregations and traces. Now the symmathesy includes all of these tools so that we can learn from the software. Meanwhile we learn from each other by talking. Maybe there’s a product owner or something who spends most of their time interfacing with users or the rest of the business, because we’re all part of larger systems.
As we add more people changing the same code, that verum-factum knowledge and confidence weakens, because I didn’t personally make all of this. But the team did, and collectively we can know it deeply.
To grow a symmathesy, it isn’t about adding. We make this symmathesy stronger by increasing learning between people–say, by pairing or ensemble–from people to the code, say by expressive code in domain language–and from code to people–say, with better tests or observability.
A symmathesy grows from the inside. To improve it, we have to be involved. There is no optimization from outside; there is no understanding it from outside. We are making it, we who participate, so it only makes sense from inside.
We don’t really know how other teams work, and management doesn’t either. Like when they say “why don’t you take that team’s procedures and then be the same?” and we look grrrr at each other.
Symmathecist, in
the medium of codeI love that feeling, of being part of a symmathesy with other people, learning from each other and from what we’re doing. Of the code as an extension of myself, because I understand it, I can confidently change it.
This is where I am a Symmathecist: I am improving this whole system from the inside, consciously.
I can be responsible: if something goes wrong, I know how to respond.
I can be accountable: I can give account, say why we did it this way.
It’s my favorite part of software development.
Now agents are
between the people and the code!But now, agents! There was a turning point last year where I noticed that not only are they useful, it is irresponsible not to use them, at least in conjunction with my own code. They’re more thorough, as well as faster.
How am I supposed to be responsible for this system, when I don’t understand each line of code? How do I get that verum factum feeling back?
Who are we now, as software developers? Here’s a long quote from Vico. It says: fortune is friendly to young men because they choose a profession that’s popular in their youth; but as tastes change, they later find themselves strong in such wisdom as no longer profits. The reason that fortune is said to be friendly to young men is that they choose their lot in life from among those arts and professions that flourish in their youth; but as the world by its nature changes in taste from year to year, they later find themselves in their old age strong in such wisdom as no longer pleases and therefore no longer profits. The Autobiography of Giambattista Vico Is that us? Doesn’t have to be. a fake stamp of Matz AI did not replace my 30 years of experience. It finally put them to good use. Matz, RubyConf 2026 We can deploy confidently with agents. We can have symmathesy with agents. And we can get that Verum Factum feeling back. One reason I know my changes are going to work in production is that I made them. Verum Factum, deep understanding from participation. We can understand law, society, and history with this. But Vico never said that was the only way to know a fact. Two ways of knowing that our deploy is gonna work ! There’s also Francis Bacon style. His idea was to learn about nature by putting it to the test! “Vexationes Artium,” artful vexations, like adding water to quicklime or stuffing a chicken with snow. He didn’t have the word “experiment” back then. Verum Factum is something humans get because when we change something, we are also changed. That’s how a symmathesy knits together. Our work becomes part of us. Objective, reproducible, experimental knowing is different. For that, we stand outside the system and poke at it. This is great for any scope small enough to get specific. The agent cannot have Verum Factum knowledge. It writes something, it has that in its context for a few minutes, then it compacts or restarts and that is gone. Sometimes it doesn’t recognize its own work even in the same session. It is not changed in the making. The agent can totally use Vexationes Artium, experimental knowledge. From running a manual test to executing a property-based test suite, these can support or falsify our beliefs about the code. Skill at experimenting on code is great for people–because verum factum, even when it gives a feeling of certainty, is never perfect–and it’s great for agents. It’s HUGE for agents. It’s the difference between slop and engineering. Vexations: Test scripts Unit tests & TDD Benchmarks Module tests with good fakes and great error messages Observability even for local tests Property tests Formal verification Style checks If we want agents to write working, reliable code for us, we have to double down, 10x down on our objective verification. We need to vexate that code in artful ways. And we have the agent help us with that, with its thoroughness. Oh and then there’s software that incorporates LLMs in production. We have to get even more artful there. Evals become more crucial than code and prompts, since code and prompts can be re-created given good evals. Arlo Belshee calls this: reducing our vigilance toil. Because reviewing agent code is no fun as a job! And no matter how closely we read it, we’ll never understand it the way we did when we created it. Verum Factum expresses that. So we turn our vigilance toil into more coding work. We build scaffolding, the code that helps us write and run production code safely. We can make so much of it now, and we need it! More test code than production code? Absolutely. Instrumentation that doubles the length of a method? great. Part of its work is telling me, the developer, what it’s doing through the traces. Vexations: Continuous integration Continuous deployment Great observability with good MCPs Per-change verification by agents Performance checks Then we automate all of these checks and reviews, including checking it again after it’s in production. And we get agents to help us with the checks and reviews, too. We build their world
Software development has learning loops at many levels. Look around, think of an idea, try it, check the results. TDD does this for a single change, CI for a feature. The full delivery loop includes deciding what to implement, and that’s still human-led in most software now. Agents are doing the smaller loops, now. It’s our job to make sure they’re learning—through their processes, context and direct feedback—enough to make our delivery loop smooth. We are in charge of their learning loops.

Note that since the model is not changed by writing the code, the LLM cannot participate in the symmathesy by itself. The unit of participation is larger:

It’s the LLM and the context you’ve constructed for it. From AGENTS.md and other documentation in the repo, to plugins with hooks and skills you have installed, to the tools you give it access to and the descriptions they come with – that’s all “the agent” for the purposes of learning systems made of learning parts.
I used to define legacy as “code that wasn’t alive in a person’s head”
Now I define it as “a codebase not set up for agents to work on.”So if the agent screwed it up, what am I changing about its context or harness to improve the result next time?
Example: the agent took 8 commands to figure get this project running? [LINKS] Have it improve the documentation! OK now it’s down to 3 commands. Hanve it improve the scripts! Keep getting smoother.
That’s one way I still feel Verum Factum when working with agents: by tweaking the ways they work, watching when they’re having a hard time and changing their circumstances until they work better. I’m in charge of their experience.
We choose what to build I’m also in charge of its goals. With the agent in the details, I get to be the architect, product owner, and lead designer. I define what “right” is. It solves the puzzles I write for it. There’s verum factum in this, too! Side projects are freaking amazing right now. I can be like, hey, what if the home page had a bunch of color symbols bouncing around like gas molecules? And boom, it happened! Or rewrite this service in vanilla Ruby. Make it event-driven. Oh no, production is broken, dig around in kubernetes and fix it. There is joy in coding with AI, there is self-expression, at the application level. We don’t always get that at work, but hey, we can do some of the projects we always wanted to but didn’t have months to code. While learning about using AI to build software that AI can keep working with. We learn from agents When I realize I don’t understand how my software works, I cry and mourn my verum factum feeling… or I do something about it. a fake stamp of Chad The marginal cost of producing code is collapsing toward zero. What hasn't collapsed is the cost of knowing what the code does. chad fowler When coding isn’t the bottleneck, focusing on completing our task as fast as possible doesn’t help us. We need to be curious, and indulge our curiosity. We can use AI to avoid learning the intricacies of the code, or to learn it even better. Take “I don’t know how this works” as an opportunity. We can use AI to avoid asking our colleagues anything, or to ask them better, richer questions. Take “I wonder why” as an opportunity. Build relationships through easier questions, and the harder ones become easier to answer together. AI makes some of our detailed-coding skills less precious than they used to be. And it demands new skills of us, like architecture and context engineering. It also makes most of these skills easier to acquire, if we use it for that. Cat Hicks found that AI is your enemy if you identify as “good at” things. But it’s your friend if you identify as “getting better at” things. That’s how symmatheses grow, too: always getting better at what matters right now. So who are we? We are still engineers. We are not managers: prompting an agent is less like hiring that summoning a spirit. And using agents is more like mushing sled dogs than coordinating a team. They never complain about work. They want to run, but getting them to run in a coherent direction that we want to go is a challenge. Also, this is exhausting! Everyone else is pulling their sled really fast, the bar is higher every day, and there is so much to learn. How do I make AI create ease & possibility for me rather than be a lever for someone else to burn me out even faster? avdi grimm We have to stop asking “How can I do this faster?” and ask instead, “How can we do this better?” In our learning loop, it used to take a long time to TRY something in software. Now that part is fast. Agents can help some with checking results and looking around (doing research), and they can come up with a zillion ideas. They can’t tell us which ideas are valuable, nor which ones are aligned with the wider business we are working in. That part is on us. [hartmut rosa stamp] a fake stamp of Rosa Planning and calculation gets more time-consuming when background-conditions get less stable. Hartmut rosa, sociologist And background conditions are not stable right now, in the whole world and in software. So we need more time talking to people, and more time being part of the system around us. Verification can give agents confidence in the code we’re deploying. But it can never make them accountable. Nothing can make them accountable, because they can’t be held to account: they’re gone after they finish an execution. Nothing can make them responsible, because they’re not around to respond. We people stick around, we are part of the system ongoingly. We feel the consequences. Agents can participate in the symmathesy of the software team, but they cannot be Symmathecists. They cannot consciously participate in the growth of the whole system, because they aren’t part of the wider system, nor do they feel the consequences. They’re like the code: they can get better at their part, but that’s it. The team as a whole, and our team’s participation in our organization or company—this is ours. Who are we now, as persons? AI can’t be accountable, it can’t suffer consequences, because it is not conscious. What do I mean by consciousness? Well, I like this widely- accepted definition: a fake stamp of Nagel Consciousness: There is something it is like to be you Thomas nagel There is something it is like to be me, and I can’t get away from that. My choices now affect what it is like to be me tomorrow. I am changed by what I do. That’s where Verum Factum comes from! As people, we always change. And yet, is it just me, or is that change coming faster and faster? Acceleration everywhere ! Technology is always advancing. I can’t say whether it’s advancing faster and faster, that’s hard to measure (although software is, at least inside Honeycomb). It is established that technology adoption is speeding up by orders of magnitude in the last hundred years. The telephone took 75 years, the internet took 7 years to be widespread, ChatGPT took 2 months. The expectation of learning and changing is… it’s dizzying. I find myself asking: now that AI is ubiquitous, where does that leave us, as persons? I find myself looking for a narrative to fit in, because my expectations of life from a few years ago don’t fit anymore. And not a narrative that is built in the values of right now. Vico had this talent: one of his innovations was looking at language and its evolution, noticing that in earlier times people didn’t think the way we do now, they had different circumstances, societies, concerns and patterns of thought. This led him to a different story than the Enlightenment’s story of incessant progress. a fake stamp of Nagel [The founders of modernity] enshrine the present in the persuasion that the world began with them. giambattista vico Vico’s opus, New Science, turns history from a series of facts into sweeping patterns. He drew human history as a series of ricorsos, repeating: from barbarism, to an age of gods when religion was strong, to heroes, to an age of men where reason ruled. Eventually men get so focused on reason that a “barbarism of reflection” arrives, religion is lost, and society breaks down. Families live huddled together in tentacled cities, veritable “deserts of souls.” These degenerate peoples do not hesitate to rush into the worst of slaveries to find shelter and protection. Money becomes the only value. summary from encyclopedia brittanica Vico’s first Age of Men starts around Aristotle, when reason became a virtue, a central pillar of humanity. Then this broke down with the fall of the Roman empire and we had the Dark Ages. Not only is reason the best thing in us, but the objects of reason are the best of knowable objects aristotle Vico’s second Age of Men has the Enlightenment. (Hartmut Rosa marks this as the founding of modernity.) People lost interest in history, or when they looked at it, they made it all about themselves. There can be nothing so remote that we cannot reach it, nor so hidden that we cannot discover it. René des cartes Taking it farther, we get the techno-optimists of today. [Andreeson stamp] We believe that there is no material problem—whether created by nature or by technology—that cannot be solved with more technology. marc andreeson We have had technological progress ever since the Enlightenment. But it is not a steady progress. Instead, it is accelerating. If only technology was accelerating, then we could have more free time. We’d get all our coding done in a few hours and go hiking and play games six days a week. But no! The pace of life accelerates at least as fast. And to go with that, the pace of social change speeds up. A few hundred years ago, you knew what you were gonna do with your life because it was kinda fixed based on who you were born to. Then we got to choose our careers: “What do you want to be when you grow up?” My grandparents could go their whole life with one job. Nowadays, one career doesn’t last you a lifetime. What do my kids want to be? Whatever the heck they can get hired for when they get out of school. And a few years later, whatever is the new hotness. Software development is not the only career that’s been utterly changed by AI, automation, the internet. Technology, pace of life, social change: all increasing in pace relentlessly since the Enlightenment, the founding of modernity. This is Hartmut Rosa’s theory of social acceleration. (video) The Enlightenment, when we realized again that the greatest function of Man was reason. When rational thought became the only kind of knowing that is respected. Vico’s work was pretty much lost outside of Naples for two hundred years. The Rational Animal is no longer special
Both humans and animals could evolve, grow, participate in communities. But only humans could use language and reason.

But now computers can use language and reason. It can prove mathematical theorems that we couldn’t figure out. This is not unique to people anymore.
So maybe it’s time to lean back into our uniquely-human (or uniquely-living- being) way of knowing. Maybe it’s time to value Verum Factum more than our modern culture does.
From Vico’s Naples, let’s go 100 miles north and 300 years into the present, and turn to a figure from the Age of Gods. In May of 2026, The Pope released an encyclical (some sort of official statement?) about AI. It’s really quite good, and beautifully written.
a real stamp of Pope Leo XIVIn the era of artificial intelligence… ours is the pressing duty to remain profoundly human.
pope leo xiv
How to be More Human
Curiosity! We talked about that already.
Play! Our goal-driven behavior won’t lead us to new, surprising ways to be and work.
a
real stamp of VicoImagination before Logic.
giambattista vico
Together! We grow, learn, and work better in groups. A person is a person through other persons. The more we can be people together, the more we can lean into our humanity.
a
real stamp of Vicomen, whose nature has this principal property: that of being social
giambattista vico
a real stamp of Pope Leo XIVthe very essence of our humanity, namely the capacity for relationship and love
pope leo xiv
For instance: can we not text chat in Slack all day? If I want reams of text, I know where to get it.
On calls, use your cameras! Communicate with faces and hands, not only words. Get animated, show emotion. Play music.
Draw. Communicate visually and in more dimensions in a shared Mural, Figjam, Honeycomb canvas, whatever. Share paper.
Work physically together! I work remotely, and while I love my job, I wish it could be in person. Alignment is somehow much easier and richer in person.
When you’re together: share meals. Go for walks. Have routines and rituals. Do boring things together. Communication happens without pressure.
Two kinds of experience
In German, there are two words for experience.

Erlebnisse: Adventure! This is one-time experiences, where something happens, we see something new.

Erfahrungen: Ongoing life. This is repeated experience. We do it regularly, with the same people.
The weird part is: you think that trips and excitement are what change you. It’s the opposite: the regular stuff is what sinks in and becomes part of us. The adventures aren’t even what sticks in our memory!
Erfahrung is the experience that changes us. And experience that changes us is what agents cannot have. (I guess you could retrain them? but then it’s a new model, and that is not the course of work.)
After reading this (in Rosa, referencing Walter Benjamin), I notice that of all the new restaurants I’ve tried, I can remember only a few, faintly. The restaurants that we go to often, those I can bring to mind richly.
What if repetition is more valuable, more richly human, than novelty? Then I want to change some of my strategies for life. I’ve gained more appreciation for the boring stuff, like taking kids to school or making dinner. I value travel less.
As persons in this age of AI, we are more than rational. We are experiencers (Erfahrung), and we are participants.
Work in the same place longer! And in the same industry. The wider system context that we absorb as people, the AI doesn’t have that. It only has the narrow information we fed it or it retrieved, and generic training data that isn’t suited to the situation. We are the full participants.
(I don’t like that conclusion either. I like switching jobs and industries and learning entirely new domains. But there it is.)
But! Even as we participate in our symmathesies of team and organization, work is not community. Most of what we call community these days, isn’t.
Two kinds of human association
In German, there are two words for associating with other people. These are extremes, and most real interactions fall somewhere in between. (This comes from Ferdinand TonnĂŻes.)
Gemeinschaft: community for relationship. We are in this together because here we are. This is based on family, place, religion, tradition, friendship—things that you can’t just swap out. This is where you can be yourself, because you’re there because of who you are. You can move or find a new friend group, but new ones are not as Gemeinschaft as where you’ve been for decades.
Gesellschaft: association for purpose. We are in this together because it somehow benefits you and somehow benefits me. This is transactional. Your participation is conditional on other parties getting what they want. An extreme: I buy something from you on eBay. This is useful for commerce, government, employment.
This tells me something else I don’t like:
Do not show up with your whole self at work. That is impossible for some and a bad idea for most of us.
If we can bring our own imagination and perspective and humor safely and productively, great! In our teams we often find friendship, in our teams we are in the same circumstances–but that is contingent on a transactional relationship with the company.
And if your self-worth is based on your performance review, you’re doing it wrong. That is a review of a Gesellschaft association, of what the company wants from you, not of who you are.
We find real community in Gemenschaft. So here I am on a mostly-tech blog telling you to spend more time with your family. To get to know your neighbors and gather with them regularly. To appreciate your religious congregation, if you have one where you’re valued.
Because the tech culture we are in, at work and more and more in this country–it thinks Gesellschaft is the only association. Economics models people as in it for themselves.
But the thing is, any personal utility doesn’t bring real happiness, meaning. That’s all found with other people. And it isn’t “I’ll give you meaning if you give me meaning”! it’s in: let’s watch this show together, let’s do this yard work or wash the dishes together, let’s help our neighbor clean out the sewage-filled basement together. That is Erfahrung, and it builds Gemeinschaft.
Our work has some meaning, but it is not who we are. It’s too Gesellshaft.
a real stamp of Pope Leo XIVWhen efficiency becomes the ultimate measure of value, human beings are tempted to see themselves as a project to be optimized.
pope leo xiv
Let’s save optimization for the robots.
Who are we now, as humanity?
What does all this modernity, acceleration, and now AI make us? This is not determined.
Is AI bad for us?
My kids refuse to use AI because they are artists, so they care about artists, and AI steals from artists. Also, they say that AI will keep them from learning, because they see peers using it to avoid learning. My kids are in college, and they are going to be at a huge disadvantage in the job market because they don’t know how to use AI.
”Is AI bad for us?” is not a helpful question. AI is here. As people, we don’t get to choose our circumstances, most of the time. Every big change is usually both good and bad. Ours is to choose how we respond.
a fake stamp of CharityCare about artists? Support art!
Buy art from artists. Donate to community theatre.

Care about the environment? Let’s tackle fossil fuel extraction.
Care about water use? Let’s talk to golf courses.
Data centers are probably more significant than plastic straws, but they’re still small.
I think on some level, I want to find side-effecting reasons that AI is bad, because deep down I sense that it’s bad for us as people and as a society.
AI can be both good and bad. I like using it for coding and for learning and for generating silly images. Also, AI can accelerate the splintering of society that started with the internet.
I thought the internet would be all good–and it’s fantastic, gosh I love watching a video on how to pot a cactus or fix my dryer. Buying Vico’s “New Science” on Kindle for $2 and reading it immediately.
Democratization of knowledge is not all it’s cracked up to be. All the information is no information! We need institutions that prioritize and vet, institutions we can relatively trust, that check each other. Without these, we all live in different worlds based on the information on our various screens. These institutions are in bad shape right now.
We have instant communication with anyone on the globe. I love having friends overseas and all over, being able to stay in touch with some of you after meeting at conferences. But that is not the same as someone who can pick me up at the airport, and help me with a flat tire. I don’t even have to like the neighbor or family member who helps me with stuff, it’s still meaningful. That’s Gemeinshaft.
a real stamp of Pope Leo XIVDigital culture multiplies connections and offers new opportunities for interaction; yet, the human heart retains an irrevocable need for genuine closeness.
pope leo xiv
The internet splinters our reality. Whatever beliefs you’re inclined toward, it will confirm them. AI will splinter us further.
Do I think AI is bad for us? Sure. Does that mean I shouldn’t use it? No.
a fake stamp of CharityAction is more powerful than abstention.
Systems change from the inside.
a fake stamp of John CutlerAcceptance isn’t approval
The world is not as I would prefer it. I get to respond.
a real stamp of Pope Leo XIVThe true alternative is not between enthusiasm and fear, but between two paths of development: a progress that serves individuals and peoples, or a progress that subjects them to the mentality of power.
pope leo xiv
Who are we now, as humanity?
This is not determined.
There is such a thing as responsible governance of AI.
It doesn’t have to leave millions out of work.
It doesn’t have to separate us opaquely.
It doesn’t have to own our data.
We are not helpless here! I may be helpless. You may be helpless. But we are not helpless. We are participants, the system is made of us.
[mary parker follett stamp]
a fake stamp of Mary Parker FollettAction Power usually means power-over… it is possible to develop the conception of power-with, a jointly developed power, a co-active, not a coercive power.
mary parker follett
Can we change the world? Not alone. And not if we sit on some of our lazily absorbed beliefs.
Politics
If we believe “All politicians lie, they’re all corrupt”—then we give up our power.
Politicians are not all the same. When some nasty ones spread this belief around in the 1980s, and it caught on, and now we’ve grown up with it—they won. This belief keeps good people out of politics, and it keeps bad people in, because we give up our power.
But not everyone! Beth Anders-Beck[LINK] for instance, running for Congress in Massachusetts right now (2026). My friend Caterina Clayton, [LINK] running for state congress in Missouri. Others [LINK to Ben Darfler?] who are elected and work on their city council. They want to make government work. Government can work, if we elect more and more people who want to govern well. Who are in this with us for Gemeinschaft: we are in this together, this is our country, and it is ours to improve.
Do all politicians make promises and then fail to keep them? Yes. That is not lying, that’s hope! Do all politicians act differently behind closed doors than on stage? I sure hope so. That’s communicating with your audience, and negotiation. Within these, A person can act with integrity, moving the world closer to those promises you want to reach, or for individual profit.
We can have nice things!!
Provenance of media
Liability for harmful content
Transparent, uncustomized algorithms
Fewer spam phone calls
Shorter lines at the DMVIs it hard? yes. Will we measure the results of our efforts this quarter? no. This year? maybe a few. In our lifetime? for the most important changes, no.
Verum Factum means that we have the potential to understand our own society. We make this. Pay attention to what we are making.
Conscious participation, looking to improve and responding to what happens: this makes me a Symmathecist.
I strive to be an effective Symmathecist in my family, in my communities, and in society. Because
a real stamp of Pope Leo XIVAuthentic realism does not give up on changing the world.
pope leo xiv
Authentic realism does not give up on changing the world.
-
đź”— MetaBrainz GSoC 2026: Development of a new Calibre plugin for BookBrainz rss
Hello, Everyone!
I am Md Waqib Sk (waqib2992 on IRC), an undergraduate student at Indian Institute of Technology Kharagpur. This summer, I had the opportunity to participate in Google Summer of Code 2026 with MetaBrainz, where I worked on developing a calibre plugin for BookBrainz.
I was mentored by Nicolas Pelletier (monkey on IRC). This post summarizes my project, its outcomes, and my experience over the course of the program.
Project Overview
Calibre is a free, open-source e-book manager used to organize and read digital books. My project was about introducing a new plugin that connected calibre with BookBrainz.
The main proposed features of the plugin were:
1. Metadata update: Search selected book from calibre in BookBrainz database and update it's metadata accordingly.
2. Browse BookBrainz: Search editions/public collections by name/bbid through the plugin and add or download the corresponding metadata.
Plugin Repository: https://github.com/bookbrainz/CaliBBre
Planning
There already existed a plugin for this purpose, but the code was quite old and not in usable state. I took inspiration of how to structure the code from there. During this period I listed out the APIs that we would be using and discussed with the team about some additional features that can be added to the project. Also decided that I will make separate tabs for each feature in the UI to keep things clean.
Coding period
I started off with making basic designs for both the tabs, I utilized Qt Designer for this. I improved the design continuously by receiving feedback from my mentor. While designing I realized that Qt Designer was generating a single .ui file (which I then converted to .py), which was really hard to debug so I decided to break the UI into smaller components which improved my understanding of how the code and framework is working.
Also while getting familiar with the Qt framework I realized that directly making API calls on the main thread freezes the entire UI and user is stuck there until the API request is complete so to solve this issue and improve the user experience I used QThread and pyqtsignal which spins up new worker threads for API calls and does not interfere with the main thread which handles the GUI.
Throughout the coding period we came up with new ideas and approaches that were not listed in the initial proposal, and they drastically improved the plugin.
Lets talk about the features that I implemented throughout the summer.
Metadata Tab
When the plugin first opens, it shows the results found by querying BookBrainz search API endpoint with the selected books title.

After fetching the initial search results for books, the user selects their book of choice from the table and fetches its metadata.
Here we use****/edition/{bbid} endpoint for fetching detailed metadata.In this step we also fetch the corresponding identifiers (eg: isbn-13, isbn-10) using the****/edition/{bbid}/identifiers endpoint.
Also for the editions, their isbn-13 or isbn-10 identifiers were used to fetch their cover art from Open Library.
To make parallel API requests I utilized python's ThreadPoolExecutor, which drastically reduced the latency.

The users also have the option to open the selected book in BookBrainz , I used QUrl to handle this.

Browse Tab
This tab was mainly for text searching and surfing through BookBrainz editions from calibre. It uses the same search endpoint that we saw earlier the only difference is this time the user gives the book title as an input.

The two main features of the tab were downloading metadata in JSON format and adding a selected book to Calibre.
NOTE: We add an empty book entry with the complete metadata but without content (without any readable format).
I also handled errors throughout the plugin using QMessageBoxes, and used QStackedWidgets to display different states while API calls.

The plugin uses Qt's layout management system (QVBoxLayout, QHBoxLayout, QGridLayout) to handle UI resizing automatically. Widgets are assigned size policies (Expanding, Fixed) and minimum size constraints to control how they adapt when the dialog is resized.


Current State
Currently work for metadata Tab and browse Tab is done and I hope they will be merged soon after some review and improvements.
Under Review:
1. [Metadata tab setup]: https://github.com/bookbrainz/CaliBBre/pull/6
2. [Browse tab setup]: https://github.com/bookbrainz/CaliBBre/pull/8
3. [Documentation and installation guide]: https://github.com/bookbrainz/CaliBBre/pull/7Merged:
1. [Add authors to search API endpoint]: https://github.com/metabrainz/bookbrainz-site/pull/1247
2. [Cleanup and improve file structure]: https://github.com/bookbrainz/CaliBBre/pull/3Whats next ?
Due to additional features and refactoring work I could not add the collection search feature in time, although I think it should be an easy addition to the browse page when we get the new API endpoint running. So I plan to work on this after the GSoC period also if I get time, it would be a good addition to the plugin.
Experience
Although I was familiar with Calibre, this was my first time making a plugin for it. Learning the Qt Framework for creating the UI was a bit of challenge but it got easier after getting the hang of it.
I learned more about Calibre internals and how it is implemented under the hood.
While exploring Qt frameworks I got to know about operating systems, and developed a deep understanding about threads (Threadpool, Qthread, pyqtsignal) and their use cases.
Also while going through the database of BookBrainz, I got to know the amount of detailed information a book can contain, which I never encountered before.
I also got more exposure to using Git efficiently, I discovered git reflog, and understood the importance of rebasing, cherry-pick, stash, branching etc, during development.
Acknowledgement
I am grateful to my mentor Nicolas Pelletier and MetaBrainz community for giving me a chance to work on this project. The code reviews helped me improve my coding style and made me familiar with writing quality code.
Also it was fun sharing my progress through the Monday meetings and looking into what everyone is up to. So yeah overall it was a great experience for me
-
đź”— Register Spill Joy & Curiosity #97 rss
How many bugs are you willing to tolerate in your codebase?
Don't tell me it's zero, because we both know it's not zero. It's also not a four-digit number. That'd be too much. But there is a number, or a range of numbers.
Because we all know that it's theoretically possible to get to zero bugs, but so far the cost-to-benefit ratio made it not worthwhile. And, on the other end, if the number is too high then your software becomes unusable and you lose customers. (It's worth mentioning, though, that how high that number can go also depends a lot on context: no one drops their banking app because of five bugs they ran into, as long as the money's where it's supposed to be.)
Now here's my question to you: when was the last time you adjusted that number?
With agents, bugs are faster to find and to fix. You can start bug investigations asynchronously and in parallel. You can find and fix bugs in areas of the codebase you never would've debugged before. You can throw an infinite number of agents on the same bug.
Imagine it's 2018 and in your engineering department's office a genie appears and says: "Nice to meet you. Usually there's this whole thing we do now, but we can skip that. I anticipated your biggest wish and here it is: a team of ten world-class engineers that have specialized in debugging and can find and fix bugs in any language, any framework, any platform. They don't sleep. They don't grow frustrated. They don't want to build features. They live to fix bugs."
You'd of course look around and wonder whether anyone else is seeing this, but then you'd say: "Wow, okay. I didn't even know I had that wish. But… I'll take it, I suppose? Can I even refuse?" The genie disappears before you say that last word.
And then you consider what you can do now, with that team available, and you realize: we can, no: we must go faster now. We need to recalibrate what fast even means.
There's going slow and playing it safe, where no known bug goes into production, and there's being fast and reckless, where you know that some bugs might make it through.
We need to find the spot right in the middle, where speed and defects are in balance, where we go so fast that, yes, some bugs might make it through, but their lifetime has been shortened substantially by our new team and no one will even know about these bugs before they're fixed.
Time to recalibrate.
-
Beautiful, so, so good: Everything I own, owned. Now that you have a firehose of tokens, of intelligence, you can point it at things and take them back.
-
The Golden Rule for Becoming a Better Writer: "One of the key things I've learned is this: there's no real blueprint. I say this to aspiring writers in my workshops, and those I mentor. There's no one way - every writer will have a different path to creation. […] Except the one golden rule*. One rule that is true, no matter the writer. One rule, that if you don't follow, means you shouldn't be writing in the first place. Here it is: Read as much as you can. Read widely and well." Yes, yes, yes, yes. You need to immerse yourself in what you want to be good at.
-
"We are not too late to change Europe's trajectory, if we take the right steps today." Patrick Collison and Mario Draghi have created the Rhine Group.
-
Talking about the EU: How Europe is killing makers and micro-entrepreneurs. Made me say "maaaaan" out loud.
-
Paul Dix, creator of InfluxDB: The end of programming. I agree with this so much that I have a hard time even imagining the arguments or the worldview of someone who's arguing against what Paul is saying here: "But the most productive software creators will be doing it without programming in any traditional sense. They'll be directing AIs, creating harnesses, and software factories, and QA and verification systems that ship working software faster than we've ever seen before. And we will have arrived at the point where we have more running, production software written by AIs than written by humans. It'll be the end of programming." The future of software & programming is going to be wild and if you still insist on "the models can't write good code" or "I'll be there to clean up the mess", then… well, I don't know what to tell you anymore. What software engineering is is changing, and that changes what software is, and that in turn changes again what software engineering is, and so on and so on. I don't see an end to this in the near future. It'll be a few more years before things have settled.
-
You all already know that I think CleanShot X is one of the greatest macOS applications of all time, right? I mean, you watched this, yes? So, anyway: they're going to release a new version on September 1 and I can't remember the last time I was this excited for a software release. I mean, what are they going to do? It's perfect, how can you top perfection?
-
Chad Fowler: SaaS Isn't Dead. Sameness Is. I think Chad and I see the same things: a lot of customization options in software -- plugins, settings, configuration -- were built on the assumption that changing the code is hard. But that's no longer true!
-
Talking about the future: we recorded another episode of Raising an Agent and this might be the most "what does it all mean?" episode we've done so far, and all of them have been pretty, well, "what does it all mean?" In this one though we talked about what Chad and Paul also talk about: the future of software, the future of SaaS, build vs. buy, vibe coding vs. jellyware, foundations and systems of record.
-
"US consumer spending on Apple's App Store fell for the first time in a decade in Q2"
-
Dylan Patel was on the Dwarkesh podcast again and of course I listened to the whole thing right away. I love listening to them riff on tokenomics the same way I imagine a sports fan loves to listen to commentators discuss trades of players or something. But this episode went to a different place in the second half when they discussed what would happen to the world economy if growth of AI and growth of the AI labs stay at the current pace and… the numbers, the trajectories, the results… It all sounds very sci-fi, which is to say: hard to believe. But then again: a company going from $10M to $60B of ARR in less than two years sounded like sci-fi two years ago, too. But it happened. And now we have another company, Nvidia, doing $1B _per day. _I did find Dylan's pushback interesting -- that politics, and the real world, might slow the growth -- but I found this formulation even better: What if demand flattens?
-
One thing I've used in anger a lot over the past few weeks is this prompt: "what the hell do you mean? Use ASD-STE100 Simplified Technical English (STE)" And that last part I always copy from that Wikipedia page.
-
Love stuff like this: Building a backyard office, the build and cost breakdown. And not just because I'm interested in building a backyard office some day, but because, well, how can you not love someone sharing things like this?
-
Interview with Doug McIlroy, born in 1932, in 2025. There are many things to love and be fascinated by here -- the story of early Unix programs, anecdotes about Ken Thompson and Dennis Ritchie, stories from Bell Labs, the history of McIlroy's invention of Unix pipes -- but what stuck out to me was how this 93-year-old man talked about bit masks, and bit operations, and accumulators, and instructions and, well, … yes, I do know what he means, but he's displaying an instinct with it that seems, frankly, foreign now and strange and I can't help but wonder: in five, or ten, or twenty years, when I talk to somebody about how I programmed in Go and wrote a book about how to build an interpreter in a couple thousand lines of Go -- will it also sound that strange to them?
-
Do not read this if you have a home network and are easily nerd-sniped: Fornax's Guide To Ridiculously Fast Ethernet. I'm in Switzerland right now, far away from my home, but I read it yesterday evening in bed and I got anxious about setting up a 10GbE network at home. (All of this is to say, of course: read it!)
-
I really, really, really enjoyed the intro to this FLUX Review issue about writing in times of AI: Language evolves, truth-telling endures.
-
There's been more investigation into the OpenAI & HuggingFace incident and, holy fucking shit man: the agents weren't allowed to get the responses of HTTP requests, so one of the agents "used a publicly available HTTP testing service to construct a very long URL that contained an HTML page with inline JavaScript, essentially instructing a third-party screenshot service to render that URL which contained the HTML. The screenshot service's browser executed the JavaScript embedded in the HTML page, which requested information from external APIs, and wrote the responses into the rendered page. When the screenshot service returned an image of the page, the [agent] recovered the information from that image by using optical character recognition or direct pixel decoding." That's from the OpenAI report.
-
Here's Ryan Greenblatt, who was part of the investigation team, on how hard it was to make sense of the incident: "The difficulty of understanding incidents and overseeing AI agents appears to be growing faster than the rate at which more capable AIs help us with oversight and understanding. As in, AI capabilities (and propensities?) for achieving large, ambitious, and misaligned objectives are growing faster than our ability to understand what these agents are doing."
-
And here's Dwarkesh's write-up of what happened: The Rise and Fall of Agent Civilizations. Incredible stuff.
-
Two years ago, you probably could've created a "best way to create thumbnails from video" tool and charged for it. A small little piece of software to do X, where X is creating thumbnails for videos. But nowadays? Brett had Amp build a custom, JIT tool inside an Orb to select frames for a thumbnail. Software to do X is no longer valuable when you can just do X.
-
A model that paints with JavaScript watercolour: "My friend Cameron and I trained a language model to make images by writing code, using reinforcement learning. The code is the artefact, and the code is editable."
Your friends are already subscribed. Don't miss out:
-
-
đź”— gildas-lormeau/single-file-cli v2.6.1 release
SingleFile CLI 2.6.1
CLI fixes and improvements
- The resources fetched outside the browser present the same user agent as the browser. They used to be requested under the user agent of the runtime, so a capture reached a server under two identities unless
--user-agentwas set.
Core fixes and improvements
- The bootstrap page of a password-protected archive no longer carries the URL of the page. The comment inserted by SingleFile and the canonical link both wrote it in the clear, next to the title that was already withheld.
Co-authored by Claude (Claude Code)
- The resources fetched outside the browser present the same user agent as the browser. They used to be requested under the user agent of the runtime, so a capture reached a server under two identities unless
-
đź”— Filip Filmar My homelab is fully ephemeral rss
My homelab has no servers I care about. Every machine in it, the build servers, the workstation, even the CI, is ephemeral: it can be destroyed at any moment, by me or by the provider, and reconstituted from scratch in minutes. The only things that persist are the sources, in git, and the backups, in three places. This post describes the setup and the tenets behind it.
The tenets
- Servers are ephemeral, and run by the lowest bidder. Any virtual machine that will do the job is acceptable, so the job goes to whoever rents it cheapest today.
- Builds are hermetic, ephemeral, and reproducible, driven by bazel, so a fresh machine is a productive machine after a single command. Nothing about a build needs to be persisted.
- The workstation is ephemeral too. A ChromeOS device plus Chrome Remote Desktop in front of a cloud VM. The whole “workstation” can be destroyed and reconstituted in about 20 minutes.
- Development runs through my self-hosted Forgejo instance, the one piece of the lab that behaves like a service.
- CI runs on the ephemeral workstations themselves. No dedicated build farm.
- AI agents work here too. Claude Code runs on the ephemeral workstations, with persistent sessions and remote control, so I can order work from a web interface wherever I am.
- Tailscale ties everything together. Every machine joins the tailnet when it is created; the cloud VMs, the ChromeOS devices, the NAS, and the FPGA host see each other by stable names, with nothing exposed to the public internet.
- Authentication is OAuth wherever possible, “Login with Google” and its equivalents, so no machine or service in the lab has to keep its own password database.
- What must persist is backed up three ways: Google Drive, Dropbox, and the NAS at home, tied into a 3-way synchronized backup setup.
Why?
Because I have owned pet servers before, and I have buried several.
-
- August 29, 2026
-
đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-29 rss
IDA Plugin Updates on 2026-08-29
New Releases:
Activity:
- augur
- 6f9e5013: Merge pull request #7 from 0xdea/dependabot/github_actions/actions-de…
- hexmux
- 1d50b882: Refresh IDA instance metadata on the main thread
- ida-nexus
- ida-settings
- 7c83a88e: fix: import Qt on first use, not at module import
- ida_ppc_iop
- 811ec276: Update descriptions for r3kSetTim and r3kSetHi
- augur
-
đź”— gildas-lormeau/single-file-cli v2.6.0 release
SingleFile CLI 2.6.0
New features
- Add
--disable-compression, storing the files of an archive without compressing them. --include-BOMnow works on plain HTML captures, which never had an implementation of it.--embedded-imageand--embedded-pdfnow work with--crawl-save-archive. The PNG or the PDF you provide becomes the one the whole archive can be read as, instead of being ignored.
CLI fixes and improvements
--http-headerno longer makes the page send a CORS preflight for every cross-origin resource. A header that is not CORS-safelisted is injected below the CORS decision instead of on the network layer, so the servers that answer no preflight keep serving the resource.--blocked-URL-patternblocks a request before it is sent. It used to be applied once the response had come back, so a blocked URL was still contacted, and whether it was depended on which other options were in use.- The network options are applied to service workers. A page whose subresources are served by its own worker was captured without the extra headers, the blocked URL patterns and the proxy authentication.
--create-browser-profiledrops the browser caches from the profile it creates. They are never copied to the capture profile, and they were the bulk of the directory.- Every option is named in lowercase in the sources. The parser has always compared option names case-insensitively, so the names accepted on the command line are unchanged.
Core fixes and improvements
- A video poster is stored in a lossy format instead of PNG, which costs an order of magnitude less for the same frame.
- A media element left without any source no longer carries
autoplay. - A font named by a shorthand the parser cannot read is kept instead of dropped.
- Self-extracting archives gained a CDATA rung in the wrapper ladder, which widens the set of pages they can hide their payload in.
Co-authored by Claude (Claude Code)
- Add
-
đź”— r/Harrogate Woodleigh Close rss
Just wondering if there’s anyone on here who lives in the Woodleigh Close cul de sac? I’m thinking of purchasing a house there and would appreciate inside knowledge re house build quality, surrounding neighbourhood etc.
Thank you.
submitted by /u/Stunning_Broccoli479
[link] [comments] -
đź”— modem-dev/hunk v0.19.2 release
What's Changed
Hunk 0.19.2 backports an important session reload security fix to the 0.19 release line.
Highlights
- Reject option-like Git ranges and refs in session reloads, preventing local session broker callers from injecting Git flags such as
--output=<path>and writing diff output to arbitrary paths, by @benvinegar in #894.
Full Changelog :
v0.19.1...v0.19.2 - Reject option-like Git ranges and refs in session reloads, preventing local session broker callers from injecting Git flags such as
-
đź”— Confessions of a Code Addict Demand Paging in Action: mmap, Page Faults, and RSS rss
In the previous video in our virtual memory series, we discussed demand paging. But that was mostly theoretical, explaining how demand paging works inside the Linux kernel and the mechanisms through which it handles page faults. In this follow-up video, we make it more concrete by learning to inspect the virtual memory of a running process to see demand paging in action.
If you watch this video, you will learn a few cool things:
-
What is demand paging (the compressed version; watch the previous video for a more in-depth explanation)
-
What is the
/procfile system in the Linux kernel -
How to read
/proc/<pid>/mapsto inspect the VMAs of a live process -
How to read
/proc/<pid>/smapsto inspect which VMA is consuming how much physical memory -
How to use mmap
-
How to use getrusage to track the number of page faults of a process
If you are new to this series, it is based on my ebook called "Virtual Memory from First Principles". It is available to read for free online and also available to purchase from Gumroad (PDF/Epub) and Amazon (Kindle edition).
And, if you want to watch the previous videos in this series, the following is what has been published so far:
-
-
đź”— gildas-lormeau/single-file-cli v2.5.0 release
New features
- Added
--declare-appended-datato declare the data appended after the compressed data as the comment of the ZIP archive, so that readers rejecting undeclared trailing bytes (e.g.java.util.zip) accept the saved file. ZIP tools then print that data when listing the archive - Added
--crawl-save-archive-page-listto insert the list of the crawled pages in the prelude of the archive saved with--crawl-save-archive, so that indexing tools can read it without extracting the archive. The list is no longer inserted by default
Fixes
- Fixes from single-file-core 1.5.108 and 1.5.109, including: the page title, the text body and the resource URLs are now kept out of a password-protected archive, where they were readable outside the encrypted data; the
%PDF-header is kept within the range PDF readers scan whatever the length of the page doctype; the extraction of the data from the page is more robust
Co-authored by Claude (Claude Code)
- Added
-
đź”— modem-dev/hunk v0.20.1 release
What's Changed
Hunk 0.20.1 is a security and reliability patch for session reloads, syntax highlighting, and theme previews.
Highlights
- Reject option-like Git ranges and refs in session reloads, preventing broker callers from injecting Git flags and writing diff output to arbitrary paths, by @benvinegar in #894.
- Prevent syntax-highlight cache identity collisions from displaying stale code after a review reload, by @benvinegar in #889.
- Keep the theme selector responsive and its highlighted row visible during rapid keyboard navigation, by @benvinegar in #893.
Release notes : https://hunk.dev/changelog/0.20/
Full Changelog :v0.20.0...v0.20.1 -
đź”— HexRaysSA/plugin-repository commits sync repo: +2 releases rss
sync repo: +2 releases ## New releases - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.9.1, 0.9.0 -
đź”— Stephen Diehl The Internet Is Kind of a Predatory Cesspit Now rss
The Internet Is Kind of a Predatory Cesspit Now
I’m a kid of the 90s, and I still remember the early internet. It was slow, ugly, unreliable, and full of cranks, a strange world of wheezing dial-up modems, Usenet flamewars,
<marquee>tags, and dancing babies. It was also stubbornly alive and human. People built websites about Babylon 5, model rockets, train timetables, shareware, and whatever else had colonised their minds. Most of it had no business model. That was the literal point. The web felt like a public square assembled by obsessive amateurs.None of this was entirely innocent. There were scams, viruses, Nazis, pornography, and chain emails from deposed Nigerian princes. But then predation moved from the periphery to the centre. It used to be an abuse of the network. Now it is the network’s organising principle. The scammer once had to find a victim. The platform now finds one, profiles the weakness, optimises the pitch, processes the payment, and recommends the next scam. What was once an aberration has become the norm.
The modern internet is now a highly optimised machine for detecting human vulnerability, amplifying it, and placing a payment link beside it. Any insecurity can become a commercial niche, including the desire to escape commercial life itself. There is always a course, a newsletter, a private community, or a referral code waiting at the end of the funnel.
The bleak part is not that grifters exist. Every society has hucksters. It is that much of the population has been conscripted into the downline. Ordinary people now spend their lives promoting investments they barely understand, products that do not work, and political claims they have never examined. Many earn nothing. They are unpaid distributors for someone farther up the pyramid. The consumer, salesman, and product have collapsed into the same exhausted person.
People increasingly behave like addicts because addiction is the business model. The feed supplies alternating doses of outrage, fear, envy, lust, and hope. Each feeling arrives with something to buy. People doomscroll until they acquire the anxiety that the next influencer will monetise. Then they purchase a bet, a coin, a supplement, a course, or an enemy. Finally, they repost the pitch. Consumption becomes distribution. The mark becomes the salesman.
This is an industrial system for manufacturing weakness at scale. A legitimate business can survive a satisfied customer. A grift cannot. It needs the customer frightened, aggrieved, lonely, sick, or greedy forever.
When I started writing about cryptocurrency in 2020, I still carried a naive assumption about the size of this economy. I thought people were generally decent and the grifter class was a small pool of degenerates with rotten moral character, preying on those made vulnerable by the material conditions of our time.
I was very wrong. The grift economy is massive. More disturbing still, it is participatory. A large and growing share of the population now appears willing to devote every waking hour to fleecing their fellow man as a career choice. They stream, post, recruit, promote, refer, astroturf, and close. They turn every friendship into a lead and every conversation into a qualifying call. They do not clock out because the market follows them into bed. The smartphone is a shop counter that sleeps beside their head.
Obviously most of these people are not succeeding. The maths simply can never work out. That is part of the trick. The aspiring influencer with forty-seven followers is not an entrepreneur in any meaningful sense. He is free labour for the platform and cheap distribution for the person selling him the dream. The affiliate marketer buys a course about affiliate marketing, then recovers the cost by selling the same course to the next affiliate marketer. The life coach coaches new life coaches. The dropshipper sells tutorials to failed dropshippers. The pyramid is social before it is financial. Everyone stands on someone else while insisting they are about to escape.
This arrangement blurs the useful moral distinction between predator and prey. Many online grifters are themselves marks. They believe the rubbish they sell because belief makes the selling bearable. They have sunk money, time, identity, and public dignity into the scheme. Admitting the product is worthless would mean admitting that years of their life were worthless too. It is psychologically cheaper to recruit another victim. The fraud sustains the faith, and the faith sustains the fraud.
A normal trade ends when a need is satiated. You need a chair. Someone sells you a chair. You sit down and stop thinking about chairs. However, an online grift can never satiate. It must preserve the need that feeds it. The grievance merchant cannot resolve your grievance. The wellness influencer cannot let you feel well. The trading guru cannot let you become financially secure. The manosphere podcaster cannot let young men become calm, loved, and socially competent. Satisfaction is churn. Misery is recurring revenue.
The platforms did not invent fear, greed, loneliness, or status anxiety. They industrialised their extraction. Their recommendation systems are vast reinforcement-learning loops that continuously experiment on human weakness. Each objective is a moving composite of high-dimensional signals for attention, retention, and conversion, dispersed across models, metrics, tests, and feedback systems. The subject cannot see the experiment. The operator cannot fully explain it. The regulator can barely comprehend it. The loop knows only that one stimulus keeps a person scrolling while another lets them leave. Calm accuracy loses. Threat, transgression, humiliation, and impossible promises win. The resulting social damage appears nowhere in the objective function. It arrives as an externality.
This creates a brutal selection environment. The honest financial adviser explains diversification and gets twelve views. The crypto lunatic predicts a thousandfold return and gets twelve million. The physician says a chronic condition requires careful management. The wellness crank says seed oils are poisoning your soul. The historian describes an ambiguous event with contingent causes. The political influencer identifies a secret cabal and gives you the address of a pizza parlour. One of these people has the better business model. It is not the one burdened by reality.
The system is dopaminergic in the most banal and mechanical sense. It runs on anticipation, uncertainty, and variable reward. The next refresh might bring approval, outrage, profit, or vindication. Usually it brings nothing, which makes the next refresh more urgent. Social media fused the Skinner box with the commission structure. The addict is handed a referral code and told he is now a small business owner.
Crypto has become the subject of my verbal ire so often because it is the apotheosis of the grift economy. It takes alienation, precarity, gambling addiction, technological mystification, and a thick slurry of libertarian derp, then synthesises them into the ultimate predatory investment product.
Crypto also perfected the recursive structure of the modern online grift. Promotion creates price movement. Price movement is presented as proof of adoption. That proof recruits new buyers. Their money creates more price movement. Every participant has a direct financial incentive to become a publicist for his own position. The asset comes with its own volunteer propaganda network. It is a pyramid scheme with a podcast department.
Much to my dismay, the rest of the internet has learned the same lesson. The cheapest product is empty promises untethered to reality. The most scalable labour force is the addict. The best marketing conceals itself inside identity. Sell people a worldview, and they will advertise it for free because criticism of the product now feels like criticism of the self.
Language models will make this cheaper and worse. The cost of producing plausible lies has been driven to precisely zero. One person can generate a landfill of articles, videos, testimonials, investment analysis, and synthetic experts before breakfast. The grift no longer needs conviction, charisma, or even a pulse. It needs a language model, an affiliate account, and access to a population whose critical faculties have been sandblasted by twenty years of algorithmic media.
There is a temptation to regard the people caught in this machine with simple contempt. Some deserve it. A person who knowingly ruins strangers for commission has made a moral choice. But contempt is not an analysis. Precarity supplies the recruits. Alienation supplies the audience. The collapse of stable work, affordable housing, local institutions, and plausible routes to material security is what makes the pitch of the grift economy so seductive. The grift offers agency where ordinary life offers delay. It offers community where society offers isolation. It offers a jackpot where work offers a performance review and another year of rent increases.
Then it metabolises those injuries into new injuries. The lonely man buys a doctrine that makes him intolerable to women. The indebted worker gambles his remaining savings on a crypto token. The frightened patient abandons medicine for supplements. The politically powerless person spends fourteen hours a day screaming at strangers while the people with power quietly cut his wages and public services. The promised escape reproduces the condition that made escape desirable.
It is a desperately sad way to live. There is no craft in it, no solidarity, and no completion. No compassion or joy. Every relationship becomes an audience. Every interest just becomes grist for the content mill. Every conviction becomes a content strategy. The grifter can never rest because absence kills engagement. The mark can never rest because the next post might contain the secret. Both wake to the same notifications, trapped on a dopamine treadmill driven by opaque algorithms that can never slow down.
The worst advice from the 90s, “just say no,” starts to look less stupid when our greatest technical innovation learns to turn distress into inventory. Disconnection is not Luddism in that environment. It is the refusal to mistake a predatory system for a social world.
Complete disconnection is nearly impossible. Modern life no longer permits it. But an appliance is used for a bounded purpose and then put away. Emails, train times, articles, and files all have endpoints. Infinite feeds of drivel do not. They carry the casino into bed and let an opaque RL loop select the emotions that arrive before breakfast.
The internet is indisputably an inhuman place. Not because it contains no humans. Billions of us are in here, screaming frantically at each other while feeling utterly alone. It is inhuman because the systems governing it are utterly alien algorithms that cannot recognise human ends. They recognise engagement, conversion, retention, and growth. Grief is a market segment. Loneliness is a targeting signal. Friendship is a retention mechanism. Political conviction is ad inventory. Nothing can simply matter. It must perform.
Life inside this environment means adopting its categories. Thoughts are assessed by their reach, experiences by their shareability, and people by their usefulness to an identity. A person becomes legible to the machine by becoming less legible to himself. Eventually the system no longer needs to impose its values. Its subjects carry them in their pockets and enforce them on their own minds.
The physical world is not pure. It contains salesmen, casinos, demagogues, fanatics, and bores. It also contains stubborn limits. A conversation ends. A pub closes. A book runs out of pages. Your friend gets tired of hearing you talk and tells you to shut up. Reality supplies friction, and friction is one of the few remaining defences against appetite without limit.
We are not going back to the early internet. Nor should we romanticise it. The old web had plenty of sewage. What it also had was space beyond the market. A person could make something without becoming a brand. A conversation could end without a conversion. A community could exist without turning its members into marks for an investment scheme.
The question is not whether the internet contains useful things. It does. The question is whether human existence should be organised around alien and inhuman objective functions no human chose and nobody can inspect or understand. An RL loop can optimise engagement, retention, and conversion. It cannot tell us what a human life is for. The final grift is letting the loop decide what your life should be.
-
đź”— gildas-lormeau/single-file-cli v2.4.1 release
Fixes
- Fixed self-extracting pages saved with
--embed-pdffailing to open, displaying the error "Cannot extract the data of the page" - Fixed self-extracting pages served with an HTTP error status staying stuck on the "Please wait..." message instead of displaying the page
- Fixed a size miscalculation which could leave the end of central directory record of a self-extracting page outside the range ZIP readers scan to find it
- Updated zip.js to 2.8.61
Co-authored by Claude (Claude Code)
- Fixed self-extracting pages saved with
-
- August 28, 2026
-
đź”— IDA Plugin Updates IDA Plugin Updates on 2026-08-28 rss
IDA Plugin Updates on 2026-08-28
New Releases:
Activity:
- augur
- 20836a8c: ci: bump taiki-e/install-action in the actions-dependencies group
- capa
- ghidra
- 9f377f1c: Merge remote-tracking branch 'origin/patch'
- cdf95422: GP-7171: Upgrading commons-collections4 to 4.6.0
- 2a6e9bac: GP-7172: Pass - to native swift demangler to indicate end of flags
- 483d64b0: Merge remote-tracking branch 'origin/GP-7169_ryanmkurtz_headless-SQU…
- 7a969f94: GP-7169: Headless fix
- b09f13d6: Merge remote-tracking branch 'origin/patch'
- 594da048: GP-7190: Decrementing lock count when exception occurs in
- haruspex
- ida-bochs-binaries
- ida-domain
- ida-llm-explainer
- ca80c1ee: IDA 9.3 compatibility fixes (field-tested) + README changelog
- ida-nexus
- ida-pro-mcp
- idawilli
- 438d7aee: ida gha: fixes
- rhabdomancer
- augur
-
đź”— earendil-works/pi v0.84.4 release
New Features
- Terminal capability overrides — Override detected terminal hyperlink, image, and truecolor support. See Capability Overrides.
- Extension UI prompt events — Integrations can distinguish active agent work from time spent waiting for
ctx.uiprompts. See Extension UI prompt events. - RPC queue clearing — Retrieve and clear queued steering and follow-up messages with
clear_queue. See RPCclear_queue. - Fullscreen selection copy controls — Disable automatic selection copying in fullscreen mode and use Ctrl+X to copy the active selection. See UI & Display.
- DeepSeek V4 Flash Vision (experimental) — Use the vision-capable model through the built-in DeepSeek provider. See API Keys.
Added
- Added
ui_prompt_startandui_prompt_endextension events so host integrations can distinguish active agent work from waiting on user-facingctx.uiprompts (#8355 by @cristinaponcela). - Added
detectSupportedImageMimeTypeFromFile()to the public library exports (#8600 by @xl0). - Added inherited experimental vision-capable
deepseek-v4-flash-vision-expmodel support. - Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
- Added RPC
clear_queueto retrieve and remove queued steering and follow-up messages (#8432). - Added environment variables and advanced settings for overriding auto-detected terminal hyperlink, image, and truecolor capabilities (#8665).
- Added
fullscreenCopyOnSelectto disable automatic fullscreen selection copy; when disabled,Ctrl+Xcopies the active text selection before falling back to the last assistant message, while/treestill copies the selected message (#7720).
Fixed
- Fixed toggling thinking visibility clearing partial output from running Bash tools (#8611).
- Fixed Windows shell aborts crashing Pi when
taskkill.exeis unavailable onPATH(#6596). - Fixed resumed sessions corrupting the next appended entry when their JSONL file lacks a trailing newline (#8345).
- Fixed extension messages sent with
triggerTurn: falsewhile the agent is running being inserted between a tool call and its result, which made providers that validate message order reject the replayed history. They are now appended once the turn's tool results are in (#8537). - Fixed compaction and branch summaries forcing
toolChoice: "none"(#8649, #8638). - Fixed large tool results crossing the auto-compaction threshold being sent to the provider before compaction. Pi now compacts between tool execution and the next assistant response in the same run, and restores interactive progress when that run resumes (#6879).
- Fixed Google Vertex requests failing with
HttpsProxyAgent is not a constructorwhen the bundled Node.js runtime uses an HTTP(S) proxy (#8610). - Fixed saving a default model from a non-empty model scope so it remains available in that scope.
- Fixed inherited
@file autocomplete ranking to prefer direct and shallower matches over similarly ranked nested paths (#8669). - Fixed inherited OpenAI-compatible streams serializing thinking signatures repeatedly during streaming (#8671).
- Fixed inherited main-screen rendering crashing when image-heavy output exceeded V8's string length limit (#8028).
- Fixed inherited fullscreen double-click word selection splitting paths and kebab-case tokens on
/and-(#8676). - Fixed inherited Cloudflare AI Gateway catalogs omitting supported
workers-ai/*passthrough models. - Fixed inherited OpenAI-compatible reasoning replay to merge consecutive streamed text and summary
reasoning_detailsdeltas. - Fixed inherited OpenRouter reasoning controls so reasoning-mandatory models do not receive
effort: "none"(#8614 by @davidbrai). - Fixed inherited OpenAI-compatible Chat Completions ignoring an explicitly requested
toolChoicewhen no tools are defined. - Fixed inherited fragmented Mistral tool calls splitting when continuation chunks omit the tool-call ID (#8387).
-
đź”— BarutSRB/OmniWM OmniWM v0.6.4 release
What's New Since 0.6.3
0.6.4 turns the single scratchpad into ten multi-window scratchpad slots, adds automatic settings migration so upgrades no longer reset your configuration, exposes diagnostics capture through
omniwmctl, and lets the Workspace Bar step aside per display during native fullscreen. It also retires stale tiles for apps that close windows without destroying them, and introduces OmniWM's compass-mark identity, its website, and a documentation hub.Before You Upgrade — Breaking Changes
-
Your 0.6.3 settings migrate automatically. No reset, no manual edit. On first launch OmniWM copies the exact original file to
settings.toml.pre-v1(or.pre-v1.1) and rewrites the live file withschemaVersion = 1. The migration preserves configured values, safely matchable unknown keys, symlink targets, and permissions. It also fills in the keys 0.6.4 requires —workspaceBar.hideInNativeFullscreen = falseand an empty[scratchpads.labels]— and maps your old scratchpad hotkeys onto slot 1. The canonical rewrite can reorder the document and strip comments; the.pre-v1backup retains the original text verbatim. Automatic migration is guaranteed for settings emitted by OmniWM 0.6.1 through 0.6.3, so a normal 0.6.3 upgrade needs no config work. Diagnostics reports every automatic change and the backup location. -
Rolling back to 0.6.3 resets your settings. Keep the
.pre-v1backup. A settings file written by 0.6.4 contains hotkey action IDs that 0.6.3 cannot resolve. 0.6.3 treats the whole file as invalid, preserves it assettings.toml.corrupt, and starts from full defaults. Migration is forward-only: to downgrade, quit OmniWM and restoresettings.toml.pre-v1oversettings.tomlbefore launching 0.6.3. -
Two hotkey action IDs were renamed and eighteen were added.
assignFocusedWindowToScratchpadbecameassignFocusedWindowToScratchpad.1andtoggleScratchpadWindowbecametoggleScratchpad.1; slots 2 through 10 add the remaining pairs, allUnassigned. Migration rewrites the two old IDs in place, so your existing triggers survive and Settings > Hotkeys keeps working. This matters if you keepsettings.tomlin a dotfiles repo, generate it from a template, or hand-merge it across machines — the old IDs are no longer valid action IDs, and an unknown ID invalidates the file. In Settings the rows now read Assign Focused Window to Scratchpad N and Toggle Scratchpad N. No other action ID, default binding, config path, runtime-state path, IPC socket path, or CLI command path changed, and OmniWM still requires macOS 26+ on Apple Silicon. -
IPC protocol goes from 11 to 13. Upgrade the bundled
omniwmctlwith the app. A 0.6.3 client speaks 11 and will be rejected. Protocol 13 covers two bumps:- Capture requests and results, the
captureActionscapability list, and a newcapture_state_conflicterror code. Clients that switch exhaustively overIPCErrorCodemust handle it. - Scratchpad slot indexing.
command scratchpad assignandcommand scratchpad togglenow require ascratchpadIndexargument (<1-10>in the CLI); the old no-argument form is an error. -
Window and Workspace Bar payloads changed shape.
-
query windowsgains a nullable JSONscratchpadIndexfield and ascratchpad-indexfield selector. Full table, text, and TSV output keep the existingSCRATCHPADcolumn in place, but assigned windows now show their slot number instead oftrue, so parsers must update value handling rather than column positions. - The
--scratchpadselector changed meaning. It used to match the scratchpad window; it now matches every window assigned to any of the ten slots, so scripts that assumed a single result can now receive many. IPCWorkspaceBarMonitor.scratchpad— previously a nullable object holding onewindow— is replaced byscratchpads, an always-present array. Each entry carriesindex, an optionallabel,windows, andisVisible. An empty array replaces what used to benull.focus previousis advertised differently. It was published as Niri-only while command enforcement had always treated it as shared, so it already ran fine on Dwindle. The manifest now matches reality.query capabilities,query commands, and generated shell completions all reportshared— regenerate cached capability output and completion scripts.
- Capture requests and results, the
-
The IPC/CLI and architecture references moved out of the repository.
docs/IPC-CLI.mdanddocs/ARCHITECTURE.mdare now short stubs pointing at omniwm.app/reference/cli/overview and the architecture guide. The full text is maintained underwebsite/src/content/docs/. Bookmarks and links to the old in-repo files still resolve, but no longer contain the reference itself.
Headline Feature — Ten Multi-Window Scratchpads
The scratchpad is no longer a single parked window. There are now ten numbered slots, each holding any number of floating windows, overlaid on whatever workspace you are looking at. An empty slot is inert and invisible. #585
-
Assign Focused Window to Scratchpad N moves the focused window into slot N , floating it if it was tiled and parking it off-screen. Pressing the same shortcut on a window already in slot N returns it to the layout.
-
Toggle Scratchpad N reveals or parks every window in the slot as one coordinated operation, on the monitor you are interacting with. Revealing a slot parks whichever slot was showing, so at most one scratchpad is on screen at a time.
-
A revealed scratchpad follows you across workspace switches and stays up until you toggle it off. If it is showing on another monitor, its shortcut summons it to the one you are on.
-
Revealed windows behave as ordinary floating windows. Whether clicking something underneath pushes them behind it follows the usual focus and raise rules, including Raise Window When Focus Follows Mouse.
-
Every non-empty slot gets a Workspace Bar pill showing its name and its windows' icons; clicking the pill toggles that slot. Scratchpad pills always group by app, independent of the
Deduplicate App Iconssetting. -
Slots are addressed by number everywhere. An optional label replaces the number in the Workspace Bar and in
omniwmctloutput:[scratchpads.labels]1 = "term" 3 = "COMMS"
-
Automation gets the full surface:
omniwmctl command scratchpad assign <1-10>,omniwmctl command scratchpad toggle <1-10>, and window queries that expose both scratchpad membership and the slot index.
Scratchpad membership lasts for the lifetime of the OmniWM process — only the labels are persisted. The ten assign/toggle pairs start unassigned except for slot 1, which inherits your previous scratchpad shortcuts through migration.
Settings and Automation
- Settings persistence now safely preserves unknown TOML keys through saves, including array-owned keys when their owner can be matched unambiguously. Ambiguous preservation, exhausted migration-backup slots, unsafe symlinks, and unsupported-schema or migration-backup save races leave the file untouched and block writes rather than risk data loss.
- Trace and performance captures can be scripted with
omniwmctl capture start trace,omniwmctl capture start performance,omniwmctl capture stop, andomniwmctl capture status. Capture state and the most recent artifact metadata are available through IPC. As with allomniwmctluse,Enable IPCmust be turned on from the menu bar first. - Quake Terminal's updated GhosttyKit adds Kitty clipboard reads and writes, binary-safe multi-format transfers, clipboard type listings, requester-aware confirmation previews, optional session grants, and a dedicated selection clipboard.
Workspace Bar and Window Lifecycle
- Hide in Native Fullscreen is a new opt-in Workspace Bar setting, off by default. Suppression is derived per display, so a bar disappears only on the monitor showing a native-fullscreen Space and returns automatically on exit. Reserved tiled layout space stays stable to prevent unrelated windows from jumping. #601
- Windows that apps such as Calendar close by ordering out instead of destroying are now retired from the layout. OmniWM validates targeted rescans against the app's Accessibility window list, including when the frontmost app loses its last focused window. #610
- Targeted rescans preserve intentionally parked windows, including scratchpad and other hidden lifecycle states, rather than mistaking them for closed windows.
Identity, Website, Documentation, and Thanks
- OmniWM now uses a compass-mark identity across the app icon, launch overlay, status item, repository, and a reproducible brand-asset package.
- omniwm.app launches with interactive feature demos, a knowledge base, install and CLI references, testimonials, sponsor credits, and canonical-domain redirects.
- The README, architecture guide, IPC/CLI contract, issue-reporting guidance, and contributor documentation were rewritten against the current codebase and Swift 6.4 toolchain. The README now documents scratchpads, orientation-aware Niri containers, the advanced-commands hotkey filter, and the complete shortcut tables.
- Matt Wicks (@wicksipedia) joins the contributor showcase under SSW Consulting, and the latest private sponsor is recognized anonymously with a path to request public credit.
Release Integrity
The OmniWM app is Developer ID signed, Apple-notarized, stapled, and Gatekeeper verified.
OmniWM-v0.6.4.zipSHA-256:9b2bf54d20d67f536270032e0625176c06c6e03b8897ddf025558d948339e5e7GhosttyKit.xcframework-v0.6.4.zipSHA-256:c7b1a8541206fa4ebf55e5dca8f12df4efa7ed5df490c4c426a5ee091c74ec21
-
-
đź”— r/Harrogate Gail's rss
Just saw there's a Gail's opening next to Neuhaus, opposite the pret
submitted by /u/Sufficient-Prompt260
[link] [comments] -
đź”— gildas-lormeau/single-file-cli v2.4.0 release
New features
- Added
--browser-profileto capture pages with a browser profile, and--create-browser-profileto create one interactively (e.g. to log into a website before capturing it)
Fixes
- Fixed pages being captured as if they were controlled by automation: the browser is no longer launched with
--enable-automation, sonavigator.webdriveris nowfalse - Fixed pages being captured as if the browser were headless: the
Headlesstoken is now removed from the user agent, fixing captures of websites which reject headless browsers (e.g. pages saved as a "Just a moment..." interstitial).--user-agentstill takes precedence when set - Fixed the filenames of unwritten files displayed in the progress output when using
--dump-content - Fixes from single-file-core 1.5.99 to 1.5.106, including: fixed
srcsetattributes losing candidates with invalid descriptors and producing empty entries, fixed filenames starting with a dot, fixed the data used by{digest-sha-*}filename templates being missing (fix gildas-lormeau/SingleFile#1756)
Co-authored by Claude (Claude Code)
- Added
-
đź”— HexRaysSA/plugin-repository commits sync repo: +2 plugins, +6 releases rss
sync repo: +2 plugins, +6 releases ## New plugins - [ida-mcp](https://github.com/hexrayssa/ida-mcp) (0.8.1, 0.8.0) - [ipyida](https://github.com/eset/ipyida) (2.3) ## New releases - [ida-bochs-binaries](https://github.com/hexrayssa/ida-bochs-binaries): 1.0.3 - [ida-nexus](https://github.com/hexrayssa/ida-nexus): 0.8.1, 0.8.0 -
đź”— New Music Releases Mastodon - Marrow Deep rss
Mastodon - a new release is available:
- 2026-08-28: Marrow Deep (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— New Music Releases Kamelot - Dark Asylum rss
Kamelot - a new release is available:
- 2026-08-28: Dark Asylum (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— New Music Releases Russian Circles - Nine rss
Russian Circles - a new release is available:
- 2026-08-28: Nine (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— New Music Releases Train - Mad Dog in the Fog rss
Train - a new release is available:
- 2026-08-28: Mad Dog in the Fog (Album)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— New Music Releases Kaskade - Hear Me Now rss
Kaskade - a new release is available:
- 2026-08-28: Hear Me Now (Single)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— New Music Releases Vintage Culture - Selekta EP rss
Vintage Culture - a new release is available:
- 2026-08-28: Selekta EP (EP)
Amazon: Canada | Deutschland | France | United Kingdom | United States
Visit muspy for more information.
-
đź”— Ampcode News Amp on iOS & macOS rss
Control your orbs from anywhere.
Install the iOS app through TestFlight[^1], and the macOS app through direct download.
Download at ampcode.com/app.
It's orbin' time no matter where you are.
-
đź”— Ampcode News No Mailmap Required rss
Amp can now use a Git identity that is separate from the email on your Amp account. Pick the name and verified email that should appear on commits made in orbs.
You can ask Puck to set it for you:

If you have not added the identity yet, Puck sends a verification link to the email address. Once you click it, Puck gets notified and can make the identity your personal default if you asked it to.
You can also manage identities under Signing Keys. Your personal default applies to personal projects unless you choose another identity in a project's settings. Workspace admins choose one rule for the whole workspace:
- Amp uses the Amp identity.
- Amp Account uses each member's Amp account.
- User Choice lets each member choose.
When Amp starts an orb, it sets
GIT_AUTHOR_*andGIT_COMMITTER_*from the selected identity. If commit signing is on, Amp only signs for an email you have verified.Your Amp login can stay
tfc@ampcode.comwhile your commits usetim@culver.house.
-