v0.1.1
Framing a region is now something you do by moving the wallpaper, the page comes back where you left
it, and each display keeps its own website. Settings and website lists carry over; the signing
identity is unchanged, so a local folder you have already granted access to keeps working.
Choose a region
Rebuilt. It was drawing a rectangle over the wallpaper, which meant aiming at the thing you were
framing instead of looking at the result, no way to adjust a region once it existed, and a frame that
came back a point out from where it was drawn.
- The wallpaper is the thing you move now. Drag or two-finger scroll to move it, pinch or scroll-wheel to
zoom. What you see while framing is what you get, because it is the same view. - It starts from the region the website already has, so this adjusts as well as creates.
- The page holds still and the frame moves, not the other way round — a page that pans itself has two
interpretations otherwise. - Framing no longer reloads the page it is framing, so a panned map or a scrolled dashboard survives
being framed. - The region survives however you leave the mode, including quitting.
- Spreading two fingers makes the frame bigger. It used to do the opposite.
Where a page was
- A page that keeps its position in the address is put back there. floor796 writes
#t0r0,444,443on every move and that was thrown away on every load. Only the part after the#
is remembered, and only when everything before it matches the website's own address. - The scroll position was recorded once at launch and then never again, because the thing watching
the address was watching a web view that had been replaced. It is re-attached now.
Two displays
None of this was reachable on a single screen, which is why all of it shipped in 0.1.0.
- Each screen keeps its own current website. One screen's rotation used to clear the other's mark,
so that screen fell back to the first website in its list and never advanced again. - Next, Previous, Random, Sound, Choose Region and Show on acted on whichever screen last held
that mark, with nothing saying which. They act on the screen Settings points at. - Each screen's page runs its own custom CSS and JavaScript, and its own inverted-colours, print
styles and sound settings. The second display's page was built from the first display's. - Changing one screen's website no longer throws away and reloads the page on every other screen.
Still unverified on real hardware — this was all written and tested on a one-display machine, and
docs/ROADMAP.md §5.6 lists what a second display would confirm.
The wallpaper appearing
- The page goes on screen when it has loaded, not one second after being asked for. The old
one-second guess was measurably short, so the menu bar band went up wearing a colour sampled from a
page that had not arrived — the menu bar changed, and the wallpaper followed a second or two later. - With a region framed, the menu bar now takes its colour from the strip you actually see. It was
sampling the top of the whole page, which with a magnified region is usually not on screen at all.
Menu
- The website's name is a real item with a status dot — green while the wallpaper is showing, hollow
while it is not — sitting directly under the switch that turns it on and off. It was a greyed-out
label, and grey reads as "you cannot have this" where the point is "this is the one you have".
Clicking it opens that website's settings, replacing the separate Edit… four items below its own
subject.
Clearing data
- "Clear all website data" left 315 MB behind. Measured after a clear:
Caches/WebKit/NetworkCachestill held 1158 files, none of them rewritten since. The API it used
only reaches what WebKit can attribute to an origin, and the disk cache mostly is not attributable.
It clears by date now. - The button says what it freed, and "Nothing left to clear" when that is zero rather than "0 bytes".
- It now also removes the zoom level remembered for each page. Two of the three per-page records
were being cleared and the third was not. This is a behaviour change: a page you had zoomed in
comes back at its own size after a clear.
Smaller things
nifro://reloadworks. Onlynifro:reloaddid — with the slashes the command lands in the
URL's host rather than its path — and the other spelling answered with
The command "" is not supported, which names nothing and is what a real typo gets too. All three
spellings work now.- The diagnostic text no longer claims custom code you never wrote. A hand-added website starts
with a starter template of fourteen comment lines, and the copyable diagnostics counted them, so it
reportedCustom CSS: 14 linesfor every website nobody had edited. CONTRIBUTING names that field
as one of the two that settle most reports. - The zh-Hans translation for Edit… came back; the websites list still uses it.
- The documented install command did not work, and the cask printed a deprecation warning on every
tap. Both fixed.
Known issues
Open on purpose, tracked in docs/ROADMAP.md:
- A YouTube video cannot be shrunk back into the YouTube page, so there is no way to sign in.
Bilibili does not have this problem. - Switching website can take a few seconds, with no sign that anything is happening.
- Nothing is done yet to reduce what the app costs while nobody is looking at it.
- The app follows the system language; there is no picker inside it.
- The app cannot tell you a new version exists.
brew upgrade— or this page — is how you find
out. - Nothing anywhere handles HDR.
- Multiple displays has never been run on two.
Requires macOS 15 or later.
Install
brew tap PathGao/tap https://github.com/PathGao/Nifro
brew install --cask nifro
Already installed with Homebrew: brew upgrade --cask nifro.
Or download the disk image
Nifro-arm64.dmg on Apple silicon, Nifro-x86_64.dmg on Intel. There is no universal binary, so
nobody downloads the half they cannot run.
This build is self-signed and not notarized by Apple, so a disk image you download and open yourself will be turned away the first time with "Apple could not verify Nifro is free of malware". That dialog offers only Move to Trash and Cancel — the way through is somewhere else:
- Press Cancel. Do not move it to the trash.
- Open System Settings → Privacy & Security and scroll to the bottom.
- There is a line naming Nifro, with an Open Anyway button. Press it, and confirm with your password or Touch ID.
- Press Open in the last dialog. macOS remembers, and never asks again.
Installing with Homebrew skips all of that — the cask clears the mark for you.
Checksums
Apple silicon Nifro-arm64.dmg sha256 66320b393e0adc27ec0ae0b83cdd582b9efcb616fcd8de9ce9450b167e3ca9b5
Intel Nifro-x86_64.dmg sha256 0d944d0f5b9310d6dccf3ffbf303ef2a7920b2a993f3622f7df0349f05df911a
What's Changed
Full Changelog: v0.1.0...v0.1.1