Uh oh!
There was an error while loading. Please reload this page.
chore(frontend): simplification Round A — dead code, dependency hygiene, knip in CI - #867
Merged
Merged
Conversation
Introduce knip.json (entry points + reasoned ignores) so both target workspaces exit 0, add the direct deps desktop actually imports, and remove/demote/tag dead exports per the Round A rules. No behavior changes. Deletions (truly dead, 0 refs incl. tests): - localMemoryDirForWorkspace, bundledOfficeCliToolsDir, droppedTextFilePreflightFailureCopy, blockedStateLabel/blockedStateHint, renderer OpenPathResult type, deprecated formatBuiltinJsonResult wrapper. - apps/desktop/scripts/dev-hmr.mjs (superseded by dev.mjs; zero refs). Demote/keep: - planReminderDisplayRows demoted to file-local (avoids cascade delete of its sibling display helpers). - cleanErrorMessage and buildExploreAgentCopyPayloads kept + @knipignore: referenced only by fail-soft contract asserts / dynamic test import. Dependencies: - add @base-ui/react (dependencies) — production renderer imports it. - add streamdown (devDependencies) — test-only; @maka/ui owns prod usage. - overlayscrollbars intentionally NOT added: overlay-scrollbars-contract asserts desktop must not own it; handled via knip ignoreDependencies. - add knip to root devDependencies (pins the CI governance tool). SKIP: packages/ui/src/primitives/scroll-area.tsx NOT deleted — the overlay-scrollbars contract test reads the file and asserts its content; deleting it would drop test coverage. Scoped knip ignore instead. knip runs in the CI typecheck job for both workspaces. See notes/frontend-simplification-map-2026-07-13.md for the full rationale.
# Conflicts: # notes/frontend-simplification-map-2026-07-13.md
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 freeto 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.
Round A of notes/frontend-simplification-map-2026-07-13.md (the architecture-simplification campaign).
Dead code
6 symbols deleted (verified zero refs incl. contract tests), 1 demoted to file-local, orphaned dev-hmr.mjs removed. Two knip finds deliberately RETAINED with tagged ignores: cleanErrorMessage (10 fail-soft contracts doesNotMatch on it) and buildExploreAgentCopyPayloads (dynamic-import consumer in a contract).
Dependency hygiene — with two justified deviations from the brief
Governance (the point of the round)
knip.json encoding the REAL entry points (main/preload/renderer/tests/e2e/storybook both story roots/scripts), ignoreExportsUsedInFile, a -knipignore tag channel, every ignore reason documented in the map. CI now runs knip for both workspaces at zero findings — dead code can no longer re-accumulate.
Gates (before → after identical)
desktop 2397/2397 · ui 125/125 · full typecheck · dead-css/console/a11y/copy · alignment auditor — re-verified post-merge with main in an isolated worktree (main checkout carries another session's WIP, untouched). Implemented by an opus worktree agent; merge conflict on the map resolved by folding the Round A record into main's version.