Files
nyaterm/scripts/ci/architecture_allowlist.json
Kang 833d6d357c fix(ci): stabilize cross-platform regression tests
Use platform-aware copy and select-all shortcuts in transcript tests.
Route the mock AI server through the joinable thread factory and register
the model-row fixture's caller-owned scroll handle in the architecture allowlist.

Skip Ubuntu's global compinit in the isolated Zsh startup fixture, which
otherwise waits for insecure-directory confirmation before reporting shell
identity. Reproduced the original failure and verified the fix on Ubuntu 24.04.

Make the event-pump regression enter connect settling explicitly and derive
its paced drain count from the existing 4 KiB budget. Wait for the post-pull
configuration refresh before submitting recovery in the sync sidebar test.

Validation: workspace check, rustfmt, architecture checks and strict clippy
passed. The event-pump regression passed 10 consecutive runs and the sync
round trip passed three. Workspace tests had one root-only read-only-file
assertion failure; the entire files crate passed as an unprivileged user
(204 tests). Native macOS verification remains for CI.
2026-11-06 14:25:04 +08:00

37 lines
5.5 KiB
JSON

{
"wildcard_super_import": [],
"desktop_feature_thread_spawn": [
{"path": "crates/nyaterm-desktop/src/features/ai/agent_management.rs", "max_count": 1, "reason": "The cancellation unit test uses a temporary waiter thread and joins it before returning."},
{"path": "crates/nyaterm-desktop/src/features/app_state/store_runtime.rs", "max_count": 1, "reason": "The GPUI shutdown responsiveness test uses a watchdog thread and joins it before returning."}
],
"desktop_thread_builder": [
{"path": "crates/nyaterm-desktop/src/blocking_jobs.rs", "max_count": 1, "reason": "BlockingJobScheduler owns and joins its bounded worker pool."},
{"path": "crates/nyaterm-desktop/src/lib.rs", "max_count": 1, "reason": "The one-shot i18n preload worker is joined before preload_i18n returns."},
{"path": "crates/nyaterm-desktop/src/thread_owner.rs", "max_count": 1, "reason": "The central named-thread factory returns join handles to explicit lifecycle owners."},
{"path": "crates/nyaterm-desktop/src/models/connections.rs", "max_count": 1, "reason": "CredentialAutofillMatchPipeline owns, stops, and joins its matcher worker."},
{"path": "crates/nyaterm-desktop/src/models/recording.rs", "max_count": 1, "reason": "RecordingWritePipeline owns, stops, and joins its writer worker."},
{"path": "crates/nyaterm-desktop/src/models/session_event_bridge.rs", "max_count": 1, "reason": "SessionEventBridge owns, signals, and joins its bridge worker."},
{"path": "crates/nyaterm-desktop/src/models/terminal/mod.rs", "max_count": 1, "reason": "TerminalFramePipeline owns, closes, and joins its frame worker."},
{"path": "crates/nyaterm-desktop/src/features/remote_desktop/keyboard_capture.rs", "max_count": 1, "reason": "Windows keyboard capture owns the hook thread, posts WM_QUIT, unhooks, and joins it."},
{"path": "crates/nyaterm-desktop/src/features/root.rs", "max_count": 1, "reason": "The ignored root-render benchmark joins its large-stack test thread."},
{"path": "crates/nyaterm-desktop/src/features/pages/workspace/group_tests.rs", "max_count": 1, "reason": "The workspace stack-regression test uses a named one-MiB-stack thread and joins it before returning."},
{"path": "crates/nyaterm-desktop/src/features/session/auth_runtime.rs", "max_count": 1, "reason": "The prompt broker test joins its named request thread."},
{"path": "crates/nyaterm-desktop/src/app_shell/session_hub/ssh_connections.rs", "max_count": 1, "reason": "SshConnectionPool owns its process-wide disconnect worker and DisconnectWorker joins it during shutdown."},
{"path": "crates/nyaterm-desktop/src/features/session/trzsz_runtime.rs", "max_count": 3, "reason": "Per-session trzsz state owns, stops, and joins prepare, upload, and download workers."},
{"path": "crates/nyaterm-desktop/src/features/session/xymodem_runtime.rs", "max_count": 1, "reason": "Per-session X/YMODEM state owns, stops, and joins its upload worker."}
],
"raw_scroll_container": [
{"path": "crates/nyaterm-desktop/src/features/panels/session_overlays.rs", "max_count": 1, "reason": "Session information keeps its ScrollHandle in SessionFeatureState for close/reopen reset, tracks it on the in-flow body, and attaches vertical_scrollbar to the non-scrolling parent outside the header and footer."},
{"path": "crates/nyaterm-desktop/src/features/file_manager/view/table.rs", "max_count": 1, "reason": "File manager table tracks a caller-owned horizontal ScrollHandle and attaches NyaHorizontalScrollbar to the non-scrolling viewport alongside its independent virtual-list scrollbar."},
{"path": "crates/nyaterm-desktop/src/features/ai/panel.rs", "max_count": 3, "reason": "AI mention, model, and history lists use caller-owned ScrollHandles for keyboard reveal and attach visible vertical scrollbars to those handles."},
{"path": "crates/nyaterm-desktop/src/features/layout/workspace/surface/assets.rs", "max_count": 1, "reason": "Asset table uses a caller-owned horizontal scroll handle with an explicit NyaHorizontalScrollbar overlay."},
{"path": "crates/nyaterm-desktop/src/features/layout/workspace/surface/tabs.rs", "max_count": 1, "reason": "Session tabs use a caller-owned scroll handle and attach a visible horizontal scrollbar to the non-scrolling parent."},
{"path": "crates/nyaterm-desktop/src/features/pages/connections/editor/connection/mod.rs", "max_count": 1, "reason": "Connection editor content tracks its caller-owned ScrollHandle for section anchors and keyboard reveal; connection_editor_frame in connection/layout.rs attaches vertical_scrollbar to the non-scrolling parent."},
{"path": "crates/nyaterm-desktop/src/features/pages/settings/ai/models/tests.rs", "max_count": 1, "reason": "The model-row layout fixture tracks a caller-owned ScrollHandle to verify scrolling and attaches vertical_scrollbar to the non-scrolling parent."},
{"path": "crates/nyaterm-desktop/src/features/pages/transfers/browser/view.rs", "max_count": 1, "reason": "Browser uses a caller-owned horizontal scrollbar."},
{"path": "crates/nyaterm-desktop/src/features/pages/transfers/path_bar.rs", "max_count": 1, "reason": "Transfer path menu uses a caller-owned ScrollHandle and attaches an explicit vertical scrollbar to the scrolling child."},
{"path": "crates/nyaterm-ui/src/settings.rs", "max_count": 1, "reason": "Settings content tracks an explicit scroll handle and attaches a visible vertical scrollbar to the non-scrolling parent."},
{"path": "crates/nyaterm-ui/src/widgets.rs", "max_count": 2, "reason": "Reusable widgets own caller-positioned scrollbar overlays."}
]
}