Skip to content

Releases: taufiqxr/McAwake

McAwake 2.0.0

Choose a tag to compare

@taufiqxr taufiqxr released this 26 Jul 05:48

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.auto daemon: 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.log is 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 with invalid option. README, the landing
    page, and the tap's cask caveats now use
    xattr -dr com.apple.quarantine as 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

Choose a tag to compare

@taufiqxr taufiqxr released this 26 Jul 05:11

Added

  • .pkg installer 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 by build.sh --release; the
    release script attaches both zip and pkg.

Fixed

  • The Claude submenu listed only some open sessions. Detection matched
    ps -o comm against the exact string claude, but comm holds whatever
    the process was invoked as β€” an absolute path (~/.local/bin/claude)
    for most sessions, bare claude only 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 to ps -o ucomm: Claude Code rewrites its
    process title, so ucomm reports the version string.
  • build.sh --install could not replace a pkg-installed copy. The
    installer places the app as root:wheel, so the unprivileged rm -rf
    failed β€” but only after pkill had already quit the running app,
    leaving the stale binary in /Applications and an empty menu bar. The
    file operations now escalate with sudo when the existing install
    isn't writable; open stays 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.sh now strips all xattrs before signing; the
    v1.11.1 zip was re-uploaded clean.

NightOwl 1.11.1

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:34

Fixed

  • Detection froze (Claude section vanished) when ps output 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-sessions hung, and this machine's ps output
    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

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:26

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

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:22

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

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:16

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>.json files β€” a direct
    pid→name mapping, read locally, nothing leaves the machine.

NightOwl 1.8.1

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:12

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

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:08

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 (a tell application to 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 full lsof port scan plus one lsof per 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-session lsof calls collapsed into one.

NightOwl 1.7.0

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 16:00

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:
    interactive claude CLI processes (real tty; background helpers
    filtered), working directory via lsof. The section hides entirely
    when no sessions are running. --print-claude-sessions CLI flag for
    verification.

NightOwl 1.6.0

Choose a tag to compare

@taufiqxr taufiqxr released this 19 Jul 15:57

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.