Add share target, prompt templates, command palette and session organisation

- PWA share target: shared text/links start a new chat or go into a
  recent session (chooser dialog)
- Prompt templates (personal + global for admins) with {{placeholders}}
  that are asked for on insert; managed under Settings → Templates
- Ctrl/Cmd+K command palette; Alt+N new session, Alt+Up/Down switch
  sessions, Ctrl+, settings
- Sessions can be pinned, archived and filed into folders; the list can
  be grouped by date or by project, groups are collapsible
- Fix: the "What's new" dialog was never shown to signed-in users

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-09 05:27:45 +01:00
1 parent b5de531d2e
commit 428e2df40a
25 files changed
+1106 -33

No files matched your search

+45
View File
@@ -418,6 +418,51 @@ export const de: Messages = {
"jobs.webhookRenew": "Neues Secret",
"jobs.webhookShown": "Secret jetzt kopieren – es wird nur einmal angezeigt:",
"jobs.webhookHelp": "Beliebiges JSON per POST an die URL schicken; es wird an den Auftrag angehängt. Anmeldung per Header X-CodeCraft-Secret (oder ?secret=…), oder das Secret in Gitea/GitHub als Webhook-Secret eintragen (Signatur X-Gitea-Signature / X-Hub-Signature-256).",
"shareIn.title": "Mit CodeCraft geteilt",
"shareIn.newChat": "Neuen Chat starten",
"shareIn.appendTo": "oder an eine letzte Session anhängen",
"common.back": "Zurück",
"settings.tab.templates": "Vorlagen",
"templates.title": "Prompt-Vorlagen",
"templates.filter": "Vorlagen durchsuchen…",
"templates.none": "Noch keine Vorlagen.",
"templates.global": "für alle",
"templates.manage": "Vorlagen verwalten",
"templates.insert": "Einfügen",
"templates.personalTitle": "Meine Vorlagen",
"templates.personalHint": "Wiederverwendbare Prompts. Platzhalter wie {{datei}} oder {{ziel: was soll sich ändern}} werden beim Einfügen abgefragt.",
"templates.globalTitle": "Vorlagen für alle",
"templates.globalHint": "Diese Vorlagen sehen alle Benutzer.",
"templates.name": "Name",
"templates.textPlaceholder": "Prüfe {{datei}} auf Fehler und schlage Korrekturen vor.",
"templates.add": "Vorlage hinzufügen",
"templates.deleteConfirm": "Vorlage „{name}“ löschen?",
"palette.title": "Befehlspalette",
"palette.placeholder": "Zu Session, Seite oder Aktion springen…",
"palette.newSession": "Neue Session",
"palette.toggleTheme": "Hell/Dunkel umschalten",
"palette.nothing": "Nichts gefunden.",
"palette.move": "bewegen",
"palette.open": "öffnen",
"palette.prevNext": "vorherige/nächste Session",
"palette.close": "schließen",
"sidebar.pinned": "Angepinnt",
"sidebar.archive": "Archiv",
"sidebar.byTime": "Nach Datum",
"sidebar.byProject": "Nach Projekt",
"sidebar.groupByHint": "Sessions nach Datum oder Projektordner gruppieren",
"sidebar.organise": "Session organisieren",
"sidebar.pin": "Oben anpinnen",
"sidebar.unpin": "Nicht mehr anpinnen",
"sidebar.moveTo": "In Ordner verschieben…",
"sidebar.removeFromFolder": "Aus Ordner entfernen",
"sidebar.archiveOne": "Archivieren",
"sidebar.unarchive": "Aus dem Archiv holen",
"sidebar.moveTitle": "In Ordner verschieben",
"sidebar.moveHint": "Ordner gruppieren Sessions in der Liste. Gib einen neuen Namen ein.",
"sidebar.moveHintExisting": "Vorhandene Ordner: {folders}. Gib einen davon oder einen neuen Namen ein.",
"sidebar.folderName": "Ordnername",
"sidebar.move": "Verschieben",
"new.title": "Neue Session",
"new.directory": "Projektverzeichnis",
"new.up": "Hoch",
+45
View File
@@ -417,6 +417,51 @@ export const en = {
"jobs.webhookRenew": "New secret",
"jobs.webhookShown": "Copy the secret now – it is shown only once:",
"jobs.webhookHelp": "POST any JSON to the URL; it is appended to the instructions. Authenticate with the header X-CodeCraft-Secret (or ?secret=…), or enter the secret as webhook secret in Gitea/GitHub (signature X-Gitea-Signature / X-Hub-Signature-256).",
"shareIn.title": "Shared with CodeCraft",
"shareIn.newChat": "Start a new chat",
"shareIn.appendTo": "or add to a recent session",
"common.back": "Back",
"settings.tab.templates": "Templates",
"templates.title": "Prompt templates",
"templates.filter": "Search templates…",
"templates.none": "No templates yet.",
"templates.global": "everyone",
"templates.manage": "Manage templates",
"templates.insert": "Insert",
"templates.personalTitle": "My templates",
"templates.personalHint": "Reusable prompts. Placeholders like {{file}} or {{goal: what should change}} are asked for when you insert the template.",
"templates.globalTitle": "Templates for everyone",
"templates.globalHint": "Every user sees these templates.",
"templates.name": "Name",
"templates.textPlaceholder": "Review {{file}} for bugs and suggest fixes.",
"templates.add": "Add template",
"templates.deleteConfirm": "Delete the template \"{name}\"?",
"palette.title": "Command palette",
"palette.placeholder": "Go to a session, page or action…",
"palette.newSession": "New session",
"palette.toggleTheme": "Switch light/dark mode",
"palette.nothing": "Nothing found.",
"palette.move": "move",
"palette.open": "open",
"palette.prevNext": "previous/next session",
"palette.close": "close",
"sidebar.pinned": "Pinned",
"sidebar.archive": "Archive",
"sidebar.byTime": "By date",
"sidebar.byProject": "By project",
"sidebar.groupByHint": "Group sessions by date or by project folder",
"sidebar.organise": "Organise session",
"sidebar.pin": "Pin to top",
"sidebar.unpin": "Unpin",
"sidebar.moveTo": "Move to folder…",
"sidebar.removeFromFolder": "Remove from folder",
"sidebar.archiveOne": "Archive",
"sidebar.unarchive": "Restore from archive",
"sidebar.moveTitle": "Move to folder",
"sidebar.moveHint": "Folders group sessions in the list. Type a new name.",
"sidebar.moveHintExisting": "Existing folders: {folders}. Type one of them or a new name.",
"sidebar.folderName": "Folder name",
"sidebar.move": "Move",
"new.title": "New session",
"new.directory": "Project directory",
"new.up": "Up",