Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Sep 01:53
c352c8a

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:

  1. Press Cancel. Do not move it to the trash.
  2. Open System Settings → Privacy & Security and scroll to the bottom.
  3. There is a line naming Nifro, with an Open Anyway button. Press it, and confirm with your password or Touch ID.
  4. 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.

Install:

brew tap PathGao/tap https://github.com/PathGao/Nifro
brew trust --cask PathGao/tap/nifro
brew install --cask nifro

The middle line is not optional. Homebrew refuses to load a cask from outside its own
repositories until you say you trust it, because a cask can run code after installing.
This one runs a single command — it clears the "downloaded from the internet" mark macOS
puts on the app. Read it first: https://github.com/PathGao/Nifro/blob/main/Casks/nifro.rb

Apple silicon  Nifro-arm64.dmg   sha256 35c69372ab268208d38eaf1ac679cd9e951d56d2e9b69be00cd05c64c1a27039
Intel          Nifro-x86_64.dmg  sha256 c4d391242093d452622af262210284decdb251f207acffd2dfbd3408850fc5a2

What's Changed

  • cask: bump to 0.1.3 by @github-actions[bot] in #11
  • Check the roadmap against the code it describes by @PathGao in #12
  • A catalogue entry with a zoom no longer costs the whole live gallery by @PathGao in #13
  • A display that is gone stops getting a wallpaper of its own by @PathGao in #14
  • A wallpaper can go away with its display, and three pieces of state get applied by @PathGao in #15
  • "Main" meant two different displays, and one of them was frozen by @PathGao in #17
  • Tell people a new version exists, on terms they set by @PathGao in #18
  • Say that a page is on its way by @PathGao in #20
  • A language picker, and the dead multi-display link goes by @PathGao in #19
  • A panel with one column per display, replacing the menu by @PathGao in #21
  • Compress the roadmap, settle four things it contradicted itself about, and translate it by @PathGao in #22
  • The roadmap describes the app that shipped, not the one that was planned by @PathGao in #23
  • The shortcuts footer says the one thing a reader of that page needs by @PathGao in #24
  • The About tab leads with the gallery, and the feedback button stops being the one that gets cut by @PathGao in #25
  • Clearing website data lives in the window that administers websites by @PathGao in #26
  • Each display keeps its own rotation interval, next to the mode it qualifies by @PathGao in #27
  • Count the app's visual vocabulary, and propose the guardrail that would keep it one by @PathGao in #28
  • A hardcoded radius, point size or colour in the panel now fails the build by @PathGao in #29
  • Clearing website data asks first, and says what it costs by @PathGao in #30
  • Off means off, loading says so, and a new install opens with a wallpaper by @PathGao in #31
  • One display's answer stops being the whole app's by @PathGao in #32
  • The wallpaper from an unplugged display takes the screen it lands on by @PathGao in #33
  • Settings is four panes about four different questions by @PathGao in #34
  • Roadmap: carrying a user's settings across an upgrade by @PathGao in #35
  • A download the wallpaper starts is not one anybody asked for by @PathGao in #36
  • Deleting a website says what it costs by @PathGao in #37
  • The unplug setting names both of its states by @PathGao in #38
  • Nothing in the app is Plash's any more by @PathGao in #39
  • Every explanation is one sentence by @PathGao in #40
  • Custom CSS keeps its non-ASCII characters by @PathGao in #41
  • A page with no video on it is not scanned sixty times a second by @PathGao in #42
  • The favicon fallback asks the site, not the folder by @PathGao in #43
  • A half-written thumbnail is forever by @PathGao in #44
  • The inspector is switched on through public API by @PathGao in #45
  • Zoom Out stops before the page is gone by @PathGao in #46
  • Content blocking says what became of the address by @PathGao in #47
  • The style observer watches the two nodes it says it watches by @PathGao in #48
  • The user agent is decided in one place by @PathGao in #49
  • Google no longer gets the one user agent nobody else does by @PathGao in #50
  • One rule between Zoom Out and Inspect Element, not two by @PathGao in #51
  • The URL field names the placeholders it accepts by @PathGao in #52
  • The update check, each website's links, and the strings the menu left by @PathGao in #53
  • The menu bar band stops re-encoding itself, and the timers admit some slack by @PathGao in #54
  • A page title, a thumbnail cache and what they each cost by @PathGao in #55
  • Three hand-rolled mechanisms give way to the API that was already there by @PathGao in #56
  • The panel reads the list once, and a region reads the same in both places by @PathGao in #57
  • What the menu left behind, and the scan that could not see it by @PathGao in #58
  • A website list that survives the update, and the documents that describe what shipped by @PathGao in #59
  • Per-display facts stop being kept in app-wide slots by @PathGao in #61
  • "Playlist" stops meaning rotation by @PathGao in #62
  • Key what a page remembers by website, not by address by @PathGao in #63
  • Websites become playlists, and a display picks one by @PathGao in #64
  • The swap load can see the flip it is waiting for by @PathGao in #65
  • The reload switch joins its own row, and the rule field says what it is for by @PathGao in #71
  • One key for Browsing Mode, and how long you hold it says which one you meant by @PathGao in #72
  • The panel's controls are the system's again by @PathGao in #73
  • A column says what its own display is doing by @PathGao in #66
  • Framing ends when the overlay leaves the window, whoever took it by @PathGao in #67
  • Advanced settings explains its two quietest rows, and offers the way back last by @PathGao in #69
  • The roadmap describes the tree after #66 to #69 by @PathGao in #70
  • The page's layout size is read off the window that imposes it by @PathGao in #68
  • main does not build: the failure line asks for a colour #73 removed by @PathGao in #74
  • Thumbnails of websites that are gone are collected like their stores by @PathGao in #75
  • The panel photographs six times a second, and stops when nobody can see it by @PathGao in #76
  • The Settings reload interval reaches a page, and a timed reload keeps its process by @PathGao in #77
  • Two catalogue entries nothing shows, and the check that worked around them by @PathGao in #79
  • Two decisions the roadmap did not have: sync has a route, E22 does not by @PathGao in #81
  • The roadmap catches up with the four fixes that landed without it by @PathGao in #82
  • The panel is a chooser, and two W entries were never owed by @PathGao in #83
  • Six lines nothing could reach, and the comment that would have put one back by @PathGao in #84
  • Three places doing the same work twice by @PathGao in #85
  • An icon fetch cannot strand its web view any more by @PathGao in #86
  • Four things nothing could reach, and a retention that argued for the wrong one by @PathGao in #87
  • One implementation is not a protocol by @PathGao in #88
  • Every way in explains Browsing Mode, and the way out stops pretending to by @PathGao in #89
  • Five things a reader has to rule out, and one of them was a no-op by @PathGao in #90
  • The half of the error plumbing that takes a window was dead on arrival by @PathGao in #91
  • Three things holding what nothing needed by @PathGao in #92
  • Three comments that outlived their premise by @PathGao in #93
  • Two things done for nothing, one of which could hang the app by @PathGao in #94
  • The legacy list is a list of websites, and the order is written once by @PathGao in #95
  • The cheap way of finding an icon is tried first, and a miss is paid for once by @PathGao in #96
  • State that belongs to one navigation stops outliving it by @PathGao in #97
  • The name is on the card once, and it slides because it is too long by @PathGao in #98
  • A Bilibili row wears the video's cover, not the site's logo by @PathGao in #100
  • Random becomes shuffle, and the playlist chooser stops committing by @PathGao in #99
  • The redirect triangle says what it is instead of doing something by @PathGao in #101
  • The tick means what it says, and Restore only resets settings by @PathGao in #102
  • Arriving at Random deals a new order by @PathGao in #103
  • A cancelled load stops before it starts, and the string guard stops matching inside identifiers by @PathGao in #104
  • A toggle that could not work is gone by @PathGao in #105
  • Crop and Mute wait for the page to be the website they write to by @PathGao in #106
  • The menu bar colour keeps up, and a switch stops eating the number beside it by @PathGao in #108
  • The menu bar icon follows every display, not the app-wide switch by @PathGao in #107
  • The redirect notice is gone, and so is the record behind it by @PathGao in #109
  • The gallery's empty state fills the frame the list filled by @PathGao in #110
  • Two readings stop describing a page that is not on any screen by @PathGao in #111
  • The gallery asks the list what is already installed by @PathGao in #112
  • Disable survives a quit, the way switching one display off already did by @PathGao in #113
  • The panel preview is early on purpose, and says so by @PathGao in #114
  • The desktop waits for the page to be drawn, not for the load to end by @PathGao in #115
  • Resolving which display to act on stops creating one by @PathGao in #116
  • No data migration is left in the app by @PathGao in #117
  • The General pane, the first launch, and every string the app shows by @PathGao in #118
  • Refresh Nifro icon and project docs by @PathGao in #119
  • Show the new icon in the README by @PathGao in #120
  • Highlight active panel controls by @PathGao in #121
  • Redraw the menu bar icon by @PathGao in #122
  • Refine bilingual UI copy by @PathGao in #123
  • A menu bar icon macOS will not draw no longer quits the app by @PathGao in #124
  • A page that will not load no longer strands you by @PathGao in #126
  • The version number is 0.9.0, not the 8.8.8 a copy change left behind by @PathGao in #127

Full Changelog: v0.1.3...v0.9.0