Skip to content

Releases: Borys520/SplitScreener

SplitScreener 1.0.1

Choose a tag to compare

@Borys520 Borys520 released this 01 Sep 07:52

Automatic update checking, and a login item that waits to be asked.

New: it can tell you when there's a new version

SplitScreener now checks for updates — once a day, or on demand from Check for Updates… in the
menu. It shows you the release notes and waits. Nothing installs itself, and nothing can be made
to: the bundle ships with SUAllowsAutomaticUpdates set to false, which removes silent
download-and-install from the updater rather than merely defaulting it off. Every download is
verified against an EdDSA signature built into the copy you are already running, on top of the
Developer ID signature and Apple's notarization.

Check Automatically, next to it in the menu, switches the daily check off in one click. It is
remembered, and it survives updates.

Built on Sparkle 2.9.6.

🔒 Read this before you update: the privacy policy changed

Through 1.0.0 this app made no network connections at all, and
PRIVACY.md said so. That is no
longer true
, because an update check is a network connection. It is one HTTPS GET of a static XML
file in this repository:

https://raw.githubusercontent.com/Borys520/SplitScreener/main/appcast.xml

No query string. No installation identifier, random or stable. No hardware UUID, macOS version, CPU,
memory, model or language. No cookies, and nothing about how you use the app. Sparkle's "system
profile" would append most of that list to the URL — it is off in the bundle and off again in code,
so the request has no query string regardless of what the setting says. GitHub receives it and can
see what any web server sees: IP, User-Agent, URL, timestamp. I get no analytics and no way to count
or identify who fetched it.

The old verification recipe had to go with it. PRIVACY.md used to tell you to run otool -L and
nm -u and see zero networking symbols. Those now print matches, because an app that fetches a file
links Apple's networking frameworks. Leaving them in place as if they still printed nothing would be
the easiest kind of lie to tell, so they are replaced with commands that read the feed URL straight
out of the bundle you downloaded, plus nettop so you can watch it yourself.
The full policy is here.

🐛 Fixed: launch at login was switched on without being asked

The 1.0.0 build registered SplitScreener as a login item automatically, on the first run — no
question, no click, and the only notice was a line of welcome text telling you it had already
happened. That was wrong. A login item is an entry in your System Settings, and an app has no
business putting one there on its own initiative.

There is now no code path in the app that can register a login item except a switch you flip
yourself: on the welcome screen the first time you launch it, and in Settings ▸ Startup afterwards.
Both default to off.

If 1.0.0 did it to you, 1.0.1 does not undo it — quietly removing a login item is the same
mistake in the other direction. Settings ▸ Startup now reads the real state back out of macOS and
says in words whether SplitScreener is registered, so you can see it and switch it off yourself.

Also

  • Settings ▸ Startup offers Open Login Items… always, not only when macOS has blocked the request.
  • The bundle contains nested code for the first time: Sparkle.framework, re-signed with the same
    Developer ID certificate and trimmed of the two XPC services that exist only for sandboxed hosts.
    The disk image is 3.6 MB, up from 2.6 MB; installed, the app is 6.7 MB.

Install

Open the DMG and drag SplitScreener to Applications. Do not run it from the DMG or from
~/Downloads
— macOS runs quarantined apps from a randomised read-only path and the Accessibility
grant will not stick. Then: System Settings ▸ Privacy & Security ▸ Accessibility ▸ + ▸
SplitScreener ▸ on. No need to relaunch; the app notices within a second.

Or:

brew tap borys520/tap && brew install --cask splitscreener

Already on 1.0.0? 1.0.0 has no updater, so it cannot fetch this release itself. Download the DMG
below, or run brew upgrade --cask splitscreener. From 1.0.1 onward the app can do it for you.

Requires macOS 14 Sonoma or later. Universal — Apple silicon and Intel. Signed with a Developer ID
certificate and notarized by Apple.

sha256 363101281813df1a8b7b57db0fdefa8364c0f41fdf30ef216887476972744389

SplitScreener 1.0.0

Choose a tag to compare

@Borys520 Borys520 released this 31 Aug 20:25

First release.

• New Terminal Grid — open 4, 6, 8, 9, 12 or 16 Terminal windows in your current Finder folder and tile them in the same click. Each menu row shows the grid and the exact window size, computed for the display it will land on.
• Nine grids, drawn as miniature screens at your display's real aspect ratio, from 2x1 up to 4x4.
• Control-Option-Return tiles the frontmost app into a best-fit grid without activating SplitScreener.
• Control-Option-Z restores every window to where it was. Re-tiling something that would not move keeps the undo intact.
• Multi-display, with the target display selectable or picked from wherever the pointer is.
• Honest reporting: windows stranded on another Space are counted, cramped cells are flagged in orange before you commit, and Stage Manager is detected before anything is opened.
• Launch at login, off by default, one checkbox to switch on.

Requires macOS 14 or later. Universal binary. Signed with a Developer ID certificate and notarized
by Apple.

INSTALL
Open the DMG and drag SplitScreener to Applications. Do not run it from the DMG or from ~/Downloads
— macOS runs quarantined apps from a randomised read-only path, and the Accessibility grant will not
stick. Then: System Settings ▸ Privacy & Security ▸ Accessibility ▸ + ▸ SplitScreener ▸ on. Do not
relaunch; the app notices within a second.

Or: brew tap borys520/tap && brew install --cask splitscreener

Free to use, no account, no telemetry, no network code. One permission.