Changelog
1.11.0 · September 8, 2026 · Light or dark on its own, a shortcuts window, and eleven strings that had gone back to English
This one has to be installed by hand. Download the DMG from the Blockr page and drag the new Blockr over the copy in your Applications folder. Blockr still checks for a new version and still tells you when there is one; it cannot install it for you, because it carries a network filter that macOS re-verifies on every load. Your rules, lists and history are kept.
Added
- Blockr can be light or dark on its own, whatever your Mac is doing. Settings ▸ General now has an Appearance choice: System, Light or Dark. It applies everywhere at once, the monitor window, the menu-bar panel and the connection alerts, and it is remembered, so the app opens the way you left it rather than going back to following your Mac each time.
- A Keyboard Shortcuts window, ⌘/. Blockr’s two busiest screens keep their real commands behind a right-click, and macOS has no key that opens a right-click menu, so the keyboard routes to those commands existed and nothing told you so. Every shortcut the app has is now listed in one place, reachable from the Help menu and from the new Shortcuts button in the footer.
- ⌘F jumps to the search box on whichever screen you are on. The connection log, the rules list and the domain checker on Blocklists all have one, and until now the only way to reach any of them was to click it. Escape empties the box and gives you the whole list back.
- ⌘R updates your subscribed blocklists. Refreshing was a small circular arrow on the Blocklists screen and nothing else. The Edit menu now carries it, from anywhere in the app, and it respects the same once-an-hour limit the button does, so a held-down key cannot hammer the volunteers who host these lists.
- The menu-bar panel can check for updates. Both ways to ask for a check needed the monitor window open, and Blockr spends most of its life with that window closed. The panel now shows the version you are running and a Check for Updates button beside it.
- Report a Problem, Leave a Review and What’s New are in the Help menu, next to Blockr Help, so the things the footer offers are where macOS users look for them too.
Fixed
- The license check can no longer be redirected by an environment variable. A developer variable that points the app at a local server was honored as-is in the shipped app too, and that variable reaches any app launched from your login session, so an unprivileged process on your Mac could have had the next activation send your paid key, the machine fingerprint, the app version and the seat name to a host of its choosing. It is now honored only when it names localhost, in every build.
- Six explanations and five buttons had quietly reverted to English in all twelve other languages. The longest two were the explanations of what reading DNS replies does, on the Blocklists screen, which is the setting people most need explained. Five short labels had drifted to another app’s wording, and the Chinese “All” on the connection log’s filter had become the phrase for Select All. All eleven are fixed and a test now catches the next one.
- A custom Encrypted DNS endpoint now reaches the resolver when you finish typing it. Choosing Custom sent the still-empty field to the filter, which fell back to Cloudflare, and the address typed a moment later was remembered but never sent. The picker said Custom and the status said Encrypting DNS while every lookup went to Cloudflare, until an unrelated rule change happened to push it. The field now commits on Return and when you click away, and a running proxy moves to the new endpoint at once.
- Importing a large hosts file no longer freezes Blockr. The importer compared every line against everything it had already accepted, so a 20,000-line list took three minutes with the window frozen, and the published 100,000-line lists took far longer. The same import takes a fraction of a second now.
- Temporary rules count down again while traffic is flowing. The Rules screen’s once-a-minute tick was restarted every time the screen redrew, and it redraws on every batch of connections, so under any traffic at all the tick never fired: a rule set to expire in 15 minutes showed the same countdown until the window was reopened. The rules were still inert past their expiry, since that is enforced per connection, but the screen said otherwise.
- A network-profiles setting that cannot be read is kept, not erased. If the stored profiles failed to decode, Blockr started with none and the next rule edit wrote that emptiness back for good. The unreadable copy is now preserved beside the setting, the way host rules already were.
- The connection log’s CSV export can no longer smuggle a spreadsheet formula. An app whose name or path begins with =, +, - or @ landed in the export as a live formula the moment the file was opened in Excel or Numbers. Such cells now begin with an apostrophe, which every spreadsheet reads as plain text.
- The rules search box can be cleared with a click. It was the only one of Blockr’s three search boxes without the small x, so emptying it meant selecting the text by hand.
Changed
- Every panel, card and field Blockr draws itself now uses the shared twoplus11 corner shape. The same softly squared corner the rest of the fleet uses, on the same scale, so moving between twoplus11 apps stops feeling like moving between different products.
Site update, August 31, 2026 · One name for the $5 license
- The $5 license is called a Business License everywhere now. Eleven app pages called it a “Commercial License” and fourteen called it a “Business License”, for the identical thing at the identical price. Blockr’s pricing section, its checkout window, and its terms and privacy pages now all say Business License.
- Nothing about the license itself changed. Same $5, same one-time payment, same cover for one computer. A key you already hold still works, and there is nothing you need to do.
Site update, August 30, 2026 · Buy several apps in one order
- One payment, as many apps as you need. The commercial license window on this page could sell exactly one thing: Blockr. A team that also wanted two other twoplus11 apps paid three separate times, on three separate pages, and filed three separate receipts. That window now carries an Add another app control: search the catalog, set how many computers each app goes on, and pay once. Every app still gets its own license key, and they all arrive in the same email.
- Nothing changes if Blockr is all you want. The window opens exactly as it did, at the same price, with the same count of computers, and an order for a single app takes the route through checkout it always has. The extra controls appear only once the app list has loaded, so a slow or unreachable connection leaves the page as it was.
1.10.0 — August 26, 2026
This one has to be installed by hand. Download the DMG from the Blockr page and drag the new Blockr over the copy in your Applications folder. Blockr still checks for a new version about once a week and still tells you when there is one — it just doesn’t install it for you any more, for the reason directly below. Your rules, lists and history are kept, and you can turn the weekly check off under Settings ▸ General ▸ Updates.
Fixed
- Rules you wrote as website names were never actually enforced. Blockr compared every host rule against the numeric address a connection went to — which is what nearly every connection looks like from the inside — while the name it also knew about was only ever handed to the blocklists. So a rule typed as
telemetry.example.comin the Rules window quietly did nothing, and so did every rule using a*.wildcard. In the other direction, an “Always allow” exception for a site one of your blocklists covers missed for the same reason, and the blocklist then blocked the connection anyway — so the exception you set never took. Rules created by right‑clicking a row in the connection log stored the numeric address instead, which is why those kept working until the site changed addresses. Host rules are now matched against everything Blockr knows about a connection — the address, the name the app asked for, and the names DNS answered with — and the most specific rule wins. Worth re‑checking any rule you wrote by hand and assumed was working. - A rule written as a name still needed a blocklist switched on before it could match. Matching a name against a connection that arrives as a numeric address takes the DNS reply that produced that address, and Blockr only read replies when a blocklist was enabled — which has nothing to do with whether you wrote a rule. So someone who typed
telemetry.example.comand never subscribed to a list still got nothing. Blockr now reads replies whenever either reason applies: a list is on, or you have written a rule as a name. Your own setting still decides — if you have turned DNS reading off, nothing turns it back on, and the Rules window now tells you outright that a name rule cannot match while it is off instead of leaving it sitting there looking enforced. - “Always allow” did not reach the part of Blockr that answers name lookups. With a blocklist switched on, Blockr refuses lookups for listed names before a connection can even be attempted — but it was doing that without consulting your own rules, so an allow‑exception could not unblock a site there either. Pausing protection had the same gap: connections were allowed through, while name lookups were still being refused. Both now respect your rules, and pause means pause everywhere.
- While Blockr was asking you about an app, that app’s other connections were being decided without you. The first connection raised the alert and waited; every one after it was silently given the default action while the alert sat on screen. By the time you clicked Block, several more had already been let through. They now wait alongside the first one, and your answer covers all of them.
- Switching to Blockr could dismiss the alert you were switching over to answer. Bringing the app to the front rebuilt its connection to the filter, and the filter — seeing the app disappear mid‑question — applied the default to everything it was holding and withdrew the alert. The connection is now left alone unless it is genuinely broken.
- Blockr grew for as long as its window was open, and the busier your network the faster it grew. Reported at 410MB, reproduced here at 698MB after nineteen hours and still climbing. Almost none of it was connection data. The connection log and the app list are now drawn natively instead of being rebuilt and re‑measured many times a second, which is where the memory was going. Measured on the finished build over half an hour of live traffic, the objects behind that growth no longer accumulate at all, and the app now settles rather than climbs.
- Searching the connection log froze the window, and sorting it by app could stall it for most of a second. At the largest history setting, typing a single character into the search box took a third of a second, and clicking the App column header re‑sorted the whole history from scratch on every new connection. Both are now effectively instant, and the log keeps its place while traffic arrives instead of jumping under the pointer.
- Blockr no longer freezes on launch while it reads your history. With a large history the window used to wait for the whole file before it would draw. It now opens immediately and fills in a moment later, and nothing is saved until that has finished, so a slow disk can no longer cost you the log.
- Blockr rewrote its entire history file every 30 seconds. At the largest setting that was tens of megabytes, twice a minute, indefinitely — a great deal of writing to your SSD for data that had barely changed. It now writes at a steady rate regardless of how much history you keep, so choosing a longer history costs disk space rather than disk wear.
- Damaged files are kept instead of quietly discarded. A corrupt rules file used to read as “no rules” — which, for a firewall, silently means allowing everything — and a corrupt history file was thrown away and overwritten. Both are now set aside untouched so nothing is lost, and Blockr says what happened rather than starting over in silence.
- A full disk could leave a blocklist permanently out of date. A list that downloaded but failed to save was still recorded as up to date, so every later check agreed there was nothing new while the filter went on using an older copy. Nothing is recorded now unless the list actually reached your disk, and the message tells you to check free space.
- Clearing your history could bring it back. Clearing while a routine save was in flight let that save rewrite what you had just deleted. It is now final.
- Plainer answers when something is wrong. Exporting your rules tells you if the file could not be written instead of closing as though it saved; importing an unreadable file says what it expected instead of doing nothing; the menu‑bar panel now distinguishes “restart to finish updating” from “the filter is unreachable” instead of offering a Repair button that cannot help, and offers the way into System Settings while macOS is waiting for your approval; and turning filtering back on no longer clears its own warning before the filter has actually come back.
- Switching language now switches the whole window. The connection log’s column headings and its counters stayed in the previous language, leaving a half‑translated table. Everything follows the picker now.
- Details. The verdict column no longer clips “Allowed” to “Allow…”; the reason badge beside a blocked connection reappears when you widen the column again instead of staying hidden; a selected row keeps the verdict readable rather than printing red on blue; Settings opens tall enough to show the language setting without scrolling, and its switches are Blockr’s green rather than your system accent colour; the app list no longer reshuffles under your cursor while you are trying to click it; and per‑app totals are capped so years of short‑lived helper programs cannot grow the list forever.
- Blockr’s network filter would not load on macOS 26.6, and 1.8.0’s fix for it could never have worked. macOS stamps a hidden marker on files inside an app’s nested helper bundles as it uses them, and 26.6 — unlike every release before it — counts that marker as a change to the app. macOS re-checks the whole app before it will load a network filter, so the check failed and the filter was refused with “code signature invalid” on a copy that was byte-for-byte the one we shipped. The helper bundles being marked belonged to the component that installed updates. 1.8.0 tried to clear the markers at launch; that cannot work, because the request to remove one reports success and removes nothing. Blockr believed it, found the app still failing, and concluded the copy was damaged — so it told people to reinstall, and every fresh copy was marked again within seconds. The user who found this ran three laps of that advice before we understood why. The fix is to stop having nested helper bundles: the self-updater has been removed from Blockr entirely, and the build now refuses to ship if anything puts one back.
- “Damaged — reinstall Blockr” is no longer shown to people whose copy is fine. Blockr checks that a marker actually went away instead of trusting the answer it gets, and tells the two cases apart: a genuinely modified copy still says reinstall, while one macOS has merely marked now says “Blocked by macOS — update Blockr”, because reinstalling that one changes nothing.
- Settings showed “Connection: Not connected” in English in every other language. Both words had been translated in all thirteen languages the whole time; that one row handed them straight past. Reported by a French user who saw “Not connected” sitting under “Connexion”.
- The connection log’s hidden-count told VoiceOver the English, in every language. The count above the list describes itself to a screen reader as “12 connections hidden by 3 entries. Show what’s hidden.” That sentence has been translated into all thirteen languages since 1.6.0 and Blockr had never once found it, because the translation was filed under one spelling of the number and the app asked for another. Nothing on screen showed it — the words a sighted user reads were right all along.
- The menu-bar icon told VoiceOver Blockr’s name instead of its state. It read “Blockr” whether Blockr was filtering, paused or switched off, and in English whichever language you had chosen. It now says which of the three it is, in your language — and since paused and off draw the same shield, that description is the only thing that can tell those two apart.
- “Check for Updates…” could do nothing at all and say nothing about it. A build that shipped without its feed address left the menu item enabled, clickable and completely inert. It now says so, and offers the download page.
Changed
- A new version no longer interrupts you to announce itself. The weekly check runs when Blockr starts, and most people start Blockr at login — so answering it with a dialog meant a dialog over whatever you were doing when you sat down. Blockr also starts with no window and no Dock icon, so that dialog could open behind the app in front of it, with Blockr’s own interface stuck behind it and nothing on screen to say why. A found update now waits in the menu bar instead: “Blockr 1.9.1 is available”, with a Download button beside it, at the top of the dropdown, and it goes away by itself once you’re running the new version. Checking by hand still answers immediately — you just asked — and that answer now comes to the front instead of opening behind another app.
1.8.0 — August 20, 2026
If you have automatic updates on, Blockr will offer this to you on its own within about a week; you can also take it now from Blockr ▸ Check for Updates… Updates install in place and Blockr refuses any download that isn’t signed by us. You can turn the weekly check off under Settings ▸ General ▸ Updates.
Fixed
- Blockr now notices when its filter is switched off from outside the app — which, until now, it never did. The toggle under System Settings ▸ Network ▸ Filters turns Blockr’s content filter off, and so does macOS after some updates and after the system extension is removed. None of those go through the app, and Blockr read that state exactly once, at launch. So after any of them the window went on saying “Filtering”, the menu-bar shield stayed filled, and every connection on this Mac sailed past unexamined — a blocker that had stopped blocking and still said it hadn’t. If you waited half a minute you were then told your existing rules were still being enforced, which in that one state was the opposite of true. Blockr watches the configuration now and re-reads it whenever you switch back to the app; it says plainly that nothing is being blocked, and offers one button to turn filtering back on — no approval prompt, no admin password, and your rules and lists exactly where you left them. The encrypted-DNS switch is watched the same way, for the same reason.
- Choosing a language now changes the whole window, not half of it. 1.7.2’s picker switched everything written directly into a screen and nothing Blockr assembles as it runs — which is most of what you read: every status line, every verdict, the connection alert, the rule and blocklist summaries, the map’s country labels, and every tooltip and VoiceOver description in the app. Measured: 309 strings that stayed English in all twelve non-English languages, unless the language happened to be the one macOS launched Blockr in. Those 149 places now read the language you actually chose, so the change lands on the next redraw. Nothing in any of the thirteen translations moved — this was only ever about which one was being read.
- Every number and date in the window now follows the language you picked, not the one your Mac is set to. The counts Blockr shows most — “1,234 of 5,678” above the connection log, the map’s Allowed / Blocked / Total columns, the domains-blocked figure, the hidden-connections notice — were written by a formatter with no language of its own, which quietly follows macOS. Nine of the thirteen languages Blockr ships group digits as “1.234”, so a German window on an English Mac wrote the number one way and the sentence around it the other. The dates were the worse half: “updated yesterday” is a word, produced in macOS’s language and dropped into a sentence Blockr had already translated, so a German blocklist row read “Aus 3 Listen · aktualisiert yesterday”. The pause-until times and an app’s “first seen” had the same fault. The exported CSV and the rules file are deliberately untouched — another program reads those, where a decimal comma in a count column is a parsing bug rather than a translation.
- The rules screen’s file dialogs were English in all thirteen languages. The two import prompts and the export message are drawn by macOS rather than by Blockr, so no language setting inside the app could reach them — which left Blockr’s untranslated prompt sitting directly beside a Cancel button macOS had translated. The same went for several sentences that picked an English word in code and spliced it into a translated sentence: a rule row read “…ist on” in German, and “any host” showed verbatim in the Host column of a German rules table.
- The Simplified Chinese for “History” is back to the wording 1.7.2 shipped (历史记录). It had drifted when a shared glossary changed underneath it.
Internal
- Blockr’s test suite could not be built from a clean checkout, and had not been since August 13 — 1.7.0, 1.7.1 and 1.7.2 all shipped that way. Three test files added that day imported a module the test bundle does not have. On the machine that had already built the app it resolved anyway and everything looked fine; on a fresh clone or a build server it is a hard error that fails the whole bundle, so not one test in it ran — including the checks on rule expiry, import and export, and the audit that tells you which of your rules currently do nothing. It builds everywhere again: 455 tests, no failures, nothing skipped. And the release script never asked the suite anything, which is why that rode out three releases; a red suite now stops the release before anything is signed.
- The checks on which processes may bypass the filter could have vanished from the run without failing anything, because they were skipped rather than failed when their preconditions did not hold. Blockr’s decision about which Apple-shipped processes are trusted is the last place that should be able to stop being checked quietly.
Site update — August 19, 2026 · A checksum for the download
Website only; no change to the app.
- The download page now publishes the SHA-256 of the
Blockr.dmgit serves, so you can confirm the file you got is the file we put there. macOS already runs the check that matters — Blockr is signed with an Apple Developer ID and notarized by Apple, and a copy altered after we signed it will not open — but there was no way to check a download by hand, which is what anyone installing it on more than their own Mac tends to want. The checksum is on the download section under SHA-256 checksum, next to the one command that compares it with your copy. It is published as a plain file too, atBlockr.dmg.sha256, in the formatshasum -creads.
Site update — August 17, 2026 · The languages, said out loud
Website only; no change to the app.
- This page now says that Blockr speaks thirteen languages. It has since 1.7.0 and the page never mentioned it once — not in the features, not in the search-engine description. Anyone looking for a firewall in their own language had no way to know from here that this was one. There is a feature card for it now, and the languages are listed by name.
1.7.2 — August 17, 2026
If you have automatic updates on, Blockr will offer this to you on its own within about a week; you can also take it now from Blockr ▸ Check for Updates… Updates install in place and Blockr refuses any download that isn’t signed by us. You can turn the weekly check off under Settings ▸ General ▸ Updates.
Added
- Choose Blockr’s language yourself, in Settings. 1.7.0 put thirteen languages in the app but left no way to reach them: Blockr followed the language macOS was set to, and nothing else. So if your Mac is in English, you read Blockr in English — even though the Spanish, the Japanese and the Polish were already sitting in the app, fully translated, with no way to ask for them. The only way to see them was to change the language of your entire Mac.
- Settings now has a Language menu — Auto — match macOS, or any of the thirteen. It changes Blockr and nothing else on your Mac. The windows switch over as soon as you pick, with no relaunch. The menu bar at the top of the screen — and the standard Open and Save panels, which macOS draws rather than Blockr — switch over the next time Blockr opens, and the picker says so rather than leaving you to notice.
Fixed
- Settings did nothing when opened from the menu bar. With the monitor window closed, Blockr has no Dock icon, and macOS opens the windows of an app in that state behind whatever is in front. Settings was opening — underneath your current app, with no Dock icon to click to bring it forward, which is indistinguishable from a button that doesn’t work. It only appeared to work if you had opened the monitor first, because that gives Blockr a Dock icon. Blockr now claims the foreground before opening the window, the same way Open Monitor already did.
- The Verdict column stayed in the old language. Switching language repainted the whole window but left every row of the connection log reading Erlaubt or Blockiert — the busiest table in the app, and the one place the change most obviously hadn’t taken. The two words were being looked up once when the row was built rather than each time it was drawn, so they kept whatever language was current at launch. Sorting was never affected and still isn’t.
Site update — August 17, 2026 · The other apps, after the sign-up
Website only; no change to the app.
- The list of the other twoplus11 Mac apps has moved to the bottom of the page, below the email sign-up rather than above it. It used to arrive while the page was still making its case for Blockr, so the last thing you read before being asked for your email was a wall of other apps. It sits at the end now — the page finishes on Blockr, and the list is there if you want to see what else there is.
1.7.1 — August 17, 2026
If you have automatic updates on, Blockr will offer this to you on its own within about a week; you can also take it now from Blockr ▸ Check for Updates… Updates install in place and Blockr refuses any download that isn’t signed by us. You can turn the weekly check off under Settings ▸ General ▸ Updates.
Fixed
- “Blockr can’t reach its network filter” could not be repaired, and Repair kept offering to. After an update macOS installs the new filter but keeps the old one running until you restart, and only one of the two can hold the connection the app talks over. macOS says so — it reports that the install will finish after a reboot — and Blockr was told, and then overwrote it a moment later with a flat “Installed”. With that gone the app could only conclude it was reconnecting, so it offered Repair, which restarts the filter — not the thing that was waiting. Pressing it cleared the banner for about thirty seconds and brought it back unchanged, forever.
- Blockr now keeps that fact and says plainly that a restart finishes the update, and it no longer offers a repair that cannot work. It also asks macOS directly at launch, because the pending restart outlives the app’s memory of it — quitting Blockr and reopening it used to lose the explanation and start the loop over.
1.7.0 — August 17, 2026
Delivered together with 1.7.1 above; 1.7.0 was not released on its own.
Added
- Blockr speaks thirteen languages. German, Spanish, French, Italian, Japanese, Korean, Dutch, Polish, Portuguese (Brazil), Russian, Turkish and Simplified Chinese, alongside English. Blockr follows the language macOS is set to. This is the whole app, not the surface of it: every column header, every empty state, every explanation in Settings, the connection alert, the menu-bar dropdown, the blocklist tier descriptions. 445 strings.
- Rules that expire by themselves. The commonest honest answer to a connection alert is neither “always” nor “once” but while I’m doing this thing — an installer, a one-off sync, a call. Without somewhere to say that, people pick Always, because it is the button that makes the prompt stop coming back, and a firewall fills up with permanent grants nobody meant to give. The alert now offers Always / 15 minutes / 1 hour / 8 hours, and the rules list shows the time left on each. Expiry is checked per connection inside the filter itself, so a temporary rule cannot outlive its window even if Blockr never runs again.
- Switch a rule off without deleting it. The way to answer “is this rule what’s breaking that app?” without having to retype it afterwards. There is a checkbox on every host rule and a Turn Off in its context menu.
- Blockr tells you which rules aren’t doing anything. A rule list only ever grows, and after a few months of answering alerts you have a list nobody can reason about. A banner above the rules now names the ones that have stopped mattering: expired, already covered by a broader rule with the same verdict, and contradicting another rule with the same scope and the opposite answer. Every finding names the other rule involved and selects it for you. Nothing is deleted for you, and where the answer isn’t certain it stays quiet.
- Import and export rules as files. Blockr has no account and no sync, so a file is the migration path and the backup. Three formats: Blockr’s own JSON, the only lossless round trip; a hosts file; and a plain domain list. The two text formats are what every published blocklist on the internet is written in, so a curated list somebody else maintains can become rules you own and can edit. An import says plainly what it did and what it declined to read.
Fixed
- A failed blocklist handover needed the app restarted. If the filter refused the compiled lists twice — which happens for a few seconds while an update swaps the extension underneath a running Blockr — Blockr stopped trying for the rest of the session. It reconnected happily and never mentioned the lists again, so the fix really was to quit and reopen. It now waits and tries again on its own, and the warning carries a Try Again button rather than an instruction.
- The connection log showed a time with no date, so a connection from last week read as one from this morning, and a log that had simply stopped updating looked identical to a live one. Rows from today still show only the time; older rows now carry their date.
- The Verdict, Rule and Action columns sorted on their own labels. Harmless in English, where “Allow” happens to precede “Block” — but the labels are translated now, and German sorts “Blockieren” first, so those columns quietly reversed. They sort on the underlying value instead, so the order is the same in every language.
- The exported CSV had started to depend on the display language. Its header row and verdict column are fixed English by design, so scripts can read them; its reason column had become translated. It is fixed English again, and the file is identical whatever language the app is running in.
- An unnamed network profile stored the name it was given when it was made, so a profile created in English kept reading “Wi-Fi · 192.168.1.1” while the heading directly above it said “WLAN · 192.168.1.1”. It derives that label live now. Profiles you have named yourself are untouched.
- The shield in the menu-bar dropdown was drawn in whatever accent color you had picked in System Settings, not Blockr’s green. The dropdown’s Open Monitor, Settings and Quit buttons were green for the same reason, and arrived green a frame before settling — only the shield needs the tint.
- The twoplus11 wordmark in the footer failed the contrast standard. Its “plus” was a hard-coded Apple blue measuring 3.65:1 on a white window and 3.32:1 in Settings, against the 4.5:1 that size of text needs. It only ever looked fine because dark mode hid it.
- The mobile download button on this website put white on Blockr’s mid-green, which measures 2.34:1. It uses the darker green the desktop button already used, at 4.61:1.
Changed
- The installer window’s palette is derived from the shared design system now, rather than from a hand-typed copy of the whole fleet’s colors kept in this repo — where the other entries were free to drift out of step with the apps they named.
Site update — August 17, 2026 · Corrected description, and a phone-width fix
Website only; no change to the app.
- This page told search engines Blockr was a disk-space visualizer. That is a different twoplus11 app entirely, and the wrong sentence was in all three of the tags a search result and a shared link are built from — so anyone finding the changelog through Google or seeing it pasted into a chat was told Blockr does something it has never done. It now says what Blockr is: a per-app firewall and network monitor for Mac.
- A long file path on the privacy page pushed the page wider than the phone. It is one unbreakable run of characters, so at 375px it forced about 45px of sideways scrolling on every screen it appeared on. It wraps now.
Site update — August 14, 2026 · Headlines in one color
Website only; no change to the app.
- The headline no longer fades from one color into another across the letters. A gradient poured through text is the house style of every generated landing page on the web, and it was on the hero here, on the small uppercase label above each section, and on the license label in the purchase panel. The words are one solid color now — the accent this page already used everywhere else — so the headline finally matches the page under it.
- The figures on the download-stats page were faded the same way and are plain white now. The color belongs to the bars beside them, not to the digits.
- Gradients are kept where they belong — the buttons, the app tile and the rule above the support panel are untouched. It is only text that stopped fading.
- No change to the app.
1.6.1 — August 13, 2026
Nothing else changed — same features, same rules, same log. If you have automatic updates on, Blockr will offer this to you on its own within about a week; you can also take it now from Blockr ▸ Check for Updates…
Changed
- Blockr’s green, inside the app, now matches the green everywhere else. The icon in your Dock, the website and the installer window were all redrawn on a slightly cooler, deeper green a while back; the app’s own buttons, links, selected rows and switches were left on the older one, so the app never quite matched the icon that launched it. They are the same green now.
- The installer window is on that green too.
Site update — August 13, 2026 · Blockr’s own green, everywhere
- The headline on this page faded out into a blue that isn’t Blockr’s. It was left over from the color scheme Blockr used before its icon was redrawn, and it had survived every pass since — so the page was selling a blue-green app while the one that installs is green.
- The Blockr tile beside the name, in the header and on the hero, now matches the icon in your Dock. It had been a lighter, flatter green that was close enough to look deliberate and never actually matched.
- The preview image shown when a link to this page is shared — in a message, a chat, a post — was drawn on a navy background with pale blue labels on it. It is Blockr’s green now.
- No change to the app.
1.6.0 — August 13, 2026
Blockr updates itself: it checks for a new version about once a week and offers to install it in place, refusing any download that isn’t signed by us. You can turn that off under Settings ▸ General ▸ Updates, and you can always check by hand from Blockr ▸ Check for Updates…
Added
- Filter the connection log. Right-click any connection and hide that app, that host, or that whole domain from the list. It came from a user who pointed out that macOS’s own background services make so many connections that everything else drowns in them — which is true, and no amount of scrolling fixes it.
- It hides rows and nothing else. Nothing is blocked or allowed differently, no rule is written, and none of it ever reaches the network filter. A hidden app is filtered exactly as it was a second earlier, its connections are still counted, and its rule still applies.
- A count of everything hidden sits above the list the whole time anything is hidden, and opens the list of what’s doing it. Each entry shows its own share of that count and removes in one click.
- A blocked connection is shown even when an entry would hide it. You can silence something noisy; you can’t silence the moment it gets blocked. There’s a switch for it, in that same list, on by default.
- An app hidden from All Traffic still appears in the sidebar, marked, and opening it shows its connections with a line saying why the two views differ. Emptying the list by hiding everything says exactly that rather than “No traffic yet”, and an export tells you how many connections it is leaving out before you save it.
- Fully keyboard-operable and announced to VoiceOver: the same three choices appear in a Filter Out menu whenever a row is selected, since a table row’s context menu can’t be opened without a pointer.
Fixed
- Sorting the connection log by any column no longer hangs Blockr. Clicking a column header on a full log — 5,000 connections, the default — pinned a core at 100% and never came back, leaving the window dead until the app was force-quit. Present since the log had sortable headers.
- Reversing a sort moves every row at once, and that reorder was being applied row by row inside a view arrangement where each step re-entered the previous one, so the cost climbed far faster than the number of rows: 1,000 connections took 23.6 seconds and 5,000 never finished. The list is now rebuilt outright when the sort changes, which takes about a quarter of a second. Live traffic still updates in place.
Site update — August 12, 2026 · What actually connects to the internet
- A privacy answer on this page was wrong, and is fixed. It said nothing was “checked for automatically” — which stopped being true once Blockr gained the ability to update itself. Conversions, and everything you open, were never sent anywhere and still aren't; the claim about connections was the part that was false.
- Every connection Blockr makes, in full: a check for a new version about once a week; the optional reverse-DNS lookup; blocklist downloads, but only for lists you subscribe to and fetched straight from the publisher; and, if you switch on Encrypted DNS, your DNS queries going to the resolver you picked. Nothing about your files is in any of them, and the update check sends the app version and nothing more.
- The update instructions were out of date. They described downloading a new copy and dragging it over the old one. Blockr updates itself — it checks about once a week and offers to install the new version in place, refusing any download that isn't signed by us. You can still replace it by hand, and you can turn the automatic check off.
- No change to the app.
Site update — August 12, 2026 · Readable buttons and small print
- The buttons in the header say what they say. The Tip and Download pills were drawing their label at 55% opacity over a colored fill, which measured as low as 1.6:1 against it — well under the 4.5:1 the accessibility guidelines ask for. Their labels are now solid, and the fill behind them is set a shade deeper so the text genuinely clears that bar.
- The Subscribe and Support buttons too. Their labels were colored for one end of a two-color gradient and disappeared into the other end. Both now use a single fill that the label is legible on all the way across.
- The newsletter note, the “More apps” caption and the version line under the download button were all set too faint to read comfortably; each is now above the AA threshold.
- Keyboard shortcut chips are legible against their own background.
- The screenshot viewer no longer makes every visit quietly re-download this page as if it were an image — a wasted request on each load.
- No change to the app.
Site update — August 12, 2026 · The twoplus11 logo, back to its own color
- The twoplus11 wordmark in the top-left corner is the studio’s blue again. It had been recolored to match Blockr’s accent color, which made the same logo look like a different one on every app’s site. It now matches twoplus11.com and the rest of the apps.
- No change to the app.
Site update — August 11, 2026 · Clearer search results
- The description under this site in Google is no longer cut off. It ran past the length Google shows and broke mid-word; it now reads as a complete sentence.
- Sharing a link to the privacy, terms or changelog page now shows a proper preview card instead of a bare URL.
- The sitemap now reports when each page actually changed, so search engines re-check pages that have been updated instead of assuming they are stale.
- No change to the app.
1.5.1 — August 11, 2026
A grey band at the top of the window, hiding the row underneath it.
- Fixed: a grey band across the top of the window. Reported by a user running the macOS 27 beta, where it appeared every time. The band covered the status strip — the row that tells you whether the extension is connected and the filter is running — and the buttons underneath it still responded to clicks, so the only way to reach them was to guess where they were.
Blockr was restyling its own window on the way up, left over from chasing an unrelated layout bug in 1.4.0. That fought with how macOS lays the window out, and when macOS won, the title bar was left painting over the top of Blockr's own content. It no longer touches the window at all, which is both the fix and the smaller amount of code. The monitor now uses the standard macOS split-view layout, so the sidebar runs the full height of the window.
Site update — August 9, 2026 · The Map screen
- Added a Map section to the product page, with a screenshot of the screen. The map arrived in 1.4.0 and this site had never shown it — the page went straight from the connection log to the rules table, so the one screen that answers “where is all this actually going?” was invisible unless you had already installed Blockr. The new section covers the offline country lookup, what a red dot means, the sortable table under the map, and that marking your own location is optional. No change to the app.
Site update — August 9, 2026 · Corrected wording
- Corrected how this site describes Blockr's dependencies. The footer, the requirements box and the 1.2.0 notes below all said “no third-party dependencies”. That is not accurate and has not been since 1.2.0: Blockr bundles Sparkle, the open-source framework behind Check for Updates…. It is the only non-Apple component in the app.
- The same lines paired that with “nothing uploaded”. Blockr checks once a week for a new version, that check reaches our server, and we count it — described in full in section 4 of the privacy policy since August 6. What Blockr sees — which app connected where — still never leaves your Mac, and the check can be switched off. No change to the app itself.
1.5.0 — August 9, 2026
Rules that follow the network you're on, and encrypted DNS with Blockr as the resolver.
- Rules that follow the network you're on. A profile is a separate set of rules that applies on one network and nowhere else — so an app can be allowed at home and blocked on your phone's hotspot, without you changing anything when you move between them.
Networks are recognised by their router, not their Wi-Fi name. Reading a network's name on macOS needs Location permission, and Blockr declines to ask for that; the router is free to read, tells two networks apart more reliably than a name does, and works the moment you connect. So Blockr never asks where you are, and you name your own networks.
Nothing changes until you make a profile. Everything you have already set becomes the default profile, which keeps applying everywhere you haven't made one, and a new profile starts as a copy of it rather than as a blank set that would begin blocking everything the moment it was created. - Encrypted DNS, with Blockr as the resolver. Every name your Mac looks up normally travels in plain text, where the network can read it and answer it. Blockr can now do that resolving itself, over HTTPS, to Cloudflare, Quad9, Google, or any endpoint you name.
It also makes blocklists strictly better: a blocked name is refused as a name, before an address exists — answered “no such name”, which fails immediately instead of leaving an app waiting on a connection to nowhere.
This installs nothing new — the proxy lives inside the filter extension you already approved, so there is no second system extension. macOS asks permission once for the DNS proxy itself. If the resolver stops answering, Blockr steps out of the path and lets macOS resolve normally. Off until you turn it on, in Settings ▸ Encrypted DNS. - Fixed: the menu bar icon was too small. Reported by a user, and they were right — the shield drew at 14×15pt inside a 22pt menu bar, against system glyphs nearer 18. It is now 17×18.
- Fixed: Blockr no longer filters its own traffic. The DNS proxy reaches its resolver over HTTPS, and those connections arrived at the filter as a nameless root process nobody had a rule for — so “block unknown apps” could have cut off the Mac's own resolver, and every name lookup with it.
1.4.0 — August 8, 2026
Block ads and trackers everywhere at once, and see where your Mac actually talks to.
- Blocklists. Subscribe to published lists of ad, tracker and malware domains — StevenBlack, oisd, HaGeZi or 1Hosts — and Blockr drops those connections for every app on your Mac, without you writing a rule for each one. Nothing is on by default.
No list ships inside Blockr and none is copied to our servers: each is downloaded straight from its own publisher, checked for updates once a day at most, and kept working from the last copy if the publisher is unreachable. Those requests go to them, not to us — we never learn which list you chose.
A list always loses to a rule you wrote, so an exception is just a host rule — and Check a domain tells you whether something is on a list and offers to add that exception in one click. Every blocked connection records which list caught it and which entry matched, in the monitor and in CSV exports. - Blockr can now tell which domain an address belongs to. A connection reaches the filter as an IP address, but blocklists are lists of names. With a list enabled, Blockr reads the DNS reply that produced the address — on port 53, in memory, never written down and never leaving your Mac — which is what lets a list apply to nearly every connection instead of the few that arrive carrying a hostname. It also catches trackers hiding behind a first-party name. Switchable in Settings ▸ Blocklists; encrypted DNS is invisible to it, as it is to every filter of this kind.
- A map of where your traffic goes. Every connection placed on a world map by country, sized by how many and colored by whether Blockr let them through, with a sortable table beside it. The country lookup is offline — a bundled table, so a firewall never hands a third party a running list of everywhere you connect.
- A blocklist now outranks allowing an app. Allowing Safari has never meant allowing every destination Safari reaches, and a subscribed list applies inside apps you have already allowed.
- Fixed: Blockr could report protection it was not providing. If the compiled blocklist failed to save, Blockr still remembered the domain count — so it would say “99,557 domains blocked” on the next launch while handing the filter an empty list. The count now never outlives the list it describes, and a missing list is rebuilt rather than silently cleared.
- Fixed: a corrupted list entry could have blocked an entire country. A list shipping a bare registry suffix such as
co.ukwould have taken out every site under it. Those are now never matched on their own. - Fixed: the window could lose its status bar, search field and footer when Blockr could not reach its filter, leaving connection rows drawn up under the traffic-light buttons.
- Clearer status. The strip now says when new apps are being allowed or blocked silently — previously it read as healthy while Blockr had quietly stopped asking about anything new. And when the filter is unreachable, Blockr no longer claims nothing is being filtered: your existing rules are still enforced, and it says so.
1.3.0 — August 7, 2026
Two things people asked for, plus one bug that would have cost you your history.
- Blockr no longer asks you about macOS itself. Software Update, iCloud, the App Store, Mail, Spotlight and the long tail of system daemons are allowed without an alert, so the alerts you do see are about apps you chose to install. On by default — Settings ▸ General ▸ Trust Apple’s own apps and services turns it off.
Your own rules still win: block an Apple app and it stays blocked. And a signature says who built a program, not what it will do with a connection — so the general-purpose tools macOS also ships are still asked about, even though Apple signs those too:curl,ssh,openssl, the shells,osascript,python,perl,ruby,php. Those are how traffic leaves a Mac without anyone having to ship a program of their own.
Trusted connections are still recorded in the monitor, tagged Apple, and carried into CSV exports in a new Reason column. Nothing is allowed invisibly. - Minimizing the monitor now hides Blockr to the menu bar instead of folding the window into the Dock. The app is still running, the filter is still up, and the menu-bar shield was already the place to find it — a window in the Dock tray was just a second place to look. The yellow button and
⌘Mboth do this, and the button says so when you hover it or reach it with VoiceOver. - The monitor explains itself once. Until you’ve put the window away for the first time, it tells you that closing or minimizing doesn’t stop Blockr. After that it never mentions it again.
- Fixed: your connection history now survives Blockr’s own updates. A single field added to the log format would have made the whole history file unreadable, and it is read all-or-nothing — so the entire record of what your Mac had been talking to would have silently vanished on upgrade.
1.2.1 — August 5, 2026
Two fixes to getting set up, both reported by people who hit them.
- Blockr now shows you where to approve it. While macOS waited for the system extension to be approved, Blockr said “Waiting for approval in System Settings” and left you to find the pane yourself — and if you missed the notification, there was nothing left to click. The status now comes with a button that opens Login Items & Extensions directly, and names Network Extensions as the section to switch Blockr on in.
- Settings opens from the menu bar without the monitor window. Choosing Settings while Blockr was tucked away in the menu bar opened the window behind whatever was in front, with no Dock icon to bring it forward — so it looked like nothing happened unless you opened the monitor first.
1.2.0 — August 4, 2026 · Initial public release
First release. See every app on your Mac that reaches the internet — and stop the ones that shouldn't.
- Connection alerts — the first time an app opens a connection, Blockr holds it and asks. Allow or block, remember it as a rule or not, and scope the answer to the whole app or just that one host. One alert per app, never one per connection.
- Per-app and per-host rules — allow or block everything an app does, or name an exact host, an address, or a wildcard like
*.example.com, with an optional port. Host rules outrank app rules, so you can allow an app and still cut off a single tracker. - Live connection log — every connection with its app, remote host, port, verdict and time. Search by app, host or port, filter to just what was blocked, and sort on any column. Right-click a row to write a rule from it.
- History that survives relaunch — connections and per-app totals are kept on disk, so the monitor is never blank. Export to CSV or JSON.
- Hostnames, not just IPs — reverse DNS resolves addresses lazily, only for rows on screen, and caches the result.
- Rules manager — every rule in one screen, including apps that aren't running, plus Add App… to write a rule before an app has ever connected.
- Choose what new apps get — ask me (the connection is held while Blockr asks), or allow/block silently with no alert at all. A separate setting covers what happens while Blockr isn't running.
- Pause protection — allow everything and stop asking for 15 minutes, an hour, or until you resume (
⇧⌘P). Never survives a relaunch. - Start at login — while Blockr isn't running, unknown apps get your chosen default action.
- Optional block notifications — a blocked connection fails silently inside the app that made it, so Blockr can tell you, rate-limited to one per app per minute.
- Private by design — Blockr decides when a connection opens and never decrypts or proxies what flows through. No account, no analytics, nothing uploaded.
- Native SwiftUI. Menu-bar app, light + dark mode, full keyboard support, WCAG 2.1 AA.
- Signed and notarized by Apple — macOS 14+, Apple Silicon & Intel.
- Free for personal use forever, including updates; commercial use requires a one-time $5-per-device license.