Skip to content

Tatami

v1.3.3 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

aerospace bsp composable-architecture flashspace macos menu-bar
+8 more
productivity swift swiftui tca tiling-window-manager window-manager workspace-manager yabai

Affected surfaces

auth

ReleasePort's take

Light signal
editorial:auto 6d

`[[floatingApps]]` in `config.toml` is now `[[sharedApps]]`; migration runs automatically. Floating windows require Screen Recording permission to stay on top.

Why it matters: A config rename (ID 57963) triggers automatic migration, preventing breakage; new permission gate (ID 57964) blocks floating‑window overlays without explicit consent.

Summary

AI summary

Updates New since 1.3.0, Install / Update, and ⚠️ Breaking Changes across a mixed release.

Changes in this release

Security High

Floating windows now require Screen Recording permission; without it they won't stay on top.

Floating windows now require Screen Recording permission; without it they won't stay on top.

Source: llm_adapter@2026-06-12

Confidence: high

Breaking High

`[[floatingApps]]` renamed to `[[sharedApps]]`; configs migrate automatically.

`[[floatingApps]]` renamed to `[[sharedApps]]`; configs migrate automatically.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Low

Floating windows can stay above tiles using ScreenCaptureKit mirrors without disabling SIP.

Floating windows can stay above tiles using ScreenCaptureKit mirrors without disabling SIP.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Low

Shared Apps editor added in Workspaces sidebar for managing shared apps and their Float toggle.

Shared Apps editor added in Workspaces sidebar for managing shared apps and their Float toggle.

Source: llm_adapter@2026-06-12

Confidence: high

Feature Low

HUD now appears on the display where the cursor is located.

HUD now appears on the display where the cursor is located.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Feature Low

Richer diagnostics available via Debug logging toggle, including hotkey receipt and gesture recognition details.

Richer diagnostics available via Debug logging toggle, including hotkey receipt and gesture recognition details.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Feature Low

Per-action HUD overlays for floating changes, app membership, tiling pause, fullscreen zoom, and balance are toggleable in Settings → Appearance → Overlay.

Per-action HUD overlays for floating changes, app membership, tiling pause, fullscreen zoom, and balance are toggleable in Settings → Appearance → Overlay.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Feature Low

"What's New" dialog shown on first launch after an update; full changelog accessible via About → View Changelog.

"What's New" dialog shown on first launch after an update; full changelog accessible via About → View Changelog.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Feature Low

Back to recent workspace when the active one becomes empty (off by default).

Back to recent workspace when the active one becomes empty (off by default).

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Feature Low

UI warnings and menu‑bar ⚠️ indicator surface internal failures such as broken config, unreadable layouts, CLI server start failure, unavailable floating mirrors, or failed Launch‑at‑Login registration.

UI warnings and menu‑bar ⚠️ indicator surface internal failures such as broken config, unreadable layouts, CLI server start failure, unavailable floating mirrors, or failed Launch‑at‑Login registration.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Performance Medium

Workspace switching is snappier via cached window identities and superseding in‑flight activations.

Workspace switching is snappier via cached window identities and superseding in‑flight activations.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Tatami no longer asks for Input Monitoring; uses Accessibility permission only.

Tatami no longer asks for Input Monitoring; uses Accessibility permission only.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Switching to an empty workspace no longer bounces back to the previous one.

Switching to an empty workspace no longer bounces back to the previous one.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Apps registered to a workspace and in Shared Apps no longer tile twice.

Apps registered to a workspace and in Shared Apps no longer tile twice.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Busy apps no longer disappear during tiling passes; last‑known windows are retained.

Busy apps no longer disappear during tiling passes; last‑known windows are retained.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Medium

Corrupt `config.toml` no longer wipes user configuration; previous settings are preserved.

Corrupt `config.toml` no longer wipes user configuration; previous settings are preserved.

Source: llm_adapter@2026-06-12

Confidence: high

Bugfix Low

Floating mirrors now stop recording correctly, preventing lingering ScreenCaptureKit streams.

Floating mirrors now stop recording correctly, preventing lingering ScreenCaptureKit streams.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Bugfix Low

Electron window event subscriptions retry on failure, eliminating phantom tiles.

Electron window event subscriptions retry on failure, eliminating phantom tiles.

Source: granite4.1:30b@2026-06-12-audit

Confidence: low

Full changelog

A patch release — the Input Monitoring prompt is gone, switching to an
empty workspace no longer bounces back, and the HUD shows up on the display
you're actually looking at. Updating from an older version? The 1.3.2 (and
1.3.0–1.3.1) notes included below apply to you too.

Improvements

  • The workspace HUD shows on the display your cursor is on — it used to follow the key window, which after a switch could be a different monitor than the one you were looking at.
  • Richer diagnostics behind the Debug logging toggle: hotkey receipt, gesture recognition (including why a swipe didn't fire), floating-mirror lifecycle, show/hide summaries, BSP operations, and drag commits now all land in tatami.log.

Fixes

  • Tatami no longer asks for Input Monitoring. Its event taps are now gated by the Accessibility permission alone, so the "would like to receive keystrokes from any application" dialog is gone — and a previously denied Input Monitoring entry no longer breaks focus-follows-mouse and swipe gestures. If Tatami still appears under Privacy & Security → Input Monitoring from an older version, you can remove the entry with "−".
  • Switching to a workspace whose apps aren't running no longer bounces you back. With nothing to focus, hiding the outgoing windows let macOS resurrect the previously active app — and follow-app-focus would chase it straight back to its workspace. An empty workspace now lands on an empty desktop and stays there.
  • An app that is both registered to a workspace and in Shared Apps no longer tiles twice in that workspace's layout.

Included from 1.3.2, for everyone updating from 1.3.1 or earlier:

Improvements (1.3.2)

  • Snappier workspace switching. Activations now read window identities from a cache instead of querying every window over Accessibility on the hot path, and a switch that arrives mid-activation supersedes the one still in flight — so rapid next/previous presses advance past a slow-to-settle workspace instead of stalling on it.
  • A busy app no longer disappears. When an app is too loaded to answer an Accessibility query in time, Tatami keeps its last-known windows instead of reading the timeout as "no windows" — so a momentarily-busy app no longer drops out of its tile, floating mirror, or marker dot. A single hung app can also no longer freeze the main thread for several seconds during a tiling pass.

Fixes (1.3.2)

  • Floating mirrors could keep recording after they should have stopped — several races left ScreenCaptureKit streams (and the screen-recording indicator) running longer than intended; capture now starts and stops in a strict order.
  • Freshly-launched Electron windows sometimes missed their resize/close events when the first attempt to observe them failed; those subscriptions now retry like the rest, so a phantom tile no longer lingers.
  • A corrupt config.toml no longer wipes your setup — a broken top-level section (profiles, shared apps, settings) now keeps your previous config instead of resetting it (which the next write would have made permanent, taking your workspaces with it), and an unparsable settings field is surfaced instead of silently ignored.
  • "Relaunch" no longer turns into a plain quit when the relauncher fails to start — Tatami stays running and logs the failure.

Updating from 1.2.x? Everything in 1.3.0–1.3.1 applies to you too:

⚠️ Breaking Changes (since 1.3.0)

  • [[floatingApps]] is now [[sharedApps]] — configs migrate automatically on first launch: each floating entry becomes a shared app with floating = true. Shared apps are part of every workspace — tiled into each layout by default, or floating everywhere. Manage them in Workspaces → Shared Apps; dotfiles that template the config should switch to the new key.
  • Floating windows now need the Screen Recording permission — they stay above the tiles via ScreenCaptureKit mirrors, and without the grant they won't stay on top. Grant it in Settings → General → Permissions, then relaunch.

New since 1.3.0

  • Floating windows that stay above the tiles — without disabling SIP. Mark any app as floating per workspace (the Float toggle next to Auto-open, or the toggleFloating hotkey): its windows stay untiled and are kept on top by mirroring them onto Tatami-owned ScreenCaptureKit panels. Reach for a floating window and the real one is handed back to you; while a floating app has focus the mirrors get out of the way. Multiple floating windows stack by focus recency.
  • Shared Apps editor in the Workspaces sidebar — add/remove shared apps and flip their Float toggle, presented like a special workspace.
  • Settings reorganized into a System Settings-style sidebar (General, Tiling, Focus & Mouse, Workspaces, Shortcuts, Appearance), with a Screen Recording row under Permissions.
  • Shared hotkeystoggleSharedFloating floats the focused app everywhere, and toggleAppInSharedApps adds/removes the focused app in Shared Apps.
  • Per-action HUD — floating changes, app membership, tiling pause, fullscreen zoom, and balance now show a brief overlay, each individually toggleable in Settings → Appearance → Overlay.
  • What's New on first launch after an update, with the full changelog viewable from About → View Changelog.
  • Back to recent when empty (settings.switching.switchToRecentWhenEmpty, off by default) — when the active workspace's last window closes, switch to the recent workspace instead of staring at an empty desktop.
  • Internal failures now surface in the UI — a broken config.toml, an unreadable layouts.json, a CLI server that won't start, unavailable floating mirrors, or a failed Launch-at-Login registration show a warning HUD and a ⚠️ in the menu bar (with a Problems section) until fixed.

Install / Update

  • Homebrew: brew upgrade --cask tatami
  • Direct: Tatami-1.3.3.dmg
  • In-app: Sparkle will pick this up on its next check.

Breaking Changes

  • `[[floatingApps]]` config section renamed to `[[sharedApps]]`; configs migrate automatically on first launch (each entry becomes a shared app with `floating = true`).
  • Floating windows now require macOS Screen Recording permission; without it they will not stay above tiles.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Tatami

Get notified when new releases ship.

Sign up free

About Tatami

All releases →

Related context

Earlier breaking changes

  • v1.3.2 `[[floatingApps]]` config key renamed to `[[sharedApps]]`; configs migrate automatically on first launch.

Beta — feedback welcome: [email protected]