feat: auto-save 2s + indicateur save + reminders inline actions (compléter/snooze)
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m23s
CI / Deploy production (on server) (push) Has been cancelled

- Auto-save debounce 2s dans note-editor-context
- lastSavedAt state + setIsDirty(false) dans handleSave
- Indicateur toolbar: ✓ sauvegardé / ● non enregistré avec timer relatif
- Reminders sidebar: bouton ✓ compléter + bouton +1h snooze (hover inline)
- i18n: clés reminders.markDone/snooze1h + notes.savedJustNow/unsaved (15 locales)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Antigravity
2026-05-29 18:58:19 +00:00
parent 0fa8978395
commit 1b56af9743
19 changed files with 221 additions and 66 deletions

View File

@@ -280,7 +280,9 @@
"saveFailed": "فشل الحفظ",
"search": "بحث",
"unarchived": "إلغاء الأرشفة",
"uploading": "جاري الرفع..."
"uploading": "جاري الرفع...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "اليوم في {time}",
"tomorrowAt": "غداً في {time}",
"clearCompleted": "مسح المكتملة",
"viewAll": "عرض جميع التذكيرات"
"viewAll": "عرض جميع التذكيرات",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "إنشاء دفتر",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Speichern fehlgeschlagen",
"search": "Suchen",
"unarchived": "Entarchiviert",
"uploading": "Wird hochgeladen..."
"uploading": "Wird hochgeladen...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Heute um {time}",
"tomorrowAt": "Morgen um {time}",
"clearCompleted": "Klar abgeschlossen",
"viewAll": "Alle Erinnerungen anzeigen"
"viewAll": "Alle Erinnerungen anzeigen",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Notizbuch erstellen",

View File

@@ -310,7 +310,9 @@
"generateIllustration": "Generate illustration",
"saveFailed": "Failed to save",
"createFirst": "Create your first note",
"unarchived": "Unarchived"
"unarchived": "Unarchived",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1148,7 +1150,8 @@
"todayAt": "Today at {time}",
"tomorrowAt": "Tomorrow at {time}",
"clearCompleted": "Clear completed",
"viewAll": "View all reminders"
"viewAll": "View all reminders",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Create Notebook",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Error al guardar",
"search": "Buscar",
"unarchived": "Desarchivado",
"uploading": "Subiendo..."
"uploading": "Subiendo...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Hoy a las {time}",
"tomorrowAt": "Mañana a las {time}",
"clearCompleted": "Borrar completado",
"viewAll": "Ver todos los recordatorios"
"viewAll": "Ver todos los recordatorios",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Crear cuaderno",

View File

@@ -280,7 +280,9 @@
"saveFailed": "ذخیره سازی ناموفق",
"search": "جستجو",
"unarchived": "خارج بایگانی",
"uploading": "در حال آپلود..."
"uploading": "در حال آپلود...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1044,7 +1046,8 @@
"todayAt": "امروز ساعت {time}",
"tomorrowAt": "فردا ساعت {time}",
"clearCompleted": "پاک کردن تکمیل شده‌ها",
"viewAll": "مشاهده همه یادآوری‌ها"
"viewAll": "مشاهده همه یادآوری‌ها",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "ایجاد دفترچه",

View File

@@ -316,7 +316,9 @@
"generateIllustration": "Générer une illustration",
"saveFailed": "Échec de la sauvegarde",
"createFirst": "Créez votre première note",
"unarchived": "Désarchivée"
"unarchived": "Désarchivée",
"savedJustNow": "Sauvegardé",
"unsaved": "Non sauvegardé"
},
"pagination": {
"previous": "←",
@@ -1154,7 +1156,8 @@
"todayAt": "Aujourd'hui à {time}",
"tomorrowAt": "Demain à {time}",
"clearCompleted": "Effacer les terminés",
"viewAll": "Voir tous les rappels"
"viewAll": "Voir tous les rappels",
"snooze1h": "Reporter de 1h"
},
"notebook": {
"create": "Créer un carnet",

View File

@@ -280,7 +280,9 @@
"saveFailed": "सहेजने में विफल",
"search": "खोजें",
"unarchived": "अनार्काइव नहीं",
"uploading": "अपलोड हो रहा है..."
"uploading": "अपलोड हो रहा है...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "आज {time} बजे",
"tomorrowAt": "कल {time} बजे",
"clearCompleted": "स्पष्टतः पूरा",
"viewAll": "सभी अनुस्मारक देखें"
"viewAll": "सभी अनुस्मारक देखें",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "नोटबुक बनाएं",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Salvataggio non riuscito",
"search": "Cerca",
"unarchived": "Dearchiviato",
"uploading": "Caricamento..."
"uploading": "Caricamento...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Oggi alle {time}",
"tomorrowAt": "Domani alle {time}",
"clearCompleted": "Cancella completato",
"viewAll": "Visualizza tutti i promemoria"
"viewAll": "Visualizza tutti i promemoria",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Crea notebook",

View File

@@ -280,7 +280,9 @@
"saveFailed": "保存に失敗しました",
"search": "検索",
"unarchived": "アーカイブ解除",
"uploading": "アップロード中..."
"uploading": "アップロード中...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "今日 {time}",
"tomorrowAt": "明日 {time}",
"clearCompleted": "クリア完了",
"viewAll": "すべてのリマインダーを表示"
"viewAll": "すべてのリマインダーを表示",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "ノートブックを作成",

View File

@@ -280,7 +280,9 @@
"saveFailed": "저장 실패",
"search": "검색",
"unarchived": "보관 해제됨",
"uploading": "업로드 중..."
"uploading": "업로드 중...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "오늘 {time}",
"tomorrowAt": "내일 {time}",
"clearCompleted": "클리어 완료",
"viewAll": "모든 알림 보기"
"viewAll": "모든 알림 보기",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "노트북 만들기",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Opslaan mislukt",
"search": "Zoeken",
"unarchived": "Gearchiveerd",
"uploading": "Uploaden..."
"uploading": "Uploaden...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Vandaag om {time}",
"tomorrowAt": "Morgen om {time}",
"clearCompleted": "Duidelijk voltooid",
"viewAll": "Bekijk alle herinneringen"
"viewAll": "Bekijk alle herinneringen",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Notitieboek maken",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Nie udało się zapisać",
"search": "Szukaj",
"unarchived": "Wycofane z archiwum",
"uploading": "Przesyłanie..."
"uploading": "Przesyłanie...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Dzisiaj o {time}",
"tomorrowAt": "Jutro o {time}",
"clearCompleted": "Wyczyść zakończone",
"viewAll": "Wyświetl wszystkie przypomnienia"
"viewAll": "Wyświetl wszystkie przypomnienia",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Utwórz notatnik",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Falha ao salvar",
"search": "Pesquisar",
"unarchived": "Desarquivado",
"uploading": "Enviando..."
"uploading": "Enviando...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Hoje às {time}",
"tomorrowAt": "Amanhã às {time}",
"clearCompleted": "Limpeza concluída",
"viewAll": "Ver todos os lembretes"
"viewAll": "Ver todos os lembretes",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Criar caderno",

View File

@@ -280,7 +280,9 @@
"saveFailed": "Не удалось сохранить",
"search": "Поиск",
"unarchived": "Разархивировано",
"uploading": "Загрузка..."
"uploading": "Загрузка...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "Сегодня в {time}",
"tomorrowAt": "Завтра в {time}",
"clearCompleted": "Очистить завершено",
"viewAll": "Просмотреть все напоминания"
"viewAll": "Просмотреть все напоминания",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "Создать блокнот",

View File

@@ -280,7 +280,9 @@
"saveFailed": "保存失败",
"search": "搜索",
"unarchived": "已取消归档",
"uploading": "上传中..."
"uploading": "上传中...",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes"
},
"pagination": {
"previous": "←",
@@ -1011,7 +1013,8 @@
"todayAt": "今天 {time}",
"tomorrowAt": "明天 {time}",
"clearCompleted": "清除完成",
"viewAll": "查看所有提醒"
"viewAll": "查看所有提醒",
"snooze1h": "Snooze 1 hour"
},
"notebook": {
"create": "创建笔记本",