Files
deepseek-harness/tsconfig.host.json
creatixchu d907c8475f fix(web): keep the input card in place across view tabs
The composer seat is one node laid out against two different edges: in Chat it
is a sticky child of the column's scroller and rides its content box, which a
space-consuming scrollbar shortens, while a view declaring a composer overlay
gets an absolutely positioned seat against the padding box, which no bar
reduces. With the transcript scrolling the two tabs disagreed by the bar's
width, so the centred input card moved 4px sideways on every switch — and the
same 4px inside Chat when a growing transcript began to scroll.

The column now reserves its scrollbar gutter unconditionally and states the
overlay branch a scroll container on the same axes, so both states measure
against the same width.
2026-08-04 16:13:52 +08:00

238 lines
11 KiB
JSON

{
// Host aggregate (one of the two check units; see tsconfig.json). packages/client
// type-checks in tsconfig.client.json: the two sides merge cordis Context under
// the same keys, one program cannot see both.
"extends": "./tsconfig.base.json",
"compilerOptions": {
"noEmit": true,
"rewriteRelativeImportExtensions": false
},
"include": [
"apps/web/tests/scaffold.ts",
"apps/web/tests/support.ts",
"apps/web/tests/scaffold-hermetic.e2e.ts",
"apps/web/tests/core-web-profile.snapshot.ts",
"apps/web/tests/live-interactions.e2e.ts",
"apps/web/tests/question-composer.e2e.ts",
"apps/web/tests/approval-composer.e2e.ts",
"apps/web/tests/plan-review.e2e.ts",
"apps/web/tests/steering.e2e.ts",
"apps/web/tests/navigation-panes.e2e.ts",
"apps/web/tests/lifecycle-chrome.e2e.ts",
"apps/web/tests/details-session-lifecycle.e2e.ts",
"apps/web/tests/settings-chrome.e2e.ts",
"apps/web/tests/models-settings.e2e.ts",
"apps/web/tests/onboarding-deepseek-config.e2e.ts",
"apps/web/tests/remote-welcome.e2e.ts",
"apps/web/tests/workspace-management.e2e.ts",
"apps/web/tests/replay-round-trip.e2e.ts",
"apps/web/tests/hmr-live.e2e.ts",
"apps/web/tests/seeded-history.e2e.ts",
"apps/web/tests/sidebar-scrollbar.e2e.ts",
"apps/web/tests/code-mode-round.e2e.ts",
"apps/web/tests/composer-draft-scroll.e2e.ts",
"apps/web/tests/cordis-tool-round.e2e.ts",
"apps/web/tests/web-search-round.e2e.ts",
"apps/web/tests/message-actions.e2e.ts",
"apps/web/tests/markdown-images.e2e.ts",
"apps/web/tests/queue-actions.e2e.ts",
"apps/web/tests/skill-invocation-policy.e2e.ts",
"apps/web/tests/permission-policy-context.e2e.ts",
"apps/web/tests/access-confirmation.e2e.ts",
"apps/web/tests/shipped-composition.e2e.ts",
"apps/web/tests/goal-bar.e2e.ts",
"apps/web/tests/startup-auto-selection.e2e.ts",
"apps/web/tests/subagent-conversation.e2e.ts",
"apps/web/tests/bash-abort-row.e2e.ts",
"apps/web/tests/chat-scroll-fixture.ts",
"apps/web/tests/chat-scroll-contract.e2e.ts",
"apps/web/tests/chat-long-interactions.e2e.ts",
"apps/web/tests/chat-continuous-conversation.e2e.ts",
"apps/web/tests/composer-tab-geometry.e2e.ts",
"apps/web/tests/complex-history.perf.ts",
"apps/web/stress-tests/reasoning-chunks.stress.ts",
"apps/cli/tests/**/*.ts",
"examples/*/src/**/*.ts",
"examples/*/start.ts",
"examples/*/tests/**/*.ts",
"packages/*/*/tests/**/*.ts",
"scripts/**/*.ts",
"website/**/*.ts",
"website/.vitepress/**/*.ts"
],
"exclude": [
"packages/client/**",
"packages/host/directory-picker-browse/**",
"packages/host/directory-picker-native/**",
"scripts/client-bundle-css.spec.ts",
"packages/typert/generator/tests/fixtures/**",
"scripts/client-bundle-purity.spec.ts"
],
"references": [
{ "path": "./vendor/cosmokit" },
{ "path": "./vendor/schemastery" },
{ "path": "./vendor/cordis" },
{ "path": "./vendor/loader" },
{ "path": "./vendor/include" },
{ "path": "./vendor/group" },
{ "path": "./vendor/timer" },
{ "path": "./vendor/hmr" },
{ "path": "./vendor/logger-console" },
{ "path": "./packages/util/brand" },
{ "path": "./packages/util/native-command" },
{ "path": "./packages/util/paths" },
{ "path": "./packages/util/timeout" },
{ "path": "./packages/util/retention" },
{ "path": "./packages/util/atomic-write" },
{ "path": "./packages/llm/llm" },
{ "path": "./packages/llm/token-meter" },
{ "path": "./packages/core/session" },
{ "path": "./packages/core/scope" },
{ "path": "./packages/typert/registry" },
{ "path": "./packages/typert/loader" },
{ "path": "./packages/session-persistence/session-persistence" },
{ "path": "./packages/session-persistence/session-checkpoint-policy" },
{ "path": "./packages/session-persistence/session-persistence-jsonl" },
{ "path": "./packages/session-persistence/session-persistence-sqlite" },
{ "path": "./packages/session-projection/session-projection" },
{ "path": "./packages/session-projection/session-projection-cache" },
{ "path": "./packages/session-query/session-query" },
{ "path": "./packages/session-query/session-query-sqlite" },
{ "path": "./packages/settings/settings" },
{ "path": "./packages/settings/settings-local" },
{ "path": "./packages/credentials/credentials" },
{ "path": "./packages/credentials/credentials-local" },
{ "path": "./packages/session-query/tool-session-query" },
{ "path": "./packages/storage/storage" },
{ "path": "./packages/storage/storage-json" },
{ "path": "./packages/storage/storage-sqlite" },
{ "path": "./packages/storage/storage-domain" },
{ "path": "./packages/workspace/workspace" },
{ "path": "./packages/session-title/session-title" },
{ "path": "./packages/session-title/session-title-llm" },
{ "path": "./packages/session-title/session-title-first-message-llm" },
{ "path": "./packages/session-title/session-title-all-messages-llm" },
{ "path": "./packages/telemetry/session-telemetry" },
{ "path": "./packages/telemetry/session-telemetry-otel" },
{ "path": "./packages/core/system-prompt" },
{ "path": "./packages/core/agent" },
{ "path": "./packages/ui/commands" },
{ "path": "./packages/goal/goal" },
{ "path": "./packages/goal/tool-goal" },
{ "path": "./packages/goal/goal-session" },
{ "path": "./packages/goal/command-goal" },
{ "path": "./packages/context/time-context" },
{ "path": "./packages/context/tmux-context" },
{ "path": "./packages/context/session-reference" },
{ "path": "./packages/ui/user-interaction" },
{ "path": "./packages/ui/user-approval" },
{ "path": "./packages/ui/permission" },
{ "path": "./packages/core/tools" },
{ "path": "./packages/skill/skill" },
{ "path": "./packages/skill/skill-local" },
{ "path": "./packages/skill/tool-skill" },
{ "path": "./packages/ui/tool-ask-user" },
{ "path": "./packages/context/workspace-context" },
{ "path": "./packages/core/agent-loop" },
{ "path": "./packages/llm/llm-retry" },
{ "path": "./packages/examples/agent-spine-demo" },
{ "path": "./packages/examples/cli-demo" },
{ "path": "./packages/subprocess/subprocess" },
{ "path": "./packages/subprocess/subprocess-local" },
{ "path": "./packages/bash/bash" },
{ "path": "./packages/pty/pty" },
{ "path": "./packages/pty/pty-local" },
{ "path": "./packages/pty/tool-bash-persistent" },
{ "path": "./packages/pty/tool-pty" },
{ "path": "./packages/code-runtime/code-runtime" },
{ "path": "./packages/code-runtime/code-runtime-worker" },
{ "path": "./packages/llm/llm-deepseek" },
{ "path": "./packages/llm/llm-pi-ai" },
{ "path": "./packages/bash/bash-local" },
{ "path": "./packages/sandbox/sandbox" },
{ "path": "./packages/sandbox/sandbox-local" },
{ "path": "./packages/sandbox/sandbox-policy" },
{ "path": "./packages/bash/bash-sandbox" },
{ "path": "./packages/bash/tool-bash" },
{ "path": "./packages/fs/fs" },
{ "path": "./packages/fs/fs-local" },
{ "path": "./packages/fs/fs-policy" },
{ "path": "./packages/fs/fs-sandbox" },
{ "path": "./packages/fs/tool-fs" },
{ "path": "./packages/fs/tool-fs-search" },
{ "path": "./packages/fs/tool-str-replace-editor" },
{ "path": "./packages/compact/compact" },
{ "path": "./packages/compact/compact-basic" },
{ "path": "./packages/compact/command-compact" },
{ "path": "./packages/compact/compact-tool-result-prune" },
{ "path": "./packages/web/web" },
{ "path": "./packages/web/web-search-exa" },
{ "path": "./packages/web/web-search-perplexity" },
{ "path": "./packages/web/web-search-deepseek" },
{ "path": "./packages/web/web-fetch-local" },
{ "path": "./packages/web/tool-web" },
{ "path": "./packages/spill/spill" },
{ "path": "./packages/spill/spill-local" },
{ "path": "./packages/spill/spill-policy" },
{ "path": "./packages/timeout/timeout-policy" },
{ "path": "./packages/support/invariants" },
{ "path": "./packages/support/agent-loop-testkit" },
{ "path": "./packages/acp/acp" },
{ "path": "./packages/examples/acp-demo" },
{ "path": "./packages/ui/app-boot" },
{ "path": "./packages/ui/jsonrpc" },
{ "path": "./packages/examples/jsonrpc-demo" },
{ "path": "./packages/support/llm-replay" },
{ "path": "./packages/typert/generator" },
{ "path": "./packages/support/acp-snapshot" },
{ "path": "./packages/support/loader-smoke" },
{ "path": "./packages/support/llm-mock-server" },
{ "path": "./packages/subagent/subagent" },
{ "path": "./packages/subagent/tool-subagent" },
{ "path": "./packages/subagent/tool-subagent-control" },
{ "path": "./packages/subagent/tool-subagent-report" },
{ "path": "./packages/subagent/subagent-inprocess" },
{ "path": "./packages/subagent/subagent-spawn" },
{ "path": "./packages/subagent/subagent-fork" },
{ "path": "./packages/subagent/subagent-acp" },
{ "path": "./packages/subagent/subagent-dsh-sdk" },
{ "path": "./packages/tasks/tasks" },
{ "path": "./packages/tasks/tasks-local" },
{ "path": "./packages/tasks/tool-tasks" },
{ "path": "./packages/workflow/workflow" },
{ "path": "./packages/workflow/workflow-workerthread" },
{ "path": "./packages/workflow/tool-workflow" },
{ "path": "./packages/workflow/tool-ralph" },
{ "path": "./packages/todo/tool-todo" },
{ "path": "./packages/plan/plan-mode" },
{ "path": "./packages/guard/repeat-tool-guard" },
{ "path": "./packages/cordis/tool-cordis" },
{ "path": "./packages/cordis/repository-plugin" },
{ "path": "./packages/hooks/hook-protocol" },
{ "path": "./packages/hooks/hooks-claude" },
{ "path": "./packages/hooks/hooks-codex" },
{ "path": "./packages/mcp/mcp-client" },
{ "path": "./packages/host/apiproxy" },
{ "path": "./packages/host/directory-picker" },
{ "path": "./packages/host/directory-picker-auto" },
// Dual-face backend leaves stay client-registered (their tests and client
// halves are excluded above); these references only let the adaptive
// chooser's composition test import each backend's NODE entry, whose
// declarations carry no client-side Context merge — the mirror of the
// client aggregate's webserver reference.
{ "path": "./packages/host/directory-picker-browse" },
{ "path": "./packages/host/directory-picker-native" },
{ "path": "./packages/host/webserver" },
{ "path": "./packages/sdk/sdk-client" },
{ "path": "./packages/sdk/helper" },
{ "path": "./packages/sdk/sdk-protocol" },
{ "path": "./packages/sdk/scripts" },
{ "path": "./packages/sdk/create-sdk" },
{ "path": "./packages/sdk/telemetry" },
{ "path": "./packages/lsp/lsp" },
{ "path": "./packages/lsp/lsp-local" },
{ "path": "./packages/lsp/tool-lsp" },
{ "path": "./apps/cli" }
]
}