Skip to content

chore(docs): purge stale links to removed test paths and shims#1

Merged
moreih29 merged 1 commit into
mainfrom
chore/purge-stale-doc-links
Apr 25, 2026
Merged

chore(docs): purge stale links to removed test paths and shims#1
moreih29 merged 1 commit into
mainfrom
chore/purge-stale-doc-links

Conversation

@moreih29
Copy link
Copy Markdown
Owner

Summary

Plan #6의 남은 정리 작업 — 과거 테스트 구조 변경(통합 테스트 평탄화) 과정에서 문서·주석에 남은 오래된 경로·shim 참조를 제거.

Changes

  • 단일 commit 68c2b07: stale doc link purge

Verification

  • test:unit·test:integration·build·lint 영향 없음(문서 전용 변경)
  • main 병합 후 feat/design-system-repaint rebase 불필요(이미 포함)

Risk

  • 낮음. 런타임 코드 변경 없음.

Note

feat/design-system-repaint PR이 이 commit을 이미 포함하므로, 이 PR을 먼저 병합하거나 feat PR 병합만으로도 이 변경이 main에 반영됩니다. 운영자 판단.

explore 스캔으로 발견된 BROKEN 3파일 정리:
- packages/app/README.md: 삭제된 test/phase-a/ 증거·체크리스트 경로 2행 제거(상세는 CHANGELOG.md 참조로 대체), test:ime-checklist·test:runtime-terminal shim 행을 test:integration 통합 행으로 교체
- .nexus/context/stack.md: 동일 shim 행 2개를 test:integration 통합 행으로 교체
- packages/app/scripts/runtime/terminal-zombie-checklist.ts: 제거된 test:runtime-terminal 참조를 bun test ./test/e2-terminal-runtime.test.ts로 교체

CHANGELOG.md의 release-evidence/ 복원 안내는 의도된 git 히스토리 참조이므로 유지.
@moreih29 moreih29 merged commit 68c2b07 into main Apr 25, 2026
@moreih29 moreih29 deleted the chore/purge-stale-doc-links branch April 26, 2026 22:31
moreih29 added a commit that referenced this pull request May 8, 2026
audit Plan #23 issue #1 / task T1.

Extracted three internal helpers in store.ts to eliminate jscpd-detected 18%
self-duplication:
- computeNextActiveTabId: adjacent-tab fallback for activeTabId
- detachTabFromLeaf: removal + active recompute + conditional leaf-hoist
- attachTabToLeaf: index-splice-or-push + activeTabId assignment

External exports (useLayoutStore, buildInitialLayout, makeEmptyLeaf,
LayoutNode) unchanged. Behavior preserved — attachTab kept its distinct
de-duplication guard separate from moveTab's destination path.

Metrics:
- Self-duplication: 18.05% → 0%
- LoC: 411 → 398 (helpers themselves consume ~60 LoC, net -13)
- Tests: 35/35 PASS

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
moreih29 added a commit that referenced this pull request May 8, 2026
audit Plan #24 issue #1 / task T14 — F4.3 follow-up.

Original: src/shared/lsp-types.ts at 479 LoC, 35+ Zod schemas mixed
across LSP domains. Architect originally categorized as Important;
omitted from Plan #23 — now closed.

New: src/shared/lsp/{primitives,text-document,symbols,diagnostics,
workspace}.ts + index.ts barrel.

Domain mapping:
- primitives.ts (45) — DocumentUri, Position, Range, Location,
  TextEdit, MarkupContent
- text-document.ts (80) — TextDocumentIdentifier, ServerCapabilities,
  TextDocumentSyncKind, content change events, position args
- symbols.ts (57) — SymbolKind, SymbolInformation, DocumentSymbol,
  DocumentHighlight, CompletionItem
- diagnostics.ts (140) — Diagnostic*, Hover, ShowMessage*, progress
  schemas, LspServerEvent
- workspace.ts (167) — WorkspaceEdit, ApplyWorkspaceEdit*,
  Configuration*, FileEvent, Registration, CodeAction

26 files (19 src, 7 tests) updated to import from ../shared/lsp.
Schema definitions and exported names unchanged — pure relocation.

Validation: bun test 1125/0, typecheck clean.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
moreih29 added a commit that referenced this pull request May 20, 2026
1. Preview no longer overflows at large font sizes
   The Editor preview snippet was four lines, the longest ~50 chars. At
   fontSize=32 it overflowed the dialog and produced a horizontal scrollbar.
   Replaced the snippet with three short lines (~25 chars each) and switched
   white-space to pre-wrap + word-break: break-word so any residual overflow
   wraps gracefully instead of scrolling. Also quoted the first font-family
   token defensively for custom multi-word names like "Fira Code" /
   "D2 Coding" (`"${fontFamily}"`) — unquoted CSS family names ARE legal
   for whitespace-separated identifier sequences, but the explicit quoting
   removes one ambiguity from the diagnosis path.

2. Reset slot reserves its space
   Earlier ResetButton was conditionally rendered — when a section first
   went dirty, the icon appeared and the label / adjacent controls shifted
   by ~20px. Section helpers now always render the ResetButton, toggling
   `visibility:hidden` + `pointer-events:none` + `aria-hidden` when not
   active. Layout is geometrically stable from first paint.

3. Dialog title uses Radix VisuallyHidden
   The "DialogContent requires a DialogTitle" warning fired despite the
   sr-only-classed Title — Radix's runtime check seems to favour its own
   VisuallyHidden primitive (the linked fix from the error message itself).
   Switched to `<VisuallyHidden.Root asChild><Dialog.Title>...` which is the
   pattern Radix documents.

Verified: typecheck clean, lint 3/50/11 (unchanged), build OK, tests
1806/1816 (unchanged baseline).

Note on #1's secondary thread (custom font not applied): the inline-style
fontFamily was always correct. If the typed font name is not installed
on the system, the preview silently falls back. The font-availability
indicator below the input shows "(not available)" in that case — please
verify it's appearing for the fonts that didn't take.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
moreih29 added a commit that referenced this pull request May 20, 2026
Each workspace row gains a row of small logo chips — one per supported
LSP language (TypeScript, Python). The chips are always visible so a
disabled server is discoverable (Nielsen #1 — system status
visibility); hiding OFF chips on hover would hide the very state the
user needs to debug "why does cmd+click not work?".

  * SVG logos render with `currentColor` and a single solid path so
    chip state is expressed through colour alone (brand hex when ON,
    `grayscale opacity-40` when OFF). Python's official two-colour
    logo is reinterpreted as a single-colour stylised silhouette to
    keep the on/off signal unambiguous.
  * Clicks toggle the per-(workspace, language) enable flag —
    optimistic store update + `lsp.setEnabledLanguages` IPC. Backend
    eviction + workspaceReset broadcast (commit 1) takes care of
    tearing down the disabled server.
  * Radix Tooltip with `UI_TOOLTIP_DELAY_MS` describes the chip's
    state and the click effect; `aria-pressed` + focus-visible ring
    keep keyboard / assistive-tech parity.
  * Workspace row is wrapped in a Radix ContextMenu so right-click
    surfaces a "Workspace Settings…" entry. The handler prop is
    optional, so commit 2 builds cleanly without commit 3's wire-up;
    the menu becomes functional once Workspaces panel routing lands.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
moreih29 added a commit that referenced this pull request Jun 2, 2026
Follow-up to the idle watchdog (e528ccd). Review surfaced six issues
across correctness, scope, and recovery; this addresses all of them.

#1 Monotonic clock: lastInbound was stored as wall-clock UnixNano and
compared via time.Since on a time.Unix value, which silently falls back
to wall-clock arithmetic. A laptop waking from sleep (local agent) or an
NTP step (remote) made elapsed jump past the limit and reap a live
session. Now anchored to a monotonic startMono via stampInbound/
idleElapsed.

#2 Scope: the watchdog ran for local agents too, where parent death
already arrives as stdin EOF (plus Pdeathsig on Linux) — pure downside.
Now gated on a new --idle-watchdog flag the SSH launch sets and the local
launch omits.

#3 Threshold: 60s limit with 3-ping margin was tight enough that a
stalled Electron main thread (ping is event-loop bound; ssh ServerAlive
is not) could trip it. Widened to 90s limit / 15s ping (6 slots), with
the check interval decoupled to limit/6 so the kill window stays tight.

#4 Contract: client ping was gated on heartbeat advertisement, the agent
watchdog on nothing — drift-prone. The agent now advertises idleWatchdogMs
in the Ready frame; the client pings iff positive, at idleWatchdogMs/6.

#5 Orphans: drainAndExit reaches os.Exit, which skips the `defer
pty.Close()`. Linux survived via Pdeathsig; a darwin remote (supported,
shipped) had only SIGHUP-on-fd-close, so SIGHUP-ignoring children
orphaned. PTY cleanup is now a shutdown hook that SIGKILLs each process
group on every OS.

#6 Recovery: the watchdog exited 0, which the client's handleClose treats
as a clean terminal exit (no reconnect). On a false positive (client
alive but stalled) the session died permanently. Now exits 75
(EX_TEMPFAIL) so the client reconnects.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant