Releases: taufiqxr/McAwake
Releases Β· taufiqxr/McAwake
Release list
McAwake 2.0.0
Changed
- The app is now called McAwake (previously NightOwl). The old name
collided with a long-established, unrelated macOS app, which made the
project effectively unfindable by name. Everything the app does is
unchanged; this release is major only because upgrading is not
automatic β see below. The π¦ icon stays. - Renamed with it: the bundle (
McAwake.app), the bundle identifier
(com.mcawake.app), the LaunchDaemon (com.mcawake.auto), the daemon
script (/usr/local/bin/mcawake-auto.sh), the log
(/var/log/mcawake.log), the Homebrew cask
(brew install --cask taufiqxr/tap/mcawake), and the repository
(github.com/taufiqxr/McAwake).
Upgrading from NightOwl β read this
- Uninstall NightOwl first, using its
uninstall.sh(from the 1.x
source or the v1.12.0 release). McAwake cannot see or remove the
com.nightowl.autodaemon: the label no longer matches anything it
looks for. Left installed, that root daemon keeps enforcing its old
mode every 20 seconds and will silently fight every choice you make in
McAwake. - Because the bundle identifier changed, macOS treats McAwake as a new
app: your watched services are not carried over (they lived in the
old identifier's preferences domain), Start at Login re-registers, and
the notification permission is requested again. Re-add watches from the
Servers menu. - The old
/var/log/nightowl.logis left in place; delete it if you want
it gone.
Fixed
- Homebrew install docs told users to pass
--no-quarantine, which
Homebrew removed in 6.0 (deprecated in 5.0, no replacement) β the
command now fails outright withinvalid option. README, the landing
page, and the tap's cask caveats now use
xattr -dr com.apple.quarantineas a post-install step instead.
Note for whoever picks this up: Homebrew intends to
drop support for casks that fail Gatekeeper
on 2026-09-01, so the tap's usefulness is time-limited unless the app
gets notarized.
NightOwl 1.12.0
Added
.pkginstaller for non-developers (also attached retroactively to
the v1.11.1 release, install-verified on a real Mac): double-click β
standard macOS wizard β app in /Applications, auto-launched by a
postinstall running as the console user. Installer-placed files carry
no quarantine flag, so only the pkg needs the one right-click β Open β
the app itself launches clean. Built bybuild.sh --release; the
release script attaches both zip and pkg.
Fixed
- The Claude submenu listed only some open sessions. Detection matched
ps -o commagainst the exact stringclaude, but comm holds whatever
the process was invoked as β an absolute path (~/.local/bin/claude)
for most sessions, bareclaudeonly for those resolved via PATH. Both
forms occur on one machine, so sessions were dropped seemingly at
random (3 of 4 on the maintainer's Mac). Now matched on comm's
basename, which also tolerates install paths containing spaces.
Deliberately not switched tops -o ucomm: Claude Code rewrites its
process title, so ucomm reports the version string. build.sh --installcould not replace a pkg-installed copy. The
installer places the app asroot:wheel, so the unprivilegedrm -rf
failed β but only afterpkillhad already quit the running app,
leaving the stale binary in /Applications and an empty menu bar. The
file operations now escalate withsudowhen the existing install
isn't writable;openstays unprivileged so the app never runs as root.- Builds inside iCloud Drive/Dropbox folders stamped
com.apple.fileprovider.*xattrs onto the bundle β carried into
/Applications and release zips, and Spotlight can silently skip bundles
carrying them.build.shnow strips all xattrs before signing; the
v1.11.1 zip was re-uploaded clean.
NightOwl 1.11.1
Fixed
- Detection froze (Claude section vanished) when
psoutput crossed
64KB.shell()waited for the child to exit before reading its
output β a classic pipe-buffer deadlock, latent since 1.0.0, triggered
the day the machine's process list grew big enough. Output is now read
before waiting. Found live: the user's Claude submenu disappeared and
--print-claude-sessionshung, and this machine'spsoutput
measured 66,655 bytes against a 65,536-byte buffer. - A refresh already in flight silently dropped the open menu's update
callback β completions are now queued and all run when the refresh
lands. - The admin dialog now says "NightOwl wants to make changes" instead
of "osascript wants to make changes" β the privileged command runs
in-process via NSAppleScript rather than an osascript subprocess.
Functionally identical, far less alarming (a real user asked "what is
osascript" mid-password-prompt).
NightOwl 1.11.0
Changed
- Mode-aware menu bar icon (user feedback: switching to Smart Auto
didn't change the icon): π¦ Always Awake Β· π Smart Auto while plugged
in (awake because of power) Β· π€ can sleep (Normal mode, or Smart Auto
on battery) Β· πͺ« guard tripped Β·β οΈ still appended on trouble. The
tooltip names the mode and state. - Mode rows got their emoji back (π¦/π/π€) β compact labels, but
self-explaining and matching the menu bar icon language.
NightOwl 1.10.0
Changed
- Compact menu: labels are now terse β one status line ("π¦ Awake Β·
plugged in"), bare mode names, short actions ("Open :8899", "Copy
URL", "Jump to terminal", "Watch :8899" with a checkmark) β and every
explanation moved to hover tooltips. Same information, far less
reading. Mode descriptions, guard details, watch behavior, and full
URLs all live in the tooltips now.
NightOwl 1.9.0
Added
- Claude sessions show their given names: each session in the Claude
submenu is now labeled by its Claude Code session name (the one set
with/rename, or the auto-generated one) with the project folder in
parentheses β so multiple terminals in the same folder are finally
distinguishable. A β‘ prefix marks sessions that are actively working
right now; the submenu detail line adds tty and busy/idle. Source:
Claude Code's own~/.claude/sessions/<pid>.jsonfiles β a direct
pidβname mapping, read locally, nothing leaves the machine.
NightOwl 1.8.1
Fixed
- Menu stutter on open (reported live minutes after 1.8.0): the
background refresh rebuilt the open menu unconditionally when it
landed. The menu is now only rebuilt when the detected data actually
changed β and Claude sessions compare by pid/tty/cwd, deliberately
ignoring the running-time clock, which ticks every second and would
otherwise count as a "change" on every single open.
NightOwl 1.8.0
Added
- Jump to this terminal: each Claude session's submenu can now bring
its terminal window/tab to the front β Terminal.app and iTerm2 both
expose per-tab ttys to AppleScript, so NightOwl finds the tab owning
the session's tty and focuses it. Only already-running terminal apps
are scripted (atell applicationto a quit app would launch it).
First use triggers macOS's one-time "NightOwl wants to control
Terminal" automation prompt. Sessions hosted in other apps (VS Code
integrated terminals) get an honest "can't bring it forward" message.
Changed
- The Claude sessions item is now titled Claude (N).
Fixed
- 1β2 second menu-open lag (reported live, introduced in 1.7.0): the
menu was running a fulllsofport scan plus onelsofper Claude
session synchronously before it could draw. The menu now opens
instantly from cached data and refreshes itself in place moments later;
detection runs off the main thread everywhere (including the 60s watch
cycle), and the per-sessionlsofcalls collapsed into one.
NightOwl 1.7.0
Added
- Claude terminals submenu: lists every open Claude Code terminal
session, labeled by the project folder it's working in (plus its tty),
with a submenu showing the full path, PID, and running time, and
Reveal folder in Finder / Copy folder path actions. Detection:
interactiveclaudeCLI processes (real tty; background helpers
filtered), working directory vialsof. The section hides entirely
when no sessions are running.--print-claude-sessionsCLI flag for
verification.
NightOwl 1.6.0
Changed
- Services collapsed into one "Servers (N)" item β hover to expand.
The first click on the owl now shows a clean menu: status, modes,
Servers, settings. The top-level "Servers" title carries aβ οΈ badge
whenever a watched service or tunnel is down, so trouble is still
visible without expanding; everything inside (per-service submenus,
Open/Copy URL, watch toggles, DOWN entries) is unchanged.