Repository navigation
feat(app): open GitHub items on GitHub or in a new channel - #109
Merged
Merged
Conversation
iamnbutler
marked this pull request as ready for review
October 5, 2026 16:21
This was referenced Oct 5, 2026
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.
Closes #107 (sub-issue of #28).
The Issues and PRs lists no longer open items in an inline detail pane.
notouch:, opacity only) and on keyboard focus (group-focus-within), and they're always visible on devices without hover. Phone widths show icons with accessible names, and each action is described by the item title (aria-describedby).App.create(text), the normal channel creation and first-message flow, in the selected project. It sends oneask. If that fails, the text stays as a draft and a toast appears. It's only offered for local projects, because only the owning host can create channels. It's disabled while disconnected or while a create is pending. The message is:Let's work on {title} ({url}). Read the item and its discussion and inspect the project. Make the needed changes, validate them, and open or update a pull request.Continue this pull request on its existing branch: make the needed changes, validate them, and push them to it instead of opening a new pull request.GithubLinkscapture of github.com links, saved per-project targets and the relatedonTargetprops. Old state is cleaned up: the staleace:github-targets:*localStorage key is removed at load, and the GitHub IndexedDB cache moves to version 2, whose upgrade deletes savedgithub-detail/github-filesqueries so background refresh stops fetching them. The host'sgithub-detail/github-filesops and their protocol types are kept as shared GitHub infrastructure; no client uses them now.target=_blank/window.openlinks did nothing in the desktop app, because Electrobun'snew-window-openhad no handler. The desktop now opens http(s) links outside the app origin in the default browser, including Electrobun's Cmd-click anchors. "Open on GitHub" hastabIndex={0}, because WebKit otherwise skips links on Tab.Validation
Static checks:
bun typesandbun run cipass on dde96ad, and GitHub CI passes. Independent read-only review (github-row-review) of fd5e837, 97e3974 and dde96ad found no blocking issues. It also checked thenew-window-openevent shape, single registration and protocol filtering against Electrobun 1.18.1 source.Actually tested in a running app. An isolated source-built Ace-dev was built from dde96ad. Its web assets were built from the same commit, and it was served by a disposable host with its own
ACE_HOME, settings and keychain service. Canary and the installed helper weren't touched. The only project was a fresh clone of the public fixtureiamnbutler/tasks-fixture. Agents'ghhad no auth, and the clone's push URL was disabled. All input went through Ace's native desktop tools.Add a --reverse command · Issue githubnext/ace2#4 · iamnbutler/tasks-fixturein the default browser (Chrome). The Ace window stayed on Issues. On the earlier build without the desktop handler, the same click opened nothing, which is why the handler was added.…/issues/5) opened [Meta] Dogfood Ace end to end #5 in Chrome, and Ace stayed in the channel./private/tmp/ace-rows/project, and the app switched to it. The first message wasLet's work on Add JSDoc comments to all exported functions (https://github.com/iamnbutler/tasks-fixture/issues/5). Read the item and its discussion and inspect the project. Make the needed changes, validate them, and open or update a pull request.The agent started a real Anthropic run, named the channel and replied. I stopped the run after that first reply. Nothing was pushed.tabIndexfix, Tab skipped "Open on GitHub", WebKit's default for links. The fix is present in the built bundle, but Tab onto "Open on GitHub" wasn't re-run on dde96ad.Checked by static review only:
notouch:opacity-0withgroup-hover/row:opacity-100. Ace's native tools can't move the pointer, because background clicks are Accessibility presses, and the synthetic drag I tried didn't produce a visible hover state.prompt()was reviewed.aria-describedbyexposure to VoiceOver wasn't checked with a screen reader.Not run: a second host, or a large fixture for Load more.
Built in Ace
Code, issue and PR work ran in Ace channels on Ace Canary. Codex supervised through Canary's UI. Workarounds:
lanetool branches from the project checkout's old HEAD, so I reset the lane toorigin/main(Start lanes from origin's default branch and measure their diff against it #96).desktop_move.desktop_inspectrefused Chrome's window withinconsistent response evidence: window-context window title(recorded on Explain native inspection failure when the desktop or target window becomes unavailable desktop-tools#1), so Ace couldn't close the four tasks-fixture tabs it had opened.desktop_inspectrefused the Chrome window, Nate used Codex computer use through Chrome's native UI only to close those four fixture test tabs, and confirmed none remain. No CLI, AppleScript or source changes were made outside Ace.Cleanup
The dev-ui-validation channel stopped the disposable Ace-dev, host and channel worker, deleted the copied keychain item, and removed the
/tmp/ace-rowsworktree, fixture clone, channel data and build output. It also removed the test origin's WebKit data. It confirmed that nothing reached GitHub: there's no new branch on the fixture remote, issue #5 has no new comments, and the fixture still has only PR githubnext/ace2#8. Canary and the installed Ace-dev helper weren't touched. The fixture browser tabs were closed as described above.