# Changelog

<!--
  Lifecycle: WRITE user-facing notes in "## [Unreleased]" before releasing —
  that prose is exactly what ships to the website and the in-app update dialog.
  Scripts/release.sh promotes it to the released "## [X.Y.Z]" section, tags
  vX.Y.Z, pushes, and publishes it to the Sparkle appcast and to
  https://gethammock.app/changelog. If you leave Unreleased empty it falls back
  to raw commit subjects (and warns) — so internal/backend commits only leak
  when you forget to curate.
-->

All notable changes to Hammock, newest first. Format based on
[Keep a Changelog](https://keepachangelog.com); the project follows
[Semantic Versioning](https://semver.org). This file is the single source of
release notes: `Scripts/release.sh` assembles the released version's section
and embeds it in the Sparkle appcast. Curate `## [Unreleased]` with what users
should see — it replaces the commit list entirely.

## [Unreleased]

## [1.2.6] — 2026-07-28

### Added
- The diagnostics log now records your Mac's model, chip, memory and displays, every feature going on or off (and why it isn't running when it should be), what each feature was asked to do, and whether the app quit cleanly. Clipboard and snippet contents are never written to it. It keeps about 24 hours of history, and the build and machine lines always stay at the top even after it rolls.
- Two settings profiles. Profile 1 is what you already have; Profile 2 starts empty, like a fresh install. Switch in General or with r⌘ r⌥ 1 and 2 — every feature and every option switches with it. Backups read and write whichever profile you're on. If you never touch it, nothing changes.

### Changed
- The first-run “Start here” card is gone; a proper introduction is on the way.

### Fixed
- A break screen could leave an invisible full-screen blur behind on every display, which made the whole Mac crawl until Hammock was quit. It is torn down properly now, and the blur stops costing anything the moment the break ends.
- Pressing Esc twice always leaves a break now, including in the first seconds.
- The break screen no longer lets keystrokes through to whatever is behind it — you could type blindly into a document you couldn't see. Force Quit still works, and releases the keyboard.
- Focus dims a second window of the same app: opening two VS Code windows used to leave both lit, because the dimming worked per app rather than per window.
- Switching apps dims instantly again. The window you just left kept its brightness for a moment before catching up.
- Typing in a browser's address bar no longer dims the window you're typing in. The autocomplete list is a window of its own that opens in front, and Focus was treating it as the window you were working in.
- A newly launched app takes the light about twice as fast (measured 565 ms → 267 ms): Focus now keeps looking while an app is still starting up, instead of waiting for it to answer.
- Key hints appear a touch sooner — the app icons on the r⌘ row are no longer looked up from disk on every hold.
- Hammock no longer asks for access to your Desktop folder unless you've turned on stashing screenshots to the Shelf. Opening Settings could raise that request on its own, for a feature that was switched off.
- Opening Settings with r⌘ r⌥ ~ works from a full-screen app. The window opened on whichever desktop it was last used on, so from full screen the shortcut looked dead.
- About no longer says Notifications are granted before it has actually checked.
- Settings now says up front that the r⌘ r⌥ shortcuts need Accessibility, and lets you grant it there. On a fresh install every one of them — including r⌘ r⌥ ~ to open Settings — did nothing at all, and the only way to find out why was to switch on a feature that happened to need the same permission.

## [1.2.5] — 2026-07-26

### Added
- The open shelf answers **S** to share, **C** to copy and **Z** to zip, with each key shown on its button — and ⌫ still clears it.
- **Shelf → Remove on drag out**: dragging a file out of the shelf takes it with it, instead of leaving a copy behind. Off by default, and it only removes once something has actually accepted the drop.
- **Settings → General → Diagnostics**: switch on detailed logging when something misbehaves, then reveal the log in Finder and send it over. Off by default, never leaves your Mac, and crashes are recorded there even with the switch off.

### Changed
- The shelf is now only as wide as it needs to be — it grows with the number of files up to six, then scrolls — and its buttons move into two columns once Zip appears, so they stop crowding each other.

### Fixed
- The "Remove N files?" confirmation no longer prints over the file names: the shelf grows a band along the bottom to hold it.
- A drag heading for the shelf now opens it from ~40 pt away on any side, instead of only once the pointer reaches the notch — so you needn't aim at the very top of the screen, where macOS itself opens Mission Control.
- While you drag over the open shelf, its files step aside for a clear "Drop to add" area — it highlights under the pointer like Convert and AirDrop, and the three sit in one evenly spaced row.
- Bigger, better-spaced shelf action buttons, with their shortcut keycaps moved off the icons instead of sitting on them.
- A drag that opened the shelf on its way past now closes it again when it moves away.
- The shelf's two button columns sit together instead of drifting apart, and opening the shelf never makes it narrower than the collapsed bridge it grew from.
- Breaks now honour the excluded-apps list even with Smart deferral switched off — the two were entangled, so turning Smart deferral off silently disabled your exclusions and the pause screen appeared over the app you had excluded.
- An excluded app you switch to *during* the countdown now defers the break too, instead of only counting if you were already there a minute earlier.
- Shelf file previews no longer blink back to plain cards while you move the pointer, and the ✕ on a card stops flickering when the pointer crosses the top edge of a row.

## [1.2.4] — 2026-07-26

### Changed
- The snippet picker has one shortcut instead of two: **r⌘ :**. It now shows up on the r⌘ hint row itself — when your bound apps leave a slot free, the last tile is `:` — and r⌘ r⌥ N is gone.

### Fixed
- Focus no longer leaves the whole screen dimmed when the active app has no windows left: close Finder's last window, close a document, minimize or hide an app, and the app you can actually see stays bright.
- Focus follows the Settings window properly — opening it dims the app behind, closing it lights that app back up.
- Focus no longer flickers toward the next app and then dims everything when you hide the app you were in.
- In the open shelf, ⌫ with nothing selected now selects everything and clears the shelf instead of doing nothing.
- A licence no longer risks lapsing on a Mac left running for two weeks without a restart — Hammock now re-checks the licence when the Mac wakes, not only at launch.

## [1.2.3] — 2026-07-26

### Added
- Settings backup now includes your saved snippets, and saves to a file you choose (import it back, or drop the file on the pane).
- A "Start here" section in General for first-time setup.

### Changed
- The r⌘ r⌥ feature shortcuts, the snippet picker (r⌘ :) and OCR now work whether or not Jump is on — they're an app-wide layer, listed under General.
- Jump's desktop jump (r⌘ + a number) follows Swipe: instant when Swipe is on, the normal macOS slide when it's off.
- A clarity pass across Settings: every switch reflects what the app is actually doing, permission prompts lead each pane and appear only when a permission is missing, Snap positions are grouped and labelled, and the stand-in notch on notchless Macs is narrower.

### Fixed
- A licence now stays active on all three of its Macs at once — activating a new Mac no longer signs another out.
- Holding the right-⌥ key no longer showed non-working "choose window" hints when Jump was off.
- The feature shortcuts no longer swallowed system shortcuts such as ⌘⌥I.
- Focus now dims correctly behind the Settings window.
- Smoother notch open and close animation.

## [1.2.2] — 2026-07-25

### Added
- The notch HUD — hints, chips and the Shelf — now works on Macs without a physical notch (Mac mini, iMac, older Airs) by drawing a stand-in over the middle of the menu bar.

### Changed
- Settings now show which features are on — a dot in the sidebar and the menu-bar icon — a "How it works" on every feature, and the licence-key field shows the expected format.
- App pickers can choose any installed app, not only ones already running.

### Fixed
- Auto-Quit no longer quits Finder, plus several Focus dimming fixes.

## [1.2.1] — 2026-07-24

### Fixed
- Accept the exact licence-key format the store issues.
- Never quit an app that hasn't yet drawn a window.

## [1.2.0] — 2026-07-24

### Changed
- The right-⌥ window hints show each window's short name next to its key.
- Clipboard: exclude specific apps from ⌘V interception, with suggestions for remote-desktop and VM apps.

### Fixed
- Sweep and Auto-Quit never quit an app that still has a window open on any Space.
- The Shelf closes after you drag a file out, so it no longer captures keystrokes.
- The menu-bar icon is never dimmed, and shows as active when only paid features are on.
- The notch never draws two overlapping items at once.

## [1.1.0] — 2026-07-24

New since Headroom 1.0 (the rename to Hammock plus the feature batch):

- OCR now decodes barcodes and QR codes, not only text.
- Focus dimming is per display — dim only the screens you choose.
- Breaks gained a manual snooze and per-app excludes that defer a break while an excluded app is frontmost.
- Clipboard added a Pins tab: pin an item so it never ages out, and drag pins into a manual order.
- The now-playing notch chip is a constant bar with an audio-wave animation, hover transport controls, and system media-key hotkeys (r⌘ , / . / to go previous, play-pause, next).
- Self-updates via Sparkle, checked over the gethammock.app appcast.
- Licensing: a 5-day full trial, a permanent free tier (Snap, Jump, Color Picker), and license activation in Settings.
- About shows the running version, build, and git commit.

## [1.0.1] - 2026-07-23

Pipeline-test release, not a feature release: a second tagged build used to confirm the end-to-end release script (build, EdDSA-sign, GitHub release, appcast append) works from a clean state.

## [1.0.0] - 2026-07-23

Pipeline-test release, not a feature release: the first tagged build, used to validate versioning, the appcast feed, and Sparkle's update path end to end.
