Add voice memos to live journal and event log.

Record short E2E-encrypted audio attachments from the live log, link them to events via __live:voice markers, and play them back in the stream and chronological event table.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 14:52:12 +02:00
parent f83d67b527
commit 975c7a2e40
30 changed files with 1155 additions and 14 deletions
+18
View File
@@ -266,6 +266,24 @@
"live_photo_entry": "Foto: {{caption}}",
"live_photo_entry_plain": "Foto taget",
"live_undo_photo_hint": "Foto gemt",
"live_voice_btn": "Stemmenotat",
"live_voice_hint": "Optag en kort stemmenotat (maks. 60 sekunder).",
"live_voice_record": "Start optagelse",
"live_voice_stop": "Stop optagelse",
"live_voice_recording": "Optager {{time}}",
"live_voice_save": "Gem",
"live_voice_saving": "Gemmer…",
"live_voice_retake": "Optag igen",
"live_voice_mic_denied": "Mikrofonadgang nægtet eller utilgængelig.",
"live_voice_record_failed": "Optagelse mislykkedes. Prøv igen.",
"live_voice_unavailable": "Stemmenotat utilgængelig",
"live_voice_too_large": "Optagelsen er for stor. Optag venligst kortere.",
"live_voice_error": "Kunne ikke gemme stemmenotat.",
"live_voice_entry": "Stemmenotat: {{caption}}",
"live_voice_entry_plain": "Stemmenotat",
"live_voice_caption_label": "Billedtekst (valgfrit)",
"live_voice_caption_placeholder": "f.eks. radiokontakt med havnemester",
"live_undo_voice_hint": "Stemmenotat gemt",
"live_comment_btn": "Kommentar",
"live_comment_placeholder": "Indtast tekst…",
"live_comment_confirm": "Indtast",
+18
View File
@@ -266,6 +266,24 @@
"live_photo_entry": "Foto: {{caption}}",
"live_photo_entry_plain": "Foto aufgenommen",
"live_undo_photo_hint": "Foto gespeichert",
"live_voice_btn": "Sprachnotiz",
"live_voice_hint": "Kurze Sprachnotiz aufnehmen (max. 60 Sekunden).",
"live_voice_record": "Aufnahme starten",
"live_voice_stop": "Aufnahme beenden",
"live_voice_recording": "Aufnahme {{time}}",
"live_voice_save": "Speichern",
"live_voice_saving": "Wird gespeichert…",
"live_voice_retake": "Neu aufnehmen",
"live_voice_mic_denied": "Mikrofonzugriff verweigert oder nicht verfügbar.",
"live_voice_record_failed": "Aufnahme fehlgeschlagen. Bitte erneut versuchen.",
"live_voice_unavailable": "Sprachnotiz nicht verfügbar",
"live_voice_too_large": "Aufnahme ist zu groß. Bitte kürzer aufnehmen.",
"live_voice_error": "Sprachnotiz konnte nicht gespeichert werden.",
"live_voice_entry": "Sprachnotiz: {{caption}}",
"live_voice_entry_plain": "Sprachnotiz",
"live_voice_caption_label": "Beschriftung (optional)",
"live_voice_caption_placeholder": "z. B. Funkverkehr mit Hafenmeister",
"live_undo_voice_hint": "Sprachnotiz gespeichert",
"live_comment_btn": "Kommentar",
"live_comment_placeholder": "Freitext eingeben…",
"live_comment_confirm": "Eintragen",
+18
View File
@@ -266,6 +266,24 @@
"live_photo_entry": "Photo: {{caption}}",
"live_photo_entry_plain": "Photo captured",
"live_undo_photo_hint": "Photo saved",
"live_voice_btn": "Voice memo",
"live_voice_hint": "Record a short voice memo (max. 60 seconds).",
"live_voice_record": "Start recording",
"live_voice_stop": "Stop recording",
"live_voice_recording": "Recording {{time}}",
"live_voice_save": "Save",
"live_voice_saving": "Saving…",
"live_voice_retake": "Record again",
"live_voice_mic_denied": "Microphone access denied or unavailable.",
"live_voice_record_failed": "Recording failed. Please try again.",
"live_voice_unavailable": "Voice memo unavailable",
"live_voice_too_large": "Recording is too large. Please record a shorter memo.",
"live_voice_error": "Could not save voice memo.",
"live_voice_entry": "Voice memo: {{caption}}",
"live_voice_entry_plain": "Voice memo",
"live_voice_caption_label": "Caption (optional)",
"live_voice_caption_placeholder": "e.g. radio call with harbour master",
"live_undo_voice_hint": "Voice memo saved",
"live_comment_btn": "Comment",
"live_comment_placeholder": "Enter text…",
"live_comment_confirm": "Log entry",
+18
View File
@@ -266,6 +266,24 @@
"live_photo_entry": "Foto: {{caption}}",
"live_photo_entry_plain": "Foto tatt",
"live_undo_photo_hint": "Foto lagret",
"live_voice_btn": "Talemelding",
"live_voice_hint": "Ta opp en kort talemelding (maks. 60 sekunder).",
"live_voice_record": "Start opptak",
"live_voice_stop": "Stopp opptak",
"live_voice_recording": "Tar opp {{time}}",
"live_voice_save": "Lagre",
"live_voice_saving": "Lagrer…",
"live_voice_retake": "Ta opp på nytt",
"live_voice_mic_denied": "Mikrofontilgang nektet eller utilgjengelig.",
"live_voice_record_failed": "Opptak mislyktes. Prøv igjen.",
"live_voice_unavailable": "Talemelding utilgjengelig",
"live_voice_too_large": "Opptaket er for stort. Ta et kortere opptak.",
"live_voice_error": "Kunne ikke lagre talemelding.",
"live_voice_entry": "Talemelding: {{caption}}",
"live_voice_entry_plain": "Talemelding",
"live_voice_caption_label": "Bildetekst (valgfritt)",
"live_voice_caption_placeholder": "f.eks. radiokontakt med havnesjef",
"live_undo_voice_hint": "Talemelding lagret",
"live_comment_btn": "Kommentar",
"live_comment_placeholder": "Skriv inn tekst…",
"live_comment_confirm": "Loggfør",
+18
View File
@@ -266,6 +266,24 @@
"live_photo_entry": "Foto: {{caption}}",
"live_photo_entry_plain": "Foto taget",
"live_undo_photo_hint": "Foto sparat",
"live_voice_btn": "Röstanteckning",
"live_voice_hint": "Spela in en kort röstanteckning (max 60 sekunder).",
"live_voice_record": "Starta inspelning",
"live_voice_stop": "Stoppa inspelning",
"live_voice_recording": "Spelar in {{time}}",
"live_voice_save": "Spara",
"live_voice_saving": "Sparar…",
"live_voice_retake": "Spela in igen",
"live_voice_mic_denied": "Mikrofonåtkomst nekad eller ej tillgänglig.",
"live_voice_record_failed": "Inspelning misslyckades. Försök igen.",
"live_voice_unavailable": "Röstanteckning ej tillgänglig",
"live_voice_too_large": "Inspelningen är för stor. Spela in kortare.",
"live_voice_error": "Kunde inte spara röstanteckning.",
"live_voice_entry": "Röstanteckning: {{caption}}",
"live_voice_entry_plain": "Röstanteckning",
"live_voice_caption_label": "Bildtext (valfritt)",
"live_voice_caption_placeholder": "t.ex. radiokontakt med hamnmästare",
"live_undo_voice_hint": "Röstanteckning sparad",
"live_comment_btn": "Kommentar",
"live_comment_placeholder": "Ange text…",
"live_comment_confirm": "Logga",