From b60f42f6fe7807755f08f258db0a83a525cf333a Mon Sep 17 00:00:00 2001 From: Jacob Schmidt Date: Sat, 28 Feb 2026 17:55:47 -0600 Subject: [PATCH] Align Journal.App with SQLCipher backend contract (remove dataDirectory coupling) --- Journal.App/src/lib/backend/auth.ts | 11 +---------- Journal.App/src/lib/backend/entries.ts | 7 ++----- Journal.App/src/lib/backend/templates.ts | 7 ++----- Journal.App/src/lib/components/SidePanel.svelte | 17 ----------------- Journal.App/src/lib/stores/entries.ts | 17 ++++++----------- 5 files changed, 11 insertions(+), 48 deletions(-) diff --git a/Journal.App/src/lib/backend/auth.ts b/Journal.App/src/lib/backend/auth.ts index 516d50f..40e9ac5 100644 --- a/Journal.App/src/lib/backend/auth.ts +++ b/Journal.App/src/lib/backend/auth.ts @@ -8,14 +8,11 @@ export function hydrateWorkspace(password: string): Promise { } type RuntimeConfigRaw = { - dataDirectory?: string; vaultDirectory?: string; - DataDirectory?: string; VaultDirectory?: string; }; type RuntimeConfig = { - dataDirectory: string; vaultDirectory: string; }; @@ -34,7 +31,6 @@ async function getRuntimeConfig( ); return { - dataDirectory: pickCase(data, "dataDirectory", "DataDirectory", ""), vaultDirectory: pickCase(data, "vaultDirectory", "VaultDirectory", ""), }; } @@ -46,7 +42,6 @@ export async function unlockVaultWorkspace(password: string): Promise { payload: { password, vaultDirectory: config.vaultDirectory, - dataDirectory: config.dataDirectory, }, }); @@ -58,7 +53,6 @@ export async function unlockVaultWorkspace(password: string): Promise { action: "db.hydrate_workspace", payload: { password, - dataDirectory: config.dataDirectory, }, }); } @@ -75,7 +69,6 @@ export async function persistAndClearVault( payload: { password, vaultDirectory: config.vaultDirectory, - dataDirectory: config.dataDirectory, }, }, options, @@ -84,9 +77,7 @@ export async function persistAndClearVault( await sendCommand( { action: "vault.clear_data_directory", - payload: { - dataDirectory: config.dataDirectory, - }, + payload: {}, }, options, ); diff --git a/Journal.App/src/lib/backend/entries.ts b/Journal.App/src/lib/backend/entries.ts index 9b6fdd0..58a52ae 100644 --- a/Journal.App/src/lib/backend/entries.ts +++ b/Journal.App/src/lib/backend/entries.ts @@ -35,7 +35,6 @@ export type EntrySaveResultDto = { }; export type EntrySearchRequestDto = { - dataDirectory: string; query?: string; section?: string; startDate?: string; @@ -214,12 +213,10 @@ function normalizeEntrySearchResult( }; } -export async function listEntries( - dataDirectory?: string, -): Promise { +export async function listEntries(): Promise { const data = await sendCommand({ action: "entries.list", - payload: { dataDirectory }, + payload: {}, }); return data diff --git a/Journal.App/src/lib/backend/templates.ts b/Journal.App/src/lib/backend/templates.ts index 0b6b8ef..3f4f104 100644 --- a/Journal.App/src/lib/backend/templates.ts +++ b/Journal.App/src/lib/backend/templates.ts @@ -46,12 +46,10 @@ function normalizeTemplateItem( }; } -export async function listEntryTemplates( - dataDirectory?: string, -): Promise { +export async function listEntryTemplates(): Promise { const data = await sendCommand({ action: "templates.list", - payload: { dataDirectory }, + payload: {}, }); return data @@ -78,7 +76,6 @@ export async function saveEntryTemplate(payload: { name: string; content: string; filePath?: string; - dataDirectory?: string; }): Promise { const data = await sendCommand({ action: "templates.save", diff --git a/Journal.App/src/lib/components/SidePanel.svelte b/Journal.App/src/lib/components/SidePanel.svelte index 3a68539..650048b 100644 --- a/Journal.App/src/lib/components/SidePanel.svelte +++ b/Journal.App/src/lib/components/SidePanel.svelte @@ -7,7 +7,6 @@ import { listFragments, type FragmentDto } from "$lib/backend/fragments"; import { listLists, type ListDocumentDto } from "$lib/backend/lists"; import { listTodoLists, type TodoListDto } from "$lib/backend/todos"; - import { sendCommand } from "$lib/backend/client"; import CalendarWidget from "$lib/components/CalendarWidget.svelte"; import { entriesBusyStore, @@ -231,16 +230,6 @@ return { startDate: toIsoDate(monthStart), endDate: toIsoDate(monthEnd) }; } - async function getDataDirectory(): Promise { - const config = await sendCommand<{ - dataDirectory?: string; - DataDirectory?: string; - }>({ - action: "config.get", - }); - return (config.dataDirectory ?? config.DataDirectory ?? "").trim(); - } - function toFragmentTimelineItem(fragment: FragmentDto): SidePanelItem { const split = fragment.description.split(/\n{2,}/); const title = (split[0] ?? "").trim() || "Untitled Fragment"; @@ -348,16 +337,10 @@ calendarBusy = true; calendarError = ""; try { - const dataDirectory = await getDataDirectory(); if (requestId !== calendarRefreshRequestId) return; - if (!dataDirectory) { - calendarTimelineItems = []; - return; - } const { startDate, endDate } = getActiveDateRange(); const entryItems = await searchEntriesAsItems({ - dataDirectory, query: calendarQuery.trim() || undefined, }); if (requestId !== calendarRefreshRequestId) return; diff --git a/Journal.App/src/lib/stores/entries.ts b/Journal.App/src/lib/stores/entries.ts index 93bce4e..d942a22 100644 --- a/Journal.App/src/lib/stores/entries.ts +++ b/Journal.App/src/lib/stores/entries.ts @@ -88,10 +88,10 @@ export function createEntryDraft(): EntryItem { }; } -export async function hydrateEntries(dataDirectory?: string): Promise { +export async function hydrateEntries(): Promise { entriesBusyStore.set(true); try { - const items = await listEntriesCommand(dataDirectory); + const items = await listEntriesCommand(); const mapped = items.map(fromListDto); entriesStore.set(mapped); } catch (error) { @@ -162,18 +162,13 @@ export async function searchEntriesAsItems( payload: EntrySearchRequestDto, ): Promise { const results = await searchEntriesCommand(payload); - const dataDirectory = payload.dataDirectory?.trim() ?? ""; - const separator = dataDirectory.includes("\\") ? "\\" : "/"; - const basePath = dataDirectory.replace(/[\\/]+$/, ""); + const toSearchPath = (fileName: string): string => + `db://entry/${encodeURIComponent(fileName)}`; const mapped = results.map((result) => ({ - id: basePath - ? toStoreId(`${basePath}${separator}${result.fileName}`) - : `entries/search/${encodeURIComponent(result.fileName)}`, + id: toStoreId(toSearchPath(result.fileName)), label: toLabel(result.fileName), initialContent: result.entry.rawContent, - filePath: basePath - ? `${basePath}${separator}${result.fileName}` - : undefined, + filePath: toSearchPath(result.fileName), date: result.entry.date, })); return mapped;