Changelog

What's New

The latest releases and updates from our team. We ship often and keep things lean.

  1. EasyHomebrew 3.3.1 — The Menu-Bar Agent Opens the Right App

    A small fix, mostly for the Setapp edition. The menu-bar agent has an Open EasyHomebrew item, and in the Setapp edition it looked for the standalone app instead of the copy it came with; on a Mac with only the Setapp edition it did nothing, and on a Mac with both it opened the other one. The agent now opens the EasyHomebrew it belongs to, in either edition and wherever it is installed. The standalone app gets the same update and behaves as before, unless you keep more than one copy of it around.

    • Open EasyHomebrew in the menu-bar agent opens the Setapp edition when that is the one you use
    • With both editions installed, each agent opens its own copy of the app
    • Nothing else changes, and nothing new leaves your Mac
  2. WizJS 0.2.1 and Kyori 0.4.1 — Import Just the Part You Need

    Both libraries had one way in: require the whole package, then reach down through the nesting to get at the one thing you came for. Getting a single predicate out of WizJS took three levels of destructuring, and a single metric out of Kyori took two. It worked, and it read badly. Every area is now its own import — '@wizhut_tech/wizjs/lang/checks', '@wizhut_tech/kyori/methods/levensthein' — so the line says what you actually wanted, and your editor stops suggesting the other forty helpers you did not ask for. The whole-package import still works exactly as before and hands back the same objects, so the two styles mix freely in the same file and nothing you have already written needs changing. Kyori's import paths use the same flat metric names its API uses, so there is one name per metric and it is the one you already know. The new form asks for Node 14.13 or newer; the whole-package import carries no new requirement. One thing to check before you upgrade: only the documented areas can be imported now. If you were reaching past them into a package's internals, that stops resolving — everything in the published API is untouched. WizJS also gets a fix worth naming on its own. loadFully hands back the file as text, which is what it was always for and always documented to do; on a successful read it had been handing back nothing at all.

    • Import one area on its own — require('@wizhut_tech/wizjs/lang/checks'), require('@wizhut_tech/kyori/methods/levensthein')
    • The whole-package import is unchanged and returns the same objects, so both styles mix freely in one file
    • Kyori's import paths use the same flat metric names as its API, so there is one name per metric to remember
    • Fixed in WizJS: loadFully returns the file as text, where a successful read used to hand back nothing
    • The new import form needs Node 14.13 or newer; the whole-package import has no new requirement
    • Only the documented areas can be imported — reaching past them into a package's internals no longer resolves
  3. Whokoban 2.0.0 — Made for iPhone Duo

    Whokoban unfolds. Shut, iPhone Duo runs the phone game as before; open, the board takes the room the inner display adds — about 1.7 times the size a phone gives it — with the keys and readouts beside or below it, and every picker and page laid out for a screen that is wide both ways. The Great Halls of Whoko are the levels made for that screen: a thousand of them, the classic game in halls half again as big, 100 a tier across ten tiers, every one verified and measured like the rest. Unfold the phone and they are what a new game deals; on any phone, the level count on the title screen switches between all three sets. A fifteenth look is the Duo's alone — Origami, folded paper and crisp creases, earned by one clear on the inner display and on no other device; it is a keepsake rather than a trophy, with no achievement attached, so nobody's list depends on a phone they do not own. Two rules for everyone: an undo now counts as a move — the board goes back, the counter does not — and a board with no way left to finish says so on a card, with Undo and Restart on it, instead of a status line quietly turning red. Whoko blinks in every look now, to the same rhythm as Herbie. Seventy-two achievements in all.

    • Made for iPhone Duo: the board takes the inner display, the keys and readouts move beside or below it, and every screen is laid out for the wide display
    • The Great Halls of Whoko: a thousand new levels in halls half again as big — ten tiers of a hundred, same monsters, same cap, every one measured
    • Origami, a fifteenth look, earned only by a clear on the Duo's inner display — outside Full Wardrobe on purpose, so no achievement needs a particular phone
    • An undo now counts as a move, and a stuck board gets a card with Undo and Restart on it instead of a red status line
    • Whoko blinks in every look, to Herbie's rhythm; 72 achievements, two of them for the halls
    • Still US$2.99 once — no ads, no in-app purchases, nothing tracked, fully offline
  4. WizLook 1.1.1 — A Licence Key, €6 Once for One Mac

    WizLook becomes a paid app, the way Contain and EasyHomebrew are: a one-time licence key, bought through Dodo Payments, €6 for one Mac, every 1.x update included. There is no subscription and no account — the key arrives by email, the first window WizLook opens asks for it, and you paste it in. It is checked at launch and never while you read; if the licence server cannot be reached, the app keeps running for another fortnight. About WizLook shows the licence and can free the key from this Mac so it moves to the machine you buy next. Activating sends the key and your Mac's name to Dodo and nothing else — there is still no analytics anywhere in the app. The Finder preview stays free: pressing Space on a Markdown file, a notebook or a drawing works with or without a key, because it is the app that asks.

    • €6 once, for one Mac — no subscription, no account, lifetime 1.x updates
    • The key is checked at launch, never while you read, and the app runs a fortnight without the licence server
    • About WizLook shows the licence and frees the key for another Mac in a click
    • Activation sends the key and your Mac's name to Dodo Payments, and that is all
    • The Finder preview stays free, key or no key
  5. Contain 1.5.0 — The + and the ? Work on an Empty Window

    A bug fix, and an embarrassing one. With nothing contained, every click in the Contain window opened the picker — including clicks on the + and the ? in the tab bar — because the empty area was claiming clicks that were not inside it. For the + that was invisible, since the + opens the picker anyway; for the ? it meant the guide never appeared, which is exactly what a first-time user would have met on their first click. Both now do what they say. Nothing else changed: containing a window, and everything after it, was never affected, because the empty area steps aside the moment a window is inside.

    • With nothing contained, the ? opens the guide and the + opens the picker — instead of every click opening the picker
    • Once a window is contained nothing changes; that path was never affected
    • No change to the licence, the price, or what leaves your Mac — still nothing
  6. Contain 1.4.0 — The ? Opens the Guide, and Both Permissions in View

    Three small things, all from watching someone open Contain for the first time. The ? in the tab bar now opens the getting-started guide rather than the list of what macOS will not allow — that list is the second question a new user asks, not the first, and the guide's footer and the Help menu still lead to it. Wherever Contain reports its Accessibility permission, it now shows Screen Recording beside it, with a line under each saying what it is for and whether Contain can do without it: Accessibility is required, Screen Recording only draws the live previews in the picker. Whichever is missing gets an Allow… button that puts up macOS's own permission dialog — which is also what lists Contain in the settings pane, so you no longer have to add the app there yourself. Screen Recording asks once per app, so a second press opens the settings pane instead, and a new grant there takes effect the next time Contain opens. And an empty Contain now says what to do: “Contain a new app” stays out beside the + instead of waiting for you to hover, and the + gives a small nod every few seconds until you contain something. The nod stays still if you have Reduce Motion on.

    • The ? in the tab bar opens the guide; the limitations list is one link away, in its footer and in the Help menu
    • Both permissions side by side — Accessibility, required, and Screen Recording, for previews only — wherever one was shown before
    • An Allow… button beside whichever is missing puts up the system’s own dialog
    • With nothing contained, the + keeps its label out and nods every few seconds — not under Reduce Motion
    • No change to the licence, the price, or what leaves your Mac — still nothing
  7. EasyHomebrew 3.3.0 — A Help Menu That Helps, and an Agent That Waits to Be Asked

    Two things a reviewer noticed before we did, both fixed. The Help menu used to hold a single item, EasyHomebrew Help, which looked for a help book the app never had and answered with a dialog saying help was not available; not much of a menu. It now holds what does exist: the product site (⌘? opens it too), the changelog, Homebrew's own documentation, the privacy policy and terms, and two ways to write to us. Contact Support and Report a Problem open a draft email with the facts we would ask for first already in it (version and build, which edition, macOS, Apple silicon or Intel), and it is a draft, so you read all of it before anything is sent. The second thing is the menu-bar agent's introduction, the sheet that comes up once to explain the small process that watches for updates and advisories. Its default button was Enable at Login, so pressing Return on it put the agent in your login items; that is the app deciding for you, and it should not. The sheet now shows a switch that starts off and a single Continue button, and nothing is registered with macOS unless you flipped the switch yourself. The same switch lives in Settings → Menu Bar, in all six languages now. The Setapp edition is built with Setapp's framework 5.5.0.

    • A Help menu with the product site (⌘?), the changelog, Homebrew's documentation, and the privacy policy and terms
    • Contact Support and Report a Problem open a draft email with version, edition, macOS and CPU already filled in, for you to check before sending
    • The menu-bar agent's introduction shows a switch that starts off; nothing is added to your login items unless you turn it on
    • The introduction and the switch are in all six languages, in the sheet and in Settings → Menu Bar
    • Nothing new leaves your Mac — the support draft is an email you read and send yourself
  8. Contain 1.3.0 — A Help Menu, and a Guide for the First Five Minutes

    Contain's first screen was an empty window with one sentence in it — honest, but not much of an introduction if you had never used it before. 1.3.0 adds the introduction. The first time Contain runs, a short guide comes up over the empty window: the one permission it needs, with its status shown live and a button that takes you straight to it; how to pick a window; how tabs work; and how to let a window go, with everything put back where it was. Four steps on one panel, and then it stays out of your way — Help → Contain Help, or ⌘?, brings it back whenever you want it. There is a proper Help menu now too, holding the guide, the list of behaviours macOS forces on any app that moves windows, a shortcut to the Accessibility setting, and the product page, release notes and Wizhut links you previously had to open Settings to find. A menu is reachable from the keyboard and from a screen reader in a way a settings pane is not, so those links now live in both places. Two smaller things: the empty window says what a click will offer and where the guide is, and the About panel's privacy line — which still spoke of counters removed back in 1.2.0 — now says what Settings → Privacy has said all along: nothing is collected.

    • A getting-started guide the first time Contain runs — the permission, the picker, tabs, and letting go, on one panel
    • Help → Contain Help (⌘?) brings the guide back any time
    • A Help menu with the limitations list, a shortcut to the Accessibility setting, and the product, release-notes and Wizhut links
    • The empty window now says what a click offers and where the guide is
    • No change to the licence, the price, or what leaves your Mac — still nothing
  9. Contain 1.2.5 — macOS 27, Confirmed

    macOS 27 is out, and this is the release that says Contain is fine on it. Everything behaves as it did: windows are contained and released, the picker still reaches every desktop and display, the green button still fills the whole screen with the contained windows resized to match, and a window sitting in full screen still comes out to be contained and goes back the moment you let it go. Nothing inside the app changed for this — it was put through its paces on the new macOS rather than rebuilt for it, which is the outcome you want from a release like this one. The single thing that did move is the part that keeps Contain up to date, brought up to its own current version at the same time. If you are on 1.2.4 and happy, there is nothing here to hurry for. If you have already upgraded your Mac, this is the version to be on.

    • Contain runs on macOS 27 exactly as it did before — nothing in the app itself changed
    • Containing and releasing, the picker across every desktop and display, and full screen: all confirmed on the new macOS
    • Still macOS 13 or later, Intel or Apple silicon — macOS 27 dropping Intel Macs changes nothing here
    • The part that keeps Contain up to date was brought up to its own current version
    • No change to the licence, the price, or what leaves your Mac — still nothing
  10. EasyHomebrew 3.2.0 — It Looks at the Screenshots

    A package page shows you screenshots pulled from the project's own homepage, and until now which images counted as screenshots was a guess from their dimensions; anything wide enough got through, so a logo banner or a stock photo could sit in the carousel next to the real ones. On macOS 27 the on-device model can see images, so each candidate is actually looked at and the ones that are not pictures of an interface are dropped. Nothing leaves your Mac: the images are already downloaded and the model runs on the machine, the same way every other AI feature in the app does. Doctor learned two things as well; after a macOS upgrade it names the package Homebrew wants reinstalled and offers the reinstall as a button, and the health score now takes account of Homebrew's own verdict on your configuration, which is a different question from how many warnings it printed. Search and package summaries also stopped trimming what they read to fit a context window smaller than the one your Mac has.

    • Screenshots on a package page are checked by looking at them rather than by their size, on macOS 27
    • Still nothing leaves the machine — the model runs on your Mac, as every AI feature in the app does
    • After a macOS upgrade, Doctor names the package Homebrew wants reinstalled and offers the reinstall as a button
    • The health score takes account of Homebrew's own verdict on your configuration, not only the number of warnings
    • Search and summaries read as much as your Mac's context window allows, instead of a smaller fixed amount
  11. Promptivo 3.0 — Free, Permanently, With Nothing to Run Out Of

    Promptivo stops being something we sell. It was always free in practice — four paid tiers had sat hidden since August, unsold and unadvertised — but the machinery behind them was still there, and machinery like that implies a price list arriving later. There isn't one. The plan concept is gone: no tiers, no upgrade path, no billing dates, no pricing page. So is the daily cap that used to come with the free plan, and then the counter behind it. There is no limit on a signed-in account and no tally of what you have scored, because a number you can exhaust is not what free means. An account exists now for one reason — so your history has somewhere to live — and there is nothing to buy with it. The scoring itself is unchanged: the same seven research-backed dimensions, the same frozen calibration, still deterministic and still with no model call that could ever see your prompt. What changes is what Promptivo is for. It began as a way to test whether prompt quality could be measured without asking a model, and that question is more interesting than the product around it, so we are treating it as the experiment it always was rather than a thing with a price.

    • Free, permanently — the plan concept is removed outright, not hidden: no tiers, no upgrade path, no pricing page
    • No daily limit, and no counter either — a signed-in account is unmetered and untallied
    • Accounts stay, for history and nothing else; scoring is unchanged and still deterministic
    • Your prompt still never reaches a model — the judge was consulted once during calibration, then frozen into coefficients
    • The old pricing and upgrade pages now redirect home rather than disappearing, so existing links still land
  12. Whokoban 1.4.0 — The Lost Levels of Xsoko

    Whokoban gains a second set of levels, and they do not play like the first. The 5,000 levels the game shipped with are generated forwards, and a good part of their length is walking; the ninety new ones are built backwards out of their solved state, which makes them about three times denser in pushes per crate — much closer to the classic warehouse puzzles the genre is named for. They arrive in order rather than at random, because they are sorted by measured difficulty and that curve is the point, and they have no monsters and no move cap: they are long by design, and a clock would turn a thinking game into a race it was never shaped for. The level count at the bottom of the title screen is the switch between the two, and it looks like a button now, which it always was. There is a fourteenth board theme, Xsoko — brown brick, a flat grey floor and an indigo crate that turns into a jewel the moment it lands, drawn in homage to the open-source Sokoban a generation of us first met on a university terminal. Seventy achievements in all, three of them new, and an achievements screen rebuilt to open as nine cards on one screen instead of seventy entries in a single scroll.

    • The Lost Levels of Xsoko: ninety hand-measured boards in six tiers, roughly three times denser in pushes than the main pool
    • Met in order and sorted by measured difficulty — no monsters, and no move cap, because they are long on purpose
    • A fourteenth look, Xsoko, earned at tier 8 — and the level count on the title screen is now visibly the button it always was
    • Seventy achievements, including two for finishing in the fewest possible pushes: a different skill from the fewest moves
    • The achievements screen opens as nine family cards on one screen, with a filter for what you have earned and what you have not
    • Still US$2.99 once — no ads, no in-app purchases, nothing tracked, fully offline
  13. WizLook — The Files Your Mac Will Not Open, Opened

    There is a new macOS app on the way, and it is about the files you already have and cannot read. When Google Drive for desktop syncs a folder to your Mac, the documents stay on Google's servers; what lands on disk is a stand-in a few hundred bytes long, holding little more than the document's address. The Finder gives it a blank icon, pressing Space previews nothing, and opening it throws you into a browser tab. WizLook — short for Wizard's Look, from the same hut as the rest of Wizhut — shows you the document instead, read-only, in a window of its own. It does the same for Markdown files, SVG images and Excalidraw drawings, which it renders itself, with nothing sent anywhere and nothing inside the file allowed to run. And it brings a Finder preview along, so Space finally shows you something. It cannot edit and it cannot save: that is the point of the app rather than a setting inside it. WizLook is not downloadable yet — the product page is live today, and we will say so here the day it ships.

    • Seventeen kinds of Google Drive placeholder file open as the document itself, read-only
    • Markdown, SVG and Excalidraw drawings rendered by the app, with no connection needed
    • Read-only by design — it cannot edit, cannot save, and never runs what is inside a file
    • Press Space in the Finder and get a real preview instead of an empty panel
    • Markdown and drawings follow the file, so saving elsewhere updates the window and keeps your place
    • macOS 14 or later — being readied for release; the product page is up now
  14. EasyHomebrew 3.1.0 — It Installs Homebrew Now

    Open EasyHomebrew on a Mac that has no Homebrew yet and it offers to install it for you. It has made that offer since the first version; what 3.1.0 changes is that the offer is kept. Install Homebrew runs the official installer from inside the app and asks for your administrator password the way macOS does, in a system dialog — before, the installer had no way to ask and gave up on the spot. Install in Terminal opens a Terminal window with the installer in it, so you can follow along and answer its prompts, and the app picks up on its own the moment it finishes — before, in the released app, that button did nothing at all. Either way your packages load as soon as Homebrew is in place, with no relaunch, Intel Macs included (they used to need one). If you would rather install Homebrew yourself, in your own Terminal, the app notices when you switch back to it. And the “Couldn't refresh packages” message that used to land on top of the setup card, reporting a failure the card had already explained, is gone.

    • Install Homebrew runs the official installer from the app and asks for your password in a system dialog
    • Install in Terminal opens the installer in a Terminal window and hands back to the app when it finishes
    • Packages load as soon as Homebrew is in place — no relaunch, on Intel Macs too
    • A Homebrew you install by hand is picked up when you return to the app
    • The stray error message over the setup card is gone
  15. Whokoban 1.3.0 — Herbie Drops In from FlyCraft

    Whokoban has a guest. Herbie — FlyCraft's hero, who would rather build a flying machine than fly — arrives as a free board theme for everyone: his blue drawing board for a floor, a paper-cutout forest for walls, his cardboard boxes for crates, the launch gate with a padlock on it, and Herbie himself in Whoko's place, blinking. He brings his own music, three tunes from FlyCraft's world, and his yell opens every run in place of the gong. The speaker on the title screen now opens a sound sheet, where music and sound effects mute separately and every tune the game owns can be heard by name. One rule changed: shoving a monster aside now costs a move, like a step, so a monster in the wrong place finally costs something. Thirteen themes and 66 achievements in all.

    • A free FlyCraft theme for everyone: Herbie in Whoko's place, on his own drawing board, with his boxes, his music and his yell
    • Two more FlyCraft tunes beside the launch riff, drawn at random level by level — every look now draws its music the same way
    • Music and sound effects mute separately, and a listening booth previews every tune by name
    • Shoving a monster now costs a move, like a step — best and cap are still measured without it
    • Thirteen board themes and 66 achievements, including Frequent Flyer for a clear in Herbie's company
    • Still US$2.99 once — no ads, no in-app purchases, nothing tracked, fully offline
  16. Whokoban 1.2.0 — Hardcore Mode, and Four Looks Only It Can Earn

    Whokoban gains a second way to play. Pick Hardcore when you start a run and the safety net is gone: no undo, no restart, and one lost level — a crate stranded, or the move cap reached — ends the whole run. The board wears a flame so you never forget which game you are in, and losing gets its own screen. Four board themes belong to Hardcore alone, one each for a clear on tier 1, 4, 7 and 10: Ember, Noir, Circuit Board and Gilded. This is also the first release since 1.0.2, so it carries everything since — eight themes earned by climbing, a game that calls a lost level the moment no way to finish remains, undo cut to exactly the last move, and a gong at the start of every run. Twelve themes and 65 achievements in all.

    • Hardcore mode: no undo, no restart, and a lost level ends the run — chosen per run, alongside the standard game
    • Four Hardcore-only looks: Ember, Noir, Circuit Board and Gilded, earned by clearing tier 1, 4, 7 and 10 with no net
    • Twelve board themes in all, earned in play — a theme changes how the board is drawn, never how it plays
    • The game calls a lost level on the spot, and undo recalls exactly the move that did it
    • Seventeen new achievements, 65 in total — including four for Hardcore, one of them secret
    • Every run opens with a gong; the level pool explains itself from the title screen
    • Still US$2.99 once — no ads, no in-app purchases, nothing tracked, fully offline
  17. Contain — One Page Became Seven

    Everything about Contain used to live on a single page you scrolled for a very long time, with the release notes and the legal documents in small grey text near the bottom of it. It is now seven pages that link to each other from a row under every heading, so whatever you came for is one click away rather than a scroll. The overview keeps the parts you want before deciding — what it does, what it costs, two screenshots of the real thing and the download — and the detail moved out to pages of its own: the full list of what Contain does, what it needs from your Mac and how it installs, and the handful of behaviours macOS forces on any app that moves windows. The release notes are now a proper page too, laid out release by release with what was added, changed and fixed in each, instead of a plain text file that opened unformatted in a browser tab. The privacy policy and the terms of use are unchanged, and now sit in the same row as everything else.

    • A row of links on every Contain page — overview, features, requirements, limitations, changelog, privacy, terms
    • The overview is about a third shorter, and keeps the price, the screenshots and the download
    • What Contain does, what it needs, and where macOS draws the line each have their own page
    • The release notes are formatted and readable, rather than a plain text file
    • The privacy policy and terms are one click from anywhere in the product
    • Nothing changed in the app itself — this is the website
  18. Contain 1.2.4 — The Whole Screen, and Every Desktop

    Two things Contain could not previously do. The green button now fills the entire display: the title bar goes, the container takes the whole screen, and every window you have contained is resized to match. It is not macOS's own full screen, and it cannot be — macOS gives a full-screen app a desktop of its own and lets no other app's window follow it there, so the window you contained would be left behind on the old desktop. Filling the ordinary desktop is the only version of full screen that keeps what you contained on screen, which does mean the menu bar stays, showing the menus of whatever app you are working in. Press Esc, ⌃⌘F, or the ⤡ button in the tab bar and everything returns to the size it was. The picker, meanwhile, now shows every window on the Mac rather than only the ones on the desktop in front of you. Windows parked on another desktop or another display used to be invisible to Contain, because macOS only lets an app enumerate the desktops currently showing; they are listed now, and picking one makes Contain hop over — through the app's own Window menu, the way you would — collect the window and bring you straight back. Minimized windows are pickable too, and come out of the Dock as they are contained. Where a window arrives but stays on its old desktop, Contain notices and fetches it properly rather than leaving you with a tab pointing at nothing.

    • The green button fills the whole display, with contained windows resized to match
    • Leave full screen with Esc, ⌃⌘F, or the ⤡ button in the tab bar
    • The picker lists windows on every desktop and display, not just the current one
    • Pick one and Contain fetches it for you, then brings you back
    • Minimized windows are listed, and come out of the Dock when contained
    • No change to the licence, the price, or what leaves your Mac — still nothing
  19. Contain 1.2.3 — Full-Screen Windows, and a Ticket That Travels

    Picking a full-screen window used to look like nothing happening. macOS puts a full-screen window alone on a desktop of its own and makes its position read-only while it is there, so Contain could resize it and then had no way to move it — the tab appeared, the window stayed where it was. Contain now takes the window out of full screen first, waits for macOS to finish rather than guessing at a delay, and then pins it in the container. Release it, or quit Contain, and it goes straight back to full screen exactly as it was: containing a window still leaves no trace once you stop. Separately, and more quietly: every release of Contain has been notarized by Apple, but the ticket was attached to the disk image rather than to the app inside it. macOS covered for that by checking with Apple over the network, so the app opened normally on any Mac with a connection — and could refuse to open on one without. The ticket now travels with the app itself, and the release script mounts the finished image and checks that it does, so it cannot quietly come undone again. Settings → Limitations also grew two entries: what happens to a full-screen window when you contain it, and why an app whose windows are all on another desktop does not appear in the picker.

    • Full-screen windows can be contained — Contain takes them out of full screen first
    • Released or on quit, the window goes back into full screen exactly as it was
    • The notarization ticket is now stapled to the app, not only to the disk image
    • A first launch on a Mac that is offline no longer risks being refused
    • Settings → Limitations covers full-screen windows and windows on another desktop
    • No change to the licence, the price, or what leaves your Mac — still nothing
  20. Contain 1.2.0 — We Removed Our Own Analytics

    Contain used to send six anonymous counters: that it launched, that a window was contained or released, that an action was blocked for want of Accessibility access, and the two halves of the activation flow. They were bare counts, they never carried the name of an app you contained, and Settings had a switch that stopped them. They are now gone from the app entirely — the analytics library, every event, and the code that sent them. We removed it rather than leaving it behind the opt-out, because a disabled sender is still a sender, and “we collect nothing” should describe the app you install rather than a default someone could change later. This is the same decision EasyHomebrew made yesterday, applied to the app with the most reason to earn your trust: Contain can see every window you have open. Settings → Privacy is now shorter and stronger — it says nothing is collected, and then keeps being precise about the one thing that does leave your Mac, the licence check that tells the app it has been bought.

    • All analytics removed — no usage counters, no events, no installation identifier
    • The analytics library is off the app entirely, not just switched off
    • No opt-out toggle any more, because there is nothing left to opt out of
    • Settings → Privacy now states plainly that nothing is collected
    • The licence check is unchanged, and still spelled out line by line
    • The apps and windows you contain never left your Mac, and still never do
  21. EasyHomebrew 3.0.0 — The Services Release

    A background service tells you three things: what it is, how launchd was told to run it, and what it has been printing. EasyHomebrew used to put all three behind one “i” button, in one window, three tabs deep — the same window for a six-line summary and a live log stream. Each is now its own window with its own button on the service row. The configuration window is the one that changed most: it used to show you the plist as XML, which answers “what is in this file” and none of the questions you opened it with. It now shows the command that actually runs with each argument on its own line, whether the service starts at load and restarts if it exits, a schedule written as “Every 5 minutes” or “Daily at 03:30” instead of a seconds count, and where its output goes — with every remaining key still listed, and the raw XML one click away. Logs got the same treatment. Services written in Go — colima, containerd, most of what you run — emit lines like time=… level=info msg="…", which is forty characters of machinery in front of four words of message. EasyHomebrew now recognises that format and lays it out as a record: timestamp in its own column, level as a colour-coded badge you can scan down the window, message where your eye already is. Lines in any other shape are left exactly as they were written. Security changed shape too — a scanned machine used to be a screenful of green rows with the packages that need attention pushed below the fold, and it is now a grid of cards with the vulnerable ones up top.

    • Info, Plist and Logs are three separate windows, each with its own button on the service row
    • The launchd plist is shown as fields — the command, start and restart behaviour, schedule in plain words, output paths
    • Raw XML is still one click away for the plists that do something unusual
    • Service logs in logfmt are formatted: timestamp column, level badge, message, field chips
    • Anything not in that format passes through untouched — mixed log files stay readable
    • The Security page is a card grid, with vulnerable packages and their CVEs at the top
    • Buttons switch off when there is nothing behind them: no plist, no log file, no service to restart
  22. Kyori 0.3.0 — One API Across Every Metric

    Kyori shipped five algorithms that each spoke a slightly different dialect: some had distance(), some had similarity(), and swapping one for another meant rewriting the code around it. 0.3.0 ends that. Every method — Levenshtein, Damerau-Levenshtein, Hamming, Jaro-Winkler, and Kyori itself — now exposes the same three functions: distance() where lower is better, similarity() where higher is better, and rank(), which takes a query and a list of candidates and hands back every one of them scored and ordered. Change which metric you import and nothing else has to move. The ranking itself got sharper too. Typing a prefix no longer penalises the part of the suggestion you have not read yet, so “chore li” lands cleanly on “chore list for wall”, and one mistyped character in what you did type costs one, not the length of the rest. The same words in a different order — “hotel bel-air” against “bel-air hotel” — is now a flat 1 rather than a positional pile-up. One breaking change comes with it: kyori.similarity used to be the ranking cost, and that behaviour now lives on kyori.distance; similarity() returns token overlap, where higher is better. KyoriIndex is unaffected and now runs on kyori.rank().

    • Every metric now exposes the same distance(), similarity(), and rank() functions
    • rank(query, candidates) returns each candidate scored and ordered, best first
    • Typed-prefix matches only count edits inside what you actually typed
    • The same words in a different order now cost a flat 1
    • Breaking: kyori.similarity is now token overlap — the old ranking cost moved to kyori.distance
    • KyoriIndex output is unchanged and now built on kyori.rank()
  23. EasyHomebrew 2.9.0 — We Removed Our Own Analytics

    EasyHomebrew used to send anonymous usage events: which features you opened, whether an install succeeded, roughly how many packages you had. It was aggregate, it named no packages, and you could switch it off. It is now gone entirely — the analytics library, every event, and the code that sent them, from both the main app and the menu-bar agent. We removed it rather than leaving it behind the opt-out because a disabled sender is still a sender, and “we don't track you” should describe the binary rather than a default someone could change later. There is no telemetry, no crash reporting, and no installation identifier left in the app. Settings → Privacy now says exactly that, and then does the harder thing: it lists every server the app connects to and why — the Homebrew catalogue, the vulnerability database, release notes, icon lookups, your license check, the update feed. No analytics does not mean no network, and a privacy page that hid the CVE scan would be its own kind of dishonesty. The privacy policy has been rewritten to match.

    • All analytics and telemetry removed — no usage events, no crash reporting, no installation identifier
    • Gone from the menu-bar agent too, not just the main app
    • Settings → Privacy now lists every server the app contacts and the reason for each
    • No opt-out toggle any more, because there is nothing to opt out of
    • Privacy policy rewritten to describe the app as it actually is
  24. Kyori 0.2.0 & WizJS 0.1.7 — A Double Release for Our JavaScript Libraries

    Both of our open-source JavaScript libraries shipped today. Kyori 0.2.0 rebuilds ranking around one promise — type three letters, get the right suggestion: matching now folds case, Latin accents and hyphens, prefers hits at the start of a word, and falls back to Damerau-Levenshtein when the query holds a typo. The new KyoriIndex wraps the whole loop — load your terms once, and search() returns them scored and sorted, best match first. The library also dropped its last third-party algorithm packages, so every metric is implemented in-repo. WizJS 0.1.7 answers a different itch: the Python standard library you keep reaching for in JavaScript. itertools grew to 19 lazy generators, functools covers partial, compose, once, memoize and reduce, and a new collections namespace brings Counter and DefaultDict — joined by the object helpers pick, omit and get. All of it with zero runtime dependencies.

    • Kyori ranking folds case, Latin accents, and hyphens, and prefers word-prefix matches
    • Typos still rank — Kyori falls back to Damerau-Levenshtein when nothing matches cleanly
    • New KyoriIndex: load terms once, search() returns every term scored, best first
    • Every Kyori metric now implemented natively — third-party algorithm packages dropped
    • WizJS itertools grown to 19 lazy generators — chain, zip, groupby, product, batched, pairwise
    • New WizJS collections namespace: Counter and DefaultDict, straight from Python
    • New WizJS object helpers — pick, omit, and path-safe get — with zero runtime dependencies
  25. EasyHomebrew 2.8.1 — Settings, Reorganized

    Settings had quietly become the junk drawer, so 2.8.1 tidies it. Backing up your setup and moving apps off Rosetta were never really preferences — they are things you do — so both now live in the sidebar next to Updates and Doctor, where the Backup page shows what an export would contain right now. The Settings window itself was rebuilt as a sidebar of panes, which also fixes a real bug: with eleven tabs, the ones that did not fit fell into an overflow menu that could not be clicked, leaving Language, About and Legal unreachable. And the statistics block at the bottom of the sidebar is now a drawer — closed by default, one click when you want the numbers.

    • Backup and Apple Silicon moved out of Settings into the sidebar, next to Updates and Doctor
    • The Settings window is now a sidebar of panes — Language, About and Legal are reachable again in every language
    • The sidebar statistics panel became a drawer: closed by default, Homebrew status and health score always in view
    • Environment, Menu Bar and Privacy settings now show translated titles
  26. EasyHomebrew 2.8.0 — A Fix for the Settings Crash

    A fast follow-up to 2.7.0. Opening Settings could crash the app the moment the window showed the Backup or Apple Silicon tab — the two tabs 2.7.0 itself introduced. 2.8.0 fixes that and changes nothing else. The update is already live: the app offers it on its next check for updates, or grab it from the download page.

    • Opening Settings no longer crashes the app on the Backup and Apple Silicon tabs
    • No other changes — a safe, immediate update for everyone on 2.7.0
  27. Whokoban 1.0.2 — Ten Languages, Switched Inside the Game

    Whokoban now speaks ten languages — English, Japanese, German, French, Italian, Spanish, Simplified and Traditional Chinese, Korean, and Brazilian Portuguese — and its App Store listing is written natively in each of them rather than translated. Pick yours with the globe on the title screen and the game changes on the spot: no relaunch, and a run in progress carries on. The update also adds swipe controls — one swipe is one move, so a drag can never eat into your move cap — an audio engine that repairs itself after phone calls and AirPods switching, and a launch screen that opens the way the game means to go on: black, with the Wizhut Gaming mark.

    • Ten languages: English, Japanese, German, French, Italian, Spanish, both Chinese scripts, Korean, Brazilian Portuguese
    • Switch language inside the game — instant, no relaunch, and a run in progress survives it
    • The in-app choice stays in sync with Settings › Whokoban, in both directions
    • Swipe to move: flick the board to step or push — one swipe, one move, never a drag
    • Sound that stays: the audio engine recovers from calls, AirPods switching, and whatever else iOS does to it
    • Every App Store storefront gets its own listing, written in its language
    • Still US$2.99 once — no ads, no in-app purchases, nothing tracked, fully offline
  28. EasyHomebrew 2.7.0 — Move Between Macs, and Update on Your Terms

    EasyHomebrew can now save everything you have installed to a single file and restore it on another Mac, adding only what is missing so nothing you already have is touched. Updates became something you decide about rather than something that arrives: read a package's release notes before you install them, pin a package to hold the version you have, or snooze an update for a week. A new health score in the sidebar sums up what actually needs attention, and a scan finds the apps still running through Rosetta so you can move them to Apple Silicon builds.

    • Back up every formula, cask and tap to one file — and restore it on another Mac
    • Read a package's release notes before you update it, without leaving the app
    • Pin a package to hold its version, here and in your terminal
    • Snooze an update for a day, a week or a month
    • A health score in the sidebar, built only from checks that have already run
    • Find apps still running under Rosetta and reinstall them as Apple Silicon builds
    • See how large Homebrew's download cache has grown, and clear it
    • Updates grouped by the package that needs them, with dependencies tucked underneath
    • Clean Up no longer hangs on chatty commands, and long commands can be cancelled
  29. Whokoban 1.0 — On the App Store

    Whokoban is out. Wizhut Gaming's first title is on the App Store for iPhone, a one-time US$2.99 with no subscription, no ads, no in-app purchases and no account. It is Sokoban with one rule changed: parking every crate does not finish the level, it unlocks the exit — Whoko still has to walk to the door through the warehouse he just rearranged, so a level can be lost by solving it perfectly and stranding yourself. All 5,000 levels are rebuilt on the phone from a seed rather than downloaded, so the whole game works with no signal.

    • Out now on the App Store — iPhone, iOS 17 or later, a one-time US$2.99
    • Parking every crate unlocks the exit — you still have to reach the door
    • 5,000 levels across ten tiers, every one verified solvable and measured
    • Par is the true minimum move count, the walk to the door included
    • A level only comes round again after the other 499 on its tier
    • Monsters block your way from tier 4 — they never kill you, so shove them aside
    • 48 achievements, including one for parking every crate and stranding yourself
    • No network code at all: nothing tracked, nothing collected, every level playable offline
  30. Contain 1.1 — Out of Beta, €6 for Three Macs

    Contain is out of beta and now costs €6, once. One key unlocks it on up to three of your own Macs, with every 1.x update included — no subscription and no account to create. Your key is checked when Contain launches and never while you work, and if the licence server can't be reached, Contain keeps running for fourteen days, so a flight or an outage never costs you the app you paid for. Settings gains a License pane where you can re-check your key or move it to a new Mac.

    • €6 once — one key, up to three Macs, every 1.x update included
    • No subscription and no account; Dodo Payments handles the purchase and emails your key
    • Checked at launch and never while you work
    • Fourteen-day offline grace, so a dropped connection never locks you out
    • A revoked licence returns every contained window to the desktop before it locks
    • Settings → License — status, activation date, Re-check, and Deactivate This Mac to free a slot
    • Settings → Privacy now covers the licence: what activation sends and what stays on your Mac
  31. EasyHomebrew 2.6.0 — Smarter Search, Clearer Installs

    Search for "java" and you now get the JDK, even though the package is actually called openjdk — EasyHomebrew searches Homebrew's alternate names alongside the real ones, so "postgres", "npm" and "golang" all find the right package too. Whole sentences work, and where several packages fit, the one most people install comes first. After an install, any follow-up step Homebrew mentions now appears as a card, with one click to add a PATH line to your shell or run a suggested command.

    • "java" finds the JDK, "postgres" finds PostgreSQL, "npm" finds Node
    • Sentence-style searches work — "I want to install Java" still gets you the answer
    • Popular packages rank first, using Homebrew's public install statistics
    • Broad searches also offer the matching Persona bundle above the results
    • Follow-up steps after an install, with one click to add a PATH line or run a command
    • Packages macOS ships its own version of are marked KEG-ONLY before you install
    • A newly installed package shows as installed everywhere, with no restart
    • Favorites — star any formula or cask into a new sidebar section, kept on your Mac only
  32. Wizhut Gaming — Whokoban, a Sokoban With the Door Locked

    Wizhut.tech now has a games arm, and Whokoban is its first title. It is Sokoban with one rule changed: parking every crate does not finish the level, it unlocks the exit. Whoko still has to walk to the door through the warehouse he just rearranged, where the crates he carefully parked are the walls now in his way — so a level can be lost by solving it perfectly and stranding yourself. 5,000 levels, ten tiers, no timer and no death. A one-time US$2.99 that works with no signal.

    • Parking every crate unlocks the exit — you still have to reach the door
    • 5,000 levels across ten tiers, every one verified solvable
    • Par is the true minimum move count, including the walk to the door
    • A level only comes round again after the other 499 on its tier
    • Monsters block your way from tier 4 — they never kill you, so shove them aside
    • 48 achievements, including one for parking every crate and stranding yourself
    • A one-time US$2.99 — no subscription, no ads, no in-app purchases, no account
    • iPhone, iOS 17 or later — coming to the App Store
  33. trimmer 1.0.0 — Whitespace Off Both Ends, and Nothing Else

    Every shell script eventually needs the same small thing: strip the whitespace clinging to either end of what a command returned. The usual answers are a sed expression nobody remembers, or a $(...) that silently eats the trailing newline and works until the day there are two. trimmer is that one job as a single static binary — it reads stdin and writes stdout, so it drops into a pipeline like any other stage. Trim the whole input or each line on its own, one side or both, with or without the final newline.

    • Reads stdin, writes stdout — a pipe stage, not a program with a workflow
    • The whole input by default, or every line on its own with --lines
    • Unicode-aware: CRLF, tabs and non-breaking spaces all count as whitespace
    • --no-newline gives command substitution the exact value, with nothing clinging to it
    • --left and --right trim one side, for de-indenting without disturbing alignment
    • Streams in --lines mode, so files larger than memory are fine
    • Running it with nothing piped in prints the help instead of appearing to hang
    • Pre-built binaries for macOS, Linux and Windows — MIT licensed, no telemetry
  34. Practical UV v0.2.0 — Now Flags Vulnerable Dependencies

    Practical UV already told you which dependencies were old. It now tells you which ones are known to be vulnerable, checking them against the OSV advisory database. Each finding carries the CVE, its severity and the version that fixes it, and shows up as a diagnostic, in the package hover, as an "Upgrade … (fixes CVE-…)" quick fix, and in a new Security column in the dashboard. It is off by default, because turning it on is what sends your package names to OSV.

    • Vulnerability checks against OSV — the PyPA and GitHub Security Advisory databases
    • Every finding carries the CVE, its severity, and the version that fixes it
    • Shows up as a diagnostic, in the hover, as a quick fix, and in the dashboard
    • uv.lock resolves your version ranges, so a finding means you are affected
    • Only your own dependencies are reported — every finding is fixable where you are
    • Off by default; a one-off check runs without changing the setting
    • "No advisories" is never confused with "nothing to check"
    • Flask and typing_extensions now match their lockfile and advisory entries
    • Also covers 0.1.10 — the changelog now reaches both registries
  35. EasyHomebrew 2.5.0 — Set Up a New Mac in One Step

    A new Mac usually means remembering, one at a time, every tool you had on the last one. Personas replaces that with 27 curated bundles that install together — 17 for languages and runtimes, 10 for roles like DevOps, Security and Data & ML. Each one is a whole working setup rather than a bare compiler: pick Go and the language server, linter and debugger come with it. Essential packages are ticked for you, the rest are optional, and anything you already have is left alone.

    • 27 curated bundles that install together — 17 languages and runtimes, 10 engineering roles
    • Each bundle is a whole setup: language server, linter, formatter and debugger
    • Every package explains in one line why it belongs in that bundle
    • Core packages ticked by default, optional ones offered unticked
    • Anything already on your Mac is shown but never reinstalled
    • One queue for the whole bundle, with per-package progress and a Cancel button
    • Each bundle shows how much of it you already have
    • Fixed: Spanish now ships in release builds — Spanish Macs fell back to English until now
  36. Contain 0.4.0 — The Window Inside Stays Inside

    Grab the container's title bar and the window it was holding vanished behind the container's own empty content area, and stayed there until you clicked a tab. Contain now orders itself below the window it contains, so the two arrive at the front together and in the right order. Two neighbouring fixes come with it: containing one window of an app no longer disturbs that app's others, and selecting a tab no longer buries the container. Also covers 0.3.5 and 0.3.4.

    • The contained window no longer disappears behind the container when you drag it
    • Containing one window of an app leaves that app's other windows alone
    • Selecting a tab no longer buries the container behind the app it just activated
    • Contain no longer unhides an app that you hid yourself before it ever saw it
    • From 0.3.5: moving and resizing the container now keep up smoothly
    • From 0.3.4: a Limitations pane in Settings, explaining what macOS forces on the app
    • Still a time-limited beta — this build keeps the 20 August 2026 deadline
  37. EasyHomebrew 2.4.2 — Cancellable Upgrades and a Progress View That Follows You

    Long installs and upgrades stop being a one-way trip. Every install, update, removal and reinstall can now be cancelled, and cancelling interrupts Homebrew cleanly rather than killing it mid-step. Stopping an Upgrade All leaves the rest queued for next time. Actions started from a package row or the right-click menu now get the same progress card as everywhere else, and Upgrade All runs in its own view so the queue stays visible from any section. Also covers 2.4.1 and its New sidebar section.

    • Cancel any install, update, removal or reinstall — Homebrew is stopped cleanly
    • Cancelling Upgrade All leaves the rest queued, so restarting resumes where you stopped
    • The same progress card wherever you start an action
    • Upgrade All runs in its own view — the queue stays visible from any section
    • A Check for Updates button that re-runs every scan in one go
    • Section actions moved out of the window toolbar into a consistent action bar
    • From 2.4.1: a New sidebar section listing recently-published packages
  38. Contain 0.3.3 — First Public Beta of the Window Container for macOS

    Contain is a small macOS app that holds your other windows. Open one resizable container, pick any window you already have open, and Contain pins it inside — each window getting its own tab, so three TextEdit documents are three tabs rather than one "TextEdit". The window stays the real, fully interactive app window: no screen capture, no proxy view. Contain remembers where every window was before it adopted it and puts it back exactly there when you release it or quit. This is a time-limited beta that stops working on 20 August 2026.

    • One resizable container, one tab per contained window — windows, not applications
    • The genuine app window stays live inside, and is re-pinned within a second if it drifts
    • A grid picker with app icons, plus optional live thumbnails if you grant Screen Recording
    • ↗ or ⌘W puts a window back at the exact position and size it had before
    • Settings (⌘,) names every anonymous signal Contain sends and switches them off
    • Built-in auto-update — signed releases, checked daily
    • Notarized and Developer ID-signed, so it opens without a Gatekeeper warning
    • Time-limited beta — this build expires 20 August 2026, with a countdown in Settings
    • Requires macOS 13 or later and Accessibility permission
  39. EasyHomebrew 2.4.0 — Now Runs on macOS 14 Sonoma, Intel Macs Included

    EasyHomebrew's minimum macOS drops from 26 all the way to 14 (Sonoma) — and since Sonoma still runs on Intel, those Macs are supported again. Nothing was cut to get there: browsing, installing, upgrading, categories, services, taps, Brew Doctor and CVE checks all work the same. The Apple Intelligence extras still need macOS 26 (Tahoe), but they now switch off cleanly on older systems instead of being unavailable at all. This entry also rolls up everything since 2.2.1.

    • Minimum macOS drops from 26 to 14 (Sonoma) — everything but the AI features works the same
    • Intel Macs supported again, with universal binaries for the app and menu-bar agent
    • Apple Intelligence features still need macOS 26 (Tahoe) and now switch off cleanly below it
    • Menu-bar agent gains a status row, a version readout, and unattended auto-upgrades
    • Refreshed package catalogue — 16,196 formulae and casks
    • Clear guidance, and a link to the right settings pane, when macOS blocks a cask upgrade
    • Discover fixes: exact package names rank first, and unfamiliar names no longer come up empty
  40. Practical UV v0.1.9 — On the VS Code Marketplace, With a Clean Toolchain

    Practical UV is now published on the VS Code Marketplace as well as Open VSX, built from the same source — so it installs wherever your editor looks, whether that's VS Code, VSCodium, or Cursor. v0.1.9 itself is housekeeping rather than features: the build toolchain moved forward and clears 11 advisories, with no runtime dependency changes. One thing to check before updating — the minimum supported VS Code is now 1.125, raised from 1.118.

    • Published on both the VS Code Marketplace and Open VSX from one source — two install paths, one extension
    • Minimum supported VS Code raised to 1.125 (from 1.118) — editors on 1.118–1.124 stop receiving updates
    • Build toolchain updated (@types/node, @types/vscode, @vscode/vsce) — 11 advisories cleared, 7 high and 4 moderate
    • No runtime dependency changes — still just @iarna/toml, unaffected by the advisories
    • Changes tracked in CHANGELOG.md from this release onward
  41. EasyHomebrew 2.0 → 2.2.1 — Public Launch, Licensing & Auto-Update

    EasyHomebrew left beta on June 12 and ships as a one-time €10 purchase — no subscription, lifetime updates within the major version. As of v2.2.1 the app updates itself, checking at launch and once a day, so this is the last version you'll ever download by hand. The 2.x releases also brought right-click actions on every package row, an Upgrade All that shows its whole queue, outdated dependencies in the Updates list, one-click fixes for Brew Doctor warnings, a smarter Discover, and full localization in six languages.

    • One-time €10 purchase — no subscription, lifetime updates within the major version
    • License key powered by Dodo Payments — activate once, the menu-bar agent honours it too
    • In-app auto-update — checks at launch and once a day, installs in place
    • Right-click quick actions on every package row, and a queue-first Upgrade All with per-package status
    • Updates list now includes outdated dependencies — no more hidden pending upgrades
    • Brew Doctor warnings become grouped, one-click fixes
    • Smarter Discover with an Apple Intelligence "Best pick", plus full localization in six languages
  42. Practical UV v0.1.8 — Now Works with requirements.txt + One-Click Convert to uv

    The biggest update since launch: Practical UV now treats requirements.txt as a first-class citizen. Outdated detection, hover info, code actions and the dependency dashboard all light up automatically on requirements.txt and its variants, with comments, pip directives, URL specs and environment markers parsed correctly. Open one and a "↑ Convert to uv" action appears in the status bar — one click and your project is on uv. Saving a pyproject.toml with changed versions now offers to run uv sync for you.

    • Full requirements.txt support — outdated detection, hover, code actions, dashboard
    • Status-bar "Convert to uv" action runs uv init + uv add -r in one click
    • Recognizes requirements.txt, requirements-*.txt, requirements_*.txt, and any *.txt under requirements/
    • Handles PEP 508 markers, pip directives, direct URL specs, and comments correctly
    • "Run uv sync" prompt fires automatically on save when pyproject.toml versions change
  43. EasyHomebrew v1.6.6 — Cleaner Updates & Friendlier Admin Installs

    The Updates page gets a long-overdue makeover with a prominent Upgrade All button, a one-click Update on every outdated row, and a clean Upgrade Selected action for batch mode — extending across Installed, All Packages, Categories, and Search Results. Casks that need root install end-to-end through a friendly authorisation flow (no more cryptic sudo failures), and a live background-activity panel in Settings shows every async job in flight. Plus a rebuilt categories database that recovers ~1,100 cask classifications, font casks that categorise correctly the first time, and a calmer macOS App Store-blue treatment for update badges.

    • Cleaner Updates page — Upgrade All up front, Update on every row, Upgrade Selected for batches
    • Friendly admin-privileges flow for casks that need root, with a clear progress sheet
    • Live background-activity panel in Settings — see every async job in flight
    • New homepage-enrichment cache you can clear from Settings → Storage
    • Categories database rebuilt — ~1,100 cask classifications recovered, font casks now correct on first launch
    • Calmer App Store-blue treatment for update badges and buttons
  44. EasyHomebrew v1.6.1 — App Store-Style Pages, AI Descriptions & Install Trends

    Every package now opens an App Store-style page with everything you need to make a decision in one place. A clean stat strip shows the essentials. An AI-written description tells you what the package actually does — no more squinting at one-liners. A screenshot gallery with a native carousel and arrow-key navigation lets you preview apps before you install. Install trends for the last 30, 90, and 365 days reveal what's genuinely popular. Variants of the same app appear as click-through mini-cards. And a brand-new Games category gives 117 titles a proper home.

    • App Store-style package page with everything in one place
    • AI-written descriptions in plain language, with smart screenshots
    • Native screenshot carousel with arrow-key navigation
    • Install trends for the last 30, 90, and 365 days
    • Tap between sibling versions and flavors with a single click
    • New Games category — 117 titles reclassified
    • Smart categorisation kicks in instantly for unfamiliar packages
  45. EasyHomebrew v1.6.0 — Grid View, Variant Grouping & Faster Upgrades

    Browse your packages your way: a new toolbar toggle switches every list between a compact row view and a visual card grid, and your choice sticks across launches. Variants of the same app — think Firefox, Firefox ESR, Firefox Developer Edition — now collapse into a single tidy entry with a +N expander, so your lists feel curated rather than crowded. The grouping is smart enough to keep unrelated projects apart, even when they share a host. Plus a definitive fix for the rare "Homebrew is busy" warning that was getting in the way of upgrades.

    • List or grid view, your choice — and it sticks
    • Variant grouping turns clutter into clean, expandable entries
    • Smarter grouping that keeps unrelated apps apart
    • Cleaner Discover badge and consistent labelling everywhere
    • No more "Homebrew is busy" warning blocking your upgrades
  46. EasyHomebrew v1.5.5 — Brew Doctor That Actually Fixes Things

    The Doctor tab is no longer a wall of warnings — it's a list of one-click fixes. Every diagnostic shows up as its own card with a "Run fix" button: deprecated casks and formulae, unlinked kegs, missing dependencies, stray files, PATH issues, and more. Spot something unfamiliar? Apple Intelligence explains it in plain English on macOS 26. Errors across the app are friendlier too — clear titles, readable messages, and details tucked away until you need them. And if something fails in a batch, just tap the row to see why.

    • One-click "Run fix" for every Brew Doctor warning
    • Install all missing dependencies in a single step
    • Apple Intelligence explains unfamiliar warnings in plain English
    • Friendlier error messages with clear titles and copy-ready details
    • Tap any failed row in Upgrade All to see exactly what went wrong
    • The UI stays in sync if you switch to Terminal mid-task
  47. EasyHomebrew v1.5.3 — Reinstall, Status Panel & Auto Vulnerability Scans

    Three quick follow-ups to the public beta, rolled up into v1.5.3. The headline work landed in v1.5.2: a Reinstall button for misbehaving packages, and a new status panel in the bottom-left showing app version, packages scanned and affected, and the disk space the app uses. Vulnerability scanning now runs automatically alongside update checks, and the Updates list shows only the apps and tools you installed yourself. v1.5.3 adds opt-in anonymous usage analytics, off from Settings → Privacy.

    • Reinstall button on the package page — fresh copy without removing it from your list
    • New bottom-left status panel: version, packages scanned, affected count, and app disk usage
    • Vulnerability scanning runs automatically when checking for updates
    • Updates list now shows only user-installed apps and tools — no internal dependencies
    • BETA label on Discover so you know semantic search is still experimental
    • Stability and performance polish across package browsing, services, and Discover (v1.5.1)
    • Opt-in anonymous usage analytics — aggregate events only, off in Settings → Privacy (v1.5.3)
  48. EasyHomebrew Beta is Live — Download v1.5 Now

    EasyHomebrew has entered public beta. v1.5 is available as a free download — no App Store, no waitlist. It includes all core features: package and cask management, CVE vulnerability scanning, services management, Brew Doctor with Apple Intelligence diagnostics on macOS 26, batch operations, and the new Discover feature powered by on-device semantic search. Give it a try and send us your feedback.

    • Free public beta — download the DMG and run it on macOS 26
    • Discover: describe what you need in plain language, find the right package instantly
    • Apple Intelligence in Brew Doctor explains issues and suggests fixes
    • CVE scanning, services management, and batch operations all included
    • Available in English, French, Greek, German, Italian, and Spanish
  49. Blog: Why Your AI Prompts Fail — And How to Fix Them

    Our latest blog post breaks down why most AI prompts produce underwhelming results — and it's not the model's fault. Language models are precise instruments: vague inputs reliably produce vague outputs. The article introduces seven measurable dimensions for evaluating prompt quality — clarity, precision, chain-of-thought reasoning, information completeness, constraint verifiability, structural compliance, and informational integrity — each targeting a specific failure mode. These aren't abstract rules but practical principles drawn from state-of-the-art research that fundamentally change how you write prompts.

    • Seven evaluation dimensions that cover every common prompt failure mode
    • Prompt quality is a learnable skill — not innate talent or guesswork
    • You don't need perfect scores to get dramatically better results from LLMs
    • Grounded in peer-reviewed research on prompt engineering
  50. Announcing EasyHomebrew — A Native Homebrew Package Manager for macOS

    We're building EasyHomebrew — a native macOS app that brings a clean, intuitive GUI to Homebrew. Browse, install, upgrade, and uninstall formulae and casks without touching the terminal. It also includes built-in CVE vulnerability scanning powered by the OSV database, services management, disk usage stats, and full-text search across all available packages. EasyHomebrew is coming soon.

    • Native SwiftUI app — lightweight, fast, and built for macOS
    • Built-in CVE vulnerability scanning against the OSV and NVD databases
    • Manage packages, casks, and Homebrew services from one place
    • Brew Doctor diagnostics, batch operations, and disk usage cleanup
    • Apple Intelligence features on macOS 26+ — smart diagnostics and logo detection
  51. Blog: The Science of the Ask — Why Promptivo Is the New Essential for AI Teams

    Our latest blog post dives into the research behind prompt quality and why it matters more than ever. Learn how Promptivo uses deterministic linguistic analysis — grounded in peer-reviewed studies of over 5,000 prompt pairs — to score your prompts across seven quality dimensions. Discover why clarity beats chain-of-thought scaffolding, how a few lines of structure outperform paragraphs of description, and what makes a prompt work consistently across models of all sizes.

    • Why clarity is the single highest-impact dimension for LLM output quality
    • How Promptivo turns academic research into instant, actionable feedback
    • The case for deterministic scoring: no AI calls, no latency, no cost
  52. Practical UV — VS Code Extension

    Our new VS Code extension brings the power of UV — the blazing-fast Python package manager by Astral — right into your editor. No more context switching to the terminal for dependency management. Get TOML syntax highlighting, automatic outdated dependency detection via PyPI, quick-fix upgrades, and run common UV commands straight from the command palette.

    • Outdated dependency detection with one-click upgrades
    • Run uv sync, add, and run from the command palette
    • Version selection from all available PyPI releases
    • Python and project version bumping built in