Bump app version to 0.5.0 and implement offline mode support across components

- Added offline detection logic with `OfflineContext` to improve app functionality in offline scenarios.
- Integrated Tauri IPC functions to handle local tool settings and character attributes when offline.
- Refined indentation logic in `TextEditor` for better compatibility with WebKit engines.
- Removed unused `indent` property and related settings in editor components to simplify configuration.
- Updated locale files with improved translation consistency and parameterized placeholders.
This commit is contained in:
natreex
2026-03-24 22:45:10 -04:00
parent a114592ac9
commit cfd08e3261
23 changed files with 410 additions and 409 deletions

View File

@@ -106,7 +106,7 @@
},
"chapters": {
"title": "Chapters",
"detected": "{count} chapter(s) detected",
"detected": "{{count}} chapter(s) detected",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"words": "words"
@@ -133,7 +133,7 @@
"errorChapterUpdate": "An error occurred while updating the chapter.",
"errorChapterDelete": "An error occurred while deleting the chapter.",
"errorChapterNameRequired": "Chapter name is required.",
"errorChapterSubmit": "Error while trying to submit {chapterName} chapter.",
"errorChapterSubmit": "Error while trying to submit {{chapterName}} chapter.",
"errorFetchChapter": "Error while fetching chapter.",
"errorFetchChapters": "Error while fetching chapters.",
"successUpdate": "Chapter updated successfully.",
@@ -226,8 +226,8 @@
"inputPlaceholder": "Enter a word...",
"enterWordError": "Please enter a word to search.",
"loading": "Searching...",
"resultSynonyms": "Synonyms for \"{word}\"",
"resultAntonyms": "Antonyms for \"{word}\"",
"resultSynonyms": "Synonyms for \"{{word}}\"",
"resultAntonyms": "Antonyms for \"{{word}}\"",
"emptySynonymsTitle": "Synonym Search",
"emptyAntonymsTitle": "Antonym Search",
"emptySynonymsDescription": "Enter a word to find synonyms suitable for different writing contexts.",
@@ -305,7 +305,7 @@
"search": "Search for a world...",
"newWorld": "New world",
"deleteTitle": "Delete world",
"deleteMessage": "You are about to permanently delete the world \"{name}\".",
"deleteMessage": "You are about to permanently delete the world \"{{name}}\".",
"worldName": "World name",
"worldNamePlaceholder": "Enter the world name",
"worldHistory": "World history",
@@ -338,7 +338,7 @@
"noSectionDescription": "Create your first section to organize your story's locations.",
"newSection": "New section",
"deleteTitle": "Delete section",
"deleteMessage": "You are about to permanently delete the section \"{name}\".",
"deleteMessage": "You are about to permanently delete the section \"{{name}}\".",
"elementName": "Element name",
"elementNamePlaceholder": "Element name",
"elementDescriptionPlaceholder": "Element description",
@@ -346,11 +346,12 @@
"subElementNamePlaceholder": "Sub-element name",
"subElementDescriptionPlaceholder": "Sub-element description",
"newSubElementPlaceholder": "New sub-element",
"noElementAvailable": "No element available. Add one below!",
"noElementAvailable": "No element available.",
"editToAdd": "Click the edit icon to add elements.",
"newElementPlaceholder": "New element",
"noSectionAvailable": "No section available.",
"createSectionLabel": "Create section",
"elementsCount": "{count} elements",
"elementsCount": "{{count}} elements",
"element": "Element",
"addElement": "Add an element",
"addSubElement": "Add a sub-element",
@@ -438,7 +439,7 @@
"save": "Save",
"delete": "Delete",
"deleteTitle": "Delete spell",
"deleteMessage": "You are about to permanently delete the spell \"{name}\".",
"deleteMessage": "You are about to permanently delete the spell \"{{name}}\".",
"basicInfo": "Basic information",
"name": "Spell name",
"namePlaceholder": "Enter spell name",
@@ -448,7 +449,7 @@
"appearancePlaceholder": "Describe the visual appearance of the spell",
"tags": "Tags",
"addTag": "Add a tag...",
"createTag": "Create \"{name}\"",
"createTag": "Create \"{{name}}\"",
"powerLevel": "Power level",
"components": "Components",
"componentsPlaceholder": "Ingredients, gestures, incantations required...",
@@ -487,7 +488,7 @@
"newCharacter": "New character",
"exportToSeries": "Export to series",
"deleteTitle": "Delete character",
"deleteMessage": "You are about to permanently delete the character \"{name}\".",
"deleteMessage": "You are about to permanently delete the character \"{{name}}\".",
"basicInfo": "Basic information",
"name": "Name",
"namePlaceholder": "Enter a name",
@@ -545,7 +546,7 @@
"noCharactersDescription": "Add your first character to get started."
},
"characterSectionElement": {
"newItem": "New {item}"
"newItem": "New {{item}}"
},
"aboutEditors": {
"title": "About Scribe",
@@ -572,7 +573,8 @@
"bookGoals": "Book goals",
"save": "Save",
"notAvailable": "Option not available",
"unknownError": "An unknown error occurred."
"unknownError": "An unknown error occurred.",
"quillsenseOffline": "QuillSense is not available offline."
},
"noBookHome": {
"title": "Your work is waiting for its first words",
@@ -583,14 +585,18 @@
"preferences": "Preferences",
"ghostWriter": "Ghost Writer",
"draftCompanion": "Draft Companion",
"save": "Save"
"save": "Save",
"indentDisabled": "Indentation disabled",
"indentDisabledTitle": "Paragraph indentation disabled",
"indentDisabledDescription": "First-line paragraph indentation is disabled due to a display bug in Apple's WebKit engine. A fix is being integrated and will be available in an upcoming Safari update. Indentation will be automatically re-enabled once the fix is available on your system.",
"indentDisabledUnderstood": "Got it"
},
"draftCompanion": {
"noPreviousVersion": "No previous version of this chapter",
"errorFetchDraft": "Error while fetching draft content.",
"unknownError": "An unknown error has occurred",
"errorRefineText": "Error refining text",
"errorRefineDraft": "Error while refining draft: {message}",
"errorRefineDraft": "Error while refining draft: {{message}}",
"unknownErrorRefineDraft": "An unknown error occurred while refining the draft",
"successInsert": "Correction successfully inserted",
"selectVersion": "Select a version",
@@ -882,10 +888,10 @@
"errorDelete": "Error deleting the element.",
"errorAdd": "Error adding the element.",
"errorUnknown": "An unexpected error occurred.",
"emptyField": "The {section} field is empty.",
"namePlaceholder": "Name of {section}",
"descriptionPlaceholder": "Description of {section}",
"newPlaceholder": "New {section}"
"emptyField": "The {{section}} field is empty.",
"namePlaceholder": "Name of {{section}}",
"descriptionPlaceholder": "Description of {{section}}",
"newPlaceholder": "New {{section}}"
},
"bookTypes": {
"short": "Short Story",
@@ -1093,7 +1099,7 @@
"homePage": {
"loading": "Loading...",
"guide": {
"welcome": "Welcome {name}",
"welcome": "Welcome {{name}}",
"step0": {
"description1": "ERitors is AI-powered software (Anthropic and OpenAI APIs) integrated under the name QuillSense. Its goal is to provide you with all the necessary tools to create a complete work from A to Z.",
"description2": "This guide will help you get started. You can skip it if you wish."
@@ -1195,7 +1201,7 @@
}
},
"syncField": {
"uploadSuccess": "{count} element(s) updated successfully.",
"uploadSuccess": "{{count}} element(s) updated successfully.",
"uploadTooltip": "Push to series",
"downloadTooltip": "Pull from series"
},
@@ -1210,7 +1216,7 @@
"exporting": "Exporting...",
"noBookSelected": "No book selected.",
"noChaptersSelected": "Please select at least one chapter.",
"downloadSuccess": "Your {format} file has been downloaded successfully.",
"downloadSuccess": "Your {{format}} file has been downloaded successfully.",
"downloadError": "Download failed.",
"serverError": "Server error during export.",
"unknownError": "An unknown error occurred."