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 (
@@ -25,7 +24,6 @@ function WarmContentFallbackReplica({ html }: { html: string }) {
);
}
-
function WarmFallbackHost({ docName }: { docName: string }) {
const [warmSnapshot] = useState(() => peekRenameSnapshot(docName));
const warmHtml = warmSnapshot?.html ?? null;
@@ -49,7 +47,6 @@ function WarmFallbackHost({ docName }: { docName: string }) {
const baseSnap = (html: string): RenameSnapshot => ({ html, scrollTop: 0, selection: null });
-
describe('WarmContentFallback DOM geometry', () => {
let consoleErrorSpy: ReturnType
;
let consoleWarnSpy: ReturnType;
@@ -164,7 +161,6 @@ describe('rename-snapshot store → warm-fallback selection contract', () => {
});
});
-
describe('warm-fallback scroll restoration', () => {
let scrollContainer: HTMLDivElement;
let consoleErrorSpy: ReturnType;
@@ -221,7 +217,6 @@ describe('warm-fallback scroll restoration', () => {
});
});
-
describe('captureRenameSnapshots — scrollTop capture (DOM)', () => {
let scrollContainer: HTMLDivElement;
let consoleErrorSpy: ReturnType;
diff --git a/packages/app/src/components/EditorTabs.tsx b/packages/app/src/components/EditorTabs.tsx
index 341a55c1..2b0c2188 100644
--- a/packages/app/src/components/EditorTabs.tsx
+++ b/packages/app/src/components/EditorTabs.tsx
@@ -592,12 +592,7 @@ export function EditorTabs() {
)}
onWheel={scrollTabListOnWheel}
>
-
+
{
- });
+ .catch(() => {});
}
const messageReady = documentCount !== null;
diff --git a/packages/app/src/components/FileTree.showall-lazy.dom.test.tsx b/packages/app/src/components/FileTree.showall-lazy.dom.test.tsx
index 3d31def2..dc55c3a9 100644
--- a/packages/app/src/components/FileTree.showall-lazy.dom.test.tsx
+++ b/packages/app/src/components/FileTree.showall-lazy.dom.test.tsx
@@ -64,7 +64,6 @@ function makeFetchMock() {
});
}
-
class StubItem {
expanded = false;
selected = false;
diff --git a/packages/app/src/components/FileTree.showall-truncation.dom.test.tsx b/packages/app/src/components/FileTree.showall-truncation.dom.test.tsx
index 5247e5e5..fb028482 100644
--- a/packages/app/src/components/FileTree.showall-truncation.dom.test.tsx
+++ b/packages/app/src/components/FileTree.showall-truncation.dom.test.tsx
@@ -47,7 +47,6 @@ function makeFetchMock() {
});
}
-
class StubItem {
expanded = false;
selected = false;
diff --git a/packages/app/src/components/FileTree.superseded-refresh.dom.test.tsx b/packages/app/src/components/FileTree.superseded-refresh.dom.test.tsx
index 7bd4b06d..c8437e84 100644
--- a/packages/app/src/components/FileTree.superseded-refresh.dom.test.tsx
+++ b/packages/app/src/components/FileTree.superseded-refresh.dom.test.tsx
@@ -68,7 +68,6 @@ function makeFetchMock() {
});
}
-
class StubItem {
expanded = false;
selected = false;
diff --git a/packages/app/src/components/FileTree.tsx b/packages/app/src/components/FileTree.tsx
index c4abae0d..8c5f46ee 100644
--- a/packages/app/src/components/FileTree.tsx
+++ b/packages/app/src/components/FileTree.tsx
@@ -234,8 +234,7 @@ function focusEditorAfterRename(docName: string): void {
if (!editor || editor.isDestroyed) return;
try {
editor.commands.focus();
- } catch {
- }
+ } catch {}
});
}
@@ -293,16 +292,14 @@ const MARKDOWN_FILE_ICON_SYMBOL = `][];
function iconNodeToSvg(iconNode: IconNode): string {
- return (
- iconNode
- .map(([tag, { key: _, ...attrs }]) => {
- const attrString = Object.entries(attrs)
- .map(([k, v]) => `${k}="${v}"`)
- .join(' ');
- return `<${tag} ${attrString} />`;
- })
- .join('')
- );
+ return iconNode
+ .map(([tag, { key: _, ...attrs }]) => {
+ const attrString = Object.entries(attrs)
+ .map(([k, v]) => `${k}="${v}"`)
+ .join(' ');
+ return `<${tag} ${attrString} />`;
+ })
+ .join('');
}
function createLucideSpriteSymbol(id: string, iconNode: IconNode): string {
diff --git a/packages/app/src/components/FrontmatterRow.tsx b/packages/app/src/components/FrontmatterRow.tsx
index 6c3e19e5..ce503522 100644
--- a/packages/app/src/components/FrontmatterRow.tsx
+++ b/packages/app/src/components/FrontmatterRow.tsx
@@ -1,4 +1,3 @@
-
import { useSortable } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import {
diff --git a/packages/app/src/components/GraphPanel.external-link-open.dom.test.tsx b/packages/app/src/components/GraphPanel.external-link-open.dom.test.tsx
index 07f1d30b..a49494af 100644
--- a/packages/app/src/components/GraphPanel.external-link-open.dom.test.tsx
+++ b/packages/app/src/components/GraphPanel.external-link-open.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import { act, cleanup, render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/components/GraphPanel.tsx b/packages/app/src/components/GraphPanel.tsx
index 68e73fa2..30f4caa2 100644
--- a/packages/app/src/components/GraphPanel.tsx
+++ b/packages/app/src/components/GraphPanel.tsx
@@ -67,8 +67,7 @@ function saveBoolPref(key: string, value: boolean): void {
} else {
window.localStorage.removeItem(key);
}
- } catch {
- }
+ } catch {}
}
type FullscreenGraphMode = 'explore' | 'orphans' | 'hubs';
diff --git a/packages/app/src/components/InstallInClaudeDesktopDialog.tsx b/packages/app/src/components/InstallInClaudeDesktopDialog.tsx
index 16604938..d649a360 100644
--- a/packages/app/src/components/InstallInClaudeDesktopDialog.tsx
+++ b/packages/app/src/components/InstallInClaudeDesktopDialog.tsx
@@ -15,7 +15,6 @@ import {
import { dispatchExternalLinkClick } from '@/lib/external-link';
import { cn } from '@/lib/utils';
-
const INSTALL_COMMAND = 'npx @inkeep/open-knowledge cowork';
const DOCS_URL = 'https://openknowledge.ai/docs/integrations/claude-code';
diff --git a/packages/app/src/components/InteractionPropPanel.tsx b/packages/app/src/components/InteractionPropPanel.tsx
index f891dbe2..d880eaa6 100644
--- a/packages/app/src/components/InteractionPropPanel.tsx
+++ b/packages/app/src/components/InteractionPropPanel.tsx
@@ -1,4 +1,3 @@
-
import { autoUpdate, type VirtualElement } from '@floating-ui/dom';
import { type FC, type ReactNode, useLayoutEffect, useRef } from 'react';
import { cn } from '@/lib/utils';
diff --git a/packages/app/src/components/McpConsentDialog.tsx b/packages/app/src/components/McpConsentDialog.tsx
index 19b0f796..b0d74a6c 100644
--- a/packages/app/src/components/McpConsentDialog.tsx
+++ b/packages/app/src/components/McpConsentDialog.tsx
@@ -1,4 +1,3 @@
-
import { lazy, Suspense, useSyncExternalStore } from 'react';
import { mcpConsentStore } from '@/lib/mcp-consent-store';
diff --git a/packages/app/src/components/McpConsentDialogBody.tsx b/packages/app/src/components/McpConsentDialogBody.tsx
index e3d12df1..78115f78 100644
--- a/packages/app/src/components/McpConsentDialogBody.tsx
+++ b/packages/app/src/components/McpConsentDialogBody.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { useId, useState } from 'react';
import { toast as sonnerToast } from 'sonner';
diff --git a/packages/app/src/components/MountStalledAffordance.tsx b/packages/app/src/components/MountStalledAffordance.tsx
index 65a1aa09..dbfc38e3 100644
--- a/packages/app/src/components/MountStalledAffordance.tsx
+++ b/packages/app/src/components/MountStalledAffordance.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import { type ReactElement, useEffect, useState } from 'react';
import { Button } from '@/components/ui/button';
diff --git a/packages/app/src/components/NavigatorApp.tsx b/packages/app/src/components/NavigatorApp.tsx
index b48ea224..d1625713 100644
--- a/packages/app/src/components/NavigatorApp.tsx
+++ b/packages/app/src/components/NavigatorApp.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { FolderOpenIcon, GitBranch, Loader2Icon, PlusIcon, XIcon } from 'lucide-react';
import { useTheme } from 'next-themes';
diff --git a/packages/app/src/components/NewItemDialog.test.ts b/packages/app/src/components/NewItemDialog.test.ts
index a152013f..5103ffe7 100644
--- a/packages/app/src/components/NewItemDialog.test.ts
+++ b/packages/app/src/components/NewItemDialog.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import {
diff --git a/packages/app/src/components/ObjectWidget.tsx b/packages/app/src/components/ObjectWidget.tsx
index 16c83a6d..ba91de5a 100644
--- a/packages/app/src/components/ObjectWidget.tsx
+++ b/packages/app/src/components/ObjectWidget.tsx
@@ -1,4 +1,3 @@
-
import {
closestCenter,
DndContext,
diff --git a/packages/app/src/components/PageHeader.tsx b/packages/app/src/components/PageHeader.tsx
index 53d8f90a..14f2cb52 100644
--- a/packages/app/src/components/PageHeader.tsx
+++ b/packages/app/src/components/PageHeader.tsx
@@ -1,4 +1,3 @@
-
import type { HocuspocusProvider } from '@hocuspocus/provider';
import {
bindFrontmatterDoc,
diff --git a/packages/app/src/components/PageHeaderWidgets.tsx b/packages/app/src/components/PageHeaderWidgets.tsx
index 869d6217..7465b003 100644
--- a/packages/app/src/components/PageHeaderWidgets.tsx
+++ b/packages/app/src/components/PageHeaderWidgets.tsx
@@ -1,4 +1,3 @@
-
// biome-ignore-all lint/plugin/no-raw-html-interactive-element: matches the existing PropertyWidgets.tsx posture — raw `` is the typed-input affordance shared across every frontmatter widget; migrating to shadcn `` is the file-wide pre-rule backlog described in PropertyWidgets.tsx's top-of-file ignore comment.
import { ALLOWED_IMAGE_MIME_TYPES } from '@inkeep/open-knowledge-core';
diff --git a/packages/app/src/components/ProjectSwitcher.tsx b/packages/app/src/components/ProjectSwitcher.tsx
index 43ad1a8a..dd8f492e 100644
--- a/packages/app/src/components/ProjectSwitcher.tsx
+++ b/packages/app/src/components/ProjectSwitcher.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { ChevronsUpDown, FolderOpen, GitBranch, LayoutGrid, Plus, Search } from 'lucide-react';
import { useEffect, useRef, useState } from 'react';
diff --git a/packages/app/src/components/PropertyInlineLinks.dom.test.tsx b/packages/app/src/components/PropertyInlineLinks.dom.test.tsx
index 77959eac..6a4b28de 100644
--- a/packages/app/src/components/PropertyInlineLinks.dom.test.tsx
+++ b/packages/app/src/components/PropertyInlineLinks.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, test } from 'bun:test';
import { cleanup, render, screen } from '@testing-library/react';
import { PropertyInlineLinks } from './PropertyInlineLinks';
diff --git a/packages/app/src/components/PropertyInlineLinks.tsx b/packages/app/src/components/PropertyInlineLinks.tsx
index 8762d849..0e9411c9 100644
--- a/packages/app/src/components/PropertyInlineLinks.tsx
+++ b/packages/app/src/components/PropertyInlineLinks.tsx
@@ -1,4 +1,3 @@
-
import type { ReactNode } from 'react';
import { dispatchExternalLinkClick } from '@/lib/external-link';
import { cn } from '@/lib/utils';
diff --git a/packages/app/src/components/PropertyPanel.nested-crud.dom.test.tsx b/packages/app/src/components/PropertyPanel.nested-crud.dom.test.tsx
index 2686cd74..7e289356 100644
--- a/packages/app/src/components/PropertyPanel.nested-crud.dom.test.tsx
+++ b/packages/app/src/components/PropertyPanel.nested-crud.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, test } from 'bun:test';
import { HocuspocusProvider } from '@hocuspocus/provider';
import { readFmMap } from '@inkeep/open-knowledge-core';
@@ -45,8 +44,7 @@ afterEach(() => {
for (const p of providers.splice(0)) {
try {
p.destroy();
- } catch {
- }
+ } catch {}
}
});
diff --git a/packages/app/src/components/PropertyPanel.test.tsx b/packages/app/src/components/PropertyPanel.test.tsx
index a98012a6..7f3a5b43 100644
--- a/packages/app/src/components/PropertyPanel.test.tsx
+++ b/packages/app/src/components/PropertyPanel.test.tsx
@@ -28,8 +28,7 @@ afterEach(() => {
for (const p of providers.splice(0)) {
try {
p.destroy();
- } catch {
- }
+ } catch {}
}
});
diff --git a/packages/app/src/components/PropertyPanel.tsx b/packages/app/src/components/PropertyPanel.tsx
index 0c7a06c0..7ea9f989 100644
--- a/packages/app/src/components/PropertyPanel.tsx
+++ b/packages/app/src/components/PropertyPanel.tsx
@@ -92,7 +92,6 @@ export function PropertyPanel({ provider, reservedKeys }: PropertyPanelProps) {
const panelRef = useRef(null);
usePublishFrontmatterSelection(panelRef, docName);
-
function commitPatch(patch: FrontmatterPatch): PatchResult {
if (!binding) {
return { ok: false, error: t`Connecting` };
diff --git a/packages/app/src/components/PublishToGitHubDialog.tsx b/packages/app/src/components/PublishToGitHubDialog.tsx
index 1f2a1161..6f71620c 100644
--- a/packages/app/src/components/PublishToGitHubDialog.tsx
+++ b/packages/app/src/components/PublishToGitHubDialog.tsx
@@ -1,4 +1,3 @@
-
import type { SharePublishOwner } from '@inkeep/open-knowledge-core';
import { Trans, useLingui } from '@lingui/react/macro';
import { CheckCircle2, Copy, ExternalLink, Loader2, XCircle } from 'lucide-react';
diff --git a/packages/app/src/components/SettingsButton.tsx b/packages/app/src/components/SettingsButton.tsx
index f4b8510b..080da4f4 100644
--- a/packages/app/src/components/SettingsButton.tsx
+++ b/packages/app/src/components/SettingsButton.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import { Settings } from 'lucide-react';
import { type FC, useEffect, useRef } from 'react';
diff --git a/packages/app/src/components/ShareBranchSwitchDialog.dom.test.tsx b/packages/app/src/components/ShareBranchSwitchDialog.dom.test.tsx
index 96528d40..a43bb630 100644
--- a/packages/app/src/components/ShareBranchSwitchDialog.dom.test.tsx
+++ b/packages/app/src/components/ShareBranchSwitchDialog.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import type { BranchInfoResponse, CheckoutResponse } from '@inkeep/open-knowledge-core';
import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/ShareBranchSwitchDialog.tsx b/packages/app/src/components/ShareBranchSwitchDialog.tsx
index 59ce9a98..019dc878 100644
--- a/packages/app/src/components/ShareBranchSwitchDialog.tsx
+++ b/packages/app/src/components/ShareBranchSwitchDialog.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { GitBranch, Loader2, MapPin } from 'lucide-react';
import { useEffect, useRef, useState, useSyncExternalStore } from 'react';
diff --git a/packages/app/src/components/ShareButton.tsx b/packages/app/src/components/ShareButton.tsx
index 9ded04d1..2ae80d77 100644
--- a/packages/app/src/components/ShareButton.tsx
+++ b/packages/app/src/components/ShareButton.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { CircleHelp, Share2 } from 'lucide-react';
import { useEffect, useRef, useState } from 'react';
diff --git a/packages/app/src/components/SharingModeField.tsx b/packages/app/src/components/SharingModeField.tsx
index 4dcc8552..e2fd74bb 100644
--- a/packages/app/src/components/SharingModeField.tsx
+++ b/packages/app/src/components/SharingModeField.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import { ConfigSharingInfoTooltip } from '@/components/ConfigSharingInfoTooltip';
import { Label } from '@/components/ui/label';
diff --git a/packages/app/src/components/SidebarSearchBar.test.ts b/packages/app/src/components/SidebarSearchBar.test.ts
index 6ecbbe93..ad528df5 100644
--- a/packages/app/src/components/SidebarSearchBar.test.ts
+++ b/packages/app/src/components/SidebarSearchBar.test.ts
@@ -15,7 +15,6 @@ describe('SidebarSearchBar module', () => {
});
describe('onPillRenderError — Pattern C runtime observability emission', () => {
-
let warnSpy: ReturnType;
beforeEach(() => {
diff --git a/packages/app/src/components/SidebarSearchBar.tsx b/packages/app/src/components/SidebarSearchBar.tsx
index ce2584d5..6091170b 100644
--- a/packages/app/src/components/SidebarSearchBar.tsx
+++ b/packages/app/src/components/SidebarSearchBar.tsx
@@ -1,4 +1,3 @@
-
import { incrementJsxRenderFailure } from '@inkeep/open-knowledge-core';
import { Trans } from '@lingui/react/macro';
import { Search } from 'lucide-react';
diff --git a/packages/app/src/components/SkillEditorActions.dom.test.tsx b/packages/app/src/components/SkillEditorActions.dom.test.tsx
index 6496b0e0..ef712b1a 100644
--- a/packages/app/src/components/SkillEditorActions.dom.test.tsx
+++ b/packages/app/src/components/SkillEditorActions.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import { render, screen, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/components/SkillEditorActions.tsx b/packages/app/src/components/SkillEditorActions.tsx
index 91ad2f8b..484e1cf3 100644
--- a/packages/app/src/components/SkillEditorActions.tsx
+++ b/packages/app/src/components/SkillEditorActions.tsx
@@ -17,7 +17,6 @@ import {
import { useSkills } from '@/hooks/use-skills';
import { cn } from '@/lib/utils';
-
const INSTALL_EDITORS: readonly SkillTargetEditor[] = SkillTargetEditorSchema.options;
export function SkillEditorActions({ scope, name }: { scope: SkillScope; name: string }) {
diff --git a/packages/app/src/components/SkillProperties.dom.test.tsx b/packages/app/src/components/SkillProperties.dom.test.tsx
index bbf8b873..7197e62d 100644
--- a/packages/app/src/components/SkillProperties.dom.test.tsx
+++ b/packages/app/src/components/SkillProperties.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import type { HocuspocusProvider } from '@hocuspocus/provider';
import { fireEvent, render, screen } from '@testing-library/react';
diff --git a/packages/app/src/components/SyncStatusBadge.tsx b/packages/app/src/components/SyncStatusBadge.tsx
index 230e2ac2..879d101f 100644
--- a/packages/app/src/components/SyncStatusBadge.tsx
+++ b/packages/app/src/components/SyncStatusBadge.tsx
@@ -1,4 +1,3 @@
-
import type { PushPermissionWire, SyncErrorCode } from '@inkeep/open-knowledge-core';
import { plural, t } from '@lingui/core/macro';
import { Plural, Trans, useLingui } from '@lingui/react/macro';
@@ -26,7 +25,6 @@ import { Popover, PopoverContent, PopoverTrigger } from './ui/popover';
import { Switch } from './ui/switch';
import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip';
-
function formatRelative(iso: string | null): string {
if (!iso) return t`never`;
const diff = Date.now() - new Date(iso).getTime();
@@ -50,7 +48,6 @@ async function triggerSync(op: 'sync' | 'push' | 'pull'): Promise {
});
}
-
interface BadgeIconProps {
status: GitSyncStatus;
}
@@ -103,7 +100,6 @@ function badgeLabel(status: GitSyncStatus): string {
}
}
-
function stateLabel(state: GitSyncStatus['state']): string {
switch (state) {
case 'dormant':
@@ -498,7 +494,6 @@ function PopoverBody({ status, onSignIn, onSetIdentity }: PopoverBodyProps) {
);
}
-
interface SyncStatusBadgeProps {
onSignIn?: () => void;
onSetIdentity?: () => void;
diff --git a/packages/app/src/components/TemplateForm.tsx b/packages/app/src/components/TemplateForm.tsx
index e98de184..e4d7fa2d 100644
--- a/packages/app/src/components/TemplateForm.tsx
+++ b/packages/app/src/components/TemplateForm.tsx
@@ -38,7 +38,6 @@ export interface PropRow {
value: string;
}
-
let propRowSeq = 0;
function nextRowId(): string {
propRowSeq += 1;
diff --git a/packages/app/src/components/TemplateProperties.dom.test.tsx b/packages/app/src/components/TemplateProperties.dom.test.tsx
index eb31f034..963369e1 100644
--- a/packages/app/src/components/TemplateProperties.dom.test.tsx
+++ b/packages/app/src/components/TemplateProperties.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import type { HocuspocusProvider } from '@hocuspocus/provider';
import { fireEvent, render, screen } from '@testing-library/react';
diff --git a/packages/app/src/components/TerminalCliMissingBanner.dom.test.tsx b/packages/app/src/components/TerminalCliMissingBanner.dom.test.tsx
index 87b07cbd..1417b840 100644
--- a/packages/app/src/components/TerminalCliMissingBanner.dom.test.tsx
+++ b/packages/app/src/components/TerminalCliMissingBanner.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
import { TERMINAL_CLIS } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen } from '@testing-library/react';
diff --git a/packages/app/src/components/TerminalDock.dom.test.tsx b/packages/app/src/components/TerminalDock.dom.test.tsx
index e32fcd8b..9d26e050 100644
--- a/packages/app/src/components/TerminalDock.dom.test.tsx
+++ b/packages/app/src/components/TerminalDock.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import { act, cleanup, render, screen, waitFor, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/components/TerminalExitNotice.dom.test.tsx b/packages/app/src/components/TerminalExitNotice.dom.test.tsx
index c734f3cc..011f6034 100644
--- a/packages/app/src/components/TerminalExitNotice.dom.test.tsx
+++ b/packages/app/src/components/TerminalExitNotice.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 { TerminalExitNotice } from './TerminalExitNotice';
diff --git a/packages/app/src/components/TerminalPanel.dom.test.tsx b/packages/app/src/components/TerminalPanel.dom.test.tsx
index 971eeee6..39d81c63 100644
--- a/packages/app/src/components/TerminalPanel.dom.test.tsx
+++ b/packages/app/src/components/TerminalPanel.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 {
diff --git a/packages/app/src/components/TerminalPanel.launch.dom.test.tsx b/packages/app/src/components/TerminalPanel.launch.dom.test.tsx
index 7e0d5b02..33209ced 100644
--- a/packages/app/src/components/TerminalPanel.launch.dom.test.tsx
+++ b/packages/app/src/components/TerminalPanel.launch.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import type { TerminalCli } from '@inkeep/open-knowledge-core';
import { act, cleanup, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/TextViewer.tsx b/packages/app/src/components/TextViewer.tsx
index e7dd438a..c01d0d29 100644
--- a/packages/app/src/components/TextViewer.tsx
+++ b/packages/app/src/components/TextViewer.tsx
@@ -1,4 +1,3 @@
-
import { EditorState } from '@codemirror/state';
import { EditorView } from '@codemirror/view';
import { codeLanguageForExtension } from '@inkeep/open-knowledge-core';
diff --git a/packages/app/src/components/TimelinePanel.tsx b/packages/app/src/components/TimelinePanel.tsx
index 5ff01f6b..4d71e137 100644
--- a/packages/app/src/components/TimelinePanel.tsx
+++ b/packages/app/src/components/TimelinePanel.tsx
@@ -93,14 +93,12 @@ async function pollHistoryOnce(
}
}
-
interface TimelineContentProps {
docName: string;
diffLayout: DiffLayout;
onDiffLayoutChange: (layout: DiffLayout) => void;
}
-
function formatRelativeTime(isoString: string): string {
const date = new Date(isoString);
const now = new Date();
@@ -196,7 +194,6 @@ function ContributorIcon({ entry, isDark }: { entry: TimelineEntry; isDark: bool
return ;
}
-
export function allSummariesFor(entry: TimelineEntry): string[] {
const out: string[] = [];
for (const c of entry.contributors) {
@@ -251,7 +248,6 @@ function SummaryBullets({ summaries }: SummaryBulletsProps) {
);
}
-
interface EntryDiffPanelProps {
sha: string;
docName: string;
@@ -292,7 +288,6 @@ function EntryDiffPanel({ sha, docName, cache, diffLayout, panelId }: EntryDiffP
);
}
-
interface EntryRowProps {
entry: TimelineEntry;
isDark: boolean;
@@ -381,8 +376,7 @@ function EntryRow({
try {
const problem = ProblemDetailsSchema.safeParse(await res.json());
if (problem.success) detail = problem.data.title;
- } catch {
- }
+ } catch {}
console.error('[timeline] rollback failed', {
docName,
sha: entry.sha,
@@ -530,7 +524,6 @@ function EntryRow({
);
}
-
export function TimelineContent({ docName, diffLayout, onDiffLayoutChange }: TimelineContentProps) {
const { t } = useLingui();
const { resolvedTheme } = useTheme();
diff --git a/packages/app/src/components/TrashFailureModal.tsx b/packages/app/src/components/TrashFailureModal.tsx
index 8218ea7b..291eb085 100644
--- a/packages/app/src/components/TrashFailureModal.tsx
+++ b/packages/app/src/components/TrashFailureModal.tsx
@@ -11,7 +11,6 @@ import {
DialogTitle,
} from '@/components/ui/dialog';
-
type TrashFailureReason = 'not-found' | 'permission-denied' | 'system-error' | 'path-escape';
const TRASH_FAILURE_REASONS: ReadonlyArray = [
@@ -44,7 +43,6 @@ interface TrashFailureModalProps {
onCancel: () => void;
}
-
function trashReasonLabel(reason: TrashFailureReason): string {
switch (reason) {
case 'not-found':
diff --git a/packages/app/src/components/UpdateNotices.shared.ts b/packages/app/src/components/UpdateNotices.shared.ts
index b9ccbe0d..ae0a4767 100644
--- a/packages/app/src/components/UpdateNotices.shared.ts
+++ b/packages/app/src/components/UpdateNotices.shared.ts
@@ -1,4 +1,3 @@
-
import type { OkDesktopBridge } from '@/lib/desktop-bridge-types';
export const TOAST_A_ACTION = 'Relaunch';
diff --git a/packages/app/src/components/UpdateNotices.test.ts b/packages/app/src/components/UpdateNotices.test.ts
index c514246b..c2308372 100644
--- a/packages/app/src/components/UpdateNotices.test.ts
+++ b/packages/app/src/components/UpdateNotices.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import type { OkDesktopBridge } from '@/lib/desktop-bridge-types';
import {
@@ -116,7 +115,6 @@ function castBridge(fake: FakeBridge): OkDesktopBridge {
return fake as unknown as OkDesktopBridge;
}
-
describe('copy helpers (minimal-wording revision)', () => {
test('toastABody formats the version-specific pending-install string', () => {
expect(toastABody('0.1.1')).toBe('Version 0.1.1 ready to install');
@@ -179,7 +177,6 @@ describe('appendErrorDetail', () => {
});
});
-
describe('attachUpdateSubscribers — registration', () => {
test('subscribes to all six update channels on the bridge', () => {
const bridge = makeFakeBridge();
@@ -207,7 +204,6 @@ describe('attachUpdateSubscribers — registration', () => {
});
});
-
describe('Notice A cross-window relaunch — ok:update:relaunching', () => {
test('swaps the update-downloaded card to the button-less in-progress card', () => {
const bridge = makeFakeBridge();
@@ -308,7 +304,6 @@ describe('Notice A cross-window relaunch — ok:update:relaunching', () => {
});
});
-
describe('Notice A — ok:update:downloaded', () => {
test('emits notice with canonical copy + relaunch action on dispatch', () => {
const bridge = makeFakeBridge();
@@ -469,7 +464,6 @@ describe('Notice A — ok:update:downloaded', () => {
});
});
-
describe('Notice B — ok:update:whats-new', () => {
test('emits notice with version-specific copy + release URL action', () => {
const bridge = makeFakeBridge();
@@ -558,7 +552,6 @@ describe('Notice B — ok:update:whats-new', () => {
});
});
-
describe('Notice C — ok:update:stuck-hint', () => {
test('emits notice with D12 copy + download URL action', () => {
const bridge = makeFakeBridge();
@@ -587,7 +580,6 @@ describe('Notice C — ok:update:stuck-hint', () => {
});
});
-
describe('Notice E — schema-incompatibility refuse-downgrade', () => {
const diagnostic = {
currentBuild: '0.3.0',
@@ -672,7 +664,6 @@ describe('Notice E — schema-incompatibility refuse-downgrade', () => {
});
});
-
describe('pickActiveNotice', () => {
const a: UpdateNotice = { id: 'a', body: 'A', priority: 2 };
const b: UpdateNotice = { id: 'b', body: 'B', priority: 3 };
diff --git a/packages/app/src/components/ask-ai-composer-events.ts b/packages/app/src/components/ask-ai-composer-events.ts
index 8f34d352..48538d30 100644
--- a/packages/app/src/components/ask-ai-composer-events.ts
+++ b/packages/app/src/components/ask-ai-composer-events.ts
@@ -1,4 +1,3 @@
-
const OPEN_ASK_AI_COMPOSER_EVENT = 'open-knowledge:open-ask-ai-composer';
export function emitOpenAskAiComposer(
diff --git a/packages/app/src/components/command-palette-flicker.test.ts b/packages/app/src/components/command-palette-flicker.test.ts
index 8227ed18..34951fee 100644
--- a/packages/app/src/components/command-palette-flicker.test.ts
+++ b/packages/app/src/components/command-palette-flicker.test.ts
@@ -1,8 +1,6 @@
-
import { describe, expect, test } from 'bun:test';
import type { WorkspaceEntry, WorkspaceSearchEntry } from './command-palette-search';
-
interface VisibleSearchResultsHelperArgs {
searchResults: readonly WorkspaceSearchEntry[];
fallbackSearchResults: readonly WorkspaceEntry[];
diff --git a/packages/app/src/components/command-palette-semantic.ts b/packages/app/src/components/command-palette-semantic.ts
index 6d98adc3..0f36bef2 100644
--- a/packages/app/src/components/command-palette-semantic.ts
+++ b/packages/app/src/components/command-palette-semantic.ts
@@ -1,4 +1,3 @@
-
export interface SemanticModeState {
query: string;
firedQuery: string | null;
diff --git a/packages/app/src/components/command-palette-tag-search.test.ts b/packages/app/src/components/command-palette-tag-search.test.ts
index c7622e6f..ff3d98cb 100644
--- a/packages/app/src/components/command-palette-tag-search.test.ts
+++ b/packages/app/src/components/command-palette-tag-search.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import type { TagSummaryEntry } from '../editor/extensions/tag-suggestion.ts';
import { filterTagList, parseTagPaletteQuery } from './command-palette-tag-search.ts';
diff --git a/packages/app/src/components/command-palette-tag-search.ts b/packages/app/src/components/command-palette-tag-search.ts
index 4fcc0b4a..3478d495 100644
--- a/packages/app/src/components/command-palette-tag-search.ts
+++ b/packages/app/src/components/command-palette-tag-search.ts
@@ -1,4 +1,3 @@
-
import {
fetchTags,
rankTagsByQuery,
diff --git a/packages/app/src/components/composer-draft-store.test.ts b/packages/app/src/components/composer-draft-store.test.ts
index 8e886f35..57943d1c 100644
--- a/packages/app/src/components/composer-draft-store.test.ts
+++ b/packages/app/src/components/composer-draft-store.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
import type { JSONContent } from '@tiptap/core';
import {
diff --git a/packages/app/src/components/composer-draft-store.ts b/packages/app/src/components/composer-draft-store.ts
index 030e4218..fa43e9ee 100644
--- a/packages/app/src/components/composer-draft-store.ts
+++ b/packages/app/src/components/composer-draft-store.ts
@@ -1,4 +1,3 @@
-
import type { JSONContent } from '@tiptap/core';
const DRAFT_STORAGE_KEY = 'ok-ask-ai-draft-v2';
@@ -67,8 +66,7 @@ function persistDoc(doc: JSONContent | null): void {
try {
if (doc && !docIsEmpty(doc)) storage.setItem(DRAFT_STORAGE_KEY, JSON.stringify(doc));
else storage.removeItem(DRAFT_STORAGE_KEY);
- } catch {
- }
+ } catch {}
}
function notify(): void {
diff --git a/packages/app/src/components/composer-shared-draft.dom.test.tsx b/packages/app/src/components/composer-shared-draft.dom.test.tsx
index 144a392e..0f816026 100644
--- a/packages/app/src/components/composer-shared-draft.dom.test.tsx
+++ b/packages/app/src/components/composer-shared-draft.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import type { CreateScenario, InstallState } from '@inkeep/open-knowledge-core';
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
@@ -78,7 +77,6 @@ mock.module('@/components/handoff/useHandoffDispatch', () => ({
mock.module('sonner', () => ({ toast: { error: () => {}, success: () => {} } }));
-
type Handle = {
focus: () => void;
blur: () => void;
@@ -216,8 +214,7 @@ const { CreatePromptComposer } = await import('./empty-state/CreatePromptCompose
beforeEach(() => {
try {
window.localStorage.clear();
- } catch {
- }
+ } catch {}
__resetComposerDraftForTests();
});
diff --git a/packages/app/src/components/editor-area-overlay.ts b/packages/app/src/components/editor-area-overlay.ts
index 08147d7c..52519792 100644
--- a/packages/app/src/components/editor-area-overlay.ts
+++ b/packages/app/src/components/editor-area-overlay.ts
@@ -1,4 +1,3 @@
-
interface OverlayDecisionInput {
activeDocName: string | null;
deferredActiveDocName: string | null;
diff --git a/packages/app/src/components/editor/SelectionAnnouncer.test.ts b/packages/app/src/components/editor/SelectionAnnouncer.test.ts
index ffc14a61..69b2ff68 100644
--- a/packages/app/src/components/editor/SelectionAnnouncer.test.ts
+++ b/packages/app/src/components/editor/SelectionAnnouncer.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { Schema } from '@tiptap/pm/model';
import { EditorState, NodeSelection } from '@tiptap/pm/state';
diff --git a/packages/app/src/components/editor/SelectionAnnouncer.tsx b/packages/app/src/components/editor/SelectionAnnouncer.tsx
index f8b2723c..bdfdcf08 100644
--- a/packages/app/src/components/editor/SelectionAnnouncer.tsx
+++ b/packages/app/src/components/editor/SelectionAnnouncer.tsx
@@ -1,4 +1,3 @@
-
import type { Editor } from '@tiptap/core';
import { useEffect, useRef } from 'react';
import { useBlockSelection } from '../../editor/hooks/use-block-selection.ts';
diff --git a/packages/app/src/components/empty-state/CopyablePromptList.tsx b/packages/app/src/components/empty-state/CopyablePromptList.tsx
index c3ef689f..49ec9d01 100644
--- a/packages/app/src/components/empty-state/CopyablePromptList.tsx
+++ b/packages/app/src/components/empty-state/CopyablePromptList.tsx
@@ -29,8 +29,7 @@ export function CopyablePromptList({ scenario, className }: CopyablePromptListPr
clearTimeout(resetTimerRef.current);
resetTimerRef.current = setTimeout(() => setCopiedId(null), 1600);
})
- .catch(() => {
- });
+ .catch(() => {});
}
return (
diff --git a/packages/app/src/components/empty-state/CreatePromptComposer.dom.test.tsx b/packages/app/src/components/empty-state/CreatePromptComposer.dom.test.tsx
index 88341308..57e40b0a 100644
--- a/packages/app/src/components/empty-state/CreatePromptComposer.dom.test.tsx
+++ b/packages/app/src/components/empty-state/CreatePromptComposer.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
import type { CreateScenario, InstallState } from '@inkeep/open-knowledge-core';
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/extension-picker-utils.ts b/packages/app/src/components/extension-picker-utils.ts
index 145221ef..6dcef95c 100644
--- a/packages/app/src/components/extension-picker-utils.ts
+++ b/packages/app/src/components/extension-picker-utils.ts
@@ -1,4 +1,3 @@
-
export const SUPPORTED_EXTENSIONS = ['.md', '.mdx'] as const;
export type DocExtension = (typeof SUPPORTED_EXTENSIONS)[number];
diff --git a/packages/app/src/components/file-tree-adapter.test.ts b/packages/app/src/components/file-tree-adapter.test.ts
index 97ea222f..1423dac6 100644
--- a/packages/app/src/components/file-tree-adapter.test.ts
+++ b/packages/app/src/components/file-tree-adapter.test.ts
@@ -273,7 +273,6 @@ describe('file-tree-adapter', () => {
).toBe('docs/photo.png');
});
-
test('treeItemToTarget(item, documents) returns the entry-authoritative docExt for an extensionless .md tree path', () => {
const item: ContextMenuItem = {
kind: 'file',
diff --git a/packages/app/src/components/file-tree-extension-badge.dom.test.tsx b/packages/app/src/components/file-tree-extension-badge.dom.test.tsx
index 2c38b451..dacb7be5 100644
--- a/packages/app/src/components/file-tree-extension-badge.dom.test.tsx
+++ b/packages/app/src/components/file-tree-extension-badge.dom.test.tsx
@@ -7,7 +7,6 @@ import {
OK_FULLNAME_ROW_ATTR,
} from './file-tree-extension-badge';
-
interface PierreRowInit {
path: string;
filename: string;
diff --git a/packages/app/src/components/file-tree-extension-badge.ts b/packages/app/src/components/file-tree-extension-badge.ts
index b32c67f9..bdf5e3af 100644
--- a/packages/app/src/components/file-tree-extension-badge.ts
+++ b/packages/app/src/components/file-tree-extension-badge.ts
@@ -1,4 +1,3 @@
-
import { getFileExtension } from '@/components/file-tree-rename-validation';
export const OK_EXT_BADGE_ATTR = 'data-ok-ext-badge';
diff --git a/packages/app/src/components/file-tree-merge.ts b/packages/app/src/components/file-tree-merge.ts
index 935f9793..1af5dce3 100644
--- a/packages/app/src/components/file-tree-merge.ts
+++ b/packages/app/src/components/file-tree-merge.ts
@@ -1,4 +1,3 @@
-
import { fileEntryToTreePath } from './file-tree-adapter';
import type { FileEntry } from './file-tree-utils';
diff --git a/packages/app/src/components/file-tree-okignore.test.ts b/packages/app/src/components/file-tree-okignore.test.ts
index b1d70778..89a5f543 100644
--- a/packages/app/src/components/file-tree-okignore.test.ts
+++ b/packages/app/src/components/file-tree-okignore.test.ts
@@ -101,7 +101,6 @@ describe('buildOkignorePatternFromTarget — invariants', () => {
});
describe('buildOkignorePatternFromTarget — glob-metacharacter escaping', () => {
-
test('filename with [bracket] segment is escaped so the literal file matches', () => {
const pattern = buildOkignorePatternFromTarget({
kind: 'file',
diff --git a/packages/app/src/components/file-tree-rename-chip.dom.test.tsx b/packages/app/src/components/file-tree-rename-chip.dom.test.tsx
index 24165d98..3dbb04ed 100644
--- a/packages/app/src/components/file-tree-rename-chip.dom.test.tsx
+++ b/packages/app/src/components/file-tree-rename-chip.dom.test.tsx
@@ -318,7 +318,6 @@ describe('applyRenameInputAffordance — overlay marker for symptom 2 (icon-flas
});
test('post-settle: module-level activeRenameExt is cleared (Makefile selected later gets no marker)', () => {
-
const { row, input } = buildPierreRenameRow({
path: 'AGENTS.md',
initialValue: 'AGENTS.md',
diff --git a/packages/app/src/components/file-tree-rename-chip.ts b/packages/app/src/components/file-tree-rename-chip.ts
index 4bf062a5..80acf6ec 100644
--- a/packages/app/src/components/file-tree-rename-chip.ts
+++ b/packages/app/src/components/file-tree-rename-chip.ts
@@ -1,4 +1,3 @@
-
import {
getFileExtension,
hasSupportedDocumentExtension,
diff --git a/packages/app/src/components/file-tree-rename-validation.ts b/packages/app/src/components/file-tree-rename-validation.ts
index 938fe04c..c6be16e4 100644
--- a/packages/app/src/components/file-tree-rename-validation.ts
+++ b/packages/app/src/components/file-tree-rename-validation.ts
@@ -1,4 +1,3 @@
-
type RenameDestinationValidation = { kind: 'allow'; destinationPath: string };
const SUPPORTED_DOCUMENT_EXTENSIONS = new Set(['.md', '.mdx']);
diff --git a/packages/app/src/components/file-tree-reveal.ts b/packages/app/src/components/file-tree-reveal.ts
index 73bb16f7..58e6e784 100644
--- a/packages/app/src/components/file-tree-reveal.ts
+++ b/packages/app/src/components/file-tree-reveal.ts
@@ -1,4 +1,3 @@
-
import type { FileTree as PierreFileTreeModel } from '@pierre/trees';
type RevealModel = Pick;
diff --git a/packages/app/src/components/file-tree-trash-copy.test.ts b/packages/app/src/components/file-tree-trash-copy.test.ts
index 4cea53fa..68fd6213 100644
--- a/packages/app/src/components/file-tree-trash-copy.test.ts
+++ b/packages/app/src/components/file-tree-trash-copy.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import type { FileTreeTarget } from '@/components/file-tree-operations';
import {
diff --git a/packages/app/src/components/file-tree-trash-copy.ts b/packages/app/src/components/file-tree-trash-copy.ts
index 1e994233..2494992a 100644
--- a/packages/app/src/components/file-tree-trash-copy.ts
+++ b/packages/app/src/components/file-tree-trash-copy.ts
@@ -1,4 +1,3 @@
-
import type { FileTreeTarget } from '@/components/file-tree-operations';
interface TrashConfirmCopy {
diff --git a/packages/app/src/components/file-tree-utils.ts b/packages/app/src/components/file-tree-utils.ts
index 62788eed..06057726 100644
--- a/packages/app/src/components/file-tree-utils.ts
+++ b/packages/app/src/components/file-tree-utils.ts
@@ -1,4 +1,3 @@
-
import {
type DocumentListEntry,
type InlineAssetMediaKind,
diff --git a/packages/app/src/components/graph-colors.ts b/packages/app/src/components/graph-colors.ts
index c04bf057..1ebb06bd 100644
--- a/packages/app/src/components/graph-colors.ts
+++ b/packages/app/src/components/graph-colors.ts
@@ -1,4 +1,3 @@
-
const DARK_PALETTE = [
'#60a5fa', // Blue - Knowledge, concepts, structure
'#a78bfa', // Violet - Research, analysis, methodology
diff --git a/packages/app/src/components/graph-label-utils.ts b/packages/app/src/components/graph-label-utils.ts
index 37fd78f1..07ef25c9 100644
--- a/packages/app/src/components/graph-label-utils.ts
+++ b/packages/app/src/components/graph-label-utils.ts
@@ -110,7 +110,6 @@ function clampMiddleByCharacters(
return '';
}
-
const maxKeep = Math.max(1, Math.floor((text.length - ellipsis.length) / 2));
for (let keep = maxKeep; keep >= 1; keep--) {
if (text[keep] !== ' ' || text[text.length - keep - 1] !== ' ') continue;
diff --git a/packages/app/src/components/handoff/EditWithAiPanel.dom.test.tsx b/packages/app/src/components/handoff/EditWithAiPanel.dom.test.tsx
index 96cbcca3..85d142fd 100644
--- a/packages/app/src/components/handoff/EditWithAiPanel.dom.test.tsx
+++ b/packages/app/src/components/handoff/EditWithAiPanel.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, test } from 'bun:test';
import type { HandoffTarget, InstallState } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen } from '@testing-library/react';
diff --git a/packages/app/src/components/handoff/EditWithAiPopover.dom.test.tsx b/packages/app/src/components/handoff/EditWithAiPopover.dom.test.tsx
index 751dc30f..a1c6a130 100644
--- a/packages/app/src/components/handoff/EditWithAiPopover.dom.test.tsx
+++ b/packages/app/src/components/handoff/EditWithAiPopover.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 userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/components/handoff/EditWithAiPopover.tsx b/packages/app/src/components/handoff/EditWithAiPopover.tsx
index 24993ed2..c309cf49 100644
--- a/packages/app/src/components/handoff/EditWithAiPopover.tsx
+++ b/packages/app/src/components/handoff/EditWithAiPopover.tsx
@@ -1,4 +1,3 @@
-
import type { HandoffTarget, InstallState, TargetData } from '@inkeep/open-knowledge-core';
import { Trans, useLingui } from '@lingui/react/macro';
import { type ReactNode, useEffect, useEffectEvent, useState } from 'react';
diff --git a/packages/app/src/components/handoff/OpenInAgentContextSubmenu.tsx b/packages/app/src/components/handoff/OpenInAgentContextSubmenu.tsx
index 27e4d330..a1edc720 100644
--- a/packages/app/src/components/handoff/OpenInAgentContextSubmenu.tsx
+++ b/packages/app/src/components/handoff/OpenInAgentContextSubmenu.tsx
@@ -1,4 +1,3 @@
-
import {
type HandoffOutcome,
type HandoffTarget,
diff --git a/packages/app/src/components/handoff/OpenInAgentEmptySpaceSubmenu.tsx b/packages/app/src/components/handoff/OpenInAgentEmptySpaceSubmenu.tsx
index b7f02983..2fbb5c7b 100644
--- a/packages/app/src/components/handoff/OpenInAgentEmptySpaceSubmenu.tsx
+++ b/packages/app/src/components/handoff/OpenInAgentEmptySpaceSubmenu.tsx
@@ -1,4 +1,3 @@
-
import {
type HandoffOutcome,
type HandoffTarget,
diff --git a/packages/app/src/components/handoff/OpenInAgentMenu.tsx b/packages/app/src/components/handoff/OpenInAgentMenu.tsx
index 16e0519c..ab8c34e8 100644
--- a/packages/app/src/components/handoff/OpenInAgentMenu.tsx
+++ b/packages/app/src/components/handoff/OpenInAgentMenu.tsx
@@ -1,4 +1,3 @@
-
import {
type HandoffTarget,
type InstallState,
diff --git a/packages/app/src/components/handoff/OpenInAgentMenuItem.test.ts b/packages/app/src/components/handoff/OpenInAgentMenuItem.test.ts
index 6c471602..bb3c21c8 100644
--- a/packages/app/src/components/handoff/OpenInAgentMenuItem.test.ts
+++ b/packages/app/src/components/handoff/OpenInAgentMenuItem.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import type { InstallState, TargetData } from '@inkeep/open-knowledge-core';
import { KNOWN_TARGETS } from '@/lib/handoff/targets';
diff --git a/packages/app/src/components/handoff/OpenInAgentMenuItem.tsx b/packages/app/src/components/handoff/OpenInAgentMenuItem.tsx
index aeb87aba..e22105cb 100644
--- a/packages/app/src/components/handoff/OpenInAgentMenuItem.tsx
+++ b/packages/app/src/components/handoff/OpenInAgentMenuItem.tsx
@@ -1,4 +1,3 @@
-
import {
AGENT_ICON_COLORS,
AGENT_ICON_COLORS_DARK,
diff --git a/packages/app/src/components/handoff/OpenInAgentTerminalRow.dom.test.tsx b/packages/app/src/components/handoff/OpenInAgentTerminalRow.dom.test.tsx
index ff35b07c..e3b0a72d 100644
--- a/packages/app/src/components/handoff/OpenInAgentTerminalRow.dom.test.tsx
+++ b/packages/app/src/components/handoff/OpenInAgentTerminalRow.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
import type { TerminalCli } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/handoff/dispatch-single-entry-point.test.ts b/packages/app/src/components/handoff/dispatch-single-entry-point.test.ts
index 7e7a07f9..e0238f0e 100644
--- a/packages/app/src/components/handoff/dispatch-single-entry-point.test.ts
+++ b/packages/app/src/components/handoff/dispatch-single-entry-point.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { readdirSync, readFileSync, statSync } from 'node:fs';
import { join, relative } from 'node:path';
diff --git a/packages/app/src/components/handoff/terminal-launch-events.ts b/packages/app/src/components/handoff/terminal-launch-events.ts
index 8d55aa11..48f1cdf1 100644
--- a/packages/app/src/components/handoff/terminal-launch-events.ts
+++ b/packages/app/src/components/handoff/terminal-launch-events.ts
@@ -1,4 +1,3 @@
-
import type { TerminalCli } from '@inkeep/open-knowledge-core';
const TERMINAL_LAUNCH_EVENT = 'open-knowledge:terminal-launch';
diff --git a/packages/app/src/components/handoff/useHandoffDispatch.test.ts b/packages/app/src/components/handoff/useHandoffDispatch.test.ts
index 40c9bf9c..b17dbf07 100644
--- a/packages/app/src/components/handoff/useHandoffDispatch.test.ts
+++ b/packages/app/src/components/handoff/useHandoffDispatch.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import { setTimeout as wait } from 'node:timers/promises';
import type { HandoffOutcome, HandoffPayload, HandoffTarget } from '@inkeep/open-knowledge-core';
diff --git a/packages/app/src/components/handoff/useHandoffDispatch.ts b/packages/app/src/components/handoff/useHandoffDispatch.ts
index 4c5cfc4e..3c723e3d 100644
--- a/packages/app/src/components/handoff/useHandoffDispatch.ts
+++ b/packages/app/src/components/handoff/useHandoffDispatch.ts
@@ -1,4 +1,3 @@
-
import {
type AssembleHandoffPromptInput,
assembleHandoffPrompt,
diff --git a/packages/app/src/components/handoff/useInstalledAgents.test.ts b/packages/app/src/components/handoff/useInstalledAgents.test.ts
index e89b8159..1f69926e 100644
--- a/packages/app/src/components/handoff/useInstalledAgents.test.ts
+++ b/packages/app/src/components/handoff/useInstalledAgents.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
describe('useInstalledAgents module surface', () => {
diff --git a/packages/app/src/components/handoff/useInstalledAgents.ts b/packages/app/src/components/handoff/useInstalledAgents.ts
index b421127c..2c757b7a 100644
--- a/packages/app/src/components/handoff/useInstalledAgents.ts
+++ b/packages/app/src/components/handoff/useInstalledAgents.ts
@@ -1,4 +1,3 @@
-
import type { HandoffTarget, InstallState } from '@inkeep/open-knowledge-core';
import { useEffect, useRef, useState } from 'react';
import {
diff --git a/packages/app/src/components/page-header-utils.test.ts b/packages/app/src/components/page-header-utils.test.ts
index 306ba225..005d8a8c 100644
--- a/packages/app/src/components/page-header-utils.test.ts
+++ b/packages/app/src/components/page-header-utils.test.ts
@@ -1,7 +1,6 @@
import { describe, expect, test } from 'bun:test';
import { resolvePageCover, resolvePageIcon } from './page-header-utils';
-
describe('resolvePageIcon', () => {
test('classifies a single emoji as emoji', () => {
expect(resolvePageIcon('📝')).toEqual({ kind: 'emoji', value: '📝' });
@@ -113,7 +112,6 @@ describe('resolvePageIcon', () => {
});
});
-
describe('resolvePageCover', () => {
test('rejects emoji (covers require an image)', () => {
expect(resolvePageCover('🏔️').kind).toBe('unsupported');
diff --git a/packages/app/src/components/page-header-utils.ts b/packages/app/src/components/page-header-utils.ts
index dfd03228..b71171a5 100644
--- a/packages/app/src/components/page-header-utils.ts
+++ b/packages/app/src/components/page-header-utils.ts
@@ -1,4 +1,3 @@
-
import { IMAGE_EXTENSIONS, isSafeUrl, toDesktopAssetHref } from '@inkeep/open-knowledge-core';
/** Hard cap on raw frontmatter value length we'll classify — anything
diff --git a/packages/app/src/components/prewarm-correlation.ts b/packages/app/src/components/prewarm-correlation.ts
index ce3aa55f..d3d479e2 100644
--- a/packages/app/src/components/prewarm-correlation.ts
+++ b/packages/app/src/components/prewarm-correlation.ts
@@ -1,4 +1,3 @@
-
import { mark } from '@/lib/perf';
import { readNumericOverride } from '@/lib/perf/env-override';
diff --git a/packages/app/src/components/property-inline-link-tokens.ts b/packages/app/src/components/property-inline-link-tokens.ts
index e626a4a6..c1d506a3 100644
--- a/packages/app/src/components/property-inline-link-tokens.ts
+++ b/packages/app/src/components/property-inline-link-tokens.ts
@@ -1,4 +1,3 @@
-
import { parseWikiLink } from '@inkeep/open-knowledge-core';
export type PropertyInlineSegment =
diff --git a/packages/app/src/components/resolve-conflict-dispatch.ts b/packages/app/src/components/resolve-conflict-dispatch.ts
index f321f456..f1acd20f 100644
--- a/packages/app/src/components/resolve-conflict-dispatch.ts
+++ b/packages/app/src/components/resolve-conflict-dispatch.ts
@@ -1,4 +1,3 @@
-
type ResolveStrategy = 'mine' | 'theirs' | 'content' | 'delete';
interface DispatchResult {
@@ -28,8 +27,7 @@ async function dispatchResolve(
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 {}
return { ok: false, detail };
} catch (err) {
const detail = err instanceof Error ? err.message : String(err);
diff --git a/packages/app/src/components/settings/AccountSection.dom.test.tsx b/packages/app/src/components/settings/AccountSection.dom.test.tsx
index ccb4e557..8b56eaeb 100644
--- a/packages/app/src/components/settings/AccountSection.dom.test.tsx
+++ b/packages/app/src/components/settings/AccountSection.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
import { act, cleanup, render, screen, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/components/settings/EmbeddingsKeySection.dom.test.tsx b/packages/app/src/components/settings/EmbeddingsKeySection.dom.test.tsx
index 9a90523c..1f0bd7cd 100644
--- a/packages/app/src/components/settings/EmbeddingsKeySection.dom.test.tsx
+++ b/packages/app/src/components/settings/EmbeddingsKeySection.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
import type { SemanticIndexStatus } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/settings/SearchSection.dom.test.tsx b/packages/app/src/components/settings/SearchSection.dom.test.tsx
index a5703eaf..29c7385c 100644
--- a/packages/app/src/components/settings/SearchSection.dom.test.tsx
+++ b/packages/app/src/components/settings/SearchSection.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import type { Config, ConfigBinding, SemanticIndexStatus } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/settings/SettingsDialogBody.test.ts b/packages/app/src/components/settings/SettingsDialogBody.test.ts
index 8ad4ddf3..9bf4936f 100644
--- a/packages/app/src/components/settings/SettingsDialogBody.test.ts
+++ b/packages/app/src/components/settings/SettingsDialogBody.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
describe('SettingsDialogBody module', () => {
diff --git a/packages/app/src/components/settings/SettingsDialogBodyLazy.ts b/packages/app/src/components/settings/SettingsDialogBodyLazy.ts
index b49bdceb..d5c84ffa 100644
--- a/packages/app/src/components/settings/SettingsDialogBodyLazy.ts
+++ b/packages/app/src/components/settings/SettingsDialogBodyLazy.ts
@@ -1,4 +1,3 @@
-
import { lazyWithPreload } from '@/lib/lazy-with-preload';
export const SettingsDialogBodyLazy = lazyWithPreload(() =>
diff --git a/packages/app/src/components/settings/SettingsDialogErrorBoundary.tsx b/packages/app/src/components/settings/SettingsDialogErrorBoundary.tsx
index 6e085970..d73ac10e 100644
--- a/packages/app/src/components/settings/SettingsDialogErrorBoundary.tsx
+++ b/packages/app/src/components/settings/SettingsDialogErrorBoundary.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { ErrorBoundary, type FallbackProps } from 'react-error-boundary';
import { Button } from '@/components/ui/button';
diff --git a/packages/app/src/components/settings/SettingsDialogShell.dom.test.tsx b/packages/app/src/components/settings/SettingsDialogShell.dom.test.tsx
index 9d73cc12..b4d100d4 100644
--- a/packages/app/src/components/settings/SettingsDialogShell.dom.test.tsx
+++ b/packages/app/src/components/settings/SettingsDialogShell.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from 'bun:test';
import type { ConfigBinding, OkignoreBinding } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen } from '@testing-library/react';
diff --git a/packages/app/src/components/settings/SharingSection.tsx b/packages/app/src/components/settings/SharingSection.tsx
index 22efb7c6..9130d48f 100644
--- a/packages/app/src/components/settings/SharingSection.tsx
+++ b/packages/app/src/components/settings/SharingSection.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import { useEffect, useState } from 'react';
import { toast } from 'sonner';
diff --git a/packages/app/src/components/settings/SkillTargetsPicker.dom.test.tsx b/packages/app/src/components/settings/SkillTargetsPicker.dom.test.tsx
index 4437ce42..d516d1ad 100644
--- a/packages/app/src/components/settings/SkillTargetsPicker.dom.test.tsx
+++ b/packages/app/src/components/settings/SkillTargetsPicker.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
import type { ReactNode } from 'react';
diff --git a/packages/app/src/components/settings/SkillsManagerSection.dom.test.tsx b/packages/app/src/components/settings/SkillsManagerSection.dom.test.tsx
index 6d33ac7f..69ab3a97 100644
--- a/packages/app/src/components/settings/SkillsManagerSection.dom.test.tsx
+++ b/packages/app/src/components/settings/SkillsManagerSection.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
import type { SkillsListSuccess } from '@inkeep/open-knowledge-core';
import { cleanup, render, screen, waitFor } from '@testing-library/react';
diff --git a/packages/app/src/components/settings/SkillsManagerSection.tsx b/packages/app/src/components/settings/SkillsManagerSection.tsx
index 3f0d6c38..864458ae 100644
--- a/packages/app/src/components/settings/SkillsManagerSection.tsx
+++ b/packages/app/src/components/settings/SkillsManagerSection.tsx
@@ -14,7 +14,6 @@ import { openManagedArtifactTab } from '@/lib/open-managed-artifact-tab';
import { SKILL_SCOPE_ORDER, useSkillScopeLabels } from '@/lib/skill-scope';
import { useSettingsRoute } from '@/lib/use-settings-route';
-
interface ScopeGroupChrome {
title: ReactNode;
blurb: ReactNode;
diff --git a/packages/app/src/components/settings/okignore-doc.test.ts b/packages/app/src/components/settings/okignore-doc.test.ts
index 8d86ec97..56df1beb 100644
--- a/packages/app/src/components/settings/okignore-doc.test.ts
+++ b/packages/app/src/components/settings/okignore-doc.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import {
appendPattern,
diff --git a/packages/app/src/components/settings/okignore-doc.ts b/packages/app/src/components/settings/okignore-doc.ts
index 2b4685c0..60cbc48b 100644
--- a/packages/app/src/components/settings/okignore-doc.ts
+++ b/packages/app/src/components/settings/okignore-doc.ts
@@ -1,4 +1,3 @@
-
export interface PatternLine {
kind: 'pattern';
raw: string;
diff --git a/packages/app/src/components/settings/okignore-preview.ts b/packages/app/src/components/settings/okignore-preview.ts
index ccca2b56..bf1cddc0 100644
--- a/packages/app/src/components/settings/okignore-preview.ts
+++ b/packages/app/src/components/settings/okignore-preview.ts
@@ -1,4 +1,3 @@
-
import ignore, { type Ignore } from 'ignore';
export const PREVIEW_CACHE_LIMIT = 256;
diff --git a/packages/app/src/components/settings/okignore-warnings.ts b/packages/app/src/components/settings/okignore-warnings.ts
index e6a34740..a922a0d7 100644
--- a/packages/app/src/components/settings/okignore-warnings.ts
+++ b/packages/app/src/components/settings/okignore-warnings.ts
@@ -1,4 +1,3 @@
-
type OkignoreWarningCode =
| 'trailing-backslash'
| 'unmatched-bracket'
diff --git a/packages/app/src/components/settings/schema-walker.test.ts b/packages/app/src/components/settings/schema-walker.test.ts
index 4fa4c541..bb91e15b 100644
--- a/packages/app/src/components/settings/schema-walker.test.ts
+++ b/packages/app/src/components/settings/schema-walker.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { ConfigSchema } from '@inkeep/open-knowledge-core';
import {
diff --git a/packages/app/src/components/settings/schema-walker.ts b/packages/app/src/components/settings/schema-walker.ts
index fac70c57..b724bf72 100644
--- a/packages/app/src/components/settings/schema-walker.ts
+++ b/packages/app/src/components/settings/schema-walker.ts
@@ -1,4 +1,3 @@
-
import { resolveLeafSchema } from '@inkeep/open-knowledge-core';
import type { z } from 'zod';
@@ -20,7 +19,6 @@ export function buildPatch(
return { [String(head)]: buildPatch(rest, value) };
}
-
export function getFieldDefault(schema: AnyZ): unknown {
let cur: unknown = schema;
for (let depth = 0; depth < 16; depth++) {
diff --git a/packages/app/src/components/settings/use-config-form.test.ts b/packages/app/src/components/settings/use-config-form.test.ts
index 6252ed8b..28ce6da5 100644
--- a/packages/app/src/components/settings/use-config-form.test.ts
+++ b/packages/app/src/components/settings/use-config-form.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, mock, test } from 'bun:test';
import type {
Config,
@@ -15,7 +14,6 @@ import {
runCommit,
} from './use-config-form';
-
describe('applyExternalUpdate', () => {
test('calls form.reset with keepDirtyValues + keepDirty + keepTouched', () => {
const reset = mock();
@@ -37,7 +35,6 @@ describe('applyExternalUpdate', () => {
});
});
-
interface MockedRunCommitForm extends RunCommitForm {
reset?: never;
}
@@ -312,7 +309,6 @@ describe('runCommit — failure path', () => {
});
});
-
describe('pickFirstIssueForPath', () => {
test('returns the issue.message when an issue path matches the field name', () => {
const error: ConfigValidationError = {
@@ -369,7 +365,6 @@ describe('pickFirstIssueForPath', () => {
});
});
-
describe('useConfigForm module shape', () => {
test('exports useConfigForm as a function', async () => {
const mod = await import('./use-config-form');
diff --git a/packages/app/src/components/settings/use-config-form.ts b/packages/app/src/components/settings/use-config-form.ts
index afdd214b..d2079c13 100644
--- a/packages/app/src/components/settings/use-config-form.ts
+++ b/packages/app/src/components/settings/use-config-form.ts
@@ -1,4 +1,3 @@
-
import {
type Config,
type ConfigBinding,
@@ -35,7 +34,6 @@ export function useConfigForm(binding: ConfigBinding): UseConfigFormResult {
return { form, commitField };
}
-
export type ApplyExternalUpdateForm = Pick, 'reset'>;
export function applyExternalUpdate(
diff --git a/packages/app/src/components/share-metadata-rows.tsx b/packages/app/src/components/share-metadata-rows.tsx
index 607ed1cf..c136f81e 100644
--- a/packages/app/src/components/share-metadata-rows.tsx
+++ b/packages/app/src/components/share-metadata-rows.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import type { ReactNode } from 'react';
diff --git a/packages/app/src/components/sidebar-hover-prewarm.ts b/packages/app/src/components/sidebar-hover-prewarm.ts
index cc313084..44dcf30b 100644
--- a/packages/app/src/components/sidebar-hover-prewarm.ts
+++ b/packages/app/src/components/sidebar-hover-prewarm.ts
@@ -1,4 +1,3 @@
-
import { isSystemDoc } from '@/editor/is-system-doc';
import { mark } from '@/lib/perf';
import { readNumericOverride } from '@/lib/perf/env-override';
diff --git a/packages/app/src/components/skill-actions.tsx b/packages/app/src/components/skill-actions.tsx
index 902ae204..38acd716 100644
--- a/packages/app/src/components/skill-actions.tsx
+++ b/packages/app/src/components/skill-actions.tsx
@@ -37,7 +37,6 @@ import { scheduleClipboardWrite } from '@/lib/share/clipboard-adapter';
import { duplicateSkill, installSkill, uninstallSkill } from '@/lib/skills-api';
import { useWorkspace } from '@/lib/use-workspace';
-
export interface SkillActions {
installingName: string | null;
install: (
diff --git a/packages/app/src/components/template-picker-utils.ts b/packages/app/src/components/template-picker-utils.ts
index 49b10547..d6c0931d 100644
--- a/packages/app/src/components/template-picker-utils.ts
+++ b/packages/app/src/components/template-picker-utils.ts
@@ -1,6 +1,5 @@
import type { TemplateMenuEntry } from '@/hooks/use-folder-config';
-
const SCOPE_ORDER: Record = {
local: 0,
inherited: 1,
diff --git a/packages/app/src/components/terminal-session-registry.ts b/packages/app/src/components/terminal-session-registry.ts
index 2361587f..11993717 100644
--- a/packages/app/src/components/terminal-session-registry.ts
+++ b/packages/app/src/components/terminal-session-registry.ts
@@ -1,4 +1,3 @@
-
import type { TerminalCli } from '@inkeep/open-knowledge-core';
export const IDLE_QUIET_MS = 1200;
diff --git a/packages/app/src/components/terminal-wheel.ts b/packages/app/src/components/terminal-wheel.ts
index 8e917d0d..5b0e2e13 100644
--- a/packages/app/src/components/terminal-wheel.ts
+++ b/packages/app/src/components/terminal-wheel.ts
@@ -1,4 +1,3 @@
-
export type WheelButton = 64 | 65;
export interface WheelReportOptions {
diff --git a/packages/app/src/components/text-viewer-languages.ts b/packages/app/src/components/text-viewer-languages.ts
index d0cf7b78..da5e3ea1 100644
--- a/packages/app/src/components/text-viewer-languages.ts
+++ b/packages/app/src/components/text-viewer-languages.ts
@@ -1,4 +1,3 @@
-
import type { Language } from '@codemirror/language';
const cache = new Map>();
diff --git a/packages/app/src/components/ui/command.tsx b/packages/app/src/components/ui/command.tsx
index 6fbf16ac..824632e1 100644
--- a/packages/app/src/components/ui/command.tsx
+++ b/packages/app/src/components/ui/command.tsx
@@ -1,4 +1,3 @@
-
import { Command as CommandPrimitive } from 'cmdk';
import { SearchIcon } from 'lucide-react';
import type { ComponentProps } from 'react';
diff --git a/packages/app/src/components/ui/form.test.ts b/packages/app/src/components/ui/form.test.ts
index e89e3f6a..7fb8f673 100644
--- a/packages/app/src/components/ui/form.test.ts
+++ b/packages/app/src/components/ui/form.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
describe('ui/form module', () => {
diff --git a/packages/app/src/editor/ComposerMentionInput.tsx b/packages/app/src/editor/ComposerMentionInput.tsx
index 953b0c7c..fa4daaaa 100644
--- a/packages/app/src/editor/ComposerMentionInput.tsx
+++ b/packages/app/src/editor/ComposerMentionInput.tsx
@@ -1,4 +1,3 @@
-
import type { JSONContent } from '@tiptap/core';
import { EditorContent, useEditor } from '@tiptap/react';
import { type Ref, useEffect, useImperativeHandle, useRef } from 'react';
diff --git a/packages/app/src/editor/DocumentContext.tsx b/packages/app/src/editor/DocumentContext.tsx
index 344ce065..ee1c0226 100644
--- a/packages/app/src/editor/DocumentContext.tsx
+++ b/packages/app/src/editor/DocumentContext.tsx
@@ -1447,8 +1447,7 @@ if (import.meta.hot) {
delete (window as { __test_rejectSyncPromise?: unknown }).__test_rejectSyncPromise;
delete (window as { __test_armPendingRejection?: unknown }).__test_armPendingRejection;
delete (window as { __test_closeActiveWebSocket?: unknown }).__test_closeActiveWebSocket;
- } catch {
- }
+ } catch {}
}
});
}
diff --git a/packages/app/src/editor/SourceEditor.tsx b/packages/app/src/editor/SourceEditor.tsx
index ca717175..e732ff1f 100644
--- a/packages/app/src/editor/SourceEditor.tsx
+++ b/packages/app/src/editor/SourceEditor.tsx
@@ -111,7 +111,6 @@ export function SourceEditor({
sourceModeActiveRef.current = isSourceModeActive;
}, [isSourceModeActive]);
-
const cmEntryRef = useRef(null);
// biome-ignore lint/correctness/useExhaustiveDependencies: see comment above
useEffect(() => {
diff --git a/packages/app/src/editor/TiptapEditor.tsx b/packages/app/src/editor/TiptapEditor.tsx
index cd164c1f..8f12ad0d 100644
--- a/packages/app/src/editor/TiptapEditor.tsx
+++ b/packages/app/src/editor/TiptapEditor.tsx
@@ -129,8 +129,7 @@ function repairDetachedEditorContent(editor: Editor, portalTarget: HTMLElement):
try {
view.setProps({ nodeViews: {} });
- } catch {
- }
+ } catch {}
editorWithContent.contentComponent = null;
editorWithContent.isEditorContentInitialized = false;
return true;
@@ -571,7 +570,6 @@ const TiptapEditorChrome: FC = ({
};
}, [editor, docName]);
-
useEffect(() => {
const activityMap = provider.document.getMap('agent-flash');
let lastSeenTimestamp = Date.now();
diff --git a/packages/app/src/editor/active-editor.ts b/packages/app/src/editor/active-editor.ts
index 1b126644..b49b53f3 100644
--- a/packages/app/src/editor/active-editor.ts
+++ b/packages/app/src/editor/active-editor.ts
@@ -1,4 +1,3 @@
-
import type { Editor } from '@tiptap/core';
const editors = new Map();
diff --git a/packages/app/src/editor/asset-dispatch/dispatcher.ts b/packages/app/src/editor/asset-dispatch/dispatcher.ts
index b1391085..3d4036a8 100644
--- a/packages/app/src/editor/asset-dispatch/dispatcher.ts
+++ b/packages/app/src/editor/asset-dispatch/dispatcher.ts
@@ -1,4 +1,3 @@
-
import { type AssetViewerRegistry, assetViewerRegistry } from './registry.ts';
import type { AssetClickContext } from './types.ts';
diff --git a/packages/app/src/editor/asset-dispatch/index.ts b/packages/app/src/editor/asset-dispatch/index.ts
index f9121bc8..297810a2 100644
--- a/packages/app/src/editor/asset-dispatch/index.ts
+++ b/packages/app/src/editor/asset-dispatch/index.ts
@@ -1,2 +1 @@
-
export { dispatchAssetClick } from './dispatcher.ts';
diff --git a/packages/app/src/editor/asset-dispatch/registry.ts b/packages/app/src/editor/asset-dispatch/registry.ts
index f5a5e973..af561a58 100644
--- a/packages/app/src/editor/asset-dispatch/registry.ts
+++ b/packages/app/src/editor/asset-dispatch/registry.ts
@@ -1,4 +1,3 @@
-
import type { AssetViewer, AssetViewerLookupResult } from './types.ts';
export class AssetViewerRegistry {
diff --git a/packages/app/src/editor/asset-dispatch/types.ts b/packages/app/src/editor/asset-dispatch/types.ts
index 4085a600..8d6adfcf 100644
--- a/packages/app/src/editor/asset-dispatch/types.ts
+++ b/packages/app/src/editor/asset-dispatch/types.ts
@@ -1,4 +1,3 @@
-
export interface AssetClickContext {
readonly url: string;
readonly projectRelPath: string;
diff --git a/packages/app/src/editor/binding-staleness-guard.test.ts b/packages/app/src/editor/binding-staleness-guard.test.ts
index 1ec36384..f09cdf13 100644
--- a/packages/app/src/editor/binding-staleness-guard.test.ts
+++ b/packages/app/src/editor/binding-staleness-guard.test.ts
@@ -1,4 +1,3 @@
-
import { afterAll, afterEach, beforeAll, describe, expect, test } from 'bun:test';
import { randomUUID } from 'node:crypto';
import { getSchema } from '@tiptap/core';
@@ -15,7 +14,6 @@ import {
} from './binding-staleness-guard';
import { sharedExtensions } from './extensions/shared';
-
function installDomGlobals(): () => void {
const dom = new JSDOM('', {
url: 'http://localhost:5173',
@@ -74,7 +72,6 @@ afterAll(() => {
restoreDomGlobals = null;
});
-
const schema = getSchema(sharedExtensions);
/** Stands in for a provider applying a remote peer's update (origin is the
@@ -248,7 +245,6 @@ function createHarness(options: HarnessOptions = {}): GuardHarness {
return harness;
}
-
describe('pure helpers', () => {
test('isDiverged is true exactly when external is ahead of applied', () => {
expect(isDiverged(0, 0)).toBe(false);
@@ -279,7 +275,6 @@ describe('pure helpers', () => {
});
});
-
describe('counter semantics', () => {
test('a wedged external burst is reported once, deferred, with the full backlog', async () => {
const harness = createHarness();
@@ -330,7 +325,6 @@ describe('counter semantics', () => {
});
});
-
describe('publication gate', () => {
test('while diverged, every transaction without y-sync meta is blocked — including selection-only', async () => {
const harness = createHarness({ seedText: 'long enough to move a cursor' });
@@ -383,7 +377,6 @@ describe('publication gate', () => {
});
});
-
describe('wedge trigger', () => {
test('fires once per divergence episode across repeated wedged bumps; the gate keeps blocking', async () => {
const harness = createHarness();
@@ -457,7 +450,6 @@ describe('wedge trigger', () => {
});
});
-
describe('binding write-back seam', () => {
/** What the vendored ySyncPlugin's pluginView `update` callback does
* unconditionally on every view-state update (y-tiptap.cjs view section):
@@ -542,7 +534,6 @@ describe('binding write-back seam', () => {
});
});
-
describe('no false positives on healthy bindings', () => {
for (const order of ['registered-before-guard', 'registered-after-guard'] as const) {
test(`rapid external stream interleaved with local typing stays open (binding ${order})`, async () => {
diff --git a/packages/app/src/editor/binding-staleness-guard.ts b/packages/app/src/editor/binding-staleness-guard.ts
index e467cfc7..758caca8 100644
--- a/packages/app/src/editor/binding-staleness-guard.ts
+++ b/packages/app/src/editor/binding-staleness-guard.ts
@@ -5,7 +5,6 @@ import { ySyncPluginKey } from '@tiptap/y-tiptap';
import type * as Y from 'yjs';
import { mark } from '../lib/perf/mark';
-
export interface WedgeDetail {
externalSeq: number;
appliedSeq: number;
diff --git a/packages/app/src/editor/block-ux/keyboard-nav.ts b/packages/app/src/editor/block-ux/keyboard-nav.ts
index a6a7d98f..7e97adc6 100644
--- a/packages/app/src/editor/block-ux/keyboard-nav.ts
+++ b/packages/app/src/editor/block-ux/keyboard-nav.ts
@@ -1,4 +1,3 @@
-
import { incrementJsxArrowNodeSelectFailed } from '@inkeep/open-knowledge-core';
import type { Editor } from '@tiptap/core';
import { Extension } from '@tiptap/core';
diff --git a/packages/app/src/editor/branch-invalidation.test.ts b/packages/app/src/editor/branch-invalidation.test.ts
index a18f68a7..9709fc5e 100644
--- a/packages/app/src/editor/branch-invalidation.test.ts
+++ b/packages/app/src/editor/branch-invalidation.test.ts
@@ -118,7 +118,6 @@ describe('handleBranchSwitched', () => {
expect(clear2).toHaveBeenCalledTimes(1);
});
-
test('swallows clearData failures and still recycles', async () => {
pool = new ProviderPool(3, DUMMY_WS);
pool.setExpectedServerInstanceId(TEST_SERVER_INSTANCE_ID);
diff --git a/packages/app/src/editor/branch-invalidation.ts b/packages/app/src/editor/branch-invalidation.ts
index f392cde1..480223e5 100644
--- a/packages/app/src/editor/branch-invalidation.ts
+++ b/packages/app/src/editor/branch-invalidation.ts
@@ -1,4 +1,3 @@
-
import { z } from 'zod';
import type { ProviderPool } from './provider-pool';
diff --git a/packages/app/src/editor/bubble-menu/BubbleMenuBar.tsx b/packages/app/src/editor/bubble-menu/BubbleMenuBar.tsx
index 27be06b6..c5a9d333 100644
--- a/packages/app/src/editor/bubble-menu/BubbleMenuBar.tsx
+++ b/packages/app/src/editor/bubble-menu/BubbleMenuBar.tsx
@@ -75,8 +75,7 @@ export function BubbleMenuBar({
popup.style.top = `${y}px`;
}
})
- .catch(() => {
- });
+ .catch(() => {});
});
};
diff --git a/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.dom.test.tsx b/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.dom.test.tsx
index 5ecaf1d1..907e5850 100644
--- a/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.dom.test.tsx
+++ b/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import { act, cleanup, render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
diff --git a/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.tsx b/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.tsx
index 6f71b7a4..842427e0 100644
--- a/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.tsx
+++ b/packages/app/src/editor/bubble-menu/EditWithAiBubbleButton.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import { isMacOS } from '@tiptap/core';
import type { Editor } from '@tiptap/react';
diff --git a/packages/app/src/editor/bubble-menu/FileBubbleButtons.tsx b/packages/app/src/editor/bubble-menu/FileBubbleButtons.tsx
index 80bd5c49..c3d5611c 100644
--- a/packages/app/src/editor/bubble-menu/FileBubbleButtons.tsx
+++ b/packages/app/src/editor/bubble-menu/FileBubbleButtons.tsx
@@ -1,4 +1,3 @@
-
import { Trans, useLingui } from '@lingui/react/macro';
import type { Editor } from '@tiptap/react';
import { useEditorState } from '@tiptap/react';
diff --git a/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.dom.test.tsx b/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.dom.test.tsx
index 90f356e4..300f419d 100644
--- a/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.dom.test.tsx
+++ b/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { cleanup, render } from '@testing-library/react';
import type { Editor } from '@tiptap/react';
diff --git a/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.tsx b/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.tsx
index dee88be2..7b350047 100644
--- a/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.tsx
+++ b/packages/app/src/editor/bubble-menu/FootnoteBubbleButton.tsx
@@ -1,4 +1,3 @@
-
import {
collectFootnoteIdentifiers,
findFootnoteDefinitionInsertPos,
diff --git a/packages/app/src/editor/bubble-menu/ImageAlignButtons.test.ts b/packages/app/src/editor/bubble-menu/ImageAlignButtons.test.ts
index 028be7c9..8679f7bc 100644
--- a/packages/app/src/editor/bubble-menu/ImageAlignButtons.test.ts
+++ b/packages/app/src/editor/bubble-menu/ImageAlignButtons.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import type { Editor } from '@tiptap/react';
import { isImageNodeSelected } from './ImageAlignButtons';
diff --git a/packages/app/src/editor/bubble-menu/ImageAlignButtons.tsx b/packages/app/src/editor/bubble-menu/ImageAlignButtons.tsx
index 8f0d7472..a21e80ff 100644
--- a/packages/app/src/editor/bubble-menu/ImageAlignButtons.tsx
+++ b/packages/app/src/editor/bubble-menu/ImageAlignButtons.tsx
@@ -1,4 +1,3 @@
-
import { NodeSelection } from '@tiptap/pm/state';
import type { Editor } from '@tiptap/react';
import { useEditorState } from '@tiptap/react';
diff --git a/packages/app/src/editor/client-persistence.test.ts b/packages/app/src/editor/client-persistence.test.ts
index 75de15d7..d92c4da0 100644
--- a/packages/app/src/editor/client-persistence.test.ts
+++ b/packages/app/src/editor/client-persistence.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, spyOn, test } from 'bun:test';
import { randomUUID } from 'node:crypto';
import * as Y from 'yjs';
@@ -288,8 +287,7 @@ describe('createClientPersistence', () => {
warnSpy.mockRestore();
try {
blocker.close();
- } catch {
- }
+ } catch {}
docA.destroy();
}
});
diff --git a/packages/app/src/editor/client-persistence.ts b/packages/app/src/editor/client-persistence.ts
index 58d1c7b4..90b3e786 100644
--- a/packages/app/src/editor/client-persistence.ts
+++ b/packages/app/src/editor/client-persistence.ts
@@ -1,4 +1,3 @@
-
import { LINEAGE_EPOCH_KEY } from '@inkeep/open-knowledge-core';
import { IndexeddbPersistence } from 'y-indexeddb';
import * as Y from 'yjs';
@@ -109,8 +108,7 @@ class ClientPersistenceImpl implements ClientPersistenceProvider {
reject(err instanceof Error ? err : new Error(String(err)));
try {
tx.abort();
- } catch {
- }
+ } catch {}
}
};
tx.oncomplete = () => resolve();
diff --git a/packages/app/src/editor/clipboard/clipboard-sanitize.test.ts b/packages/app/src/editor/clipboard/clipboard-sanitize.test.ts
index 83bc7d48..fff801fe 100644
--- a/packages/app/src/editor/clipboard/clipboard-sanitize.test.ts
+++ b/packages/app/src/editor/clipboard/clipboard-sanitize.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import {
classifyUrlPortability,
@@ -408,7 +407,6 @@ describe('OPT_OUT_ATTR — descriptor opt-out marker', () => {
});
describe('classifyUrlPortability — single-pass classification with reason bucket', () => {
-
describe('portable inputs (reason absent)', () => {
test('fragment-only refs return { portable: true }', () => {
expect(classifyUrlPortability('#section')).toEqual({ portable: true });
diff --git a/packages/app/src/editor/clipboard/clipboard-sanitize.ts b/packages/app/src/editor/clipboard/clipboard-sanitize.ts
index 56e37965..60314421 100644
--- a/packages/app/src/editor/clipboard/clipboard-sanitize.ts
+++ b/packages/app/src/editor/clipboard/clipboard-sanitize.ts
@@ -1,4 +1,3 @@
-
import { isRelativeUrl, SAFE_URL_SCHEME_RE } from '@inkeep/open-knowledge-core';
import * as ipaddr from 'ipaddr.js';
@@ -78,7 +77,6 @@ export function sanitizeStyleAttrValue(value: string): string {
return value;
}
-
function parseColorBody(body: string): [number, number, number, number | null] | null {
const slashIdx = body.indexOf('/');
const main = (slashIdx === -1 ? body : body.slice(0, slashIdx)).trim();
@@ -183,7 +181,6 @@ export function convertCssColors(value: string): string {
});
}
-
const PORTABLE_NAVIGATION_SCHEMES: ReadonlySet = new Set([
'mailto',
'tel',
diff --git a/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.test.ts b/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.test.ts
index d5614357..fc6e336a 100644
--- a/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.test.ts
+++ b/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { classifyUrlPortability } from './clipboard-sanitize.ts';
import {
@@ -67,7 +66,6 @@ describe('toneForType — type-to-tone lookup with prototype-pollution guard', (
});
});
-
describe('paletteUrlReason — portability decision', () => {
test('returns null for fragment-only refs', () => {
expect(paletteUrlReason('#section')).toBeNull();
diff --git a/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.ts b/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.ts
index 273ab249..38d2985f 100644
--- a/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.ts
+++ b/packages/app/src/editor/clipboard/clipboard-walker-fallback-palette.ts
@@ -1,4 +1,3 @@
-
import type { Node as PmNode } from '@tiptap/pm/model';
import {
classifyUrlPortability,
diff --git a/packages/app/src/editor/clipboard/clipboard-walker.test.ts b/packages/app/src/editor/clipboard/clipboard-walker.test.ts
index 2634efe8..5a690c98 100644
--- a/packages/app/src/editor/clipboard/clipboard-walker.test.ts
+++ b/packages/app/src/editor/clipboard/clipboard-walker.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { Schema } from '@tiptap/pm/model';
import {
@@ -183,7 +182,6 @@ describe('buildInlineStyleFrom — modern CSS color downgrade', () => {
});
describe('selectionPartiallyCoversTopLevelNode — selection-bound containment guard', () => {
-
const schema = new Schema({
nodes: {
doc: { content: 'block+' },
@@ -299,7 +297,6 @@ describe('glyphForLucide — pure lookup for cross-app icon substitution', () =>
});
});
-
function fakeElementWithClosest(closestResults: Record): Element {
return {
closest: (selector: string) => closestResults[selector] ?? null,
@@ -319,7 +316,6 @@ describe('chooseEmissionClass — paragraph-content-model rule', () => {
});
});
-
interface FakeNode {
tagName: string;
attrs: Record;
@@ -502,7 +498,6 @@ describe('applyWikiLinkTransform — wiki-link rewrite', () => {
});
});
-
interface PostPassFakeElement {
tagName: string;
attrs: Record;
diff --git a/packages/app/src/editor/clipboard/clipboard-walker.ts b/packages/app/src/editor/clipboard/clipboard-walker.ts
index a7e25661..b17d8d0f 100644
--- a/packages/app/src/editor/clipboard/clipboard-walker.ts
+++ b/packages/app/src/editor/clipboard/clipboard-walker.ts
@@ -1,4 +1,3 @@
-
import { normalizeNullableString, wikiLinkHref } from '@inkeep/open-knowledge-core';
import type { Node as PmNode, Slice } from '@tiptap/pm/model';
import type { EditorView } from '@tiptap/pm/view';
@@ -83,7 +82,6 @@ export const ATTR_BLOCKLIST: ReadonlySet = new Set([
'data-pm-slice',
]);
-
export interface ComputedStyleLike {
getPropertyValue(prop: string): string;
}
@@ -341,7 +339,6 @@ function walkPair(live: Element, clone: Element, env: WalkerEnv): void {
}
}
-
export function applyWikiLinkTransform(root: Element): void {
const spans = root.querySelectorAll('span[data-wiki-link]');
for (const span of Array.from(spans)) {
@@ -361,7 +358,6 @@ export function applyWikiLinkTransform(root: Element): void {
}
}
-
type WalkerUrlLeafTag = Exclude;
const URL_LEAF_TAGS: ReadonlySet = new Set([
diff --git a/packages/app/src/editor/clipboard/detect-source.test.ts b/packages/app/src/editor/clipboard/detect-source.test.ts
index a6ede7c1..623ff5f8 100644
--- a/packages/app/src/editor/clipboard/detect-source.test.ts
+++ b/packages/app/src/editor/clipboard/detect-source.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { detectSource } from './detect-source.ts';
diff --git a/packages/app/src/editor/clipboard/detect-source.ts b/packages/app/src/editor/clipboard/detect-source.ts
index e0c29223..7a072ba6 100644
--- a/packages/app/src/editor/clipboard/detect-source.ts
+++ b/packages/app/src/editor/clipboard/detect-source.ts
@@ -1,4 +1,3 @@
-
export type ClipboardSource =
| 'vscode'
| 'gfm'
diff --git a/packages/app/src/editor/clipboard/handle-drop.test.ts b/packages/app/src/editor/clipboard/handle-drop.test.ts
index 60df0439..4496bb64 100644
--- a/packages/app/src/editor/clipboard/handle-drop.test.ts
+++ b/packages/app/src/editor/clipboard/handle-drop.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import * as actualCore from '@inkeep/open-knowledge-core';
import * as actualSonner from 'sonner';
diff --git a/packages/app/src/editor/clipboard/handle-paste.test.ts b/packages/app/src/editor/clipboard/handle-paste.test.ts
index 739e43fb..18ddde78 100644
--- a/packages/app/src/editor/clipboard/handle-paste.test.ts
+++ b/packages/app/src/editor/clipboard/handle-paste.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import * as actualCore from '@inkeep/open-knowledge-core';
import * as actualSonner from 'sonner';
diff --git a/packages/app/src/editor/clipboard/handle-paste.ts b/packages/app/src/editor/clipboard/handle-paste.ts
index 763dc5a1..d1f84eba 100644
--- a/packages/app/src/editor/clipboard/handle-paste.ts
+++ b/packages/app/src/editor/clipboard/handle-paste.ts
@@ -1,4 +1,3 @@
-
import type { MarkdownManager } from '@inkeep/open-knowledge-core';
import { htmlToMdast, mdastToMarkdown } from '@inkeep/open-knowledge-core';
import type { JSONContent } from '@tiptap/core';
diff --git a/packages/app/src/editor/clipboard/index.ts b/packages/app/src/editor/clipboard/index.ts
index 0bafa091..37a12d90 100644
--- a/packages/app/src/editor/clipboard/index.ts
+++ b/packages/app/src/editor/clipboard/index.ts
@@ -1,4 +1,3 @@
-
export { OPT_OUT_ATTR } from './clipboard-sanitize.ts';
export { createHandleDrop, createHandlePaste } from './handle-paste.ts';
export {
diff --git a/packages/app/src/editor/clipboard/instrument.test.ts b/packages/app/src/editor/clipboard/instrument.test.ts
index 7447ed06..335da32a 100644
--- a/packages/app/src/editor/clipboard/instrument.test.ts
+++ b/packages/app/src/editor/clipboard/instrument.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
import { ChunkedInsertError, HtmlPayloadTooLargeError } from '@inkeep/open-knowledge-core';
diff --git a/packages/app/src/editor/clipboard/instrument.ts b/packages/app/src/editor/clipboard/instrument.ts
index ad7c1cee..c7effa5b 100644
--- a/packages/app/src/editor/clipboard/instrument.ts
+++ b/packages/app/src/editor/clipboard/instrument.ts
@@ -2,7 +2,6 @@ import { ChunkedInsertError, HtmlPayloadTooLargeError } from '@inkeep/open-knowl
import type { UrlPortabilityReason } from './clipboard-sanitize.ts';
import type { ClipboardSource } from './detect-source.ts';
-
type ClipboardEventName =
| 'clipboard-slow-op'
| 'clipboard-source-detected'
diff --git a/packages/app/src/editor/clipboard/is-markdown.test.ts b/packages/app/src/editor/clipboard/is-markdown.test.ts
index 239b2af2..e2e7ca23 100644
--- a/packages/app/src/editor/clipboard/is-markdown.test.ts
+++ b/packages/app/src/editor/clipboard/is-markdown.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { isMarkdown } from './is-markdown.ts';
diff --git a/packages/app/src/editor/clipboard/is-markdown.ts b/packages/app/src/editor/clipboard/is-markdown.ts
index 333a5b33..ae00bfba 100644
--- a/packages/app/src/editor/clipboard/is-markdown.ts
+++ b/packages/app/src/editor/clipboard/is-markdown.ts
@@ -1,4 +1,3 @@
-
const FENCE_RE = /^```/m;
const HEADING_RE = /^#{1,6} /m;
const BULLET_RE = /^[-*+] /m;
diff --git a/packages/app/src/editor/clipboard/non-portable-render-source-fallback.test.ts b/packages/app/src/editor/clipboard/non-portable-render-source-fallback.test.ts
index 22f37da4..ac29245b 100644
--- a/packages/app/src/editor/clipboard/non-portable-render-source-fallback.test.ts
+++ b/packages/app/src/editor/clipboard/non-portable-render-source-fallback.test.ts
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import type { Node as PmNode } from '@tiptap/pm/model';
import { sourceFallbackFormFor } from './non-portable-render-source-fallback.ts';
diff --git a/packages/app/src/editor/clipboard/non-portable-render-source-fallback.ts b/packages/app/src/editor/clipboard/non-portable-render-source-fallback.ts
index 2b946739..62651c26 100644
--- a/packages/app/src/editor/clipboard/non-portable-render-source-fallback.ts
+++ b/packages/app/src/editor/clipboard/non-portable-render-source-fallback.ts
@@ -1,4 +1,3 @@
-
import type { Node as PmNode } from '@tiptap/pm/model';
type SourceFallbackForm = { source: string };
diff --git a/packages/app/src/editor/clipboard/paste-failure-toast.test.ts b/packages/app/src/editor/clipboard/paste-failure-toast.test.ts
index 83eb2671..6a2e7f12 100644
--- a/packages/app/src/editor/clipboard/paste-failure-toast.test.ts
+++ b/packages/app/src/editor/clipboard/paste-failure-toast.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import * as actualSonner from 'sonner';
diff --git a/packages/app/src/editor/clipboard/paste-failure-toast.ts b/packages/app/src/editor/clipboard/paste-failure-toast.ts
index 6b9a64ca..28da4659 100644
--- a/packages/app/src/editor/clipboard/paste-failure-toast.ts
+++ b/packages/app/src/editor/clipboard/paste-failure-toast.ts
@@ -1,4 +1,3 @@
-
import { toast } from 'sonner';
const THROTTLE_MS = 3000;
diff --git a/packages/app/src/editor/clipboard/serialize.test.ts b/packages/app/src/editor/clipboard/serialize.test.ts
index 9afe862c..af9a03f2 100644
--- a/packages/app/src/editor/clipboard/serialize.test.ts
+++ b/packages/app/src/editor/clipboard/serialize.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import type { JSONContent } from '@tiptap/core';
import type { Fragment } from '@tiptap/pm/model';
@@ -87,7 +86,6 @@ describe('createClipboardTextSerializer', () => {
});
describe('createClipboardHtmlSerializer — walker→markdown tier dispatch', () => {
-
function emptyFragment(): Fragment {
return { firstChild: null } as unknown as Fragment;
}
@@ -182,7 +180,6 @@ describe('createClipboardHtmlSerializer — walker→markdown tier dispatch', ()
});
describe('createClipboardHtmlSerializer — walker env wires markdown reconstruction', () => {
-
let warnCalls: string[];
let innerOrigWarn: typeof console.warn;
beforeEach(() => {
@@ -264,7 +261,6 @@ function wrapDescriptor(el: FakeDescriptorElement): Element {
}
describe('findDescriptorRoot — outermost-wrapper selection', () => {
-
test('(a) bare element with only ProseMirror parent → returns null', () => {
const proseMirror = makeDescriptorEl({ classes: ['ProseMirror'] });
const img = makeDescriptorEl();
@@ -341,7 +337,6 @@ describe('findDescriptorRoot — outermost-wrapper selection', () => {
});
describe('sliceToDocJson — inline-first wrapping branch', () => {
-
const inlineImageSchema = new Schema({
nodes: {
doc: { content: 'block+' },
diff --git a/packages/app/src/editor/clipboard/serialize.ts b/packages/app/src/editor/clipboard/serialize.ts
index 4ab180aa..0793f6b8 100644
--- a/packages/app/src/editor/clipboard/serialize.ts
+++ b/packages/app/src/editor/clipboard/serialize.ts
@@ -1,4 +1,3 @@
-
import type { MarkdownManager } from '@inkeep/open-knowledge-core';
import { markdownToHtml } from '@inkeep/open-knowledge-core';
import type { JSONContent } from '@tiptap/core';
diff --git a/packages/app/src/editor/clipboard/shift-tracker.test.ts b/packages/app/src/editor/clipboard/shift-tracker.test.ts
index bc7f11a2..78be5917 100644
--- a/packages/app/src/editor/clipboard/shift-tracker.test.ts
+++ b/packages/app/src/editor/clipboard/shift-tracker.test.ts
@@ -1,4 +1,3 @@
-
import { afterAll, beforeAll, beforeEach, describe, expect, test } from 'bun:test';
interface Listener {
diff --git a/packages/app/src/editor/clipboard/shift-tracker.ts b/packages/app/src/editor/clipboard/shift-tracker.ts
index ee57f6e9..e214f82e 100644
--- a/packages/app/src/editor/clipboard/shift-tracker.ts
+++ b/packages/app/src/editor/clipboard/shift-tracker.ts
@@ -1,4 +1,3 @@
-
let shiftHeldLatch = false;
let listenersAttached = false;
diff --git a/packages/app/src/editor/clipboard/source-clipboard-recovery.test.ts b/packages/app/src/editor/clipboard/source-clipboard-recovery.test.ts
index fcc21ab6..0a5e3069 100644
--- a/packages/app/src/editor/clipboard/source-clipboard-recovery.test.ts
+++ b/packages/app/src/editor/clipboard/source-clipboard-recovery.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
import { ChunkedInsertError } from '@inkeep/open-knowledge-core';
import * as actualSonner from 'sonner';
diff --git a/packages/app/src/editor/clipboard/source-clipboard.test.ts b/packages/app/src/editor/clipboard/source-clipboard.test.ts
index 935100d3..e9044ed2 100644
--- a/packages/app/src/editor/clipboard/source-clipboard.test.ts
+++ b/packages/app/src/editor/clipboard/source-clipboard.test.ts
@@ -1,4 +1,3 @@
-
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
import { buildSourceModeHtml, handleCopyOrCut, handlePaste } from './source-clipboard.ts';
diff --git a/packages/app/src/editor/components/Accordion.test.tsx b/packages/app/src/editor/components/Accordion.test.tsx
index fe7bfe1b..7fa349a9 100644
--- a/packages/app/src/editor/components/Accordion.test.tsx
+++ b/packages/app/src/editor/components/Accordion.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { renderToString } from 'react-dom/server';
import { Accordion } from './Accordion.tsx';
diff --git a/packages/app/src/editor/components/Accordion.tsx b/packages/app/src/editor/components/Accordion.tsx
index 4fb9b666..95efdff1 100644
--- a/packages/app/src/editor/components/Accordion.tsx
+++ b/packages/app/src/editor/components/Accordion.tsx
@@ -1,4 +1,3 @@
-
import { ChevronRight } from 'lucide-react';
import { resolveLucideIcon } from './lucide-icon-allowlist.ts';
diff --git a/packages/app/src/editor/components/Audio.tsx b/packages/app/src/editor/components/Audio.tsx
index 1a32406d..9d5a734d 100644
--- a/packages/app/src/editor/components/Audio.tsx
+++ b/packages/app/src/editor/components/Audio.tsx
@@ -1,4 +1,3 @@
-
import { toDesktopAssetHref } from '@inkeep/open-knowledge-core';
interface AudioProps {
diff --git a/packages/app/src/editor/components/Callout.test.tsx b/packages/app/src/editor/components/Callout.test.tsx
index d3639d5a..7eebbb70 100644
--- a/packages/app/src/editor/components/Callout.test.tsx
+++ b/packages/app/src/editor/components/Callout.test.tsx
@@ -1,4 +1,3 @@
-
import { describe, expect, test } from 'bun:test';
import { renderToString } from 'react-dom/server';
import { Callout } from './Callout.tsx';
diff --git a/packages/app/src/editor/components/Callout.tsx b/packages/app/src/editor/components/Callout.tsx
index 32178a1d..41c44e3c 100644
--- a/packages/app/src/editor/components/Callout.tsx
+++ b/packages/app/src/editor/components/Callout.tsx
@@ -1,4 +1,3 @@
-
import { Trans } from '@lingui/react/macro';
import {
AlertOctagon,
diff --git a/packages/app/src/editor/components/CodePreviewEditModal.dom.test.tsx b/packages/app/src/editor/components/CodePreviewEditModal.dom.test.tsx
index 55657156..f4c22065 100644
--- a/packages/app/src/editor/components/CodePreviewEditModal.dom.test.tsx
+++ b/packages/app/src/editor/components/CodePreviewEditModal.dom.test.tsx
@@ -1,4 +1,3 @@
-
import { afterEach, describe, expect, test } from 'bun:test';
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { useState } from 'react';
diff --git a/packages/app/src/editor/components/CodePreviewEditModal.tsx b/packages/app/src/editor/components/CodePreviewEditModal.tsx
index 82c32493..5c1b8388 100644
--- a/packages/app/src/editor/components/CodePreviewEditModal.tsx
+++ b/packages/app/src/editor/components/CodePreviewEditModal.tsx
@@ -1,4 +1,3 @@
-
import { defaultKeymap, history, historyKeymap, indentWithTab } from '@codemirror/commands';
import { css } from '@codemirror/lang-css';
import { html } from '@codemirror/lang-html';
@@ -183,9 +182,7 @@ export function CodePreviewEditModal({
return (