From a77d5ff45117df7b4b4a2bbf7d2f9a78b1829605 Mon Sep 17 00:00:00 2001 From: lucaronin Date: Sun, 22 Feb 2026 13:08:16 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20simple=20ESLint=20errors=20=E2=80=94=20r?= =?UTF-8?q?egex,=20unused=20vars,=20unused=20expressions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - eslint.config.js: ignore coverage/ directory (generated files) - frontmatter.ts: no-regex-spaces — use {2} instead of literal spaces - wikilinks.ts: no-useless-escape — remove unnecessary \[ escape - ai-chat.ts: remove unused _model param from getContextLimit - noteListHelpers.ts: remove unused _modifiedFiles param from filterEntries - NoteList.tsx: replace ternary expression statement with if/else - useTabManagement.ts: remove stale eslint-disable-next-line comment Co-Authored-By: Claude Opus 4.6 --- eslint.config.js | 2 +- src/components/NoteList.tsx | 4 ++-- src/hooks/useTabManagement.ts | 1 - src/utils/ai-chat.ts | 4 ++-- src/utils/frontmatter.ts | 2 +- src/utils/noteListHelpers.ts | 4 ++-- src/utils/wikilinks.ts | 2 +- 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 5e6b472f..b50d4e1f 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -6,7 +6,7 @@ import tseslint from 'typescript-eslint' import { defineConfig, globalIgnores } from 'eslint/config' export default defineConfig([ - globalIgnores(['dist']), + globalIgnores(['dist', 'coverage']), { files: ['**/*.{ts,tsx}'], extends: [ diff --git a/src/components/NoteList.tsx b/src/components/NoteList.tsx index 0180b6a0..be1500a8 100644 --- a/src/components/NoteList.tsx +++ b/src/components/NoteList.tsx @@ -188,7 +188,7 @@ function useNoteListData({ entries, selection, allContent, query, listSort, modi const searched = useMemo(() => { if (isEntityView) return [] - const sorted = [...filterEntries(entries, selection, modifiedFiles)].sort(getSortComparator(listSort)) + const sorted = [...filterEntries(entries, selection)].sort(getSortComparator(listSort)) return filterByQuery(sorted, query) }, [entries, selection, modifiedFiles, isEntityView, listSort, query]) @@ -219,7 +219,7 @@ function NoteListInner({ entries, selection, selectedNote, allContent, modifiedF }, []) const toggleGroup = useCallback((label: string) => { - setCollapsedGroups((prev) => { const next = new Set(prev); next.has(label) ? next.delete(label) : next.add(label); return next }) + setCollapsedGroups((prev) => { const next = new Set(prev); if (next.has(label)) next.delete(label); else next.add(label); return next }) }, []) const typeEntryMap = useTypeEntryMap(entries) diff --git a/src/hooks/useTabManagement.ts b/src/hooks/useTabManagement.ts index c62fe05f..c6e8b7a0 100644 --- a/src/hooks/useTabManagement.ts +++ b/src/hooks/useTabManagement.ts @@ -154,7 +154,6 @@ export function useTabManagement() { if (savedOrder.length > 0) { setTabs((prev) => restoreOrder(prev, savedOrder)) } - // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return { diff --git a/src/utils/ai-chat.ts b/src/utils/ai-chat.ts index df789e76..6966e693 100644 --- a/src/utils/ai-chat.ts +++ b/src/utils/ai-chat.ts @@ -25,7 +25,7 @@ export function estimateTokens(text: string | number): number { const DEFAULT_CONTEXT_LIMIT = 180_000 -export function getContextLimit(_model: string): number { +export function getContextLimit(): number { return DEFAULT_CONTEXT_LIMIT } @@ -41,7 +41,7 @@ export function buildSystemPrompt( return { prompt: '', totalTokens: 0, truncated: false } } - const contextBudget = Math.floor(getContextLimit(model) * 0.6) + const contextBudget = Math.floor(getContextLimit() * 0.6) const preamble = [ 'You are a helpful AI assistant integrated into Laputa, a personal knowledge management app.', 'The user has selected the following notes as context. Use them to answer questions accurately.', diff --git a/src/utils/frontmatter.ts b/src/utils/frontmatter.ts index 6d0f77b4..bea126c7 100644 --- a/src/utils/frontmatter.ts +++ b/src/utils/frontmatter.ts @@ -40,7 +40,7 @@ export function parseFrontmatter(content: string | null): ParsedFrontmatter { let inList = false for (const line of match[1].split('\n')) { - const listMatch = line.match(/^ - (.*)$/) + const listMatch = line.match(/^ {2}- (.*)$/) if (listMatch && currentKey) { inList = true currentList.push(unquote(listMatch[1])) diff --git a/src/utils/noteListHelpers.ts b/src/utils/noteListHelpers.ts index 8c2271ba..2d9edbb6 100644 --- a/src/utils/noteListHelpers.ts +++ b/src/utils/noteListHelpers.ts @@ -1,4 +1,4 @@ -import type { VaultEntry, SidebarSelection, ModifiedFile } from '../types' +import type { VaultEntry, SidebarSelection } from '../types' export interface RelationshipGroup { label: string @@ -196,6 +196,6 @@ function filterByFilterType(entries: VaultEntry[], filter: string): VaultEntry[] return [] } -export function filterEntries(entries: VaultEntry[], selection: SidebarSelection, _modifiedFiles?: ModifiedFile[]): VaultEntry[] { +export function filterEntries(entries: VaultEntry[], selection: SidebarSelection): VaultEntry[] { return filterByKind(entries, selection) } diff --git a/src/utils/wikilinks.ts b/src/utils/wikilinks.ts index 2fafa685..26f7bf2d 100644 --- a/src/utils/wikilinks.ts +++ b/src/utils/wikilinks.ts @@ -62,7 +62,7 @@ export function splitFrontmatter(content: string): [string, string] { export function countWords(content: string): number { const [, body] = splitFrontmatter(content) - const text = body.replace(/[#*_\[\]`>~\-|]/g, '').trim() + const text = body.replace(/[#*_[\]`>~\-|]/g, '').trim() if (!text) return 0 return text.split(/\s+/).filter(Boolean).length }