feat: rules for where an app's windows open, and auto-filled zones - #113
Merged
Merged
Conversation
ostapondo
force-pushed
the
feat/app-rules
branch
2 times, most recently
from
August 26, 2026 00:06
491b1c6 to
4929a6f
Compare
A rule is the "where the last window went" habit written down: app, zone, optional display, kept in config so it survives a relaunch. A second switch drops a window with no rule and no habit into the first empty zone. Routes: /zones/rules and /zones/rules/delete, tools set_app_rule and clear_app_rule, app_rules in /state. The app picker from the exclusions list is now AppAdder so the rules list can use it. mcp/src/api.ts hit the 300-line limit, so its response types moved to types.ts.
ostapondo
force-pushed
the
feat/app-rules
branch
from
August 26, 2026 00:58
4929a6f to
6c94ae9
Compare
# Conflicts: # App/Sources/plonk/Router+Zones.swift # App/Sources/plonk/Zones.swift # mcp/src/api.ts # mcp/src/tools/state.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed, and why
Rules for where an app's windows open. Pick an app on the Zones page, a zone, and if you want a monitor, and every new window of that app lands there. Stored by display UUID, so it survives a relaunch and a reboot that renumbers the screens. Wins over the "where the last one went" habit when both apply.
Also a switch that drops a new window with no rule and no habit into the first empty zone. Off by default.
Agents get
set_app_ruleandclear_app_rule, andapp_rulesinget_state. README tool count goes from 20 to 22.Two side changes: the app picker from the exclusions list is now
AppAdderso the rules list can reuse it, andmcp/src/api.tswas at the 300-line limit, so its response types moved totypes.ts.What you ran
Checks
swift buildpasses on every commit in the branchAppRuleTests,AppRuleRoutesTestsIf this moves windows
Setup: macOS 26, one built-in display at 2x, Halves.
testbench.sh up 1: the window landed in zone 2.