Repository navigation
Conversation
Carry NoSessionObservation and Checkout call migrations from #1364; delete both seen_sequences test forwarders and inspect conversation cursors directly. Restore main-push verification and its push-specific base/head selection.
Carry NoSessionObservation and Checkout call migrations from #1364; delete both seen_sequences test forwarders and inspect conversation cursors directly. Restore main-push verification and its push-specific base/head selection.
- markdown_links: linkify owns written schemes and e-mail only (fuzzy_link off), so schemeless spellings such as file.md and declarations.py resolve as project paths again instead of http://file.md; inline code links only when the whole span is a reference (regressed in 1325acc). - Tests build coordination facts through support.coordination's registered_coordination_fact instead of four hand-built copies passing a str worktree. - Link tests assert typed LineLink actions (link.click) instead of our own href spelling; the hyperlink_at accessor that pinned that spelling is deleted. - Checkout, AcpSessionId and RootId typed where Core now requires them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
…on mount The "2-minute hang at conftest.py:93" was BoundedRun.run reading the child test's pipes to EOF while helpers its app left running (after a failed close) still held them, so a test that failed in 14 s was killed at --test-timeout 165 s. The child now stops what its test started in pytest_sessionfinish; the runner's finally stays for a killed child. Measured on the unfixed test: 166.62 s -> 20.68 s. test_hidden_session_retirement passed Path(owner.worktree) to MainScreen.from_thread, which takes a Checkout: on_mount's update_title raised on .path, Toad's _handle_exception swallowed it, Textual's _pre_process ended the screen's loop and pruned its children, and sidebars() then raised NoMatches. Pass the Checkout. Registration.remove_originals is gone: retire threads through comms.threads.delete, as test_conversation_kind already does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
…istory surface test_dm_peer_replacement waited on read_worker, which leaving the tab legitimately cancels, and the paused mark keeps running in its thread after that cancel. It now waits on the mark itself, so its assertions run after the mark has really happened. test_channel_read_ahead used names deleted on main: CoordinationAccess.service (now the observation's service), WireHistory.messages (fragments since 12b1f40), history.source (page_source.loader) and channel_display_page's before/limit keywords (PageBounds now). Its read-ahead threshold is unchanged and still fails: only the tail and one page are read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
…mode TabHistoryButton.sync (src/toad/widgets/side_bar.py:283) shows availability as disabled; the -unavailable class the test probe read is set by nothing, so a fresh app always looked navigable. test_prompt_routing still sent "!literal" as text and pinned "!" as text, which cfe1bb4 deliberately made the shell-mode switch on an empty prompt; tests/textual/test_prompt_shell_mode.py owns that behavior. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu
The suite needs about 44 minutes on 2 workers (#1375) and was cut off at 30, around 70%, on every branch. No run has ever reported the last 30%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
markdown-it's gfm-like linkify had fuzzy_link on, so file.md and declarations.py rendered as links to http://file.md and http://declarations.py. Written schemes and e-mail addresses stay with linkify; schemeless spellings are left to TextTokenRule's project-path resolution. A code span links only when the whole span is a reference, so `run file.md` stays a command. Salvaged from #1375 (its markdown_links.py hunk only; the suite migrations there are obsolete since #1397). Reproduced with markdown-it-py: before, both paths became http links; after, they stay text while https:// and mailto: still link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016gZLdttfQjtizEYZGek9Gh
|
Salvaged the one still-needed part of this PR onto main: the Generated by Claude Code |
Pull request was closed
Toad main's required
suitecheck: why it hangs, why it's red, and the first batch of fixes at their owners. Built on #1368's ok head (e65569e), which already fixes the unread/read-ledger drift.What conftest.py:93 waits on (the "2-minute hang")
OwnProcessTest.runtest(tests/conftest.py:93) waits inBoundedRun.run, which returns only when the child's stdout/stderr pipes close. In run 41103293550, gw0 rantest_hidden_session_retirement(both tests) and each ran out the full--test-timeoutof 165 s (dumps at 18:26:09, 18:28:54, 18:31:40). Reproduced locally: the child reports1 failed in 13.70s, and the parent reportsin 166.62s. The app's close dies onNoMatches: SessionThreadSidebar(src/toad/screens/main.py:459, from main.py:439 duringworkspace_chrome.refresh_layout). Its helpers (the observer and others) keep the inherited pipes open, andstop_test_childrenruns only in the parent'sfinally, after the kill. Not fixed in this commit yet: the mailboxMainScreenis mounted and composed (['Center']), and the trace of why its sidebar query fails continues.Wall time (separate structural defect)
CI ran 2 xdist workers over 715 items and finished 468 in 28.7 min (16.3 tests/min), so a full pass needs about 44 min against
timeout-minutes: 30. Even with zero failures, the suite can't finish. Not addressed here.Fixed in this commit
gfm-likelinkify fuzzy-linkedfile.md→http://file.md(.md and .py are TLDs). Linkify now owns written schemes and e-mail only; schemeless spellings go toTextTokenRule.CodeInlineTokenRuleagain links only a whole-span reference; 1325acc reduced it topass.CoordinationChangedUpdatecopies passedworktree=str(...)('str' has no to_wire). They are deleted in favor ofsupport.coordination.registered_coordination_fact.toad-file:href spelling, and hrefs are nowLinkHrefJSON. They now assert the typedLineLink.click.UI.hyperlink_atis deleted (no other callers). The bare-https assertion pinned pre-4e493ec3f behaviour ("linkify is syntax") and now names the exactExternalProjectLink.AcpLogLink.markdown(path).Checkoutdrift.AcpSessionId/RootIddrift.Targeted results (one process per test,
timeout -s INT 300 -p no:xdist -o faulthandler_timeout=60)ui.untilcluster (unread ×3, channel_scrolling, any_mode and others) is load-sensitive:test_direct_message_unread_clears_on_openingpasses alone (33.6 s) and failed at load 23.Still open
hidden_session_retirement (NoMatches + the 165 s hang), test_dm_peer_replacement:34, test_divider_only_viewport_stays_unread:30, arrival_fade:87, channel_tab_sharing, prompt_routing '!', tab_history, channel_mentions, sessions_share_one_stdio_process, conversation_value remove_originals, channel_read_ahead
.service, archive Retain, acp_log_view, error_notifier, editor_keys, compaction_turn_events, application_actions, and the 30-minute wall time.Assumed: bare
example.com/www.example.comin agent text becomes a project file-search link (the pre-10-15 behaviour), not a website.🤖 Generated with Claude Code
https://claude.ai/code/session_01XbFMSoWgC3ZwKzjT4SwMDu