diff --git a/AGENTS.md b/AGENTS.md index d1eeb06..4cf69e9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -84,7 +84,7 @@ src/ │ ├── types/ # TypeScript types │ ├── utils/ # Shared utilities │ ├── crypto.ts # Crypto utils -│ ├── loro.ts # Loro CRDT +│ ├── loro.svelte.ts # Loro CRDT │ ├── schema.ts # Shared Effect Schema │ └── unawaited.ts # Unawaited promise handler ├── routes/ @@ -155,7 +155,7 @@ Wrap in `$derived` for reactivity. ```svelte
@@ -15,30 +19,30 @@

Total Notes

- {data.totalNotes} + {totalNotes}
- {#if data.randomNote} + {#if randomNote}

Random Note

- {data.randomNote.title} + {randomNote.title}

Last updated: {new Date( - data.randomNote.updatedAt, + randomNote.updatedAt, ).toLocaleDateString()}

- {:else if data.totalNotes === 0} + {:else if totalNotes === 0}

Get Started

diff --git a/src/routes/notes/[id]/+error.svelte b/src/routes/notes/[id]/+error.svelte new file mode 100644 index 0000000..2e0e564 --- /dev/null +++ b/src/routes/notes/[id]/+error.svelte @@ -0,0 +1,26 @@ + + +{#if isHttpError(error, 404)} +
+
+
+ +
+

No note selected

+

Select a note from the sidebar or create a new one.

+
+
+{/if} diff --git a/src/routes/notes/[id]/+layout.svelte b/src/routes/notes/[id]/+layout.svelte index 8a23e96..cabad00 100644 --- a/src/routes/notes/[id]/+layout.svelte +++ b/src/routes/notes/[id]/+layout.svelte @@ -1,13 +1,20 @@
- {#if data.user} - - {/if} + {#if user}{/if} + + {@render children()} - {@render children()} + {#snippet failed(error)} + + {/snippet} +
diff --git a/src/routes/notes/[id]/+page.server.ts b/src/routes/notes/[id]/+page.server.ts index 70f1ff7..de7d24d 100644 --- a/src/routes/notes/[id]/+page.server.ts +++ b/src/routes/notes/[id]/+page.server.ts @@ -1,13 +1,11 @@ -import { getNotes } from "$lib/remote/notes.remote.ts"; +import { getNote } from "$lib/remote/notes.ts"; import { guardLogin } from "$lib/server/auth.ts"; import { error } from "@sveltejs/kit"; export const load = async ({ params }): Promise => { guardLogin(); - const notesList = await getNotes(); - const note = notesList.find((n) => n.id === params.id); - if (note === undefined) { - error(404, "Note not found"); - } + const note = await getNote(params.id); + + if (!note) error(404, "Note not found?"); }; diff --git a/src/routes/notes/[id]/+page.svelte b/src/routes/notes/[id]/+page.svelte index cc049cf..d83dabb 100644 --- a/src/routes/notes/[id]/+page.svelte +++ b/src/routes/notes/[id]/+page.svelte @@ -1,112 +1,117 @@ + +
- {#if !(note?.isFolder ?? true)} + {#if !note.isFolder} { // Hook in Loro - loroManager?.updateContent(newContent); + currentManager?.updateContent(newContent); }} /> - {:else if note?.isFolder} + {:else if note.isFolder}

@@ -116,20 +121,6 @@

Select a note inside to start editing.

- {:else} -
-
-
- -
-

No note selected

-

- Select a note from the sidebar or create a new one. -

-
-
{/if}
@@ -139,7 +130,8 @@ class="pointer-events-none absolute right-4 bottom-4 z-50 max-w-sm rounded bg-black/80 p-4 font-mono text-xs text-white" >

Selected Note: {id}

-

Loro Manager: {loroManager ? "Loaded" : "Null"}

+

Current Manager: {currentManager ? "Loaded" : "Null"}

+

Cached Managers: {loroManagers.size}

Content Length: {editorContent.length}

Content Preview: {editorContent.slice(0, 50)}

~Word Count: {editorContent.split(/\s+/).length}

diff --git a/svelte.config.js b/svelte.config.js index d3826f1..c34ed8b 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -11,6 +11,12 @@ const config = { experimental: { remoteFunctions: true, + tracing: { + server: true, + }, + instrumentation: { + server: true, + }, }, typescript: {