From b5fc40612923042e67defb22e11ac1b630c36db4 Mon Sep 17 00:00:00 2001 From: Mac Studio M4MAX DMonte Date: Wed, 26 Aug 2026 17:52:18 +0530 Subject: [PATCH 1/2] Release 0.16.0: File Shelf, plus features across seven tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps VERSION to 0.16.0 and closes the changelog section for the release: File Shelf as a new tool, support-file removal in Uninstall Apps, next-display moves and an arrange undo in Window Manager, per-directory listing in Clean Drive, acting on scan results in Disk Usage Analyzer, a global OCR shortcut in Grab Text, sparklines and a top-process list in System Monitor, saved device profiles in Audio Switcher, and the store-file and threading hardening that followed. Moves the File Shelf entry out of the 0.15.0 section, where 5f2b0b6 filed it. File Shelf was merged after v0.15.0 was tagged, so the entry claimed a tool that is not in the build users already have, and it would have gone missing from the release that actually carries it — the one place someone would look for it. The 0.15.0 section is now byte-identical to the tag again, and File Shelf leads 0.16.0's Added list where the other new tools sit in their own releases. Sparkle notes for the release are the usual short curated file rather than the changelog section, which is 60 lines here — well past the point where the update window grows taller than the screen and puts the Update button out of reach. Eight tools in one release is more to cover than 0.15.0 had, so the notes lead with File Shelf and reduce the rest to one line apiece. Nothing else in the tree carries the version: the Info.plist strings are stamped from VERSION by package_app.sh at build time, and a sweep for a hardcoded 0.15.0 outside the changelog found none. --- CHANGELOG.md | 35 +++++++++++++++++--------------- Packaging/ReleaseNotes/0.16.0.md | 26 ++++++++++++++++++++++++ VERSION | 2 +- 3 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 Packaging/ReleaseNotes/0.16.0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 00ff0e9..1c8498b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ adheres to [Semantic Versioning](https://semver.org) and the ## [Unreleased] +## [0.16.0] — 2026-08-26 + ### Fixed - A **store file that no longer decodes is moved aside instead of being silently overwritten.** File Shelf, Snippets and Clipboard History all treated an @@ -35,6 +37,21 @@ adheres to [Semantic Versioning](https://semver.org) and the already does. ### Added +- **File Shelf**, a new menu bar tool: a drag‑and‑drop staging area for moving + files between apps and Spaces without keeping a Finder window open. Drop + files onto the menu bar icon or into the popover to park them, then drag them + straight back out into any app — the drag hands over the real file, so the + receiving app gets the original rather than a copy. Each row also offers + Reveal in Finder, Copy Path and Remove, and the menu bar icon carries a count + of what you are currently carrying. + + Shelving never copies bytes: an entry is a security‑scoped bookmark to the + original file, so parking a 40 GB video costs the same as parking a note, the + shelf survives a relaunch, and an entry keeps working after the file is + renamed or moved. A file that has been deleted, or that lives on a disk you + have unplugged, stays on the shelf and is shown as unavailable rather than + quietly disappearing — the shelf's job is to tell you where the thing you + parked went, not to pretend you never parked it. - **Audio Switcher** now saves device profiles: name the input/output pair you are on — "Headset", "Desk", "Meeting" — and switch back to it with one click. Profiles remember devices by their CoreAudio UID rather than the numeric @@ -106,21 +123,6 @@ adheres to [Semantic Versioning](https://semver.org) and the alone — and wins outright where there are fewer performance cores. The GPU option appears only when this ffmpeg actually has the encoder, and a stored preference for it falls back to the CPU on a machine that no longer offers it. -- **File Shelf**, a new menu bar tool: a drag‑and‑drop staging area for moving - files between apps and Spaces without keeping a Finder window open. Drop - files onto the menu bar icon or into the popover to park them, then drag them - straight back out into any app — the drag hands over the real file, so the - receiving app gets the original rather than a copy. Each row also offers - Reveal in Finder, Copy Path and Remove, and the menu bar icon carries a count - of what you are currently carrying. - - Shelving never copies bytes: an entry is a security‑scoped bookmark to the - original file, so parking a 40 GB video costs the same as parking a note, the - shelf survives a relaunch, and an entry keeps working after the file is - renamed or moved. A file that has been deleted, or that lives on a disk you - have unplugged, stays on the shelf and is shown as unavailable rather than - quietly disappearing — the shelf's job is to tell you where the thing you - parked went, not to pretend you never parked it. ## [0.14.0] — 2026-07-21 @@ -585,7 +587,8 @@ Switcher, Focus Timer, Calendar, Keep Awake, Maintenance, and Dev Tools. - The menu bar tool box shell and the first tool, System Monitor (live CPU, memory, disk, network, and temperature metrics). -[Unreleased]: https://github.com/havokentity/MacTools/compare/v0.15.0...HEAD +[Unreleased]: https://github.com/havokentity/MacTools/compare/v0.16.0...HEAD +[0.16.0]: https://github.com/havokentity/MacTools/releases/tag/v0.16.0 [0.15.0]: https://github.com/havokentity/MacTools/releases/tag/v0.15.0 [0.14.0]: https://github.com/havokentity/MacTools/releases/tag/v0.14.0 [0.13.0]: https://github.com/havokentity/MacTools/releases/tag/v0.13.0 diff --git a/Packaging/ReleaseNotes/0.16.0.md b/Packaging/ReleaseNotes/0.16.0.md new file mode 100644 index 0000000..9fc5072 --- /dev/null +++ b/Packaging/ReleaseNotes/0.16.0.md @@ -0,0 +1,26 @@ +### New tool + +**File Shelf** — a drag‑and‑drop staging area in the menu bar. Drop files onto +the tray icon to park them, then drag them straight back out into any app. + +- Holds a bookmark rather than a copy, so parking a 40 GB video is instant and + the entry keeps working after the file is renamed or moved +- A file you deleted, or one on a disk you unplugged, is shown as unavailable + rather than quietly disappearing + +### Improvements + +- Uninstall Apps: also removes the support files an app leaves behind +- Window Manager: send a window to the next display, and undo the last arrange +- Disk Usage Analyzer: Reveal, Copy Path and Move to Trash straight from a scan +- Grab Text: press ⌃⌥G anywhere for instant OCR +- System Monitor: history sparklines and a top‑process list +- Audio Switcher: save an input/output pair as a named profile +- Clean Drive: developer junk listed directory by directory + +### Fixed + +A store file that no longer decodes is moved aside instead of being silently +overwritten, and File Shelf resolves its shelf off the main thread. + +[Full changelog](https://github.com/havokentity/MacTools/blob/main/CHANGELOG.md) diff --git a/VERSION b/VERSION index a551051..04a373e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.15.0 +0.16.0 From 1fb90a123c4dbca90079eea5edba0417957bda03 Mon Sep 17 00:00:00 2001 From: Mac Studio M4MAX DMonte Date: Wed, 26 Aug 2026 17:53:09 +0530 Subject: [PATCH 2/2] Docs: make the README's tool list match what ships MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The nine merges that landed today left the README describing a smaller, older tool box than the one in ToolboxCatalog. The headline count was one short: File Shelf brought the catalog to 27 tools while the opening line still said 26. The table itself listed all 27 but carried a 28th row — a stale duplicate of Dev Tools without JWT, reintroduced by the merge for PR #10 after the JWT commit had already corrected the original. Every catalog tool now appears exactly once, and no row names a tool the catalog does not have. Five descriptions had been overtaken by the features merged today and were understating the tool to the point of being wrong about what it can do: System Monitor's sparklines and top-process list, Clean Drive's per-directory developer junk, Disk Analyzer acting on a scanned row, Window Manager's next-display move and undo, and Audio Switcher's device profiles. Uninstall Apps and Grab Text needed nothing — the first already claimed the leftover sweep that only now exists, and the second had its shortcut added with the feature. Packaging was already consistent and is untouched: all 27 helpers in package_app.sh resolve to a Packaging/*Info.plist that exists, every plist but the main app's Info.plist is referenced, and each helper's CFBundleIdentifier matches its catalog entry. --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3894b31..cc61c80 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CI](https://github.com/havokentity/MacTools/actions/workflows/ci.yml/badge.svg)](https://github.com/havokentity/MacTools/actions/workflows/ci.yml) -A native macOS menu bar tool box — 26 fast, focused utilities in one lightweight Swift app, inspired by the convenience of Parallels Toolbox. +A native macOS menu bar tool box — 27 fast, focused utilities in one lightweight Swift app, inspired by the convenience of Parallels Toolbox. Open the tool box from the menu bar, search for what you need, and launch it. Each tool is a self-contained helper with its own polished SwiftUI interface; tools that run continuously (like System Monitor and Clipboard History) add their own menu bar item. @@ -22,10 +22,10 @@ The app updates itself automatically via [Sparkle](https://sparkle-project.org); | Tool | What it does | | --- | --- | -| **System Monitor** | Live menu bar CPU, memory, disk, network, and temperature metrics | +| **System Monitor** | Live menu bar CPU, memory, disk, network, and temperature metrics — last‑minute sparklines and the five busiest processes by CPU or memory | | **Clipboard History** | Searchable clipboard with text/image/file capture, pinning, and quick‑paste (⇧⌘V) | -| **Clean Drive** | Reclaim space by clearing caches, logs, and temp files — async, with a live freeing‑up gauge | -| **Disk Usage Analyzer** | Interactive treemap of what's eating your disk | +| **Clean Drive** | Reclaim space by clearing caches, logs, and temp files — async, with a live freeing‑up gauge; developer junk (DerivedData, node_modules, …) is listed directory by directory | +| **Disk Usage Analyzer** | Interactive treemap of what's eating your disk — reveal, copy the path, or trash any row from the results | | **Duplicate Finder** | Find and trash byte‑identical duplicate files | | **Uninstall Apps** | Remove apps and their leftover support files | | **Download Video** | Save videos from the web (bundled, checksum‑verified yt‑dlp) | @@ -34,8 +34,8 @@ The app updates itself automatically via [Sparkle](https://sparkle-project.org); | **Grab Text** | OCR any region of the screen straight to your clipboard, from a global shortcut (⌃⌥G) | | **QR Studio** | Generate QR codes and scan them from the screen | | **Color Picker** | System eyedropper with hex / RGB / HSL and a recent‑colors palette | -| **Window Manager** | Snap windows to halves, thirds, and corners with global shortcuts (⌃⌥ + arrows) | -| **Audio Switcher** | One‑click switching of the default input/output device | +| **Window Manager** | Snap windows to halves, thirds, and corners with global shortcuts (⌃⌥ + arrows), move them to the next display (⌃⌥⌘→), and undo the last arrange (⌃⌥⌫) | +| **Audio Switcher** | One‑click switching of the default input/output device, with named profiles that set both at once | | **Mic Control** | Mute your microphone system‑wide from the menu bar, with the tray icon showing at a glance whether you're live | | **Volume Mixer** | Per‑app volume sliders and per‑app output routing via CoreAudio process taps (macOS 14.2+) | | **Audio Router** | Virtual audio routing — install independent loopback cables for app‑to‑app audio, build mirror/aggregate devices with presets, and "listen" to any input through an output | @@ -45,7 +45,6 @@ The app updates itself automatically via [Sparkle](https://sparkle-project.org); | **Keep Awake** | Prevent sleep, optionally for a set duration | | **Maintenance** | Handy Finder/system toggles and cache/index refreshes | | **Dev Tools** | JSON, Base64, JWT, URL, hashing, UUID, timestamp, and case utilities | -| **Dev Tools** | JSON, Base64, URL, hashing, UUID, timestamp, and case utilities | | **Snippets** | A searchable library of reusable text — click one to paste it into the app you came from | | **Scratchpad** | Always‑there plain‑text notepad with named notes, autosave, and a live word count | | **Network Info** | Interface, local IPv4/IPv6, subnet, router, and DNS at a glance — click any value to copy; public IP only on request |