feat(cv): redesign document editing with revision-safe letters and writing tools

This commit is contained in:
cesnimda
2026-10-25 22:44:14 +01:00
parent 01e10996c5
commit 2bfaf6c14b
57 changed files with 2859 additions and 118 deletions
+98 -2
View File
@@ -134,6 +134,7 @@ export const translations = {
emailInboxItem: "{count} item",
emailInboxAttachmentCount: "{count} attachment",
historySourceManual: "Manual",
historySourceLegacy: "Recovered earlier version",
historySourceAi: "AI suggestion",
historySourceTemplate: "Template",
historySourceRestore: "Restored version",
@@ -697,6 +698,48 @@ export const translations = {
cvEditorEditingRegion: "CV editing controls",
cvEditorStudioNavigation: "CV studio sections",
cvEditorScope: "This CV only",
cvEditorGeneralDocument: "General CV",
cvEditorExportDraftChanged: "Your CV changed while preparing the PDF. Export again to download the current version.",
cvEditorSectionOrderStatus: "Section order",
cvEditorSourceProfile: "Source: Career Profile",
cvEditorReordered: "{item}: position {position} of {total}.",
cvEditorSectionEntryCount: "{count} entries",
cvEditorHistoryScope: "These are CV settings revisions. Restoring uses your current Career Profile, including any later changes to inherited content. Recorded application packages preserve separate historical documents.",
cvEditorGoToPage: "Go to page",
assetsLetterWorkspace: "Letter workspace",
letterDetails: "Document details",
letterSenderName: "Sender name",
letterSenderTitle: "Professional title",
letterSenderEmail: "Email",
letterSenderPhone: "Phone",
letterSenderLocation: "Location",
letterRecipient: "Recipient",
letterSubject: "Subject",
letterDate: "Date",
letterCopyContact: "Copy contact from CV",
letterMatchDesign: "Match CV design",
letterCopyHelp: "Review this snapshot before applying. Your letter text and recipient stay unchanged; future profile or CV edits do not update this copy.",
letterSourceCv: "Source CV",
letterCopyApply: "Use this copy",
letterCopyFailed: "Could not load the CV snapshot. Try again.",
letterDocumentPreview: "Document preview",
letterPreviewFailed: "Document preview failed. The previous preview is kept; it may be out of date.",
letterPreviewLoading: "Updating document preview…",
letterExportPdf: "Export letter PDF",
letterExportFailed: "Could not export the letter PDF. Your draft is kept.",
letterDesignSnapshot: "Design snapshot",
letterContactSnapshot: "Contact snapshot",
letterPage: "Page {page} of {count}",
assetsLetterWrite: "Write",
assetsLetterPreview: "Preview",
assetsLetterTextPreview: "Letter text preview",
assetsLetterTextPreviewHelp: "Preview the current letter text and formatting. Document design and PDF export are separate steps.",
assetsLetterTextPreviewEmpty: "Write your letter to preview it here.",
cvEditorPreviewDesign: "Preview design",
cvEditorTemplateSampleTitle: "Template sample preview",
cvEditorTemplateSampleHelp: "Sample content — review the design without changing your CV.",
cvEditorTemplateApplyHelp: "Applying uses this template's visual defaults. Your content, section order and CV-specific edits stay intact. You can undo the change.",
cvEditorTemplatePreviewFailed: "Could not preview this design. Your CV is unchanged.",
cvEditorLinkedApplication: "Linked application",
cvEditorShared: "Shared publicly",
cvEditorMoreActions: "More document actions",
@@ -945,7 +988,7 @@ export const translations = {
cvEditorDuplicated: "CV duplicated. You are editing the copy.",
cvEditorDuplicateFailed: "Could not duplicate this CV.",
cvEditorHistoryFailed: "Could not load history.",
cvEditorRestoreMessage: "Restore version {version}? Your current saved CV remains in the version history.",
cvEditorRestoreMessage: "Restore settings version {version} using your current Career Profile? Later changes to inherited content are included. Your current saved settings remain in history.",
cvEditorRestoreTitle: "Restore version {version}",
cvEditorRestoreVersion: "Restore version",
cvEditorSaveBeforeRestore: "Save the current CV before restoring an older version.",
@@ -1011,6 +1054,10 @@ export const translations = {
cvAiApply: "Apply",
cvAiReject: "Reject",
cvAiImprove: "Improve writing",
cvAiSuggestContent: "Suggest content",
cvAiGrammarCheck: "Grammar check",
cvAiShorter: "Shorter",
cvAiNeedSource: "Add verified career facts to this field first. Include your responsibility, the work you did and any outcome you can substantiate. Suggestions never add missing experience.",
cvAiProfessional: "Make more professional",
cvAiShorten: "Make shorter",
cvAiGrammar: "Fix grammar",
@@ -2867,6 +2914,7 @@ export const translations = {
coverAiTitle: "AI writing assistant",
coverAiSubtitle: "Uses this job and its linked CV. Suggestions never overwrite your document.",
coverAiSelectCv: "Select a CV before generating a tailored cover letter.",
coverAiSourceRequired: "Add verified experience, education or skills to the linked CV before requesting a letter suggestion. Job requirements alone are not evidence of your experience.",
coverAiUsing: "Using {name} and this application's full job advert and analysis.",
coverAiDocumentLanguage: "Document language",
coverAiAdditionalInstructions: "Additional instructions",
@@ -3008,6 +3056,7 @@ export const translations = {
emailInboxItem: "{count} element",
emailInboxAttachmentCount: "{count} vedlegg",
historySourceManual: "Manuell",
historySourceLegacy: "Gjenopprettet tidligere versjon",
historySourceAi: "KI-forslag",
historySourceTemplate: "Mal",
historySourceRestore: "Gjenopprettet versjon",
@@ -3571,6 +3620,48 @@ export const translations = {
cvEditorEditingRegion: "Redigeringskontroller for CV",
cvEditorStudioNavigation: "Seksjoner i CV-studioet",
cvEditorScope: "Bare denne CV-en",
cvEditorGeneralDocument: "Generell CV",
cvEditorExportDraftChanged: "CV-en ble endret mens PDF-en ble klargjort. Eksporter på nytt for å laste ned gjeldende versjon.",
cvEditorSectionOrderStatus: "Seksjonsrekkefølge",
cvEditorSourceProfile: "Kilde: Karriereprofil",
cvEditorReordered: "{item}: plassering {position} av {total}.",
cvEditorSectionEntryCount: "{count} oppføringer",
cvEditorHistoryScope: "Dette er versjoner av CV-innstillinger. Gjenoppretting bruker gjeldende karriereprofil, også senere endringer i arvet innhold. Registrerte søknadspakker bevarer egne historiske dokumenter.",
cvEditorGoToPage: "Gå til side",
assetsLetterWorkspace: "Søknadsbrev",
letterDetails: "Dokumentdetaljer",
letterSenderName: "Avsendernavn",
letterSenderTitle: "Yrkestittel",
letterSenderEmail: "E-post",
letterSenderPhone: "Telefon",
letterSenderLocation: "Sted",
letterRecipient: "Mottaker",
letterSubject: "Emne",
letterDate: "Dato",
letterCopyContact: "Kopier kontakt fra CV",
letterMatchDesign: "Bruk CV-design",
letterCopyHelp: "Se gjennom kopien før du bruker den. Brevteksten og mottakeren beholdes; senere profil- eller CV-endringer oppdaterer ikke denne kopien.",
letterSourceCv: "Kilde-CV",
letterCopyApply: "Bruk denne kopien",
letterCopyFailed: "Kunne ikke laste CV-kopien. Prøv igjen.",
letterDocumentPreview: "Dokumentforhåndsvisning",
letterPreviewFailed: "Dokumentforhåndsvisningen mislyktes. Forrige visning beholdes og kan være utdatert.",
letterPreviewLoading: "Oppdaterer dokumentforhåndsvisning…",
letterExportPdf: "Eksporter brev som PDF",
letterExportFailed: "Kunne ikke eksportere brevet som PDF. Utkastet beholdes.",
letterDesignSnapshot: "Designkopi",
letterContactSnapshot: "Kontaktkopi",
letterPage: "Side {page} av {count}",
assetsLetterWrite: "Skriv",
assetsLetterPreview: "Forhåndsvisning",
assetsLetterTextPreview: "Forhåndsvisning av brevtekst",
assetsLetterTextPreviewHelp: "Forhåndsvis gjeldende brevtekst og formatering. Dokumentdesign og PDF-eksport er egne trinn.",
assetsLetterTextPreviewEmpty: "Skriv brevet ditt for å forhåndsvise det her.",
cvEditorPreviewDesign: "Forhåndsvis design",
cvEditorTemplateSampleTitle: "Eksempelforhåndsvisning av mal",
cvEditorTemplateSampleHelp: "Eksempelinnhold — vurder designet uten å endre CV-en din.",
cvEditorTemplateApplyHelp: "Når du bruker malen, brukes malens visuelle standardverdier. Innhold, rekkefølge på seksjoner og CV-spesifikke endringer beholdes. Du kan angre endringen.",
cvEditorTemplatePreviewFailed: "Kunne ikke forhåndsvise dette designet. CV-en din er uendret.",
cvEditorLinkedApplication: "Tilknyttet søknad",
cvEditorShared: "Delt offentlig",
cvEditorMoreActions: "Flere dokumenthandlinger",
@@ -3819,7 +3910,7 @@ export const translations = {
cvEditorDuplicated: "CV-en er duplisert. Du redigerer kopien.",
cvEditorDuplicateFailed: "Kunne ikke duplisere denne CV-en.",
cvEditorHistoryFailed: "Kunne ikke laste historikken.",
cvEditorRestoreMessage: "Gjenopprette versjon {version}? Den nåværende lagrede CV-en beholdes i versjonshistorikken.",
cvEditorRestoreMessage: "Gjenopprette innstillingsversjon {version} med gjeldende karriereprofil? Senere endringer i arvet innhold tas med. De nåværende lagrede innstillingene beholdes i historikken.",
cvEditorRestoreTitle: "Gjenopprett versjon {version}",
cvEditorRestoreVersion: "Gjenopprett versjon",
cvEditorSaveBeforeRestore: "Lagre CV-en før du gjenoppretter en eldre versjon.",
@@ -3885,6 +3976,10 @@ export const translations = {
cvAiApply: "Bruk",
cvAiReject: "Avvis",
cvAiImprove: "Forbedre teksten",
cvAiSuggestContent: "Foreslå innhold",
cvAiGrammarCheck: "Grammatikkontroll",
cvAiShorter: "Kortere",
cvAiNeedSource: "Legg først til bekreftede karriereopplysninger i feltet. Ta med ansvaret ditt, arbeidet du utførte og resultater du kan dokumentere. Forslag legger aldri til manglende erfaring.",
cvAiProfessional: "Gjør mer profesjonell",
cvAiShorten: "Gjør kortere",
cvAiGrammar: "Rett grammatikk",
@@ -5741,6 +5836,7 @@ export const translations = {
coverAiTitle: "AI-skriveassistent",
coverAiSubtitle: "Bruker denne stillingen og den tilknyttede CV-en. Forslag overskriver aldri dokumentet ditt.",
coverAiSelectCv: "Velg en CV før du genererer et skreddersydd søknadsbrev.",
coverAiSourceRequired: "Legg til bekreftet erfaring, utdanning eller ferdigheter i den tilknyttede CV-en før du ber om et brevforslag. Stillingskrav alene dokumenterer ikke erfaringen din.",
coverAiUsing: "Bruker {name} samt hele stillingsannonsen og analysen for denne søknaden.",
coverAiDocumentLanguage: "Dokumentspråk",
coverAiAdditionalInstructions: "Tilleggsinstruksjoner",