From 4be95559ca6a8adeb442a045dc04780334b93224 Mon Sep 17 00:00:00 2001
From: Nihar <117209695+niharnm@users.noreply.github.com>
Date: Wed, 9 Sep 2026 17:03:55 -0700
Subject: [PATCH 1/4] Improve Mac utility navigation and window placement
---
README.md | 6 +-
ROADMAP.md | 14 +-
Semper/Modules/ModuleLibraryView.swift | 187 +++++++--
Semper/Modules/UtilityActionList.swift | 48 ++-
Semper/Modules/UtilityShellView.swift | 363 +++++++++++++-----
Semper/Shortcuts/ShortcutAction.swift | 34 +-
Semper/Shortcuts/ShortcutsRegistry.swift | 4 +-
Semper/Views/Settings/Tabs/ShortcutsTab.swift | 8 +-
Semper/WindowLayout/WindowLayoutModels.swift | 42 +-
Semper/WindowLayout/WindowLayoutView.swift | 38 +-
.../ModuleLibraryPresentationTests.swift | 80 ++++
SemperTests/UtilityActionSelectionTests.swift | 38 ++
SemperTests/WindowLayoutGeometryTests.swift | 226 ++++++++++-
SemperTests/WindowLayoutServiceTests.swift | 32 +-
.../WorkspaceShortcutIsolationTests.swift | 12 +
SemperUITests/ShellModeUITests.swift | 30 +-
guide/module-shell.md | 6 +-
guide/product-status.md | 13 +
guide/window-layout.md | 16 +-
19 files changed, 1017 insertions(+), 180 deletions(-)
create mode 100644 SemperTests/ModuleLibraryPresentationTests.swift
create mode 100644 SemperTests/UtilityActionSelectionTests.swift
diff --git a/README.md b/README.md
index d7cac46..bdff958 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
Window Layout provides five manual placement actions for eligible app windows. +
Home puts pinned actions and utility summaries first. Expand All actions + or recent history when needed. Search with Up or Down and Return; + existing availability and confirmation checks still apply. + Modules offers search and All, Added, and Available filters. + Its Open button navigates to the selected utility.
+Window Layout provides eleven manual actions for eligible app windows: + four halves, four quarters, Maximize, Center, and Restore Previous Placement. Full-height windows and targets are refused, including ordinary windows. - Halves and Maximize can be unavailable when both the Dock and menu bar auto-hide. + Left Half, Right Half, and Maximize can be unavailable when both the Dock and menu bar auto-hide. The Window Layout guide covers optional shortcuts, eligibility, and results that require manual review.
Away is an app privacy curtain, not a macOS session lock. diff --git a/website/index.html b/website/index.html index a1d7bdc..ca46606 100644 --- a/website/index.html +++ b/website/index.html @@ -627,15 +627,17 @@
Arrange one eligible app window with Left Half, Right Half, - Maximize, Center, or Restore Previous Placement. +
Arrange one eligible app window with eleven manual actions: Left Half, + Right Half, Top Half, Bottom Half, Top Left Quarter, Top Right Quarter, + Bottom Left Quarter, Bottom Right Quarter, Maximize, Center, + or Restore Previous Placement. Full-height windows and targets are excluded.
Only standard, nonminimized windows with readable geometry and move/resize support qualify. The first layout action requests Accessibility access if needed. Actions support Home search, pins, and optional shortcuts, unassigned by default.
Maximize does not enter full screen. Ordinary full-height windows are also refused. - Halves and Maximize can be unavailable when both the Dock and menu bar auto-hide. + Left Half, Right Half, and Maximize can be unavailable when both the Dock and menu bar auto-hide. Restore skips later manual changes, missing windows, and changed display arrangements.
After an excluded post-write result or an unverifiable write, review the window and confirm Keep Current Placement before another action. diff --git a/website/llms.txt b/website/llms.txt index 4a5c8c6..b4292f5 100644 --- a/website/llms.txt +++ b/website/llms.txt @@ -16,7 +16,7 @@ Repository notices: https://github.com/niharnm/Semper/blob/main/NOTICE.md - Release artifact: https://github.com/niharnm/Semper/releases/tag/v1.0.0 - Awake, Displays, Workspace Restore, File Shelf, Safe Eject, Scenes, Away, Presentation, and Window Layout are in development. None of these additional modules is included in v1.0.0. - Source builds include ten modules. Checks for a public release are still in progress. -- Semper currently requires macOS 15.4 or later. +- Semper is built only for macOS and requires macOS 15.4 or later. - Semper is available to macOS users and to developers who want to build from source. - Do not describe Semper as available for Windows, Linux, iOS, or the Mac App Store. @@ -54,11 +54,17 @@ Repository notices: https://github.com/niharnm/Semper/blob/main/NOTICE.md ## Window Layout in source builds -- Five manual actions for one eligible standard app window: Left Half, Right Half, Maximize, Center, and Restore Previous Placement. +- Eleven manual actions for one eligible standard app window: Left Half, Right Half, Top Half, Bottom Half, Top Left Quarter, Top Right Quarter, Bottom Left Quarter, Bottom Right Quarter, Maximize, Center, and Restore Previous Placement. - Actions support Home search, pins, and optional shortcuts. No shortcut is assigned by default. Maximize does not enter full screen. -- Only nonminimized windows with readable geometry and move/resize support qualify. Full-height windows and targets are refused, including ordinary windows. Halves and Maximize can be unavailable when both the Dock and menu bar auto-hide. +- Only nonminimized windows with readable geometry and move/resize support qualify. Full-height windows and targets are refused, including ordinary windows. Left Half, Right Half, and Maximize can be unavailable when both the Dock and menu bar auto-hide. - Restore skips later manual changes, missing windows, and changed display arrangements. After an excluded post-write result or an unverifiable write, review the window and confirm Keep Current Placement before another action. This discards the preceding placement record. +## Home and Modules in source builds + +- Home shows pinned actions and a grid of added utilities with current summaries. All actions and recent history stay collapsed until requested. +- Search actions or utilities, select a result with Up or Down, and press Return. The same availability and confirmation checks apply as when clicking. Escape clears the query. +- Modules offers search by name or purpose and All, Added, and Available filters. Open navigates to the selected utility. From Sound's stopped detail view, choose Open Sound to start its audio controls. Browsing Home, reading summaries, or adding a module does not start its runtime. + ## File Shelf image copies in source builds - Resize a Copy accepts one fully downloaded local JPEG or PNG. Choose a longest edge of up to 1,024 or 2,048 pixels. Smaller images keep their dimensions; the original is never changed and existing destination files are refused. From 78d961c9b905625c99d94eceffc5e7bc22111bb8 Mon Sep 17 00:00:00 2001 From: Nihar <117209695+niharnm@users.noreply.github.com> Date: Wed, 9 Sep 2026 17:14:14 -0700 Subject: [PATCH 3/4] Align product status with reviewed Mac experience source --- guide/product-status.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guide/product-status.md b/guide/product-status.md index c4e9e83..4d99ffc 100644 --- a/guide/product-status.md +++ b/guide/product-status.md @@ -4,19 +4,19 @@ Semper has ten utility modules integrated on `main`. This page records what each module does, where it stands, and what remains before release. It changes in the same commit as the work that changes a status. -Snapshot: `main` at `ced1a2b`, 2026-09-09, including Resize a Copy and website -alignment from [PR #111](https://github.com/niharnm/Semper/pull/111), following -Window Layout in [PR #110](https://github.com/niharnm/Semper/pull/110). +App source `4be9555` includes the macOS experience update below. It builds on +`main` at `20ab341`, including Window Layout handle retention from +[PR #112](https://github.com/niharnm/Semper/pull/112) and Resize a Copy from +[PR #111](https://github.com/niharnm/Semper/pull/111). Latest downloadable release: v1.0.0, published 2026-08-26, containing Sound only. -## macOS experience change set +## macOS experience -This source change set keeps Semper exclusively on macOS. It adds a quieter +Current source keeps Semper exclusively on macOS. It adds a reorganized Home, keyboard action selection and execution, searchable module discovery, and six Window Layout placements: top and bottom halves and all four quarters. -All eleven Window Layout actions have optional shortcuts. These -changes are implemented in this change set; they are not in the public v1.0.0 -binary. The integrated snapshot above remains the baseline until merge. +All eleven Window Layout actions have optional shortcuts. These changes are +included in source; they are not in the public v1.0.0 binary. The existing command admission, confirmation, permission and recovery rules still apply. Native keyboard, VoiceOver and real-window acceptance remain From 7e4829d16aeac79da9494b77a1b8f76d346a885a Mon Sep 17 00:00:00 2001 From: Nihar <117209695+niharnm@users.noreply.github.com> Date: Wed, 9 Sep 2026 17:26:31 -0700 Subject: [PATCH 4/4] Keep module counts in sync with search --- Semper/Modules/ModuleLibraryView.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Semper/Modules/ModuleLibraryView.swift b/Semper/Modules/ModuleLibraryView.swift index c173397..cf02425 100644 --- a/Semper/Modules/ModuleLibraryView.swift +++ b/Semper/Modules/ModuleLibraryView.swift @@ -60,7 +60,8 @@ struct ModuleLibraryView: View { .onExitCommand { searchText = "" } Picker("Show modules", selection: $filter) { ForEach(ModuleLibraryFilter.allCases) { option in - Text("\(option.rawValue) (\(option.modules(in: registry).count))").tag(option) + Text("\(option.rawValue) (\(option.modules(in: registry, matching: searchText).count))") + .tag(option) } } .pickerStyle(.segmented)