clear three backlog items: folder usage strings, seeded Lazygit target, unused public surface - #474
Merged
Conversation
macOS defines an optional usage string per protected folder and falls back to its own copy when none is present, so the user was asked why a terminal wants his Downloads and told nothing. The other sixteen strings in this file all explain hosted-CLI responsibility; these five now say the same thing in the same voice. They gate nothing. agterm can obtain these grants without them, so this repairs no denial and adds no access, it only replaces Apple's generic prompt copy with the reason. CI pins the entitlement set and asserts nothing here, and confirming the text renders needs a signed build with fresh TCC state by hand.
`--target` defaults to `active`, and `active` resolves when the request reaches the server rather than when the chord captured its context. Custom commands are spawned detached and fire-and-forget, so a session or window switch between the keypress and delivery opened the overlay over whatever was selected by then. `$AGT_SESSION_ID` is the stable id a custom command already has for this. The seed is now what a new user reads next to the pinned example in the command reference, so the two no longer give different answers. The neighbouring Zed and Deploy examples are unaffected: neither sends a session-addressed request.
`codexWrapperPath` was public with its only caller in the same file, sitting beside `codexWrapperName`, which earns its public through `agterm/AgentHooksInstaller.swift:136`. The two looked alike while only one was an app-target contract, so a reader had to grep to tell them apart. The backlog item asked for the rest of the enum in the same pass rather than one symbol alone, and eight more were the same: piExtensionName, opencodePluginName, rcMarkerBegin, rcMarkerEnd, piExtensionDirectory, opencodePluginDirectory, wrapperPath and codexHooksBlock. Checked the app target, agtermctlKit and agtermctl for each; the only consumers are this file and the tests, and a testable import needs no public. What stays exported is what the app target actually calls, so the surface now answers "app-target contract" rather than "happened to be written public". The app target builds against the narrowed interface.
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.
Clears three backlog items. None of them changes behavior, and each commit removes its own item file.
Protected-folder usage strings (
agterm/Info.plist). The sixteen existing strings cover theentitlement-gated services and none of the Files & Folders family, so macOS fell back to its own copy and
asked the user why agterm wanted his Downloads without saying. Five strings added in the voice the other
sixteen already use. They gate nothing: agterm can obtain these grants without them, so this repairs no
denial and adds no access, it replaces generic prompt copy with the reason.
Seeded Lazygit example (
ConfigPaths.swift). It shipped without--target, andactiveresolves whenthe request reaches the server rather than when the chord captured its context. Custom commands are spawned
detached, so a session switch between keypress and delivery opened the overlay over whatever was selected by
then. Now pinned with
$AGT_SESSION_ID, the stable id a custom command already has. This matters more sincethe
#extendlesson sends new users to File ▸ Edit Keymap…, where they read this example beside thepinned one in the command reference and got two different answers. The neighbouring Zed and Deploy examples
are unaffected, neither sends a session-addressed request.
Unused public surface (
AgentHooksInstall.swift).codexWrapperPathwas public with its only caller inthe same file, sitting next to
codexWrapperName, which earns its public throughAgentHooksInstaller.swift:136.The item asked for the whole enum in one pass rather than one symbol, and eight more were the same:
piExtensionName,opencodePluginName,rcMarkerBegin,rcMarkerEnd,piExtensionDirectory,opencodePluginDirectory,wrapperPath,codexHooksBlock. Checked the app target,agtermctlKitandagtermctlfor each; the only consumers are that file and the tests, and a testable import needs no public.What stays exported is what the app target actually calls.
swift test2601 in 97 suites,make lintzero findings,plutil -lintOK, and the app target buildsagainst the narrowed interface. No XCUITest run: nothing here touches UI behavior.