From a295894ca6abd4ae54121bd0ec4a372651c0e730 Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 29 Apr 2026 00:23:10 +0200 Subject: [PATCH] chore: drop legacy context module files (companion to acb737e25) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companion deletion sweep — acb737e25 removed all the *registry refs* to the legacy `context` module, but its source files were still on disk on main (because the original deletion in d3e2e73ca on the articles-bulk-import branch was bundled with unrelated photon / broadcast-rename work and never landed on main). Dropping them now so the consolidation is self-contained: - apps/mana/apps/web/src/lib/modules/context/ — entire module dir - apps/mana/apps/web/src/routes/(app)/context/ — page routes - apps/mana/apps/web/src/lib/components/dashboard/widgets/ContextDocsWidget.svelte - apps/mana/apps/web/src/lib/i18n/locales/context/{de,en,es,fr,it}.json - packages/shared-branding/src/logos/ContextLogo.svelte Verified: svelte-check + tsc --noEmit both clean. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../widgets/ContextDocsWidget.svelte | 72 ----- .../web/src/lib/i18n/locales/context/de.json | 87 ------ .../web/src/lib/i18n/locales/context/en.json | 87 ------ .../web/src/lib/i18n/locales/context/es.json | 87 ------ .../web/src/lib/i18n/locales/context/fr.json | 87 ------ .../web/src/lib/i18n/locales/context/it.json | 87 ------ .../src/lib/modules/context/ListView.svelte | 112 ------- .../src/lib/modules/context/collections.ts | 52 ---- .../apps/web/src/lib/modules/context/index.ts | 14 - .../src/lib/modules/context/module.config.ts | 10 - .../web/src/lib/modules/context/queries.ts | 158 ---------- .../lib/modules/context/stores/tags.svelte.ts | 19 -- .../apps/web/src/lib/modules/context/types.ts | 79 ----- .../web/src/routes/(app)/context/+page.svelte | 205 ------------- .../(app)/context/documents/+page.svelte | 279 ----------------- .../(app)/context/documents/[id]/+page.svelte | 246 --------------- .../routes/(app)/context/spaces/+page.svelte | 262 ---------------- .../(app)/context/spaces/[id]/+page.svelte | 285 ------------------ .../src/logos/ContextLogo.svelte | 13 - 19 files changed, 2241 deletions(-) delete mode 100644 apps/mana/apps/web/src/lib/components/dashboard/widgets/ContextDocsWidget.svelte delete mode 100644 apps/mana/apps/web/src/lib/i18n/locales/context/de.json delete mode 100644 apps/mana/apps/web/src/lib/i18n/locales/context/en.json delete mode 100644 apps/mana/apps/web/src/lib/i18n/locales/context/es.json delete mode 100644 apps/mana/apps/web/src/lib/i18n/locales/context/fr.json delete mode 100644 apps/mana/apps/web/src/lib/i18n/locales/context/it.json delete mode 100644 apps/mana/apps/web/src/lib/modules/context/ListView.svelte delete mode 100644 apps/mana/apps/web/src/lib/modules/context/collections.ts delete mode 100644 apps/mana/apps/web/src/lib/modules/context/index.ts delete mode 100644 apps/mana/apps/web/src/lib/modules/context/module.config.ts delete mode 100644 apps/mana/apps/web/src/lib/modules/context/queries.ts delete mode 100644 apps/mana/apps/web/src/lib/modules/context/stores/tags.svelte.ts delete mode 100644 apps/mana/apps/web/src/lib/modules/context/types.ts delete mode 100644 apps/mana/apps/web/src/routes/(app)/context/+page.svelte delete mode 100644 apps/mana/apps/web/src/routes/(app)/context/documents/+page.svelte delete mode 100644 apps/mana/apps/web/src/routes/(app)/context/documents/[id]/+page.svelte delete mode 100644 apps/mana/apps/web/src/routes/(app)/context/spaces/+page.svelte delete mode 100644 apps/mana/apps/web/src/routes/(app)/context/spaces/[id]/+page.svelte delete mode 100644 packages/shared-branding/src/logos/ContextLogo.svelte diff --git a/apps/mana/apps/web/src/lib/components/dashboard/widgets/ContextDocsWidget.svelte b/apps/mana/apps/web/src/lib/components/dashboard/widgets/ContextDocsWidget.svelte deleted file mode 100644 index 994d3cd6c..000000000 --- a/apps/mana/apps/web/src/lib/components/dashboard/widgets/ContextDocsWidget.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - -
-
-

- 📝 - {$_('dashboard.widgets.context.title')} -

-
- - {#if docs.loading} -
- {#each Array(3) as _} -
- {/each} -
- {:else if (docs.value ?? []).length === 0} -
-
📝
-

{$_('dashboard.widgets.context.empty')}

-
- {:else} - - {/if} -
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/context/de.json b/apps/mana/apps/web/src/lib/i18n/locales/context/de.json deleted file mode 100644 index f840e51b4..000000000 --- a/apps/mana/apps/web/src/lib/i18n/locales/context/de.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "app": { - "name": "Context" - }, - "common": { - "back": "Zurück", - "cancel": "Abbrechen", - "save": "Speichern", - "delete": "Löschen", - "create": "Erstellen", - "edit": "Bearbeiten", - "loading": "Lade...", - "search": "Suchen", - "confirm": "Bestätigen", - "close": "Schließen", - "pin": "Anheften", - "unpin": "Lösen" - }, - "nav": { - "home": "Übersicht", - "spaces": "Spaces", - "documents": "Dokumente", - "settings": "Einstellungen" - }, - "spaces": { - "title": "Spaces", - "create": "Neuen Space erstellen", - "empty": "Noch keine Spaces vorhanden", - "name": "Name", - "description": "Beschreibung", - "deleteConfirm": "Alle Dokumente in diesem Space werden ebenfalls gelöscht.", - "searchPlaceholder": "Spaces durchsuchen..." - }, - "documents": { - "title": "Dokumente", - "create": "Neues Dokument", - "empty": "Keine Dokumente vorhanden", - "deleteConfirm": "Das Dokument wird unwiderruflich gelöscht.", - "searchPlaceholder": "Dokumente durchsuchen...", - "types": { - "all": "Alle", - "text": "Text", - "context": "Kontext", - "prompt": "Prompt" - }, - "editor": { - "titlePlaceholder": "Titel...", - "contentPlaceholder": "Schreibe deinen Text in Markdown...", - "preview": "Vorschau", - "edit": "Bearbeiten", - "words": "Wörter", - "saving": "Speichert...", - "saved": "Gespeichert", - "unsaved": "Ungespeichert", - "tags": "Tags", - "addTag": "Tag hinzufügen..." - } - }, - "settings": { - "title": "Einstellungen" - }, - "messages": { - "saved": "Gespeichert", - "deleted": "Gelöscht", - "error": "Ein Fehler ist aufgetreten", - "created": "Erstellt" - }, - "home": { - "page_title_html": "Context - Mana", - "title": "Context", - "subtitle": "Dein Wissensmanagement Hub", - "stat_spaces": "Spaces", - "stat_documents": "Dokumente", - "stat_words": "Wörter", - "stat_split_label": "Text/Kontext/Prompt", - "action_spaces": "Spaces", - "action_all_documents": "Alle Dokumente", - "section_pinned": "Angeheftete Spaces", - "section_recent": "Zuletzt bearbeitet", - "action_show_all": "Alle anzeigen", - "badge_pinned": "Angeheftet", - "empty_title": "Noch keine Dokumente", - "empty_hint": "Erstelle deinen ersten Space und beginne mit dem Schreiben.", - "empty_action": "Ersten Space erstellen", - "confirm_delete_doc": "Dokument wirklich löschen?" - } -} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/context/en.json b/apps/mana/apps/web/src/lib/i18n/locales/context/en.json deleted file mode 100644 index 6afcbcb1a..000000000 --- a/apps/mana/apps/web/src/lib/i18n/locales/context/en.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "app": { - "name": "Context" - }, - "common": { - "back": "Back", - "cancel": "Cancel", - "save": "Save", - "delete": "Delete", - "create": "Create", - "edit": "Edit", - "loading": "Loading...", - "search": "Search", - "confirm": "Confirm", - "close": "Close", - "pin": "Pin", - "unpin": "Unpin" - }, - "nav": { - "home": "Overview", - "spaces": "Spaces", - "documents": "Documents", - "settings": "Settings" - }, - "spaces": { - "title": "Spaces", - "create": "Create new space", - "empty": "No spaces yet", - "name": "Name", - "description": "Description", - "deleteConfirm": "All documents in this space will also be deleted.", - "searchPlaceholder": "Search spaces..." - }, - "documents": { - "title": "Documents", - "create": "New document", - "empty": "No documents yet", - "deleteConfirm": "The document will be permanently deleted.", - "searchPlaceholder": "Search documents...", - "types": { - "all": "All", - "text": "Text", - "context": "Context", - "prompt": "Prompt" - }, - "editor": { - "titlePlaceholder": "Title...", - "contentPlaceholder": "Write your text in Markdown...", - "preview": "Preview", - "edit": "Edit", - "words": "Words", - "saving": "Saving...", - "saved": "Saved", - "unsaved": "Unsaved", - "tags": "Tags", - "addTag": "Add tag..." - } - }, - "settings": { - "title": "Settings" - }, - "messages": { - "saved": "Saved", - "deleted": "Deleted", - "error": "An error occurred", - "created": "Created" - }, - "home": { - "page_title_html": "Context - Mana", - "title": "Context", - "subtitle": "Your knowledge management hub", - "stat_spaces": "Spaces", - "stat_documents": "Documents", - "stat_words": "Words", - "stat_split_label": "Text/Context/Prompt", - "action_spaces": "Spaces", - "action_all_documents": "All documents", - "section_pinned": "Pinned spaces", - "section_recent": "Recently edited", - "action_show_all": "Show all", - "badge_pinned": "Pinned", - "empty_title": "No documents yet", - "empty_hint": "Create your first space and start writing.", - "empty_action": "Create first space", - "confirm_delete_doc": "Really delete document?" - } -} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/context/es.json b/apps/mana/apps/web/src/lib/i18n/locales/context/es.json deleted file mode 100644 index 9a60a0c0d..000000000 --- a/apps/mana/apps/web/src/lib/i18n/locales/context/es.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "app": { - "name": "Context" - }, - "common": { - "back": "Atrás", - "cancel": "Cancelar", - "save": "Guardar", - "delete": "Eliminar", - "create": "Crear", - "edit": "Editar", - "loading": "Cargando...", - "search": "Buscar", - "confirm": "Confirmar", - "close": "Cerrar", - "pin": "Fijar", - "unpin": "Desfijar" - }, - "nav": { - "home": "Resumen", - "spaces": "Espacios", - "documents": "Documentos", - "settings": "Ajustes" - }, - "spaces": { - "title": "Espacios", - "create": "Crear nuevo espacio", - "empty": "Aún no hay espacios", - "name": "Nombre", - "description": "Descripción", - "deleteConfirm": "Todos los documentos en este espacio también serán eliminados.", - "searchPlaceholder": "Buscar espacios..." - }, - "documents": { - "title": "Documentos", - "create": "Nuevo documento", - "empty": "Aún no hay documentos", - "deleteConfirm": "El documento será eliminado permanentemente.", - "searchPlaceholder": "Buscar documentos...", - "types": { - "all": "Todos", - "text": "Texto", - "context": "Contexto", - "prompt": "Prompt" - }, - "editor": { - "titlePlaceholder": "Título...", - "contentPlaceholder": "Escribe tu texto en Markdown...", - "preview": "Vista previa", - "edit": "Editar", - "words": "Palabras", - "saving": "Guardando...", - "saved": "Guardado", - "unsaved": "Sin guardar", - "tags": "Etiquetas", - "addTag": "Añadir etiqueta..." - } - }, - "settings": { - "title": "Ajustes" - }, - "messages": { - "saved": "Guardado", - "deleted": "Eliminado", - "error": "Ha ocurrido un error", - "created": "Creado" - }, - "home": { - "page_title_html": "Context - Mana", - "title": "Context", - "subtitle": "Tu hub de gestión del conocimiento", - "stat_spaces": "Spaces", - "stat_documents": "Documentos", - "stat_words": "Palabras", - "stat_split_label": "Texto/Contexto/Prompt", - "action_spaces": "Spaces", - "action_all_documents": "Todos los documentos", - "section_pinned": "Spaces fijados", - "section_recent": "Editados recientemente", - "action_show_all": "Mostrar todos", - "badge_pinned": "Fijado", - "empty_title": "Aún no hay documentos", - "empty_hint": "Crea tu primer Space y comienza a escribir.", - "empty_action": "Crear primer Space", - "confirm_delete_doc": "¿Eliminar realmente el documento?" - } -} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/context/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/context/fr.json deleted file mode 100644 index c79ad4be6..000000000 --- a/apps/mana/apps/web/src/lib/i18n/locales/context/fr.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "app": { - "name": "Context" - }, - "common": { - "back": "Retour", - "cancel": "Annuler", - "save": "Enregistrer", - "delete": "Supprimer", - "create": "Créer", - "edit": "Modifier", - "loading": "Chargement...", - "search": "Rechercher", - "confirm": "Confirmer", - "close": "Fermer", - "pin": "Épingler", - "unpin": "Détacher" - }, - "nav": { - "home": "Vue d'ensemble", - "spaces": "Espaces", - "documents": "Documents", - "settings": "Paramètres" - }, - "spaces": { - "title": "Espaces", - "create": "Créer un nouvel espace", - "empty": "Pas encore d'espaces", - "name": "Nom", - "description": "Description", - "deleteConfirm": "Tous les documents de cet espace seront également supprimés.", - "searchPlaceholder": "Rechercher des espaces..." - }, - "documents": { - "title": "Documents", - "create": "Nouveau document", - "empty": "Pas encore de documents", - "deleteConfirm": "Le document sera définitivement supprimé.", - "searchPlaceholder": "Rechercher des documents...", - "types": { - "all": "Tous", - "text": "Texte", - "context": "Contexte", - "prompt": "Prompt" - }, - "editor": { - "titlePlaceholder": "Titre...", - "contentPlaceholder": "Écrivez votre texte en Markdown...", - "preview": "Aperçu", - "edit": "Modifier", - "words": "Mots", - "saving": "Enregistrement...", - "saved": "Enregistré", - "unsaved": "Non enregistré", - "tags": "Tags", - "addTag": "Ajouter un tag..." - } - }, - "settings": { - "title": "Paramètres" - }, - "messages": { - "saved": "Enregistré", - "deleted": "Supprimé", - "error": "Une erreur est survenue", - "created": "Créé" - }, - "home": { - "page_title_html": "Context - Mana", - "title": "Context", - "subtitle": "Ton hub de gestion des connaissances", - "stat_spaces": "Spaces", - "stat_documents": "Documents", - "stat_words": "Mots", - "stat_split_label": "Texte/Contexte/Prompt", - "action_spaces": "Spaces", - "action_all_documents": "Tous les documents", - "section_pinned": "Spaces épinglés", - "section_recent": "Modifiés récemment", - "action_show_all": "Tout afficher", - "badge_pinned": "Épinglé", - "empty_title": "Pas encore de documents", - "empty_hint": "Crée ton premier space et commence à écrire.", - "empty_action": "Créer le premier space", - "confirm_delete_doc": "Vraiment supprimer le document ?" - } -} diff --git a/apps/mana/apps/web/src/lib/i18n/locales/context/it.json b/apps/mana/apps/web/src/lib/i18n/locales/context/it.json deleted file mode 100644 index 8fc1779f4..000000000 --- a/apps/mana/apps/web/src/lib/i18n/locales/context/it.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "app": { - "name": "Context" - }, - "common": { - "back": "Indietro", - "cancel": "Annulla", - "save": "Salva", - "delete": "Elimina", - "create": "Crea", - "edit": "Modifica", - "loading": "Caricamento...", - "search": "Cerca", - "confirm": "Conferma", - "close": "Chiudi", - "pin": "Fissa", - "unpin": "Sgancia" - }, - "nav": { - "home": "Panoramica", - "spaces": "Spazi", - "documents": "Documenti", - "settings": "Impostazioni" - }, - "spaces": { - "title": "Spazi", - "create": "Crea nuovo spazio", - "empty": "Nessuno spazio ancora", - "name": "Nome", - "description": "Descrizione", - "deleteConfirm": "Tutti i documenti in questo spazio verranno eliminati.", - "searchPlaceholder": "Cerca spazi..." - }, - "documents": { - "title": "Documenti", - "create": "Nuovo documento", - "empty": "Nessun documento ancora", - "deleteConfirm": "Il documento verrà eliminato definitivamente.", - "searchPlaceholder": "Cerca documenti...", - "types": { - "all": "Tutti", - "text": "Testo", - "context": "Contesto", - "prompt": "Prompt" - }, - "editor": { - "titlePlaceholder": "Titolo...", - "contentPlaceholder": "Scrivi il tuo testo in Markdown...", - "preview": "Anteprima", - "edit": "Modifica", - "words": "Parole", - "saving": "Salvataggio...", - "saved": "Salvato", - "unsaved": "Non salvato", - "tags": "Tag", - "addTag": "Aggiungi tag..." - } - }, - "settings": { - "title": "Impostazioni" - }, - "messages": { - "saved": "Salvato", - "deleted": "Eliminato", - "error": "Si è verificato un errore", - "created": "Creato" - }, - "home": { - "page_title_html": "Context - Mana", - "title": "Context", - "subtitle": "Il tuo hub di gestione della conoscenza", - "stat_spaces": "Spaces", - "stat_documents": "Documenti", - "stat_words": "Parole", - "stat_split_label": "Testo/Contesto/Prompt", - "action_spaces": "Spaces", - "action_all_documents": "Tutti i documenti", - "section_pinned": "Spaces fissati", - "section_recent": "Modificati di recente", - "action_show_all": "Mostra tutti", - "badge_pinned": "Fissato", - "empty_title": "Nessun documento", - "empty_hint": "Crea il tuo primo Space e inizia a scrivere.", - "empty_action": "Crea il primo Space", - "confirm_delete_doc": "Eliminare davvero il documento?" - } -} diff --git a/apps/mana/apps/web/src/lib/modules/context/ListView.svelte b/apps/mana/apps/web/src/lib/modules/context/ListView.svelte deleted file mode 100644 index fb550cec9..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/ListView.svelte +++ /dev/null @@ -1,112 +0,0 @@ - - - - d.id} emptyTitle="Keine Dokumente"> - {#snippet toolbar()} -
- - Alle Dokumente → - - -
- {/snippet} - - {#snippet header()} - {spaces.length} Spaces - {documents.length} Dokumente - {/snippet} - - {#snippet listHeader()} - {#if pinnedSpaces.length > 0} -

Angepinnte Spaces

- {#each pinnedSpaces as space (space.id)} -
-

{space.name}

- {#if space.description} -

{space.description}

- {/if} -
- {/each} - {/if} -

Zuletzt bearbeitet

- {/snippet} - - {#snippet item(doc)} - - {@html typeIcons[doc.type] ?? '📄'} -
-

{doc.title || 'Unbenannt'}

-
- {#if doc.pinned} - 📌 - {/if} -
- {/snippet} -
diff --git a/apps/mana/apps/web/src/lib/modules/context/collections.ts b/apps/mana/apps/web/src/lib/modules/context/collections.ts deleted file mode 100644 index ad2203acd..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/collections.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Context module — collection accessors and guest seed data. - * - * Uses table names from the unified DB: contextSpaces, documents. - */ - -import { db } from '$lib/data/database'; -import type { LocalContextSpace, LocalDocument } from './types'; - -// ─── Collection Accessors ────────────────────────────────── - -export const contextSpaceTable = db.table('contextSpaces'); -export const documentTable = db.table('documents'); - -// ─── Guest Seed ──────────────────────────────────────────── - -const DEMO_SPACE_ID = 'demo-workspace'; - -export const CONTEXT_GUEST_SEED = { - contextSpaces: [ - { - id: DEMO_SPACE_ID, - name: 'Mein Workspace', - description: 'Beispiel-Space zum Kennenlernen von Context.', - pinned: true, - prefix: 'W', - }, - ], - documents: [ - { - id: 'doc-welcome', - contextSpaceId: DEMO_SPACE_ID, - title: 'Willkommen bei Context', - content: - 'Context ist dein KI-gestütztes Dokumenten-Management. Erstelle Texte, sammle Kontexte und nutze KI-Prompts.\n\nMelde dich an, um deine Dokumente zu synchronisieren.', - type: 'text' as const, - shortId: 'WD1', - pinned: true, - metadata: { tags: ['einführung'], wordCount: 22 }, - }, - { - id: 'doc-prompt', - contextSpaceId: DEMO_SPACE_ID, - title: 'Beispiel-Prompt', - content: 'Fasse den folgenden Text in 3 Stichpunkten zusammen:\n\n{text}', - type: 'prompt' as const, - shortId: 'WP1', - pinned: false, - metadata: { tags: ['vorlage'] }, - }, - ], -}; diff --git a/apps/mana/apps/web/src/lib/modules/context/index.ts b/apps/mana/apps/web/src/lib/modules/context/index.ts deleted file mode 100644 index 2df026bee..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Context module — barrel exports. - */ - -export { contextSpaceTable, documentTable, CONTEXT_GUEST_SEED } from './collections'; -export * from './queries'; -export type { - LocalContextSpace, - LocalDocument, - DocumentType, - DocumentMetadata, - Space, - Document, -} from './types'; diff --git a/apps/mana/apps/web/src/lib/modules/context/module.config.ts b/apps/mana/apps/web/src/lib/modules/context/module.config.ts deleted file mode 100644 index 2a5331893..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/module.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { ModuleConfig } from '$lib/data/module-registry'; - -export const contextModuleConfig: ModuleConfig = { - appId: 'context', - tables: [ - { name: 'contextSpaces', syncName: 'spaces' }, - { name: 'documents' }, - { name: 'documentTags' }, - ], -}; diff --git a/apps/mana/apps/web/src/lib/modules/context/queries.ts b/apps/mana/apps/web/src/lib/modules/context/queries.ts deleted file mode 100644 index 00faf1595..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/queries.ts +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Reactive Queries & Pure Helpers for Context module. - * - * Uses Dexie liveQuery to automatically re-render when IndexedDB changes - * (local writes, sync updates, other tabs). Components call these hooks - * at init time; no manual fetch/refresh needed. - */ - -import { useScopedLiveQuery } from '$lib/data/scope/use-scoped-live-query.svelte'; -import { db } from '$lib/data/database'; -import { scopedForModule } from '$lib/data/scope'; -import { decryptRecords } from '$lib/data/crypto'; -import type { LocalContextSpace, LocalDocument, Space, Document, DocumentType } from './types'; - -// ─── Type Converters ────────────────────────────────────── - -/** Convert LocalContextSpace (IndexedDB) to shared Space type. */ -export function toSpace(local: LocalContextSpace): Space { - return { - id: local.id, - name: local.name, - description: local.description ?? null, - user_id: 'local', - created_at: local.createdAt ?? new Date().toISOString(), - settings: local.settings ?? null, - pinned: local.pinned, - prefix: local.prefix, - }; -} - -/** Convert LocalDocument (IndexedDB) to shared Document type. */ -export function toDocument(local: LocalDocument): Document { - return { - id: local.id, - title: local.title, - content: local.content, - type: local.type, - space_id: local.contextSpaceId ?? null, - user_id: 'local', - created_at: local.createdAt ?? new Date().toISOString(), - updated_at: local.updatedAt ?? new Date().toISOString(), - metadata: local.metadata ?? null, - short_id: local.shortId ?? undefined, - pinned: local.pinned, - }; -} - -// ─── Live Query Hooks (call during component init) ──────── - -/** All spaces, sorted by name. Auto-updates on any change. */ -export function useAllSpaces() { - return useScopedLiveQuery(async () => { - const locals = await scopedForModule( - 'context', - 'contextSpaces' - ).toArray(); - return locals - .filter((s) => !s.deletedAt) - .map(toSpace) - .sort((a, b) => a.name.localeCompare(b.name)); - }, [] as Space[]); -} - -/** All documents, sorted by updated_at desc. Auto-updates on any change. */ -export function useAllDocuments() { - return useScopedLiveQuery(async () => { - const locals = await scopedForModule('context', 'documents').toArray(); - const visible = locals.filter((d) => !d.deletedAt); - const decrypted = await decryptRecords('documents', visible); - return decrypted - .map(toDocument) - .sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime()); - }, [] as Document[]); -} - -/** Documents for a specific context-space. Auto-updates on any change. */ -export function useSpaceDocuments(contextSpaceId: string) { - return useScopedLiveQuery(async () => { - const locals = await db - .table('documents') - .where('contextSpaceId') - .equals(contextSpaceId) - .toArray(); - const visible = locals.filter((d) => !d.deletedAt); - const decrypted = await decryptRecords('documents', visible); - return decrypted - .map(toDocument) - .sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime()); - }, [] as Document[]); -} - -// ─── Pure Helper Functions (for $derived) ───────────────── - -/** Get pinned spaces from a list. */ -export function getPinnedSpaces(spaces: Space[]): Space[] { - return spaces.filter((s) => s.pinned); -} - -/** Filter documents by type, search query, and tags. */ -export function filterDocuments( - documents: Document[], - options: { - typeFilter?: DocumentType | 'all'; - searchQuery?: string; - tagFilter?: string[]; - } -): Document[] { - let filtered = documents; - - if (options.typeFilter && options.typeFilter !== 'all') { - filtered = filtered.filter((d) => d.type === options.typeFilter); - } - - if (options.searchQuery?.trim()) { - const q = options.searchQuery.toLowerCase(); - filtered = filtered.filter( - (d) => d.title.toLowerCase().includes(q) || d.content?.toLowerCase().includes(q) - ); - } - - if (options.tagFilter && options.tagFilter.length > 0) { - filtered = filtered.filter((d) => - options.tagFilter!.some((tag) => d.metadata?.tags?.includes(tag)) - ); - } - - return filtered; -} - -/** Compute document stats from a list. */ -export function getDocumentStats(documents: Document[]) { - return { - total: documents.length, - text: documents.filter((d) => d.type === 'text').length, - context: documents.filter((d) => d.type === 'context').length, - prompt: documents.filter((d) => d.type === 'prompt').length, - totalWords: documents.reduce((sum, d) => sum + (d.metadata?.word_count || 0), 0), - }; -} - -/** Get all unique tags from documents. */ -export function getAllDocumentTags(documents: Document[]): string[] { - const tags = new Set(); - documents.forEach((d) => { - d.metadata?.tags?.forEach((t) => tags.add(t)); - }); - return Array.from(tags).sort(); -} - -/** Find a space by ID. */ -export function findSpaceById(spaces: Space[], id: string): Space | undefined { - return spaces.find((s) => s.id === id); -} - -/** Find a document by ID. */ -export function findDocumentById(documents: Document[], id: string): Document | undefined { - return documents.find((d) => d.id === id); -} diff --git a/apps/mana/apps/web/src/lib/modules/context/stores/tags.svelte.ts b/apps/mana/apps/web/src/lib/modules/context/stores/tags.svelte.ts deleted file mode 100644 index 62b1b2563..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/stores/tags.svelte.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Ucontext Tags — Uses shared global tags + module-specific junction table. - */ - -import { db } from '$lib/data/database'; -import { createTagLinkOps } from '@mana/shared-stores'; - -export { - tagMutations, - useAllTags, - getTagById, - getTagsByIds, - getTagColor, -} from '@mana/shared-stores'; - -export const documentTagOps = createTagLinkOps({ - table: () => db.table('documentTags'), - entityIdField: 'documentId', -}); diff --git a/apps/mana/apps/web/src/lib/modules/context/types.ts b/apps/mana/apps/web/src/lib/modules/context/types.ts deleted file mode 100644 index c6517ad7b..000000000 --- a/apps/mana/apps/web/src/lib/modules/context/types.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Context module types for the unified Mana app. - */ - -import type { BaseRecord } from '@mana/local-store'; - -// ─── Document Types ──────────────────────────────────────── - -export type DocumentType = 'text' | 'context' | 'prompt'; - -export interface DocumentMetadata { - tags?: string[]; - word_count?: number; - token_count?: number; - parent_document?: string; - version?: number; - generation_type?: 'summary' | 'continuation' | 'rewrite' | 'ideas'; - model_used?: string; - prompt_used?: string; - original_title?: string; - version_history?: Array<{ - id: string; - title: string; - type: string; - created_at: string; - is_original: boolean; - }>; - [key: string]: unknown; -} - -// ─── Local DB Types (IndexedDB) ──────────────────────────── - -export interface LocalContextSpace extends BaseRecord { - name: string; - description?: string | null; - settings?: Record | null; - pinned: boolean; - prefix: string; -} - -export interface LocalDocument extends BaseRecord { - contextSpaceId?: string | null; - title: string; - content: string; - type: DocumentType; - shortId?: string | null; - pinned: boolean; - metadata?: { - tags?: string[]; - wordCount?: number; - } | null; -} - -// ─── Shared / View Types ─────────────────────────────────── - -export interface Space { - id: string; - name: string; - description: string | null; - user_id: string; - created_at: string; - settings: Record | null; - pinned: boolean; - prefix?: string; -} - -export interface Document { - id: string; - title: string; - content: string | null; - type: DocumentType; - space_id: string | null; - user_id: string; - created_at: string; - updated_at: string; - metadata: DocumentMetadata | null; - short_id?: string; - pinned?: boolean; -} diff --git a/apps/mana/apps/web/src/routes/(app)/context/+page.svelte b/apps/mana/apps/web/src/routes/(app)/context/+page.svelte deleted file mode 100644 index 51df56473..000000000 --- a/apps/mana/apps/web/src/routes/(app)/context/+page.svelte +++ /dev/null @@ -1,205 +0,0 @@ - - - - {$_('context.home.page_title_html')} - - - -
-
-

{$_('context.home.title')}

-

{$_('context.home.subtitle')}

-
- - -
-
-
{spaces.length}
-
{$_('context.home.stat_spaces')}
-
-
-
{stats.total}
-
{$_('context.home.stat_documents')}
-
-
-
{stats.totalWords.toLocaleString()}
-
{$_('context.home.stat_words')}
-
-
-
{stats.text}/{stats.context}/{stats.prompt}
-
{$_('context.home.stat_split_label')}
-
-
- - - - - - {#if pinnedSpaces.length > 0} -
-

{$_('context.home.section_pinned')}

- -
- {/if} - - - {#if recentDocs.length > 0} -
-
-

{$_('context.home.section_recent')}

- {$_('context.home.action_show_all')} -
- -
- {:else} -
- -

{$_('context.home.empty_title')}

-

- {$_('context.home.empty_hint')} -

- - - {$_('context.home.empty_action')} - -
- {/if} -
-
diff --git a/apps/mana/apps/web/src/routes/(app)/context/documents/+page.svelte b/apps/mana/apps/web/src/routes/(app)/context/documents/+page.svelte deleted file mode 100644 index 3ea197ca4..000000000 --- a/apps/mana/apps/web/src/routes/(app)/context/documents/+page.svelte +++ /dev/null @@ -1,279 +0,0 @@ - - - - Dokumente - Context - Mana - - - -
-
-
-
- ← Context -

Dokumente

-
-

- {stats.total} Dokumente, {stats.totalWords.toLocaleString()} Woerter -

-
- -
- - -
-
- {#each typeFilters as filter} - - {/each} -
- -
- - -
-
- - - {#if allTags.length > 0} -
- {#each allTags as tag} - - {/each} -
- {/if} - - - {#if filteredDocuments.length > 0} -
- {#each filteredDocuments as doc (doc.id)} -
-
- -
- - {doc.type} - - {#if doc.pinned} - Angeheftet - {/if} -
-

{doc.title}

- {#if doc.content} -

- {doc.content.slice(0, 100)} -

- {/if} -
-
- - -
-
-
- {#if doc.metadata?.tags && doc.metadata.tags.length > 0} - {#each doc.metadata.tags.slice(0, 3) as tag} - {tag} - {/each} - {/if} - - {formatDate(new Date(doc.updated_at))} - -
-
- {/each} -
- {:else if searchQuery || typeFilter !== 'all' || tagFilter.length > 0} -
-

Keine Dokumente gefunden

- -
- {:else} -
- -

Noch keine Dokumente

-

- Dokumente enthalten dein Wissen, Kontext-Referenzen und AI-Prompts. -

- -
- {/if} -
- - - {#if deleteTarget} -
(deleteTarget = null)} - onkeydown={(e) => e.key === 'Escape' && (deleteTarget = null)} - tabindex="-1" - role="presentation" - > -
e.stopPropagation()} - role="none" - > -

Dokument loeschen?

-

Das Dokument wird unwiderruflich geloescht.

-
- - -
-
-
- {/if} -
diff --git a/apps/mana/apps/web/src/routes/(app)/context/documents/[id]/+page.svelte b/apps/mana/apps/web/src/routes/(app)/context/documents/[id]/+page.svelte deleted file mode 100644 index 55ffdfb29..000000000 --- a/apps/mana/apps/web/src/routes/(app)/context/documents/[id]/+page.svelte +++ /dev/null @@ -1,246 +0,0 @@ - - - - {doc?.title || 'Dokument'} - Context - Mana - - - -
- {#if !doc} -
Lade Dokument...
- {:else} - -
-
- {#if doc.space_id} - - - Zurueck zum Space - - {:else} - - - Alle Dokumente - - {/if} -
- -
- {#if saving} - Speichert... - {/if} - - -
-
- - -
- - - - -
-
- {#each typeOptions as opt} - - {/each} -
-
- -
- - - -
- - -
- {#if doc.short_id} - ID: {doc.short_id} - {/if} - {#if doc.metadata?.word_count} - {doc.metadata.word_count} Woerter - {/if} - - Erstellt: {formatDate(new Date(doc.created_at))} - - - Aktualisiert: {formatDate(new Date(doc.updated_at))} - -
- {/if} -
- - - {#if showDeleteConfirm} -
(showDeleteConfirm = false)} - onkeydown={(e) => e.key === 'Escape' && (showDeleteConfirm = false)} - tabindex="-1" - role="presentation" - > -
e.stopPropagation()} - role="none" - > -

Dokument loeschen?

-

Das Dokument wird unwiderruflich geloescht.

-
- - -
-
-
- {/if} -
diff --git a/apps/mana/apps/web/src/routes/(app)/context/spaces/+page.svelte b/apps/mana/apps/web/src/routes/(app)/context/spaces/+page.svelte deleted file mode 100644 index 6174dc97d..000000000 --- a/apps/mana/apps/web/src/routes/(app)/context/spaces/+page.svelte +++ /dev/null @@ -1,262 +0,0 @@ - - - - Spaces - Context - Mana - - - -
-
-
- ← Context -

Spaces

-
- -
- - - {#if showCreateForm} -
-

Neuen Space erstellen

-
-
- - e.key === 'Enter' && handleCreate()} - /> -
-
- - -
-
- - -
-
- - -
-
-
- {/if} - - -
- - -
- - {#if filteredSpaces.length > 0} -
- {#each filteredSpaces as space (space.id)} -
-
- -
- - {space.prefix || space.name[0]?.toUpperCase() || 'S'} - -
-

{space.name}

- {#if space.description} -

{space.description}

- {/if} -
-
-
-
- - -
-
-
- Erstellt: {formatDate(new Date(space.created_at))} -
-
- {/each} -
- {:else if searchQuery} -
-

Keine Spaces gefunden fuer "{searchQuery}"

-
- {:else} -
- -

Noch keine Spaces

-

- Spaces helfen dir, dein Wissen zu organisieren. Erstelle deinen ersten Space, um - loszulegen. -

- -
- {/if} -
- - - {#if deleteTarget} -
(deleteTarget = null)} - onkeydown={(e) => e.key === 'Escape' && (deleteTarget = null)} - tabindex="-1" - role="presentation" - > -
e.stopPropagation()} - role="none" - > -

Space loeschen?

-

- Alle Dokumente in diesem Space werden ebenfalls geloescht. Diese Aktion kann nicht - rueckgaengig gemacht werden. -

-
- - -
-
-
- {/if} -
diff --git a/apps/mana/apps/web/src/routes/(app)/context/spaces/[id]/+page.svelte b/apps/mana/apps/web/src/routes/(app)/context/spaces/[id]/+page.svelte deleted file mode 100644 index f66680c9f..000000000 --- a/apps/mana/apps/web/src/routes/(app)/context/spaces/[id]/+page.svelte +++ /dev/null @@ -1,285 +0,0 @@ - - - - {space?.name || 'Space'} - Context - Mana - - - -
- -
- - - Spaces - - / - {space?.name || '...'} -
- - {#if !space} -
Lade...
- {:else} - -
- {#if editingName} -
- - -
- - -
-
- {:else} -
-
-

{space.name}

- {#if space.description} -

{space.description}

- {/if} -
- {stats.total} Dokumente - {stats.totalWords.toLocaleString()} Woerter -
-
- -
- {/if} -
- - -
-
- {#each typeFilters as filter} - - {/each} -
- -
-
- - -
- -
-
- - - {#if filteredDocuments.length > 0} -
- {#each filteredDocuments as doc (doc.id)} -
-
- -
- - {doc.type} - - {#if doc.pinned} - Angeheftet - {/if} -
-

{doc.title}

- {#if doc.content} -

- {doc.content.slice(0, 100)} -

- {/if} -
-
- - -
-
-
- {formatDate(new Date(doc.updated_at))} -
-
- {/each} -
- {:else} -
-

Keine Dokumente in diesem Space

- -
- {/if} - {/if} -
-
diff --git a/packages/shared-branding/src/logos/ContextLogo.svelte b/packages/shared-branding/src/logos/ContextLogo.svelte deleted file mode 100644 index cdaad812a..000000000 --- a/packages/shared-branding/src/logos/ContextLogo.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -