diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9275293c..53679ffd 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,5 +1,5 @@ name: Bug report -description: Report something that isn't working in Open Knowledge +description: Report something that isn't working in OpenKnowledge title: "[Bug]: " labels: ["bug"] body: @@ -52,7 +52,7 @@ body: - type: dropdown id: install-method attributes: - label: How did you install Open Knowledge? + label: How did you install OpenKnowledge? options: - Desktop app (DMG) - CLI (npm / npx) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 32877eda..2b43302e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,12 +15,9 @@ --- -### How our PR flow works — please read +### After you open this PR -This repository is **mirrored from an internal monorepo**. After you open this PR: +- A maintainer will review your PR. If you don't hear back within a few business days, a comment to nudge is welcome. +- When your change is accepted, this PR closes automatically — that's how it merges, and your authorship is preserved. -1. A bot mirrors your changes internally for review (it posts a link you won't be able to open — that's expected). -2. Maintainer review and full CI (lint, typecheck, tests) happen internally; results are **not** posted back to this PR. -3. Once the change lands internally and syncs back, **your PR is closed — not merged.** Your authorship is preserved. - -If you don't hear back within a few business days, commenting to nudge is welcome. See [CONTRIBUTING.md](../CONTRIBUTING.md) for the full flow. +See [CONTRIBUTING.md](../CONTRIBUTING.md) for details. diff --git a/docs/scripts/generate-og-wordmark.ts b/docs/scripts/generate-og-wordmark.ts index a28d174c..2acc8793 100644 --- a/docs/scripts/generate-og-wordmark.ts +++ b/docs/scripts/generate-og-wordmark.ts @@ -1,7 +1,6 @@ import { readFileSync, writeFileSync } from 'node:fs'; import path from 'node:path'; - const root = path.resolve(import.meta.dirname, '..'); const svg = readFileSync(path.join(root, 'public', 'ok-wordmark.svg')); const dataUrl = `data:image/svg+xml;base64,${svg.toString('base64')}`; diff --git a/docs/src/app/(home)/sections/eng-specs-graphic.tsx b/docs/src/app/(home)/sections/eng-specs-graphic.tsx index c62ffde1..b208fee1 100644 --- a/docs/src/app/(home)/sections/eng-specs-graphic.tsx +++ b/docs/src/app/(home)/sections/eng-specs-graphic.tsx @@ -1,6 +1,5 @@ import { Code, Sparkles } from 'lucide-react'; - const RINGS = [56, 82, 108] as const; const RING_CENTER = { x: 80, y: 45 }; diff --git a/docs/src/app/(home)/sections/knowledge-base-graphic.tsx b/docs/src/app/(home)/sections/knowledge-base-graphic.tsx index 1482256c..112feb5b 100644 --- a/docs/src/app/(home)/sections/knowledge-base-graphic.tsx +++ b/docs/src/app/(home)/sections/knowledge-base-graphic.tsx @@ -1,7 +1,6 @@ import { Sparkles } from 'lucide-react'; import type { CSSProperties } from 'react'; - const RINGS = [56, 82, 108] as const; const RING_CENTER = { x: 80, y: 45 }; diff --git a/docs/src/components/copy-prompt.tsx b/docs/src/components/copy-prompt.tsx index 28ca3b40..6a74157b 100644 --- a/docs/src/components/copy-prompt.tsx +++ b/docs/src/components/copy-prompt.tsx @@ -26,8 +26,7 @@ export function CopyPrompt({ children }: CopyPromptProps) { await navigator.clipboard.writeText(text); setCopied(true); window.setTimeout(() => setCopied(false), 2000); - } catch { - } + } catch {} }; return ( diff --git a/docs/src/components/ok-editor/bubble-menu.tsx b/docs/src/components/ok-editor/bubble-menu.tsx index 145b7cbe..2913be65 100644 --- a/docs/src/components/ok-editor/bubble-menu.tsx +++ b/docs/src/components/ok-editor/bubble-menu.tsx @@ -113,8 +113,7 @@ export function OkBubbleMenu({ editor }: { editor: Editor }) { popup.style.left = `${x}px`; popup.style.top = `${y}px`; }) - .catch(() => { - }); + .catch(() => {}); }); }; diff --git a/docs/src/components/ok-editor/drag-handle.tsx b/docs/src/components/ok-editor/drag-handle.tsx index da2e313d..dd451784 100644 --- a/docs/src/components/ok-editor/drag-handle.tsx +++ b/docs/src/components/ok-editor/drag-handle.tsx @@ -68,8 +68,7 @@ export const BlockDragHandle = Extension.create({ if (curPos < 0) return; try { editor.chain().focus().setNodeSelection(curPos).run(); - } catch { - } + } catch {} }); return [ diff --git a/docs/src/components/ok-editor/preview-code-block.tsx b/docs/src/components/ok-editor/preview-code-block.tsx index 2684ed1f..0c114fd9 100644 --- a/docs/src/components/ok-editor/preview-code-block.tsx +++ b/docs/src/components/ok-editor/preview-code-block.tsx @@ -9,7 +9,6 @@ import { } from '@tiptap/react'; import { Trash2 } from 'lucide-react'; - const THEME_VARS = PREVIEW_THEME_TOKENS.map((t) => `${t.name}:${t.light}`).join(';'); const CHART_PALETTE = [ diff --git a/docs/src/components/overview-blocks.tsx b/docs/src/components/overview-blocks.tsx index 3e563962..d5404a15 100644 --- a/docs/src/components/overview-blocks.tsx +++ b/docs/src/components/overview-blocks.tsx @@ -1,7 +1,6 @@ import { ArrowRight, Bot, Database, type LucideIcon, NotebookPen } from 'lucide-react'; import type { ReactNode } from 'react'; - interface Layer { k: string; Icon: LucideIcon; diff --git a/docs/src/components/page-markdown-actions.tsx b/docs/src/components/page-markdown-actions.tsx index 73c10f4b..46d39f08 100644 --- a/docs/src/components/page-markdown-actions.tsx +++ b/docs/src/components/page-markdown-actions.tsx @@ -34,8 +34,7 @@ export function PageMarkdownActions({ await navigator.clipboard.writeText(await res.text()); setCopied(true); window.setTimeout(() => setCopied(false), 2000); - } catch { - } + } catch {} }; const prompt = `Read ${markdownUrl} so I can ask questions about it.`; diff --git a/docs/src/components/tabs.test.ts b/docs/src/components/tabs.test.ts index df62a0f0..60f3e2a7 100644 --- a/docs/src/components/tabs.test.ts +++ b/docs/src/components/tabs.test.ts @@ -1,4 +1,3 @@ - import { describe, expect, test } from 'bun:test'; import { composeTabId, slugifyTabId } from './tabs.tsx'; diff --git a/docs/src/components/tabs.tsx b/docs/src/components/tabs.tsx index 03179edf..b58677dc 100644 --- a/docs/src/components/tabs.tsx +++ b/docs/src/components/tabs.tsx @@ -1,6 +1,5 @@ 'use client'; - import { Tab as FumadocsTab, Tabs as FumadocsTabs, diff --git a/docs/src/lib/deferred-share.ts b/docs/src/lib/deferred-share.ts index bdba626a..298df0ad 100644 --- a/docs/src/lib/deferred-share.ts +++ b/docs/src/lib/deferred-share.ts @@ -1,4 +1,3 @@ - export const PENDING_SHARE_COOKIE = 'ok_pending_share'; export const PENDING_SHARE_MAX_AGE_SECONDS = 7 * 24 * 60 * 60; diff --git a/docs/src/lib/share-splash.ts b/docs/src/lib/share-splash.ts index 3b94241a..47ac185c 100644 --- a/docs/src/lib/share-splash.ts +++ b/docs/src/lib/share-splash.ts @@ -1,4 +1,3 @@ - import { SITE_NAME } from './site'; const SHARE_URL_VERSION_V1 = 0x01; diff --git a/docs/src/lib/track.ts b/docs/src/lib/track.ts index aff26e3e..f541e2cf 100644 --- a/docs/src/lib/track.ts +++ b/docs/src/lib/track.ts @@ -1,6 +1,5 @@ import { after } from 'next/server'; - const POSTHOG_CAPTURE_URL = 'https://us.i.posthog.com/capture/'; const CAPTURE_TIMEOUT_MS = 3_000; diff --git a/packages/app/playwright.a11y.config.ts b/packages/app/playwright.a11y.config.ts index b9061eca..b7a2a09b 100644 --- a/packages/app/playwright.a11y.config.ts +++ b/packages/app/playwright.a11y.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from '@playwright/test'; - const isCI = !!process.env.CI; export default defineConfig({ diff --git a/packages/app/playwright.config.ts b/packages/app/playwright.config.ts index 910a7870..f6c9ec05 100644 --- a/packages/app/playwright.config.ts +++ b/packages/app/playwright.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from '@playwright/test'; - const isCI = !!process.env.CI; export default defineConfig({ diff --git a/packages/app/playwright.visual.config.ts b/packages/app/playwright.visual.config.ts index c522418a..e9f60626 100644 --- a/packages/app/playwright.visual.config.ts +++ b/packages/app/playwright.visual.config.ts @@ -1,6 +1,5 @@ import { defineConfig } from '@playwright/test'; - const isCI = !!process.env.CI; export default defineConfig({ diff --git a/packages/app/src/build/app-version.ts b/packages/app/src/build/app-version.ts index 9c69e05d..8de3d072 100644 --- a/packages/app/src/build/app-version.ts +++ b/packages/app/src/build/app-version.ts @@ -12,8 +12,7 @@ export function resolveAppVersion(): string { if (typeof pkg.version === 'string' && pkg.version.length > 0) { return pkg.version; } - } catch { - } + } catch {} return '0.0.0-unknown'; } diff --git a/packages/app/src/build/electron-mode-class.test.ts b/packages/app/src/build/electron-mode-class.test.ts index c13d9303..d3e9a169 100644 --- a/packages/app/src/build/electron-mode-class.test.ts +++ b/packages/app/src/build/electron-mode-class.test.ts @@ -1,4 +1,3 @@ - import { describe, expect, test } from 'bun:test'; import { readFileSync } from 'node:fs'; import { join } from 'node:path'; diff --git a/packages/app/src/components/ActivityModeContent.tsx b/packages/app/src/components/ActivityModeContent.tsx index 7f8d8801..44e04f34 100644 --- a/packages/app/src/components/ActivityModeContent.tsx +++ b/packages/app/src/components/ActivityModeContent.tsx @@ -12,7 +12,6 @@ import { AgentIcon } from './icons/AgentIcon'; import { Button } from './ui/button'; import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip'; - async function postAgentUndo(body: { connectionId: string; docName: string; @@ -32,7 +31,6 @@ async function postAgentUndo(body: { } } - function hashFromDocName(docName: string): string { return `#/${docName .split('/') @@ -45,7 +43,6 @@ function navigateToDoc(docName: string): void { window.location.hash = hashFromDocName(docName); } - function LoadingState(): React.JSX.Element { return (
['data']; status: ReturnType['status']; @@ -308,7 +304,6 @@ function ActivityModeBody({ ); } - export function ActivityModeContent({ showBackButton = true, }: { diff --git a/packages/app/src/components/ArrayOfObjectsWidget.tsx b/packages/app/src/components/ArrayOfObjectsWidget.tsx index 1c9159bc..dc373f2f 100644 --- a/packages/app/src/components/ArrayOfObjectsWidget.tsx +++ b/packages/app/src/components/ArrayOfObjectsWidget.tsx @@ -1,4 +1,3 @@ - import { closestCenter, DndContext, diff --git a/packages/app/src/components/AuthModal.dom.test.tsx b/packages/app/src/components/AuthModal.dom.test.tsx index ad9b4a9e..bfa5538b 100644 --- a/packages/app/src/components/AuthModal.dom.test.tsx +++ b/packages/app/src/components/AuthModal.dom.test.tsx @@ -1,4 +1,3 @@ - import { afterEach, describe, expect, jest, test } from 'bun:test'; import { act, cleanup, render, screen } from '@testing-library/react'; import type { OkLocalOpAuthEvent, OkLocalOpAuthStatusResponse } from '@/lib/desktop-bridge-types'; diff --git a/packages/app/src/components/AuthModal.tsx b/packages/app/src/components/AuthModal.tsx index 1b87a0f9..67ddcf0f 100644 --- a/packages/app/src/components/AuthModal.tsx +++ b/packages/app/src/components/AuthModal.tsx @@ -19,12 +19,10 @@ import { } from './ui/dialog'; import { Input } from './ui/input'; - async function copyToClipboard(text: string): Promise { try { await navigator.clipboard.writeText(text); - } catch { - } + } catch {} } interface AuthSuccessResult { @@ -44,7 +42,6 @@ interface AuthModalProps { queryTransport?: AuthQueryTransport; } - interface DeviceFlowPanelProps { onSuccess: (result: AuthSuccessResult) => void; transport: AuthTransport; @@ -205,7 +202,6 @@ function DeviceFlowPanel({ onSuccess, transport }: DeviceFlowPanelProps) { ); } - interface IdentityBodyProps { login: string; name: string; @@ -241,7 +237,6 @@ function IdentityBody({ login, name, onNameChange, email, onEmailChange }: Ident ); } - type AuthStep = 'checking' | 'auth' | 'identity' | 'done'; const IDENTITY_PROBE_TIMEOUT_MS = 10_000; @@ -328,8 +323,7 @@ export function AuthModal({ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name, email }), - }).catch(() => { - }); + }).catch(() => {}); const result = { ...(authResult ?? { login: '' }), name, email }; setStep('done'); diff --git a/packages/app/src/components/AutoSyncOnboardingDialog.tsx b/packages/app/src/components/AutoSyncOnboardingDialog.tsx index fcce67ea..80215913 100644 --- a/packages/app/src/components/AutoSyncOnboardingDialog.tsx +++ b/packages/app/src/components/AutoSyncOnboardingDialog.tsx @@ -42,10 +42,7 @@ export function AutoSyncOnboardingDialog({ open, onResolved }: AutoSyncOnboardin } return ( - {}} - > + {}}> diff --git a/packages/app/src/components/BetaBadge.tsx b/packages/app/src/components/BetaBadge.tsx index 3dd7f5b6..9c227d08 100644 --- a/packages/app/src/components/BetaBadge.tsx +++ b/packages/app/src/components/BetaBadge.tsx @@ -1,4 +1,3 @@ - import { Trans, useLingui } from '@lingui/react/macro'; import { useUpdateChannel } from '@/hooks/use-update-channel'; import { Badge } from './ui/badge'; diff --git a/packages/app/src/components/BottomComposer.dom.test.tsx b/packages/app/src/components/BottomComposer.dom.test.tsx index b7829577..f57c2b35 100644 --- a/packages/app/src/components/BottomComposer.dom.test.tsx +++ b/packages/app/src/components/BottomComposer.dom.test.tsx @@ -265,8 +265,7 @@ beforeEach(() => { toastErrors.length = 0; try { window.localStorage.clear(); - } catch { - } + } catch {} }); afterEach(() => { diff --git a/packages/app/src/components/BottomComposer.tsx b/packages/app/src/components/BottomComposer.tsx index 0f7d794d..02b20be0 100644 --- a/packages/app/src/components/BottomComposer.tsx +++ b/packages/app/src/components/BottomComposer.tsx @@ -1,4 +1,3 @@ - import { type TargetData, TERMINAL_CLI_IDS, @@ -186,8 +185,7 @@ export function BottomComposer({ if (overlap <= 0) return; const scroller = view.dom.closest('.editor-doc-scroll'); if (scroller instanceof HTMLElement) scroller.scrollTop += overlap; - } catch { - } + } catch {} }); }; const card = cardRef.current; diff --git a/packages/app/src/components/ClaudeReadinessBanner.dom.test.tsx b/packages/app/src/components/ClaudeReadinessBanner.dom.test.tsx index 2bff838d..daa5874b 100644 --- a/packages/app/src/components/ClaudeReadinessBanner.dom.test.tsx +++ b/packages/app/src/components/ClaudeReadinessBanner.dom.test.tsx @@ -1,4 +1,3 @@ - import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test'; import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'; import type { ClaudeReadiness, OkDesktopBridge } from '@/lib/desktop-bridge-types'; diff --git a/packages/app/src/components/CloneDialog.dom.test.tsx b/packages/app/src/components/CloneDialog.dom.test.tsx index fe93c4b0..ed5bcb30 100644 --- a/packages/app/src/components/CloneDialog.dom.test.tsx +++ b/packages/app/src/components/CloneDialog.dom.test.tsx @@ -1,4 +1,3 @@ - import { afterEach, beforeEach, describe, expect, test } from 'bun:test'; import { cleanup, render, screen } from '@testing-library/react'; import { getLastKnownSignedIn, setLastKnownSignedIn } from '@/lib/auth-state-cache'; diff --git a/packages/app/src/components/ComposerContextChips.dom.test.tsx b/packages/app/src/components/ComposerContextChips.dom.test.tsx index 7b3f25bb..77d6f350 100644 --- a/packages/app/src/components/ComposerContextChips.dom.test.tsx +++ b/packages/app/src/components/ComposerContextChips.dom.test.tsx @@ -1,4 +1,3 @@ - import { afterEach, describe, expect, mock, test } from 'bun:test'; import { cleanup, fireEvent, render, screen } from '@testing-library/react'; import type { ReactNode } from 'react'; diff --git a/packages/app/src/components/ComposerContextChips.tsx b/packages/app/src/components/ComposerContextChips.tsx index 28098339..3b102c9c 100644 --- a/packages/app/src/components/ComposerContextChips.tsx +++ b/packages/app/src/components/ComposerContextChips.tsx @@ -1,4 +1,3 @@ - import { useLingui } from '@lingui/react/macro'; import { X } from 'lucide-react'; import type { ReactNode } from 'react'; diff --git a/packages/app/src/components/ConsentDialog.tsx b/packages/app/src/components/ConsentDialog.tsx index 037a8205..204a576c 100644 --- a/packages/app/src/components/ConsentDialog.tsx +++ b/packages/app/src/components/ConsentDialog.tsx @@ -1,4 +1,3 @@ - import { lazy, Suspense, useSyncExternalStore } from 'react'; import { consentStore } from '@/lib/consent-store'; diff --git a/packages/app/src/components/CopyButton.tsx b/packages/app/src/components/CopyButton.tsx index 8e9beb5d..50a7763c 100644 --- a/packages/app/src/components/CopyButton.tsx +++ b/packages/app/src/components/CopyButton.tsx @@ -1,4 +1,3 @@ - import { useLingui } from '@lingui/react/macro'; import { Check, Copy } from 'lucide-react'; import { useEffect, useState } from 'react'; @@ -40,8 +39,7 @@ export function CopyButton({ .then(() => clipboardWrite(copyContent)) .then( () => setCopyTick((n) => n + 1), - () => { - }, + () => {}, ); }; diff --git a/packages/app/src/components/CreateProjectDialog.cascade-staleness.dom.test.tsx b/packages/app/src/components/CreateProjectDialog.cascade-staleness.dom.test.tsx index d58e51f3..877e33f1 100644 --- a/packages/app/src/components/CreateProjectDialog.cascade-staleness.dom.test.tsx +++ b/packages/app/src/components/CreateProjectDialog.cascade-staleness.dom.test.tsx @@ -511,7 +511,6 @@ describe('CreateProjectDialog cascade staleness (Tier-3 mount)', () => { }); test('PRD-6649: 5 s polling skips probeNonce bump while a probe is in-flight (race-prevention gate)', async () => { - const stub = makeStubBridge(FIRST_GIT_RESULT, PARENT); const setIntervalSpy = spyOn(globalThis, 'setInterval'); diff --git a/packages/app/src/components/CreateProjectDialog.tsx b/packages/app/src/components/CreateProjectDialog.tsx index bb46412a..9b56c160 100644 --- a/packages/app/src/components/CreateProjectDialog.tsx +++ b/packages/app/src/components/CreateProjectDialog.tsx @@ -1,4 +1,3 @@ - import { ALL_EDITOR_IDS, CREATE_NEW_PROJECT_FAILURE_REASONS, @@ -309,8 +308,7 @@ export function CreateProjectDialog({ open, onOpenChange, bridge }: CreateProjec if (banner === null) return; if (firedBanners.current.has(banner)) return; firedBanners.current.add(banner); - bridge.project.recordCreateNewBannerShown(banner).catch(() => { - }); + bridge.project.recordCreateNewBannerShown(banner).catch(() => {}); }, [open, cascade, bridge]); const rawName = name; diff --git a/packages/app/src/components/CreateProjectMenuTrigger.tsx b/packages/app/src/components/CreateProjectMenuTrigger.tsx index eb105d7f..a4eb9e25 100644 --- a/packages/app/src/components/CreateProjectMenuTrigger.tsx +++ b/packages/app/src/components/CreateProjectMenuTrigger.tsx @@ -1,4 +1,3 @@ - import { useEffect, useState } from 'react'; import { CreateProjectDialog } from '@/components/CreateProjectDialog'; import type { OkDesktopBridge } from '@/lib/desktop-bridge-types'; diff --git a/packages/app/src/components/DeleteConfirmationDialog.tsx b/packages/app/src/components/DeleteConfirmationDialog.tsx index 75730d65..0230fda1 100644 --- a/packages/app/src/components/DeleteConfirmationDialog.tsx +++ b/packages/app/src/components/DeleteConfirmationDialog.tsx @@ -43,9 +43,7 @@ export function DeleteConfirmationDialog({ {customTitle ?? t`Delete ${itemName}`} - + {customDescription ?? t`Are you sure you want to delete ${itemName}? This action cannot be undone.`} diff --git a/packages/app/src/components/DiffViewBoundary.tsx b/packages/app/src/components/DiffViewBoundary.tsx index f1329e9a..5a95e4ca 100644 --- a/packages/app/src/components/DiffViewBoundary.tsx +++ b/packages/app/src/components/DiffViewBoundary.tsx @@ -38,8 +38,7 @@ async function fetchConflictSides(file: string): Promise { const payload = (await res.json()) as { detail?: unknown; title?: unknown }; if (typeof payload.detail === 'string') detail = payload.detail; else if (typeof payload.title === 'string') detail = payload.title; - } catch { - } + } catch {} console.warn( JSON.stringify({ event: 'conflict-content-fetch-failed', diff --git a/packages/app/src/components/DocPanel.dom.test.tsx b/packages/app/src/components/DocPanel.dom.test.tsx index 48b8323d..b2567fd2 100644 --- a/packages/app/src/components/DocPanel.dom.test.tsx +++ b/packages/app/src/components/DocPanel.dom.test.tsx @@ -1,4 +1,3 @@ - import { afterEach, describe, expect, mock, test } from 'bun:test'; import { cleanup, render, screen } from '@testing-library/react'; import type { ReactNode } from 'react'; diff --git a/packages/app/src/components/DocumentBoundary.test.ts b/packages/app/src/components/DocumentBoundary.test.ts index 35f25d18..776e5aa0 100644 --- a/packages/app/src/components/DocumentBoundary.test.ts +++ b/packages/app/src/components/DocumentBoundary.test.ts @@ -1,4 +1,3 @@ - import { afterEach, beforeEach, describe, expect, test } from 'bun:test'; import { HocuspocusProvider } from '@hocuspocus/provider'; import { __resetSyncPromiseCache, syncPromise } from '@/editor/sync-promise'; @@ -26,8 +25,7 @@ afterEach(() => { for (const p of providers) { try { p.destroy(); - } catch { - } + } catch {} } providers = []; }); diff --git a/packages/app/src/components/DocumentBoundary.tsx b/packages/app/src/components/DocumentBoundary.tsx index eaea173e..cfdb81f0 100644 --- a/packages/app/src/components/DocumentBoundary.tsx +++ b/packages/app/src/components/DocumentBoundary.tsx @@ -1,4 +1,3 @@ - import type { HocuspocusProvider } from '@hocuspocus/provider'; import { type ReactNode, use } from 'react'; import { syncPromise } from '@/editor/sync-promise'; diff --git a/packages/app/src/components/DocumentErrorBoundary.test.ts b/packages/app/src/components/DocumentErrorBoundary.test.ts index 227ebb82..0374eeb9 100644 --- a/packages/app/src/components/DocumentErrorBoundary.test.ts +++ b/packages/app/src/components/DocumentErrorBoundary.test.ts @@ -1,4 +1,3 @@ - import { describe, expect, test } from 'bun:test'; import { MountAbortError } from '@/editor/mount-promise'; import { diff --git a/packages/app/src/components/EditorActivityPool.test.ts b/packages/app/src/components/EditorActivityPool.test.ts index d110f573..be046da8 100644 --- a/packages/app/src/components/EditorActivityPool.test.ts +++ b/packages/app/src/components/EditorActivityPool.test.ts @@ -1,4 +1,3 @@ - import { describe, expect, test } from 'bun:test'; import { SYSTEM_DOC_NAME } from '@inkeep/open-knowledge-core'; import { @@ -368,7 +367,6 @@ describe('computeEditorMountGate — invariant: at least one editor rendered', ( }); }); - describe('shouldEmitFirstToggle — first-toggle mark gate', () => { test('large doc, both editors rendering, not yet emitted → emit', () => { expect( diff --git a/packages/app/src/components/EditorActivityPool.tsx b/packages/app/src/components/EditorActivityPool.tsx index d303ddf2..d13639d3 100644 --- a/packages/app/src/components/EditorActivityPool.tsx +++ b/packages/app/src/components/EditorActivityPool.tsx @@ -563,7 +563,6 @@ function ActivityEntry({ const [warmSnapshot] = useState(() => peekRenameSnapshot(entry.docName)); const warmHtml = warmSnapshot?.html ?? null; - const [hasEmittedFirstToggle, setHasEmittedFirstToggle] = useState(false); useEffect(() => { if ( diff --git a/packages/app/src/components/EditorActivityPool.warm-skeleton.dom.test.tsx b/packages/app/src/components/EditorActivityPool.warm-skeleton.dom.test.tsx index 6f591d21..c7d8b88e 100644 --- a/packages/app/src/components/EditorActivityPool.warm-skeleton.dom.test.tsx +++ b/packages/app/src/components/EditorActivityPool.warm-skeleton.dom.test.tsx @@ -12,7 +12,6 @@ import { } from '@/editor/editor-cache'; import { expectVisualClassTokens } from '@/test-utils/visual-contract'; - function WarmContentFallbackReplica({ html }: { html: string }) { return (