Skip to content

Releases

Put v0.2.8

Choose a tag to compare

@github-actions github-actions released this 04 Nov 01:12

[0.2.8] - 2026-11-04

Fixed

  • Release builds failed on the GitHub runner's Swift toolchain because the onboarding hotkey row used KeyboardShortcuts' main-actor description from a nonisolated context.

[0.2.7] - 2026-11-04

Added

  • Per-rule control over which triggers place a window. Automatic placement
    covers display changes, wake, app launch, Put's own launch and screen-config
    layout activation; Restore-all hotkey covers the restore-all hotkey and menu
    item. With both off the placement stays saved and only applies when you name
    the window: the active-window hotkey, the per-app menu actions, or a layout
    hotkey.
  • put:// URL commands for Raycast, Alfred, Shortcuts, Stream Deck and scripts: save-active, save-active-title, save-all, restore-active, restore-all, layout?name=… / layout?id=…, settings?tab=…. Off by default; enable in Settings → General → Automation.
  • Put learns a minimum window size when an app refuses to shrink to a rule's target, and asks for that size on later restores of that rule instead of drifting and retrying every time. Held in memory only.
  • Automatic restores (display change, wake, app launch, queued rules) wait while Mission Control, App Exposé or Show Desktop is open, then run once it closes. Hotkey and menu restores are unaffected.
  • Settings → Displays can save a display's current resolution and scaling, or every display's, into all combinations of the connected displays. This stops macOS switching resolution mid-wake when monitors come online at different times. Setups involving other displays are untouched, and backups go to ~/Library/Application Support/Put/display-backups.

Changed

  • KeyboardShortcuts 2.4.0 → 3.1.0 (macOS 27 compatibility, function-key shortcuts firing while a menu is open). Saved hotkeys carry over.
  • CI actions/checkout v6.0.2 → v7.0.1.
  • Screen-config layout triggers now match on display identity alone. The "Match arrangement exactly" toggle is gone: macOS assigns the built-in display a different offset relative to an external monitor on every replug, so a strict capture never matched again and the layout silently stayed on whatever was active before (often the single-display one, which then dragged every window onto the laptop screen). A match whose captured arrangement differs is logged at notice level under automation.triggers. Existing configs still load; the old field is ignored.
  • Onboarding now names the macOS 27 privacy pane, "Device Control and Data Access", where Put's permission lives (it was "Accessibility" on macOS 26).
  • PutAutomation declares its PutStorage dependency in Package.swift; the Swift 6.4 dependency scanner in Xcode 27 warned about the missing declaration.
  • The saved placement Restore radio (size and position / size only / display
    only) is now three independent toggles: size, position, display. That unlocks
    combinations the radio could not express, notably size on a target display
    (move the window across and resize it, keeping roughly where it sat) and a
    saved position without a saved size. Position implies display, so the display
    toggle is held on while position is on. Existing rules migrate to the
    equivalent toggles with no change in behaviour, and configs written by this
    build still open in an older one.
  • The rule preview only draws a window rect when the rule restores a saved
    position. A size-only rule used to draw one at the saved coordinates, which it
    never applies - the window stays where it stands.
  • An app launching no longer schedules a restore pass when the only rules
    matching it are disabled or opted out of automatic placement. The retry loop
    used to sleep and snapshot its way through the full backoff for a pass that
    could only ever report no-match.

v0.2.6

Choose a tag to compare

@sammcj sammcj released this 30 Jul 07:35

Initial public release