From bed69db2e8fa170aba166a7995b3b9fcc6354e00 Mon Sep 17 00:00:00 2001 From: KazNIISA IT Date: Tue, 18 Aug 2026 08:18:00 +0500 Subject: [PATCH 001/238] fix(keywords): follow a renamed tag into the filters that name it Renaming a tag changes its id - the id is a slug of the display name - and with it the `$label:` keyword the tag is stored under. The rename migrated the keyword on every message but left Sieve rules naming the old id, in both the generated `addflag` line and the metadata block the visual editor reads back. The rule then went on tagging new mail under an id no definition names any more: the tag renders as its raw id in grey and a search for the renamed tag misses everything that arrived since, which reads as the filter having quietly stopped working. `renameKeywordInRules` rewrites every `add_label` action naming the old id, disabled rules included. An external rule reaches the script through its verbatim `rawBlock`, so that is rewritten too - but only the operand of an `addflag`, since a test comparing a header against the same literal is the rule's own logic rather than the tag it applies. The store fetches, rewrites and uploads the account's active script on its own rather than through fetchFilters/saveFilters, so a rename from the tag settings cannot disturb which account an open filter view is showing; that view is updated in place when it shows the same account. The write still runs through the same plugin pipeline a save does, or a plugin's managed section would be dropped from the script this activates. A script that is not the active one is left alone entirely: writing to it would activate it, and a tag rename must not switch someone's filters back on. Whatever still names the old tag in the script that ends up being written - a rule kept verbatim, a test comparing against the keyword, a section a plugin just grafted back on - is counted, and the tag settings warn that some rules still use the old tag, because only the user can fix those. Mail delivered between the message migration and the rewrite was still tagged by the old rule, so a successful rewrite is followed by one more migration sweep, which no rewritten rule can race any more. --- components/settings/keyword-settings.tsx | 41 +++- lib/sieve/__tests__/keyword-rename.test.ts | 156 ++++++++++++++ lib/sieve/keyword-rename.ts | 100 +++++++++ locales/ar/common.json | 1 + locales/ca/common.json | 1 + locales/cs/common.json | 1 + locales/da/common.json | 1 + locales/de/common.json | 1 + locales/en/common.json | 1 + locales/es/common.json | 1 + locales/fa/common.json | 1 + locales/fr/common.json | 1 + locales/he/common.json | 1 + locales/hu/common.json | 1 + locales/it/common.json | 1 + locales/ja/common.json | 1 + locales/ko/common.json | 1 + locales/lv/common.json | 1 + locales/mn/common.json | 1 + locales/nb/common.json | 1 + locales/nl/common.json | 1 + locales/pl/common.json | 1 + locales/pt/common.json | 1 + locales/ro/common.json | 1 + locales/ru/common.json | 1 + locales/sk/common.json | 1 + locales/tr/common.json | 1 + locales/uk/common.json | 1 + locales/zh-TW/common.json | 1 + locales/zh/common.json | 1 + .../filter-store-keyword-rename.test.ts | 202 ++++++++++++++++++ stores/filter-store.ts | 93 ++++++++ 32 files changed, 617 insertions(+), 2 deletions(-) create mode 100644 lib/sieve/__tests__/keyword-rename.test.ts create mode 100644 lib/sieve/keyword-rename.ts create mode 100644 stores/__tests__/filter-store-keyword-rename.test.ts diff --git a/components/settings/keyword-settings.tsx b/components/settings/keyword-settings.tsx index d106d22b8..ff78e20ef 100644 --- a/components/settings/keyword-settings.tsx +++ b/components/settings/keyword-settings.tsx @@ -12,6 +12,7 @@ import { } from "@/stores/settings-store"; import { useAuthStore } from "@/stores/auth-store"; import { useEmailStore } from "@/stores/email-store"; +import { useFilterStore } from "@/stores/filter-store"; import { SettingsSection, SettingItem, ToggleSwitch, Select } from "./settings-section"; import { Plus, Pencil, Trash2, GripVertical, Check, X, Loader2, Search } from "lucide-react"; import { cn } from "@/lib/utils"; @@ -522,6 +523,7 @@ export function KeywordSettings() { useSettingsStore(); const { client } = useAuthStore(); const { fetchTagCounts } = useEmailStore(); + const renameKeywordInFilters = useFilterStore((state) => state.renameKeywordInFilters); const [editingId, setEditingId] = useState(null); const [isAdding, setIsAdding] = useState(false); const [isMigrating, setIsMigrating] = useState(false); @@ -571,9 +573,9 @@ export function KeywordSettings() { if (idChanged && client) { setIsMigrating(true); + const oldJmapKeyword = `$label:${oldId}`; + const newJmapKeyword = `$label:${keyword.id}`; try { - const oldJmapKeyword = `$label:${oldId}`; - const newJmapKeyword = `$label:${keyword.id}`; const migration = await client.migrateKeyword(oldJmapKeyword, newJmapKeyword); renameKeyword(oldId, keyword); fetchTagCounts(client); @@ -590,6 +592,41 @@ export function KeywordSettings() { setIsMigrating(false); return; } + + // The messages now carry the new keyword, so the definition is right + // whatever happens next. Filter rules name the same id and would go on + // tagging new mail under the old one, so follow the rename into them - + // and say so when a rule is left behind, since only the user can fix a + // hand-edited script. + let rewroteFilters = false; + try { + const outcome = await renameKeywordInFilters(client, oldId, keyword.id); + rewroteFilters = outcome.changed > 0; + if (outcome.unhandled > 0) { + const toastModule = await import('sonner'); + toastModule.toast.warning(t("filters_migration_error")); + } + } catch (error) { + console.error("Failed to migrate keyword in filters:", error); + const toastModule = await import('sonner'); + toastModule.toast.warning(t("filters_migration_error")); + } + + if (rewroteFilters) { + // Mail delivered between the migration above and the rewrite was still + // tagged by the old rule, and the migration has already passed it by. + // Sweep once more now that no rule can write the old keyword. A failure + // here is about the messages, not the filters, so it says so. + try { + await client.migrateKeyword(oldJmapKeyword, newJmapKeyword); + fetchTagCounts(client); + } catch (error) { + console.error("Failed to sweep up mail tagged during the rename:", error); + const toastModule = await import('sonner'); + toastModule.toast.error(t("migration_error")); + } + } + setIsMigrating(false); } else { updateKeyword(oldId, { label: keyword.label, color: keyword.color }); diff --git a/lib/sieve/__tests__/keyword-rename.test.ts b/lib/sieve/__tests__/keyword-rename.test.ts new file mode 100644 index 000000000..eb89bd348 --- /dev/null +++ b/lib/sieve/__tests__/keyword-rename.test.ts @@ -0,0 +1,156 @@ +import { describe, it, expect } from 'vitest'; +import { countKeywordUses, renameKeywordInRules } from '../keyword-rename'; +import type { FilterRule } from '@/lib/jmap/sieve-types'; + +const makeRule = (overrides: Partial = {}): FilterRule => ({ + id: 'rule-1', + name: 'ISO', + enabled: true, + matchType: 'all', + conditions: [{ field: 'from', comparator: 'contains', value: 'iso.org' }], + actions: [{ type: 'add_label', value: 'red' }], + stopProcessing: false, + ...overrides, +}); + +describe('renameKeywordInRules', () => { + it('rewrites an add_label action that names the old tag', () => { + const { rules, changed } = renameKeywordInRules([makeRule()], 'red', 'iso'); + expect(changed).toBe(1); + expect(rules[0].actions[0]).toEqual({ type: 'add_label', value: 'iso' }); + }); + + it('leaves actions naming a different tag alone', () => { + const rules = [makeRule({ actions: [{ type: 'add_label', value: 'blue' }] })]; + const result = renameKeywordInRules(rules, 'red', 'iso'); + expect(result.changed).toBe(0); + expect(result.rules[0].actions[0].value).toBe('blue'); + }); + + it('leaves actions of other types alone even when the value collides', () => { + const rules = [makeRule({ actions: [{ type: 'move', value: 'red' }] })]; + const result = renameKeywordInRules(rules, 'red', 'iso'); + expect(result.changed).toBe(0); + expect(result.rules[0].actions[0].value).toBe('red'); + }); + + it('counts every action it rewrites, across rules', () => { + const rules = [ + makeRule({ id: 'r1' }), + makeRule({ id: 'r2', actions: [{ type: 'star' }, { type: 'add_label', value: 'red' }] }), + ]; + expect(renameKeywordInRules(rules, 'red', 'iso').changed).toBe(2); + }); + + it('rewrites a disabled rule too, so enabling it later still tags correctly', () => { + const { changed, rules } = renameKeywordInRules([makeRule({ enabled: false })], 'red', 'iso'); + expect(changed).toBe(1); + expect(rules[0].actions[0].value).toBe('iso'); + }); + + it('does nothing when the id is unchanged', () => { + const rules = [makeRule()]; + const result = renameKeywordInRules(rules, 'red', 'red'); + expect(result).toEqual({ rules, changed: 0 }); + expect(result.rules).toBe(rules); + }); + + it('does not mutate the rules it was given', () => { + const rules = [makeRule()]; + renameKeywordInRules(rules, 'red', 'iso'); + expect(rules[0].actions[0].value).toBe('red'); + }); + + it('rewrites the raw block of an external rule, which is emitted verbatim', () => { + const rules = [ + makeRule({ + origin: 'external', + rawBlock: '# hand written\nif header :contains "From" "iso.org" {\n addflag "$label:red";\n}', + }), + ]; + const { rules: renamed, changed } = renameKeywordInRules(rules, 'red', 'iso'); + expect(changed).toBe(1); + expect(renamed[0].rawBlock).toContain('addflag "$label:iso";'); + expect(renamed[0].rawBlock).not.toContain('$label:red'); + }); + + it('rewrites only the addflag operand of a raw block, not a matching test string', () => { + const rules = [ + makeRule({ + origin: 'external', + rawBlock: 'if header :contains "X-Tag" "$label:red" {\n addflag "$label:red";\n}', + }), + ]; + const { rules: renamed, changed } = renameKeywordInRules(rules, 'red', 'iso'); + expect(changed).toBe(1); + expect(renamed[0].rawBlock).toContain('addflag "$label:iso";'); + expect(renamed[0].rawBlock).toContain('header :contains "X-Tag" "$label:red"'); + }); + + it('leaves an opaque rule, which has no parsed actions, untouched', () => { + const rules = [ + makeRule({ + origin: 'opaque', + actions: [], + conditions: [], + rawBlock: '# unparseable\nif anyof (true) {\n addflag "$label:red";\n}', + }), + ]; + const result = renameKeywordInRules(rules, 'red', 'iso'); + expect(result.changed).toBe(0); + expect(result.rules[0].rawBlock).toContain('$label:red'); + }); + + it('does not touch a raw block whose keyword only shares a prefix with the old id', () => { + const rules = [ + makeRule({ + origin: 'external', + actions: [{ type: 'add_label', value: 'red-alert' }], + rawBlock: 'if true {\n addflag "$label:red-alert";\n}', + }), + ]; + const { rules: renamed, changed } = renameKeywordInRules(rules, 'red', 'iso'); + expect(changed).toBe(0); + expect(renamed[0].rawBlock).toContain('$label:red-alert'); + }); + + it('rewrites a nested id without treating its separator as a pattern', () => { + const rules = [ + makeRule({ + actions: [{ type: 'add_label', value: 'work/clients' }], + origin: 'external', + rawBlock: 'if true {\n addflag "$label:work/clients";\n}', + }), + ]; + const { rules: renamed, changed } = renameKeywordInRules(rules, 'work/clients', 'work/acme'); + expect(changed).toBe(1); + expect(renamed[0].actions[0].value).toBe('work/acme'); + expect(renamed[0].rawBlock).toContain('addflag "$label:work/acme";'); + }); +}); + +describe('countKeywordUses', () => { + it('counts the keyword as it is written in a script', () => { + const script = 'if true {\n addflag "$label:red";\n}\nif false {\n addflag "$label:red";\n}'; + expect(countKeywordUses(script, 'red')).toBe(2); + }); + + it('does not count a keyword that merely starts with the id', () => { + expect(countKeywordUses('addflag "$label:red-alert";', 'red')).toBe(0); + }); + + it('returns zero for a script that never names the tag', () => { + expect(countKeywordUses('addflag "\\\\Seen";', 'red')).toBe(0); + }); + + it('counts the tag in a multi-flag argument, which is one Sieve string', () => { + // RFC 5232 section 3.2: the argument is a space-separated flag list, so the + // keyword is not always followed by the closing quote. + expect(countKeywordUses('addflag "$label:red \\\\Seen";', 'red')).toBe(1); + expect(countKeywordUses('addflag "\\\\Seen $label:red";', 'red')).toBe(1); + }); + + it('still does not count a longer tag that starts with the id', () => { + expect(countKeywordUses('addflag "$label:red-alert \\\\Seen";', 'red')).toBe(0); + }); +}); diff --git a/lib/sieve/keyword-rename.ts b/lib/sieve/keyword-rename.ts new file mode 100644 index 000000000..834acc00a --- /dev/null +++ b/lib/sieve/keyword-rename.ts @@ -0,0 +1,100 @@ +/** + * Following a renamed tag into the filters that name it. + * + * A tag is stored on messages as the keyword `$label:`, and `id` is a slug + * of the display name - so renaming a tag changes its id, and every message + * carrying it has to be migrated (`IJMAPClient.migrateKeyword`). A Sieve rule + * with an `add_label` action names that same id, in the generated `addflag` + * line and in the metadata block the visual editor reads back. Migrating only + * the messages leaves the rule writing the old keyword: new mail keeps arriving + * under a tag no definition names any more, which reads as "the filter stopped + * working" while the rule is in fact running exactly as written. + * + * This module is the rewrite half. It is pure - the caller fetches the script, + * parses it, applies this, and writes the result back. + */ +import type { FilterAction, FilterRule } from '@/lib/jmap/sieve-types'; +import { KEYWORD_PREFIX } from '@/lib/thread-utils'; + +/** The result of following a rename through a set of rules. */ +export interface KeywordRenameResult { + /** The rules, with every reference to the old id rewritten. */ + rules: FilterRule[]; + /** How many actions were rewritten. Zero means nothing referenced the tag. */ + changed: number; +} + +/** The keyword an `add_label` action writes, as it appears in a script. */ +function quotedKeyword(id: string): string { + return `"${KEYWORD_PREFIX}${id}"`; +} + +function escapeRegExp(value: string): string { + return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + +/** + * How many times `script` writes the keyword of the tag `id`. + * + * Whole-token only: `$label:red-alert` is a different tag from `$label:red` + * and must not be counted, which a plain substring search would get wrong. The + * token ends at the closing quote or at a space, since the argument of an + * `addflag` is a space-separated flag list (RFC 5232 section 3.2) and the tag + * need not be the last flag in it. + * + * Used to tell whether a script this module cannot rewrite - a hand-edited one, + * kept verbatim - still refers to a tag that has since been renamed. + */ +export function countKeywordUses(script: string, id: string): number { + const pattern = new RegExp(`["\\s]${escapeRegExp(KEYWORD_PREFIX + id)}(?=["\\s])`, 'g'); + return script.match(pattern)?.length ?? 0; +} + +/** + * `rules` with every `add_label` action naming `oldId` rewritten to `newId`. + * + * Disabled rules are rewritten too: leaving one behind would have it tag under + * the old id the moment it is switched back on. An external rule - one Bulwark + * did not write, re-emitted from its `rawBlock` verbatim - has that block + * rewritten as well, since its parsed actions never reach the generated script. + * Only the operand of an `addflag` is touched there: a test comparing some + * header against the same literal is the rule's own logic, and rewriting it + * would change what the rule matches rather than what it tags. + * + * What is left naming the old id afterwards - that test, or an opaque rule, + * which parses to no actions at all - is for the caller to count in the script + * it ends up writing, with `countKeywordUses`. The input is left untouched, and + * an id that did not actually change returns the very same array, so a caller + * can skip writing anything. + */ +export function renameKeywordInRules( + rules: FilterRule[], + oldId: string, + newId: string, +): KeywordRenameResult { + if (!oldId || !newId || oldId === newId) return { rules, changed: 0 }; + + let changed = 0; + const rewritten = rules.map((rule) => { + let ruleChanged = 0; + const actions: FilterAction[] = rule.actions.map((action) => { + if (action.type !== 'add_label' || action.value !== oldId) return action; + ruleChanged++; + return { ...action, value: newId }; + }); + if (ruleChanged === 0) return rule; + + changed += ruleChanged; + const next: FilterRule = { ...rule, actions }; + if (next.rawBlock) next.rawBlock = renameInRawBlock(next.rawBlock, oldId, newId); + return next; + }); + + return changed === 0 ? { rules, changed: 0 } : { rules: rewritten, changed }; +} + +/** Retags the `addflag` lines of a block that is otherwise kept verbatim. */ +function renameInRawBlock(block: string, oldId: string, newId: string): string { + const pattern = new RegExp(`(addflag\\s+)${escapeRegExp(quotedKeyword(oldId))}`, 'g'); + return block.replace(pattern, `$1${quotedKeyword(newId)}`); +} diff --git a/locales/ar/common.json b/locales/ar/common.json index ac7018dc0..515a6852d 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -1099,6 +1099,7 @@ "cancel": "إلغاء", "migrating": "جارٍ تحديث الوسم على الرسائل الحالية…", "migration_error": "فشل تحديث الوسم على الرسائل الحالية", + "filters_migration_error": "لا تزال بعض قواعد التصفية تستخدم الوسم القديم — حدّثها يدويًا", "nesting": { "label": "وسوم متداخلة", "description": "ضع الوسوم داخل وسوم أخرى واعرضها كشجرة في الشريط الجانبي." diff --git a/locales/ca/common.json b/locales/ca/common.json index bb0ce968d..344a4e6ec 100644 --- a/locales/ca/common.json +++ b/locales/ca/common.json @@ -1099,6 +1099,7 @@ "cancel": "Cancel·la", "migrating": "Actualitzant l'etiqueta als correus existents…", "migration_error": "No s'ha pogut actualitzar l'etiqueta als correus existents", + "filters_migration_error": "Algunes regles de filtre encara fan servir l'etiqueta antiga: actualitza-les manualment", "nesting": { "label": "Etiquetes imbricades", "description": "Imbrica etiquetes sota altres etiquetes i mostra-les com un arbre a la barra lateral." diff --git a/locales/cs/common.json b/locales/cs/common.json index a8d69da24..211d41b37 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -1096,6 +1096,7 @@ "cancel": "Zrušit", "migrating": "Aktualizace štítku v existujících e-mailech…", "migration_error": "Nepodařilo se aktualizovat štítek v existujících e-mailech", + "filters_migration_error": "Některá pravidla filtrů stále používají starý štítek – upravte je ručně", "nesting": { "label": "Vnořené štítky", "description": "Vnořujte štítky pod jiné štítky a zobrazujte je v postranním panelu jako strom." diff --git a/locales/da/common.json b/locales/da/common.json index 5d1eff6fb..3fd6a9fcc 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -1099,6 +1099,7 @@ "cancel": "Annuller", "migrating": "Opdaterer tag på eksisterende e-mails…", "migration_error": "Kunne ikke opdatere tag på eksisterende e-mails", + "filters_migration_error": "Nogle filterregler bruger stadig det gamle tag – opdatér dem manuelt", "nesting": { "label": "Indlejrede tags", "description": "Indlejr tags under andre tags og vis dem som et træ i sidepanelet." diff --git a/locales/de/common.json b/locales/de/common.json index 70331f3ab..4106c86e4 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -1096,6 +1096,7 @@ "cancel": "Abbrechen", "migrating": "Label auf vorhandenen E-Mails aktualisieren…", "migration_error": "Label auf vorhandenen E-Mails konnte nicht aktualisiert werden", + "filters_migration_error": "Einige Filterregeln verwenden noch das alte Tag – aktualisieren Sie sie manuell", "nesting": { "label": "Verschachtelte Labels", "description": "Labels unter anderen Labels verschachteln und als Baum in der Seitenleiste anzeigen." diff --git a/locales/en/common.json b/locales/en/common.json index 68874b945..774a3440f 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -1099,6 +1099,7 @@ "cancel": "Cancel", "migrating": "Updating tag on existing emails…", "migration_error": "Failed to update tag on existing emails", + "filters_migration_error": "Some filter rules still use the old tag — update them manually", "nesting": { "label": "Nested Tags", "description": "Nest tags underneath other tags and show them as a tree in the sidebar." diff --git a/locales/es/common.json b/locales/es/common.json index c4172288e..651e771b3 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -1096,6 +1096,7 @@ "cancel": "Cancelar", "migrating": "Actualizando etiqueta en correos existentes…", "migration_error": "Error al actualizar la etiqueta en correos existentes", + "filters_migration_error": "Algunas reglas de filtro siguen usando la etiqueta anterior: actualízalas manualmente", "nesting": { "label": "Etiquetas anidadas", "description": "Anida etiquetas debajo de otras etiquetas y muéstralas como un árbol en la barra lateral." diff --git a/locales/fa/common.json b/locales/fa/common.json index 9dc030aac..94af0e236 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -1099,6 +1099,7 @@ "cancel": "انصراف", "migrating": "در حال به‌روزرسانی برچسب روی ایمیل‌های موجود…", "migration_error": "به‌روزرسانی برچسب ناموفق بود", + "filters_migration_error": "برخی قوانین فیلتر هنوز از برچسب قدیمی استفاده می‌کنند — آن‌ها را دستی به‌روزرسانی کنید", "nesting": { "label": "برچسب‌های تودرتو", "description": "برچسب‌ها را زیر برچسب‌های دیگر قرار دهید و آن‌ها را به‌صورت درختی در نوار کناری نمایش دهید." diff --git a/locales/fr/common.json b/locales/fr/common.json index b844debfc..ee5707014 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -1096,6 +1096,7 @@ "cancel": "Annuler", "migrating": "Mise à jour de l'étiquette sur les e-mails existants…", "migration_error": "Impossible de mettre à jour l'étiquette sur les e-mails existants", + "filters_migration_error": "Certaines règles de filtrage utilisent encore l'ancienne étiquette — mettez-les à jour manuellement", "nesting": { "label": "Étiquettes imbriquées", "description": "Imbriquez des étiquettes sous d'autres étiquettes et affichez-les sous forme d'arborescence dans la barre latérale." diff --git a/locales/he/common.json b/locales/he/common.json index e5e7d311d..e05275ead 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -1061,6 +1061,7 @@ "cancel": "לְבַטֵל", "migrating": "מעדכן מילת מפתח באימיילים קיימים...", "migration_error": "נכשל עדכון מילת המפתח בהודעות דוא\"ל קיימות", + "filters_migration_error": "חלק מכללי הסינון עדיין משתמשים בתגית הישנה — עדכנו אותם ידנית", "nesting": { "label": "תגים מקוננים", "description": "קנן תגים תחת תגים אחרים והצג אותם כעץ בסרגל הצד." diff --git a/locales/hu/common.json b/locales/hu/common.json index 0e07afb34..1c88f8799 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -1099,6 +1099,7 @@ "cancel": "Mégse", "migrating": "Címke frissítése a meglévő e-maileken...", "migration_error": "Nem sikerült frissíteni a címkét a meglévő e-maileken", + "filters_migration_error": "Néhány szűrőszabály még a régi címkét használja – frissítse őket kézzel", "nesting": { "label": "Beágyazott címkék", "description": "Ágyazzon címkéket más címkék alá, és jelenítse meg őket fastruktúraként az oldalsávon." diff --git a/locales/it/common.json b/locales/it/common.json index 48a3ae4f8..49e2a95e4 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -1096,6 +1096,7 @@ "cancel": "Annulla", "migrating": "Aggiornamento dell'etichetta nelle e-mail esistenti…", "migration_error": "Impossibile aggiornare l'etichetta nelle e-mail esistenti", + "filters_migration_error": "Alcune regole dei filtri usano ancora il vecchio tag: aggiornale manualmente", "nesting": { "label": "Etichette nidificate", "description": "Nidifica le etichette sotto altre etichette e mostrale come un albero nella barra laterale." diff --git a/locales/ja/common.json b/locales/ja/common.json index de7e40c0e..df0adf2dd 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -1096,6 +1096,7 @@ "cancel": "キャンセル", "migrating": "既存のメールのラベルを更新中…", "migration_error": "既存のメールのラベルの更新に失敗しました", + "filters_migration_error": "一部のフィルタールールが古いタグを使用しています。手動で更新してください", "nesting": { "label": "ネストされたラベル", "description": "ラベルを他のラベルの下にネストし、サイドバーにツリーとして表示します。" diff --git a/locales/ko/common.json b/locales/ko/common.json index 8cb8e3d75..66da35274 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -1096,6 +1096,7 @@ "cancel": "취소", "migrating": "기존 이메일의 태그 업데이트 중…", "migration_error": "기존 이메일의 태그 업데이트에 실패했습니다", + "filters_migration_error": "일부 필터 규칙이 여전히 이전 태그를 사용합니다. 수동으로 업데이트하세요", "nesting": { "label": "중첩 태그", "description": "태그를 다른 태그 아래에 중첩하고 사이드바에 트리로 표시합니다." diff --git a/locales/lv/common.json b/locales/lv/common.json index f38757c6e..7846fce8f 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -1096,6 +1096,7 @@ "cancel": "Atcelt", "migrating": "Taga atjaunināšana esošajos e-pastos…", "migration_error": "Neizdevās atjaunināt tagu esošajos e-pastos", + "filters_migration_error": "Dažas filtru kārtulas joprojām izmanto veco tagu — atjauniniet tās manuāli", "nesting": { "label": "Ligzdoti tagi", "description": "Ligzdojiet tagus zem citiem tagiem un rādiet tos sānjoslā kā koku." diff --git a/locales/mn/common.json b/locales/mn/common.json index fdfa0ca40..665f1eefa 100644 --- a/locales/mn/common.json +++ b/locales/mn/common.json @@ -1099,6 +1099,7 @@ "cancel": "Цуцлах", "migrating": "Одоо байгаа имэйлүүд дээрх шошгыг шинэчилж байна...", "migration_error": "Одоо байгаа имэйлийн шошгыг шинэчилж чадсангүй", + "filters_migration_error": "Зарим шүүлтүүрийн дүрэм хуучин шошгыг ашигласаар байна — гараар шинэчилнэ үү", "nesting": { "label": "Оруулсан шошго", "description": "Тагуудыг бусад шошгоны доор байрлуулж, хажуугийн самбарт мод хэлбэрээр харуул." diff --git a/locales/nb/common.json b/locales/nb/common.json index 6e53eec2c..5c2c8525c 100644 --- a/locales/nb/common.json +++ b/locales/nb/common.json @@ -1099,6 +1099,7 @@ "cancel": "Avbryt", "migrating": "Oppdaterer etiketten på eksisterende e-poster...", "migration_error": "Kunne ikke oppdatere etiketten på eksisterende e-poster", + "filters_migration_error": "Noen filterregler bruker fortsatt den gamle etiketten – oppdater dem manuelt", "nesting": { "label": "Nestede etiketter", "description": "Plasser etiketter under hverandre og vis dem som et hierarki i sidefeltet." diff --git a/locales/nl/common.json b/locales/nl/common.json index 14dd7093d..7296156b5 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -1096,6 +1096,7 @@ "cancel": "Annuleren", "migrating": "Label bijwerken op bestaande e-mails…", "migration_error": "Label bijwerken op bestaande e-mails mislukt", + "filters_migration_error": "Sommige filterregels gebruiken nog het oude label — werk ze handmatig bij", "nesting": { "label": "Geneste labels", "description": "Nest labels onder andere labels en toon ze als een boomstructuur in de zijbalk." diff --git a/locales/pl/common.json b/locales/pl/common.json index 57380fb89..213518f67 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -1096,6 +1096,7 @@ "cancel": "Anuluj", "migrating": "Aktualizowanie etykiety w istniejących e-mailach…", "migration_error": "Nie udało się zaktualizować etykiety w istniejących e-mailach", + "filters_migration_error": "Niektóre reguły filtrów nadal używają starego tagu — zaktualizuj je ręcznie", "nesting": { "label": "Zagnieżdżone etykiety", "description": "Zagnieżdżaj etykiety pod innymi etykietami i wyświetlaj je w panelu bocznym jako drzewo." diff --git a/locales/pt/common.json b/locales/pt/common.json index 2c3f35014..399889a1a 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -1096,6 +1096,7 @@ "cancel": "Cancelar", "migrating": "A atualizar etiqueta nos e-mails existentes…", "migration_error": "Falha ao atualizar etiqueta nos e-mails existentes", + "filters_migration_error": "Algumas regras de filtro ainda usam a etiqueta antiga — atualize-as manualmente", "nesting": { "label": "Etiquetas aninhadas", "description": "Aninhe etiquetas sob outras etiquetas e mostre-as como uma árvore na barra lateral." diff --git a/locales/ro/common.json b/locales/ro/common.json index 1f6fd1896..119ce3175 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -1099,6 +1099,7 @@ "cancel": "Anulează", "migrating": "Actualizarea etichetei pentru e-mailurile existente…", "migration_error": "Nu s-a putut actualiza eticheta pentru e-mailurile existente", + "filters_migration_error": "Unele reguli de filtrare folosesc încă eticheta veche — actualizează-le manual", "nesting": { "label": "Etichete imbricate", "description": "Imbricați etichete sub alte etichete și afișați-le ca un arbore în bara laterală." diff --git a/locales/ru/common.json b/locales/ru/common.json index 13814a0cc..51727ff43 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -1096,6 +1096,7 @@ "cancel": "Отмена", "migrating": "Обновление тега в существующих письмах…", "migration_error": "Не удалось обновить тег в существующих письмах", + "filters_migration_error": "Некоторые правила фильтров всё ещё используют старый тег — обновите их вручную", "nesting": { "label": "Вложенные теги", "description": "Вкладывайте теги в другие теги и показывайте их в боковой панели в виде дерева." diff --git a/locales/sk/common.json b/locales/sk/common.json index 56f3e76ec..b7ffbc2ca 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -1099,6 +1099,7 @@ "cancel": "Zrušiť", "migrating": "Aktualizácia štítku v existujúcich e-mailoch…", "migration_error": "Nepodarilo sa aktualizovať štítok v existujúcich e-mailoch", + "filters_migration_error": "Niektoré pravidlá filtrov stále používajú starý štítok – upravte ich ručne", "nesting": { "label": "Vnorené štítky", "description": "Vnorujte štítky pod iné štítky a zobrazujte ich v bočnom paneli ako strom." diff --git a/locales/tr/common.json b/locales/tr/common.json index 99c5227fd..0f27dd6d2 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -1096,6 +1096,7 @@ "cancel": "İptal", "migrating": "Mevcut e-postalardaki etiket güncelleniyor…", "migration_error": "Mevcut e-postalardaki etiket güncellenemedi", + "filters_migration_error": "Bazı filtre kuralları hâlâ eski etiketi kullanıyor — bunları elle güncelleyin", "nesting": { "label": "İç içe etiketler", "description": "Etiketleri başka etiketlerin altına yerleştirin ve kenar çubuğunda ağaç olarak gösterin." diff --git a/locales/uk/common.json b/locales/uk/common.json index 723af5fc2..bf3faaa15 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -1096,6 +1096,7 @@ "cancel": "Скасувати", "migrating": "Оновлення ключового слова в наявних електронних листах…", "migration_error": "Не вдалося оновити ключове слово в існуючих електронних листах", + "filters_migration_error": "Деякі правила фільтрів досі використовують старий тег — оновіть їх вручну", "nesting": { "label": "Вкладені теги", "description": "Вкладайте теги в інші теги та показуйте їх на бічній панелі у вигляді дерева." diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index 57ca6db0f..5ce6ade0b 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -1096,6 +1096,7 @@ "cancel": "取消", "migrating": "正在更新現有郵件的標籤…", "migration_error": "更新現有郵件的標籤失敗", + "filters_migration_error": "部分篩選規則仍在使用舊標籤,請手動更新", "nesting": { "label": "巢狀標籤", "description": "將標籤巢狀放在其他標籤下,並在側邊欄以樹狀結構顯示。" diff --git a/locales/zh/common.json b/locales/zh/common.json index 0d804d91c..f8469e3b3 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -1096,6 +1096,7 @@ "cancel": "取消", "migrating": "正在更新现有邮件的标签…", "migration_error": "更新现有邮件的标签失败", + "filters_migration_error": "部分过滤规则仍在使用旧标签,请手动更新", "nesting": { "label": "嵌套标签", "description": "将标签嵌套在其他标签之下,并在侧边栏中以树形显示。" diff --git a/stores/__tests__/filter-store-keyword-rename.test.ts b/stores/__tests__/filter-store-keyword-rename.test.ts new file mode 100644 index 000000000..ff936c301 --- /dev/null +++ b/stores/__tests__/filter-store-keyword-rename.test.ts @@ -0,0 +1,202 @@ +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { useFilterStore } from '../filter-store'; +import { generateScript } from '@/lib/sieve/generator'; +import { filterHooks } from '@/lib/plugin-hooks'; +import type { FilterRule } from '@/lib/jmap/sieve-types'; +import type { IJMAPClient } from '@/lib/jmap/client-interface'; + +const makeRule = (overrides: Partial = {}): FilterRule => ({ + id: 'rule-1', + name: 'ISO', + enabled: true, + matchType: 'all', + conditions: [{ field: 'from', comparator: 'contains', value: 'iso.org' }], + actions: [{ type: 'add_label', value: 'red' }], + stopProcessing: false, + ...overrides, +}); + +/** A client serving one active script, recording what gets written back. */ +function makeClient(content: string, scriptsOverride?: { id: string; name: string; blobId: string; isActive: boolean }[]) { + const updateSieveScript = vi.fn( + async (_scriptId: string, _content: string, _activate?: boolean, _accountId?: string) => {}, + ); + const client = { + supportsSieve: () => true, + getSieveAccountId: () => 'primary', + getSieveAccounts: () => [{ id: 'primary', name: 'Me', isPrimary: true }], + getSieveCapabilities: () => null, + getSieveScripts: async () => scriptsOverride ?? [ + { id: 'vac', name: 'vacation', blobId: 'bv', isActive: false }, + { id: 's1', name: 'filters', blobId: 'b1', isActive: true }, + ], + getSieveScriptContent: async () => content, + updateSieveScript, + }; + return { client: client as unknown as IJMAPClient, updateSieveScript }; +} + +describe('filter-store renameKeywordInFilters', () => { + beforeEach(() => { + useFilterStore.getState().clearState(); + }); + + it('rewrites the tag in the active script and uploads it', async () => { + const { client, updateSieveScript } = makeClient(generateScript([makeRule()])); + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome).toEqual({ changed: 1, unhandled: 0 }); + expect(updateSieveScript).toHaveBeenCalledTimes(1); + const [scriptId, uploaded, activate, accountId] = updateSieveScript.mock.calls[0]; + expect(scriptId).toBe('s1'); + expect(activate).toBe(true); + expect(accountId).toBe('primary'); + expect(uploaded).toContain('addflag "$label:iso";'); + expect(uploaded).not.toContain('$label:red'); + }); + + it('rewrites the metadata block the visual editor reads back', async () => { + const { client, updateSieveScript } = makeClient(generateScript([makeRule()])); + + await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + const uploaded = updateSieveScript.mock.calls[0][1]; + const metadata = uploaded.match(/@metadata:begin\n([\s\S]*)\n@metadata:end/)?.[1]; + expect(metadata).toBeDefined(); + const parsed = JSON.parse(metadata as string) as { rules: FilterRule[] }; + expect(parsed.rules[0].actions[0]).toEqual({ type: 'add_label', value: 'iso' }); + }); + + it('writes nothing when no rule names the tag', async () => { + const script = generateScript([makeRule({ actions: [{ type: 'add_label', value: 'blue' }] })]); + const { client, updateSieveScript } = makeClient(script); + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome).toEqual({ changed: 0, unhandled: 0 }); + expect(updateSieveScript).not.toHaveBeenCalled(); + }); + + it('leaves a hand-edited script alone and reports what it could not rewrite', async () => { + const { client, updateSieveScript } = makeClient( + '/* @metadata:begin\n{corrupt\n@metadata:end */\naddflag "$label:red";', + ); + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome).toEqual({ changed: 0, unhandled: 1 }); + expect(updateSieveScript).not.toHaveBeenCalled(); + }); + + it('keeps an open filter view in step when it shows the same account', async () => { + const { client } = makeClient(generateScript([makeRule()])); + await useFilterStore.getState().fetchFilters(client); + expect(useFilterStore.getState().rules[0].actions[0].value).toBe('red'); + + await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(useFilterStore.getState().rules[0].actions[0].value).toBe('iso'); + expect(useFilterStore.getState().rawScript).toContain('$label:iso'); + }); + + it('does not touch loaded state belonging to another account', async () => { + const { client } = makeClient(generateScript([makeRule()])); + useFilterStore.setState({ selectedAccountId: 'shared', rules: [makeRule({ id: 'other' })] }); + + await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(useFilterStore.getState().rules[0].id).toBe('other'); + expect(useFilterStore.getState().rules[0].actions[0].value).toBe('red'); + }); + + it('does nothing when the account has no script at all', async () => { + const client = { + supportsSieve: () => true, + getSieveAccountId: () => 'primary', + getSieveScripts: async () => [], + } as unknown as IJMAPClient; + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome).toEqual({ changed: 0, unhandled: 0 }); + }); + + it('leaves an inactive script alone rather than activating it by writing to it', async () => { + const { client, updateSieveScript } = makeClient(generateScript([makeRule()]), [ + { id: 's1', name: 'filters', blobId: 'b1', isActive: false }, + ]); + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome).toEqual({ changed: 0, unhandled: 0 }); + expect(updateSieveScript).not.toHaveBeenCalled(); + }); + + it('does nothing on a server without Sieve', async () => { + const client = { + supportsSieve: () => false, + getSieveAccountId: () => 'primary', + getSieveScripts: async () => { + throw new Error('should not be called'); + }, + } as unknown as IJMAPClient; + + await expect( + useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'), + ).resolves.toEqual({ changed: 0, unhandled: 0 }); + }); + + it('reports a reference it could not rewrite alongside the ones it did', async () => { + const script = `${generateScript([makeRule()])}\n# unmanaged\nif header :contains "X-Tag" "$label:red" {\n keep;\n}\n`; + const { client, updateSieveScript } = makeClient(script); + + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + expect(outcome.changed).toBe(1); + expect(outcome.unhandled).toBe(1); + expect(updateSieveScript).toHaveBeenCalledTimes(1); + }); + + it('counts what a plugin grafted back on as unhandled, since that is what gets written', async () => { + const { client } = makeClient(generateScript([makeRule()])); + const registration = filterHooks.onSieveScriptGenerate.register( + 'test-plugin', + (script: string) => `# plugin section\nif true {\n addflag "$label:red";\n}\n${script}`, + ); + + try { + const outcome = await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + expect(outcome).toEqual({ changed: 1, unhandled: 1 }); + } finally { + registration.dispose(); + } + }); + + it('runs the uploaded script through the plugin generate hook', async () => { + const { client, updateSieveScript } = makeClient(generateScript([makeRule()])); + const registration = filterHooks.onSieveScriptGenerate.register( + 'test-plugin', + (script: string) => `# plugin section\n${script}`, + ); + + try { + await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + } finally { + registration.dispose(); + } + + expect(updateSieveScript.mock.calls[0][1]).toContain('# plugin section'); + }); + + it('propagates a failed upload so the caller can warn', async () => { + const { client } = makeClient(generateScript([makeRule()])); + (client as unknown as { updateSieveScript: unknown }).updateSieveScript = vi.fn(async () => { + throw new Error('over quota'); + }); + + await expect( + useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'), + ).rejects.toThrow('over quota'); + }); +}); diff --git a/stores/filter-store.ts b/stores/filter-store.ts index 0964aefc1..7142a4b5c 100644 --- a/stores/filter-store.ts +++ b/stores/filter-store.ts @@ -3,9 +3,22 @@ import type { IJMAPClient } from '@/lib/jmap/client-interface'; import type { FilterRule, SieveCapabilities, VacationSieveConfig } from '@/lib/jmap/sieve-types'; import { parseScript } from '@/lib/sieve/parser'; import { generateScript } from '@/lib/sieve/generator'; +import { countKeywordUses, renameKeywordInRules } from '@/lib/sieve/keyword-rename'; import { filterHooks } from '@/lib/plugin-hooks'; import { debug } from '@/lib/debug'; +/** What a tag rename managed to do to the filters that name the tag. */ +export interface KeywordRenameOutcome { + /** Filter actions rewritten to the new tag id. */ + changed: number; + /** + * References to the old tag left in place because the script is hand-edited + * and is kept verbatim. The caller should tell the user, who has to fix those + * by hand - nothing else will. + */ + unhandled: number; +} + interface SieveAccount { id: string; name: string; @@ -31,6 +44,7 @@ interface FilterStore { fetchFilters: (client: IJMAPClient, accountId?: string) => Promise; selectAccount: (client: IJMAPClient, accountId: string) => Promise; saveFilters: (client: IJMAPClient) => Promise; + renameKeywordInFilters: (client: IJMAPClient, oldId: string, newId: string) => Promise; validateScript: (client: IJMAPClient, content: string) => Promise<{ isValid: boolean; errors?: string[] }>; addRule: (rule: FilterRule) => void; updateRule: (ruleId: string, updates: Partial) => void; @@ -176,6 +190,85 @@ export const useFilterStore = create()((set, get) => ({ } }, + /** + * Follows a renamed tag into this account's filters. + * + * Renaming a tag changes its id, and therefore the `$label:` keyword a rule + * writes. Migrating only the messages (`migrateKeyword`) would leave the rule + * tagging new mail under the old id, which nothing names any more - the rule + * looks broken while running exactly as written. + * + * The script is fetched and written back on its own rather than through + * `fetchFilters`/`saveFilters`, so a rename from the tag settings never + * disturbs which account an open filter view is showing. That view is updated + * in place when it happens to be showing this same account. + * + * A hand-edited (opaque) script is left alone - it has no parsed rules to + * rewrite and re-generating it would discard the user's own Sieve - and its + * remaining references are reported instead. Upload failures propagate. + */ + renameKeywordInFilters: async (client, oldId, newId) => { + const nothing: KeywordRenameOutcome = { changed: 0, unhandled: 0 }; + if (!oldId || !newId || oldId === newId) return nothing; + if (!client.supportsSieve()) return nothing; + + // The account that runs the rules. A rule can only tag mail arriving in + // its own account, so this is the one to rewrite even in a session where + // the Sieve and mail primaries are different accounts - which RFC 8620 + // permits, and which the caller's message migration, bound to the mail + // primary, would not have covered anyway. + const accountId = client.getSieveAccountId(); + const scripts = (await client.getSieveScripts(accountId)).filter(s => s.name !== 'vacation'); + const activeScript = scripts.find(s => s.isActive); + if (!activeScript) { + // Nothing is filtering mail right now. Rewriting an inactive script would + // mean activating it - updateSieveScript activates on write - and a tag + // rename must not switch someone's filters back on. + return nothing; + } + + const content = await client.getSieveScriptContent(activeScript.blobId, accountId); + const parsed = parseScript(content); + if (parsed.isOpaque) { + return { changed: 0, unhandled: countKeywordUses(content, oldId) }; + } + + const { rules, changed } = renameKeywordInRules(parsed.rules, oldId, newId); + if (changed === 0) return { changed: 0, unhandled: countKeywordUses(content, oldId) }; + + let script = generateScript(rules, parsed.vacation || undefined, { + externalRequires: parsed.externalRequires, + }); + // Same plugin pipeline a normal save runs through: a plugin's managed + // section is grafted on at generate time, so skipping the transform here + // would drop it from the script this write makes active. + const transformed = await filterHooks.onSieveScriptGenerate.transform(script, { accountId }); + if (typeof transformed === 'string' && transformed.trim().length > 0) { + script = transformed; + } + + // Count what still names the old tag in the script actually being written, + // after the plugin transform: a rule kept verbatim, a test comparing + // against the keyword, or a section a plugin just grafted back on. + const unhandled = countKeywordUses(script, oldId); + + await client.updateSieveScript(activeScript.id, script, true, accountId); + debug.log('filters', 'Renamed tag in', changed, 'filter action(s)'); + + const state = get(); + if (state.selectedAccountId === accountId && !state.isOpaque) { + set({ + rules, + rawScript: script, + activeScriptId: activeScript.id, + vacationSettings: parsed.vacation || null, + externalRequires: parsed.externalRequires, + }); + } + void filterHooks.onSieveScriptChange.emit({ accountId, script }); + return { changed, unhandled }; + }, + validateScript: async (client, content) => { return client.validateSieveScript(content, get().selectedAccountId || undefined); }, From c49f13db2868335745923b8088e54c34ceda9b2d Mon Sep 17 00:00:00 2001 From: Stefan Hildebrandt <695494+hildebrandttk@users.noreply.github.com> Date: Fri, 25 Sep 2026 19:41:16 +0200 Subject: [PATCH 002/238] fix: list a shared folder reachable through two logins only once in cross views When a shared folder was reachable through two logged-in accounts (owner + grantee, or two grantees), buildUnifiedAccountClients emitted one entry per reaching login. All mail / All unread then listed each message twice and the unread badge counted it twice. dedupeUnifiedAccounts keeps each (owning JMAP account, mailbox) once: personal entries win, shared entries keep only folders not already covered and are dropped when none remain. The owner's own mailbox list is no longer overwritten in accountMailboxes by a grantee's namespaced copy, so actions on the deduped messages resolve trash/archive in the right id space. --- .../tests/15-shared-folder-dedup.spec.ts | 110 ++++++++++++++++++ lib/__tests__/unified-mailbox-dedupe.test.ts | 57 +++++++++ lib/unified-mailbox.ts | 39 +++++++ stores/email-store.ts | 16 ++- 4 files changed, 219 insertions(+), 3 deletions(-) create mode 100644 integration/tests/15-shared-folder-dedup.spec.ts create mode 100644 lib/__tests__/unified-mailbox-dedupe.test.ts diff --git a/integration/tests/15-shared-folder-dedup.spec.ts b/integration/tests/15-shared-folder-dedup.spec.ts new file mode 100644 index 000000000..988e6b191 --- /dev/null +++ b/integration/tests/15-shared-folder-dedup.spec.ts @@ -0,0 +1,110 @@ +import { test, expect, type Page } from '@playwright/test'; +import { ACCOUNTS } from './helpers/config'; +import { sendMail } from './helpers/smtp'; +import { JmapClient } from './helpers/jmap'; +import { + login, + addAccount, + seedSettings, + folderRow, + openFolder, + expectFolderCountsSynced, + expectEmailVisible, + emailItem, + forceSync, +} from './helpers/app'; + +/** + * A shared folder reachable through TWO logged-in accounts must show up only + * once in the cross-account views (All mail / Unread) — both the list rows and + * the unread badge. + * + * Scenarios: + * - owner + grantee: alice shares a folder with carol; alice and carol are both + * logged in, so the folder is reachable as alice's own folder AND as a + * shared folder via carol's session. + * - two grantees: alice shares a folder with bob and carol; bob and carol are + * logged in (alice is not), so the folder is reachable via both sessions. + */ +const { alice, bob, carol } = ACCOUNTS; +const SHARED = 'DupShared'; +const ALL_MAIL = '__cross_all__'; +const UNREAD = '__cross_unread__'; + +let seq = 0; +const subj = (l: string) => `IT ${l} ${Date.now()}-${seq++}`; + +async function seedCrossViews(page: Page): Promise { + await seedSettings(page, { + enableUnifiedMailbox: true, + enableCrossAllView: true, + enableCrossUnreadView: true, + includeGroupInUnified: true, + unifiedCrossAccount: true, + }); +} + +async function expectSingleInView(page: Page, view: string, subject: string): Promise { + await openFolder(page, { name: view }); + await forceSync(page); + await expectEmailVisible(page, subject); + // Give a second (duplicate) row time to render before counting. + await page.waitForTimeout(1500); + expect.soft(await emailItem(page, subject).count(), `rows for "${subject}" in ${view}`).toBe(1); +} + +test.describe('Shared folder reachable via two logged-in accounts', () => { + let ja: JmapClient; + let sharedId: string; + + test.beforeEach(async () => { + ja = await JmapClient.connect(alice.email, alice.password); + for (const a of [alice, bob, carol]) await (await JmapClient.connect(a.email, a.password)).reset(); + }); + + test.afterEach(async () => { + // Drop the shared folder so the grants don't leak into other specs. + await ja.reset(); + }); + + async function seedIntoShared(subject: string): Promise { + await sendMail({ from: alice.email, authPass: alice.password, to: alice.email, subject, body: 'x' }); + const m = await ja.waitForEmail(subject); + await ja.moveEmail(m.id, sharedId); + } + + test('owner + grantee logged in: shared message listed and counted once', async ({ page }) => { + sharedId = await ja.createSharedFolder(SHARED, carol.email); + const s = subj('dup-owner'); + await seedIntoShared(s); + + await seedCrossViews(page); + await login(page, alice); + await addAccount(page, carol); + + await expect(folderRow(page, { name: ALL_MAIL }).first()).toBeVisible(); + await expectSingleInView(page, ALL_MAIL, s); + await expectSingleInView(page, UNREAD, s); + + await expectFolderCountsSynced(page, { name: UNREAD }, { unread: 1 }, 15000); + await expectFolderCountsSynced(page, { name: ALL_MAIL }, { unread: 1 }, 15000); + }); + + test('two grantees logged in: shared message listed and counted once', async ({ page }) => { + sharedId = await ja.createSharedFolder(SHARED, carol.email); + await ja.shareMailbox(sharedId, bob.email); + const s = subj('dup-grantees'); + await seedIntoShared(s); + + await seedCrossViews(page); + await login(page, bob); + await addAccount(page, carol); + + await expect(folderRow(page, { name: ALL_MAIL }).first()).toBeVisible(); + await expectSingleInView(page, ALL_MAIL, s); + await expectSingleInView(page, UNREAD, s); + + await expectFolderCountsSynced(page, { name: UNREAD }, { unread: 1 }, 15000); + await expectFolderCountsSynced(page, { name: ALL_MAIL }, { unread: 1 }, 15000); + }); +}); diff --git a/lib/__tests__/unified-mailbox-dedupe.test.ts b/lib/__tests__/unified-mailbox-dedupe.test.ts new file mode 100644 index 000000000..4499a0b96 --- /dev/null +++ b/lib/__tests__/unified-mailbox-dedupe.test.ts @@ -0,0 +1,57 @@ +import { describe, it, expect } from 'vitest'; +import type { Mailbox } from '@/lib/jmap/types'; +import type { IJMAPClient } from '@/lib/jmap/client-interface'; +import { dedupeUnifiedAccounts, getCrossUnreadTotal, type UnifiedAccountClient } from '@/lib/unified-mailbox'; + +const mb = (id: string, role: string | undefined, unread = 0, originalId?: string): Mailbox => + ({ id, name: id, role, unreadEmails: unread, totalEmails: 0, originalId } as unknown as Mailbox); + +const makeAccount = (over: Partial & { accountId: string }): UnifiedAccountClient => ({ + accountLabel: over.accountId, + mailboxes: [], + client: {} as unknown as IJMAPClient, + clientAccountId: over.accountId, + jmapAccountId: over.accountId, + ...over, +}); + +// A folder of JMAP account `owner`, as seen through the login `via`. +const sharedEntry = (owner: string, via: string, mailboxes: Mailbox[]) => + makeAccount({ accountId: owner, jmapAccountId: owner, clientAccountId: via, isShared: true, mailboxes }); + +describe('dedupeUnifiedAccounts', () => { + it('drops a shared entry whose folders the owner login already covers', () => { + const alice = makeAccount({ accountId: 'login-a', jmapAccountId: 'A', mailboxes: [mb('inbox', 'inbox'), mb('f1', undefined, 1)] }); + const carolSeesAlice = sharedEntry('A', 'login-c', [mb('A:f1', undefined, 1, 'f1')]); + const carol = makeAccount({ accountId: 'login-c', jmapAccountId: 'C', mailboxes: [mb('inbox', 'inbox')] }); + + // The grantee's login may come first - the owner's own entry still wins. + const out = dedupeUnifiedAccounts([carol, carolSeesAlice, alice]); + expect(out).toEqual([carol, alice]); + expect(getCrossUnreadTotal(out)).toBe(1); + }); + + it('keeps one copy when two grantee logins reach the same shared folder', () => { + const viaBob = sharedEntry('A', 'login-b', [mb('A:f1', undefined, 1, 'f1')]); + const viaCarol = sharedEntry('A', 'login-c', [mb('A:f1', undefined, 1, 'f1')]); + const out = dedupeUnifiedAccounts([viaBob, viaCarol]); + expect(out).toEqual([viaBob]); + expect(getCrossUnreadTotal(out)).toBe(1); + }); + + it('keeps folders only one of the grantees can reach', () => { + const viaBob = sharedEntry('A', 'login-b', [mb('A:f1', undefined, 1, 'f1')]); + const viaCarol = sharedEntry('A', 'login-c', [mb('A:f1', undefined, 1, 'f1'), mb('A:f2', undefined, 2, 'f2')]); + const out = dedupeUnifiedAccounts([viaBob, viaCarol]); + expect(out.map((a) => a.mailboxes.map((m) => m.id))).toEqual([['A:f1'], ['A:f2']]); + expect(out[1].clientAccountId).toBe('login-c'); + expect(getCrossUnreadTotal(out)).toBe(3); + }); + + it('does not merge distinct owners or personal accounts with equal mailbox ids', () => { + const a = makeAccount({ accountId: 'login-a', jmapAccountId: 'A', mailboxes: [mb('inbox', 'inbox', 1)] }); + const b = makeAccount({ accountId: 'login-b', jmapAccountId: 'B', mailboxes: [mb('inbox', 'inbox', 1)] }); + const group = sharedEntry('G', 'login-a', [mb('G:inbox', 'inbox', 1, 'inbox')]); + expect(dedupeUnifiedAccounts([a, b, group])).toEqual([a, b, group]); + }); +}); diff --git a/lib/unified-mailbox.ts b/lib/unified-mailbox.ts index a9db07bf1..0cc812726 100644 --- a/lib/unified-mailbox.ts +++ b/lib/unified-mailbox.ts @@ -659,3 +659,42 @@ export function connectedAccountsGrew(previous: string | null, current: string): const before = new Set(previous ? previous.split(',').filter(Boolean) : []); return current.split(',').some((id) => id !== '' && !before.has(id)); } + +/** + * Drops mailboxes that are reachable through more than one logged-in account, + * so each folder contributes to the aggregate views exactly once. + * + * A folder shared with a second login (owner + grantee both logged in), or + * shared with two logins at once, otherwise yields one entry per reaching + * login: its messages list twice and its unread count is summed twice. + * + * A mailbox is identified by its owning JMAP account + server-side id (a shared + * entry's `originalId`). Personal entries always win and are never trimmed, so + * an owner's folder is read through the owner's own login and honors their + * folder selection. Shared entries keep only mailboxes not already covered and + * are dropped when none remain. Order is preserved. + */ +export function dedupeUnifiedAccounts(accounts: UnifiedAccountClient[]): UnifiedAccountClient[] { + const seen = new Set(); + const key = (jmapAccountId: string, mailboxId: string) => `${jmapAccountId}\u0000${mailboxId}`; + for (const account of accounts) { + if (account.isShared) continue; + for (const m of account.mailboxes) seen.add(key(account.jmapAccountId, m.id)); + } + const out: UnifiedAccountClient[] = []; + for (const account of accounts) { + if (!account.isShared) { + out.push(account); + continue; + } + const mailboxes = account.mailboxes.filter((m) => { + const k = key(account.jmapAccountId, m.originalId ?? m.id); + if (seen.has(k)) return false; + seen.add(k); + return true; + }); + if (mailboxes.length === 0) continue; + out.push(mailboxes.length === account.mailboxes.length ? account : { ...account, mailboxes }); + } + return out; +} diff --git a/stores/email-store.ts b/stores/email-store.ts index 88365d9a0..c69b8bd1e 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -10,7 +10,7 @@ import { emailHooks } from "@/lib/plugin-hooks"; import { resolveThreadRoute } from "@/lib/thread-routing"; import { threadKeyFor, threadIdFromKey } from "@/lib/thread-utils"; import type { ExternalSearchResult } from "@/lib/plugin-types"; -import { fetchUnifiedEmails, fetchUnifiedMailboxCounts, searchUnifiedEmails, advancedSearchUnifiedEmails, fetchCrossViewEmails, searchCrossViewEmails, advancedSearchCrossViewEmails, fetchTagEmails, searchAcrossAccounts, advancedSearchAcrossAccounts, getCrossUnreadTotal, type UnifiedAccountClient, type UnifiedMailboxCounts } from "@/lib/unified-mailbox"; +import { fetchUnifiedEmails, fetchUnifiedMailboxCounts, searchUnifiedEmails, advancedSearchUnifiedEmails, fetchCrossViewEmails, searchCrossViewEmails, advancedSearchCrossViewEmails, fetchTagEmails, searchAcrossAccounts, advancedSearchAcrossAccounts, getCrossUnreadTotal, dedupeUnifiedAccounts, type UnifiedAccountClient, type UnifiedMailboxCounts } from "@/lib/unified-mailbox"; import { useAuthStore } from "@/stores/auth-store"; import { useAccountStore } from "@/stores/account-store"; import { useMessageListTabsStore } from "@/stores/message-list-tabs-store"; @@ -915,6 +915,9 @@ function resolveDestLocalAccountId(mailbox: Mailbox): string | null { * `allMailFolderIds` folder selection, restricting the All mail / Unread / * Starred cross views to the chosen own folders (shared entries are left * unrestricted so all their folders are included). + * + * A folder reachable through several logins (owner + grantee, or two grantees) + * is kept only once - see `dedupeUnifiedAccounts`. */ export async function buildUnifiedAccountClients( opts: { includeGroup?: boolean; scopeToClientAccountId?: string } = {}, @@ -929,6 +932,11 @@ export async function buildUnifiedAccountClients( // after the fan-out so single-email actions can resolve role-based // destinations (trash/archive) in the email's own account (issue #281). const fetchedMailboxes: Record = {}; + const ownLoginJmapIds = new Set(); + for (const a of authAccounts) { + const c = allClients.get(a.id); + if (c) ownLoginJmapIds.add(c.getAccountId()); + } for (const a of authAccounts) { const c = allClients.get(a.id); if (!c) continue; @@ -970,7 +978,9 @@ export async function buildUnifiedAccountClients( // Cache the owner's mailbox list keyed by its JMAP id so single-email // and batch actions can resolve role-based destinations (trash/archive) // in the owner account instead of falling back to the active account. - fetchedMailboxes[ownerId] = ownerMailboxes; + // When the owner is logged in too, its own (un-namespaced) list wins: + // dedupeUnifiedAccounts routes that folder through the owner's login. + if (!ownLoginJmapIds.has(ownerId)) fetchedMailboxes[ownerId] = ownerMailboxes; } } } catch { @@ -982,7 +992,7 @@ export async function buildUnifiedAccountClients( accountMailboxes: { ...state.accountMailboxes, ...fetchedMailboxes }, })); } - return built; + return dedupeUnifiedAccounts(built); } /** From 888b606fcb939272154b62237fb880a8440c426c Mon Sep 17 00:00:00 2001 From: Aaron Guise Date: Tue, 29 Sep 2026 18:17:19 +1300 Subject: [PATCH 003/238] fix(email-composer): normalize bracketed content-ids for inline reply/forward images :bug: Attachment.cid may still carry RFC angle brackets while body `src="cid:...` references never do. The viewers already stripped them before matching; the reply/forward inline-image hydration didn't, so the match silently failed and the image stayed a blank placeholder in compose and never made it into the outgoing message. Extracted the stripping into a shared normalizeCid() and applied it everywhere cids get compared. --- .../composer-inline-image-cid.test.tsx | 208 ++++++++++++++++++ components/email/email-composer.tsx | 15 +- components/email/email-viewer.tsx | 6 +- components/email/thread-conversation-view.tsx | 4 +- lib/attachment-visibility.ts | 13 +- 5 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 components/email/__tests__/composer-inline-image-cid.test.tsx diff --git a/components/email/__tests__/composer-inline-image-cid.test.tsx b/components/email/__tests__/composer-inline-image-cid.test.tsx new file mode 100644 index 000000000..150a4f3f9 --- /dev/null +++ b/components/email/__tests__/composer-inline-image-cid.test.tsx @@ -0,0 +1,208 @@ +import { render, screen, act, waitFor } from '@testing-library/react'; +import { describe, it, expect, vi, afterEach } from 'vitest'; +import React from 'react'; +import { EmailComposer } from '../email-composer'; +import { useAuthStore } from '@/stores/auth-store'; + +// ─── Heavy component mocks (mirrors composer-draft-attachments.test.tsx) ────── + +vi.mock('@/components/email/rich-text-editor', () => ({ + RichTextEditor: () => React.createElement('div', { 'data-testid': 'rich-text-editor' }), +})); + +vi.mock('@/components/plugins/plugin-slot', () => ({ PluginSlot: () => null })); +vi.mock('@/components/identity/sub-address-helper', () => ({ SubAddressHelper: () => null })); +vi.mock('@/components/templates/template-picker', () => ({ TemplatePicker: () => null })); +vi.mock('@/components/templates/template-form', () => ({ TemplateForm: () => null })); +vi.mock('@/components/files/file-preview-modal', () => ({ FilePreviewModal: () => null })); +vi.mock('@/hooks/use-focus-trap', () => ({ useFocusTrap: () => ({ current: null }) })); +vi.mock('@/hooks/use-pro-multi-account-identities', () => ({ + useProMultiAccountIdentities: () => ({ enabled: false, groups: [], allIdentities: [] }), + stripCrossAccountIdentityPrefix: (id: string) => ({ localAccountId: null, rawId: id }), +})); + +vi.mock('@/stores/auth-store', () => { + const state = { + client: null, + identities: [], + primaryIdentity: null, + isAuthenticated: false, + isDemoMode: false, + activeAccountId: null, + connectionLost: false, + getClientForAccount: () => undefined, + getAllConnectedClients: () => new Map(), + syncIdentities: () => {}, + refreshIdentities: async () => {}, + }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useAuthStore: hook }; +}); + +vi.mock('@/stores/identity-store', () => { + const state = { + identities: [{ id: 'id-me', email: 'me@example.com', name: 'Me' }], + defaultIdentityId: 'id-me', + }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useIdentityStore: hook }; +}); + +vi.mock('@/stores/account-store', () => { + const state = { accounts: [], getAccountById: () => undefined }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useAccountStore: hook }; +}); + +vi.mock('@/stores/email-store', () => { + const state = { draftSaveEnabled: false, sendRawEmail: async () => ({ sent: true }) }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useEmailStore: hook }; +}); + +vi.mock('@/stores/settings-store', () => { + const state = { + timeFormat: '24h', + plainTextMode: false, + subAddressDelimiter: '+', + autoSelectReplyIdentity: true, + attachmentReminderEnabled: false, + attachmentReminderKeywords: [], + emptySubjectWarningEnabled: true, + sendDelaySeconds: 0, + signaturePosition: 'above_quote', + signatureSeparatorEnabled: false, + requestReadReceiptDefault: false, + addTrustedSender: () => {}, + trustedSendersAddressBook: null, + updateSetting: () => {}, + }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useSettingsStore: hook }; +}); + +vi.mock('@/stores/contact-store', () => { + const state = { + contacts: [], + getAutocomplete: async () => [], + addToTrustedSendersBook: async () => {}, + }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useContactStore: hook }; +}); + +vi.mock('@/stores/template-store', () => { + const state = { templates: [], addTemplate: async () => {} }; + const hook = (sel?: (s: typeof state) => unknown) => + typeof sel === 'function' ? sel(state) : state; + hook.getState = () => state; + hook.setState = (p: Partial) => Object.assign(state, p); + return { useTemplateStore: hook }; +}); + +vi.mock('@/stores/toast-store', () => ({ + toast: { info: () => {}, error: () => {}, success: () => {} }, +})); + +vi.mock('@/lib/plugin-hooks', () => ({ + emailHooks: { + onComposerOpen: { call: async () => [] }, + onRecipientChange: { call: async () => [] }, + getRecipientSuggestions: { call: async () => [] }, + onRecipientChipsChange: { transform: async (chips: unknown) => chips }, + onDraftChange: { emit: () => {} }, + onBeforeDraftAutoSave: { transform: async (draft: unknown) => draft }, + onBeforeEmailSend: { intercept: async () => true }, + onComposeSend: { intercept: async () => true }, + onTransformOutgoingEmail: { transform: async (email: unknown) => email }, + }, + contactHooks: { + search: { call: async () => [] }, + onProvideRecipientSuggestions: { transform: async (initial: unknown) => initial }, + }, +})); + +vi.mock('@/lib/email-sanitization', () => ({ + sanitizeSignatureHtml: (v: string) => v, + sanitizeEmailHtml: (v: string) => v, + parseHtmlSafely: (html: string) => new DOMParser().parseFromString(html, 'text/html'), +})); + +vi.mock('@/lib/email-threading', () => ({ + computeReplyThreadingHeaders: () => ({ inReplyTo: [], references: [] }), +})); +vi.mock('@/lib/signature-utils', () => ({ + appendPlainTextSignature: (body: string) => body, + getPlainTextSignature: () => '', + plainTextBodyHasSignature: () => false, + plainTextBodyWithoutSignature: (body: string) => body, +})); +vi.mock('@/lib/sub-addressing', () => ({ generateSubAddress: () => '' })); +vi.mock('@/lib/debug', () => ({ debug: { log: () => {}, warn: () => {}, error: () => {} } })); +vi.mock('@/lib/template-utils', () => ({ substitutePlaceholders: (s: string) => s })); + +// ─── Tests ──────────────────────────────────────────────────────────────────── + +/** + * Senders may declare `Content-ID: ` (angle brackets kept) + * while the body always references it bracket-free as `src="cid:logo123@sender"`. + * The viewers already normalize both sides before matching; the reply/forward + * hydration path didn't, so any such image silently stayed a blank placeholder + * in the composer and was dropped from the outgoing message on send. + */ +describe('reply/forward inline image cid normalization', () => { + afterEach(() => { + useAuthStore.setState({ client: null }); + vi.clearAllMocks(); + }); + + it('hydrates an inline image whose attachment cid still carries angle brackets', async () => { + const fetchBlobArrayBuffer = vi.fn().mockResolvedValue( + new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).buffer, // PNG magic + ); + useAuthStore.setState({ + client: { + fetchBlobArrayBuffer, + hasDelayedSend: () => false, + getMaxDelayedSend: () => 0, + } as never, + }); + + render( + Hi

', + quoteHeaderHtml: 'On X, Sender wrote:', + attachments: [ + { blobId: 'blob-1', name: 'logo.png', type: 'image/png', size: 100, cid: '' }, + ], + }} + onClose={vi.fn()} + /> + ); + + await waitFor(() => expect(fetchBlobArrayBuffer).toHaveBeenCalledTimes(1)); + expect(fetchBlobArrayBuffer).toHaveBeenCalledWith('blob-1', 'logo.png', 'image/png'); + }); +}); diff --git a/components/email/email-composer.tsx b/components/email/email-composer.tsx index 4a234a895..c0875ca40 100644 --- a/components/email/email-composer.tsx +++ b/components/email/email-composer.tsx @@ -65,6 +65,7 @@ import { ICON_MAP, } from "@/lib/email-composer-utils"; import { isValidEmail } from "@/lib/validation"; +import { normalizeCid } from "@/lib/attachment-visibility"; import { RichTextEditor } from "@/components/email/rich-text-editor"; import type { Editor } from "@tiptap/react"; import { htmlToPlainText as htmlToPlainTextShared } from "@/lib/html-to-text"; @@ -910,15 +911,20 @@ export function EmailComposer({ // lenient (email-viewer.tsx: `att.cid && att.blobId`), so reading and // replying now agree. The real type is sniffed from the bytes below. const embeddedCids = collectInlineImageCids(body); - const inlineAtts = replyTo.attachments.filter((att) => - att.cid && att.blobId && embeddedCids.has(att.cid) - ); + // Attachment cids may still carry the RFC angle brackets (e.g. + // ``) while `src="cid:logo123@sender"` in the body never + // does - normalize here the same way email-viewer.tsx and + // thread-conversation-view.tsx do, so the comparisons below actually + // match (#912: inline images silently missing from every reply/forward). + const inlineAtts = replyTo.attachments + .filter((att) => att.cid && att.blobId) + .map((att) => ({ ...att, cid: normalizeCid(att.cid!) })) + .filter((att) => embeddedCids.has(att.cid)); if (inlineAtts.length === 0) return; // Seed the ref synchronously so a fast Send still attaches the right blobs // even if the FileReader work below hasn't resolved yet. for (const att of inlineAtts) { - if (!att.cid) continue; if (inlineImagesRef.current.some((e) => e.cid === att.cid)) continue; inlineImagesRef.current.push({ cid: att.cid, @@ -934,7 +940,6 @@ export function EmailComposer({ (async () => { const updates = new Map(); for (const att of inlineAtts) { - if (!att.cid) continue; try { const buffer = await composerClient.fetchBlobArrayBuffer( att.blobId, diff --git a/components/email/email-viewer.tsx b/components/email/email-viewer.tsx index ceb79774c..7d7f308c3 100644 --- a/components/email/email-viewer.tsx +++ b/components/email/email-viewer.tsx @@ -6,7 +6,7 @@ import { emailExportFilename, attachmentDownloadFilename, attachmentsBundleFilen import { EML_IMPORT_ACCEPT, expandImportableEmails } from "@/lib/eml-import"; import { applyNewTabToAnchor, escapeHtml, isOpenableLinkHref, plainTextToSafeHtml, sanitizeEmailBodyForIframe, sanitizeEmailHtml, sanitizePlainTextRenderedHtml } from "@/lib/email-sanitization"; import { getRenderableHtmlBody } from "@/lib/email-body-selection"; -import { collectReferencedCids, isEmbeddedInBody } from "@/lib/attachment-visibility"; +import { collectReferencedCids, isEmbeddedInBody, normalizeCid } from "@/lib/attachment-visibility"; import { collapsePlainTextQuotes, setupQuoteCollapse } from "@/lib/quote-collapse"; import { fitEmailBodyWidth } from "@/lib/email-fit-width"; import { withBasePath } from "@/lib/browser-navigation"; @@ -1546,7 +1546,7 @@ export function EmailViewer({ decryptedCidAttachments.forEach((att) => { const bytes = getAttachmentContentBytes(att); if (!bytes) return; - const cidValue = att.contentId!.replace(/^<|>$/g, ''); + const cidValue = normalizeCid(att.contentId!); const buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer; // Sender-typed part: never let a script-bearing MIME type reach a // blob: URL in our origin (GHSA-xvjh-v9c6-qcvc). @@ -1582,7 +1582,7 @@ export function EmailViewer({ async function fetchCidBlobs() { const urls: Record = {}; await Promise.all(cidAttachments.map(async (att) => { - const cidValue = att.cid!.replace(/^<|>$/g, ''); + const cidValue = normalizeCid(att.cid!); try { // The download URL echoes the sender-declared Content-Type back as // the Blob type; re-type anything that could execute as our origin diff --git a/components/email/thread-conversation-view.tsx b/components/email/thread-conversation-view.tsx index 82b8a49e6..f53ac8536 100644 --- a/components/email/thread-conversation-view.tsx +++ b/components/email/thread-conversation-view.tsx @@ -5,7 +5,7 @@ import DOMPurify from "dompurify"; import { Email, ThreadGroup } from "@/lib/jmap/types"; import { EMAIL_SANITIZE_CONFIG, collapseBlockedImageContainers, plainTextToSafeHtml, restrictDataUriResourcesOnNode, sanitizePlainTextRenderedHtml } from "@/lib/email-sanitization"; import { getRenderableHtmlBody } from "@/lib/email-body-selection"; -import { collectReferencedCids, isEmbeddedInBody } from "@/lib/attachment-visibility"; +import { collectReferencedCids, isEmbeddedInBody, normalizeCid } from "@/lib/attachment-visibility"; import { collapsePlainTextQuotes, setupQuoteCollapse } from "@/lib/quote-collapse"; import { fitEmailBodyWidth } from "@/lib/email-fit-width"; import { transformInlineStyles, transformColorForDarkMode, transformBgColorForDarkMode } from "@/lib/color-transform"; @@ -299,7 +299,7 @@ function EmailCard({ async function fetchCidBlobs() { const urls: Record = {}; await Promise.all(cidAttachments.map(async (att) => { - const cidValue = att.cid!.replace(/^<|>$/g, ''); + const cidValue = normalizeCid(att.cid!); try { // Re-type sender-declared script-bearing parts before they become a // blob: URL in our origin (GHSA-xvjh-v9c6-qcvc). diff --git a/lib/attachment-visibility.ts b/lib/attachment-visibility.ts index e20044777..85fc8e746 100644 --- a/lib/attachment-visibility.ts +++ b/lib/attachment-visibility.ts @@ -21,6 +21,16 @@ const CID_REFERENCE = /\bcid:([^"'\s)]+)/gi; const EMPTY: ReadonlySet = new Set(); +/** + * Strips the RFC angle brackets a Content-ID header may still carry (e.g. + * ``). Body `cid:` references never have them, so every + * comparison between an attachment's `cid`/`contentId` and a body reference + * must normalize through this first. + */ +export function normalizeCid(cid: string): string { + return cid.replace(/^<|>$/g, ''); +} + /** * Content-IDs a raw HTML body references via `cid:` URLs (img src, table * background, style url(...) - anything), exactly as written. `null` (the @@ -65,6 +75,5 @@ export function isEmbeddedInBody( if (att.disposition === 'attachment') return false; const genericType = !type || type === 'application/octet-stream'; if (!isImage && !genericType) return false; - // The Content-ID may still carry its angle brackets; body references never do. - return referencedCids.has(att.cid.replace(/^<|>$/g, '')); + return referencedCids.has(normalizeCid(att.cid)); } From 115c66ec8dc820e39e1ae147671ee784c18b9265 Mon Sep 17 00:00:00 2001 From: Aaron Guise Date: Tue, 29 Sep 2026 18:18:01 +1300 Subject: [PATCH 004/238] chore(email-composer): drop unused test imports flagged by lint :broom: --- components/email/__tests__/composer-inline-image-cid.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/email/__tests__/composer-inline-image-cid.test.tsx b/components/email/__tests__/composer-inline-image-cid.test.tsx index 150a4f3f9..4bc7c97ae 100644 --- a/components/email/__tests__/composer-inline-image-cid.test.tsx +++ b/components/email/__tests__/composer-inline-image-cid.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, act, waitFor } from '@testing-library/react'; +import { render, waitFor } from '@testing-library/react'; import { describe, it, expect, vi, afterEach } from 'vitest'; import React from 'react'; import { EmailComposer } from '../email-composer'; From adf30bef406f3c38428f0dd87f1d2c6fae1f9448 Mon Sep 17 00:00:00 2001 From: Aaron Guise Date: Tue, 29 Sep 2026 18:30:25 +1300 Subject: [PATCH 005/238] fix(email-composer): normalize forwarded inline-image cids to prevent duplicate blobs :bug: The forward attachment-list filter compared the raw (possibly bracketed) Content-ID against the body's bracket-free cid: references, so a bracketed cid with no inline disposition (Foxmail's octet-stream case) slipped through as a regular attachment chip *and* got re-attached as the matched inline part, sending the same blob twice. Normalize before that comparison too, and strengthen the regression test to exercise Send and assert on the actual outgoing htmlBody/attachments for both the reply and forward paths. --- .../composer-inline-image-cid.test.tsx | 83 +++++++++++++++++-- components/email/email-composer.tsx | 5 +- 2 files changed, 79 insertions(+), 9 deletions(-) diff --git a/components/email/__tests__/composer-inline-image-cid.test.tsx b/components/email/__tests__/composer-inline-image-cid.test.tsx index 4bc7c97ae..52d4b62ee 100644 --- a/components/email/__tests__/composer-inline-image-cid.test.tsx +++ b/components/email/__tests__/composer-inline-image-cid.test.tsx @@ -1,4 +1,4 @@ -import { render, waitFor } from '@testing-library/react'; +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import { describe, it, expect, vi, afterEach } from 'vitest'; import React from 'react'; import { EmailComposer } from '../email-composer'; @@ -174,10 +174,10 @@ describe('reply/forward inline image cid normalization', () => { vi.clearAllMocks(); }); - it('hydrates an inline image whose attachment cid still carries angle brackets', async () => { - const fetchBlobArrayBuffer = vi.fn().mockResolvedValue( - new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).buffer, // PNG magic - ); + const PNG_MAGIC = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]).buffer; + + function mockClient() { + const fetchBlobArrayBuffer = vi.fn().mockResolvedValue(PNG_MAGIC); useAuthStore.setState({ client: { fetchBlobArrayBuffer, @@ -185,10 +185,17 @@ describe('reply/forward inline image cid normalization', () => { getMaxDelayedSend: () => 0, } as never, }); + return { fetchBlobArrayBuffer }; + } + + it('sends a reply with the image inlined by cid, not duplicated as a regular attachment', async () => { + const { fetchBlobArrayBuffer } = mockClient(); + const onSend = vi.fn(); render( { /> ); - await waitFor(() => expect(fetchBlobArrayBuffer).toHaveBeenCalledTimes(1)); - expect(fetchBlobArrayBuffer).toHaveBeenCalledWith('blob-1', 'logo.png', 'image/png'); + // Hydration: the placeholder gets swapped for the fetched blob's data URL. + await waitFor(() => expect(fetchBlobArrayBuffer).toHaveBeenCalledWith('blob-1', 'logo.png', 'image/png')); + + // Reply auto-fills "to" from replyTo.from, so Send is reachable immediately. + fireEvent.click(screen.getAllByTestId('composer-send')[0]); + await waitFor(() => expect(onSend).toHaveBeenCalledTimes(1)); + + const sent = onSend.mock.calls[0][0] as { htmlBody?: string; attachments?: Array<{ cid?: string; blobId: string; disposition?: string }> }; + // The data URL must have been rewritten back to a cid: reference for sending. + expect(sent.htmlBody).toContain('cid:logo123@sender'); + expect(sent.htmlBody).not.toContain('data:image'); + // Exactly one attachment for the one image - a bracket-mismatch used to + // mean it was never matched at all; matching on both regular AND inline + // paths would instead send the same blob twice (see forward test below). + expect(sent.attachments).toEqual([ + expect.objectContaining({ blobId: 'blob-1', cid: 'logo123@sender', disposition: 'inline' }), + ]); + }); + + it('does not duplicate a forwarded inline image (declared octet-stream, no disposition) as a regular attachment', async () => { + const { fetchBlobArrayBuffer } = mockClient(); + const onSend = vi.fn(); + + render( + Hi

', + quoteHeaderHtml: 'Forwarded message', + // Foxmail-style part (#543): no inline disposition, generic type - + // only the cid: body reference marks it as embedded. + attachments: [ + { blobId: 'blob-1', name: 'logo.png', type: 'application/octet-stream', size: 100, cid: '' }, + ], + }} + onClose={vi.fn()} + /> + ); + + await waitFor(() => expect(fetchBlobArrayBuffer).toHaveBeenCalledWith('blob-1', 'logo.png', 'application/octet-stream')); + + // The forward attachment-list filter must have recognized blob-1 as + // embedded and kept it out of the regular attachment chips. + expect(screen.queryByText('logo.png')).not.toBeInTheDocument(); + + // Forward doesn't auto-fill "to" - add a recipient so Send is reachable. + // A trailing delimiter is needed: a bare single-address paste is left as + // uncommitted input text rather than immediately chipped. + fireEvent.paste(screen.getByPlaceholderText('to_placeholder'), { + clipboardData: { getData: () => 'bob@example.com;' }, + }); + + fireEvent.click(screen.getAllByTestId('composer-send')[0]); + await waitFor(() => expect(onSend).toHaveBeenCalledTimes(1)); + + const sent = onSend.mock.calls[0][0] as { attachments?: Array<{ cid?: string; blobId: string }> }; + // Same blobId must appear exactly once, as the re-typed inline part - + // never also as a plain attachment (that would send it twice). + expect(sent.attachments).toEqual([ + expect.objectContaining({ blobId: 'blob-1', cid: 'logo123@sender' }), + ]); }); }); diff --git a/components/email/email-composer.tsx b/components/email/email-composer.tsx index c0875ca40..a9c781fb3 100644 --- a/components/email/email-composer.tsx +++ b/components/email/email-composer.tsx @@ -610,9 +610,10 @@ export function EmailComposer({ const embeddedCids = collectInlineImageCids(body); return replyTo.attachments // Skip inline cid-referenced images - they're embedded in the forwarded HTML body - // (matches the viewer's hideInlineImageAttachments logic). + // (matches the viewer's hideInlineImageAttachments logic). att.cid may still + // carry angle brackets while embeddedCids (parsed from the body) never does. .filter(att => !(att.cid && ( - embeddedCids.has(att.cid) || + embeddedCids.has(normalizeCid(att.cid)) || (att.disposition === 'inline' && (att.type || '').startsWith('image/')) ))) .map(att => ({ From d1350758a41157d0047353ba19bacb9827424de7 Mon Sep 17 00:00:00 2001 From: VasilisNtovolos Date: Tue, 6 Oct 2026 12:49:58 +0300 Subject: [PATCH 006/238] fix: route bulk archive by owning account --- lib/__tests__/jmap-archive-results.test.ts | 133 ++++ lib/jmap/archive-error.ts | 7 + lib/jmap/client.ts | 69 +- .../email-store-bulk-archive.test.ts | 604 ++++++++++++++++++ stores/email-store.ts | 318 +++++++-- 5 files changed, 1062 insertions(+), 69 deletions(-) create mode 100644 lib/__tests__/jmap-archive-results.test.ts create mode 100644 lib/jmap/archive-error.ts create mode 100644 stores/__tests__/email-store-bulk-archive.test.ts diff --git a/lib/__tests__/jmap-archive-results.test.ts b/lib/__tests__/jmap-archive-results.test.ts new file mode 100644 index 000000000..146cab025 --- /dev/null +++ b/lib/__tests__/jmap-archive-results.test.ts @@ -0,0 +1,133 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { JMAPClient } from '../jmap/client'; +import { ArchiveEmailsError } from '../jmap/archive-error'; +import type { Mailbox } from '../jmap/types'; + +const emails = [ + { id: 'accepted-email', receivedAt: '2026-09-01T12:00:00Z' }, + { id: 'refused-email', receivedAt: '2026-09-02T12:00:00Z' }, +]; +const json = (body: unknown) => new Response(JSON.stringify(body), { + status: 200, headers: { 'Content-Type': 'application/json' }, +}); + +describe('JMAP archive confirmed results', () => { + let fetchMock: ReturnType; + + beforeEach(() => { fetchMock = vi.spyOn(globalThis, 'fetch'); }); + afterEach(() => vi.restoreAllMocks()); + + async function connect(maxObjectsInSet = 100) { + fetchMock.mockResolvedValueOnce(json({ + capabilities: { 'urn:ietf:params:jmap:core': { maxObjectsInSet } }, + accounts: { primary: { name: 'Primary', isPersonal: true, accountCapabilities: {} } }, + primaryAccounts: { 'urn:ietf:params:jmap:mail': 'primary' }, + apiUrl: 'https://mail.example.test/jmap/api', + downloadUrl: 'https://mail.example.test/download/{accountId}/{blobId}/{name}', + uploadUrl: 'https://mail.example.test/upload/{accountId}', + eventSourceUrl: 'https://mail.example.test/events', + })); + const client = JMAPClient.withBearer('https://mail.example.test', 'test-token', 'test@example.test'); + await client.connect(); + fetchMock.mockReset(); + return client; + } + + it.each(['single', 'year', 'month'] as const)('retains confirmed updates alongside notUpdated in %s mode', async mode => { + const client = await connect(); + const methodResponses: unknown[] = []; + if (mode !== 'single') methodResponses.push(['Mailbox/set', { + created: { 'year-2026': { id: 'year-folder' }, 'month-2026-09': { id: 'month-folder' } }, + }, '0']); + methodResponses.push(['Email/set', { + updated: { 'accepted-email': null }, + notUpdated: { 'refused-email': { type: 'notFound' } }, + }, String(methodResponses.length)]); + fetchMock.mockResolvedValueOnce(json({ methodResponses })); + + const error = await client.batchArchiveEmails(emails, 'shared-archive', mode, [], 'shared').catch(e => e); + + expect(error).toBeInstanceOf(ArchiveEmailsError); + expect(error.updatedIds).toEqual(['accepted-email']); + expect(error.message).toMatch(/notFound/); + const request = JSON.parse(fetchMock.mock.calls[0][1]?.body as string); + expect(request.methodCalls.every((call: [string, { accountId: string }]) => call[1].accountId === 'shared')).toBe(true); + expect(request.methodCalls.at(-1)[1].update).toEqual({ + 'accepted-email': { mailboxIds: { [mode === 'single' ? 'shared-archive' : mode === 'year' ? '#year-2026' : '#month-2026-09']: true } }, + 'refused-email': { mailboxIds: { [mode === 'single' ? 'shared-archive' : mode === 'year' ? '#year-2026' : '#month-2026-09']: true } }, + }); + }); + + it.each(['single', 'year', 'month'] as const)('preserves earlier batch successes when a later %s request fails', async mode => { + const client = await connect(1); + const methodResponses: unknown[] = []; + if (mode !== 'single') methodResponses.push(['Mailbox/set', { + created: { 'year-2026': { id: 'year-folder' }, 'month-2026-09': { id: 'month-folder' } }, + }, '0']); + methodResponses.push(['Email/set', { updated: { 'accepted-email': null } }, String(methodResponses.length)]); + fetchMock.mockResolvedValueOnce(json({ methodResponses })).mockRejectedValueOnce(new Error('connection lost')); + + const error = await client.batchArchiveEmails(emails, 'archive', mode, []).catch(e => e); + + expect(error.updatedIds).toEqual(['accepted-email']); + expect(error.message).toBe('connection lost'); + expect(fetchMock).toHaveBeenCalledTimes(2); + const second = JSON.parse(fetchMock.mock.calls[1][1]?.body as string); + expect(second.methodCalls[0][1].update['refused-email'].mailboxIds).toEqual({ + [mode === 'single' ? 'archive' : mode === 'year' ? 'year-folder' : 'month-folder']: true, + }); + }); + + it.each(['single', 'year', 'month'] as const)('rejects method errors without confirming rows in %s mode', async mode => { + const client = await connect(); + const methodResponses: unknown[] = mode === 'single' ? [] : [['Mailbox/set', { created: {} }, '0']]; + methodResponses.push(['error', { type: 'forbidden' }, String(methodResponses.length)]); + fetchMock.mockResolvedValueOnce(json({ methodResponses })); + const error = await client.batchArchiveEmails(emails, 'archive', mode, []).catch(e => e); + expect(error.updatedIds).toEqual([]); + expect(error.message).toMatch(/forbidden/); + }); + + it('does not infer success for IDs omitted from updated', async () => { + const client = await connect(); + fetchMock.mockResolvedValueOnce(json({ methodResponses: [['Email/set', { updated: {} }, '0']] })); + const error = await client.batchArchiveEmails(emails, 'archive', 'single', []).catch(e => e); + expect(error.updatedIds).toEqual([]); + expect(error.message).toMatch(/not confirmed/); + }); + + it.each(['year', 'month'] as const)('retains Email/set successes when %s folder creation partially fails', async mode => { + const client = await connect(); + fetchMock.mockResolvedValueOnce(json({ methodResponses: [ + ['Mailbox/set', { notCreated: { 'year-2026': { type: 'forbidden' } } }, '0'], + ['Email/set', { + updated: { 'accepted-email': null }, notUpdated: { 'refused-email': { type: 'invalidProperties' } }, + }, '1'], + ] })); + + const error = await client.batchArchiveEmails(emails, 'archive', mode, []).catch(e => e); + + expect(error).toBeInstanceOf(ArchiveEmailsError); + expect(error.updatedIds).toEqual(['accepted-email']); + expect(error.message).toMatch(/Failed to create archive folder.*forbidden/); + }); + + it.each(['year', 'month'] as const)('reuses existing %s folders and resolves success', async mode => { + const client = await connect(); + const folders = [ + { id: 'year-folder', name: '2026', parentId: 'archive', accountId: 'primary' }, + { id: 'month-folder', name: '09', parentId: 'year-folder', accountId: 'primary' }, + ] as Mailbox[]; + fetchMock.mockResolvedValueOnce(json({ methodResponses: [['Email/set', { + updated: { 'accepted-email': null, 'refused-email': null }, + }, '0']] })); + + await expect(client.batchArchiveEmails(emails, 'archive', mode, folders)).resolves.toBeUndefined(); + + const request = JSON.parse(fetchMock.mock.calls[0][1]?.body as string); + expect(request.methodCalls).toEqual([['Email/set', { + accountId: 'primary', + update: Object.fromEntries(emails.map(e => [e.id, { mailboxIds: { [mode === 'year' ? 'year-folder' : 'month-folder']: true } }])), + }, '0']]); + }); +}); diff --git a/lib/jmap/archive-error.ts b/lib/jmap/archive-error.ts new file mode 100644 index 000000000..053b89202 --- /dev/null +++ b/lib/jmap/archive-error.ts @@ -0,0 +1,7 @@ +/** Archive failed after some messages may already have been confirmed updated. */ +export class ArchiveEmailsError extends Error { + constructor(message: string, readonly updatedIds: string[], options?: ErrorOptions) { + super(message, options); + this.name = 'ArchiveEmailsError'; + } +} diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index 92db5f63c..3ec211044 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -1,3 +1,4 @@ +import { ArchiveEmailsError } from "./archive-error"; import { generateUUID } from '@/lib/utils'; import type { Attachment, Email, Mailbox, MailboxRights, StateChange, AccountStates, CollectionChanges, ShareNotification, BusyPeriod, CalendarParticipantIdentity, CalendarEventNotification, Thread, Identity, EmailAddress, ContactCard, AddressBook, AddressBookRights, VacationResponse, Calendar, CalendarComponentType, CalendarRights, CalendarEvent, CalendarEventFilter, CalendarTask, CreateCalendarOptions, FileNode, FileNodeFilter, FileNodeRights, Principal, PushSubscription, EmailPushConfig, DeliveryStatus, EmailSubmission, RejectedRecipient, ScheduledEmail, SendEmailResult, SharedAccount } from "./types"; import type { SieveScript, SieveCapabilities } from "./sieve-types"; @@ -2811,12 +2812,57 @@ export class JMAPClient implements IJMAPClient { mode: 'single' | 'year' | 'month', existingMailboxes: Mailbox[], accountId?: string, + ): Promise { + const updatedIds: string[] = []; + try { + await this.archiveEmails(emails, archiveMailboxId, mode, existingMailboxes, accountId, updatedIds); + } catch (error) { + throw new ArchiveEmailsError( + error instanceof Error ? error.message : 'Failed to archive emails', + updatedIds, + { cause: error }, + ); + } + } + + private confirmArchivedEmails( + entry: JMAPResponse['methodResponses'][number] | undefined, + requestedIds: string[], + updatedIds: string[], + ): void { + const [name, result] = entry ?? []; + if (name === 'Email/set') { + updatedIds.push(...requestedIds.filter(id => + Object.prototype.hasOwnProperty.call(result?.updated ?? {}, id) && !result?.notUpdated?.[id], + )); + } + this.assertEmailSetSucceeded({ methodResponses: entry ? [entry] : [] } as JMAPResponse, 'archive emails'); + if (requestedIds.some(id => !updatedIds.includes(id))) { + throw new Error('Failed to archive emails: update was not confirmed'); + } + } + + private async archiveEmails( + emails: Array<{ id: string; receivedAt: string }>, + archiveMailboxId: string, + mode: 'single' | 'year' | 'month', + existingMailboxes: Mailbox[], + accountId: string | undefined, + updatedIds: string[], ): Promise { if (emails.length === 0) return; const targetAccountId = accountId || this.accountId; if (mode === 'single') { - await this.batchMoveEmails(emails.map(e => e.id), archiveMailboxId, targetAccountId); + for (const batch of batched(emails, this.getMaxObjectsInSet())) { + const response = await this.request([ + ['Email/set', { + accountId: targetAccountId, + update: Object.fromEntries(batch.map(e => [e.id, { mailboxIds: { [archiveMailboxId]: true } }])), + }, '0'], + ]); + this.confirmArchivedEmails(response.methodResponses?.[0], batch.map(e => e.id), updatedIds); + } return; } @@ -2906,7 +2952,18 @@ export class JMAPClient implements IJMAPClient { const response = await this.request(methodCalls); + let emailError: unknown; + try { + this.confirmArchivedEmails(response.methodResponses?.[withCreates ? 1 : 0], batch.map(([id]) => id), updatedIds); + } catch (error) { + emailError = error; + } + if (withCreates) { + if (response.methodResponses?.[0]?.[0] === 'error') { + const error = response.methodResponses[0][1]; + throw new Error(`Failed to create archive folders: ${error?.description || error?.type || 'unknown error'}`); + } const mailboxResult = response.methodResponses?.[0]?.[1]; const notCreated = mailboxResult?.notCreated as Record | undefined; const failures = notCreated ? Object.entries(notCreated) : []; @@ -2924,15 +2981,7 @@ export class JMAPClient implements IJMAPClient { .map(([cid, mailbox]) => [`#${cid}`, mailbox.id!]), ); } - - const emailIdx = withCreates ? 1 : 0; - const emailResult = response.methodResponses?.[emailIdx]?.[1]; - const notUpdated = emailResult?.notUpdated as Record | undefined; - const emailFailures = notUpdated ? Object.entries(notUpdated) : []; - if (emailFailures.length > 0) { - const [id, err] = emailFailures[0]; - throw new Error(`Failed to move ${emailFailures.length} email(s), first: ${id} – ${err.type || 'unknown'}${err.description ? ` (${err.description})` : ''}`); - } + if (emailError) throw emailError; } } diff --git a/stores/__tests__/email-store-bulk-archive.test.ts b/stores/__tests__/email-store-bulk-archive.test.ts new file mode 100644 index 000000000..bddcb1b7a --- /dev/null +++ b/stores/__tests__/email-store-bulk-archive.test.ts @@ -0,0 +1,604 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +const { fetchUnifiedMock, fetchCrossViewMock } = vi.hoisted(() => ({ + fetchUnifiedMock: vi.fn(), fetchCrossViewMock: vi.fn(), +})); +vi.mock('@/lib/unified-mailbox', async (importActual) => ({ + ...await importActual(), + fetchUnifiedEmails: fetchUnifiedMock, + fetchCrossViewEmails: fetchCrossViewMock, +})); + +import { ArchiveMailboxNotFoundError, useEmailStore } from '../email-store'; +import { useAuthStore } from '../auth-store'; +import { useSettingsStore } from '../settings-store'; +import { ArchiveEmailsError } from '@/lib/jmap/archive-error'; +import { runBatchEmailAction } from '@/lib/email-action-toast'; +import { toast } from '@/stores/toast-store'; +import { clearAllHooks, emailHooks } from '@/lib/plugin-hooks'; +import { emailKeyFor, threadKeyFor } from '@/lib/thread-utils'; +import type { Email, Mailbox } from '@/lib/jmap/types'; +import type { IJMAPClient } from '@/lib/jmap/client-interface'; + +const originalRefresh = useEmailStore.getState().refreshCurrentMailbox; + +const mailbox = (owner: string, role: 'inbox' | 'archive', shared = false) => ({ + id: shared ? `${owner}:${role}` : `${owner}-${role}`, + originalId: shared ? role : undefined, + accountId: owner, role, name: role, + isShared: shared, + myRights: { mayReadItems: true, mayAddItems: true }, +}) as Mailbox; + +const email = (id: string, owner: string, login = 'login-a') => ({ + id, threadId: `thread-${id}`, receivedAt: '2026-09-01T12:00:00Z', + sourceClientAccountId: login, sourceAccountId: owner, + mailboxIds: { inbox: true }, keywords: {}, size: 100, hasAttachment: false, +}) as Email; + +function makeClient(folders: Record) { + return { + batchArchiveEmails: vi.fn().mockResolvedValue(undefined), + // Missing-folder fixtures leave the created Archive out of the reload, + // exercising upstream's create-then-report-not-found behavior. + createMailbox: vi.fn().mockResolvedValue({}), + getMailboxes: vi.fn(async (owner: string) => folders[owner] ?? []), + getAllMailboxes: vi.fn(async () => Object.values(folders).flat()), + getAccountId: () => 'primary', + } as unknown as IJMAPClient; +} + +describe('bulk archive ownership and reconciliation', () => { + let client: IJMAPClient; + let folders: Record; + let refresh: ReturnType; + + beforeEach(() => { + vi.clearAllMocks(); + clearAllHooks(); + folders = { + primary: [mailbox('primary', 'inbox'), mailbox('primary', 'archive')], + shared: [mailbox('shared', 'inbox', true), mailbox('shared', 'archive', true)], + }; + client = makeClient(folders); + useAuthStore.setState({ + activeAccountId: 'login-a', + getClientForAccount: (id: string) => id === 'login-a' ? client as never : undefined, + }); + useSettingsStore.setState({ archiveMode: 'single' }); + useEmailStore.setState({ + emails: [email('primary-email', 'primary'), email('shared-email', 'shared')], + selectedEmailKeys: new Set([emailKeyFor(email('primary-email', 'primary')), emailKeyFor(email('shared-email', 'shared'))]), + selectedEmail: email('primary-email', 'primary'), + selectedMailbox: '__unified_inbox__', viewingAccountId: null, + isUnifiedView: true, unifiedRole: 'inbox', crossView: null, + mailboxes: Object.values(folders).flat(), accountMailboxes: { ...folders }, + unifiedScope: [], error: null, isLoading: false, + selectedKeyword: null, searchQuery: '', totalEmails: 2, + threadEmailsCache: new Map(), expandedThreadIds: new Set(), retainedInViewIds: new Set(), + }); + refresh = vi.spyOn(useEmailStore.getState(), 'refreshCurrentMailbox').mockResolvedValue(); + }); + + afterEach(() => { + clearAllHooks(); + vi.restoreAllMocks(); + useEmailStore.setState({ refreshCurrentMailbox: originalRefresh }); + }); + + it('routes primary and shared IDs separately to each owner’s Archive', async () => { + await useEmailStore.getState().batchArchive(client); + + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(2); + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'primary-email', receivedAt: expect.any(String) }], + 'primary-archive', 'single', expect.any(Array), 'primary', + ); + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'shared-email', receivedAt: expect.any(String) }], + 'archive', 'single', expect.any(Array), 'shared', + ); + expect(useEmailStore.getState().emails).toEqual([]); + expect(useEmailStore.getState().selectedEmailKeys.size).toBe(0); + expect(useEmailStore.getState().selectedEmail).toBeNull(); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it.each(['single', 'year', 'month'] as const)('creates each missing owner’s Archive independently in %s mode', async mode => { + folders.primary = [mailbox('primary', 'inbox')]; + folders.shared = [mailbox('shared', 'inbox', true)]; + useSettingsStore.setState({ archiveMode: mode }); + vi.mocked(client.createMailbox).mockImplementation(async (_name, _parent, owner) => { + const archive = mailbox(owner!, 'archive', owner === 'shared'); + folders[owner!].push(archive); + return archive; + }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.createMailbox).toHaveBeenCalledTimes(2); + expect(client.createMailbox).toHaveBeenCalledWith('Archive', undefined, 'primary', { role: 'archive' }); + expect(client.createMailbox).toHaveBeenCalledWith('Archive', undefined, 'shared', { role: 'archive' }); + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'shared-email', receivedAt: expect.any(String) }], 'archive', mode, expect.any(Array), 'shared', + ); + expect(useEmailStore.getState().emails).toEqual([]); + expect(useEmailStore.getState().accountMailboxes.shared.map(m => m.id)).toContain('shared:archive'); + }); + + it('keeps other groups valid when an owner refuses Archive creation', async () => { + folders.shared = [mailbox('shared', 'inbox', true)]; + vi.mocked(client.createMailbox).mockRejectedValue(new Error('Archive creation forbidden')); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('Archive creation forbidden'); + + expect(client.createMailbox).toHaveBeenCalledWith('Archive', undefined, 'shared', { role: 'archive' }); + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['shared-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('publishes a newly created Archive even when its email move fails', async () => { + folders.primary = [mailbox('primary', 'inbox')]; + useEmailStore.setState({ emails: [email('primary-email', 'primary')], selectedEmailKeys: new Set([emailKeyFor(email('primary-email', 'primary'))]) }); + vi.mocked(client.createMailbox).mockImplementation(async () => { + const archive = mailbox('primary', 'archive'); + folders.primary.push(archive); + return archive; + }); + vi.mocked(client.batchArchiveEmails).mockRejectedValue(new Error('Email move forbidden')); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('Email move forbidden'); + + expect(useEmailStore.getState().accountMailboxes['login-a'].map(m => m.id)).toContain('primary-archive'); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('primary-email', 'primary'))]); + expect(refresh).not.toHaveBeenCalled(); + }); + + it('groups stamped and unstamped rows of one owner and clears its stamped viewer', async () => { + const unstamped = { ...email('own-email', 'primary'), sourceAccountId: undefined, sourceClientAccountId: undefined }; + useEmailStore.setState({ + emails: [unstamped, email('stamped-email', 'primary')], + selectedEmail: email('own-email', 'primary'), + selectedEmailKeys: new Set([emailKeyFor(unstamped), emailKeyFor(email('stamped-email', 'primary'))]), + selectedMailbox: 'primary-inbox', isUnifiedView: false, + }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.batchArchiveEmails).toHaveBeenCalledOnce(); + expect(vi.mocked(client.batchArchiveEmails).mock.calls[0][0].map(e => e.id)).toEqual(['own-email', 'stamped-email']); + expect(useEmailStore.getState().selectedEmail).toBeNull(); + }); + + it.each(['year', 'month'] as const)('passes bare shared folder and parent IDs for %s subfolder reuse', async mode => { + folders.shared.push({ ...mailbox('shared', 'archive', true), id: 'shared:year', originalId: 'year', name: '2026', role: undefined, parentId: 'shared:archive' }); + useEmailStore.setState({ + emails: [email('shared-email', 'shared')], selectedEmailKeys: new Set([emailKeyFor(email('shared-email', 'shared'))]), + }); + useSettingsStore.setState({ archiveMode: mode }); + + await useEmailStore.getState().batchArchive(client); + + expect(vi.mocked(client.batchArchiveEmails).mock.calls[0][3]).toContainEqual( + expect.objectContaining({ id: 'year', parentId: 'archive', accountId: 'shared' }), + ); + }); + + it('removes confirmed pinned retention without changing a failed message’s keywords or thread', async () => { + const archived = { ...email('accepted', 'primary'), keywords: { $pinned: true } }; + const failed = { ...email('refused', 'primary'), threadId: archived.threadId, keywords: { $pinned: true, $seen: true } }; + useEmailStore.setState({ + emails: [archived, failed], selectedEmail: failed, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(failed)]), retainedInViewIds: new Set(['accepted', 'refused']), + threadEmailsCache: new Map([[threadKeyFor(archived), [archived, failed]]]), + expandedThreadIds: new Set([threadKeyFor(archived)]), + }); + vi.mocked(client.batchArchiveEmails).mockRejectedValue(new ArchiveEmailsError('forbidden', ['accepted'])); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('forbidden'); + + expect(useEmailStore.getState().emails).toEqual([failed]); + expect(useEmailStore.getState().selectedEmail).toBe(failed); + expect([...useEmailStore.getState().retainedInViewIds]).toEqual(['refused']); + expect(useEmailStore.getState().threadEmailsCache.get(threadKeyFor(failed))).toEqual([failed]); + expect(useEmailStore.getState().expandedThreadIds.has(threadKeyFor(failed))).toBe(true); + }); + + it('preserves a failed selected row when the actual refresh omits it', async () => { + const failed = email('shared-email', 'shared'); + useEmailStore.setState({ selectedEmail: failed, refreshCurrentMailbox: originalRefresh }); + folders.shared = [mailbox('shared', 'inbox', true)]; + fetchUnifiedMock.mockResolvedValue({ emails: [], total: 0, hasMore: false, errors: new Map() }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(useEmailStore.getState().emails).toEqual([failed]); + expect(useEmailStore.getState().selectedEmail).toBe(failed); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + expect(useEmailStore.getState().totalEmails).toBe(1); + }); + + it('leaves the shared row selected when its Archive is missing, while primary succeeds', async () => { + folders.shared = [mailbox('shared', 'inbox', true)]; + useEmailStore.setState({ accountMailboxes: { ...folders }, mailboxes: Object.values(folders).flat() }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['shared-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + expect(useEmailStore.getState().error).toMatch(/archive mailbox not found/i); + expect(refresh).toHaveBeenCalledOnce(); + expect(client.getMailboxes).toHaveBeenCalledWith('primary'); + }); + + it('reconciles an owner request failure while another owner succeeds', async () => { + vi.mocked(client.batchArchiveEmails).mockImplementation(async (_emails, _dest, _mode, _folders, owner) => { + if (owner === 'primary') throw new Error('forbidden'); + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('forbidden'); + + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(2); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['primary-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('primary-email', 'primary'))]); + expect(useEmailStore.getState().selectedEmail?.id).toBe('primary-email'); + expect(useEmailStore.getState().error).toBe('forbidden'); + expect(useEmailStore.getState().isLoading).toBe(false); + expect(refresh).toHaveBeenCalledOnce(); + expect(client.getMailboxes).toHaveBeenCalledWith('shared'); + }); + it('removes only confirmed updates within one owner and reports the failure toast', async () => { + const failed = email('rejected-email', 'primary'); + useEmailStore.setState({ + emails: [email('primary-email', 'primary'), failed], + selectedEmailKeys: new Set([emailKeyFor(email('primary-email', 'primary')), emailKeyFor(failed)]), + }); + vi.mocked(client.batchArchiveEmails).mockRejectedValue( + new ArchiveEmailsError('Failed to archive emails: notFound', ['primary-email']), + ); + const errorToast = vi.spyOn(toast, 'error'); + const successToast = vi.spyOn(toast, 'success'); + + await runBatchEmailAction(() => useEmailStore.getState().batchArchive(client), { + success: 'archived', error: 'archive failed', + }); + + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(useEmailStore.getState().selectedEmail).toBeNull(); + expect(refresh).toHaveBeenCalledOnce(); + expect(vi.mocked(client.getMailboxes).mock.calls).toEqual([['primary'], ['primary']]); + expect(errorToast).toHaveBeenCalledWith('archive failed', 'Failed to archive emails: notFound'); + expect(successToast).not.toHaveBeenCalled(); + }); + + it.each(['single', 'year', 'month'] as const)('preserves ordinary single-owner %s archive', async mode => { + const own = { ...email('own-email', 'primary'), sourceAccountId: undefined, sourceClientAccountId: undefined }; + useEmailStore.setState({ + emails: [own], selectedEmailKeys: new Set([emailKeyFor(own)]), + isUnifiedView: false, selectedMailbox: 'primary-inbox', + mailboxes: folders.primary, + }); + useSettingsStore.setState({ archiveMode: mode }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.batchArchiveEmails).toHaveBeenCalledOnce(); + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: own.id, receivedAt: own.receivedAt }], + 'primary-archive', mode, folders.primary, 'primary', + ); + expect(useEmailStore.getState().selectedEmailKeys.size).toBe(0); + expect(useEmailStore.getState().error).toBeNull(); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('keeps equal account IDs on different authenticated clients separate', async () => { + const otherFolders = { primary: [mailbox('primary', 'inbox'), { ...mailbox('primary', 'archive'), id: 'other-archive' }] }; + const otherClient = makeClient(otherFolders); + useAuthStore.setState({ + getClientForAccount: (id: string) => (id === 'login-a' ? client : id === 'login-b' ? otherClient : undefined) as never, + }); + useEmailStore.setState({ + emails: [email('primary-email', 'primary'), email('other-email', 'primary', 'login-b')], + selectedEmailKeys: new Set([emailKeyFor(email('primary-email', 'primary')), emailKeyFor(email('other-email', 'primary', 'login-b'))]), + // Deliberately ambiguous cache: the client must resolve its own folders. + accountMailboxes: otherFolders, + }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'primary-email', receivedAt: expect.any(String) }], + 'primary-archive', 'single', folders.primary, 'primary', + ); + expect(otherClient.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'other-email', receivedAt: expect.any(String) }], + 'other-archive', 'single', otherFolders.primary, 'primary', + ); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it.each(['missing Archive', 'rejected request', 'different login'] as const)( + 'preserves the failed owner’s row, selection, viewer, and thread with colliding email IDs: %s', + async failure => { + const archived = email('same-email-id', 'primary'); + const failed = failure === 'different login' + ? email('same-email-id', 'primary', 'login-b') + : email('same-email-id', 'shared'); + if (failure === 'missing Archive') folders.shared = [mailbox('shared', 'inbox', true)]; + if (failure === 'rejected request') { + vi.mocked(client.batchArchiveEmails).mockImplementation(async (_emails, _dest, _mode, _folders, owner) => { + if (owner === 'shared') throw new Error('forbidden'); + }); + } + if (failure === 'different login') { + const otherClient = makeClient({ primary: folders.primary }); + vi.mocked(otherClient.batchArchiveEmails).mockRejectedValue(new Error('forbidden')); + useAuthStore.setState({ + getClientForAccount: (id: string) => (id === 'login-a' ? client : id === 'login-b' ? otherClient : undefined) as never, + }); + } + useEmailStore.setState({ + emails: [archived, failed], + // Both owners are explicitly selected by their independent keys. + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(failed)]), + selectedEmail: { ...failed, preview: 'Open failed owner’s message' }, + threadEmailsCache: new Map([[threadKeyFor(archived), [archived]], [threadKeyFor(failed), [failed]]]), + expandedThreadIds: new Set([threadKeyFor(archived), threadKeyFor(failed)]), + }); + const viewer = useEmailStore.getState().selectedEmail; + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow( + failure === 'missing Archive' ? /archive mailbox not found/i : /forbidden/, + ); + + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(useEmailStore.getState().selectedEmail).toBe(viewer); + expect([...useEmailStore.getState().threadEmailsCache.keys()]).toEqual([threadKeyFor(failed)]); + expect([...useEmailStore.getState().expandedThreadIds]).toEqual([threadKeyFor(failed)]); + expect(refresh).toHaveBeenCalledOnce(); + }, + ); + + it('keeps partial Email/set confirmations scoped to the owner with a colliding ID', async () => { + const archived = email('same-email-id', 'primary'); + const refused = email('refused-primary-email', 'primary'); + const shared = email('same-email-id', 'shared'); + folders.shared = [mailbox('shared', 'inbox', true)]; + vi.mocked(client.batchArchiveEmails).mockRejectedValue( + new ArchiveEmailsError('Failed to archive emails: notFound', ['same-email-id']), + ); + useEmailStore.setState({ + emails: [archived, refused, shared], selectedEmail: { ...shared }, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(refused), emailKeyFor(shared)]), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('notFound'); + + expect(useEmailStore.getState().emails).toEqual([refused, shared]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(refused), emailKeyFor(shared)]); + expect(useEmailStore.getState().selectedEmail).toEqual(shared); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('clears the successful owner’s viewer while retaining a colliding failed row’s selection', async () => { + const archived = email('same-email-id', 'primary'); + const failed = email('same-email-id', 'shared'); + folders.shared = [mailbox('shared', 'inbox', true)]; + useEmailStore.setState({ + emails: [archived, failed], selectedEmail: { ...archived }, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(failed)]), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(useEmailStore.getState().selectedEmail).toBeNull(); + }); + + it.each(['unified', 'cross-account'] as const)('retains a colliding failed row and viewer through the actual %s refresh', async view => { + const archived = email('same-email-id', 'primary'); + const failed = email('same-email-id', 'shared'); + const viewer = { ...failed, preview: 'Open failed owner’s message' }; + folders.shared = [mailbox('shared', 'inbox', true)]; + const loader = view === 'unified' ? fetchUnifiedMock : fetchCrossViewMock; + loader.mockResolvedValue({ emails: [{ ...failed }], total: 1, hasMore: false, errors: new Map() }); + useEmailStore.setState({ + emails: [archived, failed], selectedEmail: viewer, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(failed)]), + refreshCurrentMailbox: originalRefresh, + selectedMailbox: view === 'unified' ? '__unified_inbox__' : '__cross_all__', + unifiedRole: view === 'unified' ? 'inbox' : null, + crossView: view === 'cross-account' ? 'all' : null, + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(loader).toHaveBeenCalledOnce(); + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(useEmailStore.getState().selectedEmail).toBe(viewer); + expect(useEmailStore.getState().error).toMatch(/archive mailbox not found/i); + }); + + it('does not fall back to the active client for a disconnected stamped owner', async () => { + useEmailStore.setState({ + emails: [email('primary-email', 'primary'), email('shared-email', 'shared', 'disconnected')], + selectedEmailKeys: new Set([emailKeyFor(email('primary-email', 'primary')), emailKeyFor(email('shared-email', 'shared', 'disconnected'))]), + }); + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('not connected'); + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared', 'disconnected'))]); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('refreshes the actual unified view after partial success and retains the failed selection', async () => { + useEmailStore.setState({ refreshCurrentMailbox: originalRefresh }); + const failed = email('shared-email', 'shared'); + folders.shared = [mailbox('shared', 'inbox', true)]; + fetchUnifiedMock.mockResolvedValue({ + emails: [failed], total: 1, hasMore: false, errors: new Map(), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(fetchUnifiedMock).toHaveBeenCalledOnce(); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['shared-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + expect(useEmailStore.getState().error).toMatch(/archive mailbox not found/i); + expect(useEmailStore.getState().accountMailboxes.primary).toEqual(folders.primary); + expect(useEmailStore.getState().mailboxes.find(m => m.id === 'shared:archive')).toBeDefined(); + }); + + it('leaves a read-only shared Archive untouched without blocking the primary owner', async () => { + folders.shared[1].myRights.mayAddItems = false; + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['shared-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + }); + + it('keeps all rows and selections when no owner succeeds', async () => { + vi.mocked(client.batchArchiveEmails).mockRejectedValue(new Error('forbidden')); + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('forbidden'); + expect(useEmailStore.getState().emails).toHaveLength(2); + expect(useEmailStore.getState().selectedEmailKeys.size).toBe(2); + expect(refresh).not.toHaveBeenCalled(); + expect(useEmailStore.getState().isLoading).toBe(false); + }); + + it.each(['shared owner', 'different login'] as const)('archives only the selected namesake: %s', async source => { + const untouched = email('same-email-id', 'primary'); + const selected = source === 'shared owner' + ? email('same-email-id', 'shared') : email('same-email-id', 'primary', 'login-b'); + const otherClient = makeClient({ primary: folders.primary }); + useAuthStore.setState({ + getClientForAccount: (id: string) => (id === 'login-a' ? client : id === 'login-b' ? otherClient : undefined) as never, + }); + useEmailStore.setState({ + emails: [untouched, selected], selectedEmail: untouched, + selectedEmailKeys: new Set([emailKeyFor(selected)]), + threadEmailsCache: new Map([[threadKeyFor(untouched), [untouched]], [threadKeyFor(selected), [selected]]]), + expandedThreadIds: new Set([threadKeyFor(untouched), threadKeyFor(selected)]), + }); + + expect(await useEmailStore.getState().batchArchive(client)).toBe(true); + + const actionClient = source === 'shared owner' ? client : otherClient; + expect(actionClient.batchArchiveEmails).toHaveBeenCalledExactlyOnceWith( + [{ id: selected.id, receivedAt: selected.receivedAt }], + source === 'shared owner' ? 'archive' : 'primary-archive', 'single', expect.any(Array), selected.sourceAccountId, + ); + if (source === 'different login') expect(client.batchArchiveEmails).not.toHaveBeenCalled(); + const state = useEmailStore.getState(); + expect(state.emails).toEqual([untouched]); + expect(state.selectedEmail).toBe(untouched); + expect(state.selectedEmailKeys.size).toBe(0); + expect([...state.threadEmailsCache]).toEqual([[threadKeyFor(untouched), [untouched]]]); + expect([...state.expandedThreadIds]).toEqual([threadKeyFor(untouched)]); + }); + + it('archives a selected expanded-thread member without archiving its unselected row', async () => { + const row = email('row', 'shared'); + const member = { ...email('member', 'shared'), threadId: row.threadId }; + useEmailStore.setState({ + emails: [row], selectedEmail: member, + selectedEmailKeys: new Set([emailKeyFor(member)]), + threadEmailsCache: new Map([[threadKeyFor(row), [row, member]]]), + expandedThreadIds: new Set([threadKeyFor(row)]), + }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.batchArchiveEmails).toHaveBeenCalledExactlyOnceWith( + [{ id: member.id, receivedAt: member.receivedAt }], 'archive', 'single', expect.any(Array), 'shared', + ); + const state = useEmailStore.getState(); + expect(state.emails).toEqual([row]); + expect(state.selectedEmail).toBeNull(); + expect(state.selectedEmailKeys.size).toBe(0); + expect(state.threadEmailsCache.get(threadKeyFor(row))).toEqual([row]); + expect(state.expandedThreadIds.has(threadKeyFor(row))).toBe(true); + }); + + it('retains a failed expanded-thread member through refresh without adding it as a list row', async () => { + const archived = email('accepted', 'primary'); + const row = email('row', 'shared'); + const member = { ...email('member', 'shared'), threadId: row.threadId, keywords: { $pinned: true } }; + folders.shared = [mailbox('shared', 'inbox', true)]; + useEmailStore.setState({ + emails: [archived, row], selectedEmail: member, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(member)]), + threadEmailsCache: new Map([[threadKeyFor(row), [row, member]]]), + expandedThreadIds: new Set([threadKeyFor(row)]), + refreshCurrentMailbox: vi.fn(async () => { + useEmailStore.setState({ emails: [row], threadEmailsCache: new Map() }); + }), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + const state = useEmailStore.getState(); + expect(state.emails).toEqual([row]); + expect([...state.selectedEmailKeys]).toEqual([emailKeyFor(member)]); + expect(state.selectedEmail).toBe(member); + expect(state.threadEmailsCache.get(threadKeyFor(row))).toEqual([row, member]); + expect(state.expandedThreadIds.has(threadKeyFor(row))).toBe(true); + }); + + it.each(['folder creation', 'archive move'] as const)('keeps plugin cancellation and confirmed notifications per owner: %s', async veto => { + const before = vi.fn(({ emailIds }: { emailIds: string[] }) => !emailIds.includes('shared-email')); + const after = vi.fn(); + emailHooks.onEmailArchive.register('test', after); + if (veto === 'folder creation') { + folders.shared = [mailbox('shared', 'inbox', true)]; + emailHooks.onBeforeMailboxCreate.register('test', () => false); + } else emailHooks.onBeforeEmailArchive.register('test', before); + + expect(await useEmailStore.getState().batchArchive(client)).toBe(false); + + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(useEmailStore.getState().emails.map(e => e.id)).toEqual(['shared-email']); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(email('shared-email', 'shared'))]); + expect(after).toHaveBeenCalledExactlyOnceWith({ emailIds: ['primary-email'] }); + expect(useEmailStore.getState().error).toBeNull(); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('notifies plugins only of confirmed messages after a partial Email/set failure', async () => { + const accepted = email('accepted', 'primary'); + const refused = email('refused', 'primary'); + useEmailStore.setState({ emails: [accepted, refused], selectedEmailKeys: new Set([emailKeyFor(accepted), emailKeyFor(refused)]) }); + const after = vi.fn(); + emailHooks.onEmailArchive.register('test', after); + vi.mocked(client.batchArchiveEmails).mockRejectedValue(new ArchiveEmailsError('forbidden', [accepted.id, 'unrequested-id'])); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toThrow('forbidden'); + + expect(after).toHaveBeenCalledExactlyOnceWith({ emailIds: [accepted.id] }); + expect(useEmailStore.getState().emails).toEqual([refused]); + }); + + it('preserves other owners in the viewed login cache when refreshing a successful owner', async () => { + const other = mailbox('other', 'inbox', true); + const merged = [...folders.primary, ...folders.shared, other]; + useEmailStore.setState({ + emails: [email('shared-email', 'shared')], + selectedEmailKeys: new Set([emailKeyFor(email('shared-email', 'shared'))]), + viewingAccountId: 'login-a', accountMailboxes: { 'login-a': merged }, + }); + + await useEmailStore.getState().batchArchive(client); + + expect(useEmailStore.getState().accountMailboxes['login-a']).toEqual([ + ...folders.primary, other, ...folders.shared, + ]); + }); + +}); diff --git a/stores/email-store.ts b/stores/email-store.ts index 4474c3c46..9a07087bc 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -1,3 +1,4 @@ +import { ArchiveEmailsError } from "@/lib/jmap/archive-error"; import { create } from "zustand"; import { Email, Mailbox, StateChange, ScheduledEmail, SendEmailResult, isUnifiedMailboxId, isCrossViewId } from "@/lib/jmap/types"; import type { UnifiedMailboxRole, CrossView } from "@/lib/jmap/types"; @@ -4594,70 +4595,269 @@ export const useEmailStore = create((set, get) => ({ }, batchArchive: async (client): Promise => { - const { selectedEmailKeys, emails } = get(); - const mailboxes = resolveActionMailboxes(); - if (selectedEmailKeys.size === 0) return true; - - // Scope the archive folder to the viewed shared/group account (if any) so the - // move lands on the owner account, not the user's own archive (which appears - // first in the merged list); see resolveViewAccountId. Own view is unchanged. - let archiveMailbox: Mailbox | null; - try { - archiveMailbox = await ensureArchiveMailbox({ - client: resolveActionClient(client), - mailboxes, - selectedMailboxId: get().selectedMailbox, - refresh: async () => { - await refreshMailboxesForViewingAccount(client); - return resolveActionMailboxes(); - }, - }); - } catch (error) { - set({ error: error instanceof Error ? error.message : 'Failed to archive emails' }); - throw error; - } - if (!archiveMailbox) return false; - - const mode = useSettingsStore.getState().archiveMode; - const archiveId = archiveMailbox.originalId || archiveMailbox.id; - - const selected = emails.filter(e => selectedEmailKeys.has(emailKeyFor(e))); + const { selectedMailbox } = get(); + const selected = resolveSelectedEmails(get()); if (selected.length === 0) return true; + const listKeys = new Set(get().emails.map(emailKeyFor)); - const hookMailboxes = [...resolveActionMailboxes(), archiveMailbox]; - const move = { - emailIds: [...new Set(selected.map(e => e.id))], - fromMailboxId: moveSourceMailboxId(selected, hookMailboxes), - toMailboxId: archiveMailbox.id, + // A JMAP id is only unique within its owning account. Keep the reaching client in + // the grouping key as well as the owner account, including delegated owners. + type Group = ReturnType & { + emails: Email[]; + loginId: string | null; + stamped: boolean; + updatedIds: Set; + createdArchive: boolean; + move?: Parameters[0]; + hookMailboxes?: Mailbox[]; }; - if (!(await allowEmailMove(move, hookMailboxes))) return false; - - set({ isLoading: true, error: null }); - try { - await resolveActionClient(client).batchArchiveEmails( - selected.map(e => ({ id: e.id, receivedAt: e.receivedAt })), - archiveId, - mode, - mailboxes, - archiveMailbox.accountId, - ); - - const remaining = emails.filter(e => !selectedEmailKeys.has(emailKeyFor(e))); - set({ emails: remaining, selectedEmailKeys: new Set(), isLoading: false }); - emitEmailMove(move, hookMailboxes); - - // Refresh the active or viewed account's mailbox cache after the - // archive (a year/month archive can create new sub-folders). - await refreshMailboxesForViewingAccount(client); - await get().refreshCurrentMailbox(client); - } catch (error) { - set({ - error: error instanceof Error ? error.message : 'Failed to archive emails', - isLoading: false, + const groups: Group[] = []; + const failures: Error[] = []; + let stoppedByPlugin = false; + const sourceClients = new Map(); + const clientForSource = (loginId: string) => { + if (!sourceClients.has(loginId)) { + sourceClients.set(loginId, useAuthStore.getState().getClientForAccount(loginId)); + } + return sourceClients.get(loginId); + }; + const viewerLoginId = get().selectedEmail?.sourceClientAccountId; + if (viewerLoginId) clientForSource(viewerLoginId); + for (const email of selected) { + const stamped = !!(email.sourceClientAccountId && email.sourceAccountId); + if (stamped && !clientForSource(email.sourceClientAccountId!)) { + failures.push(new Error('Email account is not connected - cannot archive email')); + continue; + } + const context = resolveEmailActionContext(email, client); + // Merge stamped and unstamped rows of the same primary account too. + context.accountId ??= context.client.getAccountId?.() + || context.mailboxes.find(m => !m.isShared)?.accountId; + const group = groups.find(g => g.client === context.client && g.accountId === context.accountId); + if (group) { + group.emails.push(email); + group.stamped ||= stamped; + } else groups.push({ + ...context, emails: [email], stamped, updatedIds: new Set(), createdArchive: false, + loginId: email.sourceClientAccountId ?? get().viewingAccountId ?? useAuthStore.getState().activeAccountId, }); - throw error; } - return true; + + const isCurrentView = captureEmailListView(); + const epoch = currentStoreEpoch(); + const unstampedContext = resolveEmailActionContext({}, client); + const unstampedOwner = unstampedContext.accountId ?? unstampedContext.client.getAccountId?.() + ?? unstampedContext.mailboxes.find(m => !m.isShared)?.accountId; + const groupForEmail = (email: Email) => { + const stamped = !!(email.sourceClientAccountId && email.sourceAccountId); + const actionClient = stamped + ? clientForSource(email.sourceClientAccountId!) + : unstampedContext.client; + const owner = stamped ? email.sourceAccountId : unstampedOwner; + return groups.find(g => g.client === actionClient && g.accountId === owner); + }; + const mode = useSettingsStore.getState().archiveMode; + set({ isLoading: true, error: null }); + await Promise.all(groups.map(async group => { + try { + // The owner-only cache is ambiguous across servers/logins. Stamped + // selections resolve folders through their authenticated client instead. + let mailboxes = group.stamped + ? await group.client.getMailboxes(group.accountId) + : group.mailboxes; + // A primary-account action can start with the merged sidebar list. + // Keep only this owner's folders; older own-folder objects may lack + // accountId, whereas delegated folders must always name their owner. + const primaryOwner = !group.accountId || group.accountId === group.client.getAccountId?.(); + const ownerMailboxes = (folders: Mailbox[]) => folders + .filter(m => group.accountId + ? m.accountId === group.accountId || (primaryOwner && !m.accountId && !m.isShared) + : !m.isShared) + .map(m => m.isShared ? { + ...m, id: `${m.accountId}:${m.originalId || m.id}`, + originalId: m.originalId || m.id, + parentId: m.parentId && !m.parentId.startsWith(`${m.accountId}:`) + ? `${m.accountId}:${m.parentId}` : m.parentId, + } : m.accountId ? m : { ...m, accountId: group.accountId }); + mailboxes = ownerMailboxes(mailboxes); + const archive = await ensureArchiveMailbox({ + client: group.client, mailboxes, selectedMailboxId: selectedMailbox, + accountId: group.accountId, + refresh: async () => { + mailboxes = ownerMailboxes(await group.client.getMailboxes(group.accountId)); + group.createdArchive = !!findArchiveMailbox(mailboxes, selectedMailbox, group.accountId); + return mailboxes; + }, + }); + if (!archive) { + stoppedByPlugin = true; + return; + } + if (archive.myRights?.mayReadItems === false || archive.myRights?.mayAddItems === false) { + throw new ArchiveMailboxNotFoundError(); + } + group.hookMailboxes = [...mailboxes, archive]; + group.move = { + emailIds: [...new Set(group.emails.map(e => e.id))], + fromMailboxId: moveSourceMailboxId(group.emails, group.hookMailboxes), + toMailboxId: archive.id, + }; + if (!(await allowEmailMove(group.move, group.hookMailboxes))) { + stoppedByPlugin = true; + return; + } + // Store-side shared folders may be namespaced; year/month lookup needs + // the server's bare parent ids so existing subfolders can be reused. + const jmapMailboxes = mailboxes.map(m => m.originalId ? { + ...m, id: m.originalId, + parentId: m.parentId?.startsWith(`${m.accountId}:`) + ? m.parentId.slice(`${m.accountId}:`.length) : m.parentId, + } : m); + await group.client.batchArchiveEmails( + group.emails.map(e => ({ id: e.id, receivedAt: e.receivedAt })), + archive.originalId || archive.id, mode, jmapMailboxes, group.accountId ?? archive.accountId, + ); + group.emails.forEach(e => group.updatedIds.add(e.id)); + } catch (error) { + if (error instanceof ArchiveEmailsError) { + // Only accept confirmations belonging to this request's owner. + group.emails.forEach(e => { + if (error.updatedIds.includes(e.id)) group.updatedIds.add(e.id); + }); + } + failures.push(error instanceof Error ? error : new Error('Failed to archive emails')); + } + if (group.move && group.hookMailboxes && group.updatedIds.size > 0) { + emitEmailMove({ ...group.move, emailIds: [...group.updatedIds] }, group.hookMailboxes); + } + })); + + // Match the actual authenticated client and owner, including an unstamped + // list row whose open viewer carries source stamps for that same account. + const confirmedEmails = groups.flatMap(g => g.emails.filter(e => g.updatedIds.has(e.id))); + const wasArchived = (email: Email) => groupForEmail(email)?.updatedIds.has(email.id) ?? false; + const failedEmails = selected.filter(e => !wasArchived(e)); + if (isCurrentView() && confirmedEmails.length > 0) { + set(state => { + const remaining = state.emails.filter(e => !wasArchived(e)); + const remainingIds = new Set(remaining.map(e => e.id)); + const selectedEmailKeys = new Set(state.selectedEmailKeys); + for (const email of confirmedEmails) selectedEmailKeys.delete(emailKeyFor(email)); + const changedThreads = new Set(confirmedEmails.map(threadKeyFor)); + state.emails.filter(wasArchived).forEach(e => { + changedThreads.add(threadKeyFor(e)); + selectedEmailKeys.delete(emailKeyFor(e)); + }); + const remainingThreads = new Set(remaining.map(threadKeyFor)); + const threadEmailsCache = new Map(state.threadEmailsCache); + for (const [key, members] of threadEmailsCache) { + const cached = members.filter(e => !wasArchived(e)); + if (cached.length === members.length) continue; + changedThreads.add(key); + members.filter(wasArchived).forEach(e => selectedEmailKeys.delete(emailKeyFor(e))); + if (cached.length) threadEmailsCache.set(key, cached); + else threadEmailsCache.delete(key); + } + return { + emails: remaining, + totalEmails: Math.max(remaining.length, state.totalEmails - (state.emails.length - remaining.length)), + selectedEmailKeys, + selectedEmail: state.selectedEmail && wasArchived(state.selectedEmail) ? null : state.selectedEmail, + threadEmailsCache, + expandedThreadIds: new Set([...state.expandedThreadIds].filter(key => + !changedThreads.has(key) || remainingThreads.has(key) || threadEmailsCache.has(key))), + retainedInViewIds: new Set([...state.retainedInViewIds].filter(id => + !confirmedEmails.some(e => e.id === id) || remainingIds.has(id))), + }; + }); + } + + // Refresh every successful owner even if another owner (or another message + // in this owner's Email/set) failed. Also publish a newly created Archive + // when its email moves fail, as upstream's create-and-refresh path did. + await Promise.all(groups.filter(g => g.updatedIds.size > 0 || g.createdArchive).map(async group => { + try { + const fresh = await group.client.getMailboxes(group.accountId); + if (currentStoreEpoch() !== epoch || fresh.length === 0) return; + const owner = group.accountId ?? fresh[0]?.accountId; + const primary = group.client.getAccountId?.() + ? group.client.getAccountId() === owner + : !fresh[0]?.isShared; + const normalized = fresh.filter(m => !owner || !m.accountId || m.accountId === owner).map(m => m.isShared ? { + ...m, id: `${m.accountId}:${m.originalId || m.id}`, + originalId: m.originalId || m.id, + parentId: m.parentId && !m.parentId.startsWith(`${m.accountId}:`) ? `${m.accountId}:${m.parentId}` : m.parentId, + } : m); + set(state => { + const accountMailboxes = { ...state.accountMailboxes }; + if (owner) accountMailboxes[owner] = normalized; + // Login caches may contain both personal and delegated folders. + // Replace this owner only, preserving the rest of that folder tree. + const mergeOwner = (folders: Mailbox[]) => [ + ...folders.filter(m => primary ? m.isShared : m.accountId !== owner), ...normalized, + ]; + if (group.loginId) { + accountMailboxes[group.loginId] = mergeOwner(state.accountMailboxes[group.loginId] ?? []); + } + const activeClient = useAuthStore.getState().getClientForAccount(useAuthStore.getState().activeAccountId ?? ''); + return { + accountMailboxes, + mailboxes: activeClient === group.client + ? mergeOwner(state.mailboxes) + : state.mailboxes, + }; + }); + } catch (error) { + console.error('Failed to refresh mailboxes after archive:', error); + failures.push(error instanceof Error ? error : new Error('Failed to refresh mailboxes after archive')); + } + })); + if (confirmedEmails.length > 0 && isCurrentView()) { + const failedKeys = new Set(failedEmails.map(emailKeyFor)); + const failedRows = failedEmails.filter(e => listKeys.has(emailKeyFor(e))); + const failedThreads = [...get().threadEmailsCache].filter(([, members]) => + members.some(e => failedKeys.has(emailKeyFor(e)))); + try { + await get().refreshCurrentMailbox(client); + } catch (error) { + failures.push(error instanceof Error ? error : new Error('Failed to refresh emails after archive')); + } + if (isCurrentView() && failedEmails.length > 0) { + // A refreshed first page can omit a failed selected row (or return an + // equal raw id from another owner). Preserve failed objects and their + // account-aware selection, including selected expanded-thread members. + set(state => { + const sameEmail = (a: Email, b: Email) => emailKeyFor(a) === emailKeyFor(b); + const emails = state.emails.map(e => failedEmails.find(f => sameEmail(e, f)) ?? e); + for (const failed of failedRows) { + if (!emails.some(e => sameEmail(e, failed))) emails.push(failed); + } + const threadEmailsCache = new Map(state.threadEmailsCache); + for (const [key, members] of failedThreads) { + const merged = new Map(members.map(e => [emailKeyFor(e), e])); + for (const e of threadEmailsCache.get(key) ?? []) merged.set(emailKeyFor(e), e); + for (const e of failedEmails) { + if (threadKeyFor(e) === key) merged.set(emailKeyFor(e), e); + } + threadEmailsCache.set(key, [...merged.values()]); + } + return { + emails, + totalEmails: Math.max(state.totalEmails, emails.length), + selectedEmailKeys: new Set([...state.selectedEmailKeys, ...failedEmails.map(emailKeyFor)]), + threadEmailsCache, + }; + }); + } + } + + // Publish after refresh so a successful refresh cannot erase the archive + // failure, and reject so the existing bulk-action toast reports it. + const error = failures.length === 1 ? failures[0] + : failures.length > 1 ? new Error(failures.map(e => e.message).join('; ')) : null; + if (isCurrentView()) set({ isLoading: false, error: error?.message ?? null }); + if (error) throw error; + return !stoppedByPlugin; }, // Spam operations From 69519bf34460e7ad30cb7492bfa799f8f02f912b Mon Sep 17 00:00:00 2001 From: VasilisNtovolos Date: Wed, 7 Oct 2026 14:02:02 +0300 Subject: [PATCH 007/238] fix: respect account permissions when creating Archive --- lib/jmap/client-interface.ts | 2 + .../email-store-archive-auto-create.test.ts | 66 +++++++++++ .../email-store-bulk-archive.test.ts | 106 ++++++++++++++++++ stores/email-store.ts | 5 + 4 files changed, 179 insertions(+) diff --git a/lib/jmap/client-interface.ts b/lib/jmap/client-interface.ts index 160d300d7..5ea4cb80e 100644 --- a/lib/jmap/client-interface.ts +++ b/lib/jmap/client-interface.ts @@ -86,6 +86,8 @@ export interface IJMAPClient { // ── Capabilities ────────────────────────────────────────────── getCapabilities(): Record; + /** Account-scoped session capability data; primary account by default. */ + getAccountCapability?(capability: string, accountId?: string): unknown; hasAccountCapability(capability: string, accountId?: string): boolean; /** FileNode naming rules the server publishes (Stalwart 0.16.6+), if any. */ getFileNameRules?(accountId?: string): FileNameRules | null; diff --git a/stores/__tests__/email-store-archive-auto-create.test.ts b/stores/__tests__/email-store-archive-auto-create.test.ts index 9e4f20e47..3318e36d9 100644 --- a/stores/__tests__/email-store-archive-auto-create.test.ts +++ b/stores/__tests__/email-store-archive-auto-create.test.ts @@ -39,6 +39,72 @@ function makeClient(): IJMAPClient & { createMailbox: ReturnType } } describe('ensureArchiveMailbox', () => { + it('uses an existing owner Archive when top-level creation is prohibited', async () => { + const client = { ...makeClient(), getAccountCapability: vi.fn(() => ({ mayCreateTopLevelMailbox: false })) }; + const refresh = vi.fn(); + + const archive = await ensureArchiveMailbox({ + client, mailboxes: [ownArchive, sharedInbox, sharedArchive], + selectedMailboxId: sharedInbox.id, refresh, + }); + + expect(archive).toBe(sharedArchive); + expect(client.getAccountCapability).not.toHaveBeenCalled(); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(refresh).not.toHaveBeenCalled(); + }); + + it.each(['selected owner', 'explicit owner'] as const)('does not create a missing Archive for a prohibited %s', async scope => { + const client = { + ...makeClient(), + getAccountCapability: vi.fn((_capability: string, owner?: string) => ({ + mayCreateTopLevelMailbox: owner !== 'owner-x', + })), + }; + const refresh = vi.fn(async () => [ownArchive, sharedInbox, sharedArchive]); + + await expect(ensureArchiveMailbox({ + client, mailboxes: [ownArchive, sharedInbox], + selectedMailboxId: scope === 'selected owner' ? sharedInbox.id : ownInbox.id, + accountId: scope === 'explicit owner' ? 'owner-x' : undefined, refresh, + })).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(client.getAccountCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', 'owner-x'); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(refresh).not.toHaveBeenCalled(); + }); + + it.each([ + { capability: { mayCreateTopLevelMailbox: true }, label: 'allowed creation' }, + { capability: {}, label: 'absent flag' }, + { capability: undefined, label: 'absent mail capability' }, + ])('preserves Archive creation with $label', async ({ capability }) => { + const client = { ...makeClient(), getAccountCapability: vi.fn(() => capability) }; + const refresh = vi.fn(async () => [ownArchive, sharedInbox, sharedArchive]); + + const archive = await ensureArchiveMailbox({ + client, mailboxes: [ownArchive, sharedInbox], selectedMailboxId: sharedInbox.id, refresh, + }); + + expect(archive).toBe(sharedArchive); + expect(client.getAccountCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', 'owner-x'); + expect(client.createMailbox).toHaveBeenCalledWith('Archive', undefined, 'owner-x', { role: 'archive' }); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it('checks the client’s primary account when the archive owner is implicit', async () => { + const client = { ...makeClient(), getAccountCapability: vi.fn(() => ({ mayCreateTopLevelMailbox: false })) }; + const refresh = vi.fn(async () => [ownInbox, ownArchive]); + + await expect(ensureArchiveMailbox({ + client, mailboxes: [ownInbox], selectedMailboxId: ownInbox.id, refresh, + })).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(client.getAccountCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', undefined); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(refresh).not.toHaveBeenCalled(); + }); + it('returns the existing archive folder without creating one', async () => { const client = makeClient(); const refresh = vi.fn(); diff --git a/stores/__tests__/email-store-bulk-archive.test.ts b/stores/__tests__/email-store-bulk-archive.test.ts index bddcb1b7a..93a2df635 100644 --- a/stores/__tests__/email-store-bulk-archive.test.ts +++ b/stores/__tests__/email-store-bulk-archive.test.ts @@ -103,6 +103,112 @@ describe('bulk archive ownership and reconciliation', () => { expect(refresh).toHaveBeenCalledOnce(); }); + it('skips prohibited owner Archive creation while reconciling the valid primary group', async () => { + folders.shared = [mailbox('shared', 'inbox', true)]; + const getAccountCapability = vi.fn((_capability: string, owner?: string) => ({ + mayCreateTopLevelMailbox: owner !== 'shared', + })); + Object.assign(client, { getAccountCapability }); + const failed = useEmailStore.getState().emails[1]; + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(getAccountCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', 'shared'); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(client.batchArchiveEmails).toHaveBeenCalledTimes(1); + expect(vi.mocked(client.batchArchiveEmails).mock.calls[0][4]).toBe('primary'); + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(refresh).toHaveBeenCalledOnce(); + }); + + it.each(['single', 'year', 'month'] as const)('uses an existing Archive in %s mode despite prohibited top-level creation', async mode => { + const getAccountCapability = vi.fn(() => ({ mayCreateTopLevelMailbox: false })); + Object.assign(client, { getAccountCapability }); + folders.shared[1].myRights.mayCreateChild = true; + useSettingsStore.setState({ archiveMode: mode }); + + await useEmailStore.getState().batchArchive(client); + + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(getAccountCapability).not.toHaveBeenCalled(); + expect(client.batchArchiveEmails).toHaveBeenCalledWith( + [{ id: 'shared-email', receivedAt: expect.any(String) }], 'archive', mode, + expect.arrayContaining([expect.objectContaining({ id: 'archive', myRights: expect.objectContaining({ mayCreateChild: true }) })]), 'shared', + ); + expect(useEmailStore.getState().selectedEmailKeys.size).toBe(0); + }); + + it('uses the reaching client’s capability for equal owner IDs on different logins', async () => { + const otherFolders = { primary: [mailbox('primary', 'inbox')] }; + const otherClient = makeClient(otherFolders); + const deniedCapability = vi.fn(() => ({ mayCreateTopLevelMailbox: false })); + const allowedCapability = vi.fn(() => ({ mayCreateTopLevelMailbox: true })); + Object.assign(client, { getAccountCapability: deniedCapability }); + Object.assign(otherClient, { getAccountCapability: allowedCapability }); + folders.primary = [mailbox('primary', 'inbox')]; + vi.mocked(otherClient.createMailbox).mockImplementation(async () => { + const archive = { ...mailbox('primary', 'archive'), id: 'other-archive' }; + otherFolders.primary.push(archive); + return archive; + }); + useAuthStore.setState({ + getClientForAccount: (id: string) => (id === 'login-a' ? client : id === 'login-b' ? otherClient : undefined) as never, + }); + const failed = email('failed-email', 'primary'); + useEmailStore.setState({ + emails: [failed, email('other-email', 'primary', 'login-b')], + selectedEmailKeys: new Set([emailKeyFor(failed), emailKeyFor(email('other-email', 'primary', 'login-b'))]), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(deniedCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', 'primary'); + expect(allowedCapability).toHaveBeenCalledWith('urn:ietf:params:jmap:mail', 'primary'); + expect(client.createMailbox).not.toHaveBeenCalled(); + expect(client.batchArchiveEmails).not.toHaveBeenCalled(); + expect(otherClient.createMailbox).toHaveBeenCalledWith('Archive', undefined, 'primary', { role: 'archive' }); + expect(vi.mocked(otherClient.batchArchiveEmails).mock.calls[0][1]).toBe('other-archive'); + expect(useEmailStore.getState().emails).toEqual([failed]); + expect([...useEmailStore.getState().selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + }); + + it.each(['shared owner', 'different login'] as const)('retains a prohibited namesake’s selection, viewer, and thread after partial success: %s', async source => { + const archived = email('same-email-id', 'primary'); + const failed = source === 'shared owner' + ? email('same-email-id', 'shared') : email('same-email-id', 'primary', 'login-b'); + const deniedClient = source === 'shared owner' ? client : makeClient({ primary: [mailbox('primary', 'inbox')] }); + const getAccountCapability = vi.fn(() => ({ mayCreateTopLevelMailbox: false })); + Object.assign(deniedClient, { getAccountCapability }); + if (source === 'shared owner') folders.shared = [mailbox('shared', 'inbox', true)]; + useAuthStore.setState({ + getClientForAccount: (id: string) => (id === 'login-a' ? client : id === 'login-b' ? deniedClient : undefined) as never, + }); + useEmailStore.setState({ + emails: [archived, failed], selectedEmail: failed, + selectedEmailKeys: new Set([emailKeyFor(archived), emailKeyFor(failed)]), + threadEmailsCache: new Map([[threadKeyFor(archived), [archived]], [threadKeyFor(failed), [failed]]]), + expandedThreadIds: new Set([threadKeyFor(archived), threadKeyFor(failed)]), + }); + + await expect(useEmailStore.getState().batchArchive(client)).rejects.toBeInstanceOf(ArchiveMailboxNotFoundError); + + expect(getAccountCapability).toHaveBeenCalledExactlyOnceWith('urn:ietf:params:jmap:mail', failed.sourceAccountId); + expect(deniedClient.createMailbox).not.toHaveBeenCalled(); + expect(client.batchArchiveEmails).toHaveBeenCalledExactlyOnceWith( + [{ id: archived.id, receivedAt: archived.receivedAt }], 'primary-archive', 'single', expect.any(Array), 'primary', + ); + if (source === 'different login') expect(deniedClient.batchArchiveEmails).not.toHaveBeenCalled(); + const state = useEmailStore.getState(); + expect(state.emails).toEqual([failed]); + expect([...state.selectedEmailKeys]).toEqual([emailKeyFor(failed)]); + expect(state.selectedEmail).toBe(failed); + expect([...state.threadEmailsCache]).toEqual([[threadKeyFor(failed), [failed]]]); + expect([...state.expandedThreadIds]).toEqual([threadKeyFor(failed)]); + expect(state.error).toMatch(/archive mailbox not found/i); + expect(refresh).toHaveBeenCalledOnce(); + }); + it.each(['single', 'year', 'month'] as const)('creates each missing owner’s Archive independently in %s mode', async mode => { folders.primary = [mailbox('primary', 'inbox')]; folders.shared = [mailbox('shared', 'inbox', true)]; diff --git a/stores/email-store.ts b/stores/email-store.ts index 9a07087bc..3ae02e603 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -911,6 +911,11 @@ export async function ensureArchiveMailbox(opts: { const viewMailbox = opts.mailboxes.find(m => m.id === opts.selectedMailboxId); const scopeId = opts.accountId ?? (viewMailbox?.isShared ? viewMailbox.accountId : undefined); + const mailCapability = opts.client.getAccountCapability?.('urn:ietf:params:jmap:mail', scopeId) as + { mayCreateTopLevelMailbox?: boolean } | undefined; + // Only an explicit account-level denial prevents creating the root Archive. + // Existing Archives (and their year/month child folders) are unaffected. + if (mailCapability?.mayCreateTopLevelMailbox === false) throw new ArchiveMailboxNotFoundError(); // null: a plugin refused the new folder (and said why). if (!(await createMailboxWithHooks(opts.client, 'Archive', undefined, scopeId, { role: 'archive' }))) return null; From db38ad320ef727f8a74ef08fe59c28005497c247 Mon Sep 17 00:00:00 2001 From: lucamzanon Date: Fri, 16 Oct 2026 05:46:46 +0200 Subject: [PATCH 008/238] feat: optionally keep mailbox passwords in the account list backup Part 2 of 3 of the account archive agreed in #1198. When the admin turns on "Account List Backup: Passwords" (off by default), saving the list offers to include the passwords of the accounts signed in here with a plain password. They are encrypted in the browser together with the list. On restore, those accounts are signed in to in the background, one by one, without leaving the active account; a refused password leaves the account waiting for a sign-in by hand, as before. OAuth and TOTP accounts are saved without a password. --- app/(main)/admin/_tabs/policy.tsx | 1 + .../settings/account-archive-settings.tsx | 37 ++++++++-- lib/__tests__/account-archive-client.test.ts | 73 +++++++++++++++++++ lib/__tests__/account-archive.test.ts | 16 +++- lib/account-archive-client.ts | 40 ++++++++-- lib/account-archive.ts | 17 +++-- lib/admin/types.ts | 3 + lib/jmap/client.ts | 9 +++ lib/lite-config.ts | 1 + locales/ar/common.json | 7 ++ locales/ca/common.json | 7 ++ locales/cs/common.json | 7 ++ locales/da/common.json | 7 ++ locales/de/common.json | 7 ++ locales/en/common.json | 7 ++ locales/es/common.json | 7 ++ locales/fa/common.json | 7 ++ locales/fr/common.json | 7 ++ locales/he/common.json | 7 ++ locales/hu/common.json | 7 ++ locales/it/common.json | 7 ++ locales/ja/common.json | 7 ++ locales/ko/common.json | 7 ++ locales/lv/common.json | 7 ++ locales/mn/common.json | 7 ++ locales/nb/common.json | 7 ++ locales/nl/common.json | 7 ++ locales/pl/common.json | 7 ++ locales/pt/common.json | 7 ++ locales/ro/common.json | 7 ++ locales/ru/common.json | 7 ++ locales/sk/common.json | 7 ++ locales/tr/common.json | 7 ++ locales/uk/common.json | 7 ++ locales/zh-TW/common.json | 7 ++ locales/zh/common.json | 7 ++ .../auth-store-archive-restore.test.ts | 24 +++++- stores/auth-store.ts | 37 ++++++++++ 38 files changed, 424 insertions(+), 23 deletions(-) create mode 100644 lib/__tests__/account-archive-client.test.ts diff --git a/app/(main)/admin/_tabs/policy.tsx b/app/(main)/admin/_tabs/policy.tsx index e42478bac..244bad7e9 100644 --- a/app/(main)/admin/_tabs/policy.tsx +++ b/app/(main)/admin/_tabs/policy.tsx @@ -39,6 +39,7 @@ const FEATURE_GATE_LABELS: Partial s.username); const serverUrl = useAuthStore(s => s.serverUrl); + const passwordsAllowed = usePolicyStore(s => s.isFeatureEnabled('accountArchivePasswordsEnabled')); + const { rememberMeEnabled } = useConfig(); const [saved, setSaved] = useState(null); const [mode, setMode] = useState<'save' | 'restore' | null>(null); const [password, setPassword] = useState(''); const [confirmation, setConfirmation] = useState(''); + const [includePasswords, setIncludePasswords] = useState(false); const [busy, setBusy] = useState(false); const [message, setMessage] = useState<{ error: boolean; text: string } | null>(null); const owner: ArchiveOwner | null = username && serverUrl ? { username, serverUrl } : null; @@ -39,7 +44,7 @@ export function AccountArchiveSettings() { if (!owner) return null; const open = (next: 'save' | 'restore' | null) => { - setMode(next); setPassword(''); setConfirmation(''); setMessage(null); + setMode(next); setPassword(''); setConfirmation(''); setIncludePasswords(false); setMessage(null); }; const run = async (action: () => Promise) => { setBusy(true); setMessage(null); @@ -56,16 +61,22 @@ export function AccountArchiveSettings() { const save = () => run(async () => { if (password !== confirmation) throw new Error('mismatch'); - const accounts = collectAccounts(); + const accounts = collectAccounts(passwordsAllowed && includePasswords); await putArchive(owner, await encryptArchive(owner, accounts, password)); setSaved(true); - return t('saved', { count: accounts.length }); + const withPassword = accounts.filter(a => a.password).length; + return [t('saved', { count: accounts.length }), withPassword ? t('saved_passwords', { count: withPassword }) : ''].join(' ').trim(); }); const restore = () => run(async () => { const envelope = await fetchArchive(owner); if (!envelope) { setSaved(false); throw new Error('storage_failed'); } - const result = restoreAccounts(await decryptArchive(owner, envelope, password)); - return [t('restored', result), result.skipped ? t('skipped', { count: result.skipped }) : ''].join(' ').trim(); + const result = await restoreArchive(await decryptArchive(owner, envelope, password), rememberMeEnabled); + return [ + t(result.waiting ? 'restored' : 'restored_signed_in', result), + result.signedIn ? t('signed_in', { count: result.signedIn }) : '', + result.signInFailed ? t('sign_in_failed', { count: result.signInFailed }) : '', + result.skipped ? t('skipped', { count: result.skipped }) : '', + ].join(' ').trim(); }); const remove = () => { if (!window.confirm(t('delete_confirm'))) return; @@ -73,7 +84,7 @@ export function AccountArchiveSettings() { }; return ( - +

{saved === null ? '…' : t(saved ? 'status_saved' : 'status_none', { account: toUnicodeEmail(owner.username) })}

@@ -105,6 +116,18 @@ export function AccountArchiveSettings() { id={`${id}-confirm`} type="password" value={confirmation} required autoComplete="new-password" onChange={e => setConfirmation(e.target.value)} /> + {passwordsAllowed && ( +
+ +

{t('include_passwords_hint')}

+
+ )} )}
diff --git a/lib/__tests__/account-archive-client.test.ts b/lib/__tests__/account-archive-client.test.ts new file mode 100644 index 000000000..f0f0d87dd --- /dev/null +++ b/lib/__tests__/account-archive-client.test.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const auth = vi.hoisted(() => ({ + clients: new Map string | null }>(), + signIn: vi.fn(), +})); + +vi.mock('@/stores/auth-store', () => ({ + useAuthStore: { + getState: () => ({ + getClientForAccount: (id: string) => auth.clients.get(id), + signInRestoredAccount: auth.signIn, + }), + }, +})); + +import { collectAccounts, restoreArchive } from '@/lib/account-archive-client'; +import { generateAccountId } from '@/lib/account-utils'; +import { useAccountStore } from '@/stores/account-store'; + +const server = 'https://mail.example.com'; +const add = (username: string, authMode: 'basic' | 'oauth') => useAccountStore.getState().addAccount({ + username, serverUrl: server, authMode, rememberMe: true, label: username, displayName: username, email: username, + lastLoginAt: 1, isConnected: true, hasError: false, isDefault: false, +}); + +beforeEach(() => { + useAccountStore.setState({ accounts: [], defaultAccountId: null }); + auth.clients.clear(); + auth.signIn.mockReset(); +}); + +describe('collectAccounts', () => { + it('leaves passwords out unless asked', () => { + const id = add('a@example.com', 'basic'); + auth.clients.set(id, { getBasicPassword: () => 'secret-a' }); + expect(collectAccounts()[0]).not.toHaveProperty('password'); + expect(collectAccounts(true)[0].password).toBe('secret-a'); + }); + + it('takes a password only from a signed-in Basic account', () => { + const basic = add('a@example.com', 'basic'); + const oauth = add('b@example.com', 'oauth'); + add('c@example.com', 'basic'); // not signed in here + auth.clients.set(basic, { getBasicPassword: () => null }); // TOTP or bearer + auth.clients.set(oauth, { getBasicPassword: () => 'never-read' }); + expect(collectAccounts(true).map(a => a.password)).toEqual([undefined, undefined, undefined]); + }); +}); + +describe('restoreArchive', () => { + const entry = (username: string, password?: string) => ({ username, serverUrl: server, label: username, avatarColor: '#2563eb', password }); + + it('signs in to the accounts saved with a password and leaves the others waiting', async () => { + auth.signIn.mockImplementation(async (id: string, password: string) => { + if (password !== 'right') return false; + useAccountStore.getState().updateAccount(id, { awaitingSignIn: false }); + return true; + }); + const result = await restoreArchive([entry('a@example.com', 'right'), entry('b@example.com', 'stale'), entry('c@example.com')], true); + expect(auth.signIn).toHaveBeenCalledTimes(2); + expect(auth.signIn).toHaveBeenCalledWith(generateAccountId('a@example.com', server), 'right', true); + expect(result).toMatchObject({ added: 3, signedIn: 1, signInFailed: 1, waiting: 2 }); + }); + + it('does not sign in again to an account already connected here', async () => { + const id = add('a@example.com', 'basic'); + auth.clients.set(id, { getBasicPassword: () => 'right' }); + const result = await restoreArchive([entry('a@example.com', 'right')], true); + expect(auth.signIn).not.toHaveBeenCalled(); + expect(result).toMatchObject({ updated: 1, signedIn: 0, waiting: 0 }); + }); +}); diff --git a/lib/__tests__/account-archive.test.ts b/lib/__tests__/account-archive.test.ts index 2c5bc6048..c7dba9e78 100644 --- a/lib/__tests__/account-archive.test.ts +++ b/lib/__tests__/account-archive.test.ts @@ -38,12 +38,20 @@ describe('account archive encryption', () => { await expect(encryptArchive(owner, accounts, 'short')).rejects.toThrow('password_length'); }); - it('never carries a password or any other extra field', async () => { - const withSecrets = accounts.map(a => ({ ...a, password: 'mailbox-secret', token: 't' })); + it('carries a mailbox password when given one, and no other extra field', async () => { + const withSecrets = [{ ...accounts[0], password: 'mailbox-secret', token: 't' }, { ...accounts[1], token: 't' }]; const envelope = await encryptArchive(owner, withSecrets, password); + expect(JSON.stringify(envelope)).not.toContain('mailbox-secret'); const restored = await decryptArchive(owner, envelope, password); - expect(JSON.stringify(restored)).not.toContain('mailbox-secret'); - expect(Object.keys(restored[0]).sort()).toEqual(['avatarColor', 'label', 'serverUrl', 'username']); + expect(restored[0].password).toBe('mailbox-secret'); + expect(Object.keys(restored[0]).sort()).toEqual(['avatarColor', 'label', 'password', 'serverUrl', 'username']); + expect(Object.keys(restored[1]).sort()).toEqual(['avatarColor', 'label', 'serverUrl', 'username']); + }); + + it('rejects a password that is empty, too long or not a string', () => { + for (const bad of ['', 'x'.repeat(1025), 42]) { + expect(() => parseArchivedAccounts([{ ...accounts[0], password: bad as string }])).toThrow('invalid_archive'); + } }); it('rejects malformed lists and envelopes', async () => { diff --git a/lib/account-archive-client.ts b/lib/account-archive-client.ts index 2ca00f455..3eb83c826 100644 --- a/lib/account-archive-client.ts +++ b/lib/account-archive-client.ts @@ -2,6 +2,7 @@ import { apiFetch } from '@/lib/browser-navigation'; import { IS_LITE } from '@/lib/lite'; import { generateAccountId, getMaxAccounts } from '@/lib/account-utils'; import { useAccountStore } from '@/stores/account-store'; +import { useAuthStore } from '@/stores/auth-store'; import type { ArchiveEnvelope, ArchiveOwner, ArchivedAccount } from './account-archive'; async function request(owner: ArchiveOwner, init: RequestInit = {}): Promise<{ envelope?: ArchiveEnvelope | null }> { @@ -29,11 +30,19 @@ export async function removeArchive(owner: ArchiveOwner): Promise { await request(owner, { method: 'DELETE' }); } -/** This browser's accounts as the archive keeps them: no credentials of any kind. */ -export function collectAccounts(): ArchivedAccount[] { - return useAccountStore.getState().accounts.map(a => ({ - username: a.username, serverUrl: a.serverUrl, label: a.label, avatarColor: a.avatarColor, - })); +/** + * This browser's accounts as the archive keeps them. With `includePasswords`, + * an account signed in here with a plain password carries it; tokens and + * accounts not signed in carry nothing. + */ +export function collectAccounts(includePasswords = false): ArchivedAccount[] { + const auth = useAuthStore.getState(); + return useAccountStore.getState().accounts.map(a => { + const entry: ArchivedAccount = { username: a.username, serverUrl: a.serverUrl, label: a.label, avatarColor: a.avatarColor }; + const password = includePasswords && a.authMode === 'basic' ? auth.getClientForAccount(a.id)?.getBasicPassword() : null; + if (password) entry.password = password; + return entry; + }); } /** @@ -61,3 +70,24 @@ export function restoreAccounts(archived: ArchivedAccount[]): { added: number; u } return { added, updated, skipped }; } + +/** + * Restores the list, then signs in one by one to the accounts saved with a + * password that are not signed in here yet. An account whose password no + * longer works keeps waiting for a sign-in by hand. + */ +export async function restoreArchive(archived: ArchivedAccount[], rememberMe: boolean) { + const result = restoreAccounts(archived); + let signedIn = 0, signInFailed = 0; + for (const entry of archived) { + if (!entry.password) continue; + const id = generateAccountId(entry.username, entry.serverUrl); + const account = useAccountStore.getState().getAccountById(id); + if (!account || account.authMode !== 'basic' || useAuthStore.getState().getClientForAccount(id)) continue; + if (await useAuthStore.getState().signInRestoredAccount(id, entry.password, rememberMe)) signedIn++; + else signInFailed++; + } + const waiting = archived.filter(e => useAccountStore.getState() + .getAccountById(generateAccountId(e.username, e.serverUrl))?.awaitingSignIn).length; + return { ...result, signedIn, signInFailed, waiting }; +} diff --git a/lib/account-archive.ts b/lib/account-archive.ts index fa64a505f..7f7fa50c1 100644 --- a/lib/account-archive.ts +++ b/lib/account-archive.ts @@ -3,12 +3,12 @@ * can bring the same accounts back. Encryption happens in the browser with a * password the user chooses; the server only ever sees the envelope. * - * The list holds no mailbox passwords: each restored account is signed in to - * by hand. + * Mailbox passwords are optional: an account saved with its password is + * signed in to on restore, one saved without asks for its own sign-in. */ export interface ArchiveOwner { username: string; serverUrl: string } -export interface ArchivedAccount extends ArchiveOwner { label: string; avatarColor: string } +export interface ArchivedAccount extends ArchiveOwner { label: string; avatarColor: string; password?: string } export interface ArchiveEnvelope { version: 1; iterations: typeof ARCHIVE_ITERATIONS; @@ -55,9 +55,14 @@ export function parseArchivedAccounts(value: unknown): ArchivedAccount[] { return value.map((a: ArchivedAccount) => { archiveIdentity(a); if (typeof a.label !== 'string' || a.label.length > 320 - || typeof a.avatarColor !== 'string' || !/^#[0-9a-f]{6}$/i.test(a.avatarColor)) throw new Error('invalid_archive'); - // Rebuilt field by field, so nothing else (a password, say) survives a round trip. - return { username: a.username.trim(), serverUrl: trimUrl(a.serverUrl), label: a.label, avatarColor: a.avatarColor }; + || typeof a.avatarColor !== 'string' || !/^#[0-9a-f]{6}$/i.test(a.avatarColor) + || (a.password !== undefined && (typeof a.password !== 'string' || !a.password || a.password.length > 1024))) { + throw new Error('invalid_archive'); + } + // Rebuilt field by field, so nothing else (a token, say) survives a round trip. + const entry: ArchivedAccount = { username: a.username.trim(), serverUrl: trimUrl(a.serverUrl), label: a.label, avatarColor: a.avatarColor }; + if (a.password !== undefined) entry.password = a.password; + return entry; }); } diff --git a/lib/admin/types.ts b/lib/admin/types.ts index 8e17ce6f0..f7f563567 100644 --- a/lib/admin/types.ts +++ b/lib/admin/types.ts @@ -63,6 +63,8 @@ export interface FeatureGates { unifiedCrossAccountEnabled: boolean; /** Encrypted account list kept on the server, restorable on another device. */ accountArchiveEnabled: boolean; + /** Lets that list carry mailbox passwords, so a restore signs in by itself. */ + accountArchivePasswordsEnabled: boolean; /** Composer "Custom" From: free-text sender address instead of an identity. */ customFromEnabled: boolean; } @@ -93,6 +95,7 @@ export const DEFAULT_FEATURE_GATES: FeatureGates = { crossAllViewEnabled: false, unifiedCrossAccountEnabled: false, accountArchiveEnabled: false, + accountArchivePasswordsEnabled: false, customFromEnabled: true, }; diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index 0ed5c8f82..de12f7707 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -1176,6 +1176,15 @@ export class JMAPClient implements IJMAPClient { return this.authHeader; } + /** + * The password of a plain Basic session, or null for a bearer session and + * for one that appends a TOTP code (that code expires; the password alone + * would not sign in). + */ + getBasicPassword(): string | null { + return this.authHeader.startsWith('Basic ') && !this.onTotpRequired ? this.password : null; + } + getServerUrl(): string { return this.serverUrl; } diff --git a/lib/lite-config.ts b/lib/lite-config.ts index ac1a4ea1b..b3f6ed201 100644 --- a/lib/lite-config.ts +++ b/lib/lite-config.ts @@ -125,6 +125,7 @@ export function applyLitePolicy(raw: unknown): SettingsPolicy { sidebarAppsEnabled: false, // Kept by this app's server, which Lite does not have. accountArchiveEnabled: false, + accountArchivePasswordsEnabled: false, }, forceEnabledPlugins: [], approvedPlugins: [], diff --git a/locales/ar/common.json b/locales/ar/common.json index c4f30806f..fe0cd9dae 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/ca/common.json b/locales/ca/common.json index 9a41a17f5..1cb207ca8 100644 --- a/locales/ca/common.json +++ b/locales/ca/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/cs/common.json b/locales/cs/common.json index 98e481e8d..64187cbd1 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/da/common.json b/locales/da/common.json index 2279fdd31..65616b4e8 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/de/common.json b/locales/de/common.json index ce73a9998..8940eed14 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Sicherung der Kontoliste", "description": "Speichert die Liste der Konten in diesem Browser auf dem Server, verschlüsselt mit einem Passwort, das nur Sie kennen, und stellt sie auf einem anderen Gerät wieder her. Postfachpasswörter werden nicht gespeichert: Sie melden sich bei jedem wiederhergestellten Konto selbst an.", + "description_passwords": "Speichert die Liste der Konten in diesem Browser auf dem Server, verschlüsselt mit einem Passwort, das nur Sie kennen, und stellt sie auf einem anderen Gerät wieder her. Sie können die Postfachpasswörter einschließen, dann melden sich die wiederhergestellten Konten selbst an.", "status_none": "Für {account} ist keine Liste gespeichert.", "status_saved": "Für {account} ist eine Liste gespeichert.", "save": "Liste speichern", @@ -1743,9 +1744,15 @@ "password_hint": "Mindestens 10 Zeichen. Es kann nicht wiederhergestellt werden: Wenn Sie es vergessen, speichern Sie die Liste erneut mit einem neuen.", "restore_hint": "Das Passwort, das beim Speichern der Liste gewählt wurde.", "confirm": "Passwort bestätigen", + "include_passwords": "Postfachpasswörter einschließen", + "include_passwords_hint": "Konten, die hier mit einem Passwort angemeldet sind, melden sich nach einer Wiederherstellung selbst an. Wer das Sicherungspasswort kennt, kommt in jedes Postfach der Liste.", "saved": "Liste gespeichert ({count, plural, one {# Konto} other {# Konten}}).", "restored": "Hinzugefügte Konten: {added}. Bereits vorhandene, aktualisierte Konten: {updated}. Öffnen Sie jedes neue Konto in der Kontoliste, um sich anzumelden.", + "restored_signed_in": "Hinzugefügte Konten: {added}. Bereits vorhandene, aktualisierte Konten: {updated}.", "skipped": "{count, plural, one {# Konto wurde} other {# Konten wurden}} nicht hinzugefügt: Die Höchstzahl an Konten ist erreicht.", + "saved_passwords": "Passwörter für {count, plural, one {# Konto} other {# Konten}} eingeschlossen.", + "signed_in": "Bei {count, plural, one {# Konto} other {# Konten}} mit dem gespeicherten Passwort angemeldet.", + "sign_in_failed": "{count, plural, one {# gespeichertes Passwort wurde} other {# gespeicherte Passwörter wurden}} abgelehnt: Melden Sie sich bei diesen Konten über die Kontoliste an.", "deleted": "Gespeicherte Liste gelöscht.", "errors": { "mismatch": "Die Passwörter stimmen nicht überein.", diff --git a/locales/en/common.json b/locales/en/common.json index fb0d9fd56..acea20da8 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/es/common.json b/locales/es/common.json index 37daa1e88..b76bd7229 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Copia de la lista de cuentas", "description": "Guarda en el servidor la lista de cuentas de este navegador, cifrada con una contraseña que solo tú conoces, y recupérala en otro dispositivo. Las contraseñas de los buzones no se guardan: inicias sesión tú en cada cuenta restaurada.", + "description_passwords": "Guarda en el servidor la lista de cuentas de este navegador, cifrada con una contraseña que solo tú conoces, y recupérala en otro dispositivo. Puedes incluir las contraseñas de los buzones, así las cuentas restauradas inician sesión solas.", "status_none": "No hay ninguna lista guardada para {account}.", "status_saved": "Hay una lista guardada para {account}.", "save": "Guardar lista", @@ -1743,9 +1744,15 @@ "password_hint": "Al menos 10 caracteres. No se puede recuperar: si la olvidas, vuelve a guardar la lista con una nueva.", "restore_hint": "La contraseña elegida al guardar la lista.", "confirm": "Confirmar contraseña", + "include_passwords": "Incluir las contraseñas de los buzones", + "include_passwords_hint": "Las cuentas iniciadas aquí con contraseña iniciarán sesión solas tras restaurar. Quien conozca la contraseña de la copia entra en todos los buzones de la lista.", "saved": "Lista guardada ({count, plural, one {# cuenta} other {# cuentas}}).", "restored": "Cuentas añadidas: {added}. Cuentas ya presentes y actualizadas: {updated}. Abre cada cuenta nueva desde la lista de cuentas para iniciar sesión.", + "restored_signed_in": "Cuentas añadidas: {added}. Cuentas ya presentes y actualizadas: {updated}.", "skipped": "{count, plural, one {# cuenta no se ha añadido} other {# cuentas no se han añadido}}: se ha alcanzado el límite de cuentas.", + "saved_passwords": "Contraseñas incluidas para {count, plural, one {# cuenta} other {# cuentas}}.", + "signed_in": "Sesión iniciada en {count, plural, one {# cuenta} other {# cuentas}} con la contraseña guardada.", + "sign_in_failed": "{count, plural, one {# contraseña guardada fue rechazada} other {# contraseñas guardadas fueron rechazadas}}: inicia sesión en esas cuentas desde la lista de cuentas.", "deleted": "Lista guardada eliminada.", "errors": { "mismatch": "Las contraseñas no coinciden.", diff --git a/locales/fa/common.json b/locales/fa/common.json index 1dd5982d3..b1e779643 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/fr/common.json b/locales/fr/common.json index 630b4d3a8..50134eac2 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Sauvegarde de la liste des comptes", "description": "Conservez sur le serveur la liste des comptes de ce navigateur, chiffrée avec un mot de passe que vous seul connaissez, et retrouvez-la sur un autre appareil. Les mots de passe des boîtes ne sont pas enregistrés : vous vous connectez vous-même à chaque compte restauré.", + "description_passwords": "Conservez sur le serveur la liste des comptes de ce navigateur, chiffrée avec un mot de passe que vous seul connaissez, et retrouvez-la sur un autre appareil. Vous pouvez inclure les mots de passe des boîtes : les comptes restaurés se connectent alors tout seuls.", "status_none": "Aucune liste enregistrée pour {account}.", "status_saved": "Une liste est enregistrée pour {account}.", "save": "Enregistrer la liste", @@ -1743,9 +1744,15 @@ "password_hint": "Au moins 10 caractères. Il ne peut pas être récupéré : si vous l'oubliez, enregistrez à nouveau la liste avec un nouveau mot de passe.", "restore_hint": "Le mot de passe choisi lors de l'enregistrement de la liste.", "confirm": "Confirmer le mot de passe", + "include_passwords": "Inclure les mots de passe des boîtes", + "include_passwords_hint": "Les comptes connectés ici avec un mot de passe se connecteront tout seuls après une restauration. Quiconque connaît le mot de passe de la sauvegarde accède à toutes les boîtes de la liste.", "saved": "Liste enregistrée ({count, plural, one {# compte} other {# comptes}}).", "restored": "Comptes ajoutés : {added}. Comptes déjà présents et mis à jour : {updated}. Ouvrez chaque nouveau compte depuis la liste des comptes pour vous connecter.", + "restored_signed_in": "Comptes ajoutés : {added}. Comptes déjà présents et mis à jour : {updated}.", "skipped": "{count, plural, one {# compte n'a pas été ajouté} other {# comptes n'ont pas été ajoutés}} : la limite de comptes est atteinte.", + "saved_passwords": "Mots de passe inclus pour {count, plural, one {# compte} other {# comptes}}.", + "signed_in": "Connecté à {count, plural, one {# compte} other {# comptes}} avec le mot de passe enregistré.", + "sign_in_failed": "{count, plural, one {# mot de passe enregistré a été refusé} other {# mots de passe enregistrés ont été refusés}} : connectez-vous à ces comptes depuis la liste des comptes.", "deleted": "Liste enregistrée supprimée.", "errors": { "mismatch": "Les mots de passe ne correspondent pas.", diff --git a/locales/he/common.json b/locales/he/common.json index 208910020..cb155a5ca 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -1697,6 +1697,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1708,9 +1709,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/hu/common.json b/locales/hu/common.json index 4dacbd4bc..21f24a033 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/it/common.json b/locales/it/common.json index f37082347..829dc344d 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Backup dell'elenco account", "description": "Conserva sul server l'elenco degli account di questo browser, cifrato con una password che conosci solo tu, e ripristinalo su un altro dispositivo. Le password delle caselle non vengono salvate: accedi tu a ogni account ripristinato.", + "description_passwords": "Conserva sul server l'elenco degli account di questo browser, cifrato con una password che conosci solo tu, e ripristinalo su un altro dispositivo. Puoi includere le password delle caselle, così gli account ripristinati accedono da soli.", "status_none": "Nessun elenco salvato per {account}.", "status_saved": "C'è un elenco salvato per {account}.", "save": "Salva elenco", @@ -1743,9 +1744,15 @@ "password_hint": "Almeno 10 caratteri. Non si può recuperare: se la dimentichi, salva di nuovo l'elenco con una nuova password.", "restore_hint": "La password scelta quando l'elenco è stato salvato.", "confirm": "Conferma password", + "include_passwords": "Includi le password delle caselle", + "include_passwords_hint": "Gli account collegati qui con una password accederanno da soli dopo il ripristino. Chi conosce la password del backup entra in tutte le caselle dell'elenco.", "saved": "Elenco salvato ({count, plural, one {# account} other {# account}}).", "restored": "Account aggiunti: {added}. Account già presenti e aggiornati: {updated}. Apri ogni nuovo account dall'elenco account per accedere.", + "restored_signed_in": "Account aggiunti: {added}. Account già presenti e aggiornati: {updated}.", "skipped": "{count, plural, one {# account non è stato aggiunto} other {# account non sono stati aggiunti}}: è stato raggiunto il limite di account.", + "saved_passwords": "Password incluse per {count, plural, one {# account} other {# account}}.", + "signed_in": "Accesso fatto a {count, plural, one {# account} other {# account}} con la password salvata.", + "sign_in_failed": "{count, plural, one {# password salvata è stata rifiutata} other {# password salvate sono state rifiutate}}: accedi a quegli account dall'elenco account.", "deleted": "Elenco salvato eliminato.", "errors": { "mismatch": "Le password non coincidono.", diff --git a/locales/ja/common.json b/locales/ja/common.json index 0c636cc1a..7e688d18e 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/ko/common.json b/locales/ko/common.json index bb6db3845..a12733bb9 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/lv/common.json b/locales/lv/common.json index b608b9e41..f3837e59b 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/mn/common.json b/locales/mn/common.json index ba5ed7f09..27430db5f 100644 --- a/locales/mn/common.json +++ b/locales/mn/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/nb/common.json b/locales/nb/common.json index 5cf593737..30bd04381 100644 --- a/locales/nb/common.json +++ b/locales/nb/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/nl/common.json b/locales/nl/common.json index e5c51f7ea..e2cd055a5 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/pl/common.json b/locales/pl/common.json index 3f49754eb..0120c8b18 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/pt/common.json b/locales/pt/common.json index 3ab8ec837..a802a14e7 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/ro/common.json b/locales/ro/common.json index 2ce53a3bf..bfe14556f 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/ru/common.json b/locales/ru/common.json index 78d322d13..ae5f22bba 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/sk/common.json b/locales/sk/common.json index 2ac4a6ef2..a79226869 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/tr/common.json b/locales/tr/common.json index 95b31efd0..91988428a 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/uk/common.json b/locales/uk/common.json index 59c8facba..ec6176e29 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index 87b7185aa..e0ed91300 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -1735,6 +1735,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1746,9 +1747,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/locales/zh/common.json b/locales/zh/common.json index 7ba954f26..7be9845dc 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -1732,6 +1732,7 @@ "backup": { "title": "Account list backup", "description": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. Mailbox passwords are not saved: you sign in to each restored account yourself.", + "description_passwords": "Keep the list of accounts in this browser on the server, encrypted with a password only you know, and bring it back on another device. You can include the mailbox passwords, so the restored accounts sign in by themselves.", "status_none": "No list is saved for {account}.", "status_saved": "A list is saved for {account}.", "save": "Save list", @@ -1743,9 +1744,15 @@ "password_hint": "At least 10 characters. It cannot be recovered: if you forget it, save the list again with a new one.", "restore_hint": "The password chosen when the list was saved.", "confirm": "Confirm password", + "include_passwords": "Include mailbox passwords", + "include_passwords_hint": "Accounts signed in here with a password will sign in by themselves after a restore. Anyone who knows the backup password gets into every mailbox in the list.", "saved": "List saved ({count, plural, one {# account} other {# accounts}}).", "restored": "Accounts added: {added}. Accounts already here and updated: {updated}. Open each new account from the account list to sign in.", + "restored_signed_in": "Accounts added: {added}. Accounts already here and updated: {updated}.", "skipped": "{count, plural, one {# account was} other {# accounts were}} not added: the account limit is reached.", + "saved_passwords": "Passwords included for {count, plural, one {# account} other {# accounts}}.", + "signed_in": "Signed in to {count, plural, one {# account} other {# accounts}} with the saved password.", + "sign_in_failed": "{count, plural, one {# saved password was} other {# saved passwords were}} refused: sign in to those accounts from the account list.", "deleted": "Saved list deleted.", "errors": { "mismatch": "The passwords do not match.", diff --git a/stores/__tests__/auth-store-archive-restore.test.ts b/stores/__tests__/auth-store-archive-restore.test.ts index 47f51b689..5c9511b43 100644 --- a/stores/__tests__/auth-store-archive-restore.test.ts +++ b/stores/__tests__/auth-store-archive-restore.test.ts @@ -8,7 +8,7 @@ vi.mock('@/lib/jmap/client', () => { class JMAPClient { constructor(public serverUrl: string, public username: string, public password: string) {} static withBearer() { throw new Error('not used'); } - async connect() {} + async connect() { if (this.password === 'wrong') throw new Error('Authentication failed'); } getSessionUsername() { return this.username; } getUsername() { return this.username; } async getIdentities() { return [{ id: 'a', email: this.username, name: this.username, mayDelete: false }]; } @@ -119,3 +119,25 @@ it('treats a browser left with only accounts awaiting sign-in as signed out, not expect(useAuthStore.getState().error).not.toBe('connection_failed'); expect(useAccountStore.getState().accounts.map(a => a.id)).toEqual(['alice@x.test@mail.x.test']); }); + +it('signs in to a restored account with its saved password without leaving the active one', async () => { + restoreAccounts(archived); + await useAuthStore.getState().checkAuth(); + const alice = 'alice@x.test@mail.x.test'; + const fetchMock = vi.mocked(fetch); + fetchMock.mockClear(); + const active = useAuthStore.getState().activeAccountId; + + expect(await useAuthStore.getState().signInRestoredAccount(alice, 'wrong', true)).toBe(false); + expect(useAccountStore.getState().getAccountById(alice)?.awaitingSignIn).toBe(true); + + expect(await useAuthStore.getState().signInRestoredAccount(alice, 'alice-pw', true)).toBe(true); + expect(useAuthStore.getState().activeAccountId).toBe(active); + expect(useAuthStore.getState().getClientForAccount(alice)).toBeDefined(); + expect(useAccountStore.getState().getAccountById(alice)).toMatchObject({ isConnected: true, rememberMe: true, awaitingSignIn: false }); + const sessionWrite = fetchMock.mock.calls.find(([url, init]) => String(url).includes('/api/auth/session') && init?.method === 'POST'); + expect(JSON.parse(String(sessionWrite?.[1]?.body))).toMatchObject({ username: 'alice@x.test', password: 'alice-pw' }); + + // Already connected: nothing to do. + expect(await useAuthStore.getState().signInRestoredAccount(alice, 'alice-pw', true)).toBe(false); +}); diff --git a/stores/auth-store.ts b/stores/auth-store.ts index e3a78b048..9d6723174 100644 --- a/stores/auth-store.ts +++ b/stores/auth-store.ts @@ -120,6 +120,12 @@ interface AuthState { * session still hold the old one, which the server now refuses. */ updateBasicPassword: (newPassword: string) => Promise; + /** + * Sign in, in the background, to a Basic account restored from the account + * list backup with its password. The active account stays as it is. + * Resolves false when the server refuses the password or cannot be reached. + */ + signInRestoredAccount: (accountId: string, password: string, rememberMe: boolean) => Promise; refreshIdentities: () => Promise; getClientForAccount: (accountId: string) => JMAPClient | undefined; getAllConnectedClients: () => Map; @@ -3031,6 +3037,37 @@ export const useAuthStore = create()( } }, + signInRestoredAccount: async (accountId, password, rememberMe) => { + const accountStore = useAccountStore.getState(); + const account = accountStore.getAccountById(accountId); + if (!account || account.authMode !== 'basic' || clients.has(accountId)) return false; + const { serverUrl, username, cookieSlot } = account; + if (await precheckCredentials(serverUrl, { username, password })) return false; + const client = new JMAPClient(serverUrl, username, password); + try { + await client.connect(); + } catch (err) { + debug.error(`Failed to sign in to restored account ${accountId}:`, err); + client.disconnect(); + return false; + } + // Without a remembered session the next reload would drop the account + // again, like any sign-in made without "Remember me". + await Promise.all([ + rememberMe || IS_LITE ? persistSession(cookieSlot, { serverUrl, username, password }) : null, + syncStalwartAuthContext(serverUrl, username, client.getAuthHeader(), cookieSlot), + ]); + clients.set(accountId, client); + bindClientStatusHandlers(client, set, get, accountId); + accountStore.updateAccount(accountId, { + awaitingSignIn: false, isConnected: true, hasError: false, errorMessage: undefined, + rememberMe, lastLoginAt: Date.now(), + }); + void syncAccountDisplayName(accountId, client); + set((state) => ({ connectedAccountsRevision: state.connectedAccountsRevision + 1 })); + return true; + }, + syncIdentities: () => { const identityState = useIdentityStore.getState(); const identities = identityState.identities; From d6d3683b6501af823725201edf5f3507c25d209f Mon Sep 17 00:00:00 2001 From: Tobias Genannt Date: Fri, 16 Oct 2026 10:08:27 +0200 Subject: [PATCH 009/238] feat(plugins): add Combobox component to UI kit with host floating dropdown portal - Add Combobox component supporting single and multiselect modes, search filtering, and clear button - Implement floating dropdown bridge and host slot portal so dropdown renders cleanly outside plugin iframe - Fix clear button and chip removals to not unexpectedly open the dropdown - Add comprehensive unit tests covering Combobox options, clear behavior, multiselect, and bridge communication --- components/plugins/plugin-iframe-slot.tsx | 219 +++++++- lib/__tests__/plugin-ui-kit.test.tsx | 179 ++++++- lib/plugin-sandbox/host-bridge.ts | 21 +- lib/plugin-sandbox/protocol.ts | 69 ++- lib/plugin-sandbox/runtime.tsx | 17 + lib/plugin-sandbox/ui-kit/components.tsx | 495 +++++++++++++++++- .../ui-kit/floating-dropdown-bridge.ts | 82 +++ lib/plugin-sandbox/ui-kit/index.ts | 2 +- 8 files changed, 1072 insertions(+), 12 deletions(-) create mode 100644 lib/plugin-sandbox/ui-kit/floating-dropdown-bridge.ts diff --git a/components/plugins/plugin-iframe-slot.tsx b/components/plugins/plugin-iframe-slot.tsx index 0eda9b2ec..c571f9a93 100644 --- a/components/plugins/plugin-iframe-slot.tsx +++ b/components/plugins/plugin-iframe-slot.tsx @@ -7,13 +7,17 @@ // to a wrapper
. import React, { useEffect, useMemo, useRef, useState } from 'react'; +import { createPortal } from 'react-dom'; import type { SlotName } from '@/lib/plugin-types'; import { get as getActivePlugin } from '@/lib/plugin-sandbox/registry'; import { createSlotInstance, type SandboxInstance } from '@/lib/plugin-sandbox/host-bridge'; +import type { FloatingDropdownOption } from '@/lib/plugin-sandbox/protocol'; import { slotPropsFor } from '@/lib/plugin-sandbox/permissions'; import { isInlineSlot } from '@/lib/plugin-sandbox/slot-layout'; import { snapshotHostTheme } from '@/lib/plugin-sandbox/host-theme'; import { useThemeStore } from '@/stores/theme-store'; +import { Check } from '@/components/icons'; +import { cn } from '@/lib/utils'; interface Props { pluginId: string; @@ -21,11 +25,23 @@ interface Props { extraProps?: Record; } +interface FloatingDropdownState { + id: string; + rect: { left: number; top: number; bottom: number; width: number; height: number }; + options: FloatingDropdownOption[]; + multiple?: boolean; + selectedValues: string[]; + singleValue?: string; + highlightedIndex: number; + ariaLabel?: string; +} + export function PluginIframeSlot({ pluginId, slot, extraProps }: Props) { const wrapperRef = useRef(null); const instanceRef = useRef(null); const [height, setHeight] = useState(0); const [width, setWidth] = useState(undefined); + const [floatingDropdown, setFloatingDropdown] = useState(null); const inline = isInlineSlot(slot); // null = pending, true/false = decided const [show, setShow] = useState(null); @@ -71,11 +87,41 @@ export function PluginIframeSlot({ pluginId, slot, extraProps }: Props) { setHeight(h); if (w !== undefined) setWidth(w); }, + onFloatingDropdown: (msg) => { + if (msg.type === 'floating-dropdown-open') { + setFloatingDropdown({ + id: msg.id, + rect: msg.rect, + options: msg.options, + multiple: msg.multiple, + selectedValues: msg.selectedValues, + singleValue: msg.singleValue, + highlightedIndex: msg.highlightedIndex, + ariaLabel: msg.ariaLabel, + }); + } else if (msg.type === 'floating-dropdown-update') { + setFloatingDropdown((prev) => { + if (!prev || prev.id !== msg.id) return prev; + return { + ...prev, + ...(msg.rect ? { rect: msg.rect } : {}), + ...(msg.options ? { options: msg.options } : {}), + ...(msg.multiple !== undefined ? { multiple: msg.multiple } : {}), + ...(msg.selectedValues ? { selectedValues: msg.selectedValues } : {}), + ...(msg.singleValue !== undefined ? { singleValue: msg.singleValue } : {}), + ...(msg.highlightedIndex !== undefined ? { highlightedIndex: msg.highlightedIndex } : {}), + }; + }); + } else if (msg.type === 'floating-dropdown-close') { + setFloatingDropdown((prev) => (prev?.id === msg.id ? null : prev)); + } + }, }); instanceRef.current = inst; return () => { try { inst.destroy(); } catch { /* ignore */ } instanceRef.current = null; + setFloatingDropdown(null); }; // We intentionally don't depend on props here - propagating prop // changes happens via postMessage below to avoid iframe churn. @@ -103,12 +149,173 @@ export function PluginIframeSlot({ pluginId, slot, extraProps }: Props) { if (show !== true) return null; return ( + <> +
+ {floatingDropdown && ( + { + instanceRef.current?.sendFloatingDropdownEvent({ + type: 'floating-dropdown-select', + id: floatingDropdown.id, + option, + }); + }} + onHighlight={(index) => { + instanceRef.current?.sendFloatingDropdownEvent({ + type: 'floating-dropdown-highlight', + id: floatingDropdown.id, + index, + }); + }} + onDismiss={() => { + instanceRef.current?.sendFloatingDropdownEvent({ + type: 'floating-dropdown-dismiss', + id: floatingDropdown.id, + }); + setFloatingDropdown(null); + }} + /> + )} + + ); +} + +function FloatingDropdownPortal({ + dropdown, + wrapperEl, + onSelect, + onHighlight, + onDismiss, +}: { + dropdown: FloatingDropdownState; + wrapperEl: HTMLElement | null; + onSelect: (option: FloatingDropdownOption) => void; + onHighlight: (index: number) => void; + onDismiss: () => void; +}) { + const dropdownRef = useRef(null); + const optionRefs = useRef<(HTMLDivElement | null)[]>([]); + + // Compute screen coordinates relative to host viewport + const iframe = wrapperEl?.querySelector('iframe') ?? wrapperEl; + const iframeRect = iframe ? iframe.getBoundingClientRect() : { left: 0, top: 0 }; + const hostLeft = iframeRect.left + dropdown.rect.left; + const hostTop = iframeRect.top + dropdown.rect.top; + const hostBottom = iframeRect.top + dropdown.rect.bottom; + const hostWidth = dropdown.rect.width; + + const spaceBelow = typeof window !== 'undefined' ? window.innerHeight - hostBottom - 8 : 300; + const spaceAbove = hostTop - 8; + const openUpward = spaceBelow < 200 && spaceAbove > spaceBelow; + const maxHeight = Math.max(120, Math.min(240, openUpward ? spaceAbove : spaceBelow)); + const left = typeof window !== 'undefined' ? Math.max(8, Math.min(hostLeft, window.innerWidth - hostWidth - 8)) : hostLeft; + const top = openUpward ? undefined : hostBottom + 4; + const bottom = openUpward && typeof window !== 'undefined' ? window.innerHeight - hostTop + 4 : undefined; + + // Auto-scroll highlighted option into view + useEffect(() => { + const i = dropdown.highlightedIndex; + if (i >= 0 && optionRefs.current[i]) { + optionRefs.current[i]?.scrollIntoView({ block: 'nearest' }); + } + }, [dropdown.highlightedIndex]); + + // Outside click and scroll handling + useEffect(() => { + const onMouseDown = (e: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) { + onDismiss(); + } + }; + const onScroll = (e: Event) => { + if (dropdownRef.current && dropdownRef.current.contains(e.target as Node)) { + return; // Allow scroll inside the dropdown listbox itself + } + onDismiss(); + }; + const onResize = () => onDismiss(); + + document.addEventListener('mousedown', onMouseDown, true); + window.addEventListener('scroll', onScroll, true); + window.addEventListener('resize', onResize); + return () => { + document.removeEventListener('mousedown', onMouseDown, true); + window.removeEventListener('scroll', onScroll, true); + window.removeEventListener('resize', onResize); + }; + }, [onDismiss]); + + if (typeof document === 'undefined') return null; + + return createPortal(
+ ref={dropdownRef} + id={dropdown.id} + role="listbox" + aria-multiselectable={dropdown.multiple || undefined} + aria-label={dropdown.ariaLabel} + style={{ + position: 'fixed', + left: `${left}px`, + top: top !== undefined ? `${top}px` : undefined, + bottom: bottom !== undefined ? `${bottom}px` : undefined, + width: `${hostWidth}px`, + maxHeight: `${maxHeight}px`, + zIndex: 100010, + }} + className="overflow-auto rounded-md border border-border bg-popover text-popover-foreground shadow-lg p-1 focus:outline-none animate-in fade-in-50 zoom-in-95 duration-100" + > + {dropdown.options.length === 0 ? ( +
+ No results +
+ ) : ( + dropdown.options.map((opt, i) => { + const isSelected = dropdown.multiple + ? dropdown.selectedValues.includes(opt.value) + : opt.value === dropdown.singleValue; + const isHighlighted = dropdown.highlightedIndex === i; + return ( +
{ optionRefs.current[i] = el; }} + id={`${dropdown.id}-opt-${i}`} + role="option" + aria-selected={isSelected} + aria-disabled={opt.disabled} + onMouseDown={(e) => { + // Prevent stealing focus from the input in the iframe + e.preventDefault(); + }} + onClick={() => { + if (opt.disabled) return; + onSelect(opt); + }} + onMouseEnter={() => { + onHighlight(i); + }} + className={cn( + 'relative flex cursor-pointer select-none items-center justify-between rounded-sm px-2 py-1.5 text-sm transition-colors', + isHighlighted ? 'bg-accent text-accent-foreground' : 'text-foreground', + isSelected && 'font-medium', + opt.disabled && 'pointer-events-none opacity-50', + )} + > + {opt.label} + {isSelected &&
+ ); + }) + )} +
, + document.body, ); } diff --git a/lib/__tests__/plugin-ui-kit.test.tsx b/lib/__tests__/plugin-ui-kit.test.tsx index 0bd576e43..d8fffdfcc 100644 --- a/lib/__tests__/plugin-ui-kit.test.tsx +++ b/lib/__tests__/plugin-ui-kit.test.tsx @@ -152,7 +152,7 @@ describe('plugin UI kit components', () => { const { makePluginRequire } = await import('../plugin-sandbox/runtime'); const req = makePluginRequire(null); expect(req('@plugin-host/ui')).toBe(kit.pluginUiKit); - expect(kit.KIT_EXPORTS).toEqual(expect.arrayContaining(['Button', 'Input', 'Select', 'Checkbox', 'Field', 'Tabs', 'List', 'ListRow', 'Badge', 'EmptyState', 'PageHeader', 'Spinner', 'DialogButtons', 'InfoBar', 'Chip'])); + expect(kit.KIT_EXPORTS).toEqual(expect.arrayContaining(['Button', 'Input', 'Select', 'Combobox', 'Checkbox', 'Field', 'Tabs', 'List', 'ListRow', 'Badge', 'EmptyState', 'PageHeader', 'Spinner', 'DialogButtons', 'InfoBar', 'Chip'])); expect(() => req('left-pad')).toThrow(/not available/); }); }); @@ -224,6 +224,183 @@ describe('plugin dialog footer', () => { }); }); +describe('Combobox', () => { + const options = [ + { value: 'apple', label: 'Apple' }, + { value: 'banana', label: 'Banana' }, + { value: 'cherry', label: 'Cherry' }, + ]; + + it('renders with placeholder and closed dropdown', () => { + render(); + const input = screen.getByRole('combobox'); + expect(input).toHaveAttribute('placeholder', 'Choose fruit'); + expect(input).toHaveAttribute('aria-expanded', 'false'); + expect(screen.queryByRole('listbox')).toBeNull(); + }); + + it('opens and filters options on input', () => { + render(); + const input = screen.getByRole('combobox'); + fireEvent.focus(input); + fireEvent.change(input, { target: { value: 'ban' } }); + expect(input).toHaveAttribute('aria-expanded', 'true'); + expect(screen.getByRole('listbox')).toBeTruthy(); + expect(screen.getByText('Banana')).toBeTruthy(); + expect(screen.queryByText('Apple')).toBeNull(); + }); + + it('selects option on click', () => { + const onChange = vi.fn(); + render(); + const input = screen.getByRole('combobox'); + fireEvent.click(input); + fireEvent.click(screen.getByText('Cherry')); + expect(onChange).toHaveBeenCalledWith('cherry'); + expect(screen.queryByRole('listbox')).toBeNull(); + }); + + it('navigates with keyboard and selects on Enter', () => { + const onChange = vi.fn(); + render(); + const input = screen.getByRole('combobox'); + fireEvent.keyDown(input, { key: 'ArrowDown' }); // opens dropdown + expect(screen.getByRole('listbox')).toBeTruthy(); + fireEvent.keyDown(input, { key: 'ArrowDown' }); // highlight next + fireEvent.keyDown(input, { key: 'Enter' }); + expect(onChange).toHaveBeenCalled(); + }); + + it('clears selection when clear button is clicked without opening dropdown', () => { + const onChange = vi.fn(); + render(); + const clearBtn = screen.getByLabelText('Clear'); + fireEvent.click(clearBtn); + expect(onChange).toHaveBeenCalledWith(''); + expect(screen.queryByRole('listbox')).toBeNull(); + }); + + it('closes dropdown and clears selection if clear button is clicked while open', () => { + const onChange = vi.fn(); + render(); + const input = screen.getByRole('combobox'); + fireEvent.focus(input); + expect(screen.getByRole('listbox')).toBeTruthy(); + + const clearBtn = screen.getByLabelText('Clear'); + fireEvent.click(clearBtn); + expect(onChange).toHaveBeenCalledWith(''); + expect(screen.queryByRole('listbox')).toBeNull(); + }); + + it('supports multiselect mode with chip rendering, toggling and backspace removal', () => { + const onChange = vi.fn(); + const { rerender } = render( + + ); + expect(screen.getByRole('checkbox', { name: 'Apple' })).toBeTruthy(); + expect(screen.getByLabelText('Remove Apple')).toBeTruthy(); + + // Clicking remove chip does not open dropdown + fireEvent.click(screen.getByLabelText('Remove Apple')); + expect(onChange).toHaveBeenCalledWith([]); + expect(screen.queryByRole('listbox')).toBeNull(); + + // Open dropdown and toggle cherry + const input = screen.getByRole('combobox'); + fireEvent.focus(input); + fireEvent.click(screen.getByText('Cherry')); + expect(onChange).toHaveBeenCalledWith(['apple', 'cherry']); + + // Backspace on empty input removes last value + rerender(); + fireEvent.keyDown(input, { key: 'Backspace' }); + expect(onChange).toHaveBeenCalledWith(['apple']); + }); + + it('associates label when wrapped in Field', () => { + render(); + expect(screen.getByLabelText('Fruit')).toBeInstanceOf(HTMLInputElement); + }); +}); + +describe('Combobox floating dropdown bridge', () => { + const options = [ + { value: 'apple', label: 'Apple' }, + { value: 'banana', label: 'Banana' }, + ]; + + it('delegates dropdown rendering to the host when supported and handles host selection', async () => { + const bridge = await import('../plugin-sandbox/ui-kit/floating-dropdown-bridge'); + const sentMessages: any[] = []; + bridge.initFloatingDropdownBridge( + (msg) => { sentMessages.push(msg); }, + () => true, + ); + + const onChange = vi.fn(); + render(); + const input = screen.getByRole('combobox'); + fireEvent.focus(input); + + // Dropdown listbox is NOT rendered inside the component root + expect(screen.queryByRole('listbox')).toBeNull(); + + // Verify open message was sent to host + expect(sentMessages).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + type: 'floating-dropdown-open', + id: 'fruit-picker-listbox', + options, + }), + ]), + ); + + // Host selects banana + act(() => { + bridge.dispatchFloatingDropdownEvent('fruit-picker-listbox', { + type: 'select', + option: options[1], + }); + }); + + expect(onChange).toHaveBeenCalledWith('banana'); + + // Tear down bridge for following tests + bridge.initFloatingDropdownBridge(null as any, () => false); + }); + + it('supports multiselect toggling and updates host with selected values', async () => { + const bridge = await import('../plugin-sandbox/ui-kit/floating-dropdown-bridge'); + const sentMessages: any[] = []; + bridge.initFloatingDropdownBridge( + (msg) => { sentMessages.push(msg); }, + () => true, + ); + + const onChange = vi.fn(); + render(); + const input = screen.getByRole('combobox'); + fireEvent.focus(input); + + expect(screen.queryByRole('listbox')).toBeNull(); + + // Host selects banana + act(() => { + bridge.dispatchFloatingDropdownEvent('tag-picker-listbox', { + type: 'select', + option: options[1], + }); + }); + + expect(onChange).toHaveBeenCalledWith(['apple', 'banana']); + + // Tear down bridge + bridge.initFloatingDropdownBridge(null as any, () => false); + }); +}); + describe('plugin-kit.css', () => { it('builds the kit\'s utilities without the global Tailwind reset', async () => { const postcss = (await import('postcss')).default; diff --git a/lib/plugin-sandbox/host-bridge.ts b/lib/plugin-sandbox/host-bridge.ts index af22c0832..d75d2286b 100644 --- a/lib/plugin-sandbox/host-bridge.ts +++ b/lib/plugin-sandbox/host-bridge.ts @@ -16,8 +16,12 @@ import { effectiveSettings } from '../plugin-settings'; import { clampSlotHeight, clampSlotWidth, isInlineSlot, MAX_INLINE_SLOT_WIDTH } from './slot-layout'; import type { SandboxToHost, HostToSandbox, InitMsg, InitPayload, StreamChunkMsg, StreamEndMsg, StreamProgressMsg, + FloatingDropdownOpenMsg, FloatingDropdownUpdateMsg, FloatingDropdownCloseMsg, + FloatingDropdownSelectMsg, FloatingDropdownHighlightMsg, FloatingDropdownDismissMsg, } from './protocol'; +export type FloatingDropdownHostMsg = FloatingDropdownOpenMsg | FloatingDropdownUpdateMsg | FloatingDropdownCloseMsg; + // ─── Callback marshalling ──────────────────────────────────── /** @@ -75,6 +79,8 @@ export interface SlotOptions { hostContainer: HTMLElement; /** Called whenever the sandbox reports a new content size (width only for inline slots). */ onResize: (height: number, width?: number) => void; + /** Called whenever the sandbox requests to open/update/close a floating dropdown. */ + onFloatingDropdown?: (msg: FloatingDropdownHostMsg) => void; } export interface InitDoneInfo { @@ -170,6 +176,7 @@ export class SandboxInstance { initPayload: InitPayload, hostContainer: HTMLElement, private slotResizeCb: ((height: number, width?: number) => void) | null, + private slotFloatingDropdownCb?: ((msg: FloatingDropdownHostMsg) => void) | null, ) { this.pluginId = plugin.id; this.mode = initPayload.mode; @@ -360,6 +367,13 @@ export class SandboxInstance { this.slotResizeCb?.(height, width ?? undefined); return; } + + case 'floating-dropdown-open': + case 'floating-dropdown-update': + case 'floating-dropdown-close': { + this.slotFloatingDropdownCb?.(msg); + return; + } } } @@ -445,6 +459,11 @@ export class SandboxInstance { this.send({ type: 'props-update', props: encoded }); } + sendFloatingDropdownEvent(msg: FloatingDropdownSelectMsg | FloatingDropdownHighlightMsg | FloatingDropdownDismissMsg): void { + if (this.destroyed) return; + this.send(msg); + } + destroy(): void { if (this.destroyed) return; this.destroyed = true; @@ -533,5 +552,5 @@ export function createSlotInstance(opts: SlotOptions): SandboxInstance { locale: opts.locale, theme: snapshotHostTheme(), }; - return new SandboxInstance(opts.plugin, payload, opts.hostContainer, opts.onResize); + return new SandboxInstance(opts.plugin, payload, opts.hostContainer, opts.onResize, opts.onFloatingDropdown); } diff --git a/lib/plugin-sandbox/protocol.ts b/lib/plugin-sandbox/protocol.ts index fce78e31c..cd93a04f5 100644 --- a/lib/plugin-sandbox/protocol.ts +++ b/lib/plugin-sandbox/protocol.ts @@ -145,6 +145,48 @@ export interface SlotShouldShowResultMsg { show: boolean; } +export interface FloatingDropdownRect { + left: number; + top: number; + bottom: number; + width: number; + height: number; +} + +export interface FloatingDropdownOption { + value: string; + label: string; + disabled?: boolean; +} + +export interface FloatingDropdownOpenMsg { + type: 'floating-dropdown-open'; + id: string; + rect: FloatingDropdownRect; + options: FloatingDropdownOption[]; + multiple?: boolean; + selectedValues: string[]; + singleValue?: string; + highlightedIndex: number; + ariaLabel?: string; +} + +export interface FloatingDropdownUpdateMsg { + type: 'floating-dropdown-update'; + id: string; + rect?: FloatingDropdownRect; + options?: FloatingDropdownOption[]; + multiple?: boolean; + selectedValues?: string[]; + singleValue?: string; + highlightedIndex?: number; +} + +export interface FloatingDropdownCloseMsg { + type: 'floating-dropdown-close'; + id: string; +} + export type SandboxToHost = | ReadyMsg | InitDoneMsg @@ -153,7 +195,10 @@ export type SandboxToHost = | CallbackInvokeMsg | HookResultMsg | SlotResizeMsg - | SlotShouldShowResultMsg; + | SlotShouldShowResultMsg + | FloatingDropdownOpenMsg + | FloatingDropdownUpdateMsg + | FloatingDropdownCloseMsg; // ─── Host → Sandbox messages ───────────────────────────────── @@ -198,6 +243,23 @@ export interface StreamEndMsg { type: 'stream-end'; streamId: string; error?: st /** Host → sandbox: upload progress of an api.proxy.fetch request. */ export interface StreamProgressMsg { type: 'stream-progress'; streamId: string; loaded: number; total: number; } +export interface FloatingDropdownSelectMsg { + type: 'floating-dropdown-select'; + id: string; + option: FloatingDropdownOption; +} + +export interface FloatingDropdownHighlightMsg { + type: 'floating-dropdown-highlight'; + id: string; + index: number; +} + +export interface FloatingDropdownDismissMsg { + type: 'floating-dropdown-dismiss'; + id: string; +} + export type HostToSandbox = | InitMsg | StreamChunkMsg @@ -210,7 +272,10 @@ export type HostToSandbox = | ThemeChangeMsg | SettingsChangeMsg | PropsUpdateMsg - | SlotShouldShowMsg; + | SlotShouldShowMsg + | FloatingDropdownSelectMsg + | FloatingDropdownHighlightMsg + | FloatingDropdownDismissMsg; // ─── Constants ─────────────────────────────────────────────── diff --git a/lib/plugin-sandbox/runtime.tsx b/lib/plugin-sandbox/runtime.tsx index 80d1641d6..f0a4db389 100644 --- a/lib/plugin-sandbox/runtime.tsx +++ b/lib/plugin-sandbox/runtime.tsx @@ -29,6 +29,7 @@ import type { } from './protocol'; import { themeSnapshotToCSS, type ThemeSnapshot } from './host-theme'; import { pluginUiKit, SlotPropsContext } from './ui-kit'; +import { initFloatingDropdownBridge, dispatchFloatingDropdownEvent } from './ui-kit/floating-dropdown-bridge'; import { interpolate, lookup, textDirection, type LocaleTables } from './plugin-i18n'; import { isInlineSlot, MAX_INLINE_SLOT_WIDTH } from './slot-layout'; import type { @@ -1145,6 +1146,18 @@ function handleHostMessage(ev: MessageEvent): void { case 'stream-progress': try { proxyStreams.get(msg.streamId)?.onProgress?.(msg.loaded, msg.total); } catch { /* plugin's own error */ } break; + + case 'floating-dropdown-select': + dispatchFloatingDropdownEvent(msg.id, { type: 'select', option: msg.option }); + break; + + case 'floating-dropdown-highlight': + dispatchFloatingDropdownEvent(msg.id, { type: 'highlight', index: msg.index }); + break; + + case 'floating-dropdown-dismiss': + dispatchFloatingDropdownEvent(msg.id, { type: 'dismiss' }); + break; } } @@ -1158,6 +1171,10 @@ export function SandboxRuntime(): React.JSX.Element { if (!host) return; parentWindow = host.window; parentOrigin = host.origin; + initFloatingDropdownBridge( + (msg) => sendToHost(msg), + () => !!parentWindow, + ); window.addEventListener('message', handleHostMessage); // Initial ping, targeted at the host origin so it can only land on the // page that framed us. Guard at module scope so React strict mode's diff --git a/lib/plugin-sandbox/ui-kit/components.tsx b/lib/plugin-sandbox/ui-kit/components.tsx index 7fa9f5ce4..dc9b20a8f 100644 --- a/lib/plugin-sandbox/ui-kit/components.tsx +++ b/lib/plugin-sandbox/ui-kit/components.tsx @@ -20,7 +20,14 @@ import { Button as AppButton } from '@/components/ui/button'; import { Input as AppInput } from '@/components/ui/input'; import { getFileIconByName, getFolderIcon } from '@/components/files/file-icons'; import { iconForName } from '@/components/icons/named'; -import { Check, ChevronRight, Loader2, Puzzle, Search, X } from '@/components/icons'; +import { Check, ChevronDown, ChevronRight, ChevronUp, Loader2, Puzzle, Search, X } from '@/components/icons'; +import { + isFloatingDropdownSupported, + openFloatingDropdown, + updateFloatingDropdown, + closeFloatingDropdown, + registerFloatingDropdownListener, +} from './floating-dropdown-bridge'; type Children = { children?: React.ReactNode }; type Tone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'primary'; @@ -160,6 +167,492 @@ export function Select({ options, children, onChange, disabled, block = false, c ); } +export interface KitComboboxOption { + value: string; + label: string; + disabled?: boolean; +} + +export interface KitComboboxProps { + options?: KitComboboxOption[]; + /** Currently selected value (string for single, string[] for multiple). */ + value?: string | string[] | null; + /** Called with the selected value (string for single, string[] for multiple). */ + onChange?: (value: any) => void; + placeholder?: string; + disabled?: boolean; + /** Stretch to the width of its container (forms); settings rows keep it narrow. */ + block?: boolean; + /** Allow selecting multiple options (e.g. for tags). */ + multiple?: boolean; + /** Whether the user can clear the selected value (default: true). */ + clearable?: boolean; + id?: string; + /** Accessible label when not wrapped by Field. */ + ariaLabel?: string; + className?: string; +} + +/** A searchable combobox with keyboard navigation, clear button and multiselect support. */ +export function Combobox({ + options = [], + value, + onChange, + placeholder, + disabled = false, + block = false, + multiple = false, + clearable = true, + id, + ariaLabel, + className, +}: KitComboboxProps) { + const autoId = React.useId(); + const inputId = id ?? autoId; + const listboxId = `${inputId}-listbox`; + + const containerRef = React.useRef(null); + const inputRef = React.useRef(null); + const listRef = React.useRef(null); + const optionRefs = React.useRef<(HTMLDivElement | null)[]>([]); + + const [isOpen, setIsOpen] = React.useState(false); + const [query, setQuery] = React.useState(''); + const [isTyping, setIsTyping] = React.useState(false); + const [highlightedIndex, setHighlightedIndex] = React.useState(-1); + + const selectedValues = React.useMemo(() => { + if (multiple) { + return Array.isArray(value) ? value : value ? [value] : []; + } + return []; + }, [multiple, value]); + + const singleValue = React.useMemo(() => { + if (multiple) return ''; + return typeof value === 'string' ? value : ''; + }, [multiple, value]); + + const selectedOption = React.useMemo(() => { + if (multiple || !singleValue) return null; + return options.find((o) => o.value === singleValue) || null; + }, [multiple, singleValue, options]); + + const selectedOptions = React.useMemo(() => { + if (!multiple) return []; + return options.filter((o) => selectedValues.includes(o.value)); + }, [multiple, options, selectedValues]); + + // Synchronize input query with selected option label when not typing in single-select mode + React.useEffect(() => { + if (!isTyping) { + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOption ? selectedOption.label : ''); + } + } + }, [selectedOption, isTyping, multiple]); + + const filteredOptions = React.useMemo(() => { + if (!isTyping || !query.trim()) return options; + const q = query.trim().toLowerCase(); + return options.filter((o) => o.label.toLowerCase().includes(q)); + }, [options, isTyping, query]); + + // When opening dropdown, pre-highlight the currently selected item or first item + React.useEffect(() => { + if (isOpen) { + if (multiple) { + setHighlightedIndex(filteredOptions.length > 0 ? 0 : -1); + } else { + const idx = filteredOptions.findIndex((o) => o.value === singleValue); + setHighlightedIndex(idx >= 0 ? idx : filteredOptions.length > 0 ? 0 : -1); + } + } else { + setHighlightedIndex(-1); + } + }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps + + // Auto-scroll highlighted option into view + React.useEffect(() => { + if (isOpen && highlightedIndex >= 0 && optionRefs.current[highlightedIndex]) { + const el = optionRefs.current[highlightedIndex]; + if (typeof el?.scrollIntoView === 'function') { + el.scrollIntoView({ block: 'nearest' }); + } + } + }, [isOpen, highlightedIndex]); + + // Close when clicking outside + React.useEffect(() => { + if (!isOpen) return; + const onDocMouseDown = (e: MouseEvent) => { + if (containerRef.current && !containerRef.current.contains(e.target as Node)) { + setIsOpen(false); + setIsTyping(false); + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOption ? selectedOption.label : ''); + } + } + }; + document.addEventListener('mousedown', onDocMouseDown); + return () => document.removeEventListener('mousedown', onDocMouseDown); + }, [isOpen, selectedOption, multiple]); + + const toggleMultipleOption = (opt: KitComboboxOption) => { + if (opt.disabled) return; + const exists = selectedValues.includes(opt.value); + const next = exists ? selectedValues.filter((v) => v !== opt.value) : [...selectedValues, opt.value]; + onChange?.(next); + setQuery(''); + setIsTyping(false); + if (isOpen) { + inputRef.current?.focus(); + } + }; + + const selectOption = (opt: KitComboboxOption) => { + if (opt.disabled) return; + if (multiple) { + toggleMultipleOption(opt); + } else { + onChange?.(opt.value); + setIsOpen(false); + setIsTyping(false); + setQuery(opt.value ? opt.label : ''); + inputRef.current?.focus(); + } + }; + + const isHostFloating = isFloatingDropdownSupported(); + + const getContainerRect = () => { + if (!containerRef.current) return null; + const r = containerRef.current.getBoundingClientRect(); + return { + left: Math.round(r.left), + top: Math.round(r.top), + bottom: Math.round(r.bottom), + width: Math.round(r.width), + height: Math.round(r.height), + }; + }; + + const selectOptionRef = React.useRef(selectOption); + selectOptionRef.current = selectOption; + const selectedOptionRef = React.useRef(selectedOption); + selectedOptionRef.current = selectedOption; + + // When isOpen changes: if host floating dropdown is active, open it on host and register listener + React.useEffect(() => { + if (!isHostFloating) return; + if (isOpen) { + const rect = getContainerRect(); + if (!rect) return; + openFloatingDropdown({ + id: listboxId, + rect, + options: filteredOptions, + multiple, + selectedValues, + singleValue, + highlightedIndex, + ariaLabel: ariaLabel ?? placeholder, + }); + + const unregister = registerFloatingDropdownListener(listboxId, (ev) => { + if (ev.type === 'select') { + selectOptionRef.current(ev.option); + } else if (ev.type === 'highlight') { + setHighlightedIndex(ev.index); + } else if (ev.type === 'dismiss') { + setIsOpen(false); + setIsTyping(false); + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOptionRef.current ? selectedOptionRef.current.label : ''); + } + } + }); + + return () => { + unregister(); + closeFloatingDropdown(listboxId); + }; + } + }, [isOpen, isHostFloating, listboxId]); // eslint-disable-line react-hooks/exhaustive-deps + + // Push updates to host dropdown when options, selection, or highlight changes while open + React.useEffect(() => { + if (!isHostFloating || !isOpen) return; + const rect = getContainerRect(); + updateFloatingDropdown({ + id: listboxId, + ...(rect ? { rect } : {}), + options: filteredOptions, + multiple, + selectedValues, + singleValue, + highlightedIndex, + }); + }, [isHostFloating, isOpen, filteredOptions, selectedValues, singleValue, highlightedIndex, multiple, listboxId]); + + const handleClear = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + if (multiple) { + onChange?.([]); + } else { + onChange?.(''); + } + setQuery(''); + setIsTyping(false); + setIsOpen(false); + }; + + const handleToggle = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + if (disabled) return; + if (isOpen) { + setIsOpen(false); + setIsTyping(false); + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOption ? selectedOption.label : ''); + } + } else { + setIsOpen(true); + setIsTyping(false); + inputRef.current?.focus(); + } + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (disabled) return; + if (e.key === 'ArrowDown') { + e.preventDefault(); + if (!isOpen) { + setIsOpen(true); + setIsTyping(false); + } else if (filteredOptions.length > 0) { + setHighlightedIndex((prev) => (prev + 1 < filteredOptions.length ? prev + 1 : 0)); + } + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + if (!isOpen) { + setIsOpen(true); + setIsTyping(false); + } else if (filteredOptions.length > 0) { + setHighlightedIndex((prev) => (prev - 1 >= 0 ? prev - 1 : filteredOptions.length - 1)); + } + } else if (e.key === 'Enter') { + if (isOpen && highlightedIndex >= 0 && highlightedIndex < filteredOptions.length) { + e.preventDefault(); + selectOption(filteredOptions[highlightedIndex]); + } + } else if (e.key === 'Escape') { + if (isOpen) { + e.preventDefault(); + setIsOpen(false); + setIsTyping(false); + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOption ? selectedOption.label : ''); + } + } + } else if (e.key === 'Tab') { + if (isOpen) { + setIsOpen(false); + setIsTyping(false); + if (multiple) { + setQuery(''); + } else { + setQuery(selectedOption ? selectedOption.label : ''); + } + } + } else if (e.key === 'Backspace' && multiple && query === '' && selectedValues.length > 0) { + const next = selectedValues.slice(0, -1); + onChange?.(next); + } + }; + + const hasValue = multiple ? selectedValues.length > 0 : Boolean(singleValue); + + return ( +
+
{ + if (!disabled) inputRef.current?.focus(); + }} + className={cn( + 'relative w-full rounded-md border border-input bg-background transition-colors duration-150 focus-within:ring-2 focus-within:ring-ring hover:border-muted-foreground', + disabled && 'cursor-not-allowed opacity-50', + multiple ? 'flex flex-wrap items-center gap-1.5 p-1.5 min-h-[38px] pe-14' : 'flex items-center', + )} + > + {multiple && + selectedOptions.map((opt) => ( + + {opt.label} + {!disabled && ( + + )} + + ))} + + = 0 ? `${listboxId}-opt-${highlightedIndex}` : undefined} + value={query} + placeholder={multiple && selectedValues.length > 0 ? '' : placeholder} + onChange={(e) => { + setQuery(e.target.value); + setIsTyping(true); + if (!isOpen) setIsOpen(true); + }} + onFocus={() => { + if (!disabled && !isOpen) { + setIsOpen(true); + setIsTyping(false); + } + }} + onClick={() => { + if (!disabled && !isOpen) { + setIsOpen(true); + setIsTyping(false); + } + }} + onKeyDown={handleKeyDown} + className={cn( + multiple + ? 'flex-1 min-w-[80px] bg-transparent border-0 p-0 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:ring-0' + : cn( + 'w-full rounded-md border-0 bg-transparent ps-3 py-1.5 text-sm text-foreground placeholder:text-muted-foreground outline-none', + clearable && hasValue ? 'pe-14' : 'pe-8', + ), + )} + /> +
+ {clearable && hasValue && !disabled && ( + + )} + +
+
+ + {isOpen && !isHostFloating && ( +
+ {filteredOptions.length === 0 ? ( +
+ No results +
+ ) : ( + filteredOptions.map((opt, i) => { + const isSelected = multiple ? selectedValues.includes(opt.value) : opt.value === singleValue; + const isHighlighted = highlightedIndex === i; + return ( +
{ optionRefs.current[i] = el; }} + id={`${listboxId}-opt-${i}`} + role="option" + aria-selected={isSelected} + aria-disabled={opt.disabled} + onMouseDown={(e) => e.preventDefault()} + onClick={() => selectOption(opt)} + onMouseEnter={() => setHighlightedIndex(i)} + className={cn( + 'relative flex cursor-pointer select-none items-center justify-between rounded-sm px-2 py-1.5 text-sm transition-colors', + isHighlighted ? 'bg-accent text-accent-foreground' : 'text-foreground', + isSelected && 'font-medium', + opt.disabled && 'pointer-events-none opacity-50', + )} + > + {opt.label} + {isSelected &&
+ ); + }) + )} +
+ )} +
+ ); +} + export interface KitCheckboxProps { checked: boolean; onChange?: (checked: boolean) => void; diff --git a/lib/plugin-sandbox/ui-kit/floating-dropdown-bridge.ts b/lib/plugin-sandbox/ui-kit/floating-dropdown-bridge.ts new file mode 100644 index 000000000..ec93d1d76 --- /dev/null +++ b/lib/plugin-sandbox/ui-kit/floating-dropdown-bridge.ts @@ -0,0 +1,82 @@ +// Bridge between Combobox in `@plugin-host/ui` and the sandbox runtime. +// When running inside a host-framed sandbox iframe, Combobox delegates its +// floating dropdown rendering to the host so the dropdown menu floats +// outside the popup modal boundary without causing the popup to scroll. + +import type { + FloatingDropdownOpenMsg, + FloatingDropdownUpdateMsg, + FloatingDropdownOption, + FloatingDropdownRect, +} from '../protocol'; + +export type { FloatingDropdownOption, FloatingDropdownRect }; + +export type FloatingDropdownHostEvent = + | { type: 'select'; option: FloatingDropdownOption } + | { type: 'highlight'; index: number } + | { type: 'dismiss' }; + +type DropdownListener = (event: FloatingDropdownHostEvent) => void; + +let hostSender: ((msg: any) => void) | null = null; +let hostAvailableCheck: (() => boolean) | null = null; +const listeners = new Map>(); + +export function initFloatingDropdownBridge( + sender: (msg: any) => void, + isAvailable: () => boolean, +): void { + hostSender = sender; + hostAvailableCheck = isAvailable; +} + +export function isFloatingDropdownSupported(): boolean { + return hostAvailableCheck ? hostAvailableCheck() : false; +} + +export function openFloatingDropdown(spec: Omit): void { + hostSender?.({ type: 'floating-dropdown-open', ...spec }); +} + +export function updateFloatingDropdown(spec: Omit): void { + hostSender?.({ type: 'floating-dropdown-update', ...spec }); +} + +export function closeFloatingDropdown(id: string): void { + hostSender?.({ type: 'floating-dropdown-close', id }); +} + +export function registerFloatingDropdownListener( + id: string, + listener: DropdownListener, +): () => void { + let set = listeners.get(id); + if (!set) { + set = new Set(); + listeners.set(id, set); + } + set.add(listener); + return () => { + set?.delete(listener); + if (set && set.size === 0) { + listeners.delete(id); + } + }; +} + +export function dispatchFloatingDropdownEvent( + id: string, + event: FloatingDropdownHostEvent, +): void { + const set = listeners.get(id); + if (set) { + for (const listener of set) { + try { + listener(event); + } catch (err) { + console.error('[floating-dropdown] listener error', err); + } + } + } +} diff --git a/lib/plugin-sandbox/ui-kit/index.ts b/lib/plugin-sandbox/ui-kit/index.ts index 7f27e58b8..18dc6492a 100644 --- a/lib/plugin-sandbox/ui-kit/index.ts +++ b/lib/plugin-sandbox/ui-kit/index.ts @@ -10,7 +10,7 @@ export { DialogButtons, SlotPropsContext, useSlotProps } from './dialog-buttons' export type { DialogButtonSpec } from './dialog-buttons'; /** Bumped when a component is added or its props change in a way plugins can see. */ -export const KIT_VERSION = 1; +export const KIT_VERSION = 2; export const pluginUiKit = Object.freeze({ ...components, From ae7f794d2f6f3c6edd14a73b7496f90e8f4e2a12 Mon Sep 17 00:00:00 2001 From: raudraido Date: Fri, 16 Oct 2026 18:19:29 +0300 Subject: [PATCH 010/238] feat: add Estonian (et) locale Complete Estonian translation (every key in en), wired into the locale list, the message loaders, the language switcher (with an Estonian flag drawn in the Twemoji style, since Twemoji's set is not used for it) and the locale-count test. Co-Authored-By: Claude Sonnet 5.5 --- components/providers/intl-provider.tsx | 1 + components/ui/flag-icons.tsx | 6 + components/ui/language-switcher.tsx | 1 + i18n/request.ts | 3 + i18n/routing.ts | 2 +- lib/__tests__/plugin-permission-text.test.ts | 4 +- locales/et/common.json | 4401 ++++++++++++++++++ 7 files changed, 4415 insertions(+), 3 deletions(-) create mode 100644 locales/et/common.json diff --git a/components/providers/intl-provider.tsx b/components/providers/intl-provider.tsx index e02248037..c63250ce1 100644 --- a/components/providers/intl-provider.tsx +++ b/components/providers/intl-provider.tsx @@ -27,6 +27,7 @@ export const LOCALE_LOADERS: Record Promise> = { en: () => Promise.resolve(enMessages as Messages), es: () => import('@/locales/es/common.json').then((m) => m.default), he: () => import('@/locales/he/common.json').then((m) => m.default), + et: () => import('@/locales/et/common.json').then((m) => m.default), fa: () => import('@/locales/fa/common.json').then((m) => m.default), fr: () => import('@/locales/fr/common.json').then((m) => m.default), hu: () => import('@/locales/hu/common.json').then((m) => m.default), diff --git a/components/ui/flag-icons.tsx b/components/ui/flag-icons.tsx index 06c871f32..7c956a1ff 100644 --- a/components/ui/flag-icons.tsx +++ b/components/ui/flag-icons.tsx @@ -126,6 +126,11 @@ function FlagTW(props: FlagProps) { return ; } +// Estonia is not in Twemoji's set used above; drawn here in the same style. +function FlagEE(props: FlagProps) { + return ; +} + export const flagComponents: Record ReactElement> = { ar: FlagAE, ca: FlagCAT, @@ -136,6 +141,7 @@ export const flagComponents: Record ReactElement> en: FlagGB, fa: FlagIR, es: FlagES, + et: FlagEE, fr: FlagFR, he: FlagIL, it: FlagIT, diff --git a/components/ui/language-switcher.tsx b/components/ui/language-switcher.tsx index 5126cb226..4228d9a77 100644 --- a/components/ui/language-switcher.tsx +++ b/components/ui/language-switcher.tsx @@ -17,6 +17,7 @@ const languages = [ { value: 'da', label: 'Dansk' }, { value: 'de', label: 'Deutsch' }, { value: 'en', label: 'English' }, + { value: 'et', label: 'Eesti' }, { value: 'fa', label: 'فارسی' }, { value: 'es', label: 'Español' }, { value: 'fr', label: 'Français' }, diff --git a/i18n/request.ts b/i18n/request.ts index 1e78baeb2..ad4dfd081 100644 --- a/i18n/request.ts +++ b/i18n/request.ts @@ -43,6 +43,9 @@ export default getRequestConfig(async ({ requestLocale }) => { case 'he': messages = (await import('../locales/he/common.json')).default; break; + case 'et': + messages = (await import('../locales/et/common.json')).default; + break; case 'fa': messages = (await import('../locales/fa/common.json')).default; break; diff --git a/i18n/routing.ts b/i18n/routing.ts index 72a034721..54b8ef177 100644 --- a/i18n/routing.ts +++ b/i18n/routing.ts @@ -12,7 +12,7 @@ const localePrefix = (process.env.NEXT_PUBLIC_LOCALE_PREFIX ?? 'never') as | 'always' | 'as-needed'; -const SUPPORTED_LOCALES = ['ar', 'ca', 'cs', 'da', 'de', 'en', 'es', 'fa', 'fr', 'he', 'hu', 'it', 'ja', 'ko', 'lv', 'mn', 'nb', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'tr', 'uk', 'zh', 'zh-TW'] as const; +const SUPPORTED_LOCALES = ['ar', 'ca', 'cs', 'da', 'de', 'en', 'es', 'et', 'fa', 'fr', 'he', 'hu', 'it', 'ja', 'ko', 'lv', 'mn', 'nb', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'tr', 'uk', 'zh', 'zh-TW'] as const; // Fallback locale used when the visitor's Accept-Language header does not // match any supported locale (and no NEXT_LOCALE cookie is set yet). Admins diff --git a/lib/__tests__/plugin-permission-text.test.ts b/lib/__tests__/plugin-permission-text.test.ts index 64aa1ed4c..8e27fdc93 100644 --- a/lib/__tests__/plugin-permission-text.test.ts +++ b/lib/__tests__/plugin-permission-text.test.ts @@ -14,8 +14,8 @@ describe('permission texts', () => { const shown = ALL_PERMISSIONS.filter((p) => !implicit.has(p)); const langs = readdirSync(LOCALES).filter((l) => !l.includes('.')); - it('covers all 27 locales', () => { - expect(langs).toHaveLength(27); + it('covers all 28 locales', () => { + expect(langs).toHaveLength(28); }); it.each(langs)('has a title and body for every permission in %s', (lang) => { diff --git a/locales/et/common.json b/locales/et/common.json new file mode 100644 index 000000000..c0e06d1b8 --- /dev/null +++ b/locales/et/common.json @@ -0,0 +1,4401 @@ +{ + "meta_description": "Minimalistlik JMAP-protokolli kasutav veebipostiklient", + "login": { + "title": "Veebipost", + "username_label": "E-post", + "username_placeholder": "sinu@email.ee", + "password_label": "Parool", + "password_placeholder": "Sisesta oma parool", + "jmap_endpoint_label": "JMAP server", + "jmap_endpoint_placeholder": "https://mail.example.com", + "jmap_endpoint_cors_hint": "Server peab lubama CORS-päringuid sellelt domeenilt.", + "jmap_server_label": "Server", + "jmap_server_auto_picked": "Server valiti automaatselt sinu e-posti domeeni järgi.", + "sign_in": "Logi sisse", + "signing_in": "Sisselogimine...", + "loading": "Laadimine...", + "reconnecting": "Ühendus katkes. Proovin uuesti ühenduda…", + "error": { + "invalid_credentials": "Vale e-posti aadress või parool. Palun kontrolli andmeid ja proovi uuesti.", + "invalid_token": "Server ei võtnud seda juurdepääsuluba vastu. Kontrolli, et see on täielik ning pole aegunud ega tühistatud.", + "connection_failed": "Serveriga ei saanud ühendust. Kontrolli internetiühendust ja proovi uuesti.", + "cors_blocked": "Server on saadaval, kuid blokeerib ristpäritolu (cross-origin) päringuid. Kontrolli oma JMAP serveri CORS-seadeid ja luba see domeen.", + "server_error": "Server on ajutiselt kättesaamatu. Palun proovi hiljem uuesti.", + "generic": "Ilmnes ootamatu viga. Kui probleem püsib, võta ühendust administraatoriga.", + "totp_required": "Vajalik on kaheastmelise autentimise kood. Palun sisesta kood allpool.", + "totp_invalid": "Vale autentimiskood. Palun kontrolli autentimisrakendust ja proovi uuesti.", + "oauth_discovery_failed": "SSO on lubatud, kuid identiteedipakkujaga ei saadud ühendust. Kontrolli OAuth seadistust.", + "token_exchange_failed": "Sinu parool ja kood võeti vastu, aga meiliserver keeldus sellele rakendusele seansi algatamisest. Palu administraatoril kontrollida selle OAuth-kliendi seadeid." + }, + "show_password": "Näita parooli", + "hide_password": "Peida parool", + "totp_toggle": "Mul on kaheastmelise autentimise kood", + "token_toggle": "Logi sisse juurdepääsuloaga", + "password_toggle": "Logi sisse parooliga", + "token_label": "Juurdepääsuluba", + "token_placeholder": "Kleebi oma API-luba", + "token_hint": "Loo oma meiliteenuse seadetes API-luba ja kleebi see siia.", + "remember_me": "Jäta mind meelde", + "config_error": { + "title": "Seadistuse viga", + "fetch_failed": "Rakenduse seadistust ei õnnestunud laadida. Palun proovi hiljem uuesti.", + "server_not_configured": "Postiserverit ei ole seadistatud. Palun võta ühendust administraatoriga." + }, + "remove_from_history": "Eemalda ajaloost", + "totp_label": "Autentimiskood", + "totp_placeholder": "000000", + "session_expired": "Sinu sessioon aegus. Palun logi uuesti sisse.", + "dismiss": "Sulge", + "or": "või", + "sign_in_sso": "Logi sisse SSO-ga", + "add_account_title": "Lisa konto", + "add_account_subtitle": "Logi sisse teise kontoga", + "cancel": "Tühista", + "website": "Veebileht", + "imprint": "Väljaandja andmed", + "privacy_policy": "Privaatsuspoliitika", + "try_demo": "Proovi demot", + "demo_description": "Tutvu näidisandmetega - kontot ei ole vaja", + "demo_launching": "Demo käivitamine...", + "demo_login_button": "Käivita demo", + "demo_tagline": "Proovi täisfunktsionaalset e-posti klienti. Kontot pole vaja.", + "demo_no_signup": "Registreerimist pole vaja - tutvu vabalt näidisandmetega", + "oauth_completing": "Sisselogimise lõpetamine...", + "oauth_error": { + "title": "Autentimine ebaõnnestus", + "invalid_state": "Turvakontroll ebaõnnestus. Palun proovi uuesti sisse logida.", + "missing_params": "Autoriseerimisandmed puuduvad. Palun proovi uuesti sisse logida.", + "token_exchange_failed": "Autentimist ei õnnestunud lõpetada. Palun proovi uuesti.", + "access_denied": "Juurdepääs keelati. Palun võta ühendust administraatoriga.", + "back_to_login": "Tagasi" + } + }, + "sidebar": { + "close": "Sulge", + "compose": "Koosta", + "compose_hint": "Koosta (c)", + "search_placeholder": "Otsi kirju...", + "search_placeholder_hint": "Otsi kirju... (vajuta /)", + "storage": "Talletusruum", + "storage_used": "Kasutatud", + "storage_free": "Vaba", + "storage_total": "Kokku", + "sign_out": "Logi välja", + "sign_out_of": "Logi välja kontolt {account}", + "sign_out_all": "Logi välja kõigist kontodest", + "add_account": "Lisa konto", + "set_as_default": "Määra vaikimisi", + "switch_account": "Vaheta kontot", + "contacts": "Kontaktid", + "calendar": "Kalender", + "settings": "Seaded", + "admin": "Haldus", + "files": "Failid", + "loading_mailboxes": "Postkastide laadimine...", + "push_connected": "Reaalajas uuendused aktiivsed", + "push_disconnected": "Reaalajas uuendused mitteaktiivsed", + "keyboard_shortcuts": "Kiirklahvid", + "theme": { + "light": "Hele režiim", + "dark": "Tume režiim", + "system": "Süsteemi teema" + }, + "language": { + "title": "Keel" + }, + "mailboxes": { + "inbox": "Saabunud", + "sent": "Saadetud", + "drafts": "Mustandid", + "trash": "Prügikast", + "archive": "Arhiiv", + "starred": "Tähega tähistatud", + "all_mail": "Kõik kirjad", + "spam": "Rämpspost", + "important": "Oluline" + }, + "unified_inbox": "Ühine saabunud", + "unified_sent": "Kõik saadetud", + "unified_drafts": "Kõik mustandid", + "unified_trash": "Kõik prügikastid", + "unified_archive": "Kõik arhiivid", + "unified_junk": "Kõik rämpspost", + "all_accounts": "Kõik kontod", + "all_accounts_loading": "Kontode laadimine: {loaded} / {total}", + "unified_mailbox": "Ühine postkast", + "expand": "Laienda", + "collapse": "Ahenda", + "expand_tooltip": "Laienda", + "collapse_tooltip": "Ahenda", + "mobile": { + "search": "Otsi", + "compose": "Koosta", + "go_back": "Mine tagasi", + "toggle_menu": "Ava/sulge menüü" + }, + "clear_search": "Tühjenda otsing", + "vacation_active": "Puhkuse vastaja on aktiivne", + "demo_banner": "Demorežiim", + "demo_reset": "Lähtesta", + "demo_tour": "Tutvustus", + "tags": "Sildid", + "show_all_tags": "Näita kõiki ({count})", + "show_fewer_tags": "Näita vähem", + "folders": "Kaustad", + "show_more": "Rohkem", + "show_fewer": "Vähem", + "shared": "Jagatud", + "shared_account_hidden": "Külgribal peidetud. Lülita see tagasi sisse menüüs Seaded › Paigutus.", + "notifications_muted": "Märguanded vaigistatud", + "mail": "Kirjad", + "nav_label": "Navigeerimine", + "add_app": "Rakendused", + "scheduled": "Ajastatud", + "unified_all_unread": "Kõik lugemata", + "unified_all_starred": "Kõik tähega tähistatud", + "unified_all_mail": "Kõik kirjad", + "remove_account": "Eemalda konto", + "remove_account_confirm": "Eemalda {account} sellest seadmest? Saad selle hiljem uuesti lisada.", + "labels": "Sildid", + "create_label": "Loo uus silt", + "mv_tasks": "Ülesanded", + "mv_side_panel": "Külgpaneel", + "mv_open_full": "Ava täisvaates", + "mv_previous_day": "Eelmine päev", + "mv_next_day": "Järgmine päev", + "mv_add_another_account": "Lisa veel üks konto", + "mv_manage_account": "Halda oma kontot", + "mv_storage_used": "{percent}% mahust {total} kasutatud" + }, + "protocol_handlers": { + "title": "Vaikerakendused", + "description": "Vali, kas e-posti ja kalendri lingid avanevad Bulwarkis. Tehniliselt registreerib Bulwark end mailto: ja webcal: linkide protokollikäsitlejana.", + "unsupported": "See brauser või ühendus ei toeta protokollikäsitleja käsitsi registreerimist. Paigaldatud PWA-d saad siiski kasutada brauseri või operatsioonisüsteemi seadete kaudu.", + "mailto_label": "E-posti lingid", + "mailto_description": "Ava mailto: lingid Bulwarkis koos eeltäidetud kirja koostamise aknaga.", + "protocol_open_mode_label": "Protokollilinkide avamisel", + "protocol_open_mode_description": "Vali, kas Bulwark avab mailto: ja webcal: lingid uuel vahekaardil või kasutab olemasolevat sessiooni. Aktiivse sessiooni valik vajab teavituste õigust, et saaksid vajadusel klõpsata varuteavitusel, mis toob Bulwarki esiplaanile, kui brauser blokeerib fookuse liikumise.", + "protocol_open_mode_active_session": "Ava võimalusel aktiivses sessioonis", + "protocol_open_mode_new_tab": "Ava alati uuel vahekaardil", + "focus_notification_title": "Ava Bulwark", + "focus_notification_body": "Link avati Bulwarkis. Klõpsa, et tuua aken esiplaanile.", + "webcal_label": "Kalendri lingid", + "webcal_description": "Ava webcal: lingid Bulwarkis koos eeltäidetud kalendri tellimise dialoogiga.", + "register_mailto": "Registreeri e-posti rakendus", + "register_webcal": "Registreeri kalendrirakendus", + "mailto_registered": "E-posti käsitleja registreerimist taotleti", + "webcal_registered": "Kalendri käsitleja registreerimist taotleti", + "registration_failed": "Protokollikäsitleja registreerimine ebaõnnestus", + "opening_mailto": "Kirja koostamise akna avamine...", + "opening_webcal": "Kalendri avamine...", + "browser_note": "Sinu brauser või operatsioonisüsteem võib paluda seda kinnitada ning enne vaikerakenduseks valimist võib nõuda Bulwarki paigaldamist.", + "select_account_title": "Vali konto", + "select_mailto_account": "Vali, milline konto peaks selle e-posti lingi avama.", + "select_webcal_account": "Vali, milline konto peaks selle kalendrilingi avama.", + "select_account_note": "See kehtib ainult selle protokollilingi kohta.", + "detail_to": "Kellele", + "detail_subject": "Teema", + "detail_no_subject": "Teema puudub", + "detail_calendar": "Kalender", + "detail_source": "Allikas", + "active_account": "Aktiivne", + "switching_account": "Konto vahetamine..." + }, + "sidebar_apps": { + "modal_title": "Külgriba rakendused", + "add_new": "Lisa rakendus", + "edit_app": "Muuda rakendust", + "name_label": "Nimi", + "name_placeholder": "Minu rakendus", + "name_required": "Nimi on kohustuslik", + "url_label": "URL", + "url_required": "URL on kohustuslik", + "url_invalid": "Sisesta kehtiv http või https URL", + "icon_label": "Ikoon", + "icon_required": "Ikoon on kohustuslik", + "open_mode_label": "Avamisrežiim", + "open_new_tab": "Uus vahekaart", + "open_inline": "Samas aknas", + "cancel": "Tühista", + "add": "Lisa", + "update": "Uuenda", + "delete": "Kustuta", + "delete_confirm_title": "Kustuta rakendus", + "delete_confirm": "Kas oled kindel, et soovid kustutada \"{name}\"?", + "no_apps": "Rakendusi pole veel lisatud", + "no_apps_hint": "Lisa oma külgribale kohandatud rakendusi ja linke", + "managed_title": "Pakutud sinu administraatori poolt", + "managed_description": "Need rakendused on seadistatud kõigile ja neid ei saa muuta.", + "managed_badge": "Hallatud", + "search_icons": "Otsi ikoone...", + "show_popular": "Populaarsed", + "show_all": "Kõik", + "no_icons_found": "Ikoone ei leitud", + "inline_badge": "Samas aknas", + "tab_badge": "Vahekaart", + "show_on_mobile": "Näita mobiilis" + }, + "email_list": { + "no_emails": "Sõnumeid ei leitud", + "no_emails_description": "See postkast on tühi", + "no_search_results": "Tulemusi ei leitud", + "no_search_results_description": "Proovi otsingut või filtreid muuta", + "loading": "Kirjade laadimine...", + "unread": "lugemata", + "to_me": "Minule", + "to_recipients": "{count} saajale", + "and_others": "ja veel {count}", + "draft": "Mustand", + "starred": "Tähega tähistatud", + "pinned": "Kinnitatud", + "replied": "Vastatud", + "forwarded": "Edastatud", + "has_attachment": "Sisaldab manust", + "conversations_range": "{from}–{to, number} / {total, number}", + "conversations_count": "{count} vestlust {total}-st", + "conversations_count_plus": "{count}+ vestlust", + "conversations_count_simple": "{count} vestlust", + "no_conversations": "Vestlusi pole", + "loading_more": "Laen rohkem kirju...", + "no_more_emails": "Rohkem kirju pole laadida", + "batch_actions": { + "select": "Vali kirjad", + "select_all": "Vali kõik", + "selected_messages": "{count, plural, one {1 kiri} other {# kirja}} valitud", + "mark_read": "Märgi loetuks", + "mark_unread": "Märgi lugemata", + "delete": "Kustuta", + "delete_confirm_title": "Kirjade kustutamine", + "delete_confirm_message": "Kas oled kindel, et soovid kustutada {count, plural, one {1 kirja} other {# kirja}}?", + "clear_selection": "Tühista valik" + }, + "permanent_delete": "Kustuta jäädavalt", + "permanent_delete_confirm_title": "Jäädav kustutamine", + "permanent_delete_confirm_message": "See kiri kustutatakse jäädavalt. Seda toimingut ei saa tagasi võtta.", + "permanent_delete_confirm_batch_message": "{count, plural, one {See 1 kiri kustutatakse jäädavalt.} other {Need # kirja kustutatakse jäädavalt.}} Seda toimingut ei saa tagasi võtta.", + "empty_folder": { + "button": "Tühjenda kaust", + "confirm_title": "Kausta tühjendamine", + "confirm_message": "Kõik selle kausta kirjad kustutatakse jäädavalt. Seda toimingut ei saa tagasi võtta.", + "confirm_message_trash": "Kõik selle kausta kirjad teisaldatakse prügikasti.", + "confirm_button": "Tühjenda kaust", + "junk_hint": "Rämpsposti kausta tühjendades saad kõik kirjad jäädavalt eemaldada.", + "trash_hint": "Prügikasti tühjendades saad kõik kirjad jäädavalt eemaldada." + }, + "no_scheduled_emails": "Ajastatud kirju pole", + "no_scheduled_emails_description": "Hiljem saatmiseks ajastatud kirjad kuvatakse siin.", + "scheduled_count": "{count, plural, one {1 ajastatud kiri} other {# ajastatud kirja}}", + "scheduled_actions_hint": "Ajastatud kirju saab ajastatud toimingute alt tühistada, ümber ajastada või muuta.", + "cancel_scheduled_send": "Tühista saatmine", + "reschedule_send": "Ajasta uuesti", + "cancel_and_edit": "Tühista ja muuda", + "cancel_and_compose_again": "Tühista ja koosta uuesti", + "reschedule_prompt": "Sisesta uus kuupäev/kellaaeg, nt 2026-05-04T15:30" + }, + "email_viewer": { + "read_receipt": { + "prompt": "Saatja soovib teadet, kui avad selle kirja.", + "send": "Saada kinnitus", + "ignore": "Eira", + "sent": "Lugemiskinnitus saadetud.", + "send_failed": "Lugemiskinnitust ei õnnestunud saata", + "mdn_subject": "Loetud: {subject}", + "mdn_body": "See on kinnitus kirjale, mille saatsid saajale {recipient}.\n\nMärkus: see kinnitus tõendab vaid, et kiri kuvati saaja arvutis. Ei ole tagatud, et saaja on kirja sisu lugenud või mõistnud." + }, + "no_email_selected": "Kirja pole valitud", + "no_email_description": "Kirja vaatamiseks vali see loetelust", + "no_conversation_selected": "Vestlust pole valitud", + "no_conversation_description": "Vestluse lugemiseks vali see loetelust", + "compose": "Koosta", + "compose_hint": "Koosta uus kiri", + "no_subject": "(Teema puudub)", + "no_body_content": "(Sisu pole saadaval)", + "no_preview_available": "Eelvaadet pole saadaval", + "show_quoted_text": "Näita tsiteeritud teksti", + "hide_quoted_text": "Peida tsiteeritud tekst", + "loading_email": "Kirja laadimine...", + "loading": "Laadimine...", + "reply": "Vasta", + "reply_all": "Vasta kõigile", + "forward": "Saada edasi", + "delete": "Kustuta", + "archive": "Arhiveeri", + "archive_mailbox_not_found": "Arhiivikausta ei leitud - kirja ei saa arhiveerida", + "star": "Tähista tähega", + "unstar": "Eemalda täht", + "mark_unread": "Märgi lugemata", + "mark_read": "Märgi loetuks", + "unread": "Lugemata", + "read": "Loetud", + "spam_short": "Rämpspost", + "not_spam_short": "Pole rämpspost", + "move": "Teisalda", + "print": "Prindi", + "view_source": "Vaata lähtekoodi", + "fullscreen": "Täisekraan", + "exit_fullscreen": "Välju täisekraanist", + "view_in_dark_mode": "Vaata tumedas režiimis", + "view_in_light_mode": "Vaata heledas režiimis", + "export_email": "Ekspordi .eml failina", + "forward_as_attachment": "Saada edasi manusena", + "import_email": "Impordi .eml või .zip", + "keyboard_shortcuts": "Kiirklahvid (?)", + "email_source": "Kirja lähtekood", + "draft_banner": "See kiri on mustand", + "edit_draft": "Muuda", + "copy_source": "Kopeeri lõikelauale", + "source_copied": "Lähtekood kopeeritud lõikelauale", + "attachments": "Manused", + "important": "Oluline", + "download": "Laadi alla", + "download_all": "Laadi kõik alla", + "from": "Saatja", + "to": "Saaja", + "cc": "Koopia", + "bcc": "Pimekoopia", + "date": "Kuupäev", + "subject": "Teema", + "show_details": "Näita üksikasju", + "hide_details": "Peida üksikasjad", + "external_content_warning": "Pildid ja väline sisu on blokeeritud", + "load_external_content": "Laadi pildid", + "trust_sender": "Usalda seda saatjat alati", + "sender_check": { + "unverified_label": "Kontrollimata saatja", + "failed_label": "Saatja kontroll ebaõnnestus", + "unverified": "See kiri väidab, et on saadetud domeenilt {domain}, kuid seda ei kinnita miski. Sellel puudub domeeni {domain} kehtiv allkiri ja see ei tulnud serverist, mille {domain} on volitanud.", + "unverified_sent_from": "See kiri väidab, et on saadetud domeenilt {domain}, kuid see saadeti hostilt {host} ja sellel puudub domeeni {domain} kehtiv allkiri.", + "failed": "See kiri väidab, et on saadetud domeenilt {domain}, kuid see ei läbinud selle domeeni saatjakontrolle. See võib olla võltsitud.", + "failed_sent_from": "See kiri väidab, et on saadetud domeenilt {domain}, kuid see saadeti hostilt {host} ega läbinud domeeni {domain} saatjakontrolle. See võib olla võltsitud.", + "caution": "Ole ettevaatlik linkide, manuste ning paroolide või makseandmete küsimistega." + }, + "back_to_list": "Tagasi loetellu", + "view_contact": "Vaata kontakti", + "message_details": "Kirja üksikasjad", + "more_reply_options": "Rohkem vastamisvõimalusi", + "set_tag": "Määra silt", + "tag": "Silt", + "more_actions": "Rohkem toiminguid", + "previous": "Eelmine", + "next": "Järgmine", + "move_to": "Teisalda kausta...", + "remove_tag": "Eemalda silt", + "tag_filter_placeholder": "Filtreeri silte", + "tag_no_matches": "Sobivaid silte ei leitud", + "more_count": "+{count} veel", + "characters_count": "{count} tähemärki", + "quick_reply_placeholder": "Kirjuta kiirvastus...", + "more_options": "Rohkem valikuid", + "sending": "Saatmine...", + "security_authentication": "Turvalisus ja autentimine", + "technical_details": "Tehnilised üksikasjad", + "message_id_label": "Message-ID:", + "reply_to_label": "Reply-To:", + "delivery_time_label": "Kohaletoimetamise aeg:", + "conversation_part_label": "Osa vestlusest:", + "previous_messages": "{count} eelmine kiri", + "previous_messages_plural": "{count} eelmist kirja", + "time": { + "day": "päev", + "days": "päeva", + "hour": "tund", + "hours": "tundi", + "minute": "minut", + "minutes": "minutit" + }, + "unknown_sender": "Tundmatu", + "recipient_me": "mina", + "recipient_and_others": "{name} ja veel {count}", + "recipient_to_prefix": "Saaja:", + "authentication": { + "title": "Autentimine", + "status": { + "verified": "Kinnitatud", + "warning": "Hoiatus", + "none": "Autentimata" + }, + "spf": { + "pass": "SPF läbitud", + "fail": "SPF ebaõnnestus", + "none": "SPF puudub" + }, + "dkim": { + "pass": "DKIM kehtiv", + "fail": "DKIM kehtetu", + "none": "DKIM puudub" + }, + "dmarc": { + "pass": "DMARC läbitud", + "fail": "DMARC ebaõnnestus", + "none": "DMARC puudub" + }, + "spam_score": "Rämpsposti skoor", + "tooltip_spf": "Sender Policy Framework: kontrollib, kas saatev server on volitatud selle domeeni nimel kirju saatma", + "tooltip_dkim": "DomainKeys Identified Mail: kinnitab krüptograafilise allkirja abil, et kirja ei muudetud edastamise ajal", + "tooltip_dmarc": "Domain-based Message Authentication, Reporting & Conformance: tagab, et SPF ja DKIM vastavad saatja domeenile, ning määrab reeglid ebaõnnestumiste jaoks", + "policy": "Reegel", + "result": { + "pass": "Läbitud", + "fail": "Ebaõnnestus", + "softfail": "Nõrk ebaõnnestumine", + "neutral": "Neutraalne", + "permerror": "Püsiv viga", + "temperror": "Ajutine viga", + "none": "Puudub" + } + }, + "details": { + "recipients_routing": "Saajad ja marsruutimine", + "authentication_security": "Autentimine ja turvalisus", + "identifiers_threading": "Identifikaatorid ja vestlusahel", + "mailing_list": "Meililist", + "message_properties": "Kirja omadused", + "sent": "Saadetud", + "received": "Vastu võetud", + "delivery_time": "Kohaletoimetamise aeg", + "in_reply_to": "In-Reply-To", + "references": "References", + "thread_id": "Vestluse ID", + "size": "Suurus", + "mime_type": "MIME tüüp", + "attachments_summary": "{count} faili · {size}", + "list_id": "Listi ID", + "list_help": "Listi abi", + "list_post": "Listi postitus", + "list_unsubscribe": "Tellimuse tühistamine", + "iprev": "Pöörd-DNS", + "spam_status": "Rämpsposti olek", + "ai_verdict": "AI hinnang", + "account": "Konto", + "no_subject": "(teema puudub)" + }, + "headers": { + "routing": "Marsruutimine", + "received": "Vastu võetud", + "message_id": "Kirja ID", + "list_info": "Listi teave" + }, + "tooltips": { + "reply": "Vasta (r)", + "reply_all": "Vasta kõigile (a)", + "forward": "Saada edasi (f)", + "archive": "Arhiveeri (e)", + "delete": "Kustuta (# või Del)", + "star": "Tähista tähega (s)", + "unstar": "Eemalda täht (s)", + "compose": "Koosta (c)", + "previous": "Eelmine kiri", + "next": "Järgmine kiri", + "edit_draft": "Muuda mustandit" + }, + "spam": { + "button_title": "Märgi rämpspostiks", + "not_spam_title": "Märgi tavaliseks kirjaks", + "toast_success": "Teisaldatud rämpsposti", + "toast_batch": "{count} kirja teisaldatud rämpsposti", + "toast_undo": "Võta tagasi", + "toast_not_spam_success": "Teisaldatud saabunud kirjadesse", + "toast_not_spam_batch": "{count} kirja teisaldatud saabunud kirjadesse", + "error": "Rämpspostiks märkimine ebaõnnestus", + "error_not_spam": "Kirja taastamine ebaõnnestus" + }, + "unsubscribe_banner": { + "label": "Uudiskiri", + "button": "Tühista tellimus", + "confirm_title": "Kas tühistada selle saatja tellimus?", + "confirm_button": "Kinnita", + "cancel": "Tühista", + "success_http": "Tellimuse tühistamise leht avati uues vahekaardis", + "success_mailto": "Tellimuse tühistamise kiri saadetud", + "confirm_message_http": "Tellimuse tühistamise leht avaneb uues vahekaardis.", + "confirm_message_mailto": "Saatjale saadetakse tellimuse tühistamise kiri.", + "error": "Tellimust ei õnnestunud tühistada", + "dismiss": "Sulge" + }, + "calendar_invitation": { + "loading": "Sündmuse üksikasjade laadimine…", + "title": "Kalendrikutse", + "published_title": "Avaldatud sündmus", + "response_title": "Vastus sündmusele", + "update_title": "Sündmuse uuendus", + "counter_title": "Vastuettepanek", + "refresh_title": "Värskenduse taotlus", + "declined_counter_title": "Vastuettepanek tagasi lükatud", + "cancelled_title": "Sündmus tühistatud", + "organizer": "Korraldaja: {name}", + "organizer_label": "Korraldaja", + "attendees": "{count, plural, one {# osaleja} other {# osalejat}}", + "accept": "Nõustu", + "maybe": "Võib-olla", + "decline": "Keeldu", + "add_to_calendar": "Lisa kalendrisse", + "added": "Lisatud kalendrisse", + "rsvp_sent": "Vastus saadetud", + "parse_error": "Kutset ei õnnestunud lugeda", + "action_failed": "Seda kalenditoimingut ei õnnestunud lõpetada.", + "no_calendar": "Kalender pole saadaval", + "published_info": "See sündmus jagati info edastamiseks.", + "response_info": "See kiri sisaldab osaleja vastust.", + "response_info_organizer": "See osaleja vastus uuendab sinu sündmust.", + "update_info": "See kiri uuendab olemasolevat sündmust.", + "counter_info": "See kiri teeb ettepaneku sündmust muuta.", + "counter_info_organizer": "See osaleja tegi ettepaneku sinu sündmust muuta.", + "refresh_info": "See kiri küsib sündmuse uusimaid andmeid.", + "refresh_info_organizer": "Osaleja küsis sündmuse uusimaid andmeid.", + "declined_counter_info": "Korraldaja lükkas vastuettepaneku tagasi.", + "authentication_failed_info": "Selle kutse e-posti autentimiskontrollid ebaõnnestusid. Suhtu kalenditoimingutesse ettevaatlikult.", + "authentication_missing_info": "Sellel kutsel puudub kinnitatud e-posti autentimine. Kui midagi tundub kahtlane, kontrolli üksikasju korraldajaga.", + "sender_mismatch_info": "See kutse saadeti aadressilt {sender}, kuid kalendriandmetes märgitud korraldaja on {organizer}.", + "sender_mismatch_unverified_info": "See kutse saadeti aadressilt {sender}, kuid kalendriandmetes märgitud korraldaja on {organizer}, ning kirja ei õnnestunud kinnitada.", + "organizer_role": "Sina oled selle sündmuse korraldaja", + "your_response": "Sinu vastus: {status}", + "response_needed": "Vajab vastust", + "response_accepted": "Nõustutud", + "response_tentative": "Esialgne", + "response_declined": "Tagasi lükatud", + "response_delegated": "Delegeeritud", + "actor_sent_info": "Saatis {name}.", + "actor_response_info": "{name} vastas: {status}.", + "actor_counter_info": "{name} tegi ettepaneku seda sündmust muuta.", + "actor_refresh_info": "{name} küsis sündmuse uusimaid andmeid.", + "actor_declined_counter_info": "{name} lükkas vastuettepaneku tagasi.", + "actor_note": "Märkus: {comment}", + "actor_unknown": "Keegi", + "proposed_changes": "Pakutud muudatused", + "change_title": "Pealkiri", + "change_time": "Aeg", + "change_location": "Asukoht", + "change_description": "Kirjeldus", + "change_empty": "Puudub", + "change_from_to": "{before} -> {after}", + "apply_proposal": "Rakenda pakutud muudatused", + "proposal_applied": "Pakutud muudatused rakendatud.", + "review_proposal": "Vaata ettepanekut üle", + "review_request": "Vaata taotlust üle", + "view_in_calendar": "Vaata kalendris", + "select_calendar": "Vali kalender", + "already_in_calendar": "Juba sinu kalendris", + "request_info": "Sind on sellele sündmusele kutsutud. Vasta, et anda korraldajale teada oma saadavusest.", + "cancel_info": "Korraldaja on selle sündmuse tühistanud.", + "event_updated": "Uuendus #{sequence}", + "event_status_tentative": "Esialgne", + "event_status_cancelled": "Tühistatud", + "expand": "Näita üksikasju", + "collapse": "Peida üksikasjad" + }, + "send": "Saada", + "more": "veel", + "scheduled_banner": "Ajastatud saatmiseks kell {date}", + "scheduled_send_created": "Kiri ajastatud saatmiseks", + "sending_in": "Saatmine {seconds, plural, one {# sekundi} other {# sekundi}} pärast", + "undo_send_failed": "Tagasivõtmine ei õnnestunud. Kiri võib juba olla saadetud.", + "cancel_scheduled_send": "Tühista saatmine", + "reschedule_send": "Ajasta uuesti", + "cancel_and_edit": "Tühista ja muuda", + "cancel_and_compose_again": "Tühista ja koosta uuesti", + "reschedule_prompt": "Sisesta uus kuupäev/kellaaeg, nt 2026-05-04T15:30", + "scheduled_actions_only": "Ajastatud vaade toetab ainult ajastatud toiminguid", + "undo_send_scheduled": "Kiri ajastatud saatmiseks", + "undo_send": "Võta saatmine tagasi", + "contact_sidebar": { + "title": "Kontakt", + "close": "Sulge külgriba", + "action_email": "E-post", + "action_email_title": "Saada e-kiri", + "action_copy": "Kopeeri", + "action_copy_title": "Kopeeri e-posti aadress", + "action_edit_title": "Muuda kontakti", + "section_emails": "E-posti aadressid", + "section_phones": "Telefonid", + "section_organizations": "Organisatsioonid", + "section_addresses": "Aadressid", + "section_notes": "Märkused", + "not_in_contacts": "Ei ole sinu kontaktides", + "add_to_contacts": "Lisa kontaktidesse", + "copied": "Kopeeritud!", + "copy_failed": "Kopeerimine ebaõnnestus" + }, + "send_now": "Saada kohe", + "verification_code": { + "copy": "Kopeeri kood {code}", + "copied": "Kood kopeeritud", + "copy_failed": "Koodi kopeerimine ebaõnnestus" + }, + "mv_position": "{index} / {total}", + "plugin_panel_show": "Näita pistikprogrammi paneeli", + "plugin_panel_hide": "Peida pistikprogrammi paneel" + }, + "email_composer": { + "minimize": "Minimeeri", + "maximize": "Täisekraan", + "restore": "Taasta", + "new_message": "Uus kiri", + "signature_edit_hint": "Allkirja muutmiseks tee topeltklõps", + "reply": "Vasta", + "reply_all": "Vasta kõigile", + "forward": "Saada edasi", + "reply_to": "Vasta", + "reply_all_to": "Vasta kõigile", + "forward_message": "Saada edasi", + "from": "Saatja", + "to": "Saajale", + "cc": "CC", + "bcc": "BCC", + "subject": "Teema", + "body_placeholder": "Kirjuta oma sõnum...", + "formatting": "Vormindus", + "send": "Saada", + "cancel": "Tühista", + "attach": "Lisa manus", + "attach_photos": "Fotod ja videod", + "attach_files": "Failid", + "attach_from_files": "Lisa failidest", + "files_picker": { + "attach": "{count, plural, =0 {Lisa manus} one {Lisa 1 fail} other {Lisa # faili}}", + "empty_folder": "See kaust on tühi", + "load_failed": "Sinu faile ei õnnestunud laadida" + }, + "discard": "Kustuta", + "discard_draft_title": "Kustutada mustand?", + "discard_draft_confirm": "Sul on salvestamata muudatusi. Kas soovid selle mustandi kustutada?", + "discard_draft_message": "Mustand kustutatakse.", + "saving": "Salvestamine...", + "sending": "Saatmine...", + "add_link": "Lisa link", + "link_url_prompt": "Sisesta URL", + "draft_saved": "Mustand salvestatud", + "save_failed": "Salvestamine ebaõnnestus", + "to_placeholder": "Saaja e-posti aadressid", + "cc_placeholder": "CC saajad", + "bcc_placeholder": "BCC saajad", + "subject_placeholder": "Teema", + "cc_label": "CC:", + "bcc_label": "BCC:", + "subject_label": "Teema:", + "file_size_kb": "KB", + "prefix": { + "forward": "Fwd:", + "reply": "Vs:" + }, + "forward_batch_count": "{count, plural, one {1 kiri} other {# kirja}}", + "no_subject": "(Teemata)", + "unknown_sender": "Tundmatu", + "quote": { + "reply_header": "{date} kirjutas {sender}:", + "forward_header": "---------- Edastatud sõnum ----------", + "from": "Saatja: {sender}", + "date": "Kuupäev: {date}", + "subject": "Teema: {subject}", + "to": "Saajad: {recipients}" + }, + "remove_sub_address": "Eemalda alamaadress", + "from_override": { + "toggle_off": "Muuda saatjat", + "toggle_on": "Tühista saatja muutmine", + "toggle_tooltip": "Muuda saatja nime ja aadressi vabalt. Kiri saadetakse endiselt sinu identiteedi kaudu - muutub ainult nähtav saatja päis.", + "name_label": "Saatja nimi", + "name_placeholder": "Nimi", + "email_label": "Saatja e-posti aadress", + "email_placeholder": "alias@example.com", + "envelope_notice": "Kui sinu server ei võta seda aadressi ümbriku saatjaks vastu, kasutatakse selle asemel {identity} ja adressaadid näevad seda päisest Return-Path." + }, + "save_as_template": "Salvesta mallina", + "attach_from_device": "Laadi üles sellest seadmest", + "templates_menu": "Mallid", + "insert_template": "Lisa mall", + "options": "Valikud", + "option_plain_text": "Lihttekst", + "option_plain_text_hint": "Saada ilma vormindusteta", + "option_read_receipt": "Küsi lugemiskinnitust", + "option_read_receipt_hint": "Palu adressaadil kinnitada, et ta kirja avas", + "option_dsn": "Kohaletoimetamise teade", + "option_dsn_hint": "Saa aruanne, kui server kirja kohale toimetab", + "option_require_tls": "Nõua krüpteeritud kohaletoimetamist", + "option_require_tls_hint": "Toimeta kohale ainult TLS-iga, muidu lükka tagasi", + "validation": { + "recipient_required": "Saatmiseks lisa saaja", + "body_required": "Kirjuta sõnum või lisa fail", + "invalid_recipients": "Ei saadetud - kontrolli neid aadresse: {addresses}", + "attachments_uploading": "Manuseid laaditakse veel üles — saadetakse kohe, kui need valmis on", + "attachment_upload_failed": "Ei saadetud — manuse üleslaadimine ebaõnnestus. Eemalda see ja proovi uuesti." + }, + "upload_progress": "Laadimine üles: {uploaded} / {total}", + "upload_cancel": "Tühista üleslaadimine", + "upload_failed": "Faili {filename} üleslaadimine ebaõnnestus", + "attachment_too_large": "„{name}” on suurem, kui server lubab ({max} faili kohta)", + "attachments_total_too_large": "Manused ületaksid serveri piiri {max} kirja kohta", + "drop_files": "Manustamiseks lohista failid siia", + "show_less": "Näita vähem", + "send_failed": "Kirja saatmine ebaõnnestus", + "send_offline": "Paistab, et oled võrgust väljas. Kiri on alles, saada see uuesti, kui oled taas ühenduses.", + "send_timeout": "Server lakkas vastamast. Enne uuesti saatmist kontrolli oma saadetud kirjade kausta — sõnum võis siiski välja minna.", + "send_recipients_rejected": "Ei saadetud - server lükkas kõik adressaadid tagasi.", + "send_plugin_failed": "Ei saadetud - saatmist käsitlev pistikprogramm ebaõnnestus või võttis liiga kaua aega. Kontrolli enne uuesti saatmist kausta Saadetud.", + "send_some_recipients_rejected": "Saadetud, kuid mitte neile adressaatidele - server lükkas nad tagasi.", + "continue_draft": "Jätka mustandiga", + "close_draft_title": "Salvestada või kustutada mustand?", + "close_draft_message": "Sul on salvestamata muudatusi. Kas soovid selle mustandina salvestada või kustutada?", + "smime_sign_on": "S/MIME allkirjastamine lubatud", + "smime_sign_off": "Luba S/MIME allkirjastamine", + "smime_encrypt_on": "S/MIME krüpteerimine lubatud", + "smime_encrypt_off": "Luba S/MIME krüpteerimine", + "smime_encrypt_unavailable": "S/MIME krüpteerimine pole saadaval – puuduvad saaja sertifikaadid", + "smime_unlock_title": "Ava S/MIME võti", + "smime_unlock_message": "Sisesta parool, et avada oma S/MIME allkirjastamise võti.", + "smime_unlock_button": "Ava", + "smime_passphrase_placeholder": "Parool", + "forgot_attachment": { + "title": "Kas unustasid manuse lisada?", + "message": "Sinu sõnumis mainitakse \"{keyword}\", kuid ühtegi faili pole lisatud. Kas saata ikkagi?", + "send_anyway": "Saada ikkagi", + "back": "Tagasi muutmise juurde" + }, + "empty_subject": { + "title": "Saata ilma teemata?", + "message": "Sellel sõnumil pole teemat. Kas saata see ikkagi?", + "dont_ask_again": "Ära küsi uuesti", + "send_anyway": "Saada ikkagi", + "back": "Tagasi muutmise juurde" + }, + "schedule_send": "Ajasta saatmine", + "schedule_send_description": "Vali, millal server peaks selle sõnumi välja saatma.", + "schedule_preset": { + "tomorrow_morning": "Homme hommikul", + "tomorrow_afternoon": "Homme pärastlõunal", + "monday_morning": "Esmaspäeva hommikul" + }, + "schedule_send_required": "Vali kuupäev ja kellaaeg.", + "schedule_send_invalid": "Sisesta kehtiv kuupäev ja kellaaeg.", + "schedule_send_future": "Vali tulevikus olev kuupäev ja kellaaeg.", + "schedule_send_too_late": "See aeg on hilisem kui server lubab.", + "schedule_send_unsupported": "Ajastatud saatmine ei ole selle konto jaoks toetatud.", + "schedule_send_cleanup_warning": "Ajastatud saatmine loodi, kuid mustandi koristamine ebaõnnestus.", + "send_delay_unsupported": "Saatmise viivitus ei ole selle konto jaoks toetatud.", + "send_delay_unsupported_confirm": "See konto ei toeta saatmise viivitust. Kas saata kohe?", + "recipient_edit_email": "Muuda e-posti aadressi", + "recipient_edit_name": "Muuda kuvatavat nime", + "recipient_email_placeholder": "E-posti aadress", + "recipient_name_placeholder": "Kuvatav nimi", + "invalid_recipient": "Pole kehtiv e-posti aadress", + "autocomplete_search_server": "Otsi serverist", + "autocomplete_searching": "Otsimine...", + "mention_recipients": "Adressaadid", + "toolbar": { + "bold": "Rasvane", + "italic": "Kaldkiri", + "underline": "Allajoonitud", + "strikethrough": "Läbijoonitud", + "text_color": "Teksti värv", + "remove_color": "Eemalda värv", + "heading_1": "Pealkiri 1", + "heading_2": "Pealkiri 2", + "bullet_list": "Täpploend", + "ordered_list": "Numberloend", + "quote": "Tsitaat", + "code_block": "Koodiplokk", + "align_left": "Joonda vasakule", + "align_center": "Joonda keskele", + "align_right": "Joonda paremale", + "text_direction": "Teksti suund (RTL/LTR)", + "link": "Link", + "table": "Tabel", + "clear_formatting": "Eemalda vormindus", + "undo": "Võta tagasi", + "redo": "Tee uuesti", + "add_row_above": "Lisa rida ülalt", + "add_row_below": "Lisa rida alt", + "add_column_before": "Lisa veerg enne", + "add_column_after": "Lisa veerg pärast", + "delete_row": "Kustuta rida", + "delete_column": "Kustuta veerg", + "toggle_header_row": "Päiserida sisse/välja", + "delete_table": "Kustuta tabel", + "pick_size": "Vali suurus", + "font_size": "Fondi suurus", + "font_size_default": "Vaikimisi", + "background_color": "Taustavärv", + "remove_background_color": "Eemalda taustavärv" + }, + "send_filing_warning": "Saadetud - kuid saatmisjärgne koristus ebaõnnestus, mustand võib alles jääda.", + "pop_out": "Ava vastus eraldi aknas", + "send_guard_failed": "Ei saadetud - kirju enne saatmist kontrolliv pistikprogramm ebaõnnestus või ei vastanud." + }, + "confirm_dialog": { + "confirm": "Kinnita", + "cancel": "Tühista" + }, + "common": { + "loading": "Laadimine...", + "error": "Viga", + "success": "Õnnestus", + "cancel": "Tühista", + "save": "Salvesta", + "delete": "Kustuta", + "edit": "Muuda", + "close": "Sulge", + "search": "Otsi", + "refresh": "Värskenda", + "settings": "Seaded", + "help": "Abi", + "logout": "Logi välja", + "yes": "Jah", + "no": "Ei", + "unknown": "Tundmatu", + "app_title": "Webmail", + "reconnecting": "Ühendus katkes. Proovime uuesti ühenduda…", + "rate_limited_title": "Serveri autentimine on ajutiselt piiratud.", + "rate_limited_detail": "Bulwark on taustapäringud lukustumise vältimiseks peatanud. Proovime uuesti {seconds}s pärast.", + "rate_limited_action_title": "Päring peatati lukustumise vältimiseks.", + "rate_limited_action_detail": "Bulwark ootab serveri jahtumisaja lõppu, enne kui saadab rohkem autenditud päringuid. Proovi uuesti {seconds}s pärast.", + "pull_to_refresh": "Värskendamiseks tõmba alla", + "release_to_refresh": "Värskendamiseks vabasta", + "refreshing": "Värskendamine…" + }, + "notifications": { + "email_sent": "E-kiri saadeti edukalt", + "email_deleted": "E-kiri kustutati", + "email_archived": "E-kiri arhiveeriti", + "emails_deleted": "{count, plural, one {# kiri kustutatud} other {# kirja kustutatud}}", + "emails_archived": "{count, plural, one {# kiri arhiveeritud} other {# kirja arhiveeritud}}", + "error_archiving": "Kirja arhiveerimine ebaõnnestus", + "error_updating": "Kirja uuendamine ebaõnnestus", + "email_starred": "E-kiri tähistati", + "email_unstarred": "E-kirja tähistus eemaldati", + "email_marked_read": "E-kiri märgiti loetuks", + "email_marked_unread": "E-kiri märgiti lugemata", + "copied_to_clipboard": "Kopeeritud lõikelauale", + "source_copied": "Lähtekood kopeeriti lõikelauale", + "error_sending": "E-kirja saatmine ebaõnnestus", + "error_deleting": "E-kirja kustutamine ebaõnnestus", + "error_loading": "E-kirjade laadimine ebaõnnestus", + "new_email": "Uus e-kiri", + "new_email_from": "Saatja: {sender}", + "click_to_view": "Vaatamiseks klõpsa", + "email_moved": "E-kiri liigutati", + "emails_moved": "{count} e-kirja liigutati", + "moved_to_mailbox": "Liigutatud kausta {mailbox}", + "move_failed": "Liigutamine ebaõnnestus", + "emails_copied": "{count} kirja kopeeritud", + "copy_failed": "Kopeerimine ebaõnnestus", + "move_error": "E-kirju ei õnnestunud valitud kausta liigutada", + "email_tagged": "E-kiri märgistati", + "emails_tagged": "{count} e-kirja märgistati", + "tag_failed": "Märgistamine ebaõnnestus", + "identity_created": "Identiteet loodi edukalt", + "identity_updated": "Identiteet uuendati edukalt", + "identity_deleted": "Identiteet kustutati", + "identity_set_primary": "Peamine identiteet uuendati", + "identity_create_failed": "Identiteedi loomine ebaõnnestus: {error}", + "identity_update_failed": "Identiteedi uuendamine ebaõnnestus: {error}", + "identity_delete_failed": "Identiteedi kustutamine ebaõnnestus: {error}", + "identity_unauthorized": "Sul ei ole õigust sellelt e-posti aadressilt saata", + "identity_not_found": "Identiteeti ei leitud", + "vacation_saved": "Puhkusevastaja seaded salvestati", + "vacation_save_failed": "Puhkusevastaja seadete salvestamine ebaõnnestus", + "filters_saved": "Filtrid salvestati edukalt", + "filters_save_failed": "Filtrite salvestamine ebaõnnestus", + "filters_deleted": "Filtrireegel kustutati", + "templates_exported": "Mallid eksporditi edukalt", + "templates_imported": "{count, plural, one {# mall} other {# malli}} imporditi", + "templates_import_errors": "Mõnda malli ei õnnestunud importida", + "templates_import_empty": "Failist ei leitud ühtegi malli", + "export_email_error": "E-kirja eksportimine ebaõnnestus", + "import_email_success": "E-kiri imporditi edukalt", + "import_email_error": "E-kirja importimine ebaõnnestus", + "rule_created": "Reegel loodud", + "rule_merged": "Lisatud reeglisse „{name}”", + "rule_already_covered": "Juba kaetud reegliga „{name}”", + "rule_apply_existing": "{count, plural, one {Rakenda # olemasolevale kirjale} other {Rakenda # olemasolevale kirjale}}", + "rule_applied": "{count, plural, =0 {Ühtegi kirja polnud vaja muuta} one {Reegel rakendati # kirjale} other {Reegel rakendati # kirjale}}", + "rule_apply_failed": "Reeglit ei õnnestunud olemasolevatele kirjadele rakendada", + "rule_edit": "Muuda reeglit", + "rule_undo": "Võta tagasi", + "rule_undone": "Reegli muudatus võeti tagasi", + "rule_undo_failed": "Reegli muudatust ei õnnestunud tagasi võtta", + "rule_undo_conflict": "Sinu filtreid on vahepeal muudetud. Võta muudatus tagasi filtriseadetes.", + "rule_folder_failed": "Kausta loomine ebaõnnestus", + "vacation_filters_save_failed": "Äraolekuteate seaded salvestati, kuid edastus- ja vastuse adressaate ei õnnestunud salvestada" + }, + "date": { + "today": "Täna", + "yesterday": "Eile", + "this_week": "Sel nädalal", + "last_week": "Eelmisel nädalal", + "this_month": "Sel kuul", + "older": "Vanemad", + "just_now": "Just praegu", + "minutes_ago": "{count} minut tagasi", + "minutes_ago_plural": "{count} minutit tagasi", + "hours_ago": "{count} tund tagasi", + "hours_ago_plural": "{count} tundi tagasi", + "days_ago": "{count} päev tagasi", + "days_ago_plural": "{count} päeva tagasi" + }, + "language": { + "title": "Keel", + "english": "English", + "french": "Français", + "japanese": "日本語", + "spanish": "Español", + "italian": "Italiano", + "german": "Deutsch", + "dutch": "Nederlands", + "portuguese": "Português", + "russian": "Русский", + "select_language": "Vali keel", + "switch_to_english": "Vaheta keeleks English", + "switch_to_french": "Vaheta keeleks Français", + "switch_to_japanese": "Vaheta keeleks 日本語", + "switch_to_spanish": "Vaheta keeleks Español", + "switch_to_italian": "Vaheta keeleks Italiano", + "switch_to_german": "Vaheta keeleks Deutsch", + "switch_to_dutch": "Vaheta keeleks Nederlands", + "switch_to_portuguese": "Vaheta keeleks Português", + "switch_to_russian": "Vaheta keeleks Русский", + "switching": "Keele vahetamine...", + "switch": "Vaheta keelt", + "current": "Praegune keel", + "polish": "Polski", + "switch_to_polish": "Vaheta keeleks Polski", + "en": "English", + "fr": "Français", + "de": "Deutsch", + "es": "Español", + "it": "Italiano", + "ja": "日本語", + "ko": "한국어", + "lv": "Latviešu", + "nl": "Nederlands", + "pl": "Polski", + "pt": "Português", + "he": "עברית", + "ru": "Русский", + "sk": "Slovenčina", + "uk": "Українська", + "zh": "简体中文", + "fa": "فارسی", + "farsi": "فارسی", + "switch_to_farsi": "Vaheta keeleks فارسی", + "mn": "Монгол", + "mongolian": "Монгол", + "switch_to_mongolian": "Vaheta keeleks Монгол" + }, + "settings": { + "title": "Seaded", + "back_to_mail": "Tagasi postkasti", + "save_success": "Seaded salvestatud", + "import_success": "Seaded imporditud", + "import_error": "Seadete importimine ebaõnnestus", + "reset_confirm": "Kas soovid kindlasti lähtestada kõik seaded vaikeväärtustele?", + "unsaved_changes": "Sul on salvestamata muudatusi", + "discard_changes": "Kas loobuda salvestamata muudatustest?", + "discard": "Loobu", + "keep_editing": "Jätka muutmist", + "search_placeholder": "Otsi seadetest", + "search_clear": "Tühjenda otsing", + "search_no_results": "Vastavaid seadeid ei leitud", + "tabs": { + "appearance": "Välimus", + "language": "Keel, piirkond ja kellaaeg", + "email": "E-kirjade käitumine", + "composer": "Kirja koostamine", + "privacy": "Privaatsus ja turvalisus", + "account": "Konto", + "identities": "Identiteedid", + "vacation": "Puhkusevastaja", + "advanced": "Täpsemalt", + "calendar": "Kalender", + "filters": "Filtrid", + "templates": "Mallid", + "folders": "Kaustad", + "keywords": "Sildid", + "security": "Turvalisus", + "files": "Failid", + "contacts": "Kontaktid", + "encryption": "Krüpteerimine", + "protocol_handlers": "Vaikerakendused", + "sidebar_apps": "Külgriba rakendused", + "notifications": "Teavitused", + "layout": "Paigutus", + "themes": "Teemad", + "reading": "Lugemine", + "composing": "Kirjutamine", + "downloads": "Allalaadimised", + "content_senders": "Sisu ja saatjad", + "about_data": "Teave ja andmed", + "debug": "Silumine" + }, + "themes": { + "title": "Teemad", + "description": "Vali administraatori paigaldatud teemade ja sisseehitatud eelseadistuste seast.", + "locked": "Teema valiku on administraator lukustanud.", + "forced": "Teema „{name}” on administraatori määratud ja seda ei saa muuta", + "admin_theme": "Administraatori teema", + "activated": "Teema aktiveeritud", + "default_restored": "Vaiketeema taastatud", + "default_name": "Vaikimisi", + "default_badge": "Vaikimisi", + "admin_enforced": "Administraatori määratud" + }, + "tab_groups": { + "general": "Üldine", + "account": "Konto ja identiteet", + "organization": "Kirjade korraldamine", + "apps": "Rakendused", + "system": "Süsteem", + "appearance": "Välimus", + "mail": "Post", + "privacy": "Privaatsus ja turvalisus", + "advanced": "Täpsemalt" + }, + "appearance": { + "message_list_order": { + "label": "Kirjade loendi järjestus", + "description": "Kuidas kirju loendis järjestatakse. Järjestamise teeb server, seega hõlmab see kogu kausta, mitte ainult laaditud kirju.", + "preset": { + "chronological": "Kronoloogiline (uuemad enne)", + "unread_first": "Lugemata enne", + "starred_first": "Tärniga enne", + "tagged_first": "Siltidega enne", + "custom": "Kohandatud" + }, + "tag_label": "Silt", + "advanced_show": "Täpsemalt: muuda järjestustasemeid", + "advanced_hide": "Peida täpsem vaade", + "criterion_label": "{n}. taseme kriteerium", + "direction_label": "{n}. taseme suund", + "criteria": { + "unread": "Lugemata", + "starred": "Tärniga", + "tag": "Silt", + "receivedAt": "Saabumiskuupäev", + "sentAt": "Saatmiskuupäev", + "from": "Saatja", + "subject": "Teema", + "size": "Suurus" + }, + "direction": { + "unread_first": "Lugemata enne", + "read_first": "Loetud enne", + "starred_first": "Tärniga enne", + "unstarred_first": "Tärnita enne", + "tagged_first": "Siltidega enne", + "untagged_first": "Siltideta enne", + "newest_first": "Uuemad enne", + "oldest_first": "Vanemad enne", + "a_to_z": "A → Z", + "z_to_a": "Z → A", + "largest_first": "Suuremad enne", + "smallest_first": "Väiksemad enne" + }, + "add_level": "Lisa tase", + "remove_level": "Eemalda tase", + "move_up": "Liiguta üles", + "move_down": "Liiguta alla", + "tiebreak_note": "Kuni kolm taset; hilisemad tasemed lahendavad viigid. Uuemad enne rakendatakse alati viimasena.", + "scope": { + "label": "Rakenda kõigile kaustadele", + "description": "Kui väljas, kehtib järjestus ainult Saabunud kirjade kaustale; teised kaustad jäävad kronoloogiliseks." + }, + "unsupported_note": "Sinu meiliserver ei toeta järjestamist loetud oleku, tärnide ega siltide järgi. Need tasemed jäetakse arvestamata ja loend jääb kronoloogiliseks." + }, + "title": "Välimus", + "description": "Kohanda oma veebiposti välimust ja tunnetust", + "theme": { + "label": "Teema", + "description": "Vali eelistatud värviskeem", + "light": "Hele", + "dark": "Tume", + "system": "Süsteem" + }, + "language": { + "label": "Keel", + "description": "Vali eelistatud keel" + }, + "font_size": { + "label": "Kirja suurus", + "description": "Kohanda teksti suurust parema loetavuse jaoks", + "small": "Väike", + "medium": "Keskmine", + "large": "Suur" + }, + "list_density": { + "label": "Tihedus", + "description": "Reguleeri vahesid ja polsterdust kogu kasutajaliideses", + "extra_compact": "Eriti kompaktne", + "compact": "Kompaktne", + "regular": "Tavaline", + "comfortable": "Mugav" + }, + "interface_layout": { + "label": "Liidese paigutus", + "description": "Kus asuvad otsing, navigeerimine ja tööriistaribad", + "default": "Vaikimisi", + "mountain_view": "Mountain View" + }, + "animations": { + "label": "Luba animatsioonid", + "description": "Kuva sujuvaid üleminekuid ja efekte" + }, + "toolbar_position": { + "label": "Tööriistariba asukoht", + "description": "Kuhu kuvada kirjatoimingute nupud (Vasta, Arhiveeri, Kustuta jne)", + "top": "Üleval", + "below_subject": "Teema all" + }, + "toolbar_labels": { + "label": "Näita tööriistariba nimetusi", + "description": "Kuva tekstisildid tööriistariba ikoonide kõrval. Lülita välja ruumi säästmiseks, kui ikoonid on juba tuttavad." + }, + "hide_account_switcher": { + "label": "Peida külgriba kontovahetaja", + "description": "Peida kontovaliku menüü kaustade külgriba ülaosast. Kontosid saab endiselt vahetada alumiselt navigeerimisribalt." + }, + "show_rail_account_list": { + "label": "Näita kontode avatare navigeerimisribal", + "description": "Kuva navigeerimisriba allosas eraldi kontoringid kiireks vahetamiseks ning nende all väljalogimise nupp." + }, + "unified_mailbox": { + "label": "Ühendatud postkast", + "description": "Kuva aktiivse konto ja selle jagatud kaustade ühendatud kaustad (Saabunud, Saadetud jne).", + "cross_account": { + "label": "Kõigi kontode ulatuses", + "description": "Ühenda ühendatud postkast kõigi lisatud kontode ulatuses, mitte ainult aktiivse konto piires." + }, + "include_group": { + "label": "Kaasa rühma postkastid", + "description": "Kaasa ühendatud vaatesse ka jagatud/rühma postkastid." + } + }, + "all_mail": { + "folders_label": "Kaustad ühendatud loendites", + "folders_description": "Vali, millised selle konto kaustad kaasatakse loenditesse Kõik kirjad / Lugemata / Tärniga.", + "account_hint": "Kehtib konto {account} kohta.", + "no_folders": "Kaustad puuduvad." + }, + "colorful_sidebar_icons": { + "label": "Värvilised külgriba ikoonid", + "description": "Värvi kausta- ja sildiikoonid tüübi järgi (sinine Saabunud, punane Rämpspost, roheline Saadetud jne). Lülita välja ühevärvilise külgriba jaoks." + }, + "tint_list_rows": { + "label": "Värvi loendirida sildi värviga", + "description": "Tooni iga kirja rida selle esimese sildi värviga. Lülita välja, et read jääksid tavalised; sildipunktid ja -märgised näitavad värvi ikkagi." + }, + "tint_list_rows_by_account": { + "label": "Toonita nimekirja read konto värviga", + "description": "Ühendatud vaates varjuta iga rida konto värviga konto punkti näitamise asemel. Sellel on eelis sildi värvi ees; sildid säilitavad oma värvi oma märgistel." + }, + "show_folder_total_count": { + "label": "Näita kirjade koguarvu", + "description": "Näita kaustade ja siltide kõrval kirjade koguarvu koos lugemata arvuga. Lülita välja, et näidata ainult lugemata arvu." + }, + "favicon_unread_badge": { + "label": "Lugemata arv vahekaardi ja rakenduse ikoonil", + "description": "Näita saabunud kirjade lugemata arvu märgisena brauseri vahekaardi ikoonil ja toetuse korral ka paigaldatud rakenduse ikoonil, et uued kirjad oleksid näha ka siis, kui vahekaart pole fookuses. Lülita välja, et mõlemad ikoonid jääksid märgiseta." + }, + "show_shared_mail_accounts": { + "label": "Näita jagatud meilikontosid", + "description": "Näita sinuga jagatud postkastide kaustu külgribal jaotises Jagatud. Lülita välja, et peita kõik, või peida allpool üksikud kontod. Nende kalendrid ja kontaktid jäävad alles." + }, + "pro_interface": { + "label": "Pro liides (eksperimentaalne)", + "description": "Ainult lauaarvutile mõeldud kogenud kasutaja paigutus mitme vahekaardiga kirjade sirvimiseks ja kontodeüleseks töövooks. Standardliidest see ei mõjuta ning saad igal ajal tagasi lülituda.", + "open_label": "Ava Pro liides", + "back_to_standard": "Tagasi standardliidesesse" + }, + "cross_unread": { + "label": "Lugemata", + "description": "Kuva ühendatud postkastis kirje Lugemata, mis loetleb valitud kaustade lugemata kirjad." + }, + "cross_starred": { + "label": "Tärniga", + "description": "Kuva ühendatud postkastis kirje Tärniga, mis loetleb valitud kaustade märgistatud/tärniga kirjad." + }, + "cross_all": { + "label": "Kõik kirjad", + "description": "Kuva ühendatud postkastis kirje Kõik kirjad, mis loetleb kõik valitud kaustade kirjad." + } + }, + "keywords": { + "title": "E-kirjade sildid", + "description": "Määra sildid, et oma e-kirju korrastada. Need salvestatakse serveris JMAP võtmesõnadena.", + "add_keyword": "Lisa silt", + "label_field": "Kuvatav nimi", + "label_placeholder": "nt Töö, Isiklik, Kiireloomuline", + "id_field": "Sildi ID", + "id_placeholder": "nt work, personal", + "color_field": "Värv", + "id_exists": "See sildi ID on juba kasutusel", + "edit": "Muuda silti", + "delete": "Kustuta silt", + "save": "Salvesta", + "add": "Lisa", + "cancel": "Tühista", + "migrating": "Sildi uuendamine olemasolevatel kirjadel…", + "migration_error": "Sildi uuendamine olemasolevatel kirjadel ebaõnnestus", + "nesting": { + "label": "Pesastatud sildid", + "description": "Pesasta silte teiste siltide alla ja kuva neid külgribal puuna." + }, + "parent_field": "Ülemsilt", + "no_parent": "Ülemsilt puudub", + "too_long": "See sildi tee on liiga pikk (kuni {max} tähemärki)", + "has_children_locked": "Selle sildi all on pesastatud teisi silte, seega on selle nimi ja ülemsilt lukustatud. Teisalda või eemalda need kõigepealt.", + "has_children_delete": "Eemalda kõigepealt selle sildi alla pesastatud sildid", + "visibility_field": "Nähtavus külgribal", + "visibility": { + "show": "Näita", + "unread": "Näita, kui lugemata", + "hide": "Peida" + }, + "unrecognized": { + "title": "Taasta sildid serverist", + "description": "Siltide nimed ja värvid salvestatakse selles brauseris, kuid sildid ise elavad su kirjadel JMAP võtmesõnadena. Skanni oma posti võtmesõnade suhtes, mida ükski siinne silt ei seleta, ja lisa need tagasi.", + "scan": "Skanni silte", + "rescan": "Skanni uuesti", + "scanning": "Skannimine… {scanned} / {total} kirja", + "none": "Kõik su kirjade sildid on siin juba määratud.", + "messages": "{count, plural, one {# kiri} other {# kirja}}", + "add_all": "Lisa kõik {count}", + "partial": "Skannitud on ainult {scanned} kõige uuemat {total} kirjast. Ainult vanematel kirjadel kasutatud sildid võivad puududa.", + "error": "Kirjade siltide skannimine ebaõnnestus." + } + }, + "notifications": { + "test_sound": "Testi teavitusheli", + "sounds": { + "default": "Vaikimisi (piiks)", + "cheerful": "Rõõmus", + "involved": "Elav", + "swift": "Kiire liigutus", + "relax": "Rahulik" + }, + "push": { + "title": "Taustateavitused", + "description": "Saa süsteemseid teavitusi uutest kirjadest ka siis, kui see sait on suletud. Edastatakse Bulwarki push-releele; relee ei näe kirjade sisu kunagi.", + "relay_label": "Push-relee", + "relay_desc": "Server, mis edastab su teavitusi. Vali administraatori pakutavate releede hulgast.", + "relay_locked": "Määratud administraatori poolt", + "relay_locked_desc": "Push-relee on määranud administraator ja seda ei saa muuta.", + "status_active": "Aktiivne selles seadmes", + "status_inactive": "Selles seadmes pole lubatud", + "status_unsupported": "See brauser ei toeta Web Pushi", + "status_lite": "Veebi-tõukemärguanded pole Bulwark Lite'is saadaval; need vajavad Bulwarki serverit.", + "status_busy": "Töötleb…", + "enable": "Luba", + "reenable": "Registreeri uuesti", + "disable": "Keela", + "confirm_disable_title": "Kas keelata taustateavitused?", + "confirm_disable_message": "See seade ei saa enam teavitusi, kui sait on suletud.", + "dismiss_aria": "Sulge teavituse viip", + "ios_hint": "iOS-is paigalda sait esmalt avakuvale - Safari edastab Web Pushi ainult paigaldatud PWA-dele.", + "devices_title": "Registreeritud seadmed", + "devices_desc": "Kõik seadmed, mis on registreeritud selle konto taustateavitusi saama. Tühistamine peatab seadme teavitused koheselt.", + "devices_loading": "Registreeritud seadmete laadimine…", + "devices_empty": "Ühtegi seadet pole taustateavituste jaoks registreeritud.", + "devices_error": "Registreeritud seadmete laadimine ebaõnnestus.", + "devices_refresh": "Värskenda", + "device_this": "See seade", + "device_other": "Muu seade", + "device_status_active": "Edastab teavitusi", + "device_status_inactive": "Pole kunagi teavitust edastanud", + "device_status_unknown": "Sellele releele pole tuntud", + "device_expires": "Aegub {date}", + "revoke": "Tühista", + "confirm_revoke_title": "Kas tühistada see seade?", + "confirm_revoke_message": "See lakkab taustateavitusi koheselt saamast. Pushi uuesti lubamine sellel seadmel registreerib selle uuesti.", + "confirm_revoke_message_this": "See seade lakkab taustateavitusi koheselt saamast." + }, + "push_all": { + "title": "Kõik kontod", + "description": "Lülita tõukemärguanded korraga sisse või välja mitmele kontole. Üks brauseri tellimus teenindab neid kõiki.", + "select_all": "Vali iga ühendatud konto", + "state_on": "märguanded sees", + "state_off": "märguanded väljas", + "enable_selected": "Luba valitutele", + "disable_selected": "Keela valitutele", + "result_enabled": "Märguanded lubatud {count} kontole.", + "result_partial": "Lubatud {enabled} kontole; {failed} kontol ei õnnestunud lubada.", + "result_disabled": "Märguanded keelatud {count} kontole." + }, + "sound_selection": { + "title": "Teavitusheli", + "description": "Vali, milline heli teavituste puhul mängitakse", + "choose": "Heli", + "choose_desc": "Vali teavitusheli ja kliki eelvaate kuulamiseks kõlariikoonil" + }, + "email": { + "title": "E-kirja teavitused", + "description": "Seadista saabuvate kirjade teavitused", + "enabled": "E-kirja teavitused", + "enabled_desc": "Kuva teavitus uue kirja saabumisel", + "sound": "Teavitusheli", + "sound_desc": "Mängi helimärguanne uue kirja saabumisel", + "inbox_only": "Ainult saabunud kirjad", + "inbox_only_desc": "Teavita ainult kirjadest, mis jõuavad saabunud kirjade kausta; jäta vahele kirjad, mille filter liigitab mujale" + }, + "calendar": { + "title": "Kalendri teavitused", + "description": "Seadista kalendrisündmuste teavitused", + "enabled": "Sündmuste teavitused", + "enabled_desc": "Kuva märguanded eelseisvate kalendrisündmuste kohta", + "sound": "Teavitusheli", + "sound_desc": "Mängi helimärguanne kalendri meeldetuletuste puhul", + "invitation_parsing": "Tuvasta e-kirjade kutsed", + "invitation_parsing_desc": "Tuvasta kalendrikutsed e-kirjade manustest ja kuva kalenditoimingud" + } + }, + "language_region": { + "title": "Keel, piirkond ja kellaaeg", + "description": "Keel, kuupäevavorming, kellaajavorming ja muud piirkondlikud eelistused", + "language": { + "label": "Keel", + "description": "Vali eelistatud keel", + "english": "English", + "french": "Français" + }, + "date_format": { + "label": "Kuupäevavorming", + "description": "Kuidas kuupäevi kirjade loendis kuvatakse", + "smart": "Nutikas (piirkonnateadlik)", + "relative": "Suhteline (1 t tagasi, 2 p tagasi)", + "full": "Alati täiskuupäev", + "preview_today": "Täna:", + "preview_this_week": "Sel nädalal:", + "preview_older": "Vanem:" + }, + "date_locale": { + "label": "Kuupäevavormingu piirkond", + "description": "Kuidas numbrilisi kuupäevi järjestatakse (päev, kuu, aasta)", + "auto": "Automaatne (vastavalt keelele)", + "iso": "ISO 8601 (YYYY-MM-DD)", + "dmy": "Päev/Kuu/Aasta", + "mdy": "Kuu/Päev/Aasta" + }, + "time_format": { + "label": "Kellaajavorming", + "description": "Vali 12- või 24-tunnise kella vahel", + "12h": "12-tunnine", + "24h": "24-tunnine" + }, + "first_day": { + "label": "Nädala esimene päev", + "description": "Alusta nädalat pühapäeval või esmaspäeval", + "sunday": "Pühapäev", + "monday": "Esmaspäev" + }, + "time_zone": { + "label": "Ajavöönd", + "description": "Kuva kirjade ja kalendri ajad selles ajavööndis, mitte brauseri teatatud ajavööndis", + "auto": "Automaatne ({zone})", + "preview_now": "Praegu:" + } + }, + "email_behavior": { + "clear_search_on_folder_change": { + "label": "Tühjenda otsing kausta vahetamisel", + "description": "Kaustale (Saabunud, Saadetud, …) klõpsamine tühjendab aktiivse otsingu ja avab selle kausta. Kui see on välja lülitatud, jääb otsing kehtima ja käivitub uuesti kaustas, millele lülitud." + }, + "request_read_receipt": { + "label": "Küsi vaikimisi lugemiskinnitust", + "description": "Luba uue kirja koostamisel vaikimisi lugemiskinnituse küsimine." + }, + "read_receipt_response": { + "label": "Vastamine lugemiskinnituse päringutele", + "description": "Mida teha, kui saabuv kiri küsib lugemiskinnitust.", + "ask": "Küsi iga kord", + "always": "Saada alati", + "never": "Ära kunagi saada" + }, + "title": "E-kirjade käitumine", + "description": "Seadista, kuidas e-kirju käsitletakse", + "mark_read": { + "label": "Märgi loetuks", + "description": "Millal märkida avatud e-kirjad loetuks", + "instant": "Koheselt", + "delay_3s": "3 sekundi pärast", + "delay_5s": "5 sekundi pärast", + "never": "Mitte kunagi" + }, + "delete_action": { + "label": "Kustutamistoiming", + "description": "Mis juhtub e-kirja kustutamisel", + "trash": "Liiguta prügikasti", + "trash_and_read": "Liiguta prügikasti ja märgi loetuks", + "permanent": "Kustuta jäädavalt", + "warning": "E-kirjad kustutatakse jäädavalt ja neid ei saa taastada. Seda toimingut ei saa tagasi võtta." + }, + "message_spacing": { + "label": "Kirja vahed", + "description": "Kirja sisu ümbritsev ruum lugemisvaates", + "auto": "Automaatne (soovitatud)", + "always": "Lisa alati ruumi", + "edge": "Servast servani" + }, + "plain_text_font": { + "label": "Lihtteksti kirjatüüp", + "description": "Lihttekstina saadetud kirjade kirjatüüp", + "mono": "Fikseeritud laiusega", + "sans": "Tavaline (sama, mis rakenduses)" + }, + "archive_mode": { + "label": "Arhiveeri kausta", + "description": "Kuidas korraldada e-kirju arhiveerimisel", + "single": "Ühte kausta", + "year": "Kaust aasta kohta", + "month": "Kaust kuu kohta", + "reorganize": "Korrasta olemasolev arhiiv", + "reorganize_success": "{count, plural, =0 {Ühtegi kirja ei olnud vaja korrastada} =1 {1 kiri korrastatud} other {# kirja korrastatud}}", + "reorganize_error": "Arhiivi korrastamine ebaõnnestus" + }, + "permanently_delete_junk": { + "label": "Kustuta rämpspost jäädavalt", + "description": "Kustuta e-kirjad rämpsposti kaustast jäädavalt, selle asemel et liigutada need prügikasti" + }, + "confirm_bulk_delete": { + "label": "Küsi kinnitust enne mitme kirja kustutamist", + "description": "Küsi enne mitme valitud kirja prügikasti teisaldamist. Lõplik kustutamine küsib alati." + }, + "mail_layout": { + "label": "Kirjade paigutus", + "description": "Vali klassikalise jagatud lugemispaani, Gmaili-laadse fokuseeritud lugemisvoo või Zimbra-laadse alumise lugemispaani vahel.", + "split": "Jagatud paan", + "split_description": "Kuva kirjade loend ja lugemispaan kõrvuti.", + "focus": "Fokuseeritud loend", + "focus_description": "Kuva iga kirja kohta üks rida ja ava kiri täislaiuses, hoides kaustade külgriba nähtaval.", + "horizontal": "Lugemispaan all", + "horizontal_description": "Kuva kirjade loend üleval ja ava valitud kiri selle all olevas lugemispaanis." + }, + "show_preview": { + "label": "Kuva eelvaate tekst", + "description": "Kuva e-kirja eelvaade loendis", + "focus_description": "Kuva eelvaate tekst fokuseeritud ühe rea kirjaloendi sees" + }, + "show_verification_codes": { + "label": "Näita kinnituskoode", + "description": "Paku sisselogimis- ja kinnituskirjade koodi ühe klõpsuga kopeerimiseks, nimekirjas ühe päeva jooksul ja kirjas endas" + }, + "disable_threading": { + "label": "Keela vestluste rühmitamine", + "description": "Kuva e-kirjad üksikute kirjadena vestluste kaupa rühmitamise asemel" + }, + "plain_text_mode": { + "label": "Ainult lihttekst", + "description": "Keela vormindatud teksti redaktor ja saada kõik kirjad ainult lihttekstina, sealhulgas vastused ja edastused" + }, + "auto_select_reply_identity": { + "label": "Vasta kirja saanud aadressilt", + "description": "Vastamisel saada kiri aadressilt, millele algne kiri saadeti. Sinu seadistatud identiteedid vastavad alati; kas ka teised sinu domeenide aadressid loetakse sobivaks (catch-all), määrab allpool olev „Vastuvõetud aadressi sobitamine“." + }, + "reply_identity_match": { + "label": "Vastuvõetud aadressi sobitamine", + "description": "Millised vastuvõetud aadressid loetakse sinu omaks. „Ainult täpne aadress“ valib ainult ühe sinu seadistatud identiteetidest. „Iga aadress minu domeenidel“ käsitleb ka iga muud sinu identiteedi domeenil olevat aadressi catch-all aliasena ja kirjutab From-päise selle järgi ümber. Vali täpne aadress, kui need aadressid on pigem meililistid, mitte aliased.", + "exact": "Ainult täpne aadress", + "domain": "Iga aadress minu domeenidel" + }, + "signature_position": { + "label": "Allkirja asukoht", + "description": "Kuhu lisada allkiri vastustes ja edastustes. Tsiteeritud teksti kohal mõjub loomuliku vastuse lõpetusena; all hoiab algse kirja katkematuna.", + "above_quote": "Enne tsiteeritud teksti", + "below_quote": "Pärast tsiteeritud teksti" + }, + "signature_separator": { + "label": "Allkirja eraldaja", + "description": "Lisa allkirja ette standardne „-- “ eraldusrida (RFC 3676). Lülita välja, kui eelistad, et kiri sulandub otse allkirjaga." + }, + "sub_address_delimiter": { + "label": "Alamaadressi eraldaja", + "description": "Märk, mis eraldab kasutajanime alamaadressi sildist. Kasuta sama eraldajat, mida kasutab sinu meiliserver (nt user{delimiter}tag@domain.com).", + "option": "{delimiter} (user{delimiter}tag@domain.com)", + "custom": "Kohandatud…", + "custom_input_label": "Kohandatud eraldusmärk" + }, + "attachment_click_action": { + "label": "Manusel klõpsamise toiming", + "description": "Vali, kas manusel klõpsamine kuvab eelvaate või laadib selle kohe alla", + "preview": "Kuva eelvaade, kui võimalik", + "download": "Laadi kohe alla" + }, + "attachment_position": { + "label": "Manuse asukoht", + "description": "Kuhu kuvada manused kirja päises", + "beside-sender": "Saatja kõrval", + "below-header": "Päise all" + }, + "emails_per_page": { + "10": "10 kirja", + "25": "25 kirja", + "50": "50 kirja", + "100": "100 kirja", + "label": "Kirju lehe kohta", + "description": "Korraga laaditavate kirjade arv" + }, + "always_light_mode": { + "label": "Kuva kirjad alati heledas režiimis", + "description": "Kuva kirja sisu heledas režiimis ka siis, kui rakendus on tumedas režiimis, vältimaks tumeda režiimi teisendusprobleeme" + }, + "external_content": { + "label": "Väline sisu", + "description": "Kuidas käsitleda pilte ja välist sisu", + "ask": "Küsi alati", + "block": "Blokeeri alati", + "allow": "Luba alati" + }, + "trusted_senders": { + "label": "Usaldusväärsed saatjad", + "description": "Halda saatjaid, kelle pildid laaditakse automaatselt", + "count_zero": "Puuduvad", + "count_one": "1 saatja", + "count_other": "{count} saatjat", + "modal_title": "Usaldusväärsed saatjad", + "empty_title": "Usaldusväärseid saatjaid pole veel lisatud", + "empty_description": "Blokeeritud piltidega kirja vaadates klõpsa „Usalda seda saatjat alati“, et lisada see siia.", + "add_manually": "Lisa saatja käsitsi", + "add_button": "Lisa", + "add_placeholder": "Sisesta e-posti aadress", + "search_placeholder": "Otsi saatjaid...", + "no_results": "Otsingule vastavaid saatjaid ei leitud", + "remove": "Eemalda", + "close": "Sulge", + "invalid_email": "Palun sisesta kehtiv e-posti aadress", + "already_added": "See saatja on juba usaldusväärne", + "save_error": "Salvestamine ebaõnnestus - üksikasjade jaoks kontrolli kontaktide silumislogi", + "use_address_book_label": "Sünkrooni aadressiraamatuga", + "use_address_book_description": "Salvesta usaldusväärsed saatjad eraldi „Usaldusväärsed saatjad“ aadressiraamatusse, et need sünkroniseeruksid kõigis su seadmetes" + }, + "hover_actions": { + "label": "Kiirtoimingud hiirega üle liikudes", + "description": "Vali, millised kiirtoimingud kuvatakse, kui viid hiire kirja kohale loendis", + "delete": "Kustuta", + "star": "Lisa/eemalda täht", + "mark_read": "Märgi loetuks/lugemata", + "archive": "Arhiveeri", + "tag": "Silt", + "spam": "Märgi rämpspostiks", + "not_spam": "Pole rämpspost", + "none_selected": "Ühtegi toimingut pole valitud", + "mode_label": "Kuvamisrežiim", + "mode_inline": "Reasisene", + "mode_floating": "Hõljuv", + "corner_label": "Hõljuva asukoht", + "corner_top-left": "Üleval vasakul", + "corner_top-right": "Üleval paremal", + "corner_bottom-left": "All vasakul", + "corner_bottom-right": "All paremal" + }, + "default_mail_program": { + "label": "Vaikimisi meiliprogramm", + "description": "Registreeri {appName} mailto: linkide vaikimisi meiliprogrammiks", + "button": "Määra vaikimisi", + "success": "Brauserilt küsiti kinnitust vaikimisi määramiseks", + "error": "Sinu brauser ei toeta seda funktsiooni" + }, + "attachment_reminder": { + "label": "Manuse meeldetuletus", + "description": "Hoiata enne saatmist, kui kiri mainib manuseid, kuid ühtegi pole lisatud", + "keywords_label": "Käivitavad märksõnad", + "keywords_description": "Sõnad või fraasid, mis käivitavad meeldetuletuse, kui neid kirjas leidub", + "add_placeholder": "Lisa märksõna...", + "add": "Lisa", + "remove": "Eemalda" + }, + "empty_subject_warning": { + "label": "Tühja teemarea hoiatus", + "description": "Küsi kinnitust enne teemarealta kirja saatmist." + }, + "recipient_mentions": { + "label": "Maini adressaate @-ga", + "description": "Kirjas @ trükkimine pakub selle adressaate ja lisab valitu eesnime. Enter või Tab valib esiletõstetud nime." + }, + "hide_inline_image_attachments": { + "label": "Peida reasisesed pildid manuste hulgast", + "description": "Kirja sisusse põimitud pilte ei kuvata eraldi manustena" + }, + "attachment_image_previews": { + "label": "Kuva manustes piltide eelvaated", + "description": "Kuva pildimanused pisipildikaartidena üldiste failiikoonide asemel" + }, + "send_delay": { + "label": "Saatmise tühistamine / saatmise viivitus", + "description": "Viivita tavalisi saatmisi lühikese serveripoolse ajaakna võrra.", + "off": "Väljas", + "seconds": "{seconds} sekundit", + "unsupported": "Praegune konto ei toeta viivitatud saatmist. Seade salvestatakse siiski teiste kontode jaoks." + }, + "return_to_list_after_action": { + "label": "Naase loendisse pärast kustutamist või lugemata märkimist", + "description": "Pärast avatud kirja kustutamist või lugemata märkimist naase kirjade loendisse, selle asemel et avada järgmine kiri." + }, + "swipe_right_action": { + "label": "Paremale pühkimise toiming (mobiil)", + "description": "Puuteseadmetel toiming, mis käivitub, kui pühid kirja loendis paremale." + }, + "swipe_left_action": { + "label": "Vasakule pühkimise toiming (mobiil)", + "description": "Puuteseadmetel toiming, mis käivitub, kui pühid kirja loendis vasakule." + }, + "swipe_actions": { + "none": "Puudub", + "archive": "Arhiveeri", + "delete": "Kustuta", + "mark_read": "Lülita loetud olekut", + "star": "Lülita täht", + "spam": "Märgi rämpspostiks" + }, + "rtl_editing": { + "label": "Paremalt vasakule kirjutamise tugi", + "description": "Lisab koostamise tööriistaribale suunanupu, millega saad määrata lõigud vasakult paremale või paremalt vasakule" + } + }, + "composer": { + "title": "Koostamine", + "description": "Seadista kirja koostamise sätteid", + "autosave": { + "label": "Automaatsalvestuse intervall", + "description": "Kui sageli mustandeid automaatselt salvestatakse", + "30s": "Iga 30 sekundi järel", + "1m": "Iga minuti järel", + "2m": "Iga 2 minuti järel", + "5m": "Iga 5 minuti järel" + }, + "send_confirmation": { + "label": "Saatmise kinnitus", + "description": "Küsi kinnitust enne kirjade saatmist" + }, + "default_reply": { + "label": "Vaikimisi vastamisrežiim", + "description": "Vaikimisi toiming vastamisel klõpsates", + "reply": "Vasta", + "reply_all": "Vasta kõigile" + } + }, + "privacy": { + "title": "Privaatsus ja turvalisus", + "description": "Halda oma privaatsuse ja turvalisuse sätteid", + "external_images": { + "label": "Blokeeri välised pildid", + "description": "Väldi jälgimist väliste piltide kaudu" + }, + "session_timeout": { + "label": "Seansi aegumine", + "description": "Logi automaatselt välja pärast tegevusetust", + "never": "Mitte kunagi", + "30m": "30 minutit", + "1h": "1 tund", + "4h": "4 tundi" + }, + "clear_cache": { + "label": "Tühjenda vahemälu", + "description": "Eemalda vahemällu salvestatud andmed ja ajutised failid", + "button": "Tühjenda vahemälu", + "confirm": "Kas oled kindel, et soovid vahemälu tühjendada?", + "success": "Vahemälu tühjendati edukalt" + } + }, + "account": { + "title": "Konto", + "description": "Vaata oma konto teavet", + "name_label": "Kuvatav nimi", + "username_label": "Kasutajanimi", + "account_type_label": "Konto tüüp", + "auth_method_label": "Autentimine", + "auth_method_oauth": "Ühekordne sisselogimine (OAuth/OIDC)", + "auth_method_basic": "Parool", + "auth_method_token": "Juurdepääsuluba", + "demo_account": "Demokonto", + "email": { + "label": "E-posti aadress", + "value": "{email}" + }, + "server": { + "label": "JMAP server", + "value": "{server}" + }, + "storage": { + "label": "Mahu kasutus", + "used": "{used} / {total} kasutatud", + "percentage": "{percent}% kasutatud" + }, + "last_sync": { + "label": "Viimane sünkroonimine", + "value": "{time}" + }, + "accounts": { + "title": "Sisselogitud kontod", + "description": "Lohista, et muuta kontode järjekorda konto rippmenüüs", + "active": "Praegu aktiivne konto", + "default_badge": "Vaikimisi konto", + "set_default": "Määra vaikimisi kontoks", + "switch_to": "Lülitu sellele kontole", + "move_up": "Liiguta üles", + "move_down": "Liiguta alla", + "drag_handle": "Lohista järjekorra muutmiseks", + "add": "Lisa konto" + }, + "backup": { + "title": "Kontode nimekirja varukoopia", + "description": "Hoia selle brauseri kontode nimekirja serveris, krüpteeritult parooliga, mida tead ainult sina, ja too see tagasi teises seadmes. Postkastide paroole ei salvestata: igasse taastatud kontosse logid ise sisse.", + "status_none": "Kontole {account} pole nimekirja salvestatud.", + "status_saved": "Kontole {account} on nimekiri salvestatud.", + "save": "Salvesta nimekiri", + "restore": "Taasta nimekiri", + "delete": "Kustuta salvestatud nimekiri", + "cancel": "Tühista", + "delete_confirm": "Kas kustutada salvestatud kontode nimekiri serverist?", + "password": "Varukoopia parool", + "password_hint": "Vähemalt 10 märki. Seda ei saa taastada: kui unustad, salvesta nimekiri uuesti uue parooliga.", + "restore_hint": "Parool, mille valisid nimekirja salvestamisel.", + "confirm": "Kinnita parool", + "saved": "Nimekiri salvestatud ({count, plural, one {# konto} other {# kontot}}).", + "restored": "Lisatud kontosid: {added}. Juba olemasolevaid ja uuendatud kontosid: {updated}. Sisselogimiseks ava iga uus konto kontode nimekirjast.", + "skipped": "{count, plural, one {# kontot} other {# kontot}} ei lisatud: kontode piir on täis.", + "deleted": "Salvestatud nimekiri kustutatud.", + "errors": { + "mismatch": "Paroolid ei kattu.", + "password_length": "Kasuta vähemalt 10 märki.", + "unlock_failed": "Vale parool või nimekiri salvestati teisele kontole.", + "owner_signin_required": "Logi sellesse kontosse uuesti sisse ja proovi siis uuesti.", + "https_required": "See vajab turvalist (HTTPS) ühendust.", + "storage_failed": "Server ei saanud nimekirja lugeda ega salvestada. Proovi hiljem uuesti." + } + }, + "shared_accounts": { + "title": "Minuga jagatud", + "description": "Grupi- ja jagatud kontod, mida saad hallata. Vali üks, et muuta selle filtreid, puhkusevastust, kalendreid ja kontakte.", + "shared_label": "Jagatud konto" + } + }, + "scoped": { + "back": "Tagasi minu konto juurde", + "managing": "Haldan: {name}" + }, + "security": { + "title": "Konto turvalisus", + "description": "Halda oma parooli, kaheastmelist autentimist ja turvasätteid", + "detecting": "Serveri võimekuste tuvastamine...", + "not_available": "Konto turvahaldus ei ole selle meiliserveri jaoks saadaval. Vajalikud õigused võivad olla keelatud. Üksikasjade jaoks vaata dokumentatsiooni.", + "password": { + "title": "Muuda parooli", + "current": "Praegune parool", + "new": "Uus parool", + "confirm": "Kinnita uus parool", + "submit": "Muuda parooli", + "success": "Parool muudeti edukalt", + "error_title": "Parooli muutmine ebaõnnestus", + "error_mismatch": "Uued paroolid ei kattu", + "error_min_length": "Parool peab olema vähemalt 8 tähemärki pikk", + "error_generic": "Parooli muutmine ebaõnnestus" + }, + "display_name": { + "label": "Kuvatav nimi", + "description": "Sinu nimi, nagu see serveris kuvatakse", + "placeholder": "Sisesta oma kuvatav nimi", + "save": "Salvesta", + "success": "Kuvatav nimi uuendatud", + "error": "Kuvatava nime uuendamine ebaõnnestus" + }, + "totp": { + "section_title": "Kaheastmeline autentimine", + "label": "TOTP autentimine", + "description": "Lisa täiendav turvakiht ajapõhise ühekordse parooliga", + "active": "Lubatud", + "inactive": "Keelatud", + "enabled": "Kaheastmeline autentimine lubatud", + "disabled": "Kaheastmeline autentimine keelatud", + "enable_error": "2FA lubamine ebaõnnestus", + "disable_error": "2FA keelamine ebaõnnestus", + "setup_instructions": "Kopeeri see URL oma autentimisrakendusse (Google Authenticator, Authy jne):", + "verification_code": "Kinnituskood", + "confirm": "Kinnita", + "disable": "Keela", + "disable_confirm_prompt": "Sisesta oma parool, et keelata kaheastmeline autentimine.", + "password_required": "Parool on kohustuslik", + "code_required": "Kinnituskood on kohustuslik", + "code_invalid": "Vale kinnituskood. Kontrolli autentimisrakendust ja proovi uuesti." + }, + "app_passwords": { + "title": "Rakenduste paroolid", + "description": "Loo paroolid rakendustele, mis ei toeta kaheastmelist autentimist", + "add": "Lisa", + "create": "Loo", + "cancel": "Tühista", + "done": "Valmis", + "generate": "Genereeri", + "name_label": "Rakenduse nimi", + "name_placeholder": "nt Thunderbird, iPhone Mail", + "expires_label": "Aegub (valikuline)", + "allowed_ips_label": "Lubatud IP-d (valikuline)", + "allowed_ips_placeholder": "10.0.0.5, 192.168.1.0/24", + "allowed_ips_hint": "Eraldatud koma või tühikuga. Jäta tühjaks, et lubada kõik IP-d.", + "password_label": "Parool (jäta tühjaks automaatseks genereerimiseks)", + "password_placeholder": "Genereeritakse automaatselt, kui tühi", + "copy_now_warning": "Kopeeri see parool kohe - seda ei kuvata enam uuesti.", + "added": "Rakenduse parool loodud", + "removed": "Rakenduse parool eemaldatud", + "add_error": "Rakenduse parooli loomine ebaõnnestus", + "remove_error": "Rakenduse parooli eemaldamine ebaõnnestus", + "none": "Ühtegi rakenduse parooli pole seadistatud" + }, + "api_keys": { + "title": "API võtmed", + "description": "Loo API võtmeid skriptidele ja integratsioonidele, mis suhtlevad serveriga otse", + "name_label": "Võtme nimi", + "name_placeholder": "nt Varunduse skript, CI runner", + "copy_now_warning": "Kopeeri see API võti kohe - seda ei kuvata enam uuesti.", + "added": "API võti loodud", + "removed": "API võti eemaldatud", + "add_error": "API võtme loomine ebaõnnestus", + "remove_error": "API võtme eemaldamine ebaõnnestus", + "none": "Ühtegi API võtit pole seadistatud" + }, + "encryption": { + "section_title": "Salvestatud andmete krüpteerimine", + "label": "E-kirjade krüpteerimine", + "description": "Krüpteeri serveris salvestatud kirjad täiendava privaatsuse tagamiseks", + "active": "{type} krüpteerimine lubatud", + "inactive": "Keelatud", + "enabled": "Salvestatud andmete krüpteerimine lubatud", + "disabled_success": "Salvestatud andmete krüpteerimine keelatud", + "error": "Krüpteerimissätete uuendamine ebaõnnestus", + "algorithm_label": "Krüpteerimisalgoritm", + "encrypt_on_append": "Krüpteeri uued kirjad üleslaadimisel", + "allow_spam_training": "Luba rämpsposti tuvastuse treenimine enne kirjade krüpteerimist", + "enable_encryption": "Luba krüpteerimine", + "enable_tooltip": "Luba krüpteerimine selle võtmega", + "configure_title": "Luba krüpteerimine selle võtmega", + "enable_button": "Luba", + "disable_tooltip": "Keela krüpteerimine", + "enabled_success": "Salvestatud andmete krüpteerimine lubatud" + }, + "public_keys": { + "name_label": "Avaliku võtme nimi", + "name_placeholder": "nt Minu võti", + "key_label": "Avalik võti (S/MIME või PGP ASCII-armored)", + "key_placeholder": "Kleebi oma avalik võti siia", + "none": "Ühtegi avalikku võtit pole seadistatud" + }, + "email_client": { + "title": "E-posti kliendi seadistus", + "description": "Kasuta neid andmeid oma lauaarvuti või mobiili e-posti kliendi seadistamiseks (Thunderbird, Apple Mail, Outlook jne)", + "jmap_username_label": "JMAP kasutajanimi", + "copy": "Kopeeri", + "copied": "Kopeeritud", + "password_instructions": "Kasuta oma e-posti kliendisse sisselogimiseks ülaltoodud JMAP kasutajanime koos rakenduse parooliga. Kui sul veel pole rakenduse parooli, loo see ülaltoodud jaotises." + }, + "link_device": { + "title": "Ühenda mobiilirakendus", + "description": "Logi Bulwark Mail mobiilirakendusse sisse ilma midagi sisestamata. Genereeri siin QR-kood ja skaneeri see rakenduse sisselogimisekraanilt.", + "generate": "Kuva QR-kood", + "regenerate": "Kuva uus kood", + "instructions": "Ava Bulwark Mail rakendus, puuduta sisselogimisekraanil „Skaneeri QR-kood“ ja suuna kaamera siia.", + "expires_in": "See kood aegub {seconds} sekundi pärast. Seda saab kasutada ainult üks kord.", + "expired": "See kood on aegunud.", + "error": "Sidumiskoodi loomine ebaõnnestus. Palun proovi uuesti.", + "password_prompt": "Sisesta kinnituseks oma parool. Sinu telefon saab oma sisselogimise; parooli telefonile ei saadeta.", + "show_password": "Näita parooli", + "hide_password": "Peida parool", + "continue": "Jätka", + "error_wrong_password": "Vale parool. Proovi uuesti.", + "totp_prompt": "Sisesta kood oma autentimisrakendusest.", + "error_password_or_code": "Parool või kood on vale.", + "error_not_signed_in": "Sinu seanss on aegunud. Seadme sidumiseks logi uuesti sisse.", + "error_impersonation": "Seadmeid ei saa siduda, kui vaatad teise kasutaja postkasti.", + "error_too_many_attempts": "Liiga palju katseid. Oota hetk ja proovi uuesti.", + "error_session_secret": "Seadme sidumine pole sellel serveril seadistatud (puudub SESSION_SECRET). Küsi administraatorilt.", + "error_server_unreachable": "Meiliserveriga ei saanud ühendust. Proovi uuesti.", + "error_pairing_unavailable": "Sinu meiliserver ei luba seadet sel viisil siduda. Küsi administraatorilt.", + "qr_alt": "Sisselogimise QR-kood", + "link_label": "Sisselogimise link", + "copy_link": "Kopeeri sisselogimise link", + "copied": "Kopeeritud", + "copy_hint": "Kaamerat pole? Kopeeri link ja kleebi see rakenduses valikuga „Kleebi sisselogimise link”.", + "success_title": "Telefonis sisse logitud", + "success_body": "Võid selle lehe sulgeda. Teise seadme sidumiseks näita uut koodi.", + "link_another": "Seo teine seade", + "use_sso": "Kasuta hoopis ühekordset sisselogimist", + "error_insecure_server": "Mobiilirakendus ühendub meiliserveritega ainult üle https-i ja see server kasutab http-d." + } + }, + "identities": { + "title": "Saatja identiteedid", + "description": "Halda e-posti aadresse, millelt saad kirju saata", + "identities_count": { + "label": "Sinu identiteedid", + "description": "Saatmiseks seadistatud e-posti aadressid", + "count_zero": "Identiteete pole", + "count_one": "1 identiteet", + "count_other": "{count} identiteeti" + }, + "manage": "Halda identiteete", + "sub_addressing": { + "label": "Alamaadressimine", + "description": "Kasuta silte, näiteks user+tag@domain.com, sisenevate kirjade korraldamiseks", + "learn_more": "Loe lähemalt" + } + }, + "vacation": { + "title": "Äraolekuteade", + "description": "Vasta automaatselt sisenevatele kirjadele, kui oled eemal", + "loading": "Äraolekuteate seadete laadimine...", + "not_supported": "Sinu meiliserver ei toeta äraolekuteateid.", + "fetch_error": "Äraolekuteate seadete laadimine ebaõnnestus. Palun proovi uuesti.", + "status": { + "label": "Äraolekuteade", + "description": "Saada automaatvastus inimestele, kes sulle kirjutavad", + "active": "Aktiivne", + "inactive": "Mitteaktiivne" + }, + "date_range": { + "start": "Alguskuupäev", + "start_description": "Jäta tühjaks, kui alguspiirangut pole vaja", + "end": "Lõppkuupäev", + "end_description": "Jäta tühjaks, kui lõpupiirangut pole vaja" + }, + "message": { + "subject_label": "Teema", + "subject_description": "Automaatvastuse teemarida", + "subject_placeholder": "Olen eemal", + "body_label": "Sõnumi sisu", + "body_description": "Lihtteksti kujul sõnumi sisu", + "body_placeholder": "Täname kirja eest. Olen hetkel eemal ja vastan pärast tagasi jõudmist.", + "html_label": "Vormindatud sõnum (HTML)", + "html_description": "Lisa rikkalikult vormindatud versioon linkide ja kujundusega. Saajad, kelle meiliklient seda kuvada ei suuda, näevad ülaltoodud lihtteksti.", + "html_placeholder": "Kirjuta vormindatud äraolekuvastus…" + }, + "preview": { + "title": "Eelvaade", + "show": "Näita eelvaadet", + "hide": "Peida eelvaade" + }, + "save": "Salvesta muudatused", + "saving": "Salvestamine...", + "warnings": { + "end_before_start": "Lõppkuupäev peab olema hilisem kui alguskuupäev", + "invalid_date": "Sisesta kehtiv algus- ja lõppkuupäev koos kellaajaga või jäta väli tühjaks", + "start_in_past": "Alguskuupäev on minevikus", + "empty_body": "Sõnumi sisu on tühi – saajad saavad tühja vastuse", + "subject_too_long": "Teema on serveri jaoks liiga pikk (kuni {max} baiti).", + "body_too_long": "Sõnum on serveri jaoks liiga pikk (kuni {max} baiti, vormindus kaasa arvatud).", + "forward_address": "Sisesta kehtiv aadress, kuhu edastada", + "not_running": "Edastus või vastuse adressaadid on salvestatud, kuid pole praegu aktiivsed. Salvesta, et need uuesti sisse lülitada." + }, + "forward": { + "title": "Edastamine", + "description": "Edastab saabuvad kirjad teisele aadressile, automaatvastusega või ilma, ülaltoodud ajavahemiku jooksul (ilma lõppkuupäevata kuni väljalülitamiseni). Rämpsposti ei edastata.", + "enabled_label": "Edasta kirjad", + "to_label": "Edasta aadressile", + "to_placeholder": "email@example.com", + "keep_label": "Hoia saabunud kirjade kaustas", + "keep_description": "Muidu kiri ainult edastatakse: seda ei hoita selles postkastis ja ühtegi filtrireeglit sellele ei rakendata." + }, + "audience": { + "label": "Vasta", + "description": "Sisesaatjad: {domains}", + "all": "Kõigile saatjatele", + "internal": "Ainult sisesaatjatele", + "external": "Ainult välissaatjatele" + }, + "auto_reply": { + "title": "Automaatvastus" + } + }, + "folders": { + "role_memos": "Märkmed", + "title": "Kaustad", + "description": "Halda oma e-posti kaustu ja määra neile standardrollid", + "folder_list": "Sinu kaustad", + "folder_list_description": "Kaustaikooni kohandamiseks klõpsa sellel", + "standard_roles": "Standardsed kaustarollid", + "standard_roles_description": "Määra, milliseid kaustu kasutatakse postkasti standardrollideks, nagu Sisendkast, Saadetud, Prügikast jne.", + "role_inbox": "Sisendkast", + "role_drafts": "Mustandid", + "role_sent": "Saadetud", + "role_trash": "Prügikast", + "role_junk": "Rämpspost", + "role_archive": "Arhiiv", + "role_scheduled": "Ajastatud", + "role_snoozed": "Edasi lükatud", + "role_none": "Puudub", + "create_folder": "Loo kaust", + "create_subfolder": "Loo alamkaust", + "reorder": "Lohista üles-alla ümberjärjestamiseks, vasakule-paremale ülemkausta muutmiseks", + "reorder_error": "Kaustade ümberjärjestamine ebaõnnestus", + "move_error": "Kausta liigutamine ebaõnnestus", + "select_folder": "Vali {name}", + "select_hint": "Vali. Shift+klõps valib kõik kaustad kuni viimati klõpsatuni.", + "selected_count": "{count, plural, one {# kaust} other {# kausta}} valitud", + "move_to": "Liiguta...", + "move_to_top_level": "Ülemine tase", + "move": "Liiguta", + "clear_selection": "Tühista valik", + "folders_moved": "{count, plural, one {# kaust liigutatud} other {# kausta liigutatud}}", + "move_partial_error": "{count, plural, one {# kausta} other {# kausta}} ei õnnestunud liigutada", + "subfolder_of": "Kausta {name} sees", + "subfolder_name": "Alamkausta nimi", + "new_folder_name": "Kausta nimi", + "rename": "Nimeta ümber", + "change_icon": "Muuda ikooni", + "delete": "Kustuta", + "confirm_delete": "Kas oled kindel, et soovid kustutada kausta \"{name}\"? Selles kaustas olevad kirjad liigutatakse prügikasti.", + "create": "Loo", + "cancel": "Tühista", + "no_folders": "Kohandatud kaustu pole", + "cannot_delete_role": "Standardrolliga kausta ei saa kustutada. Eemalda enne roll.", + "folder_created": "Kaust loodud", + "folder_renamed": "Kaust nimetatud ümber", + "folder_deleted": "Kaust kustutatud", + "role_updated": "Kausta roll uuendatud", + "error_create": "Kausta loomine ebaõnnestus", + "error_rename": "Kausta ümbernimetamine ebaõnnestus", + "error_delete": "Kausta kustutamine ebaõnnestus", + "error_delete_has_children": "Kausta ei saa kustutada: selles on veel alamkaustu. Kustuta või liiguta need enne.", + "error_delete_has_email": "Kausta ei saa kustutada: selles on veel kirju. Liiguta või kustuta need enne.", + "error_role": "Kausta rolli uuendamine ebaõnnestus" + }, + "advanced": { + "title": "Täpsemalt", + "description": "Täpsemad valikud ja arendaja seaded", + "debug_mode": { + "label": "Silumisrežiim", + "description": "Luba tõrkeotsinguks üksikasjalik logimine" + }, + "debug_categories": { + "description": "Vali, milliseid kategooriaid logida. Lülita välja need, mida ei vaja, et vähendada konsooli müra.", + "jmap": "JMAP klient", + "jmap_description": "Postkasti toimingud, kirjade laadimine ja JMAP protokolli päringud", + "calendar": "Kalender", + "calendar_description": "Kalendrisündmused, import ja ajastussõnumid", + "tasks": "Ülesanded", + "tasks_description": "Kalendriülesannete loomine, laadimine ja uuendamine", + "auth": "Autentimine", + "auth_description": "Sisselogimine, TOTP, tokenite vahetus ja seansihaldus", + "filters": "Filtrid", + "filters_description": "Sieve filtrireeglid ja äraolekuskriptid", + "email": "Kirjade vaatamine", + "email_description": "Kirjade renderdamine, TNEF-i töötlus ja loetuks märkimine", + "push": "Push-teavitused", + "push_description": "Push-teavituste seadistus ja edastamine", + "contacts": "Kontaktid ja aadressiraamatud", + "contacts_description": "Kontaktide sünkroonimine, aadressiraamatu toimingud ja usaldusväärsed saatjad" + }, + "settings_sync": { + "label": "Seadete sünkroonimine", + "description": "Sünkroni oma seaded brauserite ja seadmete vahel" + }, + "sender_favicons": { + "label": "Saatja favicon'id", + "description": "Näita äriliste saatjate profiilipiltidena veebisaitide ikoone" + }, + "show_avatars_in_junk": { + "label": "Näita avatare rämpsposti kaustas", + "description": "Näita rämpsposti kaustas saatjate profiilipilte ja favicon'e. Vaikimisi välja lülitatud, et mitte anda õngitsuskatsetele visuaalset usaldusväärsust." + }, + "keyboard_shortcuts": { + "label": "Klaviatuuri otseteed", + "description": "Vaata saadaolevaid klaviatuuri otseteid", + "button": "Vaata otseteid" + }, + "refresh_cache": { + "label": "Värskenda vahemällu salvestatud andmeid", + "description": "Laadi kontaktid, kalendrid ja kaustad serverist uuesti. Kontod ja seansid jäävad alles — parandab aegunud või vale kuva ilma välja logimata.", + "button": "Värskenda" + }, + "reset_settings": { + "label": "Lähtesta seaded", + "description": "Taasta kõik seaded vaikeväärtustele", + "button": "Lähtesta vaikeväärtustele" + }, + "export_settings": { + "label": "Ekspordi seaded", + "description": "Laadi oma seaded alla JSON-ina", + "button": "Ekspordi" + }, + "import_settings": { + "label": "Impordi seaded", + "description": "Lae seaded üles JSON-failist", + "button": "Impordi" + }, + "about": { + "title": "Bulwark Webmail", + "source_code": "Lähtekood" + }, + "spam_siege": { + "title": "Rämpsposti piiramine", + "intro": "Klõpsa rämpsposti ja õngitsuse peal enne, kui need sinu postkasti jõuavad. Lase päris kirjad läbi. Kui kaotad kõik kolm kilpi, langeb postkast.", + "kinds": { + "spam": "Rämpspost", + "phishing": "Õngitsus", + "legit": "Päris kiri" + }, + "click_to_block": "Klõpsa blokeerimiseks", + "let_through": "Lase läbi", + "start": "Alusta", + "play_again": "Mängi uuesti", + "score": "Skoor", + "combo": "Seeriabonus", + "shields_left": "{count} / {total} kilpi alles", + "seconds": "{seconds}s", + "best": "Parim: {score}", + "new_best": "Uus rekord", + "held": "Postkast peetud", + "overrun": "Postkast vallutatud", + "stats": { + "caught": "Blokeeritud", + "delivered": "Kohale jõudnud", + "mistakes": "Vead" + } + } + }, + "sidebar_apps": { + "title": "Külgriba rakendused", + "description": "Halda kohandatud rakendusi ja linke oma külgribal", + "keep_loaded": "Hoia rakendused laaditud", + "keep_loaded_description": "Hoia lisatud rakendused vahetamisel taustal töös, et vältida uuesti laadimist", + "managed_title": "Pakub sinu administraator", + "managed_description": "Need rakendused on seadistatud kõigile ja neid ei saa muuta.", + "manage_title": "Kohandatud rakendused", + "manage_description": "Lisa, muuda või eemalda oma külgriba kohandatud rakendusi" + }, + "contacts": { + "title": "Kontaktid", + "description": "Impordi ja ekspordi oma kontaktid", + "group_by_letter_label": "Rühmita esitähe järgi", + "group_by_letter_description": "Näita kontaktide loendis tähestikulisi jaotisepealkirju", + "sort_by_last_name_label": "Sordi perekonnanime järgi", + "sort_by_last_name_description": "Järjesta kontaktide loend perekonnanime järgi, et pereliikmed oleksid koos", + "import_label": "Impordi kontaktid", + "import_description": "Impordi kontaktid vCard (.vcf) failist", + "export_label": "Ekspordi kontaktid", + "export_description": "Ekspordi kõik kontaktid vCard (.vcf) failina", + "manage_title": "Aadressiraamatud", + "manage_description": "Nimeta oma aadressiraamatud ümber", + "no_address_books": "Aadressiraamatuid ei leitud", + "categories_title": "Kategooriad", + "categories_description": "Nimeta kontaktikategooriad ümber", + "no_categories": "Kategooriaid ei leitud" + }, + "downloads": { + "title": "Allalaadimised", + "description": "Kohanda, kuidas allalaaditud kirjad ja manused nimetatakse.", + "reset": "Taasta vaikeväärtus", + "preview": "Eelvaade:", + "email_template": { + "label": "Kirja (.eml) failinimi", + "description": "Mall, mida kasutatakse kirja eksportimisel või failisüsteemi lohistamisel. Laiend .eml lisatakse automaatselt." + }, + "attachment_template": { + "label": "Manuse failinimi", + "description": "Mall, mida kasutatakse manuse allalaadimisel või lohistamisel. Kui jätad välja '{filename}' ja '{ext}', säilib algne laiend." + }, + "bundle_template": { + "label": "Mitme kirja .zip-faili nimi", + "description": "Mall, mida kasutatakse mitme valitud kirja lohistamisel või allalaadimisel ühe .zip-arhiivina. Laiend .zip lisatakse automaatselt." + }, + "spaces": { + "label": "Tühikud", + "description": "Asenda tulemuseks oleva failinime tühikud muu märgiga.", + "keep": "Säilita tühikud", + "underscore": "Asenda märgiga _", + "dash": "Asenda märgiga -" + }, + "lowercase": { + "label": "Väiketähed", + "description": "Muuda kogu failinimi väiketähtedeks." + }, + "strip_diacritics": { + "label": "Eemalda diakriitikud", + "description": "Teisenda diakriitikutega tähed nende ASCII vastavusteks (ä → a, é → e). Kasulik tööriistadele, mis rikuvad Unicode failinimesid." + }, + "collapse_separators": { + "label": "Ahenda korduvad eraldajad", + "description": "Ahenda järjestikused tühikud, alakriipsud või sidekriipsud üheks märgiks." + }, + "after_export": { + "label": "Pärast eksportimist", + "description": "Soovi korral liiguta kiri pärast .eml-ina eksportimist.", + "keep": "Jäta postkasti", + "archive": "Liiguta arhiivi", + "trash": "Liiguta prügikasti" + } + }, + "filters": { + "title": "E-posti filtrid", + "description": "Loo reegleid sisenevate kirjade automaatseks sortimiseks, sildistamiseks ja haldamiseks", + "add_rule": "Lisa reegel", + "no_rules": "Filtrireegleid pole", + "no_rules_description": "Loo reegleid sisenevate kirjade automaatseks korraldamiseks", + "vacation_active": "Äraolekuteade on aktiivne", + "vacation_active_description": "Automaatvastus on sisenevatele sõnumitele lubatud", + "vacation_configure": "Seadista", + "edit_rule": "Muuda reeglit", + "new_rule": "Uus reegel", + "delete_rule": "Kustuta reegel", + "delete_confirm": "Kas oled kindel, et soovid selle reegli kustutada?", + "enable": "Luba", + "disable": "Keela", + "raw_editor": "Sieve lähtekoodi redaktor", + "raw_editor_warning": "Sieve lähtekoodi muutmine võib visuaalse reeglite redigeerimise katki teha. Siin tehtud muudatused tühistavad visuaalse koostaja.", + "validate": "Valideeri", + "validation_success": "Skript on kehtiv", + "validation_error": "Skriptis on vigu", + "save": "Salvesta reeglid", + "saving": "Salvestamine...", + "saved": "Filtrid salvestatud edukalt", + "save_failed": "Filtrite salvestamine ebaõnnestus", + "loading": "Filtrite laadimine...", + "not_supported": "Sinu meiliserver ei toeta e-posti filtreid.", + "rule_name": "Reegli nimi", + "rule_name_placeholder": "nt uudiskirjade sortimine", + "match_all": "Vasta KÕIGILE tingimustele", + "match_any": "Vasta MISTAHES tingimusele", + "conditions": "Tingimused", + "add_condition": "Lisa tingimus", + "actions": "Tegevused", + "add_action": "Lisa tegevus", + "stop_processing": "Peata järgmiste reeglite töötlemine", + "include_spam": "Liiguta ka rämpspostiks märgitud kirjad", + "attachment_type_placeholder": "nt pdf, doc, jpg", + "value_placeholder_multi": "Väärtus (mitu, komadega eraldatud)", + "condition_fields": { + "attachment": "Manus", + "from": "Saatja", + "to": "Saaja", + "cc": "Koopia", + "subject": "Teema", + "header": "Kohandatud päis", + "size": "Suurus", + "body": "Sisu", + "all": "Kõik kirjad" + }, + "comparators": { + "has_any": "on olemas", + "has_type": "tüübiga", + "contains": "sisaldab", + "not_contains": "ei sisalda", + "is": "on täpselt", + "not_is": "ei ole", + "starts_with": "algab", + "ends_with": "lõpeb", + "matches": "vastab mustrile", + "greater_than": "on suurem kui", + "less_than": "on väiksem kui", + "address_is": "on aadress", + "domain_is": "on domeen" + }, + "action_types": { + "move": "Liiguta kausta", + "copy": "Kopeeri kausta", + "forward": "Suuna edasi", + "mark_read": "Märgi loetuks", + "star": "Märgi tärniga", + "add_label": "Lisa silt", + "discard": "Hülga (kustuta vaikselt)", + "reject": "Lükka tagasi sõnumiga", + "keep": "Jäta sisendkasti", + "stop": "Peata töötlemine" + }, + "move_to_folder": "Vali kaust", + "copy_to_folder": "Vali kaust", + "forward_to": "Suuna edasi e-posti aadressile", + "forward_placeholder": "email@example.com", + "forward_keep_copy": "Hoia koopia", + "forward_limit": "Edastuspiir ühe kirja kohta sellel serveril: {count}. Lisaedastused jäetakse vahele.", + "forward_unavailable": "See server ei luba edastamist. Filtrireeglite edastustoimingutel pole mõju.", + "reject_message": "Tagasilükkamise sõnum", + "reject_placeholder": "Sinu kiri on tagasi lükatud", + "label_name": "Sildi nimi", + "label_placeholder": "Vali silt", + "header_name": "Päise nimi", + "header_placeholder": "nt X-Mailing-List", + "size_bytes": "Suurus baitides", + "size_placeholder": "nt 1000000", + "system_managed": "Süsteemi hallatav reegel", + "opaque_warning": "See skript on muudetud väljaspool visuaalset koostajat. Saadaval on ainult Sieve lähtekoodi redigeerimine.", + "open_sieve_editor": "Ava Sieve lähtekoodi redaktor", + "fetch_error": "Filtrite laadimine ebaõnnestus", + "expanded_view": "Laiendatud vaade", + "expanded_view_description": "Näita filtrireegleid koos üksikasjalike tingimuste ja tegevuste plokkidega", + "if": "Kui", + "then": "Siis", + "match_all_conditions": "kõik vastavad", + "match_any_condition": "mistahes vastab", + "and": "ja", + "or": "või", + "cancel": "Tühista", + "confirm_delete": "Kustuta", + "rule_list": "Filtrireeglid", + "drag_to_reorder": "Lohista ümberjärjestamiseks", + "match_type": "Vastavuse tüüp", + "reset_to_visual": "Lähtesta visuaalsele koostajale", + "reset_warning": "See hülgab praeguse skripti ja alustab uuesti.", + "confirm_reset": "Lähtesta", + "validation_empty_name": "Reegli nimi on kohustuslik", + "validation_empty_conditions": "Vajalik on vähemalt üks väärtusega tingimus", + "validation_empty_actions": "Vajalik on vähemalt üks tegevus", + "templates_section": "Alusta mallist", + "template_newsletters": "Liiguta uudiskirjad kausta", + "template_receipts": "Arhiveeri kviitungid automaatselt", + "template_important": "Märgi olulised kirjad", + "template_notifications": "Filtreeri teavitused", + "sieve_editor": { + "title": "Sieve skripti redaktor", + "warning": "Sieve lähtekoodi muutmine võib visuaalse reeglite redigeerimise katki teha. Siin tehtud muudatused tühistavad visuaalse koostaja.", + "script_content": "Sieve skript", + "valid": "Skript on kehtiv", + "invalid": "Skriptis on vigu", + "save_warning": "Salvestamine kirjutab kõik visuaalsed reeglid üle. Seda ei saa tagasi võtta. Kinnitamiseks klõpsa uuesti nuppu Salvesta.", + "validating": "Valideerimine...", + "validate": "Valideeri", + "cancel": "Tühista", + "save": "Salvesta", + "confirm_save": "Kinnita salvestamine", + "validation_failed": "Valideerimispäring ebaõnnestus" + }, + "rule_summary": { + "conditions_count": "{count, plural, one {# tingimus} other {# tingimust}}", + "actions_count": "{count, plural, one {# tegevus} other {# tegevust}}" + }, + "origin_external": "Väline", + "managed_by_tooltip": "Hallatud {source} poolt. Muuda seda vastavas rakenduses või kasuta Sieve lähtekoodi redaktorit.", + "quick_rule_names": { + "move_sender": "Liiguta saatjalt {sender} kausta {folder}", + "move_domain": "Liiguta domeenilt @{domain} kausta {folder}", + "move_list": "Liiguta list {list} kausta {folder}", + "mark_read": "Märgi loetuks saatjalt {sender}", + "tag": "Sildista kui {tag} saatjalt {sender}", + "block": "Blokeeri {sender}", + "custom": "Kirjad saatjalt {sender}", + "custom_plain": "Uus reegel", + "senders": "{count, plural, one {# saatja} other {# saatjat}}" + }, + "suggestions": "Soovitused", + "suggest_subject": "Teema „{subject}”", + "suggest_to": "Kellele: {address}", + "suggest_cc": "Koopia: {address}", + "suggest_list": "List-Id", + "suggest_domain": "@{domain}", + "apply_existing": "Rakenda ka selle kausta olemasolevatele kirjadele", + "apply_existing_unsupported": "Olemasolevatele kirjadele saab rakendada ainult reegleid, mis kontrollivad saatjat, adressaate, teemat või päiseid ning mis liigutavad, kopeerivad, märgivad loetuks, tähistavad või sildistavad.", + "period_title": "Ajavahemik", + "period_start": "Alguskuupäev", + "period_end": "Lõppkuupäev", + "validation_period_order": "Lõppkuupäev peab olema pärast alguskuupäeva", + "period_toggle": "Aktiivne ainult ajavahemikus", + "period_hint": "Kehtib kirjadele, mis saabuvad sel ajavahemikul. Jäta väli tühjaks, et see ots jääks lahtiseks.", + "validation_period_empty": "Sisesta ajavahemiku algus- või lõppkuupäev", + "validation_period_invalid": "Sisesta ajavahemiku jaoks kehtiv kuupäev koos kellaajaga või jäta väli tühjaks", + "apply_existing_period": "Ajavahemikuga reegel toimib ainult kirjadele, mis saabuvad selle jooksul, seega ei saa seda olemasolevatele kirjadele rakendada.", + "period_status_scheduled": "ajastatud", + "period_status_active": "aktiivne", + "period_status_expired": "aegunud" + }, + "templates": { + "title": "E-kirjade mallid", + "description": "Loo korduvkasutatavaid e-kirja malle kohatäitja muutujatega", + "add": "Uus mall", + "edit": "Muuda malli", + "name": "Malli nimi", + "name_placeholder": "nt jätkukiri", + "category": "Kategooria", + "category_placeholder": "nt Töö, Isiklik", + "subject": "Teema", + "subject_placeholder": "Kirja teemarida", + "body": "Sisu", + "body_placeholder": "Kirja sisu...", + "recipients_placeholder": "email@example.com", + "identity": "Saada kui", + "default_identity": "Vaikimisi identiteet", + "favorite": "Lemmik", + "cancel": "Tühista", + "create": "Loo", + "update": "Uuenda", + "confirm_delete": "Kustuta", + "no_templates": "Malle pole veel", + "manage": "Halda malle", + "count": "{count, plural, one {# mall} other {# malli}}", + "export_import": "Eksport ja import", + "export_import_description": "Varunda oma mallid või kanna need üle teise seadmesse", + "export": "Ekspordi", + "import": "Impordi", + "validation": { + "empty": "Malli nimi on kohustuslik", + "too_long": "Malli nimi tohib olla kuni 200 tähemärki" + } + }, + "files": { + "display": { + "title": "Kuvamine", + "description": "Seadista, kuidas faile ja kaustu kuvatakse" + }, + "default_view": { + "label": "Vaikevaade", + "description": "Vali ruudustiku- ja loendipaigutuse vahel", + "list": "Loend", + "grid": "Ruudustik" + }, + "default_sort": { + "label": "Vaikimisi sortimine", + "description": "Vali failide vaikimisi sortimisviis", + "name": "Nimi", + "size": "Suurus", + "modified": "Muudetud" + }, + "sort_direction": { + "label": "Sortimissuund", + "description": "Vali kasvav või kahanev järjestus", + "ascending": "Kasvav", + "descending": "Kahanev" + }, + "icons": { + "title": "Ikoonid", + "description": "Seadista failiikoonide välimust" + }, + "show_icons": { + "label": "Näita failiikoone", + "description": "Kuva ikoonid failide ja kaustade kõrval" + }, + "colored_icons": { + "label": "Värvilised ikoonid", + "description": "Kasuta ühevärviliste asemel värvilisi ikoone" + }, + "show_thumbnails": { + "label": "Näita pisipilte", + "description": "Kuva pildifailide puhul ikoonide asemel eelvaated" + }, + "behavior": { + "title": "Käitumine", + "description": "Seadista failihalduri käitumist" + }, + "show_hidden": { + "label": "Näita peidetud faile", + "description": "Kuva failid ja kaustad, mis algavad punktiga" + }, + "preview": { + "label": "Eelvaade" + } + } + }, + "errors": { + "page_error_title": "Midagi läks valesti", + "page_error_description": "Ilmnes ootamatu viga. Proovi uuesti või mine tagasi avalehele.", + "sidebar_error": "Postkaste ei õnnestunud laadida", + "email_list_error": "E-kirju ei õnnestunud laadida", + "viewer_error_title": "E-kirja ei saa kuvada", + "viewer_error_description": "Selle e-kirja kuvamisel tekkis probleem. See võib sisaldada toetamata sisu.", + "composer_error": "Kirjutamisakent ei õnnestunud laadida", + "settings_error_title": "Seaded pole saadaval", + "settings_error_description": "Seadeid ei õnnestunud laadida. Sinu eelistusi ei pruugita salvestada.", + "try_again": "Proovi uuesti", + "reload": "Laadi uuesti", + "reload_emails": "Laadi e-kirjad uuesti", + "reload_settings": "Laadi seaded uuesti", + "retry": "Proovi uuesti", + "go_home": "Mine postkasti" + }, + "context_menu": { + "reply": "Vasta", + "reply_all": "Vasta kõigile", + "forward": "Edasta", + "mark_read": "Märgi loetuks", + "mark_unread": "Märgi lugemata", + "star": "Tähista", + "unstar": "Eemalda tähistus", + "pin": "Kinnita", + "unpin": "Eemalda kinnitus", + "move_to": "Liiguta kausta...", + "copy_to_account": "Kopeeri kontole...", + "archive": "Arhiveeri", + "delete": "Kustuta", + "mark_as_spam": "Märgi rämpspostiks", + "not_spam": "Pole rämpspost", + "tag": "Märgista", + "items_selected": "{count} e-kirja valitud", + "forward_as_attachments": "Edasta manustena", + "edit_draft": "Muuda mustandit", + "cancel_scheduled_send": "Tühista saatmine", + "reschedule_send": "Muuda ajastust", + "cancel_and_edit": "Tühista ja muuda", + "cancel_and_compose_again": "Tühista ja kirjuta uuesti", + "rules": { + "title": "Reeglid", + "move_from": "Liiguta alati saatja {sender} kirjad", + "move_from_domain": "Liiguta alati domeeni @{domain} kirjad", + "move_from_list": "Liiguta alati selle listi kirjad", + "mark_read_from": "Märgi alati loetuks saatjalt {sender}", + "tag_with": "Sildista alati sildiga", + "block": "{count, plural, one {Blokeeri saatja} other {Blokeeri # saatjat}}", + "no_junk": "Sellel kontol pole rämpsposti kausta", + "create": "Loo reegel…", + "manage": "Halda reegleid", + "senders_count": "{count, plural, one {# saatja} other {# saatjat}}", + "cross_account": "Vali kirjad ühelt kontolt", + "opaque_hint": "Sinu filtreid on käsitsi muudetud. Ava filtriseaded", + "loading": "Reeglite laadimine…", + "load_failed": "Reegleid ei õnnestunud laadida", + "none": "Reegleid pole veel", + "new_mail_only": "Ainult uutele kirjadele", + "running": "Käivitan „{name}” kaustas {folder}…" + }, + "find_emails_from": "Leia kirjad saatjalt {name}" + }, + "mailbox_context_menu": { + "mark_folder_read": "Märgi kaust loetuks", + "mark_folder_tree_read": "Märgi kaust ja alamkaustad loetuks", + "mark_all_folders_read": "Märgi kõik kaustad loetuks", + "new_subfolder": "Uus alamkaust...", + "new_folder": "Uus kaust...", + "rename": "Nimeta ümber...", + "share": "Jaga...", + "import_email": "Impordi .eml või .zip...", + "empty_folder": "Tühjenda kaust", + "empty_folder_generic": "Tühjenda kaust", + "delete_folder": "Kustuta kaust", + "refresh": "Värskenda", + "hide_shared_account": "Peida külgribalt", + "mute_notifications": "Vaigista märguanded", + "unmute_notifications": "Lõpeta märguannete vaigistus", + "mute_account_notifications": "Vaigista selle konto märguanded", + "unmute_account_notifications": "Lõpeta selle konto märguannete vaigistus", + "reset_folder_notifications": "Lähtesta kausta märguandeseaded", + "mark_all_confirm_title": "Märgi kõik kaustad loetuks", + "mark_all_confirm_message": "Kas märkida kõik lugemata sõnumid sinu isiklikus kontos loetuks?", + "delete_confirm_title": "Kustuta kaust", + "delete_confirm_message": "Kas kustutada kaust \"{name}\" jäädavalt? Seda toimingut ei saa tagasi võtta.", + "prompt_new_subfolder": "Sisesta uue alamkausta nimi.", + "prompt_new_folder": "Sisesta uue kausta nimi.", + "prompt_rename": "Sisesta selle kausta uus nimi.", + "placeholder_folder_name": "Kausta nimi", + "create": "Loo", + "rename_confirm": "Nimeta ümber", + "toast_marked_read": "Kaust märgiti loetuks", + "toast_marked_read_count": "{count, plural, one {1 sõnum} other {# sõnumit}} märgiti loetuks", + "toast_already_read": "Lugemata sõnumeid pole", + "toast_marked_all_read": "Kõik kaustad märgiti loetuks", + "toast_emptied": "Kaust tühjendati", + "toast_folder_created": "Kaust loodi", + "toast_folder_renamed": "Kaust nimetati ümber", + "toast_folder_deleted": "Kaust kustutati", + "toast_error_mark_read": "Loetuks märkimine ebaõnnestus", + "toast_error_empty": "Kausta tühjendamine ebaõnnestus", + "toast_error_create": "Kausta loomine ebaõnnestus", + "toast_error_rename": "Kausta ümbernimetamine ebaõnnestus", + "toast_error_delete": "Kausta kustutamine ebaõnnestus", + "toast_error_delete_has_children": "Kaustal on alamkaustad. Eemalda need enne.", + "toast_error_delete_has_email": "Kaust ei ole tühi. Tühjenda see enne.", + "delete_with_contents_title": "Kaust ei ole tühi", + "delete_with_contents_message": "Kaust \"{name}\" sisaldab veel {count, plural, one {1 sõnum} other {# sõnumit}}. Kas kustutada kaust ja kõik selle sõnumid? Seda ei saa tagasi võtta.", + "delete_with_contents_confirm": "Kustuta kaust ja sõnumid" + }, + "shortcuts": { + "title": "Kiirklahvid", + "tip": "Selle abi nägemiseks vajuta igal ajal ?", + "sections": { + "navigation": "Navigeerimine", + "actions": "E-kirja toimingud", + "global": "Üldine", + "threads": "Vestlused", + "composer": "Kirjutamine" + }, + "navigation": { + "next_email": "Järgmine e-kiri", + "previous_email": "Eelmine e-kiri", + "open_email": "Ava e-kiri", + "close_email": "Sulge / tühista valik", + "go_to_folder": "Mine kausta" + }, + "actions": { + "reply": "Vasta", + "reply_all": "Vasta kõigile", + "forward": "Edasta", + "star": "Lülita tähistus", + "archive": "Arhiveeri", + "delete": "Kustuta", + "mark_unread": "Märgi lugemata", + "mark_read": "Märgi loetuks", + "toggle_spam": "Märgi rämpspostiks / Pole rämpspost" + }, + "global": { + "compose": "Kirjuta uus e-kiri", + "search": "Fookus otsingusse", + "help": "Näita kiirklahve", + "refresh": "Värskenda e-kirjad", + "select_all": "Vali kõik", + "global_search": "Otsi kõike" + }, + "threads": { + "expand_collapse": "Ava/sulge vestlus", + "select_mountain_view": "Vali vestlus" + }, + "composer": { + "send": "Saada e-kiri", + "schedule_send": "Ajasta saatmine", + "template_picker": "Ava mallivalija" + } + }, + "threads": { + "messages_one": "{count} sõnum", + "messages_other": "{count} sõnumit", + "messages_tooltip": "{count, plural, one {# sõnum selles vestluses} other {# sõnumit selles vestluses}}", + "expand": "Ava vestlus", + "collapse": "Sulge vestlus", + "loading": "Vestluse laadimine...", + "mark_read": "Märgi vestlus loetuks", + "mark_unread": "Märgi vestlus lugemata", + "archive": "Arhiveeri vestlus", + "delete": "Kustuta vestlus", + "star": "Tähista vestlus", + "unstar": "Eemalda vestluse tähistus", + "toggle_thread": "Lülita vestlus" + }, + "identities": { + "modal_title": "Halda saatja identiteete", + "create_new": "Loo uus identiteet", + "edit_identity": "Muuda identiteeti", + "delete_confirm": "Kustutada see identiteet? Seda ei saa tagasi võtta.", + "cannot_delete": "Seda identiteeti ei saa kustutada", + "primary_identity": "Peamine", + "set_as_primary": "Määra peamiseks", + "no_identities": "Identiteete ei leitud", + "display": { + "reply_to": "Vastamisaadress:", + "bcc": "BCC:", + "signature": "Allkiri:", + "preview": "Eelvaade:" + }, + "validation_errors": { + "invalid_emails": "Vigased e-posti aadressid: {emails}", + "unknown_error": "Tundmatu viga" + }, + "form": { + "name_label": "Kuvatav nimi", + "name_placeholder": "nt Töö e-post, Isiklik", + "name_required": "Nimi on kohustuslik", + "email_label": "E-posti aadress", + "email_placeholder": "your.email@example.com", + "email_required": "E-posti aadress on kohustuslik", + "email_invalid": "Palun sisesta kehtiv e-posti aadress", + "email_immutable": "E-posti aadressi ei saa pärast loomist muuta", + "reply_to_label": "Vastamisaadress (valikuline)", + "reply_to_placeholder": "different@example.com", + "bcc_label": "Automaatne BCC (valikuline)", + "bcc_placeholder": "archive@example.com", + "text_signature_label": "Tekstiallkiri", + "html_signature_label": "HTML-allkiri", + "signature_byte_counter": "{bytes} / {max} baiti", + "signature_byte_limit_reached": "Serveri piirmäär on täis", + "save": "Salvesta identiteet", + "cancel": "Tühista", + "creating": "Loomine...", + "updating": "Uuendamine..." + }, + "sub_address": { + "button_tooltip": "Kasuta alamaadressi", + "popover_title": "Lisa alamaadressi silt", + "tag_input_placeholder": "Sisesta silt (nt ostlemine)", + "preview_label": "Eelvaade:", + "recent_tags": "Hiljutised sildid", + "suggested_tags": "Soovitatud", + "use_address": "Kasuta seda aadressi", + "invalid_tag": "Silt tohib sisaldada ainult tähti, numbreid ja sidekriipse", + "tag_too_long": "Silt tohib olla kuni 30 tähemärki", + "help_text": "Aadressile user{delimiter}tag@domain.com saadetud kirjad jõuavad sinu postkasti", + "validation": { + "empty": "Silt ei tohi olla tühi", + "too_long": "Silt tohib olla kuni {max} tähemärki", + "invalid_chars": "Silt tohib sisaldada ainult tähti, numbreid ja sidekriipse" + } + }, + "badge": { + "sent_via": "kaudu", + "sub_address_tag": "Saadetud alamaadressiga: {tag}", + "identity_name": "Saadetud identiteediga: {name}", + "identity_short": "{name} kaudu", + "subaddress_tag": "+{tag}" + }, + "delete_button": "Kustuta", + "delete_confirm_title": "Kustuta identiteet" + }, + "templates": { + "picker_title": "Vali mall", + "search_placeholder": "Otsi malle...", + "section_favorites": "Lemmikud", + "section_recent": "Hiljutised", + "section_uncategorized": "Muud", + "no_templates": "Malle veel pole", + "no_results": "Malle ei leitud", + "fill_placeholders": "Täida muutujate väärtused", + "enter_value": "Sisesta väärtus...", + "preview": "Eelvaade", + "insert_with_values": "Lisa väärtustega", + "insert_raw": "Lisa täitmata kujul", + "copy_suffix": "(koopia)", + "placeholder": "Muutuja", + "placeholders": { + "recipient_name": "Saaja nimi", + "company": "Ettevõtte nimi", + "date": "Tänane kuupäev", + "day_of_week": "Nädalapäev", + "sender_name": "Sinu nimi" + } + }, + "contacts": { + "title": "Kontaktid", + "search_placeholder": "Otsi kontakte...", + "create_new": "Uus kontakt", + "no_category": "Kategooria puudub", + "rename_category": "Nimeta kategooria ümber", + "category_name_label": "Kategooria nimi", + "category_renamed": "Kategooria nimetati ümber", + "category_rename_failed": "Kategooria ümbernimetamine ebaõnnestus", + "category_added": "Kontakt lisati kategooriasse {name}", + "category_added_plural": "{count} kontakti lisati kategooriasse {name}", + "empty_state": "Kontakte veel pole", + "empty_state_title": "Kontakte veel pole", + "empty_state_subtitle": "Loo oma esimene kontakt või impordi vCard-failist", + "empty_search": "Otsingule ei vastanud ükski kontakt", + "empty_search_hint": "Proovi teistsugust otsisõna", + "empty_filtered": "Filtritele ei vastanud ükski kontakt", + "empty_filtered_hint": "Proovi filtreid muuta või need tühjendada", + "clear_search": "Tühjenda otsing", + "import_vcard": "Impordi vCard", + "delete_confirm_title": "Kustuta kontakt", + "delete_confirm": "Kas oled kindel, et soovid selle kontakti kustutada?", + "local_mode": "Kontaktid salvestatakse kohalikult (server ei toeta JMAP Contacts funktsiooni)", + "back_to_contacts": "Tagasi kontaktide juurde", + "back_to_email": "Tagasi e-posti juurde", + "open_categories": "Ava kategooriad", + "tabs": { + "all": "Kõik", + "groups": "Grupid" + }, + "shared": { + "title": "Jagatud" + }, + "address_books": { + "create": "Uus aadressiraamat", + "created": "Aadressiraamat loodud", + "create_failed": "Aadressiraamatu loomine ebaõnnestus", + "title": "Minu aadressiraamatud", + "shared_prefix": "Jagatud: {name}", + "moved": "Kontakt liigutati aadressiraamatusse {name}", + "moved_plural": "{count} kontakti liigutati aadressiraamatusse {name}", + "move_failed": "Kontakti liigutamine ebaõnnestus", + "address_book": "Aadressiraamat", + "rename": "Nimeta aadressiraamat ümber", + "name_label": "Aadressiraamatu nimi", + "renamed": "Aadressiraamat nimetati ümber", + "rename_failed": "Aadressiraamatu ümbernimetamine ebaõnnestus", + "default": "Vaikimisi", + "set_default": "Määra vaikimisi valikuks", + "default_updated": "Vaikimisi aadressiraamat uuendatud", + "set_default_failed": "Vaikimisi aadressiraamatu määramine ebaõnnestus", + "manage": "Halda aadressiraamatuid", + "share": "Jaga aadressiraamatut", + "new_contact_in_book": "Uus kontakt selles aadressiraamatus", + "delete": "Kustuta aadressiraamat", + "confirm_delete": "Kustutada \"{name}\"? Kõik selle aadressiraamatu kontaktid eemaldatakse.", + "deleted": "Aadressiraamat kustutatud", + "delete_failed": "Aadressiraamatu kustutamine ebaõnnestus" + }, + "detail": { + "emails": "E-posti aadressid", + "phones": "Telefoninumbrid", + "organizations": "Organisatsioonid", + "addresses": "Aadressid", + "notes": "Märkmed", + "titles": "Ametinimetused ja rollid", + "online_services": "Veebiteenused", + "anniversaries": "Tähtpäevad", + "personal_info": "Isiklik info", + "languages": "Keeled", + "categories": "Kategooriad", + "related_contacts": "Seotud kontaktid", + "crypto_keys": "Krüptovõtmed", + "cert_issuer": "Väljastaja", + "cert_expires": "Aegub", + "cert_expired": "Aegunud", + "cert_fingerprint": "Sõrmejälg", + "cert_algorithm": "Algoritm", + "import_to_smime": "Impordi S/MIME-sse", + "cert_already_imported": "Juba imporditud S/MIME-sse", + "cert_imported": "Sertifikaat imporditud S/MIME hoidlasse", + "cert_import_failed": "Sertifikaadi importimine ebaõnnestus", + "no_contact_selected": "Vali kontakt, et vaadata üksikasju", + "compose_email": "Koosta kiri", + "copy_email": "Kopeeri e-posti aadress", + "copy_phone": "Kopeeri telefoninumber", + "copy_url": "Kopeeri URL", + "copied": "Kopeeritud lõikelauale", + "copy_failed": "Lõikelauale kopeerimine ebaõnnestus", + "created": "Loodud", + "updated": "Viimati uuendatud", + "timezone": "Ajavöönd", + "anniversary_birth": "Sünnipäev", + "anniversary_death": "Surmapäev", + "anniversary_wedding": "Aastapäev", + "anniversary_other": "Muu", + "personal_expertise": "Kompetents", + "personal_hobby": "Hobi", + "personal_interest": "Huvi", + "personal_other": "Muu", + "gender": "Sugu", + "gender_masculine": "Mees", + "gender_feminine": "Naine", + "gender_other": "Muu", + "gender_none": "Ei kohaldu", + "gender_unknown": "Teadmata", + "calendar": "Kalender", + "calendar_uri": "Kalendri URL", + "scheduling_uri": "Planeerimise URL", + "freebusy_uri": "Vaba/hõivatud URL", + "section_contact": "Kontaktandmed", + "section_work": "Töö", + "section_personal": "Isiklik", + "email_default_label": "E-post", + "phone_default_label": "Telefon", + "address_default_label": "Aadress", + "online_service_default_label": "Veebis", + "organization_label": "Organisatsioon", + "title_label": "Ametinimetus", + "role_label": "Roll", + "language_label": "Keel", + "related_default_label": "Seotud", + "more_actions": "Rohkem toiminguid", + "age_years": "{count, plural, one {1-aastane} other {#-aastane}}", + "years_since": "{count, plural, one {1 aasta} other {# aastat}}" + }, + "activity": { + "recent_emails": "Hiljutised kirjad", + "upcoming_events": "Eelseisvad sündmused", + "no_emails": "Hiljutisi kirju pole", + "no_events": "Eelseisvaid sündmusi pole", + "no_subject": "(Teema puudub)", + "no_title": "(Pealkiri puudub)", + "load_failed": "Laadimine ebaõnnestus", + "unknown_sender": "Tundmatu saatja", + "all_day": "Kogu päev" + }, + "form": { + "create_title": "Uus kontakt", + "edit_title": "Muuda kontakti", + "section_address_book": "Kataloog", + "select_address_book": "Vali kataloog...", + "section_identity": "Nimi ja identiteet", + "contact_type": "Kontakti tüüp", + "type_person": "Isik", + "type_organization": "Organisatsioon", + "section_work": "Töö ja organisatsioon", + "prefix": "Tiitel", + "prefix_placeholder": "dr., hr., pr.", + "given_name": "Eesnimi", + "middle_name": "Keskmine nimi", + "surname": "Perekonnanimi", + "suffix": "Liide", + "suffix_placeholder": "Jr., Sr., III", + "nickname": "Hüüdnimi", + "nickname_placeholder": "Hüüdnimi", + "email": "E-post", + "email_placeholder": "email@example.com", + "phone": "Telefon", + "phone_placeholder": "+1 234 567 890", + "phone_type": "Tüüp", + "phone_voice": "Kõne", + "phone_cell": "Mobiil", + "phone_fax": "Faks", + "phone_pager": "Pager", + "phone_video": "Video", + "phone_text": "Tekstisõnum", + "organization": "Organisatsioon", + "organization_placeholder": "Ettevõtte nimi", + "department": "Osakond", + "department_placeholder": "Osakond", + "job_title": "Ametinimetus", + "job_title_placeholder": "nt tarkvarainsener", + "role": "Roll", + "role_placeholder": "nt meeskonnajuht", + "addresses": "Aadressid", + "add_address": "Lisa aadress", + "street": "Tänav", + "city": "Linn", + "region": "Maakond / piirkond", + "postcode": "Sihtnumber", + "country": "Riik", + "online_services": "Veebiteenused", + "add_online_service": "Lisa veebiteenus", + "url_placeholder": "https://...", + "service_placeholder": "Teenus", + "anniversaries": "Tähtpäevad", + "add_anniversary": "Lisa kuupäev", + "anniversary_birth": "Sünnipäev", + "anniversary_wedding": "Aastapäev", + "anniversary_death": "Mälestuspäev", + "anniversary_other": "Muu", + "personal_info": "Isiklik info", + "add_personal_info": "Lisa kirje", + "personal_info_placeholder": "nt fotograafia", + "personal_expertise": "Kompetents", + "personal_hobby": "Hobi", + "personal_interest": "Huvi", + "personal_other": "Muu", + "level": "Tase", + "level_high": "Kõrge", + "level_medium": "Keskmine", + "level_low": "Madal", + "categories": "Kategooriad", + "categories_placeholder": "nt pere, sõbrad, kolleegid", + "categories_hint": "Sisesta, et otsida või lisada kategooriaid", + "category_add": "Lisa", + "note": "Märkmed", + "note_placeholder": "Lisa märkus...", + "gender": "Sugu", + "gender_sex": "Sugu", + "gender_male": "Mees", + "gender_female": "Naine", + "gender_other": "Muu", + "gender_none": "Ei kohaldu", + "gender_unknown": "Teadmata", + "gender_identity": "Sooidentiteet", + "gender_identity_placeholder": "Sooidentiteet...", + "calendar": "Kalender", + "calendar_uri": "Kalendri URL", + "scheduling_uri": "Planeerimise URL", + "freebusy_uri": "Vaba/hõivatud URL", + "context_work": "Töö", + "context_private": "Isiklik", + "add_email": "Lisa e-post", + "add_phone": "Lisa telefon", + "save": "Salvesta", + "cancel": "Tühista", + "creating": "Loomine...", + "updating": "Uuendamine...", + "name_required": "Sisesta eesnimi, perekonnanimi või organisatsioon", + "email_invalid": "Sisesta kehtiv e-posti aadress", + "email_error_inline": "Vigane e-posti aadressi vorming", + "save_failed": "Kontakti salvestamine ebaõnnestus", + "delete": "Kustuta", + "upload_photo": "Laadi foto üles", + "remove_photo": "Eemalda foto", + "photo_hint": "JPG või PNG, kuni 10 MB. Suurust muudetakse vajadusel.", + "photo_too_large": "Pilt on liiga suur (maksimaalselt 10 MB)", + "photo_invalid": "Vigane pildifail", + "change_photo": "Muuda" + }, + "groups": { + "create": "Uus grupp", + "edit": "Muuda gruppi", + "empty": "Gruppe veel pole", + "delete_confirm_title": "Kustuta grupp", + "delete_confirm": "Kas oled kindel, et soovid selle grupi kustutada?", + "name_label": "Grupi nimi", + "name_placeholder": "nt meeskond, pere", + "name_required": "Grupi nimi on kohustuslik", + "save_failed": "Grupi salvestamine ebaõnnestus", + "members_label": "Liikmed", + "search_members": "Otsi lisatavaid kontakte...", + "no_members": "Selles grupis pole liikmeid", + "member_count": "{count, plural, =0 {Liikmeid pole} one {1 liige} other {# liiget}}", + "send_email": "Saada kiri grupile", + "send_email_to": "Kellele", + "send_email_cc": "Cc", + "send_email_bcc": "Bcc", + "no_member_emails": "Selles grupis pole ühtegi e-posti aadressiga liiget." + }, + "import": { + "title": "Impordi kontaktid", + "drop_hint": "Kliki, et valida vCard-fail", + "file_types": ".vcf või .vcard failid", + "no_contacts": "Failist ei leitud ühtegi kontakti", + "parse_error": "vCard-faili töötlemine ebaõnnestus", + "found": "{count, plural, one {Leiti 1 kontakt} other {Leiti # kontakti}}", + "duplicate": "Duplikaat", + "select_all": "Vali kõik", + "deselect_all": "Tühista kõigi valik", + "selected": "{count, plural, one {1 valitud} other {# valitud}}", + "import_button": "Impordi", + "importing": "Importimine...", + "success": "{count, plural, one {Imporditi 1 kontakt} other {Imporditi # kontakti}}", + "failed": "Import ebaõnnestus", + "close": "Sulge", + "file_too_large": "Fail on liiga suur (maksimaalselt 5 MB)" + }, + "export": { + "title": "Ekspordi kontaktid", + "success": "{count, plural, one {Eksporditi 1 kontakt} other {Eksporditi # kontakti}}" + }, + "bulk": { + "selected": "{count, plural, one {1 valitud} other {# valitud}}", + "select_all": "Vali kõik", + "delete": "Kustuta", + "delete_confirm_title": "Kustuta kontaktid", + "delete_confirm": "Kustutada {count, plural, one {1 kontakt} other {# kontakti}}?", + "deleted": "{count, plural, one {Kustutati 1 kontakt} other {Kustutati # kontakti}}", + "add_to_group": "Lisa gruppi", + "choose_group": "Vali grupp", + "adding_contacts": "Lisamine: {count, plural, one {1 kontakt} other {# kontakti}}", + "added_to_group": "Kontaktid lisati gruppi", + "export": "Eksport", + "clear": "Tühista valik" + }, + "toast": { + "created": "Kontakt loodud", + "updated": "Kontakt uuendatud", + "deleted": "Kontakt kustutatud", + "error_create": "Kontakti loomine ebaõnnestus", + "error_update": "Kontakti uuendamine ebaõnnestus", + "error_delete": "Kontakti kustutamine ebaõnnestus" + }, + "context_menu": { + "open": "Ava", + "edit": "Muuda", + "send_email": "Saada kiri", + "add_to_group": "Lisa gruppi", + "export_vcard": "Ekspordi vCardina", + "delete": "Kustuta", + "call": "Helista", + "duplicate": "Dubleeri", + "print": "Prindi" + }, + "filters": { + "toggle": "Filtrid", + "select": "Vali", + "clear": "Tühjenda", + "close": "Sulge", + "title": "Täpsem filtreerimine", + "organization": "Ettevõte", + "organization_placeholder": "nt Acme Corp", + "job_title": "Ametinimetus", + "job_title_placeholder": "nt disainer", + "location": "Asukoht", + "location_placeholder": "Linn või riik", + "email_domain": "E-posti domeen", + "email_domain_placeholder": "example.com", + "birthday_month": "Sünnipäev kuul", + "any_month": "Iga kuu", + "has_email": "E-posti aadressiga", + "has_phone": "Telefoninumbriga", + "has_photo": "Fotoga", + "sort_by": "Sordi", + "sort_first_name": "Eesnimi", + "sort_last_name": "Perekonnanimi" + } + }, + "calendar": { + "title": "Kalender", + "back_to_email": "Tagasi e-posti juurde", + "back_to_month": "Tagasi kuu juurde", + "my_calendars": "Kalendrid", + "birthday_calendar": "Sünnipäevad", + "mini_calendar_change": "Kuu vahetamiseks klõpsa", + "views": { + "month": "Kuu", + "week": "Nädal", + "day": "Päev", + "agenda": "Päevakava", + "today": "Täna", + "month_hint": "Kuu (m)", + "week_hint": "Nädal (w)", + "day_hint": "Päev (d)", + "agenda_hint": "Päevakava (a)", + "tasks": "Ülesanded", + "tasks_hint": "Ülesanded (k)" + }, + "events": { + "hidden_before": "{count, plural, one {# varasem sündmus} other {# varasemat sündmust}}", + "hidden_after": "{count, plural, one {# hilisem sündmus} other {# hilisemat sündmust}}", + "show_all_hours": "Näita kõiki tunde", + "show_display_hours": "Näita ainult {start} – {end}", + "create": "Loo sündmus", + "edit": "Muuda sündmust", + "delete": "Kustuta sündmus", + "details": "Sündmuse üksikasjad", + "no_events": "Sündmusi pole", + "all_day": "Kogu päev", + "more": "+{count} veel", + "show_more": "Näita rohkem", + "show_less": "Näita vähem", + "no_title": "(Pealkirjata)", + "resize": "Muuda sündmuse suurust", + "duplicate": "Dubleeri", + "today_header": "Täna", + "tomorrow_header": "Homme", + "agenda_show_earlier": "Näita varasemaid sündmusi", + "agenda_loading": "Laadimine…", + "agenda_range_start": "Kuvatakse sündmusi alates {date}", + "agenda_range_end": "Kuvatakse sündmusi kuni {date}", + "export_ics": "Ekspordi .ics-failina", + "copy_title": "Kopeeri pealkiri", + "copy_link": "Kopeeri koosoleku link", + "new_event": "Uus sündmus", + "new_all_day_event": "Uus kogu päeva sündmus", + "new_task": "Uus ülesanne", + "go_to_today": "Mine tänasesse päeva" + }, + "detail": { + "add_note": "Lisa märkus...", + "save_note": "Salvesta", + "note_saved": "Märkus lisatud", + "open_link": "Ava link", + "copy_location": "Kopeeri asukoht", + "meeting_link": "Koosoleku link", + "tentative": "Esialgne", + "cancelled": "Tühistatud", + "delete_confirm": "Kustutada see sündmus?" + }, + "form": { + "title": "Pealkiri", + "description": "Kirjeldus", + "location": "Asukoht", + "meeting_link": "Koosoleku link", + "start_date": "Alguskuupäev", + "end_date": "Lõpukuupäev", + "start_time": "Algusaeg", + "end_time": "Lõppaeg", + "all_day_event": "Kogu päeva sündmus", + "calendar_select": "Kalender", + "save": "Salvesta", + "cancel": "Tühista", + "delete_confirm": "Kas oled kindel, et soovid selle sündmuse kustutada?", + "color": "Värv" + }, + "participants": { + "availability": { + "title": "Saadavus", + "free": "Saadaval", + "busy": "Hõivatud", + "tentative": "Esialgne", + "unknown": "Ei ole selle serveri kasutaja", + "checking": "Kontrollimine…" + }, + "title": "Osalejad", + "add": "Lisa osaleja", + "organizer": "Korraldaja", + "attendee": "Osaleja", + "accepted": "Nõustunud", + "declined": "Keeldunud", + "tentative": "Esialgne", + "needs_action": "Vajab vastust", + "remove": "Eemalda", + "edit": "Muuda", + "email_placeholder": "Lisa e-posti aadress või otsi kontaktidest", + "send_invitations": "Saada osalejatele kutsed", + "status_summary": "{accepted} nõustunud, {pending} ootel", + "invited_by": "Kutse saatjalt {name}", + "respond_below": "Vasta allolevate nuppudega", + "rsvp_label": "Sinu vastus", + "cancel_notification": "Osalejaid teavitatakse tühistamisest", + "you_organizer": "Sina oled korraldaja", + "you_attendee": "Sina oled osaleja", + "no_participants": "Osalejaid pole", + "count": "{count, plural, one {# osaleja} other {# osalejat}}" + }, + "recurrence": { + "title": "Kordumine", + "none": "Ei kordu", + "daily": "Iga päev", + "weekly": "Iga nädal", + "monthly": "Iga kuu", + "yearly": "Iga aasta", + "every_n_days": "Iga {count} päeva järel", + "every_n_weeks": "Iga {count} nädala järel", + "every_n_months": "Iga {count} kuu järel", + "until": "Kuni", + "occurrences": "{count} kordust", + "custom": "Kohandatud…", + "edit_custom": "Muuda kohandatud kordumist", + "every_n_years": "Iga {count} aasta järel", + "on_days": "päevadel {days}", + "on_day_n": "kuupäeval {day}", + "on_the_nth": "{nth} {day}", + "in_month": "kuus {month}", + "nth_1": "esimene", + "nth_2": "teine", + "nth_3": "kolmas", + "nth_4": "neljas", + "nth_last": "viimane", + "editor_freq_day": "Päev", + "editor_freq_week": "Nädal", + "editor_freq_month": "Kuu", + "editor_freq_year": "Aasta", + "editor_repeats_on": "Kordub", + "editor_every": "Iga", + "editor_unit_days": "päev(a)", + "editor_unit_weeks": "nädal(at)", + "editor_unit_months": "kuu(d)", + "editor_unit_years": "aasta(t)", + "editor_on_day": "kuupäeval", + "editor_on_the": "kuu", + "editor_in": "kuus", + "editor_ends": "Lõpeb", + "editor_never": "Mitte kunagi", + "editor_ends_on": "Kuupäeval", + "editor_ends_after": "Pärast", + "editor_occurrences": "kordust" + }, + "recurrence_scope": { + "edit_title": "Korduva sündmuse muutmine", + "delete_title": "Korduva sündmuse kustutamine", + "description": "See on korduv sündmus. Milliseid sündmusi soovid muuta?", + "this_event": "Ainult see sündmus", + "this_and_future": "See ja järgnevad sündmused", + "all_events": "Kõik sündmused", + "cancel": "Tühista", + "save": "Salvesta", + "delete": "Kustuta", + "rsvp_title": "Vasta korduvale sündmusele", + "rsvp_description": "See on korduv sündmus. Millistele sündmustele sinu vastus kehtib?", + "respond": "Vasta" + }, + "alerts": { + "title": "Meeldetuletused", + "none": "Meeldetuletusi pole", + "at_time": "Sündmuse toimumise ajal", + "minutes_before": "{count, plural, one {# minut enne} other {# minutit enne}}", + "hours_before": "{count, plural, one {# tund enne} other {# tundi enne}}", + "days_before": "{count, plural, one {# päev enne} other {# päeva enne}}", + "weeks_before": "{count, plural, one {# nädal enne} other {# nädalat enne}}", + "unit_minutes_before": "minutit enne", + "unit_hours_before": "tundi enne", + "unit_days_before": "päeva enne", + "unit_weeks_before": "nädalat enne", + "add": "Lisa meeldetuletus", + "remove": "Eemalda meeldetuletus", + "amount": "Meeldetuletuse kogus", + "unit": "Meeldetuletuse ühik", + "action": "Meeldetuletuse tüüp", + "action_display": "Märguanne", + "action_email": "E-kiri", + "by_email": "{label} e-kirjaga", + "kept": "{count, plural, one {Säilitatakse veel # meeldetuletus, mida siin muuta ei saa} other {Säilitatakse veel # meeldetuletust, mida siin muuta ei saa}}", + "other": "{count, plural, one {# muu meeldetuletus} other {# muud meeldetuletust}}", + "calendar_defaults": "Kalendri vaikeseaded", + "customize": "Kohanda", + "use_defaults": "Kasuta kalendri vaikeseadeid" + }, + "settings": { + "limit_hours": "Piira nähtavaid tunde", + "limit_hours_desc": "Näita päeva- ja nädalavaates ainult neid tunde. Väljaspool neid olevad sündmused on kättesaadavad iga päeva üla- ja allservas olevate nooltega.", + "visible_hours": "Nähtavad tunnid", + "visible_hours_start": "Nähtavate tundide algus", + "visible_hours_end": "Nähtavate tundide lõpp", + "hide_non_working_days": "Peida puhkepäevad", + "hide_non_working_days_desc": "Jäta päevad, mil ei tööta, nädalavaatest välja. Nende sündmused on endiselt näha kuu-, päeva- ja päevakavavaates.", + "working_days": "Tööpäevad", + "title": "Kalendri seaded", + "default_view": "Vaikevaade", + "week_starts_on": "Nädal algab", + "time_format": "Ajavorming", + "default_calendar": "Vaikekalender", + "default_reminder": "Vaikimisi meeldetuletus", + "time_format_12h": "12-tunnine", + "time_format_24h": "24-tunnine", + "notifications_enabled": "Sündmuste teavitused", + "notifications_enabled_desc": "Kuva teavitusi eelseisvate kalendrisündmuste kohta", + "notification_sound": "Teavituse heli", + "notification_sound_desc": "Esita kalendriteavituste puhul heli", + "invitation_parsing": "Tuvasta e-kirjade kutsed", + "invitation_parsing_desc": "Tuvasta kalendrikutsed e-kirjade manustes ja kuva kalenditoimingud", + "show_time_in_month_view": "Kuva kellaaeg kuuvaates", + "show_time_in_month_view_desc": "Kuva sündmuste kellaajad kuu kalendrivaates. Väikestel ekraanidel kuvatakse punktide asemel täielikud sündmuste kirjed.", + "show_week_numbers": "Kuva nädalanumbrid", + "show_week_numbers_desc": "Kuva nädalanumbrid minikalendris", + "calendar_free_scroll": "Vaba kerimine", + "calendar_free_scroll_desc": "Keri kuude, nädalate ja päevade vahel pidevalt, mitte ühe perioodi kaupa", + "enable_tasks": "Luba ülesanded", + "enable_tasks_desc": "Kuva kalendris ülesannete vaade tegemiste haldamiseks", + "show_tasks_on_calendar": "Kuva ülesanded kalendris", + "show_tasks_on_calendar_desc": "Kuva ülesannete sildid päeva- ja nädalavaates", + "hover_preview": "Sündmuse hõljutusega eelvaade", + "hover_preview_desc": "Kuva kalendrisündmuse kohal hõljutades üksikasjade hüpikaken", + "hover_preview_instant": "Koheselt", + "hover_preview_delay_500ms": "0,5-sekundiline viivitus", + "hover_preview_delay_1s": "1-sekundiline viivitus", + "hover_preview_delay_2s": "2-sekundiline viivitus", + "hover_preview_off": "Keelatud", + "organizer_identity": "Korralda kutseid kui", + "organizer_identity_desc": "Kalendriaadress, mida kasutatakse korraldajana, kui kutsud inimesi sündmustele.", + "organizer_identity_failed": "Korraldaja aadressi muutmine ebaõnnestus", + "show_birthday_calendar": "Kontaktide sünnipäevakalender", + "show_birthday_calendar_desc": "Kuva virtuaalne kalender sinu kontaktide sünnipäevadega" + }, + "days": { + "monday": "Esmaspäev", + "tuesday": "Teisipäev", + "wednesday": "Kolmapäev", + "thursday": "Neljapäev", + "friday": "Reede", + "saturday": "Laupäev", + "sunday": "Pühapäev", + "mon": "E", + "tue": "T", + "wed": "K", + "thu": "N", + "fri": "R", + "sat": "L", + "sun": "P" + }, + "months": { + "jan": "Jaan", + "feb": "Veebr", + "mar": "Märts", + "apr": "Apr", + "may": "Mai", + "jun": "Juuni", + "jul": "Juuli", + "aug": "Aug", + "sep": "Sept", + "oct": "Okt", + "nov": "Nov", + "dec": "Dets", + "far": "Farvardin", + "ord": "Ordibehesht", + "kho": "Khordad", + "tir": "Tir", + "mor": "Mordad", + "sha": "Shahrivar", + "meh": "Mehr", + "aba": "Aban", + "aza": "Azar", + "dey": "Dey", + "bah": "Bahman", + "esf": "Esfand" + }, + "notifications": { + "event_created": "Sündmus loodud", + "event_updated": "Sündmus uuendatud", + "event_deleted": "Sündmus kustutatud", + "calendar_created": "Kalender loodud", + "calendar_deleted": "Kalender kustutatud", + "event_move_error": "Sündmuse liigutamine ebaõnnestus", + "event_resize_error": "Sündmuse suuruse muutmine ebaõnnestus", + "alert_title": "Eelseisev sündmus", + "alert_now": "Algab kohe", + "alert_in_minutes": "{count} min pärast", + "invitation_sent": "Kutsed saadetud", + "invitations_denied_title": "Kutseid ei saa saata", + "invitations_denied": "Server keeldus kutseid saatmast: {reason}. Kas salvestada sündmus kutseid saatmata?", + "save_without_invitations": "Salvesta kutseteta", + "rsvp_updated": "Vastus uuendatud", + "rsvp_error": "Vastuse uuendamine ebaõnnestus", + "event_duplicated": "Sündmus dubleeritud", + "event_error": "Sündmuse salvestamine ebaõnnestus", + "task_due": "Ülesande tähtaeg", + "event_exported": "Sündmus eksporditud", + "title_copied": "Pealkiri kopeeritud", + "link_copied": "Link kopeeritud" + }, + "status": { + "loading_calendars": "Kalendrite laadimine...", + "loading_events": "Sündmuste laadimine..." + }, + "quick_create": { + "placeholder": "Uue sündmuse pealkiri", + "aria_label": "Kiire sündmuse loomine", + "add_title": "Lisa pealkiri", + "more_options": "Rohkem valikuid" + }, + "nav_prev": "Eelmine", + "nav_next": "Järgmine", + "nav_open_menu": "Ava menüü", + "import": { + "title": "Kalendri importimine", + "tab_file": "Fail", + "tab_url": "URL", + "select_file": "Vali .ics fail", + "drop_file": "või lohista fail siia", + "supported_formats": "Toetab iCalendari (.ics) faile", + "url_description": "Sündmuste importimiseks sisesta välise iCalendari (.ics) voo URL.", + "url_placeholder": "https://example.com/calendar.ics", + "url_hint": "Toetab CalDAV ja iCalendari (.ics) URL-e", + "fetch": "Laadi", + "invalid_url": "Palun sisesta kehtiv URL", + "url_fetch_failed": "Kalendri laadimine URL-ilt ebaõnnestus", + "parsing": "Kalendrifaili töötlemine...", + "parsed_events": "Leiti {count} sündmust", + "no_events": "Failist ei leitud sündmusi", + "select_all": "Vali kõik", + "deselect_all": "Tühista kõigi valik", + "target_calendar": "Impordi kalendrisse", + "import_button": "Impordi valitud", + "importing": "Sündmuste importimine...", + "success": "{count} sündmust imporditi edukalt", + "error": "Kalendri importimine ebaõnnestus", + "file_too_large": "Fail ületab 10 MB piirangu", + "invalid_format": "Vale kalendrifaili vorming" + }, + "webcal_action": { + "title": "Ava kalendrilink", + "description": "Kuidas soovid kalendrit \"{name}\" kasutada?", + "import_title": "Impordi ühekordselt", + "import_description": "Laadi sündmused kohe alla ja kopeeri need ühte oma kalendritest.", + "subscribe_title": "Telli", + "subscribe_description": "Hoia see kalender automaatselt sünkroonituna eraldi kalendrina.", + "cancel": "Tühista" + }, + "management": { + "title": "Kalendrite haldamine", + "description": "Loo, nimeta ümber ja kohanda oma kalendreid. Kalendri värvi kiireks muutmiseks tee küljeribal kalendril paremklõps.", + "name": "Nimi", + "name_placeholder": "Kalendri nimi", + "color": "Värv", + "change_color": "Muuda värvi", + "random_color": "Uus juhuslik värv", + "add_calendar": "Lisa kalender", + "edit": "Muuda", + "delete": "Kustuta", + "save": "Salvesta", + "create": "Loo", + "cancel": "Tühista", + "default": "Vaikimisi", + "confirm_delete": "Kustutada \"{name}\"? Kõik selle kalendri sündmused eemaldatakse.", + "confirm_clear": "Tühjendada kõik sündmused kalendrist \"{name}\"? Seda ei saa tagasi võtta.", + "set_default": "Määra vaikimisi kalendriks", + "default_updated": "Vaikekalender uuendatud", + "error_default": "Vaikekalendri määramine ebaõnnestus", + "clear_events": "Tühjenda sündmused", + "events_cleared": "{count} sündmust tühjendatud", + "error_clear": "Kalendrisündmuste tühjendamine ebaõnnestus", + "calendar_created": "Kalender loodud", + "calendar_updated": "Kalender uuendatud", + "calendar_deleted": "Kalender kustutatud", + "color_updated": "Kalendri värv uuendatud", + "error_create": "Kalendri loomine ebaõnnestus", + "error_update": "Kalendri uuendamine ebaõnnestus", + "error_delete": "Kalendri kustutamine ebaõnnestus", + "caldav_url": "CalDAV URL", + "copy_url": "Kopeeri CalDAV URL", + "url_copied": "CalDAV URL kopeeriti lõikelauale", + "share": "Jaga kalendrit", + "new_event_in_calendar": "Uus sündmus selles kalendris", + "shared_with": "Jagatud: {names}", + "shared_with_count": "{count, plural, one {Jagatud 1 inimesega} other {Jagatud # inimesega}}", + "move_up": "Liiguta üles", + "move_down": "Liiguta alla", + "kind": "Sisu", + "kind_events": "Sündmused", + "kind_tasks": "Ülesanded", + "kind_both": "Sündmused ja ülesanded", + "kind_hint": "Määrab, millised rakendused seda kalendrit CalDAV kaudu sünkroonides näevad. Seda ei saa hiljem muuta.", + "default_alerts": "Vaikemeeldetuletused", + "default_alerts_title": "Kalendri „{name}” vaikemeeldetuletused", + "default_alerts_hint": "Selle kalendri uued sündmused saavad need meeldetuletused, kui sa neid sündmuses ei muuda. Siin muutmine ei muuda olemasolevaid sündmusi. E-posti meeldetuletused saadab meiliserver.", + "default_alerts_timed": "Kellaajaga sündmused", + "default_alerts_all_day": "Terve päeva sündmused", + "default_alerts_updated": "Vaikemeeldetuletused uuendatud" + }, + "subscription": { + "title": "iCal tellimus", + "section_title": "iCal tellimused", + "description": "Telli väline iCalendari voog. Sündmused sünkroonitakse automaatselt omaette kalendrisse. Toetab https:// ja webcal:// URL-e.", + "url_label": "Kalendri URL", + "url_placeholder": "https://example.com/calendar.ics või webcal://...", + "name_label": "Kalendri nimi", + "name_placeholder": "nt riigipühad", + "color_label": "Värv", + "refresh_interval": "Värskendamise intervall", + "interval_15": "Iga 15 minuti järel", + "interval_30": "Iga 30 minuti järel", + "interval_60": "Iga tunni järel", + "interval_360": "Iga 6 tunni järel", + "interval_1440": "Iga päev", + "subscribe": "Telli", + "subscribing": "Tellimine...", + "save": "Salvesta muudatused", + "saving": "Salvestamine...", + "edit": "Muuda", + "edit_title": "Tellimuse muutmine", + "updated": "\"{name}\" uuendatud", + "update_error": "Tellimuse uuendamine ebaõnnestus", + "invalid_url": "Palun sisesta kehtiv URL", + "success": "Tellitud: \"{name}\"", + "error": "Tellimuse lisamine ebaõnnestus", + "refresh": "Värskenda kohe", + "refresh_success": "Tellimus värskendatud", + "refresh_error": "Tellimuse värskendamine ebaõnnestus", + "unsubscribe": "Lõpeta tellimus", + "confirm_delete": "Lõpetada tellimus \"{name}\"? Kalender ja kõik selle sündmused eemaldatakse.", + "deleted": "Tellimus eemaldatud", + "delete_error": "Tellimuse eemaldamine ebaõnnestus", + "last_refreshed": "Viimati uuendatud: {time}" + }, + "tasks": { + "label": "Ülesanded", + "no_tasks": "Ülesandeid pole", + "no_title": "(Pealkirjata)", + "mark_complete": "Märgi täidetuks", + "mark_incomplete": "Märgi täitmata", + "filter_all": "Kõik", + "filter_pending": "Ootel", + "filter_completed": "Täidetud", + "filter_overdue": "Tähtaeg möödas", + "show_completed": "Kuva täidetud", + "create": "Uus ülesanne", + "edit": "Muuda ülesannet", + "title_placeholder": "Ülesande pealkiri", + "description_placeholder": "Lisa kirjeldus...", + "due_date": "Tähtaeg", + "include_time": "Kaasa kellaaeg", + "priority": "Prioriteet", + "priority_none": "Puudub", + "priority_high": "Kõrge", + "priority_medium": "Keskmine", + "priority_low": "Madal", + "progress": "Olek", + "progress_needs_action": "Vajab vastust", + "progress_in_process": "Pooleli", + "progress_completed": "Täidetud", + "progress_cancelled": "Tühistatud", + "calendar": "Kalender", + "alert": "Meeldetuletus", + "alert_none": "Puudub", + "alert_at_time": "Tähtaja saabudes", + "alert_5min": "5 minutit enne", + "alert_15min": "15 minutit enne", + "alert_30min": "30 minutit enne", + "alert_1hr": "1 tund enne", + "alert_1day": "1 päev enne", + "delete": "Kustuta", + "cancel": "Tühista", + "save": "Salvesta", + "quick_add_placeholder": "Lisa ülesanne...", + "due_today": "Täna", + "due_tomorrow": "Homme", + "overdue": "Tähtaeg möödas" + }, + "toolbar": { + "more": "Rohkem toiminguid", + "select_view": "Muuda vaadet, praegu {view}" + }, + "other_calendars": "Muud kalendrid", + "calendar_options": "Kalendri {name} valikud" + }, + "calendar_event_notifications": { + "someone": "Keegi", + "invited": "{name} kutsus sind sündmusele \"{title}\"", + "updated": "{name} uuendas sündmust \"{title}\"", + "cancelled": "{name} tühistas sündmuse \"{title}\"", + "untitled": "Nimetu sündmus" + }, + "share_notifications": { + "someone": "Keegi", + "shared": "{name} jagas sinuga {kind} \"{object}\"", + "changed": "{name} muutis sinu juurdepääsu {kind}-le \"{object}\"", + "revoked": "{name} eemaldas sinu juurdepääsu {kind}-le \"{object}\"", + "object": { + "folder": "kaust", + "calendar": "kalender", + "address_book": "aadressiraamat", + "files": "failikaust" + } + }, + "sharing": { + "title": "Jaga \"{name}\"", + "description": "Anna juurdepääs selle serveri teistele kasutajatele või gruppidele. Muudatused rakenduvad koheselt.", + "no_shares": "Pole veel kellegagi jagatud.", + "add_person": "Lisa isik või grupp", + "search_placeholder": "Otsi nime või e-posti järgi…", + "loading_principals": "Kasutajate laadimine…", + "no_principals": "Teisi kasutajaid ega gruppe ei leitud.", + "no_match": "Vasteid ei leitud.", + "remove": "Eemalda juurdepääs", + "group": "Grupp", + "share_added": "Juurdepääs antud", + "share_updated": "Juurdepääs uuendatud", + "share_removed": "Juurdepääs eemaldatud", + "share_failed": "Jagamise uuendamine ebaõnnestus", + "preset": { + "freeBusy": "Ainult vaba/hõivatud", + "read": "Ainult lugemine", + "readWrite": "Lugemine ja kirjutamine", + "manager": "Haldur", + "custom": "Kohandatud" + } + }, + "advanced_search": { + "title": "Täpsem otsing", + "from": "Saatja", + "from_placeholder": "Saatja e-post või nimi", + "to": "Saaja", + "to_placeholder": "Saaja e-post või nimi", + "subject": "Teema", + "subject_placeholder": "Teema sisaldab...", + "body": "Sisu", + "body_placeholder": "Sisu sisaldab...", + "folder": "Kaust", + "all_folders": "Kõik kaustad", + "all_folders_except_spam_trash": "Kõik kaustad peale rämpsposti ja prügikasti", + "has_attachment": "Manused", + "date_after": "Pärast", + "date_before": "Enne", + "size_min": "Suurem kui (KB)", + "size_max": "Väiksem kui (KB)", + "starred": "Tähistatud", + "unread": "Lugemata", + "read": "Loetud", + "yes": "Jah", + "no": "Ei", + "clear": "Tühjenda", + "clear_all": "Tühjenda kõik", + "filters_active": "{count} filter", + "filters_active_plural": "{count} filtrit", + "toggle_filters": "Rohkem", + "search_hint": "Kasuta täpseks otsinguks täiendavaid filtreid", + "advanced_filters_tooltip": "Täpsema otsingu filtrid", + "results_found": "{count, plural, =0 {Tulemusi ei leitud} one {# tulemus leitud} other {# tulemust leitud}}", + "results_found_more": "{count}+ tulemust leitud", + "suggestions_recent": "Hiljutised otsingud", + "suggestions_people": "Inimesed", + "suggestions_from": "Otsi e-kirju saatjalt {address}", + "suggestions_to": "Otsi e-kirju saajale {address}", + "suggestions_remove_recent": "Eemalda hiljutistest otsingutest", + "has_words": "Sisaldab sõnu", + "size": "Suurus", + "date_within": "Kuupäev", + "search_in": "Otsi kaustast", + "has_attachment_check": "Sisaldab manust", + "search": "Otsi" + }, + "welcome": { + "title": "Tere tulemast sinu postkasti", + "tip_compose": "Vajuta c uue e-kirja kirjutamiseks", + "tip_shortcuts": "Vajuta ? kõigi kiirklahvide nägemiseks", + "tip_sidebar": "Kalender, Kontaktid ja Seaded leiad külgmenüüst", + "tip_settings": "Kohanda oma kogemust seadetes", + "tip_compose_touch": "Uue kirja kirjutamiseks puuduta pliiatsinuppu", + "tip_sidebar_touch": "Kalender, kontaktid ja seaded asuvad alumisel ribal", + "got_it": "Selge", + "settings": "Seaded", + "dismiss": "Sulge", + "start_tour": "Alusta tutvustust" + }, + "demo_welcome": { + "title": "Tere tulemast Bulwark Maili juurde", + "description": "Tutvu täisfunktsionaalse veebipostiga - otse oma brauseris. Kõik andmed jäävad sinu seadmesse, seega võid vabalt kõike proovida.", + "feature_email": "Loe ja kirjuta e-kirju", + "feature_organize": "Märgid, tähed ja kaustad", + "feature_shortcuts": "Kiirklahvid", + "feature_privacy": "100% privaatne demo", + "hint": "Klõpsa alustamiseks vasakul mõnel e-kirjal või tee allpool tutvustusring." + }, + "files": { + "office_edit": "Muuda dokumenti", + "office_loading": "Dokumendiredaktori avamine…", + "office_error": "Dokumendiredaktorit ei õnnestunud avada.", + "office_close": "Sulge redaktor", + "open_in_new_tab": "Ava uues vahelehes", + "title": "Failid", + "search_placeholder": "Otsi faile...", + "empty_state_title": "Faile pole veel", + "upload_files": "Laadi failid üles", + "new_folder": "Uus kaust", + "new_folder_name": "Kausta nimi", + "rename": "Nimeta ümber", + "rename_title": "Nimeta ümber", + "new_name": "Uus nimi", + "name_forbidden_chars": "Server ei luba nimedes neid märke: {chars}", + "name_reserved": "See nimi on serveris reserveeritud.", + "delete": "Kustuta", + "delete_confirm_title": "Kustuta ressurss", + "delete_confirm_message": "Kas oled kindel, et soovid kustutada \"{name}\"? Seda ei saa tagasi võtta.", + "download": "Laadi alla", + "name": "Nimi", + "size": "Suurus", + "modified": "Muudetud", + "type": "Tüüp", + "folder": "Kaust", + "file": "Fail", + "no_accounts": "Ühendatud kontosid pole.", + "uploading": "Üleslaadimine...", + "upload_success": "{count, plural, one {1 fail üles laaditud} other {# faili üles laaditud}}", + "upload_canceled": "Üleslaadimine tühistatud", + "upload_canceled_partial": "{count, plural, one {1 fail} other {# faili}} laaditi üles enne tühistamist", + "upload_error": "Faili üleslaadimine ebaõnnestus", + "create_folder_success": "Kaust loodud", + "create_folder_error": "Kausta loomine ebaõnnestus", + "delete_success": "Edukalt kustutatud", + "delete_error": "Kustutamine ebaõnnestus", + "rename_success": "Edukalt ümber nimetatud", + "rename_error": "Ümbernimetamine ebaõnnestus", + "download_error": "Allalaadimine ebaõnnestus", + "not_available": "Failihoidla ei ole selles serveris saadaval", + "cancel": "Tühista", + "create": "Loo", + "save": "Salvesta", + "no_results": "Otsingule vastavaid faile ei leitud", + "batch_delete_confirm_message": "Kas oled kindel, et soovid kustutada {count, plural, one {1 üksuse} other {# üksust}}? Seda ei saa tagasi võtta.", + "batch_delete_success": "{count, plural, one {1 üksus kustutatud} other {# üksust kustutatud}}", + "grid_view": "Ruudustikvaade", + "list_view": "Loendivaade", + "details": "Üksikasjad", + "path": "Asukoht", + "preview": "Eelvaade", + "preview_error": "Eelvaate laadimine ebaõnnestus", + "cut": "Lõika", + "copy": "Kopeeri", + "paste": "Kleebi", + "move_success": "{count, plural, one {1 üksus liigutatud} other {# üksust liigutatud}}", + "move_error": "Liigutamine ebaõnnestus", + "paste_success": "Edukalt kleebitud", + "paste_error": "Kleepimine ebaõnnestus", + "new_text_file": "Uus tekstifail", + "file_name": "Faili nimi", + "retry": "Proovi uuesti", + "refresh": "Värskenda", + "duplicate": "Dubleeri", + "duplicate_success": "Edukalt dubleeritud", + "duplicate_error": "Dubleerimine ebaõnnestus", + "share": "Jaga", + "shared": "Jagatud", + "shared_with_me": "Minuga jagatud", + "shared_by": "Jagas {name}", + "create_file_success": "Fail loodud", + "create_file_error": "Faili loomine ebaõnnestus", + "favorites": "Lemmikud", + "recent": "Hiljutised", + "show_in_folder": "Näita kaustas", + "remove_from_recent": "Eemalda hiljutistest", + "upload_folder": "Laadi kaust üles", + "file_too_large": "\"{name}\" ületab maksimaalset failisuurust ({max})", + "undo": "Võta tagasi", + "undo_success": "Tegevus tagasi võetud", + "undo_error": "Tagasivõtmine ebaõnnestus", + "toolbar": "Failitoimingud", + "open_folder_tree": "Ava kaustapuu", + "file_list": "Failid ja kaustad", + "context_menu": "Toimingud", + "settings_ascending": "Kasvav", + "settings_descending": "Kahanev", + "disabled_title": "Administraator on failide funktsiooni välja lülitanud", + "disabled_description": "Suurte failide üleslaadimine WebDAV kaudu võib põhjustada Stalwart/RocksDB ebastabiilsust, sealhulgas mälupuudusest tingitud krahhe ja taastamatut kettaruumi kasutust. Kustutatud failid ei pruugi objektihoidlast kohe kaduda. Seda funktsiooni ei soovitata kasutada tootmiskeskkonnas.", + "migration_title": "Failide uuendamine…", + "migration_description": "Kaustade ja failide korrastamine õigesse struktuuri. See toimub ainult üks kord.", + "new": "Uus", + "my_files": "Minu failid", + "folders": "Kaustad", + "files_heading": "Failid", + "open": "Ava", + "star": "Tähista", + "unstar": "Eemalda tärn", + "expand_folder": "Laienda {name}", + "collapse_folder": "Ahenda {name}", + "sidebar_hint": "Tähista kaustu ja ava faile, et neid siit leida.", + "breadcrumbs": "Kausta tee", + "show_path": "Näita teel peidetud kaustu", + "selection_actions": "Valitud üksuste toimingud", + "selected_count": "{count, plural, one {1 valitud} other {# valitud}}", + "clear_selection": "Tühista valik", + "select_all": "Vali kõik", + "select_item": "Vali {name}", + "more_actions": "Rohkem toiminguid: {name}", + "paste_here": "Kleebi sellesse kausta", + "paste_count": "{count, plural, one {Kleebi 1 üksus} other {Kleebi # üksust}}", + "sort_by": "Sorteeri", + "view_mode": "Paigutus", + "clear_search": "Tühjenda otsing", + "no_results_for": "Selles kaustas pole midagi, mis vastaks päringule „{query}”", + "download_count": "{count, plural, one {Laadi alla 1 fail} other {Laadi alla # faili}}", + "delete_count": "{count, plural, one {Kustuta 1 üksus} other {Kustuta # üksust}}", + "close_details": "Sulge üksikasjad", + "file_kind": "{ext}-fail", + "folder_summary": "{folders, plural, =0 {Kaustu pole} one {1 kaust} other {# kausta}}, {files, plural, =0 {faile pole} one {1 fail} other {# faili}}", + "details_hint": "Üksikasjade nägemiseks vali fail või kaust.", + "sharing": "Jagamine", + "shared_with_count": "{count, plural, one {Jagatud 1 inimesega} other {Jagatud # inimesega}}", + "only_you": "Ainult sina", + "empty_folder_title": "See kaust on tühi", + "empty_folder_description": "Lohista failid siia või laadi need oma seadmest üles.", + "empty_folder_read_only": "Sellesse kausta ei saa faile lisada.", + "choose_account": "Vali konto", + "drop_to_upload": "Lase lahti, et laadida kausta {folder}", + "uploading_count": "Üleslaadimine {current} / {total}", + "dismiss": "Sulge", + "zoom_in": "Suumi sisse", + "zoom_out": "Suumi välja", + "zoom_reset": "Sobita ekraanile", + "rotate": "Pööra", + "close_preview": "Sulge" + }, + "smime": { + "your_certificates": "Sinu sertifikaadid", + "your_certificates_desc": "Impordi ja halda oma S/MIME sertifikaate e-kirjade allkirjastamiseks ja krüpteerimiseks", + "recipient_certificates": "Saajate sertifikaadid", + "recipient_certificates_desc": "Avalikud sertifikaadid saajatele saadetavate e-kirjade krüpteerimiseks", + "identity_bindings": "Identiteedi võtmeseosed", + "identity_bindings_desc": "Seo S/MIME sertifikaadid oma e-posti identiteetidega", + "defaults_title": "Vaikeseaded", + "defaults_desc": "Seadista allkirjastamise ja krüpteerimise vaikekäitumine", + "import_pkcs12": "Impordi PKCS#12 (.p12/.pfx)", + "import_public_cert": "Impordi sertifikaat", + "no_certificates": "Sertifikaate pole veel imporditud", + "no_recipient_certs": "Saajate sertifikaate pole", + "expires": "Aegub", + "expired": "Aegunud", + "bound_to": "Seotud", + "no_key_bound": "Puudub", + "lock": "Lukusta võti", + "unlock": "Ava võti", + "details": "Vaata üksikasju", + "delete": "Kustuta", + "encrypt_by_default": "Krüpteeri vaikimisi", + "encrypt_by_default_desc": "Krüpteeri e-kirjad automaatselt, kui kõigil saajatel on sertifikaat", + "remember_unlocked": "Jäta avatud võtmed meelde", + "remember_unlocked_desc": "Hoia võtmed avatuna kogu selle brauserisessiooni jooksul", + "sign_default_for": "Allkirjasta vaikimisi", + "enter_p12_passphrase": "Sisesta PKCS#12 paroolfraas", + "p12_passphrase_desc": "Sisesta paroolfraas, mis kaitseb seda sertifikaadifaili", + "enter_storage_passphrase": "Määra hoidla paroolfraas", + "storage_passphrase_desc": "Vali paroolfraas, mis kaitseb seda võtit brauseris puhkeolekus", + "next": "Järgmine", + "import": "Impordi", + "unlock_key": "Ava võti", + "unlock_key_desc": "Sisesta hoidla paroolfraas, et avada see võti allkirjastamiseks või dekrüpteerimiseks", + "passphrase_placeholder": "Sisesta paroolfraas", + "confirm_passphrase_placeholder": "Kinnita paroolfraas", + "passphrase_mismatch": "Paroolfraasid ei kattu", + "cancel": "Tühista", + "processing": "Töötlemine…", + "close": "Sulge", + "certificate_details": "Sertifikaadi üksikasjad", + "cert_subject": "Subjekt", + "cert_issuer": "Väljastaja", + "cert_email": "E-post", + "cert_serial": "Seerianumber", + "cert_validity": "Kehtivus", + "cert_fingerprint": "Sõrmejälg (SHA-256)", + "cert_algorithm": "Algoritm", + "cert_capabilities": "Võimalused", + "cert_source": "Allikas", + "cert_expired": "See sertifikaat on aegunud", + "cert_not_yet_valid": "See sertifikaat ei kehti veel", + "cap_sign": "Allkirjastamine", + "cap_encrypt": "Krüpteerimine", + "cap_none": "Puudub", + "show_passphrase": "Näita paroolfraasi", + "hide_passphrase": "Peida paroolfraas", + "sign_toggle": "Allkirjasta", + "encrypt_toggle": "Krüpteeri", + "missing_recipient_certs": "Sertifikaadid puuduvad: {emails}", + "missing_sender_cert": "Selle identiteediga pole sertifikaati seotud", + "status_encrypted_ok": "See sõnum oli krüpteeritud", + "status_encrypted_no_key": "See sõnum on krüpteeritud, kuid sobivat võtit ei leitud", + "status_encrypted_failed": "Selle sõnumi dekrüpteerimine ebaõnnestus", + "status_signed_valid": "Allkiri on kontrollitud", + "status_signed_invalid": "Allkirja kontrollimine ebaõnnestus", + "status_signed_expired_cert": "Allkirjastatud aegunud sertifikaadiga", + "status_signed_self_signed": "Allkiri on kehtiv, kuid sertifikaat on ise-allkirjastatud (ei ole usaldusväärne)", + "status_signed_mismatch": "Allkiri on kehtiv, kuid allkirjastaja ei ühti saatjaga", + "status_unsupported": "Toetamata S/MIME vorming", + "auto_import_signer_certs": "Impordi allkirjastajate sertifikaadid automaatselt", + "auto_import_signer_certs_desc": "Salvesta kontrollitud allkirjastatud e-kirjade sertifikaadid automaatselt hilisemaks krüpteerimiseks", + "export": "Ekspordi", + "enter_export_passphrase": "Määra ekspordi paroolfraas", + "export_passphrase_desc": "Vali paroolfraas eksporditud PKCS#12 faili kaitsmiseks", + "export_storage_desc": "Sisesta hoidla paroolfraas, et dekrüpteerida võti eksportimiseks", + "incorrect_passphrase": "Vale paroolfraas" + }, + "tour": { + "step_counter": "Samm {current}/{total}", + "skip": "Jäta tutvustus vahele", + "back": "Tagasi", + "next": "Järgmine", + "finish": "Lõpeta", + "take_a_tour": "Tutvu liidesega", + "restart_title": "Sissejuhatav tutvustus", + "restart_desc": "Vaata liidese juhendatud tutvustust uuesti", + "restart_button": "Alusta tutvustust uuesti", + "show_on_new_devices_title": "Näita uutes seadmetes", + "show_on_new_devices_desc": "Näita tervitusteadet ja tutvustust uuesti, kui logid esimest korda sisse uues seadmes, isegi kui oled need mujal juba läbinud", + "sidebar_title": "Sinu postkastid", + "sidebar_desc": "See on sinu kaustade külgriba. Kirjade vaatamiseks klõpsa mistahes postkastil. Saad luua kaustu, lohistada kirju nende vahel ja näha korraga lugemata kirjade arvu.", + "compose_title": "Koosta e-kiri", + "compose_desc": "Klõpsa siia, et kirjutada uus e-kiri. Saad lisada saajaid, manuseid ja kasutada rikastatud tekstivormingut.", + "search_title": "Otsi oma kirjade seast", + "search_desc": "Otsi saatja, teema või sisu järgi. Täpsemate valikute (kuupäevavahemik, manused, tärniga tähistatud kirjad) jaoks klõpsa filtriikoonil.", + "email_list_title": "Sinu kirjade loend", + "email_list_desc": "Kirjad kuvatakse siin. Lugemiseks klõpsa kirjal, see avaneb paremal. Märkeruutude abil saad valida mitu kirja ja need korraga liigutada, kustutada või sildistada.", + "email_viewer_title": "Lugemispaan", + "email_viewer_desc": "Valitud kiri avaneb siin. Tööriistariba nuppudega saad vastata, edastada, arhiveerida või kustutada. Samuti saad kirju tärniga märkida või lisada värvisilte.", + "keywords_title": "Värvisildid", + "keywords_desc": "Korrasta oma e-kirju värvikoodiga siltide abil. Sildistamiseks lohista kiri sildile või tee kirjal paremklõps ja määra silt.", + "calendar_title": "Kalender", + "calendar_desc": "Lülitu kalendrile, et hallata oma sündmusi. Loo sündmusi, sea meeldetuletusi ning vaata päeva-, nädala- või kuuvaadet.", + "contacts_title": "Kontaktid", + "contacts_desc": "Siin asub sinu aadressiraamat. Impordi kontakte, loo gruppe ja klõpsa kontaktil, et näha kõiki üksikasju.", + "settings_title": "Seaded", + "settings_desc": "Kohanda kõike: teema, tihedus, allkirjad, filtrid, kiirklahvid, kalendri vaikeseaded ja palju muud.", + "shortcuts_title": "Kiirklahvid", + "shortcuts_desc": "Kogenud kasutajate lemmik. Vajuta igal ajal ?, et näha kõiki saadaolevaid kiirklahve. Saad liikuda, kirjutada ja hallata kirju ilma hiirt puudutamata.", + "compose_open_title": "Kirjakoostaja", + "compose_open_desc": "See on kirjakoostaja. Lisa saajaid, kirjuta oma sõnum, lisa manuseid ja kasuta rikastatud tekstivormingut. Samuti saad salvestada mustandeid ja kasutada malle.", + "calendar_view_title": "Sinu kalender", + "calendar_view_desc": "Siin on sinu kalender koos näidissündmustega. Tööriistariba abil saad vahetada päeva-, nädala-, kuu- ja päevakorravaadete vahel.", + "create_event_title": "Loo sündmus", + "create_event_desc": "Klõpsa sellel nupul uue kalendrisündmuse loomiseks. Saad määrata pealkirja, kuupäeva, kellaaja ja lisada osalejaid.", + "event_modal_title": "Sündmuse üksikasjad", + "event_modal_desc": "Siin on sündmuse vorm. Täida pealkiri, vali kuupäev ja kellaaeg, lisa asukoht või osalejad. Kui oled valmis, vajuta salvesta - või sulge vorm ja liigu edasi.", + "contacts_list_title": "Sinu kontaktid", + "contacts_list_desc": "Siin on sinu kontaktid. Klõpsa kontaktil, et näha selle täielikke andmeid paremal. Samuti saad luua uusi kontakte, importida vCarde või korraldada kontakte gruppidesse.", + "settings_tabs_title": "Seadete menüü", + "settings_tabs_desc": "Siin on kõik seadete kategooriad. Kohanda välimust, halda identiteete, seadista e-posti filtreid, kalendrit ja palju muud.", + "files_title": "Failihoidla", + "files_desc": "Failihalduriga saad faile üles laadida, korrastada ja jagada - nagu isiklik pilvekettas, mis on sinu e-postiga sisse ehitatud.", + "demo_banner_title": "Demorežiimi juhtnupud", + "demo_banner_desc": "Oled demorežiimis - kõik jääb sinu brauserisse. Vajuta igal ajal 'Lähtesta demo', et alustada puhta näidisandmestikuga otsast peale.", + "quota_title": "Mahu kasutus", + "quota_desc": "Jälgi siin oma postkasti suurust. Ring täitub, mida rohkem ruumi kasutad." + }, + "unified_mailbox": { + "search_unavailable": "Otsing pole ühendatud vaates saadaval" + }, + "quote_header": { + "reply_line": "{date}, {from} kirjutas:", + "forwarded_separator": "---------- Edastatud sõnum ----------", + "from_label": "Saatja", + "date_label": "Kuupäev", + "subject_label": "Teema" + }, + "pwa_install": { + "title": "Paigalda {appName}", + "description": "Paigalda meie rakendus kiireks ligipääsuks ja võrguühenduseta kasutamiseks.", + "not_now": "Mitte praegu", + "install": "Paigalda", + "dont_remind": "Ära tuleta enam meelde", + "dismiss_aria": "Sulge paigaldusteade" + }, + "deep_link": { + "message_not_found": "See sõnum ei ole enam saadaval.", + "thread_not_found": "See vestlus ei ole enam saadaval.", + "folder_not_found": "See kaust ei ole enam saadaval.", + "event_not_found": "See sündmus ei ole enam saadaval.", + "file_not_found": "See fail ei ole enam saadaval.", + "account_unavailable": "Selle lingi avamiseks logi sisse vastavasse kontosse.", + "copy_message": "Kopeeri link sõnumile", + "copy_conversation": "Kopeeri link vestlusele", + "copy_event": "Kopeeri link sündmusele", + "copied": "Link kopeeritud", + "copy_failed": "Linki ei õnnestunud kopeerida" + }, + "plugins": { + "oauth_callback": { + "completing": "Autoriseerimise lõpetamine…", + "completing_message": "Palun oota, kuni ühendus luuakse.", + "received_title": "Autoriseerimine õnnestus", + "received_message": "Võid naasta vahelehele, kust ühenduse alustasid.", + "failed_title": "Autoriseerimine ebaõnnestus", + "denied": "Autoriseerimisest keelduti.", + "failed_detail": "Autoriseerimine ebaõnnestus: {error}", + "missing_params": "Autoriseerimiskood või olek puudub.", + "delivery_failed": "Autoriseerimise tulemust ei õnnestunud rakenduse vahelehele edastada. Palun sulge see aken ja proovi uuesti." + }, + "settings": { + "title": "Pistikprogrammid", + "description": "Administraatori lisatud pistikprogrammid. Lülita need oma konto jaoks sisse või välja.", + "description_uploads": "Pistikprogrammid lisavad veebimeilile funktsioone. Lülita need oma konto jaoks sisse või välja või paigalda oma.", + "description_demo": "Pistikprogrammid pole demos saadaval.", + "install_button": "Paigalda pistikprogramm", + "install_hint": "Vali pistikprogrammi ZIP-fail.", + "install_hint_approval": "Vali pistikprogrammi ZIP-fail. Administraator peab selle heaks kiitma, enne kui saad selle sisse lülitada.", + "install_uploads_off": "Sinu administraator ei luba pistikprogramme paigaldada.", + "install_managed_id": "Sinu administraator pakub juba selle nimega pistikprogrammi, seega ei saa seda asendada.", + "install_invalid": "See fail ei ole paigaldatav pistikprogramm: {details}", + "toast_installed": "Pistikprogramm paigaldatud. Lülita see allpool sisse.", + "toast_installed_pending": "Pistikprogramm paigaldatud ja saadetud administraatorile heakskiitmiseks.", + "toast_enabled": "{name} on sees", + "toast_disabled": "{name} on väljas", + "toast_removed": "{name} eemaldati", + "toast_forced": "Sinu administraator hoiab {name} sisse lülitatuna", + "toast_approval_requested": "{name} ootab administraatori heakskiitu", + "empty_title": "Pistikprogramme pole veel", + "empty_admin": "Sinu administraator pole ühtegi pistikprogrammi lisanud.", + "empty_uploads": "Alustamiseks paigalda pistikprogramm ZIP-failist.", + "empty_demo": "Pistikprogrammid vajavad päris kontot, seega demos neid pole.", + "syncing": "Kontrollin pistikprogramme serveriga…", + "status_installed": "Väljas", + "status_enabled": "Käivitub", + "status_running": "Sees", + "status_disabled": "Väljas", + "status_error": "Probleem", + "badge_forced": "Kohustuslik", + "badge_managed": "Sinu administraatorilt", + "badge_yours": "Sinu paigaldatud", + "badge_awaiting": "Ootab heakskiitu", + "toggle_label": "Lülita {name} sisse või välja", + "forced_note": "Sinu administraator nõuab seda pistikprogrammi, seega ei saa seda välja lülitada.", + "permissions": "Mida see teha saab", + "permissions_managed": "Mida see teha saab (administraatori heaks kiidetud)", + "settings": "Seaded", + "remove": "Eemalda", + "remove_title": "Kas eemaldada {name}?", + "remove_message": "Pistikprogramm ja kõik, mida see selles brauseris salvestas, kustutatakse. Võid selle hiljem uuesti paigaldada.", + "remove_confirm": "Eemalda", + "error_user_plugins_off": "Sinu administraator lülitas kasutajate paigaldatud pistikprogrammid välja, seega see pistikprogramm ei tööta.", + "error_approval_unavailable": "See pistikprogramm paigaldati enne heakskiidu nõuet. Eemalda see ja paigalda uuesti, et saata see heakskiitmiseks.", + "error_approval_denied": "Sinu administraator ei kiitnud seda pistikprogrammi heaks.", + "error_approval_pending": "Ootan, et administraator selle pistikprogrammi heaks kiidaks.", + "error_auto_disabled": "Lülitati välja, kuna see jäi ebaõnnestuma. Lülita uuesti sisse, et proovida.", + "accounts_heading": "Ühendatud kontod", + "account_on": "{label} serveris {host}", + "account_waiting": "{label} serveris {host} (sisselogimine pole lõpetatud)", + "disconnect": "Katkesta ühendus", + "disconnect_failed": "Ühenduse katkestamine ebaõnnestus: {label}" + }, + "consent": { + "title": "Kas lubada pistikprogrammil {name} seda teha?", + "intro": "Pistikprogramm küsib allolevaid õigusi. See saab need ainult siis, kui lubad.", + "high_risk_note": "Märgitud üksused annavad pistikprogrammile juurdepääsu sinu kirjade sisule või võimaldavad tal andmeid mujale saata. Luba need ainult pistikprogrammidele, mida usaldad.", + "revoke_hint": "Võid pistikprogrammi igal ajal seadetes välja lülitada või eemaldada.", + "deny": "Ära luba", + "allow": "Luba" + }, + "permissions": { + "none": "See ei vaja erilisi õigusi.", + "high_risk": "Vajab ettevaatust", + "email_read": { + "title": "Loe sinu kirju", + "body": "Näha saatjaid, adressaate, teemasid ja iga sinu konto kirja täisteksti ning sinu kaustu." + }, + "email_write": { + "title": "Muuda ja korrasta sinu kirju", + "body": "Lisada või eemaldada silte, lippe ja muid märksõnu sinu kirjadelt, liigutada neid sinu kaustade vahel ja arhiivi ning salvestada mustandeid." + }, + "email_send": { + "title": "Muuda kirja enne saatmist", + "body": "Lugeda ja muuta sinu kirjutatavate kirjade adressaate, teemat, teksti ja manuseid ning takistada kirja saatmist." + }, + "crypto_full": { + "title": "Täielik juurdepääs sellele rakendusele", + "body": "Töötab samade õigustega kui veebimeil ise. See saab lugeda kogu sinu posti ja salvestatud võtmeid ning tegutseda sinu nimel. Luba see ainult pistikprogrammidele, mida täielikult usaldad." + }, + "email_raw_send": { + "title": "Saada ise koostatud kirju", + "body": "Saata sinu kontolt täielikke kirju, näiteks allkirjastatud või krüpteeritud." + }, + "email_blob_read": { + "title": "Loe kirjade toorsisu", + "body": "Lugeda manuseid ja kirjade täielikku lähteteksti, millega tegutsed, ning iga faili, mille lisad, enne selle saatmist." + }, + "email_blob_write": { + "title": "Asenda manuseid enne saatmist", + "body": "Laadida faile sinu meiliserverisse ja asendada sinu lisatud fail teisega enne kirja saatmist." + }, + "email_render_takeover": { + "title": "Muuda kirjade kuvamist", + "body": "Asendada sinu avatud kirjade ja kirjade nimekirja tekst, näiteks dekrüpteeritud sisu näitamiseks." + }, + "calendar_read": { + "title": "Loe sinu kalendrit", + "body": "Näha sinu kalendreid ja nende sündmusi." + }, + "calendar_write": { + "title": "Muuda sinu kalendrit", + "body": "Luua, muuta ja kustutada sündmusi." + }, + "contacts_read": { + "title": "Loe sinu kontakte", + "body": "Otsida ja lugeda sinu aadressiraamatuid." + }, + "contacts_write": { + "title": "Muuda sinu kontakte", + "body": "Luua, muuta ja kustutada kontakte ja aadressiraamatuid." + }, + "files_read": { + "title": "Loe sinu faile", + "body": "Sirvida ja avada sinu kontol hoitavaid faile." + }, + "files_write": { + "title": "Muuda sinu faile", + "body": "Laadida üles, ümber nimetada, liigutada ja kustutada faile sinu kontol." + }, + "identity_read": { + "title": "Vaata sinu saatjaaadresse", + "body": "Näha aadresse, millelt saadad, ja nende allkirju." + }, + "identity_write": { + "title": "Muuda sinu saatjaaadresse", + "body": "Luua, muuta ja kustutada saatjaaadresse ja allkirju." + }, + "filters_read": { + "title": "Loe sinu meilifiltreid", + "body": "Näha reegleid, mis sinu saabuvat posti sorteerivad." + }, + "filters_write": { + "title": "Muuda sinu meilifiltreid", + "body": "Lisada reegleid sinu serveripoolsetele filtritele. Sellised reeglid võivad saabuvat posti liigutada, edastada või kustutada." + }, + "tasks_read": { + "title": "Loe sinu ülesandeid", + "body": "Näha sinu ülesandenimekirju ja ülesandeid." + }, + "tasks_write": { + "title": "Muuda sinu ülesandeid", + "body": "Luua, muuta, lõpetada ja kustutada ülesandeid." + }, + "templates_read": { + "title": "Loe sinu malle", + "body": "Näha sinu salvestatud kirjamalle." + }, + "templates_write": { + "title": "Muuda sinu malle", + "body": "Luua, muuta ja kustutada kirjamalle." + }, + "smime_read": { + "title": "Vaata sinu S/MIME olekut", + "body": "Näha, kas sul on S/MIME võtmeid ja sertifikaate, ilma võtmetele juurdepääsuta." + }, + "vacation_read": { + "title": "Vaata sinu äraolekuteadet", + "body": "Näha, kas sinu automaatvastus on sees ja mida see ütleb." + }, + "vacation_write": { + "title": "Muuda sinu äraolekuteadet", + "body": "Lülitada sinu automaatvastus sisse või välja ning muuta selle teksti ja kuupäevi." + }, + "settings_read": { + "title": "Loe sinu seadeid", + "body": "Näha sinu eelistusi ja siltide definitsioone." + }, + "settings_write": { + "title": "Muuda sinu seadeid", + "body": "Lisada ja ümber järjestada silte ning muuta sinu eelistusi." + }, + "security_read": { + "title": "Vaata sinu konto turvalisust", + "body": "Näha, kas kaheastmeline sisselogimine ja krüpteerimine on sees, ilma saladustele juurdepääsuta." + }, + "auth_observe": { + "title": "Tea, millal sisse logid", + "body": "Saada teada, kui logid sisse, vahetad kontot või sinu seanssi uuendatakse." + }, + "auth_emit": { + "title": "Logi sind välja", + "body": "Logida sind veebimeilist välja." + }, + "account_read": { + "title": "Vaata sinu kontosid", + "body": "Näha sinu lisatud kontosid koos nende aadresside ja serveritega." + }, + "http_post": { + "title": "Kasuta veebimeili serverit sinu eest", + "body": "Kutsuda neid serveri lõpp-punkte sinu sisselogimisega:" + }, + "http_fetch": { + "title": "Ühendu teiste veebisaitidega", + "body": "Saata päringuid neile saitidele. Kõik, mida pistikprogramm lugeda saab, võidakse sinna saata:" + }, + "admin_config": { + "title": "Loe oma seadeid administraatorilt", + "body": "Lugeda seadeid, mille administraator selle pistikprogrammi jaoks salvestas." + }, + "ui_observe": { + "title": "Jälgi, kus rakenduses oled", + "body": "Teada, milline leht on avatud, ja reageerida linkidele, mida klõpsad." + }, + "ui_toolbar": { + "title": "Lisa tööriistaribadele nuppe", + "body": "Näidata oma nuppe kirja tööriistaribal, avatud kirjal ja ülaribal." + }, + "ui_app_top_banner": { + "title": "Näita ülaservas bännerit", + "body": "Näidata rakenduse ülaservas üle kogu laiuse teadet." + }, + "ui_email_banner": { + "title": "Näita kirjadel teateid", + "body": "Näidata oma teateid ja kokkuvõtteid avatud kirja või vestluse osade kohal, sees ja vahel." + }, + "ui_email_footer": { + "title": "Lisa sisu kirjade alla", + "body": "Näidata oma sisu avatud kirja all." + }, + "ui_contact_cryptokeys": { + "title": "Näita kontaktide krüptovõtmeid", + "body": "Näidata ja hallata kontakti krüptovõtmeid." + }, + "ui_email_details": { + "title": "Lisa kirja üksikasjadele paneele", + "body": "Näidata oma paneeli avatud kirja kõrval või all." + }, + "ui_download_file": { + "title": "Salvesta faile sinu seadmesse", + "body": "Pakkuda allalaadimiseks enda loodud faile." + }, + "ui_message_list_tabs": { + "title": "Lisa saabunud kirjade kausta kaardid", + "body": "Sorteerida sinu saabunud kirjad kaartidesse, nagu Uuendused või Pakkumised." + }, + "ui_composer_toolbar": { + "title": "Lisa kirjakoostajasse", + "body": "Näidata oma nuppe, menüükirjeid ja jaotisi kirja kirjutamise ajal." + }, + "ui_composer_sidebar": { + "title": "Lisa kirjakoostajasse paneel", + "body": "Näidata oma paneeli sinu kirjutatava kirja kõrval." + }, + "ui_sidebar_widget": { + "title": "Lisa külgribale", + "body": "Näidata oma kaste ja jaotisi meili külgribal." + }, + "ui_settings_section": { + "title": "Lisa seadete leht", + "body": "Näidata oma lehte seadetes." + }, + "ui_context_menu": { + "title": "Lisa kirjamenüüsse", + "body": "Lisada kirjeid menüüsse, mis avaneb kirjal hiireparema klõpsamisel." + }, + "ui_navigation_rail": { + "title": "Lisa navigeerimisribale", + "body": "Näidata oma nuppu navigeerimisribal." + }, + "ui_keyboard": { + "title": "Lisa kiirklahve", + "body": "Reageerida enda määratud kiirklahvidele." + }, + "ui_calendar_action": { + "title": "Lisa kalendrisse", + "body": "Näidata oma nuppe ja jaotisi sündmustel ning lühikesi silte ja punkte kalendripäevadel." + }, + "ui_admin_page": { + "title": "Lisa administraatori leht", + "body": "Näidata oma lehte administraatori seadetes." + }, + "app_lifecycle": { + "title": "Tea, millal rakendus käivitub ja peatub", + "body": "Saada teada, kui rakendus käivitub, läheb võrgust välja või sa logid välja." + }, + "ui_message_list": { + "title": "Lisa kirjade nimekirja", + "body": "Näidata oma sisu kirjade nimekirja kohal ning nuppe kirjadel ja valiku tööriistaribal." + }, + "ui_contacts": { + "title": "Lisa kontaktidesse", + "body": "Näidata oma jaotisi kontakti üksikasjades ja nuppe kontaktide nimekirjas." + }, + "ui_tasks": { + "title": "Lisa ülesannetesse", + "body": "Näidata oma jaotisi ülesande üksikasjades ja nuppe ülesannete nimekirjas." + }, + "ui_files": { + "title": "Lisa failidesse", + "body": "Näidata oma jaotisi faili eelvaates ja kirjeid faili menüüs." + }, + "ui_commands": { + "title": "Lisa käske", + "body": "Lisada oma kirjeid käsupaletti (Ctrl+K)." + }, + "ui_app_page": { + "title": "Lisa lehti", + "body": "Lisada rakendusse oma lehti, igaühel nupp navigeerimisribal." + }, + "http_proxy": { + "title": "Kasuta sinu ühendatud kontosid", + "body": "Saata päringuid läbi Bulwarki serveri kontoga või võtmega, mille sina või sinu administraator seadistas. Pistikprogramm ei näe kunagi parooli, kuid saab teha kõike, mida see konto oma serveris teha saab." + }, + "compose_open": { + "title": "Ava kirjakoostaja sinu eest", + "body": "Avada uus kiri täidetud adressaatide, teksti või manustega. Sina otsustad ikka, kas saata." + }, + "compose_read": { + "title": "Loe kirja, mida kirjutad", + "body": "Lugeda kirja teksti selle kirjutamise ajal, kui kasutad pistikprogrammi kirjakoostajas. Mitte allkirja ega tsiteeritud kirja." + }, + "compose_write": { + "title": "Muuda kirja, mida kirjutad", + "body": "Asendada või lisada teksti kirjas selle kirjutamise ajal, kui kasutad pistikprogrammi kirjakoostajas. Iga muudatuse saad tagasi võtta ja sina otsustad ikka, kas saata." + }, + "ui_notifications": { + "title": "Näita märguandeid", + "body": "Näidata märguandeid sinu seadmes või rakenduses, kui pole neid lubanud. Iga märguanne nimetab pistikprogrammi." + } + }, + "dialog": { + "from_plugin": "Pistikprogrammilt {name}", + "ok": "OK", + "submit": "Saada", + "confirm": "Kinnita", + "cancel": "Tühista", + "close": "Sulge", + "turn_off": "Lülita {name} välja", + "plugin_menu": "Valikud: {name}", + "password_note": "See vorm pärineb pistikprogrammilt {name}, mitte veebimeililt. Sisesta parool ainult siis, kui usaldad seda pistikprogrammi.", + "toast_auto_disabled": "{name} lülitati välja, kuna see jäi ebaõnnestuma." + }, + "connect": { + "title": "Ühenda {label}", + "intro_password": "{name} soovib kasutada sinu kontot {label}. Bulwark hoiab parooli oma serveris ja saadab selle ainult hostile {host}. Pistikprogramm ei näe seda kunagi.", + "intro_password_any": "{name} soovib kasutada sinu kontot {label}. Bulwark hoiab parooli oma serveris ja saadab selle ainult serverisse, mille siia sisestad. Pistikprogramm ei näe seda kunagi.", + "intro_signin": "{name} soovib sinu kontole {label} sisse logida. Sisesta siia server ja logi siis sisse selle enda lehel. Bulwark hoiab saadud juurdepääsu oma serveris; pistikprogramm ei näe seda kunagi.", + "server": "Serveri aadress", + "server_hint": "cloud.example.com", + "username": "Kasutajanimi", + "secret": "Parool või võti", + "connect": "Ühenda", + "continue": "Jätka", + "cancel": "Tühista", + "saving": "Salvestamine…", + "error_server": "Sisesta serveri aadress, näiteks https://cloud.example.com", + "error_save": "Salvestamine ebaõnnestus: {error}" + } + }, + "global_search": { + "title": "Otsi kõike", + "placeholder": "Otsi e-kirju, kontakte, kalendrit, faile...", + "scope_label": "Otsi kohast", + "account_label": "Konto", + "scope_all": "Kõik", + "scope_mail": "E-post", + "scope_contacts": "Kontaktid", + "scope_calendar": "Kalender", + "scope_files": "Failid", + "all_accounts": "Kõik kontod", + "show_all": "Näita kõiki tulemusi", + "no_results": "Päringule „{query}“ tulemusi ei leitud", + "server_hint": "Täissõnad otsivad serverist; osalised sõnad vastavad juba laaditud kirjetele", + "searching": "Otsimine...", + "account_error": "Kontost {account} otsimine ebaõnnestus", + "recent_searches": "Hiljutised otsingud", + "recurring": "Korduv", + "no_subject": "(teema puudub)", + "empty_hint": "Otsi e-kirju, kontakte, sündmusi ja faile kõigist kontodest. Proovi from:, subject:, has:attachment, after:2026-01-01.", + "flat_by_date": "Kuupäeva järgi", + "grouped": "Rühmitatud", + "load_more": "Laadi rohkem", + "preview_empty": "Vali tulemus eelvaate nägemiseks", + "open_full": "Ava", + "view_label": "Vaade" + }, + "top_bar": { + "more": "Rohkem valikuid" + }, + "plugin_pages": { + "loading": "Lehe laadimine", + "not_available_title": "See leht pole saadaval", + "not_available_description": "Pistikprogramm, mis selle lisas, on välja lülitatud või enam paigaldamata.", + "back_to_mail": "Tagasi meili juurde", + "settings_group": "Pistikprogrammid" + }, + "command_palette": { + "title": "Käsupalett", + "open": "Ava käsupalett", + "placeholder": "Trüki käsk", + "no_results": "Sobivaid käske pole", + "go_to": "Mine: {name}", + "compose": "Uus kiri", + "search": "Otsi kirju", + "theme_dark": "Lülitu tumedale teemale", + "theme_light": "Lülitu heledale teemale", + "shortcuts": "Näita kiirklahve", + "group_navigation": "Mine", + "group_actions": "Toimingud", + "group_plugins": "Pistikprogrammid" + }, + "notification_center": { + "title": "Märguanded", + "mark_all_read": "Märgi kõik loetuks", + "clear": "Tühjenda", + "empty": "Märguandeid pole", + "close": "Sulge", + "unread": "Lugemata", + "unread_count": "{count} lugemata", + "level_error": "Viga", + "level_warning": "Hoiatus" + } +} From 629781ffd406a6d10d784d12927a979baa80fa8b Mon Sep 17 00:00:00 2001 From: Sebastian Sanitz Date: Fri, 16 Oct 2026 17:29:54 +0200 Subject: [PATCH 011/238] fix(tasks): send an all-day task's due and start as a LocalDateTime The task modal and the plugin API send an all-day due as a bare date ("2026-10-14"). A task's due and start are LocalDateTimes (RFC 8984). Stalwart accepts the bare date and echoes it back over JMAP, but the stored iCalendar has no DUE, so CalDAV clients (phones, Thunderbird) show the task without a date. "2026-10-14T00:00:00" with showWithoutTime is stored as DUE;VALUE=DATE. createCalendarTask and updateCalendarTask now complete a bare due or start to midnight. Every write goes through them, so a task saved by an older client gets a proper due when it moves to another account. Tests: create, update and the cross-account move against round trips recorded on Stalwart v0.16.24 (JMAP set, then CalDAV GET of the stored iCalendar); times and a cleared due stay as they are. Co-Authored-By: Claude Opus 5.5 --- .../fixtures/stalwart-task-due-wire.json | 25 +++++++ lib/__tests__/jmap-calendar-tasks.test.ts | 65 ++++++++++++++++++- lib/jmap/client.ts | 24 +++++-- 3 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 lib/__tests__/fixtures/stalwart-task-due-wire.json diff --git a/lib/__tests__/fixtures/stalwart-task-due-wire.json b/lib/__tests__/fixtures/stalwart-task-due-wire.json new file mode 100644 index 000000000..6541e93dc --- /dev/null +++ b/lib/__tests__/fixtures/stalwart-task-due-wire.json @@ -0,0 +1,25 @@ +{ + "_source": "Stalwart v0.16.24, local server, 2026-10-01. Each row: a JMAP CalendarEvent/set (or a CalDAV PUT), then CalendarEvent/get and a CalDAV GET of the stored iCalendar. icalDue is the DUE line of that iCalendar, null when it has none.", + "allDayTaskDue": [ + { + "write": { "method": "update", "patch": { "due": "2026-10-14" } }, + "jmapAfter": { "due": "2026-10-14", "showWithoutTime": true }, + "icalDue": null + }, + { + "write": { "method": "update", "patch": { "due": "2026-10-14T00:00:00" } }, + "jmapAfter": { "due": "2026-10-14T00:00:00", "showWithoutTime": true }, + "icalDue": "DUE;VALUE=DATE:20261014" + }, + { + "write": { "method": "create", "patch": { "due": "2026-10-07", "showWithoutTime": true } }, + "jmapAfter": { "due": "2026-10-07", "showWithoutTime": true }, + "icalDue": null + }, + { + "write": { "method": "caldav-put", "ical": "DUE;VALUE=DATE:20261020" }, + "jmapAfter": { "due": "2026-10-20T00:00:00", "showWithoutTime": true }, + "icalDue": "DUE;VALUE=DATE:20261020" + } + ] +} diff --git a/lib/__tests__/jmap-calendar-tasks.test.ts b/lib/__tests__/jmap-calendar-tasks.test.ts index 3d83c6e00..a7cfc929c 100644 --- a/lib/__tests__/jmap-calendar-tasks.test.ts +++ b/lib/__tests__/jmap-calendar-tasks.test.ts @@ -1,6 +1,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { JMAPClient } from '../jmap/client'; import type { CalendarTask } from '../jmap/types'; +import wire from './fixtures/stalwart-task-due-wire.json'; function makeSession() { return { @@ -22,6 +23,31 @@ function jsonResponse(body: unknown): Response { type Call = { method: string; args: Record }; +const isBareDate = (value: string) => /^\d{4}-\d{2}-\d{2}$/.test(value); + +/** + * Whether Stalwart keeps a task due of this shape in the stored iCalendar, + * read from recorded round trips: it echoes a bare date over JMAP but writes + * no DUE, so CalDAV clients lose the date. + */ +function stalwartKeepsDue(due: string): boolean { + const rows = wire.allDayTaskDue.filter((row) => row.write.patch && isBareDate(row.write.patch.due) === isBareDate(due)); + if (rows.length === 0) throw new Error(`no recorded round trip for a due like ${due}`); + return rows.every((row) => row.icalDue !== null); +} + +/** What the task modal sends on save: every field, here for an all-day task. */ +const modalPayload = (due: string | null): Partial => ({ + '@type': 'Task', + title: 'Pay rent', + description: '', + due, + showWithoutTime: true, + priority: 0, + progress: 'needs-action', + calendarIds: { 'cal-1': true }, +}); + describe('JMAPClient task operations (#958)', () => { let client: JMAPClient; let sentCalls: Call[]; @@ -121,6 +147,32 @@ describe('JMAPClient task operations (#958)', () => { expect(createPayload.title).toBe('New Task'); expect(createPayload).not.toHaveProperty('progressUpdated'); }); + + const sentTask = (kind: 'create' | 'update', key: string) => { + const setCall = sentCalls.find((c) => c.method === 'CalendarEvent/set'); + return (setCall?.args[kind] as Record>)[key]; + }; + + it.each([ + ['createCalendarTask', 'create', 'new-task', (c: JMAPClient) => c.createCalendarTask(modalPayload('2026-10-07'))], + ['updateCalendarTask', 'update', 'task-1', (c: JMAPClient) => c.updateCalendarTask('task-1', modalPayload('2026-10-07'))], + ] as const)('%s sends an all-day due as a LocalDateTime, which Stalwart keeps in the iCalendar', async (_name, kind, key, write) => { + await write(client); + + const due = sentTask(kind, key).due as string; + expect(due).toBe('2026-10-07T00:00:00'); + expect(stalwartKeepsDue(due)).toBe(true); + }); + + it('completes a bare start date as well and leaves a due with a time alone', async () => { + await client.updateCalendarTask('task-1', { start: '2026-10-01', due: '2026-10-14T09:30:00' }); + expect(sentTask('update', 'task-1')).toMatchObject({ start: '2026-10-01T00:00:00', due: '2026-10-14T09:30:00' }); + }); + + it('keeps a cleared due cleared', async () => { + await client.updateCalendarTask('task-1', modalPayload(null)); + expect(sentTask('update', 'task-1').due).toBeNull(); + }); }); describe('JMAPClient tasks in shared calendars (#1204)', () => { @@ -129,7 +181,9 @@ describe('JMAPClient tasks in shared calendars (#1204)', () => { // Tasks per account as the server stores them (bare ids). const serverTasks: Record[]> = { - 'acct-1': [{ id: 'own-1', '@type': 'Task', uid: 'uid-own', title: 'Mine', progress: 'needs-action', calendarIds: { 'cal-1': true }, created: '2026-10-01T00:00:00Z', isDraft: false, isOrigin: true, locations: { l1: { '@type': 'Location', name: 'Desk' } } }], + 'acct-1': [{ id: 'own-1', '@type': 'Task', uid: 'uid-own', title: 'Mine', progress: 'needs-action', calendarIds: { 'cal-1': true }, created: '2026-10-01T00:00:00Z', isDraft: false, isOrigin: true, locations: { l1: { '@type': 'Location', name: 'Desk' } } }, + // Saved by a client that sent a bare date: Stalwart echoes it as such. + { id: 'own-2', '@type': 'Task', uid: 'uid-due', title: 'Dated', progress: 'needs-action', calendarIds: { 'cal-1': true }, due: wire.allDayTaskDue[0].jmapAfter.due, showWithoutTime: true }], 'acct-2': [{ id: 'shared-1', '@type': 'Task', uid: 'uid-shared', title: 'Theirs', progress: 'needs-action', calendarIds: { 'cal-s': true } }], }; @@ -195,6 +249,15 @@ describe('JMAPClient tasks in shared calendars (#1204)', () => { expect(newId).toBe('acct-2:new-id'); }); + it('moving a task with a bare due date to another account stores the due as a LocalDateTime', async () => { + await client.updateCalendarTask('own-2', { calendarIds: { 'acct-2:cal-s': true } }); + + const create = sentCalls.find((c) => c.method === 'CalendarEvent/set' && c.args.create); + const due = (create?.args.create as Record>)['new-task'].due as string; + expect(due).toBe('2026-10-14T00:00:00'); + expect(stalwartKeepsDue(due)).toBe(true); + }); + it('updates a shared task in place in its own account with real ids', async () => { const id = await client.updateCalendarTask('acct-2:shared-1', { progress: 'completed', calendarIds: { 'acct-2:cal-s': true } }); diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index 0ed5c8f82..7da41220d 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -568,6 +568,20 @@ function getUserTimeZone(): string | undefined { } } +const BARE_DATE = /^\d{4}-\d{2}-\d{2}$/; + +/** + * A task's `due` and `start` are LocalDateTimes (RFC 8984). Stalwart accepts a + * bare date and echoes it over JMAP, but stores no DUE in the iCalendar, so + * CalDAV clients lose the date. Completes a bare date to midnight. + */ +function completeBareTaskDates>(task: T): T { + const result = { ...task }; + if (typeof result.due === 'string' && BARE_DATE.test(result.due)) result.due = `${result.due}T00:00:00`; + if (typeof result.start === 'string' && BARE_DATE.test(result.start)) result.start = `${result.start}T00:00:00`; + return result; +} + /** * Stalwart's calcard crate uses singular property names ("recurrenceRule") * instead of the RFC 8984 plural forms ("recurrenceRules"). @@ -7793,7 +7807,7 @@ export class JMAPClient implements IJMAPClient { accountId = resolved.accountId; taskData.calendarIds = resolved.calendarIds; } - const cleanTask = { ...taskData, '@type': 'Task' }; + const cleanTask = { ...completeBareTaskDates(taskData), '@type': 'Task' }; debug.group('CalendarTask/create', 'tasks'); debug.log('tasks', 'CalendarTask/create accountId', accountId); @@ -7876,10 +7890,10 @@ export class JMAPClient implements IJMAPClient { */ async updateCalendarTask(taskId: string, updates: Partial, targetAccountId?: string): Promise { const source = targetAccountId ? { accountId: targetAccountId, id: taskId } : this.splitCalendarObjectId(taskId); - let patch = updates; - if (!targetAccountId && updates.calendarIds) { - const dest = this.resolveTaskCalendarIds(updates.calendarIds); - patch = { ...updates, calendarIds: dest.calendarIds }; + let patch = completeBareTaskDates(updates); + if (!targetAccountId && patch.calendarIds) { + const dest = this.resolveTaskCalendarIds(patch.calendarIds); + patch = { ...patch, calendarIds: dest.calendarIds }; if (dest.accountId !== source.accountId) { return this.moveCalendarTaskToAccount(source, dest.accountId, patch); } From 964626794bb838e9d7e1f992375a0a52bdff2810 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 16 Oct 2026 20:46:27 +0200 Subject: [PATCH 012/238] feat: browse the company directory in contacts and the composer #1253 --- .../directory-picker-dialog.test.tsx | 101 ++++++ components/contacts/contacts-app.tsx | 72 ++++- components/contacts/contacts-sidebar.tsx | 30 +- components/contacts/directory-browser.tsx | 299 ++++++++++++++++++ .../contacts/directory-entry-detail.tsx | 58 ++++ .../contacts/directory-picker-dialog.tsx | 78 +++++ components/email/email-composer.tsx | 46 +++ lib/__tests__/jmap-principals-paging.test.ts | 26 ++ lib/jmap/client-interface.ts | 3 +- lib/jmap/client.ts | 14 +- lib/jmap/principals-error.ts | 11 + locales/ar/common.json | 43 +++ locales/ca/common.json | 43 +++ locales/cs/common.json | 43 +++ locales/da/common.json | 43 +++ locales/de/common.json | 43 +++ locales/en/common.json | 43 +++ locales/es/common.json | 43 +++ locales/fa/common.json | 43 +++ locales/fr/common.json | 43 +++ locales/he/common.json | 43 +++ locales/hu/common.json | 43 +++ locales/it/common.json | 43 +++ locales/ja/common.json | 43 +++ locales/ko/common.json | 43 +++ locales/lv/common.json | 43 +++ locales/mn/common.json | 43 +++ locales/nb/common.json | 43 +++ locales/nl/common.json | 43 +++ locales/pl/common.json | 43 +++ locales/pt/common.json | 43 +++ locales/ro/common.json | 43 +++ locales/ru/common.json | 43 +++ locales/sk/common.json | 43 +++ locales/tr/common.json | 43 +++ locales/uk/common.json | 43 +++ locales/zh-TW/common.json | 43 +++ locales/zh/common.json | 43 +++ stores/__tests__/contact-store.test.ts | 52 +++ stores/contact-store.ts | 72 ++++- 40 files changed, 1998 insertions(+), 25 deletions(-) create mode 100644 components/contacts/__tests__/directory-picker-dialog.test.tsx create mode 100644 components/contacts/directory-browser.tsx create mode 100644 components/contacts/directory-entry-detail.tsx create mode 100644 components/contacts/directory-picker-dialog.tsx create mode 100644 lib/jmap/principals-error.ts diff --git a/components/contacts/__tests__/directory-picker-dialog.test.tsx b/components/contacts/__tests__/directory-picker-dialog.test.tsx new file mode 100644 index 000000000..bb4c719f7 --- /dev/null +++ b/components/contacts/__tests__/directory-picker-dialog.test.tsx @@ -0,0 +1,101 @@ +import { render, screen, within } from '@testing-library/react'; +import { fireEvent } from '@testing-library/dom'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { DirectoryPickerDialog } from '../directory-picker-dialog'; +import { useContactStore, type DirectoryEntry, type DirectoryStatus } from '@/stores/contact-store'; +import type { IJMAPClient } from '@/lib/jmap/client-interface'; + +// next-intl is mocked globally in vitest.setup (t returns the key). + +const client = { supportsPrincipals: () => true, getPrincipals: vi.fn() } as unknown as IJMAPClient; + +function people(n: number): DirectoryEntry[] { + return Array.from({ length: n }, (_, i) => { + const num = String(i).padStart(3, '0'); + return { id: `p${num}`, name: `Person ${num}`, email: `person${num}@example.org`, type: 'individual' as const }; + }); +} + +function setDirectory(entries: DirectoryEntry[], status: DirectoryStatus) { + useContactStore.setState({ directoryPrincipals: entries, directoryStatus: status, directoryLoaded: status === 'ready' }); +} + +function rows() { + return within(screen.getByRole('list')).queryAllByRole('listitem'); +} + +describe('DirectoryPickerDialog', () => { + beforeEach(() => vi.clearAllMocks()); + + it('lists the directory before any search, one page at a time', () => { + setDirectory(people(60), 'ready'); + render(); + expect(rows()).toHaveLength(50); + fireEvent.click(screen.getByLabelText('next_page')); + expect(rows()).toHaveLength(10); + expect(rows()[0]).toHaveTextContent('Person 050'); + }); + + it('searches by name and address', () => { + setDirectory([ + { name: 'Ana Silva', email: 'ana@example.org' }, + { name: 'Finance Department', email: 'finance@example.org', type: 'group' }, + { name: 'Marcos Souza', email: 'marcos@example.org' }, + ], 'ready'); + render(); + fireEvent.change(screen.getByPlaceholderText('search_placeholder'), { target: { value: 'finance@' } }); + expect(rows()).toHaveLength(1); + expect(rows()[0]).toHaveTextContent('Finance Department'); + fireEvent.change(screen.getByPlaceholderText('search_placeholder'), { target: { value: 'souza' } }); + expect(rows()[0]).toHaveTextContent('Marcos Souza'); + }); + + it('adds the checked entries to the chosen field and closes', () => { + setDirectory([ + { name: 'Marcos Souza', email: 'marcos@example.org' }, + { name: 'Ana Silva', email: 'ana@example.org' }, + { name: 'Finance Department', email: 'finance@example.org' }, + ], 'ready'); + const onAdd = vi.fn(); + const onClose = vi.fn(); + render(); + // Rows are sorted by name: Ana, Finance, Marcos. Clicking a row toggles it. + fireEvent.click(rows()[0]); + fireEvent.click(rows()[2]); + expect(screen.getByText('add_cc')).not.toBeDisabled(); + fireEvent.click(screen.getByText('add_cc')); + expect(onAdd).toHaveBeenCalledWith('cc', [ + expect.objectContaining({ email: 'marcos@example.org' }), + expect.objectContaining({ email: 'ana@example.org' }), + ]); + expect(onAdd.mock.calls[0][1]).toHaveLength(2); + expect(onClose).toHaveBeenCalled(); + }); + + it('keeps the add buttons disabled until something is checked', () => { + setDirectory(people(3), 'ready'); + render(); + expect(screen.getByText('add_to')).toBeDisabled(); + }); + + it.each([ + ['forbidden', 'forbidden_title'], + ['error', 'error_title'], + ['ready', 'empty_title'], + ['unavailable', 'unavailable_title'], + ] as const)('tells a %s directory apart from the others', (status, text) => { + setDirectory([], status); + render(); + expect(screen.getByText(text)).toBeInTheDocument(); + for (const other of ['forbidden_title', 'error_title', 'empty_title', 'unavailable_title'].filter((t) => t !== text)) { + expect(screen.queryByText(other)).not.toBeInTheDocument(); + } + }); + + it('keeps showing the last list when a refresh fails', () => { + setDirectory(people(2), 'error'); + render(); + expect(rows()).toHaveLength(2); + expect(screen.getByRole('alert')).toHaveTextContent('refresh_failed'); + }); +}); diff --git a/components/contacts/contacts-app.tsx b/components/contacts/contacts-app.tsx index 9ca42ffc3..646410053 100644 --- a/components/contacts/contacts-app.tsx +++ b/components/contacts/contacts-app.tsx @@ -15,10 +15,12 @@ import { ContactGroupForm } from "@/components/contacts/contact-group-form"; import { ContactGroupDetail } from "@/components/contacts/contact-group-detail"; import { ContactsSidebar, type ContactCategory } from "@/components/contacts/contacts-sidebar"; import { ContactImportDialog } from "@/components/contacts/contact-import-dialog"; +import { DirectoryBrowser, directoryKey } from "@/components/contacts/directory-browser"; +import { DirectoryEntryDetail } from "@/components/contacts/directory-entry-detail"; import { RenameDialog } from "@/components/files/rename-dialog"; import { exportContacts } from "@/components/contacts/contact-export"; import { AppTopBannerSlot } from "@/components/plugins/app-top-banner-slot"; -import { useContactStore, getContactDisplayName, getContactPrimaryEmail } from "@/stores/contact-store"; +import { useContactStore, getContactDisplayName, getContactPrimaryEmail, type DirectoryEntry } from "@/stores/contact-store"; import { savePendingMailto } from "@/lib/protocol-handlers/session"; import { formatRecipient, formatRecipientEntry, type Recipient } from "@/lib/email-composer-utils"; import { useAuthStore, redirectToLogin, saveRedirectAfterLogin } from '@/stores/auth-store'; @@ -55,7 +57,8 @@ type View = | "group-detail" | "group-create" | "group-edit" - | "bulk-add-to-group"; + | "bulk-add-to-group" + | "directory-detail"; export interface ContactsAppProps { /** Path segments after `/contacts` (`['', 'edit']`). */ @@ -123,6 +126,10 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = const [returnToEmail, setReturnToEmail] = useState(false); const [renamingKeyword, setRenamingKeyword] = useState(null); const [selectedGroupId, setSelectedGroupId] = useState(null); + const [directorySelection, setDirectorySelection] = useState>(() => new Set()); + const [openDirectoryKey, setOpenDirectoryKey] = useState(null); + const directoryPrincipals = useContactStore((s) => s.directoryPrincipals); + const showDirectory = !!client?.supportsPrincipals(); const hasFetched = useRef(false); const { dialogProps: confirmDialogProps, confirm: confirmDialog } = useConfirmDialog(); const isMobile = useIsMobile(); @@ -291,7 +298,7 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = // Contacts to display based on active category const displayedContacts = useMemo(() => { - if (activeCategory === "all") return individuals; + if (activeCategory === "all" || activeCategory === "directory") return individuals; if (activeCategory === "uncategorized") { return individuals.filter(c => !c.keywords || Object.keys(c.keywords).filter(k => c.keywords![k]).length === 0); } @@ -312,9 +319,14 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = const handleSelectCategory = useCallback((category: ContactCategory) => { setActiveCategory(category); clearSelection(); + setDirectorySelection(new Set()); if (typeof category === "object" && "groupId" in category) { setSelectedGroupId(category.groupId); setView("group-detail"); + } else if (category === "directory") { + setSelectedGroupId(null); + setOpenDirectoryKey(null); + setView("list"); } else { setSelectedGroupId(null); } @@ -599,6 +611,19 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = openComposeInApp([formatRecipientEntry(chip)], field); }, [getGroupMembers, t, openComposeInApp]); + const handleComposeDirectory = useCallback((entries: DirectoryEntry[]) => { + if (entries.length === 0) return; + openComposeInApp(entries.map((e) => formatRecipient(e.name !== e.email ? e.name : "", e.email)), "to"); + }, [openComposeInApp]); + + const handleAddDirectoryEntryToContacts = useCallback((entry: DirectoryEntry) => { + setCreatePrefill({ email: entry.email, name: entry.name !== entry.email ? entry.name : undefined }); + setSelectedContact(null); + setDefaultBookIdForCreate(undefined); + setActiveCategory("all"); + setView("create"); + }, [setSelectedContact]); + const handleComposeContact = useCallback((contact: ContactCard) => { const email = getContactPrimaryEmail(contact).trim(); if (!email) return; @@ -744,6 +769,16 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = if (!isAuthenticated) return null; const renderRightPanel = () => { + // The directory is read-only: its panel shows the open entry whatever the view. + if (activeCategory === "directory") { + return ( + directoryKey(e) === openDirectoryKey) ?? null} + onCompose={(entry) => handleComposeDirectory([entry])} + onAddToContacts={handleAddDirectoryEntryToContacts} + /> + ); + } switch (view) { case "create": return ; @@ -1002,6 +1037,7 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = } } : undefined} onRenameKeyword={(kw) => setRenamingKeyword(kw)} + directoryCount={showDirectory ? directoryPrincipals.length : undefined} multiAccountMode={multiAccountEnabled && accountClients.length > 1} />
@@ -1029,6 +1065,35 @@ function ContactsAppContent({ linkSegments: routeSegments }: ContactsAppProps = )} style={!isMobile ? { width: `${listWidth}px` } : undefined} > + {activeCategory === "directory" ? ( + <> + { setOpenDirectoryKey(directoryKey(entry)); setView("directory-detail"); }} + activeKey={openDirectoryKey} + onMenuClick={isNarrow ? () => setNarrowSidebarOpen(true) : undefined} + className="flex-1" + /> + {directorySelection.size > 0 && ( +
+ + {t("directory.selected_count", { count: directorySelection.size })} + + + +
+ )} + + ) : ( setNarrowSidebarOpen(true) : undefined} isLoading={supportsSync && !contactsLoaded} /> + )}
{!isMobile && ( diff --git a/components/contacts/contacts-sidebar.tsx b/components/contacts/contacts-sidebar.tsx index ccdff5024..fb5ad8511 100644 --- a/components/contacts/contacts-sidebar.tsx +++ b/components/contacts/contacts-sidebar.tsx @@ -2,7 +2,7 @@ import { useMemo, useState, useCallback, useEffect, useRef, type DragEvent } from "react"; import { useTranslations } from "next-intl"; -import { BookUser, User, Users, Plus, Share2, Book, BookPlus, ChevronRight, ChevronDown, UserPlus, UsersRound, Upload, Tag, Pencil, Trash2, Settings, Mail, Star } from "@/components/icons"; +import { BookUser, Building2, User, Users, Plus, Share2, Book, BookPlus, ChevronRight, ChevronDown, UserPlus, UsersRound, Upload, Tag, Pencil, Trash2, Settings, Mail, Star } from "@/components/icons"; import { useRouter } from "@/i18n/navigation"; import { Button } from "@/components/ui/button"; import { ContextMenu, ContextMenuItem, ContextMenuSeparator, ContextMenuSubMenu } from "@/components/ui/context-menu"; @@ -12,7 +12,7 @@ import type { ContactCard, AddressBook } from "@/lib/jmap/types"; import { getContactDisplayName } from "@/stores/contact-store"; import { useAccountStore } from "@/stores/account-store"; -export type ContactCategory = "all" | { groupId: string } | { addressBookId: string } | { keyword: string } | "uncategorized"; +export type ContactCategory = "all" | "directory" | { groupId: string } | { addressBookId: string } | { keyword: string } | "uncategorized"; interface ContactsSidebarProps { groups: ContactCard[]; @@ -35,6 +35,8 @@ interface ContactsSidebarProps { onCreateContactInBook?: (addressBook: AddressBook) => void; onDeleteAddressBook?: (addressBook: AddressBook) => void; onRenameKeyword?: (keyword: string) => void; + /** Entries in the company directory; the Directory entry shows only when set. */ + directoryCount?: number; className?: string; /** * Pro shell: render one collapsible section per connected local account @@ -106,6 +108,7 @@ export function ContactsSidebar({ onCreateContactInBook, onDeleteAddressBook, onRenameKeyword, + directoryCount, className, multiAccountMode, }: ContactsSidebarProps) { @@ -346,6 +349,29 @@ export function ContactsSidebar({ + {/* Company directory (server principals), read-only */} + {directoryCount !== undefined && ( + + )} + {/* Address Books: per-account groups in multi-account Pro mode, else the classic "My Address Books" section. */} {multiAccountMode && localAccountGroups.length > 0 ? ( diff --git a/components/contacts/directory-browser.tsx b/components/contacts/directory-browser.tsx new file mode 100644 index 000000000..86d0bab2c --- /dev/null +++ b/components/contacts/directory-browser.tsx @@ -0,0 +1,299 @@ +"use client"; + +import { useEffect, useMemo, useRef, useState } from "react"; +import { useTranslations, useLocale } from "next-intl"; +import { Search, X, RefreshCw, Loader2, Lock, AlertCircle, BookUser, CheckSquare, Square, ChevronLeft, ChevronRight, Menu, Users, MapPin, Box } from "@/components/icons"; +import { Input } from "@/components/ui/input"; +import { Avatar } from "@/components/ui/avatar"; +import { cn } from "@/lib/utils"; +import type { IJMAPClient } from "@/lib/jmap/client-interface"; +import { useContactStore, type DirectoryEntry } from "@/stores/contact-store"; + +export const DIRECTORY_PAGE_SIZE = 50; + +/** Case-insensitive key of a directory entry, used for selection. */ +export function directoryKey(entry: DirectoryEntry): string { + return entry.email.toLowerCase(); +} + +export function filterDirectory(entries: DirectoryEntry[], query: string, locale?: string): DirectoryEntry[] { + const q = query.trim().toLowerCase(); + const matched = q + ? entries.filter((e) => + e.name.toLowerCase().includes(q) || + e.email.toLowerCase().includes(q) || + (e.description?.toLowerCase().includes(q) ?? false)) + : entries; + const collator = new Intl.Collator(locale, { sensitivity: "base" }); + return [...matched].sort((a, b) => collator.compare(a.name, b.name) || collator.compare(a.email, b.email)); +} + +function TypeIcon({ type }: { type: DirectoryEntry["type"] }) { + if (type === "group") return ; + if (type === "location") return ; + if (type === "resource") return ; + return null; +} + +interface DirectoryBrowserProps { + client: IJMAPClient | null; + /** Keys (lowercased addresses) of the checked entries. */ + selected: Set; + onSelectedChange: (next: Set) => void; + /** Contacts view: clicking a row opens it. Without this, clicking toggles it. */ + onOpen?: (entry: DirectoryEntry) => void; + activeKey?: string | null; + onMenuClick?: () => void; + autoFocusSearch?: boolean; + className?: string; +} + +/** + * The company directory (RFC 9670 principals the server lists for this + * account), read-only: search, pages, multi-select. Used by the Contacts + * "Directory" entry and the composer's recipient picker. + */ +export function DirectoryBrowser({ + client, + selected, + onSelectedChange, + onOpen, + activeKey, + onMenuClick, + autoFocusSearch, + className, +}: DirectoryBrowserProps) { + const t = useTranslations("contacts.directory"); + const tContacts = useTranslations("contacts"); + const locale = useLocale(); + const entries = useContactStore((s) => s.directoryPrincipals); + const status = useContactStore((s) => s.directoryStatus); + const fetchDirectory = useContactStore((s) => s.fetchDirectory); + const [query, setQuery] = useState(""); + const [page, setPage] = useState(0); + const searchRef = useRef(null); + + // The directory loads at sign-in; fetch here only if that never ran. + useEffect(() => { + if (client && status === "idle") void fetchDirectory(client); + }, [client, status, fetchDirectory]); + + useEffect(() => { + if (autoFocusSearch) searchRef.current?.focus(); + }, [autoFocusSearch]); + + const filtered = useMemo(() => filterDirectory(entries, query, locale), [entries, query, locale]); + const pageCount = Math.max(1, Math.ceil(filtered.length / DIRECTORY_PAGE_SIZE)); + const currentPage = Math.min(page, pageCount - 1); + const pageEntries = filtered.slice(currentPage * DIRECTORY_PAGE_SIZE, (currentPage + 1) * DIRECTORY_PAGE_SIZE); + + const loading = status === "loading" || (status === "idle" && !!client); + const refresh = () => { if (client) void fetchDirectory(client); }; + + const toggle = (entry: DirectoryEntry) => { + const next = new Set(selected); + const key = directoryKey(entry); + if (next.has(key)) next.delete(key); + else next.add(key); + onSelectedChange(next); + }; + + const pageAllSelected = pageEntries.length > 0 && pageEntries.every((e) => selected.has(directoryKey(e))); + const togglePage = () => { + const next = new Set(selected); + for (const e of pageEntries) { + if (pageAllSelected) next.delete(directoryKey(e)); + else next.add(directoryKey(e)); + } + onSelectedChange(next); + }; + + let placeholder: React.ReactNode = null; + if (entries.length === 0) { + if (loading) { + placeholder = ( + } title={t("loading")} /> + ); + } else if (status === "unavailable" || !client) { + placeholder = } title={t("unavailable_title")} hint={t("unavailable_hint")} />; + } else if (status === "forbidden") { + placeholder = } title={t("forbidden_title")} hint={t("forbidden_hint")} onRetry={refresh} retryLabel={t("retry")} />; + } else if (status === "error") { + placeholder = } title={t("error_title")} hint={t("error_hint")} onRetry={refresh} retryLabel={t("retry")} />; + } else { + placeholder = } title={t("empty_title")} hint={t("empty_hint")} />; + } + } else if (filtered.length === 0) { + placeholder = } title={t("no_match")} />; + } + + return ( +
+
+
+ {onMenuClick && ( + + )} + +
+ + { setQuery(e.target.value); setPage(0); }} + className={cn("ps-9 h-9", query && "pe-8")} + aria-label={t("search_placeholder")} + /> + {query && ( + + )} +
+ +
+ {entries.length > 0 && (status === "error" || status === "forbidden") && ( +

{t("refresh_failed")}

+ )} +
+ +
+ {placeholder ?? pageEntries.map((entry) => { + const key = directoryKey(entry); + const checked = selected.has(key); + const showEmail = entry.name !== entry.email; + return ( +
(onOpen ? onOpen(entry) : toggle(entry))} + className={cn( + "w-full flex items-center gap-3 px-4 py-2 border-b border-border cursor-pointer select-none transition-colors", + activeKey === key ? "bg-selection" : "hover:bg-muted", + checked && activeKey !== key && "bg-selection/60", + )} + > + + +
+
+ {entry.name} + {entry.type && entry.type !== "individual" && ( + + + + )} +
+ {showEmail &&
{entry.email}
} +
+
+ ); + })} +
+ + {filtered.length > 0 && ( +
+ + {t("range", { + from: currentPage * DIRECTORY_PAGE_SIZE + 1, + to: currentPage * DIRECTORY_PAGE_SIZE + pageEntries.length, + total: filtered.length, + })} + + {pageCount > 1 && ( +
+ + {t("page", { page: currentPage + 1, count: pageCount })} + +
+ )} +
+ )} +
+ ); +} + +function StatePanel({ icon, title, hint, onRetry, retryLabel }: { + icon: React.ReactNode; + title: string; + hint?: string; + onRetry?: () => void; + retryLabel?: string; +}) { + return ( +
+ {icon} +

{title}

+ {hint &&

{hint}

} + {onRetry && ( + + )} +
+ ); +} diff --git a/components/contacts/directory-entry-detail.tsx b/components/contacts/directory-entry-detail.tsx new file mode 100644 index 000000000..c1435f5e8 --- /dev/null +++ b/components/contacts/directory-entry-detail.tsx @@ -0,0 +1,58 @@ +"use client"; + +import { useTranslations } from "next-intl"; +import { Mail, UserPlus, BookUser } from "@/components/icons"; +import { Avatar } from "@/components/ui/avatar"; +import { Button } from "@/components/ui/button"; +import type { DirectoryEntry } from "@/stores/contact-store"; + +interface DirectoryEntryDetailProps { + entry: DirectoryEntry | null; + onCompose: (entry: DirectoryEntry) => void; + onAddToContacts: (entry: DirectoryEntry) => void; +} + +/** Read-only view of one directory entry. */ +export function DirectoryEntryDetail({ entry, onCompose, onAddToContacts }: DirectoryEntryDetailProps) { + const t = useTranslations("contacts.directory"); + + if (!entry) { + return ( +
+ +

{t("select_hint")}

+
+ ); + } + + return ( +
+
+ +
+

{entry.name}

+ {entry.type && ( +

{t(`type.${entry.type}`)}

+ )} +
+
+ + +
+
+
+
+
{t("email")}
+
{entry.email}
+
+
+

{t("read_only_note")}

+
+ ); +} diff --git a/components/contacts/directory-picker-dialog.tsx b/components/contacts/directory-picker-dialog.tsx new file mode 100644 index 000000000..493a84e3c --- /dev/null +++ b/components/contacts/directory-picker-dialog.tsx @@ -0,0 +1,78 @@ +"use client"; + +import { useState } from "react"; +import { useTranslations } from "next-intl"; +import { X } from "@/components/icons"; +import { Button } from "@/components/ui/button"; +import { useFocusTrap } from "@/hooks/use-focus-trap"; +import type { IJMAPClient } from "@/lib/jmap/client-interface"; +import { useContactStore, type DirectoryEntry } from "@/stores/contact-store"; +import { DirectoryBrowser, directoryKey } from "./directory-browser"; + +export type RecipientField = "to" | "cc" | "bcc"; + +interface DirectoryPickerDialogProps { + client: IJMAPClient | null; + onClose: () => void; + /** Called with the checked entries in directory order; the dialog closes afterwards. */ + onAdd: (field: RecipientField, entries: DirectoryEntry[]) => void; +} + +/** The composer's "Select from directory" dialog. */ +export function DirectoryPickerDialog({ client, onClose, onAdd }: DirectoryPickerDialogProps) { + const t = useTranslations("contacts.directory"); + const modalRef = useFocusTrap({ isActive: true, onEscape: onClose, restoreFocus: true }); + const [selected, setSelected] = useState>(() => new Set()); + + const add = (field: RecipientField) => { + const entries = useContactStore.getState().directoryPrincipals.filter((e) => selected.has(directoryKey(e))); + if (entries.length === 0) return; + onAdd(field, entries); + onClose(); + }; + + return ( +
+
+
+

+ {t("picker_title")} +

+ +
+ + + +
+ + {t("selected_count", { count: selected.size })} + + + + + +
+
+
+ ); +} diff --git a/components/email/email-composer.tsx b/components/email/email-composer.tsx index 3886a2fc9..a283e4b30 100644 --- a/components/email/email-composer.tsx +++ b/components/email/email-composer.tsx @@ -33,6 +33,7 @@ import { ReplyAll, Reply, Forward, + BookUser, } from "@/components/icons"; import { ComposerPluginMenuItems, ComposerPluginToolbarButtons, ComposerToolbarMenu, ComposerToolbarMenuItem, ComposerToolbarMenuCheckItem } from "@/components/email/composer-toolbar-menu"; import { registerComposer } from "@/lib/plugin-sandbox/composer-registry"; @@ -73,6 +74,8 @@ import { usePluginActions } from "@/components/plugins/plugin-actions"; import { Avatar } from "@/components/ui/avatar"; import { FilePreviewModal } from "@/components/files/file-preview-modal"; import { FilePickerDialog } from "@/components/files/file-picker-dialog"; +import { DirectoryPickerDialog } from "@/components/contacts/directory-picker-dialog"; +import type { DirectoryEntry } from "@/stores/contact-store"; import type { IJMAPClient } from "@/lib/jmap/client-interface"; import type { FileNode } from "@/lib/jmap/types"; import { useContactStore, getContactDisplayName, getContactPrimaryEmail } from "@/stores/contact-store"; @@ -819,6 +822,7 @@ export function EmailComposer({ // The Files account being browsed for attachments, fixed when the picker // opens so the picked blobs are tagged with the login that owns them. const [filesPicker, setFilesPicker] = useState<{ client: IJMAPClient; accountId?: string } | null>(null); + const [showDirectoryPicker, setShowDirectoryPicker] = useState(false); const [showSaveAsTemplate, setShowSaveAsTemplate] = useState(false); const [showCloseDialog, setShowCloseDialog] = useState(false); // The formatting toolbar is folded away on a phone until asked for. @@ -1643,6 +1647,26 @@ export function EmailComposer({ } }, [autoQuery, composerClient, isSearchingServer, searchRecipients]); + // Recipients picked in the directory dialog; addresses already in that + // field are skipped. + const addDirectoryRecipients = useCallback((field: 'to' | 'cc' | 'bcc', entries: DirectoryEntry[]) => { + const setter = field === 'to' ? setTo : field === 'cc' ? setCc : setBcc; + setter(prev => { + const seen = new Set(prev.filter(r => !r.group).map(r => r.email.toLowerCase())); + const next = [...prev]; + for (const e of entries) { + const key = e.email.toLowerCase(); + if (seen.has(key)) continue; + seen.add(key); + next.push({ name: e.name !== e.email ? e.name : undefined, email: e.email }); + } + return next; + }); + if (field === 'to' && validationErrors.to) setValidationErrors(prev => ({ ...prev, to: false })); + if (field === 'cc') setShowCc(true); + if (field === 'bcc') setShowBcc(true); + }, [validationErrors.to]); + const insertAutocomplete = (suggestion: SuggestionItem, field: 'to' | 'cc' | 'bcc') => { if (autocompleteTimeoutRef.current) clearTimeout(autocompleteTimeoutRef.current); setAutoQuery(''); @@ -3726,6 +3750,20 @@ export function EmailComposer({ onMoveChip={handleMoveChip} />
+ {activeClient?.supportsPrincipals() && ( + + )} + {archiveActionEnabled && ( + + )} {/* Delete */} + {archiveActionEnabled && ( + + )} {/* Overflow: move to folder - submenu */} {moveTree.length > 0 && onMoveToMailbox && (
- run(async () => { if (client) await batchArchive(client); }, { - success: tNotifications("emails_archived", { count: selectionCount }), - error: tNotifications("error_archiving"), - describeError: (error) => error instanceof ArchiveMailboxNotFoundError - ? tViewer("archive_mailbox_not_found") - : undefined, - })} - disabled={isProcessing} - busy={isProcessing} - /> + {archiveActionEnabled && ( + run(async () => { if (client) await batchArchive(client); }, { + success: tNotifications("emails_archived", { count: selectionCount }), + error: tNotifications("error_archiving"), + describeError: (error) => error instanceof ArchiveMailboxNotFoundError + ? tViewer("archive_mailbox_not_found") + : undefined, + })} + disabled={isProcessing} + busy={isProcessing} + /> + )} {spamApplicable && ( state.interfaceLayout); const shell = useProInterfaceActive() ? "pro" : "standard"; + const features = usePolicyStore((s) => s.policy.features); // Plugin buttons in the composer that have a shortcut (composer-toolbar-actions). const pluginComposerShortcuts = usePluginActions("composer-toolbar-actions").filter((a) => a.shortcut); - // Rows that belong to one interface layout (or one shell) are listed only under it. + // Rows that belong to one interface layout (or one shell) are listed only under it, + // and a row of a gated feature only while the admin has it on. const shown = (entries: readonly ShortcutEntry[]) => - entries.filter((entry) => (!entry.layout || entry.layout === interfaceLayout) && (!entry.shell || entry.shell === shell)); + entries.filter((entry) => (!entry.layout || entry.layout === interfaceLayout) + && (!entry.shell || entry.shell === shell) + && (!entry.feature || (features[entry.feature] ?? true))); const modalRef = useFocusTrap({ isActive: isOpen, diff --git a/components/mail/mail-app.tsx b/components/mail/mail-app.tsx index d9b1b48f3..5841322a8 100644 --- a/components/mail/mail-app.tsx +++ b/components/mail/mail-app.tsx @@ -30,6 +30,7 @@ import { ThreadGroup, Email, Mailbox, type StateChange, isUnifiedMailboxId, UNIF import { useAccountStore, waitForConnectedAccount } from "@/stores/account-store"; import { useShallow } from "zustand/react/shallow"; import { usePolicyStore } from "@/stores/policy-store"; +import { isArchiveActionEnabled, useArchiveActionEnabled } from "@/lib/archive-gate"; import type { UnifiedAccountClient } from "@/lib/unified-mailbox"; import { connectedAccountsGrew } from "@/lib/unified-mailbox"; import { KeyboardShortcutsModal } from "@/components/keyboard-shortcuts-modal"; @@ -638,6 +639,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { const includeGroupInUnified = useSettingsStore((s) => s.includeGroupInUnified); const unifiedCrossAccount = useSettingsStore((s) => s.unifiedCrossAccount); const unifiedCrossAccountGate = usePolicyStore((s) => s.isFeatureEnabled('unifiedCrossAccountEnabled')); + const archiveActionEnabled = useArchiveActionEnabled(); const accounts = useAccountStore((s) => s.accounts); const connectedAccountsSignature = useMemo( () => accounts.filter((a) => a.isConnected).map((a) => a.id).sort().join(","), @@ -880,7 +882,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { if (isScheduledView) return; if (selectedEmail) handleToggleStar(); }, - onArchive: async () => { + onArchive: archiveActionEnabled ? async () => { if (isScheduledView) return; if (shortcutsTargetSelection && client) { const count = selectedEmailKeys.size; @@ -894,7 +896,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { } else if (selectedEmail) { handleArchive(); } - }, + } : undefined, onDelete: async () => { if (isScheduledView) return; if (shortcutsTargetSelection && client) { @@ -1061,7 +1063,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { } }, // eslint-disable-next-line react-hooks/exhaustive-deps - }), [activeEmails, selectedEmail, client, selectedMailbox, isMobile, isTablet, selectedEmailKeys, mailboxes, isScheduledView, mvShell, showCrossStarred]); + }), [activeEmails, selectedEmail, client, selectedMailbox, isMobile, isTablet, selectedEmailKeys, mailboxes, isScheduledView, mvShell, showCrossStarred, archiveActionEnabled]); // Initialize keyboard shortcuts // Mountain View keeps the ticked rows while a message is read (#1231). The @@ -2726,7 +2728,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { }; const handleArchive = async (emailToArchive: Email | null = selectedEmail) => { - if (!client || !emailToArchive) return; + if (!client || !emailToArchive || !isArchiveActionEnabled()) return; // In unified view the archive folder (and any year/month subfolders we // create) must live in the email's own account, reached through the login it @@ -5028,9 +5030,9 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { onDelete={async (email) => { await handleDelete(email); }} - onArchive={async (email) => { + onArchive={archiveActionEnabled ? async (email) => { await handleArchive(email); - }} + } : undefined} onSetTag={(emailId, color) => { handleSetTag(emailId, color); }} @@ -5195,7 +5197,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { } handleDelete(target); }} - onArchive={() => handleArchive()} + onArchive={archiveActionEnabled ? () => handleArchive() : undefined} onToggleStar={handleToggleStar} onSetTag={handleSetTag} onMarkAsSpam={() => handleMarkAsSpam()} diff --git a/components/pro/pro-email-tab-body.tsx b/components/pro/pro-email-tab-body.tsx index 46ae5496c..0a094bd90 100644 --- a/components/pro/pro-email-tab-body.tsx +++ b/components/pro/pro-email-tab-body.tsx @@ -22,6 +22,7 @@ import { buildForwardAsAttachmentPayload } from "@/lib/forward-as-attachment"; import { KEYWORD_PREFIX, KEYWORD_PREFIX_LEGACY } from "@/lib/thread-utils"; import { cn } from "@/lib/utils"; import { getDraftTextBody } from '@/lib/email-body-selection'; +import { useArchiveActionEnabled } from '@/lib/archive-gate'; interface ProEmailTabBodyProps { tabId: string; @@ -81,6 +82,7 @@ function buildReplyContext(email: Email): ProReplyContext { export function ProEmailView({ emailId, client: clientOverride, accountId, onLoaded, onClose, className }: ProEmailViewProps) { const t = useTranslations(); const tNotifications = useTranslations('notifications'); + const archiveActionEnabled = useArchiveActionEnabled(); const activeClient = useAuthStore((s) => s.client); const client = clientOverride ?? activeClient; @@ -396,7 +398,7 @@ export function ProEmailView({ emailId, client: clientOverride, accountId, onLoa onForward={handleForward} onForwardAsAttachment={handleForwardAsAttachment} onDelete={handleDelete} - onArchive={handleArchive} + onArchive={archiveActionEnabled ? handleArchive : undefined} onToggleStar={handleToggleStar} onMarkAsRead={handleMarkAsRead} onSetTag={handleSetTag} diff --git a/components/settings/__tests__/archive-gate-settings.test.tsx b/components/settings/__tests__/archive-gate-settings.test.tsx new file mode 100644 index 000000000..309841eac --- /dev/null +++ b/components/settings/__tests__/archive-gate-settings.test.tsx @@ -0,0 +1,67 @@ +import { render, screen } from '@testing-library/react'; +import { afterEach, describe, expect, it } from 'vitest'; + +// The admin policy's archiveActionEnabled gate (#1257): off, the settings offer +// no archive mode, no archive hover or swipe action and no archive after an +// export, and a stored 'archive' shows as the choice that now applies. +// vitest.setup.ts renders labels as their raw keys. + +const { ReadingSettings } = await import('../reading-settings'); +const { DownloadsSettings } = await import('../downloads-settings'); +const { usePolicyStore } = await import('@/stores/policy-store'); +const { useSettingsStore } = await import('@/stores/settings-store'); + +const initial = { policy: usePolicyStore.getState(), settings: useSettingsStore.getState() }; +afterEach(() => { + usePolicyStore.setState(initial.policy, true); + useSettingsStore.setState(initial.settings, true); +}); + +function setArchiveGate(on: boolean) { + usePolicyStore.setState((state) => ({ + policy: { ...state.policy, features: { ...state.policy.features, archiveActionEnabled: on } }, + })); +} + +function selectFor(optionKey: string): HTMLSelectElement { + const option = screen.getAllByRole('option').find((o) => o.textContent === optionKey); + if (!option) throw new Error(`no option ${optionKey}`); + return option.closest('select') as HTMLSelectElement; +} + +describe('the settings and the Archive action gate', () => { + it('reading: archive mode, archive hover and swipe actions while the gate is on', () => { + useSettingsStore.setState({ swipeRightAction: 'archive' } as never); + render(); + expect(screen.getByText('archive_mode.label')).toBeInTheDocument(); + expect(screen.getAllByRole('option', { name: 'swipe_actions.archive' })).toHaveLength(2); + expect(screen.getByText('hover_actions.archive')).toBeInTheDocument(); + expect(selectFor('swipe_actions.archive').value).toBe('archive'); + }); + + it('reading: none of them with the gate off, a stored archive swipe shown as none', () => { + setArchiveGate(false); + useSettingsStore.setState({ swipeRightAction: 'archive' } as never); + render(); + expect(screen.queryByText('archive_mode.label')).toBeNull(); + expect(screen.queryAllByRole('option', { name: 'swipe_actions.archive' })).toHaveLength(0); + expect(screen.queryByText('hover_actions.archive')).toBeNull(); + const swipeSelects = screen.getAllByRole('option', { name: 'swipe_actions.none' }).map((o) => o.closest('select') as HTMLSelectElement); + expect(swipeSelects.map((s) => s.value)).toContain('none'); + expect(useSettingsStore.getState().swipeRightAction).toBe('archive'); + }); + + it('downloads: archive after export while the gate is on', () => { + useSettingsStore.setState({ postExportAction: 'archive' } as never); + render(); + expect(selectFor('after_export.archive').value).toBe('archive'); + }); + + it('downloads: no archive after export with the gate off, a stored one shown as keep', () => { + setArchiveGate(false); + useSettingsStore.setState({ postExportAction: 'archive' } as never); + render(); + expect(screen.queryByRole('option', { name: 'after_export.archive' })).toBeNull(); + expect(selectFor('after_export.keep').value).toBe('keep'); + }); +}); diff --git a/components/settings/downloads-settings.tsx b/components/settings/downloads-settings.tsx index c64a89e64..201e42c9b 100644 --- a/components/settings/downloads-settings.tsx +++ b/components/settings/downloads-settings.tsx @@ -6,6 +6,7 @@ import { useSettingsStore } from "@/stores/settings-store"; import { SettingsSection, SettingItem, Select, ToggleSwitch } from "./settings-section"; import { RotateCcw } from "@/components/icons"; import { cn } from "@/lib/utils"; +import { useArchiveActionEnabled } from "@/lib/archive-gate"; import { DEFAULT_ATTACHMENT_TEMPLATE, DEFAULT_BUNDLE_TEMPLATE, @@ -130,6 +131,7 @@ function TemplateEditor({ export function DownloadsSettings() { const t = useTranslations("settings.downloads"); + const archiveActionEnabled = useArchiveActionEnabled(); const { emailDownloadTemplate, attachmentDownloadTemplate, @@ -141,6 +143,8 @@ export function DownloadsSettings() { postExportAction, updateSetting, } = useSettingsStore(); + // With the Archive action off a stored "archive" keeps the message, so it shows as "keep". + const postExportShown = archiveActionEnabled || postExportAction !== "archive" ? postExportAction : "keep"; const sampleEmail = useMemo(() => buildSampleEmail(), []); const sampleAttachment = useMemo(() => ({ name: "Invoice-2026-05.pdf", type: "application/pdf" }), []); @@ -252,11 +256,11 @@ export function DownloadsSettings() { + )} updateSetting('swipeLeftAction', value as typeof swipeLeftAction)} - options={[ - { value: 'none', label: t('swipe_actions.none') }, - { value: 'archive', label: t('swipe_actions.archive') }, - { value: 'delete', label: t('swipe_actions.delete') }, - { value: 'markRead', label: t('swipe_actions.mark_read') }, - { value: 'star', label: t('swipe_actions.star') }, - { value: 'spam', label: t('swipe_actions.spam') }, - ]} + options={swipeOptions} /> @@ -315,7 +315,7 @@ export function ReadingSettings() {

{t('hover_actions.description')}

- {ALL_HOVER_ACTIONS.map((action) => { + {ALL_HOVER_ACTIONS.filter((action) => archiveActionEnabled || action.id !== 'archive').map((action) => { const isEnabled = hoverActions.includes(action.id); return (
+ +
+
+
+ ); +} diff --git a/app/(main)/admin/layout.tsx b/app/(main)/admin/layout.tsx index 9507b774f..201cc68d7 100644 --- a/app/(main)/admin/layout.tsx +++ b/app/(main)/admin/layout.tsx @@ -33,6 +33,8 @@ import { getActiveAccountSlotHeaders } from '@/lib/auth/active-account-slot'; import { useUpdateStore, selectHasUpdate } from '@/stores/update-store'; import { apiFetch, getPathPrefix, withBasePath } from '@/lib/browser-navigation'; +import { useAdminUnsavedStore } from '@/stores/admin-unsaved-store'; +import { UnsavedChangesGuard } from './_unsaved-changes-guard'; // Single-page tab navigation: clicks update a Zustand store. The URL stays // at /admin so React doesn't fire a route transition on every tab switch - @@ -80,6 +82,7 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) const pathname = usePathname(); const storeActiveTab = useAdminTabStore((s) => s.activeTab); const setActiveTab = useAdminTabStore((s) => s.setActiveTab); + const requestLeave = useAdminUnsavedStore((s) => s.requestLeave); // Highlight the active tab only on /admin itself - on dynamic routes // (e.g. /admin/plugins/[id]) no tab is "current". const activeTab = pathname === '/admin' ? storeActiveTab : null; @@ -175,9 +178,11 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) return () => { cancelled = true; }; }, [pathname, router]); - async function handleLogout() { - await apiFetch('/api/admin/auth', { method: 'DELETE' }); - router.replace('/admin/login'); + function handleLogout() { + requestLeave(async () => { + await apiFetch('/api/admin/auth', { method: 'DELETE' }); + router.replace('/admin/login'); + }); } // Don't gate the login page @@ -207,10 +212,13 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) const active = activeTab === tab; const showDot = tab === 'version' && hasUpdate; const handleClick = () => { - setActiveTab(tab); - // From a dynamic route (/admin/plugins/[id], /admin/marketplace/[slug]) - // we still need a real navigation back to /admin so the page renders. - if (pathname !== '/admin') router.push('/admin'); + if (active) return; + requestLeave(() => { + setActiveTab(tab); + // From a dynamic route (/admin/plugins/[id], /admin/marketplace/[slug]) + // we still need a real navigation back to /admin so the page renders. + if (pathname !== '/admin') router.push('/admin'); + }); }; return ( + {canOpenUrlInNewWindow(url) ? ( + + ) : ( +

{t("preview_error")}

+ )} )}
diff --git a/lib/__tests__/standalone-display.test.ts b/lib/__tests__/standalone-display.test.ts new file mode 100644 index 000000000..3869bf457 --- /dev/null +++ b/lib/__tests__/standalone-display.test.ts @@ -0,0 +1,72 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { canOpenUrlInNewWindow, isStandaloneDisplayMode, openPreviewInNewWindow } from '../standalone-display'; + +// An installed app (PWA) hands window.open(url, "_blank") to the system +// browser, which cannot resolve the app's blob: URLs, so attachment previews +// opened that way came up blank (#865). + +function mockDisplayMode(mode: string | null) { + vi.stubGlobal('matchMedia', vi.fn((query: string) => ({ + matches: mode !== null && query === `(display-mode: ${mode})`, + media: query, + addEventListener: () => {}, + removeEventListener: () => {}, + }))); +} + +let openSpy: ReturnType; + +beforeEach(() => { + openSpy = vi.fn(() => null); + vi.stubGlobal('open', openSpy); + mockDisplayMode('browser'); +}); + +afterEach(() => { + vi.unstubAllGlobals(); + delete (navigator as Navigator & { standalone?: boolean }).standalone; +}); + +describe('isStandaloneDisplayMode', () => { + it('is false in a browser tab', () => { + expect(isStandaloneDisplayMode()).toBe(false); + }); + + it.each(['standalone', 'fullscreen', 'window-controls-overlay'])('is true in %s display mode', (mode) => { + mockDisplayMode(mode); + expect(isStandaloneDisplayMode()).toBe(true); + }); + + it('is true for an iOS home-screen app that only reports navigator.standalone', () => { + mockDisplayMode(null); + (navigator as Navigator & { standalone?: boolean }).standalone = true; + expect(isStandaloneDisplayMode()).toBe(true); + }); +}); + +describe('openPreviewInNewWindow', () => { + it('opens a blob: URL in a new window from a browser tab', () => { + expect(openPreviewInNewWindow('blob:https://mail.example/abc')).toBe(true); + expect(openSpy).toHaveBeenCalledWith('blob:https://mail.example/abc', '_blank', 'noopener,noreferrer'); + }); + + it('does not open a blob: URL in an installed app and tells the caller to preview in-app', () => { + mockDisplayMode('standalone'); + expect(openPreviewInNewWindow('blob:https://mail.example/abc')).toBe(false); + expect(openSpy).not.toHaveBeenCalled(); + }); + + it('does not open a blob: URL in an iOS home-screen app', () => { + mockDisplayMode(null); + (navigator as Navigator & { standalone?: boolean }).standalone = true; + expect(openPreviewInNewWindow('blob:https://mail.example/abc')).toBe(false); + expect(openSpy).not.toHaveBeenCalled(); + }); + + it('still opens a web URL (e.g. a plugin viewer) in an installed app', () => { + mockDisplayMode('standalone'); + expect(canOpenUrlInNewWindow('https://viewer.example/doc')).toBe(true); + expect(openPreviewInNewWindow('https://viewer.example/doc')).toBe(true); + expect(openSpy).toHaveBeenCalledWith('https://viewer.example/doc', '_blank', 'noopener,noreferrer'); + }); +}); diff --git a/lib/standalone-display.ts b/lib/standalone-display.ts new file mode 100644 index 000000000..05fbe8961 --- /dev/null +++ b/lib/standalone-display.ts @@ -0,0 +1,39 @@ +/** + * Installed-app (PWA) display modes and what they break. + * + * In an installed web app, window.open(url, "_blank") is handed to the system + * browser: a separate browsing context that cannot resolve the app's blob: + * URLs, so the new window opens blank or errors (#865). Callers that would + * open a blob: URL in a new window ask here first and show the file in-app + * instead. + */ + +type StandaloneNavigator = Navigator & { standalone?: boolean }; + +const APP_DISPLAY_MODES = ["standalone", "fullscreen", "window-controls-overlay"] as const; + +/** Whether the page runs as an installed app rather than in a browser tab. */ +export function isStandaloneDisplayMode(): boolean { + if (typeof window === "undefined") return false; + // iOS Safari home-screen apps report navigator.standalone and (on older + // versions) no display-mode media feature at all. + if ((window.navigator as StandaloneNavigator).standalone === true) return true; + if (typeof window.matchMedia !== "function") return false; + return APP_DISPLAY_MODES.some((mode) => window.matchMedia(`(display-mode: ${mode})`).matches); +} + +/** Whether a new window could load this URL. Only blob: URLs in an installed app cannot. */ +export function canOpenUrlInNewWindow(url: string): boolean { + return !url.startsWith("blob:") || !isStandaloneDisplayMode(); +} + +/** + * Opens a preview URL in a new window when that window can load it. Returns + * false without opening anything when it cannot, so the caller shows the + * file in-app (or downloads it) instead of leaving the user a dead window. + */ +export function openPreviewInNewWindow(url: string): boolean { + if (!canOpenUrlInNewWindow(url)) return false; + window.open(url, "_blank", "noopener,noreferrer"); + return true; +} From ce600995234a9aa45784b6a91a93ad2b231d092e Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 00:59:27 +0200 Subject: [PATCH 030/238] fix: decrypt PGP and S/MIME messages inside conversations #902 --- .../thread-conversation-plugin-body.test.tsx | 110 ++++++++++++++++ components/email/thread-conversation-view.tsx | 31 ++++- hooks/use-plugin-rendered-body.ts | 118 ++++++++++++++++++ 3 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 components/email/__tests__/thread-conversation-plugin-body.test.tsx create mode 100644 hooks/use-plugin-rendered-body.ts diff --git a/components/email/__tests__/thread-conversation-plugin-body.test.tsx b/components/email/__tests__/thread-conversation-plugin-body.test.tsx new file mode 100644 index 000000000..52d79fc16 --- /dev/null +++ b/components/email/__tests__/thread-conversation-plugin-body.test.tsx @@ -0,0 +1,110 @@ +// #902: the phone conversation view (also used by Mountain View's expanded +// messages) rendered the raw message body and never asked the +// onRenderEmailBody hook, so a PGP message the plugin decrypts in the single +// reader stayed an armored block inside a thread. +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { act, render, screen, waitFor } from '@testing-library/react'; + +const t = Object.assign((k: string) => k, { raw: (k: string) => k, rich: (k: string) => k }); +vi.mock('next-intl', () => ({ + useTranslations: () => t, + useLocale: () => 'en', +})); +vi.mock('@/hooks/use-wopi-status', () => ({ useWopiStatus: () => ({ enabled: false }), canWopiOpen: () => false })); +vi.mock('@/hooks/use-own-domain-address', () => ({ useOwnDomainAddress: () => () => false })); +vi.mock('@/components/plugins/plugin-slot', () => ({ PluginSlot: () => null })); +vi.mock('@/hooks/use-plugin-slot-offers', () => ({ usePluginSlotOffers: () => [] })); + +class NoopResizeObserver { + observe() {} + unobserve() {} + disconnect() {} +} +vi.stubGlobal('ResizeObserver', NoopResizeObserver); + +const { renderHooks, clearAllHooks } = await import('@/lib/plugin-hooks'); +const { ThreadConversationView } = await import('@/components/email/thread-conversation-view'); + +const ARMORED = '-----BEGIN PGP MESSAGE-----\nhQEMA1234\n-----END PGP MESSAGE-----'; + +const pgpEmail = (id: string, receivedAt: string) => ({ + id, blobId: `blob-${id}`, threadId: 't1', mailboxIds: { inbox: true }, keywords: { $seen: false }, + from: [{ name: 'Alice', email: 'alice@example.com' }], to: [{ email: 'me@example.org' }], + subject: 'Secret', receivedAt, size: 1, preview: '-----BEGIN PGP MESSAGE-----', hasAttachment: false, + textBody: [{ partId: '1', type: 'text/plain' }], htmlBody: [{ partId: '1', type: 'text/plain' }], attachments: [], + bodyValues: { '1': { value: ARMORED } }, +}); + +const renderThread = () => { + const newer = pgpEmail('new', '2026-10-02T10:00:00Z'); + const older = pgpEmail('old', '2026-10-01T10:00:00Z'); + return render( + {}} + />, + ); +}; + +afterEach(() => clearAllHooks()); + +describe('conversation view runs the onRenderEmailBody hook', () => { + it('shows the plain text a plugin decrypted for each unfolded message', async () => { + const handler = vi.fn(async (_body: unknown, ctx: { id: string }) => ({ + html: '', text: `Decrypted ${ctx.id}`, attachments: [], handledBy: 'pgp', + })); + renderHooks.onRenderEmailBody.register('pgp', handler as never); + + renderThread(); + + expect(await screen.findByText('Decrypted new')).toBeTruthy(); + expect(await screen.findByText('Decrypted old')).toBeTruthy(); + expect(screen.queryByText(/BEGIN PGP MESSAGE/)).toBeNull(); + expect(handler).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ id: 'new', blobId: 'blob-new' }), + ); + }, 30_000); + + it('puts decrypted HTML into the sandboxed body frame, sanitized', async () => { + renderHooks.onRenderEmailBody.register('pgp', (async () => ({ + html: '

Decrypted html body

', text: '', attachments: [], handledBy: 'pgp', + })) as never); + + const { container } = renderThread(); + + await waitFor(() => { + const srcdocs = [...container.querySelectorAll('iframe')].map((f) => f.getAttribute('srcdoc') ?? ''); + expect(srcdocs).toHaveLength(2); + for (const doc of srcdocs) { + expect(doc).toContain('Decrypted html body'); + expect(doc).not.toContain('alert(1)'); + } + }); + }, 30_000); + + it('keeps the original body when no plugin handles the message', async () => { + renderHooks.onRenderEmailBody.register('pgp', (async (body: unknown) => body) as never); + + renderThread(); + await act(async () => {}); + + expect(screen.getAllByText(/BEGIN PGP MESSAGE/).length).toBe(2); + }, 30_000); + + it('decrypts again when a plugin asks for a re-render', async () => { + let unlocked = false; + renderHooks.onRenderEmailBody.register('pgp', (async () => (unlocked + ? { html: '', text: 'Unlocked body', attachments: [], handledBy: 'pgp' } + : { html: '', text: '', attachments: [] })) as never); + + renderThread(); + await act(async () => {}); + expect(screen.queryByText('Unlocked body')).toBeNull(); + + unlocked = true; + act(() => { window.dispatchEvent(new Event('plugin:rerender-email')); }); + expect((await screen.findAllByText('Unlocked body')).length).toBe(2); + }, 30_000); +}); diff --git a/components/email/thread-conversation-view.tsx b/components/email/thread-conversation-view.tsx index c60315b12..7170d85fa 100644 --- a/components/email/thread-conversation-view.tsx +++ b/components/email/thread-conversation-view.tsx @@ -3,7 +3,7 @@ import React, { useState, useEffect, useLayoutEffect, useMemo, useRef, useCallback } from "react"; import DOMPurify from "dompurify"; import { Email, ThreadGroup } from "@/lib/jmap/types"; -import { EMAIL_SANITIZE_CONFIG, blockExternalResourcesOnNode, collapseBlockedImageContainers, emailIframeCsp, plainTextToSafeHtml, restrictDataUriResourcesOnNode, sanitizePlainTextRenderedHtml } from "@/lib/email-sanitization"; +import { EMAIL_SANITIZE_CONFIG, blockExternalResourcesOnNode, collapseBlockedImageContainers, emailIframeCsp, plainTextToSafeHtml, restrictDataUriResourcesOnNode, sanitizeEmailBodyForIframe, sanitizePlainTextRenderedHtml } from "@/lib/email-sanitization"; import { getRenderableHtmlBody } from "@/lib/email-body-selection"; import { findVerificationCode, verificationCodeBodyText } from "@/lib/verification-code"; import { VerificationCodeChip } from "./verification-code-chip"; @@ -46,6 +46,7 @@ import { emitThreadExpand } from "@/lib/plugin-thread-expand"; import { PluginSlot } from "@/components/plugins/plugin-slot"; import { PluginActions } from "@/components/plugins/plugin-actions"; import { usePluginSlotOffers } from "@/hooks/use-plugin-slot-offers"; +import { usePluginRenderedBody } from "@/hooks/use-plugin-rendered-body"; import { emailToReadView } from "@/lib/plugin-projection"; import { AttachmentPluginMenu, ReaderAboveQuoteSlot } from "./reader-plugin-surfaces"; @@ -515,6 +516,8 @@ export function ConversationEmailBody({ const [hasBlockedContent, setHasBlockedContent] = useState(false); const [cidBlobUrls, setCidBlobUrls] = useState>({}); const { client } = useAuthStore(useShallow((state) => ({ client: state.client }))); + // A crypto plugin's decrypted body (PGP, S/MIME) replaces the message's own. + const pluginBody = usePluginRenderedBody(email); // reader-above-quote: the body the quote was collapsed in, once it is on screen. const [htmlBodyEl, setHtmlBodyEl] = useState(null); const [plainBodyEl, setPlainBodyEl] = useState(null); @@ -575,6 +578,30 @@ export function ConversationEmailBody({ const emailContent = useMemo(() => { if (!email) return { html: "", isHtml: false }; + // Plugin-rendered bodies get the reader's sanitizer and remote-content + // blocking, like any other mail body (#797). + if (pluginBody.html) { + const withCids = pluginBody.html.replace( + /\bcid:([^"'\s)]+)/gi, + (_match, cidRef) => pluginBody.cidUrls[cidRef] || cidBlobUrls[cidRef] || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', + ); + const { html, blockedExternalContent } = sanitizeEmailBodyForIframe(withCids, !allowExternal); + if (blockedExternalContent) { + if (!hasBlockedContent) setHasBlockedContent(true); + return { html: collapseBlockedImageContainers(html), isHtml: true }; + } + return { html, isHtml: true }; + } + if (pluginBody.text) { + return { + html: collapsePlainTextQuotes(plainTextToSafeHtml(pluginBody.text, 'text-primary hover:underline'), { + show: t('email_viewer.show_quoted_text'), + hide: t('email_viewer.hide_quoted_text'), + }), + isHtml: false, + }; + } + if (email.bodyValues) { let htmlContent = getRenderableHtmlBody(email); @@ -651,7 +678,7 @@ export function ConversationEmailBody({ // `hasBlockedContent` is only read to skip a redundant setState; as a // dependency it would re-run the sanitizer once the banner shows. // eslint-disable-next-line react-hooks/exhaustive-deps - }, [email, allowExternal, cidBlobUrls, t]); + }, [email, allowExternal, cidBlobUrls, pluginBody, t]); // Parts the body embeds via cid: stay out of the attachment row while the // user hides inline images - the desktop viewer's rule, shared through diff --git a/hooks/use-plugin-rendered-body.ts b/hooks/use-plugin-rendered-body.ts new file mode 100644 index 000000000..34bdce248 --- /dev/null +++ b/hooks/use-plugin-rendered-body.ts @@ -0,0 +1,118 @@ +"use client"; + +import { useEffect, useState } from "react"; +import type { Email } from "@/lib/jmap/types"; +import { renderHooks } from "@/lib/plugin-hooks"; +import { toInertBlob } from "@/lib/file-preview"; +import { debug } from "@/lib/debug"; + +export interface PluginRenderedBody { + /** HTML a crypto plugin (PGP, S/MIME) rendered for the message, unsanitized. */ + html: string | null; + /** Plain text the plugin rendered, when it gave no HTML. */ + text: string | null; + /** blob: URLs for the decrypted inline parts, keyed by Content-ID without brackets. */ + cidUrls: Record; +} + +const EMPTY: PluginRenderedBody = { html: null, text: null, cidUrls: {} }; + +function dataUrlToBytes(dataUrl: string): Uint8Array | null { + try { + const comma = dataUrl.indexOf(','); + if (comma < 0) return null; + const meta = dataUrl.slice(0, comma); + const data = dataUrl.slice(comma + 1); + if (meta.includes(';base64')) { + const bin = atob(data); + const u8 = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) u8[i] = bin.charCodeAt(i); + return u8; + } + return new TextEncoder().encode(decodeURIComponent(data)); + } catch { + return null; + } +} + +/** + * Asks the onRenderEmailBody hook for a replacement body, the way the single + * reader does, so a message a PGP or S/MIME plugin decrypts also shows + * decrypted inside a conversation (#902). Re-runs when a plugin calls + * api.ui.rerenderEmail, e.g. after the user unlocked a key. + */ +export function usePluginRenderedBody(email: Email): PluginRenderedBody { + const [body, setBody] = useState(EMPTY); + const [nonce, setNonce] = useState(0); + + useEffect(() => { + const bump = () => setNonce((n) => n + 1); + window.addEventListener('plugin:rerender-email', bump); + return () => window.removeEventListener('plugin:rerender-email', bump); + }, []); + + useEffect(() => { + if (renderHooks.onRenderEmailBody.size === 0) { + setBody(EMPTY); + return; + } + let cancelled = false; + const objectUrls: string[] = []; + + (async () => { + try { + const rawContentType = email.headers?.['content-type'] || email.headers?.['Content-Type']; + const contentType = Array.isArray(rawContentType) ? rawContentType[0] : rawContentType; + const result = await renderHooks.onRenderEmailBody.transform( + { html: '', text: '', attachments: [] as unknown[] }, + { + id: email.id, + contentType, + bodyStructure: email.bodyStructure, + bodyValues: email.bodyValues, + attachments: email.attachments, + blobId: email.blobId, + from: email.from, + }, + ) as { + html?: string; + text?: string; + attachments?: Array<{ name?: string; type?: string; dataUrl?: string; cid?: string }>; + handledBy?: string; + }; + if (cancelled) return; + if (!result || !result.handledBy) { + setBody(EMPTY); + return; + } + const cidUrls: Record = {}; + for (const att of Array.isArray(result.attachments) ? result.attachments : []) { + if (!att.cid || !att.dataUrl) continue; + const bytes = dataUrlToBytes(att.dataUrl); + if (!bytes) continue; + // Same re-typing as fetched cid parts before they get a blob: URL + // in our origin (GHSA-xvjh-v9c6-qcvc). + const url = URL.createObjectURL(toInertBlob(new Blob([bytes as BlobPart], { type: att.type || 'application/octet-stream' }))); + objectUrls.push(url); + cidUrls[att.cid.replace(/^<|>$/g, '')] = url; + } + setBody({ + html: typeof result.html === 'string' && result.html ? result.html : null, + text: typeof result.text === 'string' && result.text ? result.text : null, + cidUrls, + }); + } catch (err) { + if (cancelled) return; + debug.error('onRenderEmailBody hook failed:', err); + setBody(EMPTY); + } + })(); + + return () => { + cancelled = true; + objectUrls.forEach((url) => URL.revokeObjectURL(url)); + }; + }, [email, nonce]); + + return body; +} From 4a69a7df8a629cb7f4abd5f5ba35dd9b5a46d9b8 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 00:58:27 +0200 Subject: [PATCH 031/238] test: darken cells coloured with bgcolor in dark mode #693 --- lib/__tests__/email-dark-mode.test.ts | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/lib/__tests__/email-dark-mode.test.ts b/lib/__tests__/email-dark-mode.test.ts index 52b6dd28c..298084a9f 100644 --- a/lib/__tests__/email-dark-mode.test.ts +++ b/lib/__tests__/email-dark-mode.test.ts @@ -163,3 +163,72 @@ describe('applyEmailDarkMode', () => { expect(doc.documentElement.classList.contains(DARK_PENDING_CLASS)).toBe(false); }); }); + +// #693: cells coloured through the legacy bgcolor attribute stayed white in +// dark mode. Browsers map bgcolor to background-color as a presentational hint +// (below every author style), which the pass reads back through computed +// style. jsdom has no presentational hints, so the helper below adds the same +// mapping as zero-specificity rules at the top of the cascade. +describe('applyEmailDarkMode with bgcolor', () => { + const mapBgcolorLikeBrowser = (doc: Document) => { + const rules: string[] = []; + doc.querySelectorAll('[bgcolor]').forEach((el, i) => { + el.setAttribute('data-bgcolor-hint', String(i)); + rules.push(`:where([data-bgcolor-hint="${i}"]) { background-color: ${el.getAttribute('bgcolor')}; }`); + }); + const sheet = doc.createElement('style'); + sheet.textContent = rules.join('\n'); + doc.head.prepend(sheet); + }; + + const render = (mail: string, bodyBgcolor?: string) => { + const { html } = sanitizeEmailBodyForIframe(mail, true); + const frame = document.createElement('iframe'); + document.body.appendChild(frame); + const doc = frame.contentDocument!; + doc.documentElement.className = DARK_PENDING_CLASS; + doc.documentElement.style.backgroundColor = 'rgb(20, 20, 20)'; + if (bodyBgcolor) doc.body.setAttribute('bgcolor', bodyBgcolor); + doc.body.innerHTML = html; + mapBgcolorLikeBrowser(doc); + applyEmailDarkMode(doc); + return doc; + }; + + // The darkened colour the pass wrote over the sender's one. + const rewrittenBg = (el: HTMLElement) => { + expect(el.style.getPropertyPriority('background-color')).toBe('important'); + return c(el.ownerDocument.defaultView!.getComputedStyle(el).backgroundColor); + }; + + it.each([ + ['td', '

Hello

'], + ['tr', '

Hello

'], + ['table', '

Hello

'], + ['td with a named colour', '

Hello

'], + ['td with a light tint', '

Hello

'], + ])('darkens a light bgcolor on %s and keeps its text readable', (_, mail) => { + const doc = render(mail); + const bg = rewrittenBg(doc.getElementById('x')!); + expect(lightness(bg)).toBeLessThan(40); + const text = c(doc.defaultView!.getComputedStyle(doc.getElementById('p')!).color); + expect(contrastRatio(text, bg)).toBeGreaterThan(4.5); + }); + + it('darkens the inline background when a cell has both', () => { + const doc = render('
Hello
'); + expect(lightness(rewrittenBg(doc.getElementById('x')!))).toBeLessThan(40); + }); + + it('keeps a vivid bgcolor as sent', () => { + const doc = render('
Sale
'); + const cell = doc.getElementById('x')!; + expect(c(doc.defaultView!.getComputedStyle(cell).backgroundColor)).toEqual(c('rgb(227, 6, 19)')); + expect(cell.style.getPropertyValue('background-color')).toBe(''); + }); + + it('darkens a white body bgcolor', () => { + const doc = render('

Hello

', '#ffffff'); + expect(lightness(rewrittenBg(doc.body))).toBeLessThan(40); + }); +}); From cbf917372ce05001f6ade367f876434b41218ddb Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:08:04 +0200 Subject: [PATCH 032/238] fix: show the mail's own date in the list and keep it on .eml import #891 --- components/contacts/contact-activity.tsx | 3 +- .../email/__tests__/thread-list-item.test.tsx | 36 ++++++++++++++++ components/email/email-viewer.tsx | 8 ++-- components/email/thread-conversation-view.tsx | 3 +- components/email/thread-email-item.tsx | 3 +- components/email/thread-list-item.tsx | 9 ++-- components/mail/mail-app.tsx | 4 +- components/pro/pro-folder-tab-body.tsx | 3 +- lib/__tests__/eml-import.test.ts | 41 ++++++++++++++++++- lib/eml-import.ts | 35 +++++++++++++++- 10 files changed, 128 insertions(+), 17 deletions(-) diff --git a/components/contacts/contact-activity.tsx b/components/contacts/contact-activity.tsx index 4a95ffcd2..3f818d3f7 100644 --- a/components/contacts/contact-activity.tsx +++ b/components/contacts/contact-activity.tsx @@ -9,6 +9,7 @@ import { useEmailStore } from "@/stores/email-store"; import { useCalendarStore } from "@/stores/calendar-store"; import { Avatar } from "@/components/ui/avatar"; import { cleanPreview } from "@/lib/utils"; +import { emailDisplayDate } from "@/lib/email-date"; import { Section } from "./contact-detail"; import type { ContactCard, Email, CalendarEvent } from "@/lib/jmap/types"; @@ -239,7 +240,7 @@ export function ContactActivity({ contact }: ContactActivityProps) { {sender.name || t("unknown_sender")} - {formatEmailDate(email.receivedAt)} + {formatEmailDate(emailDisplayDate(email))}
diff --git a/components/email/__tests__/thread-list-item.test.tsx b/components/email/__tests__/thread-list-item.test.tsx index 90d21f827..f91eadd12 100644 --- a/components/email/__tests__/thread-list-item.test.tsx +++ b/components/email/__tests__/thread-list-item.test.tsx @@ -646,3 +646,39 @@ describe('ThreadListItem prefetch on mouse press', () => { expect(onPrefetch).not.toHaveBeenCalled(); }); }); + +describe('ThreadListItem date (#891)', () => { + // A migrated mailbox: the server stamped every message with the import day, + // but the Date header still carries when the mail was really sent. + const imported = { receivedAt: '2024-01-15T10:00:00Z', sentAt: '2019-03-05T08:30:00Z' }; + + beforeEach(() => { + useSettingsStore.setState({ + emailKeywords: [...DEFAULT_KEYWORDS], + showPreview: false, + mailLayout: 'split', + interfaceLayout: 'default', + dateFormat: 'full', + }); + useEmailStore.setState({ selectedEmailKeys: new Set(), selectedMailbox: 'inbox' }); + }); + + it('shows the Date header, not the import time, on a single-message row', () => { + const { container } = renderRow(makeEmail(imported)); + expect(container.textContent).toMatch(/2019/); + expect(container.textContent).not.toMatch(/2024/); + }); + + it('shows the Date header of the latest message on a thread row', () => { + const emails = [ + makeEmail({ id: 'a', receivedAt: '2024-01-15T09:00:00Z', sentAt: '2019-03-04T08:30:00Z' }), + makeEmail({ id: 'b', ...imported }), + ]; + const [thread] = groupEmailsByThread(emails); + const { container } = render( + {}} onEmailSelect={() => {}} />, + ); + expect(container.textContent).toMatch(/2019/); + expect(container.textContent).not.toMatch(/2024/); + }); +}); diff --git a/components/email/email-viewer.tsx b/components/email/email-viewer.tsx index 251c27709..dd0cc525a 100644 --- a/components/email/email-viewer.tsx +++ b/components/email/email-viewer.tsx @@ -711,7 +711,7 @@ function MvConversationCard({ email, onOpen, timeFormat, compact }: { email: Ema {sender?.name || sender?.email || ''} - {compact ? formatDate(email.receivedAt) : mvSenderDate(email.receivedAt, timeFormat)} + {compact ? formatDate(emailDisplayDate(email)) : mvSenderDate(emailDisplayDate(email), timeFormat)} {cleanPreview(email.preview)} @@ -826,7 +826,7 @@ export function MvExpandedConversationCard({ <{sender.email}> )} - {compact ? formatDate(email.receivedAt) : mvSenderDate(email.receivedAt, timeFormat)} + {compact ? formatDate(emailDisplayDate(email)) : mvSenderDate(emailDisplayDate(email), timeFormat)}
diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index 63738940d..e48819e45 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -2,6 +2,7 @@ import React, { useCallback } from "react"; import { cleanPreview, formatDate } from "@/lib/utils"; +import { emailDisplayDate } from "@/lib/email-date"; import { formatScheduledSendAt } from "@/lib/scheduled-send-label"; import { Email, ThreadGroup } from "@/lib/jmap/types"; import { cn } from "@/lib/utils"; @@ -688,7 +689,7 @@ const SingleEmailItem = React.forwardRef( 'text-xs tabular-nums', isUnread ? (mvRow ? 'text-foreground font-bold' : 'text-foreground font-semibold') : 'text-muted-foreground' )}> - {formatDate(email.receivedAt, mvRow ? { listStyle: 'mountain-view' } : undefined)} + {formatDate(emailDisplayDate(email), mvRow ? { listStyle: 'mountain-view' } : undefined)} )} @@ -766,7 +767,7 @@ const SingleEmailItem = React.forwardRef( ? "text-foreground font-semibold" : "text-muted-foreground" )}> - {formatDate(email.receivedAt)} + {formatDate(emailDisplayDate(email))} )} {mvMobileRow && !(showPreview && density !== 'extra-compact' && density !== 'compact') && ( @@ -1289,7 +1290,7 @@ export const ThreadListItem = React.forwardRef - {formatDate(latestEmail.receivedAt, mvRow ? { listStyle: 'mountain-view' } : undefined)} + {formatDate(emailDisplayDate(latestEmail), mvRow ? { listStyle: 'mountain-view' } : undefined)} )} @@ -1374,7 +1375,7 @@ export const ThreadListItem = React.forwardRef - {formatDate(latestEmail.receivedAt)} + {formatDate(emailDisplayDate(latestEmail))} )} {mvMobileRow && !(showPreview && density !== 'extra-compact' && density !== 'compact') && ( diff --git a/components/mail/mail-app.tsx b/components/mail/mail-app.tsx index d9b1b48f3..767bef433 100644 --- a/components/mail/mail-app.tsx +++ b/components/mail/mail-app.tsx @@ -3450,9 +3450,9 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { let imported = 0; let failed = 0; - for (const { blob } of emails) { + for (const { blob, receivedAt } of emails) { try { - await client.importRawEmail(blob, { [targetMailboxId]: true }, { '$seen': true }); + await client.importRawEmail(blob, { [targetMailboxId]: true }, { '$seen': true }, undefined, receivedAt); imported++; } catch { failed++; diff --git a/components/pro/pro-folder-tab-body.tsx b/components/pro/pro-folder-tab-body.tsx index 3132e3ff2..4479ebbd9 100644 --- a/components/pro/pro-folder-tab-body.tsx +++ b/components/pro/pro-folder-tab-body.tsx @@ -4,6 +4,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useTranslations } from "next-intl"; import { Folder, Loader2, Paperclip, RefreshCw, Star } from "@/components/icons"; import { cn, cleanPreview, formatDate } from "@/lib/utils"; +import { emailDisplayDate } from "@/lib/email-date"; import { localizeMailboxName } from "@/lib/mailbox-label"; import { EmailViewer } from "@/components/email/email-viewer"; import { ProEmailView } from "@/components/pro/pro-email-tab-body"; @@ -235,7 +236,7 @@ export function ProFolderTabBody({ tabId, data }: ProFolderTabBodyProps) { {who} - {formatDate(email.receivedAt)} + {formatDate(emailDisplayDate(email))}
diff --git a/lib/__tests__/eml-import.test.ts b/lib/__tests__/eml-import.test.ts index cf0b794ac..70dae52b4 100644 --- a/lib/__tests__/eml-import.test.ts +++ b/lib/__tests__/eml-import.test.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest'; import JSZip from 'jszip'; -import { expandImportableEmails, EML_IMPORT_ACCEPT } from '@/lib/eml-import'; +import { expandImportableEmails, readMessageDate, EML_IMPORT_ACCEPT } from '@/lib/eml-import'; const emlFile = (name: string, content = 'raw email', type = 'message/rfc822') => new File([content], name, { type }); @@ -49,3 +49,42 @@ describe('expandImportableEmails', () => { expect(EML_IMPORT_ACCEPT).toBe('.eml,.zip,message/rfc822,application/zip'); }); }); + +describe('Date header as receivedAt (#891)', () => { + const CRLF = String.fromCharCode(13, 10); + const raw = [ + 'From: Alice ', + 'Subject: old mail', + 'Date: Tue, 5 Mar 2019 09:30:00', + ' +0100 (CET)', + '', + 'Date: Wed, 1 Jan 2025 00:00:00 +0000', + 'body', + ].join(CRLF); + + it('carries the Date header of an .eml file as a JMAP UTCDate', async () => { + const out = await expandImportableEmails([emlFile('old.eml', raw)]); + expect(out[0].receivedAt).toBe('2019-03-05T08:30:00Z'); + }); + + it('carries the Date header of each .eml inside a .zip', async () => { + const zip = new JSZip(); + zip.file('old.eml', raw); + const blob = await zip.generateAsync({ type: 'blob' }); + const out = await expandImportableEmails([new File([blob], 'a.zip', { type: 'application/zip' })]); + expect(out[0].receivedAt).toBe('2019-03-05T08:30:00Z'); + }); + + it('leaves receivedAt unset when there is no usable Date header', async () => { + const bodyOnly = ['Subject: x', '', 'Date: Tue, 5 Mar 2019 09:30:00 +0100'].join(CRLF); + await expect(readMessageDate(new Blob([bodyOnly]))).resolves.toBeUndefined(); + const garbage = ['Date: not a date', '', 'body'].join(CRLF); + await expect(readMessageDate(new Blob([garbage]))).resolves.toBeUndefined(); + }); + + it('ignores a Date header far in the future', async () => { + const now = Date.parse('2026-01-01T00:00:00Z'); + const future = ['Date: Fri, 1 Jan 2027 00:00:00 +0000', '', 'body'].join(CRLF); + await expect(readMessageDate(new Blob([future]), now)).resolves.toBeUndefined(); + }); +}); diff --git a/lib/eml-import.ts b/lib/eml-import.ts index 3056cd35c..dae322846 100644 --- a/lib/eml-import.ts +++ b/lib/eml-import.ts @@ -1,6 +1,14 @@ +import { MAX_FUTURE_SENT_AT_MS } from "./email-date"; + export interface ImportableEmail { name: string; blob: Blob; + /** + * The message's `Date` header as a JMAP UTCDate, passed as `receivedAt` on + * Email/import. Without it the server stamps the import time and every + * imported message looks like it arrived today (#891). + */ + receivedAt?: string; } const EMAIL_MIME = "message/rfc822"; @@ -13,6 +21,27 @@ function isZipName(name: string): boolean { return /\.zip$/i.test(name); } +/** Only the header block is needed; don't decode a whole large message. */ +const HEADER_SCAN_BYTES = 64 * 1024; + +/** + * Read the `Date` header of a raw RFC 5322 message and return it as a JMAP + * UTCDate (no fractional seconds). Returns undefined when the header is + * missing, unparsable, or more than a day in the future. + */ +export async function readMessageDate(blob: Blob, now: number = Date.now()): Promise { + const head = await blob.slice(0, HEADER_SCAN_BYTES).text(); + const end = head.search(/\r?\n\r?\n/); + const headers = (end === -1 ? head : head.slice(0, end)).replace(/\r?\n[ \t]+/g, " "); + const match = /^Date:[ \t]*(.+)$/im.exec(headers); + if (!match) return undefined; + // Drop RFC 5322 comments such as "(CEST)" before parsing. + const value = match[1].replace(/\([^)]*\)/g, " ").trim(); + const time = Date.parse(value); + if (Number.isNaN(time) || time - now > MAX_FUTURE_SENT_AT_MS) return undefined; + return new Date(time).toISOString().replace(/\.\d{3}Z$/, "Z"); +} + async function extractEmlsFromZip(file: File): Promise { const { default: JSZip } = await import("jszip"); const zip = await JSZip.loadAsync(await file.arrayBuffer()); @@ -22,9 +51,11 @@ async function extractEmlsFromZip(file: File): Promise { if (entry.dir) continue; if (!isEmlName(entry.name)) continue; const data = await entry.async("arraybuffer"); + const blob = new Blob([data], { type: EMAIL_MIME }); out.push({ name: entry.name.split(/[\\/]/).pop() || entry.name, - blob: new Blob([data], { type: EMAIL_MIME }), + blob, + receivedAt: await readMessageDate(blob), }); } return out; @@ -40,7 +71,7 @@ export async function expandImportableEmails( continue; } const blob = new Blob([await file.arrayBuffer()], { type: EMAIL_MIME }); - out.push({ name: file.name, blob }); + out.push({ name: file.name, blob, receivedAt: await readMessageDate(blob) }); } return out; } From f8ef54dbea58443f91703e1e1ab7eba39828bd6d Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:18:02 +0200 Subject: [PATCH 033/238] fix: enable push notifications when another user shares a folder with you #1050 --- lib/__tests__/web-push.test.ts | 85 ++++++++++++++++++++++++ lib/jmap/client-interface.ts | 2 + lib/web-push.ts | 115 +++++++++++++++++++++++++++++++-- 3 files changed, 198 insertions(+), 4 deletions(-) diff --git a/lib/__tests__/web-push.test.ts b/lib/__tests__/web-push.test.ts index 48d2d7b99..6b5662efd 100644 --- a/lib/__tests__/web-push.test.ts +++ b/lib/__tests__/web-push.test.ts @@ -484,6 +484,91 @@ describe('enableWebPush delivery filter (emailPush)', () => { }); }); +// Stalwart refuses emailPush entries for accounts that only shared a folder +// with the user; only the own account and groups the user belongs to pass. +describe('enableWebPush with a folder shared by another user (#1050)', () => { + const GROUP_ACCOUNT_ID = 'acct-group'; + const FORBIDDEN = 'PushSubscription/set create failed: {"type":"forbidden","description":"No access to one of the accounts in the emailPush map."}'; + const pushParams = (client: IJMAPClient, call: number) => + (client.createPushSubscription as ReturnType).mock.calls[call][0]; + + // Behaves like Stalwart: any map naming the sharing account is refused. + function refuseSharedAccount(client: IJMAPClient) { + vi.mocked(client.createPushSubscription).mockImplementation(async (params) => { + if (params.emailPush && SHARED_ACCOUNT_ID in params.emailPush) throw new Error(FORBIDDEN); + return 'push-new'; + }); + vi.mocked(client.updatePushSubscription).mockImplementation(async (_id, patch) => + !(patch.emailPush && SHARED_ACCOUNT_ID in patch.emailPush)); + } + + it('still creates the subscription, filtered for the own account only', async () => { + localStorage.setItem(DEVICE_KEY, THIS_DEVICE); + const client = makeClient([], { emailPushCapability: true }); + refuseSharedAccount(client); + installFetch({}); + + const result = await enableWebPush({ client, relayBaseUrl: RELAY, inboxOnly: false }); + + expect(result.subscriptionId).toBe('push-new'); + expect(client.verifyPushSubscription).toHaveBeenCalledWith('push-new', 'code-123'); + expect(client.createPushSubscription).toHaveBeenCalledTimes(2); + expect(pushParams(client, 1).emailPush).toEqual({ [ACCOUNT_ID]: EXPECTED_EMAIL_PUSH[ACCOUNT_ID] }); + }); + + it('keeps the filter for a group account the user belongs to', async () => { + localStorage.setItem(DEVICE_KEY, THIS_DEVICE); + const client = makeClient([], { emailPushCapability: true }); + const base = await client.getAllMailboxes(); + vi.mocked(client.getAllMailboxes).mockResolvedValue([ + ...base, + { ...base[0], id: `${GROUP_ACCOUNT_ID}:mb-group-inbox`, originalId: 'mb-group-inbox', accountId: GROUP_ACCOUNT_ID }, + ]); + // What Stalwart's session says: create rights on owned accounts (own and + // group), none on an account that only shared a folder. + (client as { getAccountCapability?: unknown }).getAccountCapability = vi.fn( + (urn: string, accountId: string) => (urn === 'urn:ietf:params:jmap:calendars' + ? { mayCreateCalendar: accountId !== SHARED_ACCOUNT_ID } + : undefined), + ); + refuseSharedAccount(client); + installFetch({}); + + await enableWebPush({ client, relayBaseUrl: RELAY, inboxOnly: false }); + + expect(client.createPushSubscription).toHaveBeenCalledTimes(2); + expect(Object.keys(pushParams(client, 1).emailPush).sort()).toEqual([GROUP_ACCOUNT_ID, ACCOUNT_ID].sort()); + }); + + it('does not retry a create that failed for another reason', async () => { + localStorage.setItem(DEVICE_KEY, THIS_DEVICE); + const client = makeClient([], { emailPushCapability: true }); + vi.mocked(client.createPushSubscription).mockRejectedValue(new Error('PushSubscription/set create failed: {"type":"overQuota"}')); + installFetch({}); + + await expect(enableWebPush({ client, relayBaseUrl: RELAY, inboxOnly: false })).rejects.toThrow(/overQuota/); + expect(client.createPushSubscription).toHaveBeenCalledTimes(1); + }); + + it('refreshes an existing subscription with the accounts the server accepts', async () => { + localStorage.setItem(DEVICE_KEY, THIS_DEVICE); + localStorage.setItem(SUB_KEY, 'push-old'); + const client = makeClient([sub('push-old', THIS_DEVICE)], { emailPushCapability: true }); + refuseSharedAccount(client); + installFetch({}); + + const result = await enableWebPush({ client, relayBaseUrl: RELAY, inboxOnly: false }); + + expect(result.subscriptionId).toBe('push-old'); + expect(client.createPushSubscription).not.toHaveBeenCalled(); + expect(client.destroyed).toEqual([]); + expect(client.updatePushSubscription).toHaveBeenLastCalledWith( + 'push-old', + expect.objectContaining({ emailPush: { [ACCOUNT_ID]: EXPECTED_EMAIL_PUSH[ACCOUNT_ID] } }), + ); + }); +}); + // Inbox-only mode swaps the "not in Junk" mailbox condition for a positive // "in Inbox" one, so mail a Sieve rule files into any other folder never // reaches the push subscription. diff --git a/lib/jmap/client-interface.ts b/lib/jmap/client-interface.ts index 74496d2a7..baab195cf 100644 --- a/lib/jmap/client-interface.ts +++ b/lib/jmap/client-interface.ts @@ -88,6 +88,8 @@ export interface IJMAPClient { // ── Capabilities ────────────────────────────────────────────── getCapabilities(): Record; hasAccountCapability(capability: string, accountId?: string): boolean; + /** The value of an account capability (primary account by default). */ + getAccountCapability?(capability: string, accountId?: string): unknown; /** FileNode naming rules the server publishes (Stalwart 0.16.6+), if any. */ getFileNameRules?(accountId?: string): FileNameRules | null; getMaxSizeUpload(): number; diff --git a/lib/web-push.ts b/lib/web-push.ts index 3efa0a20c..0bf26daf2 100644 --- a/lib/web-push.ts +++ b/lib/web-push.ts @@ -202,6 +202,99 @@ function sameEmailPush( return normalizeEmailPush(a) === normalizeEmailPush(b); } +function pickAccounts( + config: Record, + accountIds: readonly string[], +): Record { + const out: Record = {}; + for (const id of accountIds) if (config[id]) out[id] = config[id]; + return out; +} + +// A stored filter that the fallback below narrowed down still counts as up to +// date: same entries for the accounts it covers, and it covers the primary. +// Without this every resync would retry the full map and get refused again. +function coveredByEmailPush( + stored: Record | null | undefined, + desired: Record, + primary: string, +): boolean { + if (!stored || !stored[primary]) return false; + const keys = Object.keys(stored); + if (!keys.every((id) => desired[id])) return false; + return sameEmailPush(stored, pickAccounts(desired, keys)); +} + +function isForbiddenError(err: unknown): boolean { + return err instanceof Error && err.message.includes('"type":"forbidden"'); +} + +/** + * Smaller emailPush maps to retry with after the server refused the full one. + * + * Stalwart only accepts emailPush entries for the user's own account and the + * groups they belong to. An entry for an account that merely shared a folder + * with them fails the whole PushSubscription/set with `forbidden` (#1050). + * Those accounts never push to this subscription anyway - Stalwart fans out + * to member accounts only - so leaving their entries out loses nothing. The + * session lists both kinds alike, so first keep the accounts that look owned + * (see OWNERSHIP_FLAGS), then fall back to the primary account alone. The + * native app does the same (repos/react-native emailPushFallbacks). + */ +function narrowedEmailPushConfigs( + client: IJMAPClient, + config: Record, +): Record[] { + const primary = client.getAccountId(); + const others = Object.keys(config).filter((id) => id !== primary); + if (others.length === 0) return []; + const candidates: Record[] = []; + const owned = others.filter((id) => looksOwned(client, id)); + if (owned.length > 0 && owned.length < others.length) { + candidates.push(pickAccounts(config, [primary, ...owned])); + } + candidates.push(pickAccounts(config, [primary])); + return candidates; +} + +// Stalwart marks the accounts a user owns - their own and the groups they +// belong to - through the create flags of its per-account collection +// capabilities: true there, false on accounts shared with them by ACL. +const OWNERSHIP_FLAGS: ReadonlyArray = [ + ['urn:ietf:params:jmap:calendars', 'mayCreateCalendar'], + ['urn:ietf:params:jmap:contacts', 'mayCreateAddressBook'], + ['urn:ietf:params:jmap:filenode', 'mayCreateTopLevelFileNode'], +]; + +function looksOwned(client: IJMAPClient, accountId: string): boolean { + return OWNERSHIP_FLAGS.some(([urn, flag]) => { + const capability = client.getAccountCapability?.(urn, accountId) as Record | undefined; + return capability?.[flag] === true; + }); +} + +async function createPushSubscriptionWithEmailPush( + client: IJMAPClient, + params: Omit[0], 'emailPush'>, + emailPush: Record | null, +): Promise { + try { + return await client.createPushSubscription({ ...params, ...(emailPush ? { emailPush } : {}) }); + } catch (err) { + if (!emailPush || !isForbiddenError(err)) throw err; + let lastError = err; + for (const narrowed of narrowedEmailPushConfigs(client, emailPush)) { + try { + return await client.createPushSubscription({ ...params, emailPush: narrowed }); + } catch (retryErr) { + if (!isForbiddenError(retryErr)) throw retryErr; + lastError = retryErr; + } + } + throw lastError; + } +} + export interface EnableWebPushParams { client: IJMAPClient; // Optional - falls back to DEFAULT_RELAY_BASE_URL. @@ -473,7 +566,22 @@ async function refreshSubscriptionExpires( }; if (typesNeedUpdate) patch.types = [...PUSH_TYPES]; if (emailPushNeedsUpdate && desiredEmailPush) patch.emailPush = desiredEmailPush; - return await client.updatePushSubscription(sub.id, patch); + if (await client.updatePushSubscription(sub.id, patch)) return true; + if (!patch.emailPush) return false; + // The server may refuse entries for accounts that only shared a folder + // with us (#1050). Retry with the accounts it accepted last time, then + // with the same smaller maps a fresh create would fall back to. + const desired = patch.emailPush; + const candidates: Record[] = []; + if (coveredByEmailPush(sub.emailPush, desired, client.getAccountId())) { + candidates.push(pickAccounts(desired, Object.keys(sub.emailPush ?? {}))); + } else { + candidates.push(...narrowedEmailPushConfigs(client, desired)); + } + for (const narrowed of candidates) { + if (await client.updatePushSubscription(sub.id, { ...patch, emailPush: narrowed })) return true; + } + return false; } catch { return false; } @@ -595,13 +703,12 @@ export async function enableWebPush( } } - const serverAssignedId = await params.client.createPushSubscription({ + const serverAssignedId = await createPushSubscriptionWithEmailPush(params.client, { deviceClientId, url: buildRelayUrl(relayBaseUrl, `/api/push/jmap/${encodeURIComponent(deviceClientId)}`), types: [...PUSH_TYPES], expires: expiresFromNow(SUBSCRIPTION_EXPIRES_DAYS), - ...(emailPush ? { emailPush } : {}), - }); + }, emailPush); const verificationCode = await pollVerificationCode(relayBaseUrl, deviceClientId); await params.client.verifyPushSubscription(serverAssignedId, verificationCode); From 7d882be734e998fc710d8033ba4a2bc215a89132 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:37:44 +0200 Subject: [PATCH 034/238] fix: delete only the clicked mail when another account has a message with the same id #857 --- components/mail/mail-app.tsx | 6 +- .../__tests__/email-single-namesakes.test.ts | 106 ++++++++++++++++++ stores/email-store.ts | 60 ++++++++-- 3 files changed, 157 insertions(+), 15 deletions(-) create mode 100644 stores/__tests__/email-single-namesakes.test.ts diff --git a/components/mail/mail-app.tsx b/components/mail/mail-app.tsx index 767bef433..170d9c29a 100644 --- a/components/mail/mail-app.tsx +++ b/components/mail/mail-app.tsx @@ -61,7 +61,7 @@ import { debug } from "@/lib/debug"; import { playNotificationSound } from "@/lib/notification-sound"; import { cn, getMailboxPath } from "@/lib/utils"; import { localizeMailboxName } from "@/lib/mailbox-label"; -import { KEYWORD_PREFIX, KEYWORD_PREFIX_LEGACY, groupEmailsByThread, threadKeyFor } from "@/lib/thread-utils"; +import { KEYWORD_PREFIX, KEYWORD_PREFIX_LEGACY, emailKeyFor, groupEmailsByThread, threadKeyFor } from "@/lib/thread-utils"; import { resolveThreadRoute } from "@/lib/thread-routing"; import { ErrorBoundary, @@ -2692,7 +2692,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { try { // false: a plugin stopped it and said why, so no "deleted" here. - if (await deleteEmail(client, emailToDelete.id, true)) toast.success(t('notifications.email_deleted')); + if (await deleteEmail(client, emailToDelete.id, true, emailKeyFor(emailToDelete))) toast.success(t('notifications.email_deleted')); } catch (error) { console.error("Failed to permanently delete email:", error); toast.error(t('notifications.error_deleting'), error instanceof Error ? error.message : undefined); @@ -2714,7 +2714,7 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { }); if (trashMailbox) { try { - if (await moveToMailbox(client, emailToDelete.id, trashMailbox.id)) toast.success(t('notifications.email_deleted')); + if (await moveToMailbox(client, emailToDelete.id, trashMailbox.id, emailKeyFor(emailToDelete))) toast.success(t('notifications.email_deleted')); } catch (error) { console.error("Failed to move email to trash:", error); toast.error(error instanceof Error ? error.message : 'Failed to move email to trash'); diff --git a/stores/__tests__/email-single-namesakes.test.ts b/stores/__tests__/email-single-namesakes.test.ts new file mode 100644 index 000000000..bfc466d82 --- /dev/null +++ b/stores/__tests__/email-single-namesakes.test.ts @@ -0,0 +1,106 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { useEmailStore } from '../email-store'; +import { useAuthStore } from '../auth-store'; +import { useSettingsStore } from '../settings-store'; +import { emailKeyFor } from '@/lib/thread-utils'; +import type { Email, Mailbox } from '@/lib/jmap/types'; +import type { IJMAPClient } from '@/lib/jmap/client-interface'; + +/** + * Deleting one row of the unified view while another account holds a message + * with the same id (Stalwart hands out the same ids, and the same trash id, + * in every account). The action must reach the row that was clicked and leave + * its namesake listed and untouched (#857). + */ +const twin = (account: string, receivedAt: string): Email => ({ + id: 'eiaaaabc', threadId: `t-${account}`, blobId: `blob-${account}`, + mailboxIds: { 'a': true }, keywords: { $seen: true }, + from: [{ email: `someone@${account}` }], to: [], subject: account, + receivedAt, size: 42, preview: '', hasAttachment: false, + sourceClientAccountId: account, sourceAccountId: account, +} as unknown as Email); + +const mailbox = (overrides: Partial): Mailbox => ({ + id: 'a', name: 'Inbox', sortOrder: 0, + totalEmails: 1, unreadEmails: 0, totalThreads: 1, unreadThreads: 0, + myRights: { + mayReadItems: true, mayAddItems: true, mayRemoveItems: true, maySetSeen: true, + maySetKeywords: true, mayCreateChild: true, mayRename: true, mayDelete: true, maySubmit: true, + }, + isSubscribed: true, isShared: false, + ...overrides, +} as Mailbox); + +const makeClient = () => ({ + moveEmail: vi.fn().mockResolvedValue(undefined), + moveToTrash: vi.fn().mockResolvedValue(undefined), + deleteEmail: vi.fn().mockResolvedValue(undefined), + getMailboxes: vi.fn().mockResolvedValue([]), +}) as unknown as IJMAPClient & Record>; + +// The list is newest first: account A's namesake sits right above the row +// that gets deleted. +const above = twin('account-a', '2026-10-16T09:00:00Z'); +const clicked = twin('account-b', '2026-10-16T08:00:00Z'); +let clientA: ReturnType; +let clientB: ReturnType; + +const accountMailboxes = (account: string) => [ + mailbox({ id: 'a', role: 'inbox', accountId: account }), + mailbox({ id: 'b', name: 'Trash', role: 'trash', accountId: account }), +]; + +beforeEach(() => { + clientA = makeClient(); + clientB = makeClient(); + useAuthStore.setState({ + activeAccountId: 'account-a', + client: clientA, + getClientForAccount: (id: string) => + (id === 'account-a' ? clientA : id === 'account-b' ? clientB : undefined) as never, + } as never); + useSettingsStore.setState({ deleteAction: 'trash' } as never); + useEmailStore.setState({ + isUnifiedView: true, + unifiedRole: 'inbox', + selectedMailbox: '', + selectedKeyword: null, + emails: [above, clicked], + selectedEmail: clicked, + selectedEmailKeys: new Set(), + mailboxes: [], + accountMailboxes: { + 'account-a': accountMailboxes('account-a'), + 'account-b': accountMailboxes('account-b'), + }, + error: null, + } as never); +}); + +describe('single-email actions with a namesake in another account', () => { + it('moves only the clicked row to trash and keeps the row above it', async () => { + await useEmailStore.getState().moveToMailbox(clientA, clicked.id, 'b', emailKeyFor(clicked)); + + expect(clientB.moveEmail).toHaveBeenCalledWith('eiaaaabc', 'b', 'account-b'); + expect(clientA.moveEmail).not.toHaveBeenCalled(); + const state = useEmailStore.getState(); + expect(state.emails.map(e => e.sourceAccountId)).toEqual(['account-a']); + expect(state.selectedEmail?.sourceAccountId).toBe('account-a'); + }); + + it('permanently deletes only the clicked row', async () => { + await useEmailStore.getState().deleteEmail(clientA, clicked.id, true, emailKeyFor(clicked)); + + expect(clientB.deleteEmail).toHaveBeenCalledWith('eiaaaabc', 'account-b'); + expect(clientA.deleteEmail).not.toHaveBeenCalled(); + expect(useEmailStore.getState().emails.map(e => e.sourceAccountId)).toEqual(['account-a']); + }); + + it('moves only the clicked row with the trash delete action', async () => { + await useEmailStore.getState().deleteEmail(clientA, clicked.id, false, emailKeyFor(clicked)); + + expect(clientB.moveToTrash).toHaveBeenCalledWith('eiaaaabc', 'b', 'account-b', false); + expect(clientA.moveToTrash).not.toHaveBeenCalled(); + expect(useEmailStore.getState().emails.map(e => e.sourceAccountId)).toEqual(['account-a']); + }); +}); diff --git a/stores/email-store.ts b/stores/email-store.ts index aecbea409..177fe04a7 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -307,9 +307,11 @@ interface EmailStore { fetchQuota: (client: IJMAPClient) => Promise; sendEmail: (client: IJMAPClient, to: string[], subject: string, body: string, cc?: string[], bcc?: string[], identityId?: string, fromEmail?: string, draftId?: string, fromName?: string, htmlBody?: string, attachments?: Array<{ blobId: string; name: string; type: string; size: number; disposition?: 'attachment' | 'inline'; cid?: string }>, inReplyTo?: string[], references?: string[], delayedUntil?: string, envelopeMailFrom?: string, options?: { requestReadReceipt?: boolean; requestDsn?: boolean; requireTls?: boolean; localAccountId?: string }) => Promise; sendRawEmail: (client: IJMAPClient, rawMimeBlob: Blob, identityId: string, delayedUntil?: string, envelopeRecipients?: string[]) => Promise; - deleteEmail: (client: IJMAPClient, emailId: string, forceDelete?: boolean) => Promise; + /** `emailKey` (emailKeyFor of the row) picks the right row when the id repeats across accounts. */ + deleteEmail: (client: IJMAPClient, emailId: string, forceDelete?: boolean, emailKey?: string) => Promise; markAsRead: (client: IJMAPClient, emailId: string, read: boolean) => Promise; - moveToMailbox: (client: IJMAPClient, emailId: string, mailboxId: string) => Promise; + /** `emailKey` (emailKeyFor of the row) picks the right row when the id repeats across accounts. */ + moveToMailbox: (client: IJMAPClient, emailId: string, mailboxId: string, emailKey?: string) => Promise; /** * Move a single email, routing across the account boundary when the * destination folder is owned by a different JMAP account (a delegated/shared @@ -502,6 +504,38 @@ function getNextSelectedEmail(state: { emails: Email[]; selectedEmail: Email | n return getNextSelectedEmailAfterRemoval(state, new Set([removedEmailId])); } +/** + * Matches the list row a single-email action is about. Email ids repeat across + * accounts, so in a merged view (unified inbox, tags) the bare id also matches + * the other account's namesake: deleting one row moved or hid the other as + * well (#857). With the row's `emailKeyFor` key only that row matches. + */ +function singleEmailMatcher(emailId: string, emailKey?: string): (email: Email) => boolean { + return emailKey ? (email) => emailKeyFor(email) === emailKey : (email) => email.id === emailId; +} + +/** getNextSelectedEmail for the one row `isRemoved` matches. */ +function getNextSelectedEmailAfterRemovingRow( + state: { emails: Email[]; selectedEmail: Email | null }, + isRemoved: (email: Email) => boolean, +): Email | null { + const selected = state.selectedEmail; + if (!selected || !isRemoved(selected)) return selected; + + const selectedKey = emailKeyFor(selected); + let idx = state.emails.findIndex(e => emailKeyFor(e) === selectedKey); + if (idx === -1) idx = state.emails.findIndex(e => e.id === selected.id); + if (idx === -1) return null; + + for (let nextIndex = idx + 1; nextIndex < state.emails.length; nextIndex++) { + if (!isRemoved(state.emails[nextIndex])) return state.emails[nextIndex]; + } + for (let prevIndex = idx - 1; prevIndex >= 0; prevIndex--) { + if (!isRemoved(state.emails[prevIndex])) return state.emails[prevIndex]; + } + return null; +} + function annotateScheduledEmails( emails: Email[], scheduledSubmissionByEmailId: Map @@ -3080,10 +3114,11 @@ export const useEmailStore = create((set, get) => ({ } }, - deleteEmail: async (client, emailId, forceDelete): Promise => { + deleteEmail: async (client, emailId, forceDelete, emailKey): Promise => { try { // Get the email to check if it's unread and which mailboxes it belongs to - const email = get().emails.find(e => e.id === emailId); + const isTarget = singleEmailMatcher(emailId, emailKey); + const email = get().emails.find(isTarget); if (!email) return false; const isUnread = !email.keywords?.$seen; @@ -3157,8 +3192,8 @@ export const useEmailStore = create((set, get) => ({ : {}; return { - emails: state.emails.filter(e => e.id !== emailId), - selectedEmail: getNextSelectedEmail(state, emailId), + emails: state.emails.filter(e => !isTarget(e)), + selectedEmail: getNextSelectedEmailAfterRemovingRow(state, isTarget), ...mailboxPatch, }; }); @@ -3191,8 +3226,8 @@ export const useEmailStore = create((set, get) => ({ : {}; return { - emails: state.emails.filter(e => e.id !== emailId), - selectedEmail: getNextSelectedEmail(state, emailId), + emails: state.emails.filter(e => !isTarget(e)), + selectedEmail: getNextSelectedEmailAfterRemovingRow(state, isTarget), ...mailboxPatch, }; }); @@ -3380,9 +3415,10 @@ export const useEmailStore = create((set, get) => ({ ); }, - moveToMailbox: async (client, emailId, destinationMailboxId): Promise => { + moveToMailbox: async (client, emailId, destinationMailboxId, emailKey): Promise => { try { - const email = get().emails.find(e => e.id === emailId); + const isTarget = singleEmailMatcher(emailId, emailKey); + const email = get().emails.find(isTarget); if (!email) return false; const isUnread = !email.keywords?.$seen; @@ -3426,8 +3462,8 @@ export const useEmailStore = create((set, get) => ({ }); return { - emails: state.emails.filter(e => e.id !== emailId), - selectedEmail: getNextSelectedEmail(state, emailId), + emails: state.emails.filter(e => !isTarget(e)), + selectedEmail: getNextSelectedEmailAfterRemovingRow(state, isTarget), ...mailboxPatch, }; }); From f47fe778d0813f7a4a31a2e29566ace505f74bc3 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:17:19 +0200 Subject: [PATCH 035/238] feat: add a setting to hide the account dot in the unified view #912 --- .../thread-list-item-account-dot.test.tsx | 110 ++++++++++++++++++ components/email/thread-list-item.tsx | 12 +- components/settings/layout-settings.tsx | 9 +- locales/ar/common.json | 4 + locales/ca/common.json | 4 + locales/cs/common.json | 4 + locales/da/common.json | 4 + locales/de/common.json | 4 + locales/en/common.json | 4 + locales/es/common.json | 4 + locales/fa/common.json | 4 + locales/fr/common.json | 4 + locales/he/common.json | 4 + locales/hu/common.json | 4 + locales/it/common.json | 4 + locales/ja/common.json | 4 + locales/ko/common.json | 4 + locales/lv/common.json | 4 + locales/mn/common.json | 4 + locales/nb/common.json | 4 + locales/nl/common.json | 4 + locales/pl/common.json | 4 + locales/pt/common.json | 4 + locales/ro/common.json | 4 + locales/ru/common.json | 4 + locales/sk/common.json | 4 + locales/tr/common.json | 4 + locales/uk/common.json | 4 + locales/zh-TW/common.json | 4 + locales/zh/common.json | 4 + stores/settings-store.ts | 3 + 31 files changed, 237 insertions(+), 5 deletions(-) create mode 100644 components/email/__tests__/thread-list-item-account-dot.test.tsx diff --git a/components/email/__tests__/thread-list-item-account-dot.test.tsx b/components/email/__tests__/thread-list-item-account-dot.test.tsx new file mode 100644 index 000000000..482048d1f --- /dev/null +++ b/components/email/__tests__/thread-list-item-account-dot.test.tsx @@ -0,0 +1,110 @@ +import { render } from '@testing-library/react'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { ThreadListItem } from '../thread-list-item'; +import { useSettingsStore, DEFAULT_KEYWORDS } from '@/stores/settings-store'; +import { useEmailStore } from '@/stores/email-store'; +import { useUIStore } from '@/stores/ui-store'; +import { groupEmailsByThread } from '@/lib/thread-utils'; +import type { Email } from '@/lib/jmap/types'; + +vi.mock('@/hooks/use-email-drag', () => ({ + useEmailDrag: () => ({ dragHandlers: {}, isDragging: false }), +})); + +vi.mock('@/stores/auth-store', () => { + const state = { identities: [], username: null }; + return { + useAuthStore: (selector?: (s: typeof state) => unknown) => (selector ? selector(state) : state), + }; +}); + +const ACCOUNT_TEAL = { id: 'acct-teal', avatarColor: '#0d9488', label: 'Teal account' }; +const accountState = { + getAccountById: (id: string) => (id === ACCOUNT_TEAL.id ? ACCOUNT_TEAL : undefined), +}; +vi.mock('@/stores/account-store', () => ({ + useAccountStore: Object.assign( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (selector: any) => (selector ? selector(accountState) : accountState), + { getState: () => accountState }, + ), +})); + +const makeEmail = (overrides: Partial = {}): Email => ({ + id: 'email-1', + threadId: 'thread-1', + mailboxIds: { inbox: true }, + keywords: { $seen: true }, + size: 1000, + receivedAt: '2024-01-15T10:00:00Z', + from: [{ name: 'Alice', email: 'alice@example.com' }], + subject: 'Test Subject', + hasAttachment: false, + accountId: ACCOUNT_TEAL.id, + accountLabel: ACCOUNT_TEAL.label, + ...overrides, +}); + +function renderEmails(emails: Email[]) { + const [thread] = groupEmailsByThread(emails); + return render( + {}} onEmailSelect={() => {}} />, + ); +} + +const single = () => [makeEmail()]; +const collapsedThread = () => [ + makeEmail({ id: 'e1', threadId: 't1' }), + makeEmail({ id: 'e2', threadId: 't1', receivedAt: '2024-01-16T10:00:00Z' }), +]; + +// The dot is the only element painted in the account colour. +const accountDot = (c: HTMLElement) => + Array.from(c.querySelectorAll('span.rounded-full')) + .find((el) => el.style.backgroundColor === 'rgb(13, 148, 136)') ?? null; + +describe('ThreadListItem account dot (#912)', () => { + beforeEach(() => { + useUIStore.setState({ isMobile: false, isTablet: false, isDesktop: true }); + useSettingsStore.setState({ + emailKeywords: [...DEFAULT_KEYWORDS], + showPreview: false, + interfaceLayout: 'default', + tintListRowsByAccount: false, + showAccountDot: true, + }); + useEmailStore.setState({ + selectedEmailKeys: new Set(), + selectedMailbox: 'inbox', + isUnifiedView: true, + }); + }); + + it('is on by default', () => { + expect(useSettingsStore.getInitialState().showAccountDot).toBe(true); + }); + + describe.each([ + ['single message', single], + ['collapsed thread', collapsedThread], + ])('%s', (_name, emails) => { + describe.each(['split', 'focus'] as const)('%s layout', (layout) => { + beforeEach(() => { + useSettingsStore.setState({ mailLayout: layout }); + }); + + it('shows the dot in the unified view', () => { + const { container } = renderEmails(emails()); + expect(accountDot(container)).not.toBeNull(); + }); + + it('hides the dot when the setting is off', () => { + useSettingsStore.setState({ showAccountDot: false }); + const { container } = renderEmails(emails()); + expect(accountDot(container)).toBeNull(); + // The rest of the row still renders. + expect(container.textContent).toContain('Test Subject'); + }); + }); + }); +}); diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index e48819e45..d35508403 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -360,6 +360,8 @@ const SingleEmailItem = React.forwardRef( const { variant: tagVariant, placement: tagPlacement } = useTagDisplay(); const tintListRowsByTag = useSettingsStore((state) => state.tintListRowsByTag); const tintListRowsByAccount = useSettingsStore((state) => state.tintListRowsByAccount); + // The tint replaces the dot, and the dot can be switched off on its own (#912). + const showAccountDot = useSettingsStore((state) => state.showAccountDot) && !tintListRowsByAccount; const density = useSettingsStore((state) => state.density); const mailLayout = useEffectiveMailLayout(); const timeFormat = useSettingsStore((state) => state.timeFormat); @@ -624,7 +626,7 @@ const SingleEmailItem = React.forwardRef( <>
- {isUnifiedView && email.accountId && accountColor && !tintListRowsByAccount && ( + {isUnifiedView && email.accountId && accountColor && showAccountDot && ( ( <>
- {isUnifiedView && email.accountId && accountColor && !tintListRowsByAccount && ( + {isUnifiedView && email.accountId && accountColor && showAccountDot && ( state.tintListRowsByTag); const tintListRowsByAccount = useSettingsStore((state) => state.tintListRowsByAccount); + // The tint replaces the dot, and the dot can be switched off on its own (#912). + const showAccountDot = useSettingsStore((state) => state.showAccountDot) && !tintListRowsByAccount; // A collapsed row speaks for every message under it, so it carries their tags too. const tagIds = sortTagIds(getThreadTagIds(thread.emails)); const threadTintSource = threadAccountColor @@ -1204,7 +1208,7 @@ export const ThreadListItem = React.forwardRef
- {isUnifiedView && latestEmail.accountId && threadAccountColor && !tintListRowsByAccount && ( + {isUnifiedView && latestEmail.accountId && threadAccountColor && showAccountDot && (
- {isUnifiedView && latestEmail.accountId && threadAccountColor && !tintListRowsByAccount && ( + {isUnifiedView && latestEmail.accountId && threadAccountColor && showAccountDot && ( s.accounts); const activeAccountId = useAccountStore(s => s.activeAccountId); @@ -263,6 +263,13 @@ export function LayoutSettings() { /> + + updateSetting('showAccountDot', checked)} + /> + + , @@ -1231,6 +1233,7 @@ export const useSettingsStore = create()( colorfulSidebarIcons: state.colorfulSidebarIcons, tintListRowsByTag: state.tintListRowsByTag, tintListRowsByAccount: state.tintListRowsByAccount, + showAccountDot: state.showAccountDot, showFolderTotalCount: state.showFolderTotalCount, showSharedMailAccounts: state.showSharedMailAccounts, hiddenSharedMailAccounts: state.hiddenSharedMailAccounts, From 5d5f099cff91140030662b8d0e0e1d68c37463fb Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:17:36 +0200 Subject: [PATCH 036/238] feat: tick a row by clicking anywhere on it while selecting #1014 --- .../email/__tests__/thread-list-item.test.tsx | 105 +++++++++++++++++- components/email/thread-email-item.tsx | 9 +- components/email/thread-list-item.tsx | 32 ++++-- 3 files changed, 129 insertions(+), 17 deletions(-) diff --git a/components/email/__tests__/thread-list-item.test.tsx b/components/email/__tests__/thread-list-item.test.tsx index f91eadd12..37c42021d 100644 --- a/components/email/__tests__/thread-list-item.test.tsx +++ b/components/email/__tests__/thread-list-item.test.tsx @@ -327,10 +327,109 @@ describe('ThreadListItem keeping the selection when a message opens', () => { expect(onEmailSelect).toHaveBeenCalledWith(expect.objectContaining({ id: 'newer' })); expect([...useEmailStore.getState().selectedEmailKeys]).toEqual(['other']); }); +}); - it('still clears them in the default layout', () => { - open('default', [makeEmail()]); - expect(useEmailStore.getState().selectedEmailKeys.size).toBe(0); +// #1014: once something is ticked, a click anywhere on the row ticks it +// instead of opening the message and dropping the selection. +describe('ThreadListItem whole row toggles in selection mode', () => { + const conversation = () => [ + makeEmail({ id: 'older', receivedAt: '2024-01-14T10:00:00Z' }), + makeEmail({ id: 'newer', receivedAt: '2024-01-15T10:00:00Z' }), + ]; + + function setup( + emails: Email[], + { layout = 'default', mobile = false, selected = ['other'], isExpanded = false }: { + layout?: 'mountain-view' | 'default'; mobile?: boolean; selected?: string[]; isExpanded?: boolean; + } = {}, + ) { + useSettingsStore.setState({ interfaceLayout: layout, mailLayout: 'split', density: 'regular' } as never); + useUIStore.setState({ isMobile: mobile, isTablet: false, isDesktop: !mobile }); + useEmailStore.setState({ selectedEmailKeys: new Set(selected), selectedMailbox: 'inbox' }); + const onEmailSelect = vi.fn(); + const onEmailDoubleClick = vi.fn(); + const onOpenConversation = vi.fn(); + const onToggleExpand = vi.fn(); + const [thread] = groupEmailsByThread(emails); + const utils = render( + , + ); + return { ...utils, onEmailSelect, onEmailDoubleClick, onOpenConversation, onToggleExpand }; + } + const selection = () => [...useEmailStore.getState().selectedEmailKeys].sort(); + + it('ticks a message row instead of opening it', () => { + const { onEmailSelect } = setup([makeEmail()]); + fireEvent.click(screen.getByText('Test Subject')); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(selection()).toEqual(['email-1', 'other']); + }); + + it('unticks it on the next click', () => { + const { onEmailSelect } = setup([makeEmail()], { selected: ['email-1', 'other'] }); + fireEvent.click(screen.getByText('Test Subject')); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(selection()).toEqual(['other']); + }); + + it('opens the message as before when nothing is ticked', () => { + const { onEmailSelect } = setup([makeEmail()], { selected: [] }); + fireEvent.click(screen.getByText('Test Subject')); + expect(onEmailSelect).toHaveBeenCalledTimes(1); + expect(selection()).toEqual([]); + }); + + it('does not open the message on a double click', () => { + const { onEmailDoubleClick } = setup([makeEmail()]); + fireEvent.doubleClick(screen.getByText('Test Subject')); + expect(onEmailDoubleClick).not.toHaveBeenCalled(); + }); + + it('ticks every message of a thread row without unfolding it', () => { + const { onEmailSelect, onToggleExpand } = setup(conversation()); + fireEvent.click(screen.getByText('Test Subject')); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(onToggleExpand).not.toHaveBeenCalled(); + expect(selection()).toEqual(['newer', 'older', 'other']); + }); + + it('still unfolds the thread from its chevron', () => { + const { container, onToggleExpand } = setup(conversation()); + fireEvent.click(container.querySelector('[data-expand-toggle]')!); + expect(onToggleExpand).toHaveBeenCalledTimes(1); + expect(selection()).toEqual(['other']); + }); + + it('ticks a thread on the phone instead of opening the thread view', () => { + const { onOpenConversation, onEmailSelect } = setup(conversation(), { mobile: true }); + fireEvent.click(screen.getByText('Test Subject')); + expect(onOpenConversation).not.toHaveBeenCalled(); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(selection()).toEqual(['newer', 'older', 'other']); + }); + + it('ticks a Mountain View phone row', () => { + const { onEmailSelect } = setup([makeEmail()], { layout: 'mountain-view', mobile: true }); + fireEvent.click(screen.getByText('Test Subject')); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(selection()).toEqual(['email-1', 'other']); + }); + + it('ticks a message inside an unfolded thread', () => { + const { onEmailSelect } = setup(conversation(), { isExpanded: true }); + // The unfolded messages show the sender; the header shows the subject. + const older = screen.getAllByText('Alice').find((el) => el.closest('.ps-12'))!; + fireEvent.click(older); + expect(onEmailSelect).not.toHaveBeenCalled(); + expect(selection().filter((k) => k !== 'other')).toHaveLength(1); }); }); diff --git a/components/email/thread-email-item.tsx b/components/email/thread-email-item.tsx index dfda8bddf..6d1fc5426 100644 --- a/components/email/thread-email-item.tsx +++ b/components/email/thread-email-item.tsx @@ -47,12 +47,11 @@ export function ThreadEmailItem({ // header pools them, so without this they disappear on the way in. const tagIds = sortTagIds(getEmailTagIds(email.keywords)); const sender = email.from?.[0]; - const { selectedMailbox, selectedEmailKeys, toggleEmailSelection, selectRangeEmails, clearSelection } = useEmailStore(useShallow((state) => ({ + const { selectedMailbox, selectedEmailKeys, toggleEmailSelection, selectRangeEmails } = useEmailStore(useShallow((state) => ({ selectedMailbox: state.selectedMailbox, selectedEmailKeys: state.selectedEmailKeys, toggleEmailSelection: state.toggleEmailSelection, selectRangeEmails: state.selectRangeEmails, - clearSelection: state.clearSelection, }))); const density = useSettingsStore((state) => state.density); const isChecked = selectedEmailKeys.has(emailKeyFor(email)); @@ -91,8 +90,10 @@ export function ThreadEmailItem({ } else if (e.shiftKey) { e.preventDefault(); selectRangeEmails(email); + } else if (selectedEmailKeys.size > 0) { + // Selection mode: the whole row is the checkbox (#1014). + toggleEmailSelection(email); } else { - if (selectedEmailKeys.size > 0) clearSelection(); onClick?.(); } }; @@ -117,7 +118,7 @@ export function ThreadEmailItem({ onClick={handleClick} onDoubleClick={(e) => { if (e.ctrlKey || e.metaKey || e.shiftKey) return; - if (!onDoubleClick) return; + if (!onDoubleClick || selectedEmailKeys.size > 0) return; e.preventDefault(); onDoubleClick(); }} diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index d35508403..b9ce054bd 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -339,7 +339,7 @@ const SingleEmailItem = React.forwardRef( const isAnswered = email.keywords?.$answered; const isForwarded = email.keywords?.$forwarded; const showPaperclip = useListHasAttachment(email, loadAttachments); - const { selectedMailbox, currentMailboxRole, selectedEmailKeys, toggleEmailSelection, selectRangeEmails, clearSelection, isUnifiedView } = useEmailStore(useShallow((state) => ({ + const { selectedMailbox, currentMailboxRole, selectedEmailKeys, toggleEmailSelection, selectRangeEmails, isUnifiedView } = useEmailStore(useShallow((state) => ({ selectedMailbox: state.selectedMailbox, // The role, not the folder list: the list is a new array on every // count update, and subscribing to it re-rendered every row for each. @@ -347,7 +347,6 @@ const SingleEmailItem = React.forwardRef( selectedEmailKeys: state.selectedEmailKeys, toggleEmailSelection: state.toggleEmailSelection, selectRangeEmails: state.selectRangeEmails, - clearSelection: state.clearSelection, isUnifiedView: state.isUnifiedView, }))); // In Sent/Drafts folders, show recipient instead of sender (which is always @@ -486,6 +485,11 @@ const SingleEmailItem = React.forwardRef( onContextMenu?.(e, email); }; + // Once something is ticked, the whole row is the checkbox, as in phone + // mail apps (#1014). Mountain View on the desktop opens the message and + // keeps the ticks instead, as Gmail does (#1231). + const togglesOnClick = selectedEmailKeys.size > 0 && !mvRow; + const handleClick = (e: React.MouseEvent) => { if (swipeEnabled && consumeTap()) { return; } if (e.ctrlKey || e.metaKey) { @@ -494,10 +498,11 @@ const SingleEmailItem = React.forwardRef( } else if (e.shiftKey) { e.preventDefault(); selectRangeEmails(email); + } else if (togglesOnClick) { + toggleEmailSelection(email); } else { // Mountain View keeps the ticked rows while a message is read, as // Gmail does, so selecting can carry on afterwards. (#1231) - if (selectedEmailKeys.size > 0 && !mvRow) clearSelection(); onClick(); } }; @@ -542,7 +547,7 @@ const SingleEmailItem = React.forwardRef( onClick={handleClick} onDoubleClick={(e) => { if (e.ctrlKey || e.metaKey || e.shiftKey) return; - if (!onDoubleClick) return; + if (!onDoubleClick || togglesOnClick) return; e.preventDefault(); onDoubleClick(); }} @@ -908,7 +913,7 @@ export const ThreadListItem = React.forwardRef ({ + const { selectedMailbox, currentMailboxRole, selectedEmailKeys, toggleEmailSelection, selectRangeEmails, isUnifiedView } = useEmailStore(useShallow((state) => ({ selectedMailbox: state.selectedMailbox, // The role, not the folder list: the list is a new array on every // count update, and subscribing to it re-rendered every row for each. @@ -916,7 +921,6 @@ export const ThreadListItem = React.forwardRef 0 && !mvRow; + const handleHeaderClick = (e: React.MouseEvent) => { if (e.ctrlKey || e.metaKey) { e.preventDefault(); @@ -1039,6 +1046,14 @@ export const ThreadListItem = React.forwardRef 0 && !mvRow) clearSelection(); onEmailSelect(latestEmail); return; } - const target = e.target as HTMLElement; if (target.closest('[data-expand-toggle]')) { onToggleExpand(); } else { - if (selectedEmailKeys.size > 0) clearSelection(); if (!isExpanded) { onCollapseAllThreads?.(); onToggleExpand(); @@ -1110,7 +1122,7 @@ export const ThreadListItem = React.forwardRef { if (e.ctrlKey || e.metaKey || e.shiftKey) return; - if (!onEmailDoubleClick) return; + if (!onEmailDoubleClick || threadTogglesOnClick) return; e.preventDefault(); onEmailDoubleClick(latestEmail); }} From b76624466f2ff33a224b5028064ce21ed6e68e58 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:24:41 +0200 Subject: [PATCH 037/238] feat: show the folder on search results from all folders #1172 --- .../thread-list-item-source-folder.test.tsx | 127 ++++++++++++++++++ components/email/thread-list-item.tsx | 15 ++- stores/email-store.ts | 2 +- 3 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 components/email/__tests__/thread-list-item-source-folder.test.tsx diff --git a/components/email/__tests__/thread-list-item-source-folder.test.tsx b/components/email/__tests__/thread-list-item-source-folder.test.tsx new file mode 100644 index 000000000..023ab287d --- /dev/null +++ b/components/email/__tests__/thread-list-item-source-folder.test.tsx @@ -0,0 +1,127 @@ +import { render, screen } from '@testing-library/react'; +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { ThreadListItem } from '../thread-list-item'; +import { useSettingsStore, DEFAULT_KEYWORDS } from '@/stores/settings-store'; +import { useEmailStore } from '@/stores/email-store'; +import { useUIStore } from '@/stores/ui-store'; +import { groupEmailsByThread } from '@/lib/thread-utils'; +import { DEFAULT_SEARCH_FILTERS } from '@/lib/jmap/search-utils'; +import { SEARCH_SCOPE_ALL_FOLDERS } from '@/lib/search-scope-folders'; +import type { Email } from '@/lib/jmap/types'; + +vi.mock('@/hooks/use-email-drag', () => ({ + useEmailDrag: () => ({ dragHandlers: {}, isDragging: false }), +})); + +vi.mock('@/stores/auth-store', () => { + const state = { identities: [], username: null }; + return { + useAuthStore: (selector?: (s: typeof state) => unknown) => (selector ? selector(state) : state), + }; +}); + +const accountState = { getAccountById: () => undefined }; +vi.mock('@/stores/account-store', () => ({ + useAccountStore: Object.assign( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (selector: any) => (selector ? selector(accountState) : accountState), + { getState: () => accountState }, + ), +})); + +const makeEmail = (overrides: Partial = {}): Email => ({ + id: 'email-1', + threadId: 'thread-1', + mailboxIds: { archive: true }, + keywords: { $seen: true }, + size: 1000, + receivedAt: '2024-01-15T10:00:00Z', + from: [{ name: 'Alice', email: 'alice@example.com' }], + subject: 'Invoice', + hasAttachment: false, + // Stamped by the all-folders search fan-out (searchAcrossAccounts). + sourceFolder: 'Archive', + ...overrides, +}); + +function renderThread(emails: Email[]) { + const [thread] = groupEmailsByThread(emails); + return render( + {}} + onEmailSelect={() => {}} + />, + ); +} + +const single = () => [makeEmail()]; +const conversation = () => [ + makeEmail({ id: 'email-1', receivedAt: '2024-01-15T10:00:00Z' }), + makeEmail({ id: 'email-2', receivedAt: '2024-01-16T10:00:00Z' }), +]; + +describe('ThreadListItem folder chip in search results (#1172)', () => { + beforeEach(() => { + useUIStore.setState({ isMobile: false, isTablet: false, isDesktop: true }); + useSettingsStore.setState({ + emailKeywords: [...DEFAULT_KEYWORDS], + showPreview: false, + mailLayout: 'split', + interfaceLayout: 'default', + }); + useEmailStore.setState({ + selectedEmailKeys: new Set(), + selectedMailbox: 'inbox', + isUnifiedView: false, + selectedKeyword: null, + searchQuery: '', + searchFilters: { ...DEFAULT_SEARCH_FILTERS }, + searchMailboxId: '', + }); + }); + + describe.each([ + ['single message', single], + ['conversation', conversation], + ])('%s row', (_label, emails) => { + it('shows the folder when the search covers all folders except Spam and Trash', () => { + useEmailStore.setState({ searchQuery: 'invoice', searchMailboxId: '' }); + renderThread(emails()); + expect(screen.getByTitle('Archive')).toBeTruthy(); + }); + + it('shows the folder when the search covers all folders', () => { + useEmailStore.setState({ searchQuery: 'invoice', searchMailboxId: SEARCH_SCOPE_ALL_FOLDERS }); + renderThread(emails()); + expect(screen.getByTitle('Archive')).toBeTruthy(); + }); + + it('shows the folder when only advanced filters drive the search', () => { + useEmailStore.setState({ + searchFilters: { ...DEFAULT_SEARCH_FILTERS, from: 'alice' }, + searchMailboxId: '', + }); + renderThread(emails()); + expect(screen.getByTitle('Archive')).toBeTruthy(); + }); + + it('hides the folder when the search is scoped to one folder', () => { + useEmailStore.setState({ searchQuery: 'invoice', searchMailboxId: 'archive' }); + renderThread(emails()); + expect(screen.queryByTitle('Archive')).toBeNull(); + }); + + it('hides the folder outside a search', () => { + renderThread(emails()); + expect(screen.queryByTitle('Archive')).toBeNull(); + }); + + it('still shows the folder in the unified view', () => { + useEmailStore.setState({ isUnifiedView: true }); + renderThread(emails()); + expect(screen.getByTitle('Archive')).toBeTruthy(); + }); + }); +}); diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index b9ce054bd..95d7c3bff 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -18,7 +18,7 @@ import { useShallow } from "zustand/react/shallow"; import { useEffectiveMailLayout } from "@/hooks/use-effective-mail-layout"; import { accountTintKey, generateAvatarColor } from "@/lib/account-utils"; import { useUIStore } from "@/stores/ui-store"; -import { useEmailStore } from "@/stores/email-store"; +import { useEmailStore, isUnscopedSearchActive } from "@/stores/email-store"; import { useAccountStore, type AccountEntry } from "@/stores/account-store"; import { emailKeyFor, getThreadTagIds, getEmailTagIds } from "@/lib/thread-utils"; import { useKeywordFormat } from "@/hooks/use-keyword-format"; @@ -249,6 +249,15 @@ function SourceFolderTag({ name }: { name: string }) { ); } +/** + * Whether rows show their folder chip: in the aggregate "All …" views, and in + * search results that span every folder rather than the one picked in the + * search panel (#1172). Rows of a single-folder list carry no sourceFolder. + */ +function useShowSourceFolder(): boolean { + return useEmailStore((state) => state.isUnifiedView || isUnscopedSearchActive(state)); +} + /** * How many messages a collapsed thread stands for. * @@ -368,7 +377,7 @@ const SingleEmailItem = React.forwardRef( const interfaceLayout = useSettingsStore((state) => state.interfaceLayout); const hideJunkAvatarImages = currentMailboxRole === 'junk' && !showAvatarsInJunk; // Show the originating folder in the aggregate "All …" views. - const showSourceFolder = isUnifiedView && !!email.sourceFolder; + const showSourceFolder = useShowSourceFolder() && !!email.sourceFolder; const getAccountById = useAccountStore((state) => state.getAccountById); const account = email.accountId ? getAccountById(email.accountId) : undefined; const accountColor = account?.avatarColor; @@ -923,7 +932,7 @@ export const ThreadListItem = React.forwardRef state.getAccountById); const threadAccount = latestEmail.accountId ? getAccountById(latestEmail.accountId) : undefined; const threadAccountColor = threadAccount?.avatarColor; diff --git a/stores/email-store.ts b/stores/email-store.ts index 177fe04a7..14049f158 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -1569,7 +1569,7 @@ export function buildTagViewAccountClients(passedClient: IJMAPClient): UnifiedAc * with their source account (#1082). A search scoped to one folder stays * single-account. */ -function isUnscopedSearchActive( +export function isUnscopedSearchActive( s: Pick, ): boolean { return !s.isUnifiedView && isAllFoldersSearchScope(s.searchMailboxId) && (!!s.searchQuery || !isFilterEmpty(s.searchFilters)); From 3fd93df4b2d024c085923547c9b28f10dbf10809 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:29:19 +0200 Subject: [PATCH 038/238] feat: extend the message selection with shift+arrow keys #992 --- components/email/email-list.tsx | 9 +++ components/mail/mail-app.tsx | 6 ++ .../__tests__/use-keyboard-shortcuts.test.ts | 49 +++++++++++++++ hooks/use-keyboard-shortcuts.ts | 17 ++++- locales/ar/common.json | 3 +- locales/ca/common.json | 3 +- locales/cs/common.json | 3 +- locales/da/common.json | 3 +- locales/de/common.json | 3 +- locales/en/common.json | 3 +- locales/es/common.json | 3 +- locales/fa/common.json | 3 +- locales/fr/common.json | 3 +- locales/he/common.json | 3 +- locales/hu/common.json | 3 +- locales/it/common.json | 3 +- locales/ja/common.json | 3 +- locales/ko/common.json | 3 +- locales/lv/common.json | 3 +- locales/mn/common.json | 3 +- locales/nb/common.json | 3 +- locales/nl/common.json | 3 +- locales/pl/common.json | 3 +- locales/pt/common.json | 3 +- locales/ro/common.json | 3 +- locales/ru/common.json | 3 +- locales/sk/common.json | 3 +- locales/tr/common.json | 3 +- locales/uk/common.json | 3 +- locales/zh-TW/common.json | 3 +- locales/zh/common.json | 3 +- stores/__tests__/email-selection.test.ts | 63 +++++++++++++++++++ stores/email-store.ts | 56 ++++++++++++++++- 33 files changed, 250 insertions(+), 31 deletions(-) diff --git a/components/email/email-list.tsx b/components/email/email-list.tsx index 394384fc0..42914a057 100644 --- a/components/email/email-list.tsx +++ b/components/email/email-list.tsx @@ -683,6 +683,15 @@ export function EmailList({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedEmailId]); + // Keep the moving end of a Shift+Arrow range on screen (#992). + const selectionFocusKey = useEmailStore((state) => state.selectionFocus?.focus ?? null); + useEffect(() => { + if (!selectionFocusKey) return; + const index = threadGroups.findIndex((thread) => thread.emails.some((e) => emailKeyFor(e) === selectionFocusKey)); + if (index >= 0) virtualizer.scrollToIndex(index, { align: 'auto' }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selectionFocusKey]); + // Re-measure all items when density or preview settings change useEffect(() => { virtualizer.measure(); diff --git a/components/mail/mail-app.tsx b/components/mail/mail-app.tsx index 170d9c29a..2672d322e 100644 --- a/components/mail/mail-app.tsx +++ b/components/mail/mail-app.tsx @@ -1007,6 +1007,12 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { onDeselectAll: () => { clearSelection(); }, + // Shift + ↓/↑ (and Shift + j/k): grow or shrink the ticked range from the + // open message without opening each row on the way. (#992) + onExtendSelection: (direction: 1 | -1) => { + if (isScheduledView) return; + useEmailStore.getState().extendSelection(direction); + }, // `x` under Mountain View: put the focused conversation in or out of the // selection. Only reachable there, where `x` is handed over from thread // expansion. diff --git a/hooks/__tests__/use-keyboard-shortcuts.test.ts b/hooks/__tests__/use-keyboard-shortcuts.test.ts index 7074abc79..9d20d9e0b 100644 --- a/hooks/__tests__/use-keyboard-shortcuts.test.ts +++ b/hooks/__tests__/use-keyboard-shortcuts.test.ts @@ -41,3 +41,52 @@ describe('useKeyboardShortcuts: x toggles thread expansion', () => { expect(onToggleThreadExpansion).not.toHaveBeenCalled(); }); }); + +// #992: Shift + arrow (or j/k) extends the selection instead of moving to the +// next message; plain arrows still move. +describe('useKeyboardShortcuts: Shift + arrow extends the selection', () => { + function press(key: string, code: string, shiftKey: boolean) { + document.dispatchEvent(new KeyboardEvent('keydown', { key, code, shiftKey, bubbles: true })); + } + + it.each([ + ['ArrowDown', 'ArrowDown', 1], + ['ArrowUp', 'ArrowUp', -1], + ['J', 'KeyJ', 1], + ['K', 'KeyK', -1], + ] as const)('Shift + %s (%s) extends by %i', (key, code, direction) => { + const onExtendSelection = vi.fn(); + const onNextEmail = vi.fn(); + const onPreviousEmail = vi.fn(); + renderHook(() => + useKeyboardShortcuts({ + emails: [], + selectedEmailId: 'e1', + handlers: { onExtendSelection, onNextEmail, onPreviousEmail }, + }), + ); + + press(key, code, true); + + expect(onExtendSelection).toHaveBeenCalledWith(direction); + expect(onNextEmail).not.toHaveBeenCalled(); + expect(onPreviousEmail).not.toHaveBeenCalled(); + }); + + it('plain ArrowDown still moves to the next message', () => { + const onExtendSelection = vi.fn(); + const onNextEmail = vi.fn(); + renderHook(() => + useKeyboardShortcuts({ + emails: [], + selectedEmailId: 'e1', + handlers: { onExtendSelection, onNextEmail }, + }), + ); + + press('ArrowDown', 'ArrowDown', false); + + expect(onNextEmail).toHaveBeenCalledTimes(1); + expect(onExtendSelection).not.toHaveBeenCalled(); + }); +}); diff --git a/hooks/use-keyboard-shortcuts.ts b/hooks/use-keyboard-shortcuts.ts index 8c8579114..30e9de777 100644 --- a/hooks/use-keyboard-shortcuts.ts +++ b/hooks/use-keyboard-shortcuts.ts @@ -33,6 +33,8 @@ export interface KeyboardShortcutHandlers { // Selection onSelectAll?: () => void; onDeselectAll?: () => void; + /** Shift + ↓/j and Shift + ↑/k: grow or shrink the selection by one row. */ + onExtendSelection?: (direction: 1 | -1) => void; // Thread actions onToggleThreadExpansion?: () => void; @@ -174,13 +176,23 @@ export function useKeyboardShortcuts({ case "j": case "arrowdown": event.preventDefault(); - run("next-email", h.onNextEmail); + if (event.shiftKey && h.onExtendSelection) { + const extend = h.onExtendSelection; + run("extend-selection-down", () => extend(1)); + } else { + run("next-email", h.onNextEmail); + } break; case "k": case "arrowup": event.preventDefault(); - run("previous-email", h.onPreviousEmail); + if (event.shiftKey && h.onExtendSelection) { + const extend = h.onExtendSelection; + run("extend-selection-up", () => extend(-1)); + } else { + run("previous-email", h.onPreviousEmail); + } break; case "enter": @@ -396,6 +408,7 @@ export const KEYBOARD_SHORTCUTS = { { key: "?", description: "shortcuts.global.help" }, { key: "Shift + G", description: "shortcuts.global.refresh" }, { key: "Ctrl + A", description: "shortcuts.global.select_all" }, + { key: "Shift + ↓ / ↑", description: "shortcuts.global.extend_selection" }, ], threads: [ { key: "x", description: "shortcuts.threads.expand_collapse", layout: "default" }, diff --git a/locales/ar/common.json b/locales/ar/common.json index 0574e9019..b6333fac9 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -2625,7 +2625,8 @@ "help": "إظهار الاختصارات", "refresh": "تحديث الرسائل", "select_all": "تحديد الكل", - "global_search": "البحث في كل شيء" + "global_search": "البحث في كل شيء", + "extend_selection": "توسيع التحديد لأسفل / لأعلى" }, "threads": { "expand_collapse": "توسيع/طي المحادثة", diff --git a/locales/ca/common.json b/locales/ca/common.json index c37ce806e..166314246 100644 --- a/locales/ca/common.json +++ b/locales/ca/common.json @@ -2625,7 +2625,8 @@ "help": "Mostra les dreceres", "refresh": "Actualitza els correus", "select_all": "Selecciona-ho tot", - "global_search": "Cerca-ho tot" + "global_search": "Cerca-ho tot", + "extend_selection": "Amplia la selecció cap avall / amunt" }, "threads": { "expand_collapse": "Desplega/replega el fil", diff --git a/locales/cs/common.json b/locales/cs/common.json index b86d7b6c0..be1175d69 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -2625,7 +2625,8 @@ "help": "Zobrazit zkratky", "refresh": "Obnovit zprávy", "select_all": "Vybrat vše", - "global_search": "Hledat ve všem" + "global_search": "Hledat ve všem", + "extend_selection": "Rozšířit výběr dolů / nahoru" }, "threads": { "expand_collapse": "Rozbalit/sbalit vlákno", diff --git a/locales/da/common.json b/locales/da/common.json index d564cd684..5e47ee71b 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -2625,7 +2625,8 @@ "help": "Vis genveje", "refresh": "Opdatér e-mails", "select_all": "Vælg alle", - "global_search": "Søg i alt" + "global_search": "Søg i alt", + "extend_selection": "Udvid markering ned / op" }, "threads": { "expand_collapse": "Udvid/skjul tråd", diff --git a/locales/de/common.json b/locales/de/common.json index 3ef83bf87..c0876d03b 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -2625,7 +2625,8 @@ "help": "Tastaturkürzel anzeigen", "refresh": "E-Mails aktualisieren", "select_all": "Alle auswählen", - "global_search": "Alles durchsuchen" + "global_search": "Alles durchsuchen", + "extend_selection": "Auswahl nach unten / oben erweitern" }, "threads": { "expand_collapse": "Unterhaltung erweitern/einklappen", diff --git a/locales/en/common.json b/locales/en/common.json index bea47352e..68028cbff 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -2625,7 +2625,8 @@ "help": "Show shortcuts", "refresh": "Refresh emails", "select_all": "Select all", - "global_search": "Search everything" + "global_search": "Search everything", + "extend_selection": "Extend selection down / up" }, "threads": { "expand_collapse": "Expand/collapse thread", diff --git a/locales/es/common.json b/locales/es/common.json index 00af2bc88..9861f7bb3 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -2625,7 +2625,8 @@ "help": "Mostrar atajos", "refresh": "Actualizar correos", "select_all": "Seleccionar todo", - "global_search": "Buscar en todo" + "global_search": "Buscar en todo", + "extend_selection": "Ampliar la selección hacia abajo / arriba" }, "threads": { "expand_collapse": "Expandir/contraer conversación", diff --git a/locales/fa/common.json b/locales/fa/common.json index 8047731ff..15f3c42ce 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -2625,7 +2625,8 @@ "help": "نمایش میانبرها", "refresh": "بازنشانی ایمیل‌ها", "select_all": "انتخاب همه", - "global_search": "جستجو در همه جا" + "global_search": "جستجو در همه جا", + "extend_selection": "گسترش انتخاب به پایین / بالا" }, "threads": { "expand_collapse": "باز/بسته کردن رشته", diff --git a/locales/fr/common.json b/locales/fr/common.json index 6608cb9c3..7651271fe 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -2625,7 +2625,8 @@ "help": "Afficher les raccourcis", "refresh": "Actualiser les emails", "select_all": "Tout sélectionner", - "global_search": "Tout rechercher" + "global_search": "Tout rechercher", + "extend_selection": "Étendre la sélection vers le bas / le haut" }, "threads": { "expand_collapse": "Développer/réduire la conversation", diff --git a/locales/he/common.json b/locales/he/common.json index 852dd56b3..2a298f83c 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -2543,7 +2543,8 @@ "help": "הצג קיצורי דרך", "refresh": "רענן מיילים", "select_all": "בחר הכל", - "global_search": "חיפוש בכל מקום" + "global_search": "חיפוש בכל מקום", + "extend_selection": "הרחבת הבחירה למטה / למעלה" }, "threads": { "expand_collapse": "הרחב/כווץ את השרשור", diff --git a/locales/hu/common.json b/locales/hu/common.json index d680ae1b3..6edde12a6 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -2625,7 +2625,8 @@ "help": "Parancsok mutatása", "refresh": "E-mailek frissítése", "select_all": "Összes kijelölése", - "global_search": "Keresés mindenben" + "global_search": "Keresés mindenben", + "extend_selection": "Kijelölés bővítése lefelé / felfelé" }, "threads": { "expand_collapse": "Beszélgetés kibontása/összecsukása", diff --git a/locales/it/common.json b/locales/it/common.json index bb3de32e6..b19f0a543 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -2625,7 +2625,8 @@ "help": "Mostra scorciatoie", "refresh": "Aggiorna messaggi", "select_all": "Seleziona tutto", - "global_search": "Cerca ovunque" + "global_search": "Cerca ovunque", + "extend_selection": "Estendi la selezione in basso / in alto" }, "threads": { "expand_collapse": "Espandi/comprimi conversazione", diff --git a/locales/ja/common.json b/locales/ja/common.json index c4b4c64c9..bdd2cca20 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -2625,7 +2625,8 @@ "help": "ショートカットを表示", "refresh": "メールを更新", "select_all": "すべて選択", - "global_search": "すべてを検索" + "global_search": "すべてを検索", + "extend_selection": "選択範囲を下 / 上に広げる" }, "threads": { "expand_collapse": "スレッドの展開/折りたたみ", diff --git a/locales/ko/common.json b/locales/ko/common.json index 1f9ae6c00..aa75e5e85 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -2625,7 +2625,8 @@ "help": "단축키 보기", "refresh": "메일 새로고침", "select_all": "모두 선택", - "global_search": "전체 검색" + "global_search": "전체 검색", + "extend_selection": "선택 범위를 아래 / 위로 확장" }, "threads": { "expand_collapse": "대화 펼치기/접기", diff --git a/locales/lv/common.json b/locales/lv/common.json index 3b7b61d26..e91ecde6f 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -2625,7 +2625,8 @@ "help": "Rādīt īsinājumtaustiņus", "refresh": "Atsvaidzināt vēstules", "select_all": "Atlasīt visas", - "global_search": "Meklēt visā" + "global_search": "Meklēt visā", + "extend_selection": "Paplašināt atlasi uz leju / uz augšu" }, "threads": { "expand_collapse": "Izvērst/sairt sarunu", diff --git a/locales/mn/common.json b/locales/mn/common.json index a783015d8..b4b7e0d85 100644 --- a/locales/mn/common.json +++ b/locales/mn/common.json @@ -2625,7 +2625,8 @@ "help": "Товчлол харуулах", "refresh": "Имэйл сэргээх", "select_all": "Бүгдийг сонго", - "global_search": "Бүгдийг хайх" + "global_search": "Бүгдийг хайх", + "extend_selection": "Сонголтыг доош / дээш өргөтгөх" }, "threads": { "expand_collapse": "Хэлхээсийг дэлгэх/хумих", diff --git a/locales/nb/common.json b/locales/nb/common.json index bb5328de9..6d35a0a9e 100644 --- a/locales/nb/common.json +++ b/locales/nb/common.json @@ -2625,7 +2625,8 @@ "help": "Vis tastatursnarveier", "refresh": "Oppdater e-poster", "select_all": "Velg alle", - "global_search": "Søk i alt" + "global_search": "Søk i alt", + "extend_selection": "Utvid markeringen ned / opp" }, "threads": { "expand_collapse": "Utvid eller fold sammen tråden", diff --git a/locales/nl/common.json b/locales/nl/common.json index db6b242d4..2845b20d2 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -2625,7 +2625,8 @@ "help": "Sneltoetsen tonen", "refresh": "E-mails vernieuwen", "select_all": "Alles selecteren", - "global_search": "Alles doorzoeken" + "global_search": "Alles doorzoeken", + "extend_selection": "Selectie omlaag / omhoog uitbreiden" }, "threads": { "expand_collapse": "Gesprek uitklappen/inklappen", diff --git a/locales/pl/common.json b/locales/pl/common.json index d14172b27..e957fce90 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -2625,7 +2625,8 @@ "help": "Pokaż skróty", "refresh": "Odśwież wiadomości", "select_all": "Zaznacz wszystko", - "global_search": "Szukaj wszędzie" + "global_search": "Szukaj wszędzie", + "extend_selection": "Rozszerz zaznaczenie w dół / w górę" }, "threads": { "expand_collapse": "Rozwiń/zwiń wątek", diff --git a/locales/pt/common.json b/locales/pt/common.json index 784fd0456..6d92d4602 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -2625,7 +2625,8 @@ "help": "Mostrar atalhos", "refresh": "Atualizar e-mails", "select_all": "Selecionar todos", - "global_search": "Pesquisar em tudo" + "global_search": "Pesquisar em tudo", + "extend_selection": "Expandir a seleção para baixo / cima" }, "threads": { "expand_collapse": "Expandir/recolher conversa", diff --git a/locales/ro/common.json b/locales/ro/common.json index 6890d530c..f0cf6b503 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -2625,7 +2625,8 @@ "help": "Afișați comenzile rapide", "refresh": "Reîmprospătați e-mailurile", "select_all": "Selectează tot", - "global_search": "Caută în tot" + "global_search": "Caută în tot", + "extend_selection": "Extinde selecția în jos / în sus" }, "threads": { "expand_collapse": "Extindeți/reduceți firul de discuție", diff --git a/locales/ru/common.json b/locales/ru/common.json index 5df224fe4..2c4b9c474 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -2625,7 +2625,8 @@ "help": "Показать сочетания клавиш", "refresh": "Обновить письма", "select_all": "Выбрать все", - "global_search": "Искать везде" + "global_search": "Искать везде", + "extend_selection": "Расширить выделение вниз / вверх" }, "threads": { "expand_collapse": "Развернуть/свернуть цепочку", diff --git a/locales/sk/common.json b/locales/sk/common.json index b8ad26c65..216b75f86 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -2625,7 +2625,8 @@ "help": "Zobraziť skratky", "refresh": "Obnoviť e-maily", "select_all": "Vybrať všetko", - "global_search": "Hľadať všade" + "global_search": "Hľadať všade", + "extend_selection": "Rozšíriť výber nadol / nahor" }, "threads": { "expand_collapse": "Rozbaliť/zbaliť vlákno", diff --git a/locales/tr/common.json b/locales/tr/common.json index c76a6fb32..b40d8206f 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -2625,7 +2625,8 @@ "help": "Kısayolları göster", "refresh": "E-postaları yenile", "select_all": "Tümünü seç", - "global_search": "Her yerde ara" + "global_search": "Her yerde ara", + "extend_selection": "Seçimi aşağı / yukarı genişlet" }, "threads": { "expand_collapse": "İleti dizisini genişlet/daralt", diff --git a/locales/uk/common.json b/locales/uk/common.json index 3b507e5f2..580e25b0f 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -2625,7 +2625,8 @@ "help": "Показати ярлики", "refresh": "Оновити електронні листи", "select_all": "Вибрати все", - "global_search": "Шукати скрізь" + "global_search": "Шукати скрізь", + "extend_selection": "Розширити виділення вниз / вгору" }, "threads": { "expand_collapse": "Розгорнути/згорнути ланцюжок", diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index 7ec086cf6..593b9cfec 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -2625,7 +2625,8 @@ "help": "顯示快速鍵", "refresh": "重新整理郵件", "select_all": "全部選取", - "global_search": "全域搜尋" + "global_search": "全域搜尋", + "extend_selection": "向下 / 向上擴展選取" }, "threads": { "expand_collapse": "展開/收合對話串", diff --git a/locales/zh/common.json b/locales/zh/common.json index a735101ef..b8b0ab9c1 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -2625,7 +2625,8 @@ "help": "显示快捷方式", "refresh": "刷新邮件", "select_all": "全选", - "global_search": "全局搜索" + "global_search": "全局搜索", + "extend_selection": "向下 / 向上扩展选择" }, "threads": { "expand_collapse": "展开/折叠会话", diff --git a/stores/__tests__/email-selection.test.ts b/stores/__tests__/email-selection.test.ts index d46f0ff95..b5dbc7695 100644 --- a/stores/__tests__/email-selection.test.ts +++ b/stores/__tests__/email-selection.test.ts @@ -146,6 +146,69 @@ describe('email-store selection', () => { }); }); + // #992: Shift+Arrow grows the selection from the open message one row at a + // time and shrinks it again when the direction reverses. + describe('extendSelection', () => { + const keys = () => [...useEmailStore.getState().selectedEmailKeys].sort(); + + beforeEach(() => { + // Opening a message makes it the anchor, as selectEmail does. + useEmailStore.setState({ lastSelectedEmailKey: 'b', selectionFocus: null }); + }); + + it('selects the open message and the next one on the first press', () => { + useEmailStore.getState().extendSelection(1); + expect(keys()).toEqual(['b', 'c']); + }); + + it('keeps growing in the same direction', () => { + useEmailStore.getState().extendSelection(1); + useEmailStore.getState().extendSelection(1); + expect(keys()).toEqual(['b', 'c', 'd']); + }); + + it('shrinks back when the direction reverses', () => { + useEmailStore.getState().extendSelection(1); + useEmailStore.getState().extendSelection(1); + useEmailStore.getState().extendSelection(-1); + expect(keys()).toEqual(['b', 'c']); + }); + + it('crosses the anchor and grows the other way', () => { + useEmailStore.getState().extendSelection(1); + useEmailStore.getState().extendSelection(-1); + useEmailStore.getState().extendSelection(-1); + expect(keys()).toEqual(['a', 'b']); + }); + + it('stops at the end of the list', () => { + for (let i = 0; i < 10; i++) useEmailStore.getState().extendSelection(1); + expect(keys()).toEqual(['b', 'c', 'd', 'e']); + }); + + it('continues a shift-click range', () => { + useEmailStore.getState().selectRangeEmails({ id: 'd' }); + useEmailStore.getState().extendSelection(-1); + expect(keys()).toEqual(['b', 'c']); + }); + + it('walks list rows, taking a whole thread with its row', () => { + useEmailStore.setState({ + emails: ['t2', 'x', 't1', 'y'].map((id) => makeEmail(id, id.startsWith('t') ? 'thread-t' : `thread-${id}`)), + listRows: [ + { key: 'x', members: ['x'] }, + { key: 't2', members: ['t2', 't1'] }, + { key: 'y', members: ['y'] }, + ], + lastSelectedEmailKey: 'x', + }); + useEmailStore.getState().extendSelection(1); + expect(keys()).toEqual(['t1', 't2', 'x']); + useEmailStore.getState().extendSelection(-1); + expect(keys()).toEqual(['x']); + }); + }); + describe('selectAllEmails', () => { it('should select all emails', () => { useEmailStore.getState().selectAllEmails(); diff --git a/stores/email-store.ts b/stores/email-store.ts index 14049f158..e508ca6b3 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -283,7 +283,17 @@ interface EmailStore { /** Take the email, not its id: the id alone collides across accounts. */ toggleEmailSelection: (email: SelectableEmail) => void; selectRangeEmails: (target: SelectableEmail) => void; + /** + * Shift+Arrow (and Shift+J/K): grow or shrink the selection by one row, + * from the open or last ticked message, like a desktop mail client. (#992) + */ + extendSelection: (direction: 1 | -1) => void; lastSelectedEmailKey: string | null; + /** + * The moving end of a keyboard range and the anchor it was taken from. + * Only valid while the anchor is still lastSelectedEmailKey. + */ + selectionFocus: { anchor: string; focus: string } | null; /** * The message list's rows in screen order, each with the keys a click on it * selects. Shift-click ranges walk these, so a thread is in a range only @@ -2140,6 +2150,7 @@ export const useEmailStore = create((set, get) => ({ selectedEmailKeys: new Set(), retainedInViewIds: new Set(), lastSelectedEmailKey: null, + selectionFocus: null, listRows: null, hasMoreEmails: false, totalEmails: 0, @@ -2411,7 +2422,7 @@ export const useEmailStore = create((set, get) => ({ for (let i = Math.min(anchorRow, targetRow); i <= Math.max(anchorRow, targetRow); i++) { for (const key of listRows[i].members) newSelection.add(key); } - set({ selectedEmailKeys: newSelection }); + set({ selectedEmailKeys: newSelection, selectionFocus: { anchor: anchorKey, focus: targetKeyForRows } }); return; } } @@ -2425,7 +2436,48 @@ export const useEmailStore = create((set, get) => ({ for (let i = start; i <= end; i++) { newSelection.add(emailKeyFor(emails[i])); } - set({ selectedEmailKeys: newSelection }); + set({ selectedEmailKeys: newSelection, selectionFocus: { anchor: anchorKey, focus: targetKey } }); + }, + + extendSelection: (direction) => { + const { emails, listRows, lastSelectedEmailKey, selectedEmail, selectedEmailKeys, selectionFocus } = get(); + // Walk the rows on screen, as shift-click does; without them, the emails. + const rows: ListRow[] = listRows && listRows.length > 0 + ? listRows + : emails.map((e) => ({ key: emailKeyFor(e), members: [emailKeyFor(e)] })); + if (rows.length === 0) return; + const membersOf = (from: number, to: number) => { + const keys: string[] = []; + for (let i = Math.min(from, to); i <= Math.max(from, to); i++) keys.push(...rows[i].members); + return keys; + }; + + const anchorKey = lastSelectedEmailKey ?? (selectedEmail ? emailKeyFor(selectedEmail) : null); + const anchor = anchorKey ? findListRow(rows, anchorKey) : -1; + if (!anchorKey || anchor === -1) { + // Nothing to extend from: start with the row at the end the key points from. + const start = rows[direction > 0 ? 0 : rows.length - 1]; + set({ + selectedEmailKeys: new Set([...selectedEmailKeys, ...start.members]), + lastSelectedEmailKey: start.key, + selectionFocus: { anchor: start.key, focus: start.key }, + }); + return; + } + + // Continue the range this anchor already has, or begin one at the anchor. + const previous = selectionFocus && selectionFocus.anchor === anchorKey && selectedEmailKeys.size > 0 + ? findListRow(rows, selectionFocus.focus) + : -1; + const focus = previous === -1 ? anchor : previous; + const nextFocus = Math.max(0, Math.min(rows.length - 1, focus + direction)); + + const newSelection = new Set(selectedEmailKeys); + if (previous !== -1) { + for (const key of membersOf(anchor, previous)) newSelection.delete(key); + } + for (const key of membersOf(anchor, nextFocus)) newSelection.add(key); + set({ selectedEmailKeys: newSelection, selectionFocus: { anchor: anchorKey, focus: rows[nextFocus].key } }); }, selectAllEmails: () => { From 1c3cc35a7c7d850325550ee82d202de2488c29b0 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 01:38:12 +0200 Subject: [PATCH 039/238] feat: set the counter per folder, e.g. keep the Drafts count with totals off #982 --- .../sidebar-folder-count-modes.test.tsx | 69 +++++++++++++++++++ components/layout/sidebar.tsx | 21 ++++-- .../folder-settings-count-mode.test.tsx | 64 +++++++++++++++++ components/settings/folder-settings.tsx | 18 ++++- lib/__tests__/folder-counts.test.ts | 40 +++++++++++ lib/folder-counts.ts | 49 +++++++++++++ locales/ar/common.json | 5 ++ locales/ca/common.json | 5 ++ locales/cs/common.json | 5 ++ locales/da/common.json | 5 ++ locales/de/common.json | 5 ++ locales/en/common.json | 5 ++ locales/es/common.json | 5 ++ locales/fa/common.json | 5 ++ locales/fr/common.json | 5 ++ locales/he/common.json | 5 ++ locales/hu/common.json | 5 ++ locales/it/common.json | 5 ++ locales/ja/common.json | 5 ++ locales/ko/common.json | 5 ++ locales/lv/common.json | 5 ++ locales/mn/common.json | 5 ++ locales/nb/common.json | 5 ++ locales/nl/common.json | 5 ++ locales/pl/common.json | 5 ++ locales/pt/common.json | 5 ++ locales/ro/common.json | 5 ++ locales/ru/common.json | 5 ++ locales/sk/common.json | 5 ++ locales/tr/common.json | 5 ++ locales/uk/common.json | 5 ++ locales/zh-TW/common.json | 5 ++ locales/zh/common.json | 5 ++ stores/settings-store.ts | 4 ++ 34 files changed, 394 insertions(+), 6 deletions(-) create mode 100644 components/layout/__tests__/sidebar-folder-count-modes.test.tsx create mode 100644 components/settings/__tests__/folder-settings-count-mode.test.tsx create mode 100644 lib/__tests__/folder-counts.test.ts create mode 100644 lib/folder-counts.ts diff --git a/components/layout/__tests__/sidebar-folder-count-modes.test.tsx b/components/layout/__tests__/sidebar-folder-count-modes.test.tsx new file mode 100644 index 000000000..9625b729e --- /dev/null +++ b/components/layout/__tests__/sidebar-folder-count-modes.test.tsx @@ -0,0 +1,69 @@ +import { render, screen } from '@testing-library/react'; +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import type { Mailbox } from '@/lib/jmap/types'; + +// #982: the per-folder counter setting overrides the global total count. + +vi.mock('@/components/plugins/plugin-slot', () => ({ PluginSlot: () => null })); +vi.mock('@/components/tour/tour-provider', () => ({ + useTour: () => ({ startTour: vi.fn(), resetTourCompletion: vi.fn(), activeTour: null, endTour: vi.fn(), registerStep: vi.fn() }), +})); +vi.mock('@/contexts/drag-drop-context', () => ({ + useDragDropContext: () => ({ isDragging: false }), +})); +vi.mock('@/hooks/use-mailbox-drop', () => ({ + useMailboxDrop: () => ({ dropHandlers: {}, isValidDropTarget: false, isInvalidDropTarget: false }), +})); +vi.mock('@/hooks/use-tag-drop', () => ({ + useTagDrop: () => ({ dropHandlers: {}, isValidDropTarget: false }), +})); +vi.mock('../account-switcher', () => ({ AccountSwitcher: () => null })); + +const { Sidebar } = await import('../sidebar'); +const { useAuthStore } = await import('@/stores/auth-store'); +const { useSettingsStore } = await import('@/stores/settings-store'); + +const box = (id: string, name: string, role: string | null, extra: Partial = {}) => ({ + id, name, role, parentId: null, totalEmails: 0, unreadEmails: 0, myRights: { mayAddItems: true }, ...extra, +}) as unknown as Mailbox; + +const mailboxes: Mailbox[] = [ + box('inbox', 'Inbox', 'inbox', { totalEmails: 120, unreadEmails: 4 }), + box('drafts', 'Drafts', 'drafts', { totalEmails: 7 }), + box('news', 'News', null, { totalEmails: 30, unreadEmails: 2 }), +]; + +const counts = (mailboxId: string) => { + const row = screen.getAllByTestId('folder-row').find((el) => el.getAttribute('data-mailbox-id') === mailboxId)!; + const el = row.querySelector('[data-testid="folder-counts"]'); + return el ? { unread: el.getAttribute('data-unread'), total: el.getAttribute('data-total') } : null; +}; + +describe('Sidebar folder counter modes (#982)', () => { + beforeEach(() => { + useAuthStore.setState({ activeAccountId: 'login-a', client: { getAccountId: () => 'me', getCapabilities: () => ({}) } } as never); + useSettingsStore.setState({ + hideAccountSwitcher: true, + interfaceLayout: 'default', + showFolderTotalCount: false, + folderCountModes: {}, + } as never); + }); + + it('keeps the Drafts counter while total counts are off elsewhere', () => { + useSettingsStore.setState({ folderCountModes: { drafts: 'all' } } as never); + render(); + + expect(counts('drafts')).toEqual({ unread: '0', total: '7' }); + expect(counts('inbox')).toEqual({ unread: '4', total: '0' }); + }); + + it('hides one folder counter and limits another to unread with total counts on', () => { + useSettingsStore.setState({ showFolderTotalCount: true, folderCountModes: { news: 'none', inbox: 'unread' } } as never); + render(); + + expect(counts('news')).toBeNull(); + expect(counts('inbox')).toEqual({ unread: '4', total: '0' }); + expect(counts('drafts')).toEqual({ unread: '0', total: '7' }); + }); +}); diff --git a/components/layout/sidebar.tsx b/components/layout/sidebar.tsx index 4852587a9..4a11dc6fa 100644 --- a/components/layout/sidebar.tsx +++ b/components/layout/sidebar.tsx @@ -88,6 +88,7 @@ import { type NotificationMutes, } from "@/lib/notification-mutes"; import { serverSupportsEmailPush } from "@/lib/web-push"; +import { resolveFolderCounts } from "@/lib/folder-counts"; interface SidebarProps { mailboxes: Mailbox[]; @@ -210,34 +211,43 @@ function SidebarRowCounts({ unread, total, role, + mailboxId, onUnreadClick, }: { unread?: number; total?: number; role?: string | null; + mailboxId?: string; isSelected: boolean; onUnreadClick?: () => void; }) { const showFolderTotalCount = useSettingsStore(s => s.showFolderTotalCount); const mountainView = useSettingsStore(s => s.interfaceLayout === 'mountain-view'); + // Per-folder override from the folder settings (#982). + const countMode = useSettingsStore(s => (mailboxId ? s.folderCountModes?.[mailboxId] : undefined)); + const counts = resolveFolderCounts({ + unread, total, role, mode: countMode, + showTotalGlobally: showFolderTotalCount, mountainView, + }); // Mountain View counts one thing per row: what is unread, or for Drafts, // how many there are, since a draft is never unread. if (mountainView) { - const count = role === 'drafts' ? (total ?? 0) : (unread ?? 0); + const showsTotal = counts.total > 0; + const count = showsTotal ? counts.total : counts.unread; if (count === 0) return null; return ( {count.toLocaleString()} ); } - const unreadCount = unread ?? 0; - const totalCount = showFolderTotalCount ? (total ?? 0) : 0; + const unreadCount = counts.unread; + const totalCount = counts.total; if (unreadCount === 0 && totalCount === 0) return null; @@ -426,6 +436,7 @@ function SidebarRow({ unread={unread} total={total} role={testRole} + mailboxId={testMailboxId} isSelected={isSelected} onUnreadClick={onUnreadClick} /> diff --git a/components/settings/__tests__/folder-settings-count-mode.test.tsx b/components/settings/__tests__/folder-settings-count-mode.test.tsx new file mode 100644 index 000000000..154d15908 --- /dev/null +++ b/components/settings/__tests__/folder-settings-count-mode.test.tsx @@ -0,0 +1,64 @@ +import { fireEvent, render, screen } from '@testing-library/react'; +import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { FolderSettings } from '../folder-settings'; +import { useEmailStore } from '@/stores/email-store'; +import { useAuthStore } from '@/stores/auth-store'; +import { useSettingsStore } from '@/stores/settings-store'; +import type { Mailbox } from '@/lib/jmap/types'; + +// #982: each folder row has a counter select that stores a per-folder override. + +vi.mock('../settings-section', async (importOriginal) => ({ + ...(await importOriginal()), + SettingsSection: ({ children }: { children: React.ReactNode }) =>
{children}
, +})); + +function makeMailbox(overrides: Partial): Mailbox { + return { + id: 'mb', + name: 'Folder', + sortOrder: 0, + totalEmails: 0, + unreadEmails: 0, + totalThreads: 0, + unreadThreads: 0, + myRights: { + mayReadItems: true, + mayAddItems: true, + mayRemoveItems: true, + maySetSeen: true, + maySetKeywords: true, + mayCreateChild: true, + mayRename: true, + mayDelete: true, + maySubmit: true, + }, + isSubscribed: true, + isShared: false, + ...overrides, + } as Mailbox; +} + +describe('FolderSettings counter mode (#982)', () => { + beforeEach(() => { + useAuthStore.setState({ client: null } as never); + useSettingsStore.setState({ folderCountModes: { other: 'none' } } as never); + useEmailStore.setState({ + mailboxes: [makeMailbox({ id: 'drafts', name: 'Drafts', role: 'drafts' })], + fetchMailboxes: vi.fn(), + } as never); + }); + + it('stores the chosen mode for the folder and removes it again on default', () => { + render(); + const select = screen.getByRole('combobox', { name: /count_mode/ }) as HTMLSelectElement; + expect(select.value).toBe(''); + + fireEvent.change(select, { target: { value: 'all' } }); + expect(useSettingsStore.getState().folderCountModes).toEqual({ other: 'none', drafts: 'all' }); + expect(select.value).toBe('all'); + + fireEvent.change(select, { target: { value: '' } }); + expect(useSettingsStore.getState().folderCountModes).toEqual({ other: 'none' }); + }); +}); diff --git a/components/settings/folder-settings.tsx b/components/settings/folder-settings.tsx index 955114756..64cf6ade0 100644 --- a/components/settings/folder-settings.tsx +++ b/components/settings/folder-settings.tsx @@ -32,6 +32,7 @@ import { sortableKeyboardCoordinates, } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; +import { isFolderCountMode } from '@/lib/folder-counts'; // Must match the per-level indentation used in the row styles below: dragging // a folder this many pixels right/left targets one nesting level deeper/higher. @@ -164,7 +165,7 @@ export function FolderSettings() { useSensor(PointerSensor, { activationConstraint: { distance: 5 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }), ); - const { folderIcons, setFolderIcon } = useSettingsStore(); + const { folderIcons, setFolderIcon, folderCountModes, updateSetting } = useSettingsStore(); const { isFeatureEnabled } = usePolicyStore(); const folderIconsAllowed = isFeatureEnabled('folderIconsEnabled'); @@ -719,6 +720,21 @@ export function FolderSettings() { )}
+ update(i, { oauthEndSessionUrl: e.target.value })} + placeholder="https://auth.example.com/logout" + className="h-8 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" + /> +

+ Where signing out sends the browser to end the provider's session, instead of the end_session_endpoint from discovery. Set it for providers that advertise none, such as Stalwart. Must be https. +

+
)}
diff --git a/app/(main)/admin/_tabs/auth.tsx b/app/(main)/admin/_tabs/auth.tsx index 7d28e969b..730111def 100644 --- a/app/(main)/admin/_tabs/auth.tsx +++ b/app/(main)/admin/_tabs/auth.tsx @@ -296,7 +296,8 @@ export function AuthTab() {
- + +
diff --git a/app/api/auth/token/route.ts b/app/api/auth/token/route.ts index 963179dc8..0631a5399 100644 --- a/app/api/auth/token/route.ts +++ b/app/api/auth/token/route.ts @@ -70,17 +70,26 @@ async function revokeRefreshToken(token: string, serverId: string | null, metada } } -/** The provider logout URL for a slot being signed out, or null when there is none to visit. */ +/** + * The provider logout URL for a slot being signed out, or null when there is + * none to visit. A logout URL the admin configured (#1279) goes before the + * discovered one: it is there for providers that advertise none, such as + * Stalwart, and for a logout page shared with other apps, which must keep + * working once the provider starts advertising its own. + */ function endSessionUrlFor(metadata: OAuthMetadata | null, serverId: string | null, idToken: string | undefined): string | null { - if (!metadata?.end_session_endpoint || !isEndSessionEnabled()) return null; + if (!isEndSessionEnabled()) return null; let clientId: string; + let configuredEndpoint: string | undefined; try { - ({ clientId } = getRequiredConfig(serverId)); + ({ clientId, endSessionUrl: configuredEndpoint } = getRequiredConfig(serverId)); } catch { return null; } + const endpoint = configuredEndpoint || metadata?.end_session_endpoint; + if (!endpoint) return null; return buildEndSessionUrl({ - endpoint: metadata.end_session_endpoint, + endpoint, clientId, idToken, postLogoutRedirectUri: getPostLogoutRedirectUri(), @@ -265,7 +274,7 @@ export async function PUT(request: NextRequest) { /** * Revoke a slot's refresh token and clear its token cookies. With * `endSession`, also returns the URL that ends the provider's session, or null - * when the provider has no usable end_session_endpoint. + * when there is no usable logout URL. */ async function signOutSlot( cookieStore: CookieStore, diff --git a/lib/__tests__/oauth-issuer-precedence.test.ts b/lib/__tests__/oauth-issuer-precedence.test.ts index 58d8ad9a9..5858d3bf3 100644 --- a/lib/__tests__/oauth-issuer-precedence.test.ts +++ b/lib/__tests__/oauth-issuer-precedence.test.ts @@ -25,6 +25,13 @@ const SERVERS = [ url: 'https://mx3.example.com', oauth: { issuerUrl: 'https://idp3.example.com' }, }, + { + id: 'mx4', + label: 'Server 4', + url: 'https://mx4.example.com', + oauth: { endSessionUrl: ' https://mx4.example.com/logout/ ' }, + }, + { id: 'mx5', label: 'Server 5', url: 'https://mx5.example.com', oauth: { endSessionUrl: 'logout' } }, ]; vi.mock('@/lib/admin/config-manager', () => ({ @@ -64,3 +71,30 @@ describe('SSO discovery issuer precedence (#952)', () => { expect(getRequiredConfig('unknown').discoveryUrl).toBe('https://idp1.example.com'); }); }); + +describe('configured end-session URL precedence (#1279)', () => { + beforeEach(() => { + vi.stubEnv('JMAP_SERVER_URL', 'https://mx1.example.com'); + vi.stubEnv('OAUTH_CLIENT_ID', 'client'); + vi.stubEnv('OAUTH_END_SESSION_URL', 'https://idp1.example.com/logout'); + }); + + afterEach(() => { + vi.unstubAllEnvs(); + }); + + it('uses the selected server\'s own logout URL, as written', () => { + // A trailing slash is part of some providers' logout path. + expect(getRequiredConfig('mx4').endSessionUrl).toBe('https://mx4.example.com/logout/'); + }); + + it('does not give a server entry the global logout URL', () => { + expect(getRequiredConfig('mx2').endSessionUrl).toBeUndefined(); + expect(getRequiredConfig('mx5').endSessionUrl).toBeUndefined(); + }); + + it('uses the global logout URL when no server entry matched', () => { + expect(getRequiredConfig(null).endSessionUrl).toBe('https://idp1.example.com/logout'); + expect(getRequiredConfig('unknown').endSessionUrl).toBe('https://idp1.example.com/logout'); + }); +}); diff --git a/lib/__tests__/oauth-token-route.test.ts b/lib/__tests__/oauth-token-route.test.ts index b915acb54..d220afc01 100644 --- a/lib/__tests__/oauth-token-route.test.ts +++ b/lib/__tests__/oauth-token-route.test.ts @@ -611,6 +611,52 @@ describe('oauth token route - sign-out (#905)', () => { expect(body.end_session_url).toBeUndefined(); }); + // Stalwart's built-in provider advertises no end_session_endpoint (#1279). + it('builds the provider logout from the configured URL when discovery has none', async () => { + seedSlot(0); + getMetadata.mockResolvedValue({ ...KEYCLOAK, end_session_endpoint: undefined }); + getRequiredConfig.mockReturnValue({ clientId: 'webmail', endSessionUrl: 'https://mail.example.org/logout/' }); + configValues.oauthPostLogoutRedirectUri = 'https://mail.example.com/en/login'; + + const { body } = await callRoute('DELETE', { slot: '0', end_session: 'true' }); + + const url = new URL(body.end_session_url as string); + expect(`${url.origin}${url.pathname}`).toBe('https://mail.example.org/logout/'); + expect(url.searchParams.get('client_id')).toBe('webmail'); + expect(url.searchParams.get('id_token_hint')).toBe(ID_TOKEN); + expect(url.searchParams.get('post_logout_redirect_uri')).toBe('https://mail.example.com/en/login'); + }); + + it('prefers the configured logout URL over the discovered one', async () => { + seedSlot(0); + getRequiredConfig.mockReturnValue({ clientId: 'webmail', endSessionUrl: 'https://sso.example.com/logout' }); + + const { body } = await callRoute('DELETE', { slot: '0', end_session: 'true' }); + + const url = new URL(body.end_session_url as string); + expect(`${url.origin}${url.pathname}`).toBe('https://sso.example.com/logout'); + }); + + it('does not use the configured logout URL when the admin turned provider logout off', async () => { + seedSlot(0); + getRequiredConfig.mockReturnValue({ clientId: 'webmail', endSessionUrl: 'https://sso.example.com/logout' }); + configValues.oauthEndSession = false; + + const { body } = await callRoute('DELETE', { slot: '0', end_session: 'true' }); + + expect(body.end_session_url).toBeUndefined(); + }); + + it('does not offer a configured logout URL over plain http', async () => { + seedSlot(0); + getMetadata.mockResolvedValue({ ...KEYCLOAK, end_session_endpoint: undefined }); + getRequiredConfig.mockReturnValue({ clientId: 'webmail', endSessionUrl: 'http://mail.example.org/logout' }); + + const { body } = await callRoute('DELETE', { slot: '0', end_session: 'true' }); + + expect(body.end_session_url).toBeUndefined(); + }); + it.each([ ['non-https', 'http://id.example.com/logout'], ['malformed', 'not a url'], diff --git a/lib/admin/jmap-servers.ts b/lib/admin/jmap-servers.ts index aa79b727a..d78f05d60 100644 --- a/lib/admin/jmap-servers.ts +++ b/lib/admin/jmap-servers.ts @@ -8,6 +8,8 @@ export interface JmapServerOAuthConfig { clientSecret?: string; /** Text of this server's sign-in button, e.g. "Sign in with Google"; the generic SSO label otherwise. */ buttonLabel?: string; + /** The provider's logout URL, used instead of a discovered end_session_endpoint (#1279). Never sent to the browser. */ + endSessionUrl?: string; } export interface JmapServerEntry { @@ -82,12 +84,15 @@ export function parseJmapServers(raw: unknown): JmapServerEntry[] { const issuerUrl = typeof o.issuerUrl === 'string' ? trimUrl(o.issuerUrl) : ''; const clientSecret = typeof o.clientSecret === 'string' ? o.clientSecret : ''; const buttonLabel = typeof o.buttonLabel === 'string' ? o.buttonLabel.trim().slice(0, 64) : ''; - if (clientId || issuerUrl || clientSecret) { + // Kept as written: some providers' logout path ends in a slash. + const endSessionUrl = typeof o.endSessionUrl === 'string' ? o.endSessionUrl.trim() : ''; + if (clientId || issuerUrl || clientSecret || endSessionUrl) { oauth = {}; if (clientId) oauth.clientId = clientId; if (issuerUrl && isHttpUrl(issuerUrl)) oauth.issuerUrl = issuerUrl; if (clientSecret) oauth.clientSecret = clientSecret; if (buttonLabel) oauth.buttonLabel = buttonLabel; + if (endSessionUrl && isHttpUrl(endSessionUrl)) oauth.endSessionUrl = endSessionUrl; } } out.push({ diff --git a/lib/admin/types.ts b/lib/admin/types.ts index 8e17ce6f0..758f00125 100644 --- a/lib/admin/types.ts +++ b/lib/admin/types.ts @@ -266,6 +266,11 @@ export const CONFIG_ENV_MAP: Record('oauthEndSessionUrl', '') || process.env.OAUTH_END_SESSION_URL)?.trim() || undefined; + return { clientId, serverUrl, discoveryUrl, serverId: entry?.id, endSessionUrl }; } export function getClientSecret(serverId?: string | null): string { From 8e7245b26c3608632d15b234ec18e41d4389302a Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 13:46:49 +0200 Subject: [PATCH 056/238] feat: let the theme policy set and lock the color mode #1280 --- app/(main)/[locale]/login/page.tsx | 10 +- app/(main)/admin/_tabs/themes.tsx | 44 ++++++- .../__tests__/command-palette.test.tsx | 11 ++ .../command-palette/command-palette.tsx | 14 ++- .../appearance-settings-color-mode.test.tsx | 38 ++++++ components/settings/appearance-settings.tsx | 4 +- lib/admin/types.ts | 8 ++ .../theme-store-color-mode-policy.test.ts | 112 ++++++++++++++++++ stores/policy-store.ts | 18 ++- stores/settings-store.ts | 7 +- stores/theme-store.ts | 50 +++++++- 11 files changed, 298 insertions(+), 18 deletions(-) create mode 100644 components/settings/__tests__/appearance-settings-color-mode.test.tsx create mode 100644 stores/__tests__/theme-store-color-mode-policy.test.ts diff --git a/app/(main)/[locale]/login/page.tsx b/app/(main)/[locale]/login/page.tsx index a4ee53ec8..f42a930b0 100644 --- a/app/(main)/[locale]/login/page.tsx +++ b/app/(main)/[locale]/login/page.tsx @@ -9,6 +9,7 @@ import { Input } from "@/components/ui/input"; import { useAuthStore, consumeSignedOut } from "@/stores/auth-store"; import { useAccountStore } from "@/stores/account-store"; import { useThemeStore } from "@/stores/theme-store"; +import { usePolicyStore } from "@/stores/policy-store"; import { useShallow } from "zustand/react/shallow"; import { useConfig } from "@/hooks/use-config"; import { useMenuNavigation } from "@/hooks/use-menu-navigation"; @@ -161,6 +162,7 @@ function LoginPageContent() { const { theme, setTheme, initializeTheme } = useThemeStore(useShallow((s) => ({ theme: s.theme, setTheme: s.setTheme, initializeTheme: s.initializeTheme }))); const { appName, jmapServerUrl: configuredServerUrl, oauthEnabled, oauthOnly, oauthClientId: globalOauthClientId, oauthIssuerUrl: globalOauthIssuerUrl, oauthScopes, rememberMeEnabled, devMode, demoMode, loginLogoLightUrl, loginLogoDarkUrl, loginCompanyName, loginImprintUrl, loginPrivacyPolicyUrl, loginWebsiteUrl, loginLogoMaxHeight, loginLogoMaxWidth, loginShowHeading, loginShowSubtitle, loginShowTotp, loginShowTokenLogin, loginShowRememberMe, loginShowVersion, isLoading: configLoading, error: configError, autoSsoEnabled, embeddedMode: _embeddedMode, allowCustomJmapEndpoint, jmapServers, jmapServerAutoPickByDomain } = useConfig(); const resolvedTheme = useThemeStore((s) => s.resolvedTheme); + const colorModeLocked = usePolicyStore((s) => s.getColorModePolicy().locked); // Login logo sizing: when a max height/width is configured, drop the fixed // 64×64 box so the logo (e.g. a wide wordmark) can render at its true size. @@ -956,8 +958,8 @@ function LoginPageContent() { if (demoMode && !isAddAccountMode) { return (
- {/* Theme toggle */} -
+ {/* Theme toggle, hidden while the theme policy locks the mode (#1280) */} + +
+
+ Default Color Mode +

Light, dark or system for users who have not picked one

+
+ +
+ +
+
+ Lock Color Mode +

Everyone gets the default color mode and cannot switch it in settings, on the login page or in the command palette

+
+ +
+
Built-in Themes
diff --git a/components/command-palette/__tests__/command-palette.test.tsx b/components/command-palette/__tests__/command-palette.test.tsx index b7869b0bb..cc87ef4b1 100644 --- a/components/command-palette/__tests__/command-palette.test.tsx +++ b/components/command-palette/__tests__/command-palette.test.tsx @@ -22,6 +22,8 @@ vi.mock('@/components/keyboard-shortcuts-modal', () => ({ const { CommandPaletteHost } = await import('../command-palette'); const { useAuthStore } = await import('@/stores/auth-store'); const { useThemeStore } = await import('@/stores/theme-store'); +const { usePolicyStore } = await import('@/stores/policy-store'); +const { DEFAULT_POLICY, DEFAULT_THEME_POLICY } = await import('@/lib/admin/types'); const appCommands = await import('@/lib/app-commands'); const dispatch = vi.fn().mockResolvedValue(undefined); @@ -35,6 +37,7 @@ beforeEach(() => { dispatch.mockClear(); setActionDispatcher(dispatch); useAuthStore.setState({ isAuthenticated: true, client: null } as never); + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY } }); }); afterEach(() => { appCommands.parkAppCommand(null as never); @@ -171,4 +174,12 @@ describe('command palette', () => { act(() => { fireEvent.click(screen.getByRole('option', { name: 'shortcuts' })); }); expect(screen.getByText('shortcuts help')).toBeInTheDocument(); }); + + it('offers no theme switch while the theme policy locks the color mode (#1280)', () => { + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY, themePolicy: { ...DEFAULT_THEME_POLICY, lockColorMode: true } } }); + render(); + pressCtrlK(); + expect(screen.queryByRole('option', { name: /^theme_/ })).toBeNull(); + expect(screen.getByRole('option', { name: 'shortcuts' })).toBeInTheDocument(); + }); }); diff --git a/components/command-palette/command-palette.tsx b/components/command-palette/command-palette.tsx index d3c4b8d4d..da8eb004d 100644 --- a/components/command-palette/command-palette.tsx +++ b/components/command-palette/command-palette.tsx @@ -103,6 +103,7 @@ function CommandPalette({ onClose, onShowShortcuts }: { onClose: () => void; onS const client = useAuthStore((s) => s.client); const supportsCalendar = useCalendarStore((s) => s.supportsCalendar); const isFeatureEnabled = usePolicyStore((s) => s.isFeatureEnabled); + const colorModeLocked = usePolicyStore((s) => s.getColorModePolicy().locked); const resolvedTheme = useThemeStore((s) => s.resolvedTheme); const pluginActions = usePluginActions(surface); @@ -132,15 +133,18 @@ function CommandPalette({ onClose, onShowShortcuts }: { onClose: () => void; onS { id: "go-settings", group: "navigation", icon: Settings, label: t("go_to", { name: tSidebar("settings") }), run: go("/settings") }, { id: "compose", group: "actions", icon: PenLine, label: t("compose"), run: onMail("compose") }, { id: "search", group: "actions", icon: Search, label: t("search"), run: onMail("search") }, - { + ); + // The theme policy can pin the color mode (#1280). + if (!colorModeLocked) { + list.push({ id: "theme", group: "actions", icon: resolvedTheme === "dark" ? Sun : Moon, label: resolvedTheme === "dark" ? t("theme_light") : t("theme_dark"), run: () => useThemeStore.getState().setTheme(resolvedTheme === "dark" ? "light" : "dark"), - }, - { id: "shortcuts", group: "actions", icon: Keyboard, label: t("shortcuts"), run: onShowShortcuts }, - ); + }); + } + list.push({ id: "shortcuts", group: "actions", icon: Keyboard, label: t("shortcuts"), run: onShowShortcuts }); for (const action of pluginActions) { list.push({ id: `plugin:${action.pluginId}:${action.id}`, @@ -152,7 +156,7 @@ function CommandPalette({ onClose, onShowShortcuts }: { onClose: () => void; onS }); } return list; - }, [client, supportsCalendar, isFeatureEnabled, resolvedTheme, pluginActions, router, t, tSidebar, onShowShortcuts]); + }, [client, supportsCalendar, isFeatureEnabled, colorModeLocked, resolvedTheme, pluginActions, router, t, tSidebar, onShowShortcuts]); const needle = query.trim().toLowerCase(); const visible = needle diff --git a/components/settings/__tests__/appearance-settings-color-mode.test.tsx b/components/settings/__tests__/appearance-settings-color-mode.test.tsx new file mode 100644 index 000000000..a3a71ee52 --- /dev/null +++ b/components/settings/__tests__/appearance-settings-color-mode.test.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import { render, within } from '@testing-library/react'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +// #1280: the theme policy can lock the light/dark/system mode. + +vi.mock('next-intl', () => ({ + useTranslations: (ns?: string) => (key: string) => (ns ? `${ns}.${key}` : key), +})); +vi.mock('@/components/tour/tour-provider', () => ({ + useTour: () => ({ startTour: vi.fn(), resetTourCompletion: vi.fn() }), +})); +vi.mock('../message-list-order-settings', () => ({ MessageListOrderSettings: () => null })); + +const { AppearanceSettings } = await import('../appearance-settings'); +const { usePolicyStore } = await import('@/stores/policy-store'); +const { DEFAULT_POLICY, DEFAULT_THEME_POLICY } = await import('@/lib/admin/types'); + +function renderModeItem() { + const { container } = render(); + return container.querySelector('[data-search-label="settings.appearance.theme.label"]') as HTMLElement; +} + +beforeEach(() => { + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY } }); +}); + +describe('appearance settings color mode (#1280)', () => { + it('shows the mode as managed while the theme policy locks it', () => { + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY, themePolicy: { ...DEFAULT_THEME_POLICY, lockColorMode: true } } }); + expect(within(renderModeItem()).getByLabelText('Managed by administrator')).toBeInTheDocument(); + }); + + it('leaves the mode to the user otherwise, even with a default', () => { + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY, themePolicy: { ...DEFAULT_THEME_POLICY, defaultColorMode: 'light' } } }); + expect(within(renderModeItem()).queryByLabelText('Managed by administrator')).toBeNull(); + }); +}); diff --git a/components/settings/appearance-settings.tsx b/components/settings/appearance-settings.tsx index df3020751..344574152 100644 --- a/components/settings/appearance-settings.tsx +++ b/components/settings/appearance-settings.tsx @@ -74,11 +74,11 @@ export function AppearanceSettings() { const { fontSize, density, animationsEnabled, senderFavicons, showAvatarsInJunk, showOnboardingOnNewDevices, updateSetting } = useSettingsStore(); const { startTour, resetTourCompletion } = useTour(); const refreshFavicons = useFaviconRefreshStore((s) => s.refresh); - const { isSettingLocked, isSettingHidden } = usePolicyStore(); + const { isSettingLocked, isSettingHidden, getColorModePolicy } = usePolicyStore(); return ( - + setTheme(value as 'light' | 'dark' | 'system')} diff --git a/lib/admin/types.ts b/lib/admin/types.ts index 758f00125..2307b5978 100644 --- a/lib/admin/types.ts +++ b/lib/admin/types.ts @@ -96,6 +96,8 @@ export const DEFAULT_FEATURE_GATES: FeatureGates = { customFromEnabled: true, }; +export type ColorMode = 'light' | 'dark' | 'system'; + export interface ThemePolicy { /** Built-in theme IDs that are disabled (hidden from users) */ disabledBuiltinThemes: string[]; @@ -103,12 +105,18 @@ export interface ThemePolicy { disabledThemes: string[]; /** Default theme ID for new users (null = system default) */ defaultThemeId: string | null; + /** Color mode for users who have not picked one (null = system) */ + defaultColorMode: ColorMode | null; + /** Every user gets defaultColorMode (system when unset) and cannot switch it */ + lockColorMode: boolean; } export const DEFAULT_THEME_POLICY: ThemePolicy = { disabledBuiltinThemes: [], disabledThemes: [], defaultThemeId: null, + defaultColorMode: null, + lockColorMode: false, }; /** One entry of the Web Push relay list users can pick from. */ diff --git a/stores/__tests__/theme-store-color-mode-policy.test.ts b/stores/__tests__/theme-store-color-mode-policy.test.ts new file mode 100644 index 000000000..47827a3e4 --- /dev/null +++ b/stores/__tests__/theme-store-color-mode-policy.test.ts @@ -0,0 +1,112 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const apiFetch = vi.hoisted(() => vi.fn()); +vi.mock('@/lib/browser-navigation', () => ({ apiFetch })); + +import { useThemeStore } from '../theme-store'; +import { useSettingsStore } from '../settings-store'; +import { usePolicyStore } from '../policy-store'; +import { DEFAULT_POLICY, DEFAULT_THEME_POLICY, type ThemePolicy } from '@/lib/admin/types'; + +// #1280: themePolicy could enforce a theme, but not light, dark or system. + +function loadThemePolicy(patch: Partial) { + usePolicyStore.setState({ + policy: { ...DEFAULT_POLICY, themePolicy: { ...DEFAULT_THEME_POLICY, ...patch } }, + loaded: true, + }); +} + +const importBlob = (blob: Record) => + useSettingsStore.getState().importSettings(JSON.stringify(blob)); + +const theme = () => useThemeStore.getState(); + +beforeEach(() => { + localStorage.clear(); + usePolicyStore.setState({ policy: { ...DEFAULT_POLICY }, loaded: false }); + useThemeStore.setState({ theme: 'system', themeChosen: false }); +}); + +describe('color mode policy (#1280)', () => { + it('applies the default to a user who never picked a mode', () => { + loadThemePolicy({ defaultColorMode: 'light' }); + expect(theme().theme).toBe('light'); + expect(theme().themeChosen).toBe(false); + }); + + it('keeps a mode the user picked, even system', () => { + theme().setTheme('system'); + loadThemePolicy({ defaultColorMode: 'light' }); + expect(theme().theme).toBe('system'); + }); + + it('follows the operator changing a default the user never touched', () => { + loadThemePolicy({ defaultColorMode: 'light' }); + loadThemePolicy({ defaultColorMode: 'dark' }); + expect(theme().theme).toBe('dark'); + }); + + it('enforces a locked mode over the user\'s pick and ignores picking another', () => { + theme().setTheme('dark'); + loadThemePolicy({ defaultColorMode: 'light', lockColorMode: true }); + expect(theme().theme).toBe('light'); + + theme().setTheme('dark'); + expect(theme().theme).toBe('light'); + expect(theme().resolvedTheme).toBe('light'); + expect(document.documentElement.classList.contains('dark')).toBe(false); + }); + + it('locks to system when no default mode is set', () => { + theme().setTheme('dark'); + loadThemePolicy({ lockColorMode: true }); + expect(theme().theme).toBe('system'); + }); + + it('ignores a default that is not a color mode', () => { + loadThemePolicy({ defaultColorMode: 'Dark' as never }); + expect(theme().theme).toBe('system'); + }); +}); + +describe('color mode policy and synced settings (#1280)', () => { + it('applies the default over a synced mode the user never chose', () => { + loadThemePolicy({ defaultColorMode: 'light' }); + importBlob({ theme: 'system', themeChosen: false }); + expect(theme().theme).toBe('light'); + }); + + it('keeps a synced mode the user chose', () => { + loadThemePolicy({ defaultColorMode: 'light' }); + importBlob({ theme: 'system', themeChosen: true }); + expect(theme().theme).toBe('system'); + expect(theme().themeChosen).toBe(true); + }); + + it('counts a mode other than system in an older blob as chosen', () => { + loadThemePolicy({ defaultColorMode: 'light' }); + importBlob({ theme: 'dark' }); + expect(theme().theme).toBe('dark'); + importBlob({ theme: 'system' }); + expect(theme().theme).toBe('light'); + }); + + it('syncs whether the user chose the mode', () => { + expect(JSON.parse(useSettingsStore.getState().exportSettings()).themeChosen).toBe(false); + theme().setTheme('dark'); + expect(JSON.parse(useSettingsStore.getState().exportSettings()).themeChosen).toBe(true); + }); +}); + +describe('theme settings stored before #1280', () => { + it.each([ + ['dark', true], + ['system', false], + ])('takes a stored %s mode as chosen: %s', async (stored, chosen) => { + localStorage.setItem('theme-storage', JSON.stringify({ state: { theme: stored, activeThemeId: null, installedThemes: [] }, version: 0 })); + await useThemeStore.persist.rehydrate(); + expect(theme().theme).toBe(stored); + expect(theme().themeChosen).toBe(chosen); + }); +}); diff --git a/stores/policy-store.ts b/stores/policy-store.ts index d3870f969..5d0003492 100644 --- a/stores/policy-store.ts +++ b/stores/policy-store.ts @@ -1,5 +1,5 @@ import { create } from 'zustand'; -import type { SettingsPolicy, FeatureGates, SettingRestriction, ThemePolicy } from '@/lib/admin/types'; +import type { SettingsPolicy, FeatureGates, SettingRestriction, ThemePolicy, ColorMode } from '@/lib/admin/types'; import { DEFAULT_POLICY, DEFAULT_THEME_POLICY, POLICY_SCOPE_HEADER } from '@/lib/admin/types'; import { apiFetch } from '@/lib/browser-navigation'; import { IS_LITE, IS_LITE_STALWART, LITE_POLICY_PATH, withLiteBuildId } from '@/lib/lite'; @@ -22,6 +22,12 @@ interface PolicyState { getRestriction: (key: string) => SettingRestriction | undefined; getEffectiveDefault: (key: string) => unknown; getThemePolicy: () => ThemePolicy; + /** + * The theme policy's color mode (#1280): `mode` for users who have not + * picked one, and for everyone while `locked`. A lock without a valid + * defaultColorMode pins the built-in default, system. + */ + getColorModePolicy: () => { mode: ColorMode | null; locked: boolean }; getForcedThemeId: (availableThemeIds?: string[]) => string | null; isThemeDisabled: (themeId: string, isBuiltIn: boolean) => boolean; isPluginForceEnabled: (pluginId: string) => boolean; @@ -30,6 +36,8 @@ interface PolicyState { let policyRequest = 0; +const COLOR_MODES: readonly ColorMode[] = ['light', 'dark', 'system']; + export const usePolicyStore = create()((set, get) => ({ policy: { ...DEFAULT_POLICY }, loaded: false, @@ -93,6 +101,14 @@ export const usePolicyStore = create()((set, get) => ({ return get().policy.themePolicy || { ...DEFAULT_THEME_POLICY }; }, + getColorModePolicy: () => { + const tp = get().policy.themePolicy || DEFAULT_THEME_POLICY; + // policy.json is written by hand: anything but the three modes is no default. + const mode = COLOR_MODES.find((m) => m === tp.defaultColorMode) ?? null; + const locked = tp.lockColorMode === true; + return { mode: locked ? mode ?? 'system' : mode, locked }; + }, + getForcedThemeId: (availableThemeIds) => { const forceEnabledThemes = get().policy.forceEnabledThemes || []; if (!availableThemeIds || availableThemeIds.length === 0) { diff --git a/stores/settings-store.ts b/stores/settings-store.ts index badd12081..91fb9621c 100644 --- a/stores/settings-store.ts +++ b/stores/settings-store.ts @@ -1261,6 +1261,7 @@ export const useSettingsStore = create()( explicitSettings: state.explicitSettings, // Cross-store settings theme: useThemeStore.getState().theme, + themeChosen: useThemeStore.getState().themeChosen, locale: useLocaleStore.getState().locale, // Omitted entirely (rather than emitted empty) if the bridge has // not registered, so an importing device leaves its templates alone. @@ -1445,7 +1446,11 @@ export const useSettingsStore = create()( // Apply cross-store settings if (settings.theme) { - useThemeStore.getState().setTheme(settings.theme); + // A mode the user never chose leaves room for the operator's + // default (#1280). Blobs from before themeChosen count any mode + // but the built-in default as chosen. + const themeChosen = typeof settings.themeChosen === 'boolean' ? settings.themeChosen : settings.theme !== 'system'; + useThemeStore.getState().setTheme(settings.theme, { chosen: themeChosen }); } if (settings.locale) { useLocaleStore.getState().setLocale(settings.locale); diff --git a/stores/theme-store.ts b/stores/theme-store.ts index 5e31ac3fa..23bbc9b9b 100644 --- a/stores/theme-store.ts +++ b/stores/theme-store.ts @@ -32,8 +32,22 @@ function getForcedThemeId(installedThemes: InstalledTheme[]): string | null { return installedThemes.find((theme) => theme.forceEnabled)?.id ?? null; } +/** + * The mode to use for `theme` (#1280): the theme policy's locked mode + * whatever the user picked, its default while they have not picked one. + */ +function policyColorMode(theme: Theme, chosen: boolean): Theme { + const { mode, locked } = usePolicyStore.getState().getColorModePolicy(); + return mode && (locked || !chosen) ? mode : theme; +} + interface ThemeState { theme: Theme; + /** + * The user picked `theme` themselves (#1280). Until they do, the theme + * policy's defaultColorMode applies. Synced with the settings. + */ + themeChosen: boolean; resolvedTheme: 'light' | 'dark'; hydrated: boolean; @@ -41,9 +55,12 @@ interface ThemeState { installedThemes: InstalledTheme[]; activeThemeId: string | null; // null = built-in default - setTheme: (theme: Theme) => void; + /** `chosen: false` sets a mode the user did not pick (a synced one they never chose). */ + setTheme: (theme: Theme, opts?: { chosen?: boolean }) => void; toggleTheme: () => void; initializeTheme: () => void; + /** Applies the theme policy's color mode; runs whenever the policy changes. */ + applyColorModePolicy: () => void; // Custom theme management installTheme: (file: File) => Promise<{ success: boolean; error?: string; warnings?: string[] }>; @@ -52,6 +69,8 @@ interface ThemeState { syncServerThemes: () => Promise; } +type PersistedThemeState = Pick; + const getSystemTheme = (): 'light' | 'dark' => { if (typeof window === 'undefined') return 'light'; return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; @@ -85,15 +104,18 @@ export const useThemeStore = create()( persist( (set, get) => ({ theme: 'system', + themeChosen: false, resolvedTheme: 'light', hydrated: false, installedThemes: [...BUILTIN_THEMES], activeThemeId: null, - setTheme: (theme) => { + setTheme: (requested, opts) => { + const themeChosen = opts?.chosen ?? true; + const theme = policyColorMode(requested, themeChosen); const resolvedTheme = theme === 'system' ? getSystemTheme() : theme; applyTheme(resolvedTheme); - set({ theme, resolvedTheme }); + set({ theme, resolvedTheme, themeChosen }); // Re-apply active custom theme for new mode const { activeThemeId, installedThemes } = get(); if (activeThemeId) { @@ -110,6 +132,11 @@ export const useThemeStore = create()( get().setTheme(nextTheme); }, + applyColorModePolicy: () => { + const { theme, themeChosen } = get(); + if (policyColorMode(theme, themeChosen) !== theme) get().setTheme(theme, { chosen: themeChosen }); + }, + initializeTheme: () => { const { theme, activeThemeId, installedThemes } = get(); const resolvedTheme = theme === 'system' ? getSystemTheme() : theme; @@ -485,8 +512,10 @@ export const useThemeStore = create()( }), { name: 'theme-storage', - partialize: (state) => ({ + version: 1, + partialize: (state): PersistedThemeState => ({ theme: state.theme, + themeChosen: state.themeChosen, activeThemeId: state.activeThemeId, // Store theme metadata but NOT full CSS / skin (those go in IndexedDB) installedThemes: state.installedThemes.map(t => ({ @@ -496,6 +525,13 @@ export const useThemeStore = create()( preview: undefined, // previews also in IndexedDB })), }), + // v1: themeChosen (#1280). Earlier builds did not record it, so a mode + // other than the built-in default is taken as chosen. + migrate: (persisted, version) => { + const state = persisted as PersistedThemeState; + if (version < 1) state.themeChosen = state.theme !== 'system'; + return state; + }, onRehydrateStorage: () => { return (state) => { if (state) { @@ -645,6 +681,12 @@ async function downloadThemeAsset(theme: ServerThemeInfo, kind: 'css' | 'skin'): return null; } } +// The policy arrives after this store has rehydrated (and again in full once +// signed in), so its color mode applies whenever it changes (#1280). +usePolicyStore.subscribe((state, prev) => { + if (state.policy !== prev.policy) useThemeStore.getState().applyColorModePolicy(); +}); + // Plugins hear about every change of scheme or theme, whichever path made it // (settings, the system switching to dark, a forced admin theme). useThemeStore.subscribe((state, prev) => { From 7163a5dcc1f29fed013b0f9216c1f44b95086566 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 13:47:35 +0200 Subject: [PATCH 057/238] fix: translate contact field types and more French strings Co-authored-by: French-Asgeir <109287366+French-Asgeir@users.noreply.github.com> --- .../__tests__/contact-detail.test.tsx | 15 ++++ components/contacts/contact-detail.tsx | 39 ++++++++--- locales/fr/common.json | 70 +++++++++---------- 3 files changed, 79 insertions(+), 45 deletions(-) diff --git a/components/contacts/__tests__/contact-detail.test.tsx b/components/contacts/__tests__/contact-detail.test.tsx index a908f69f9..386778b4f 100644 --- a/components/contacts/__tests__/contact-detail.test.tsx +++ b/components/contacts/__tests__/contact-detail.test.tsx @@ -45,6 +45,21 @@ describe('ContactDetail', () => { expect(screen.getByText('+33612345678')).toBeInTheDocument(); }); + it('labels phones, emails and addresses with translated contexts and phone types', () => { + const typed: ContactCard = { + ...contact, + emails: { e0: { address: 'alice@work.example', contexts: { work: true } } }, + phones: { p0: { number: '+4930123', contexts: { private: true }, features: { cell: true, 'x-sat': true } } }, + addresses: { a0: { street: '1 Office Rd', contexts: { work: true, 'x-hq': true } } }, + }; + render(); + // The test translator returns the key, so a translated label shows up as its key. + expect(screen.getByText('form.context_work')).toBeInTheDocument(); + expect(screen.getByText('form.context_private · form.phone_cell, x-sat')).toBeInTheDocument(); + // Custom vCard types are shown as stored. + expect(screen.getByText('form.context_work, x-hq')).toBeInTheDocument(); + }); + it('displays organization name', () => { render(); const matches = screen.getAllByText('Acme Corp'); diff --git a/components/contacts/contact-detail.tsx b/components/contacts/contact-detail.tsx index 14c66479c..478fe85bb 100644 --- a/components/contacts/contact-detail.tsx +++ b/components/contacts/contact-detail.tsx @@ -41,9 +41,26 @@ interface ContactDetailProps { className?: string; } -function formatPhoneFeatures(features?: Record): string { +// Contexts and phone features the contact form offers, shown with the same +// labels here. Anything else (custom vCard types) is shown as stored. +const CONTEXT_LABEL_KEYS: Record = { + work: "form.context_work", + private: "form.context_private", +}; + +const PHONE_FEATURE_LABEL_KEYS: Record = { + voice: "form.phone_voice", + cell: "form.phone_cell", + mobile: "form.phone_cell", + fax: "form.phone_fax", + pager: "form.phone_pager", + video: "form.phone_video", + text: "form.phone_text", +}; + +function formatPhoneFeatures(features: Record | undefined, label: (key: string) => string): string { if (!features) return ""; - return Object.keys(features).filter(k => features[k]).join(", "); + return Object.keys(features).filter(k => features[k]).map(label).join(", "); } function getDateParts(dateInput: AnniversaryDate): { year?: number; month?: number; day?: number } { @@ -122,6 +139,8 @@ function formatDate(dateInput: AnniversaryDate): string { export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDuplicate, onCompose, isMobile, className }: ContactDetailProps) { const t = useTranslations("contacts"); + const contextLabel = (key: string) => (CONTEXT_LABEL_KEYS[key] ? t(CONTEXT_LABEL_KEYS[key]) : key); + const featureLabel = (key: string) => (PHONE_FEATURE_LABEL_KEYS[key] ? t(PHONE_FEATURE_LABEL_KEYS[key]) : key); const cryptoKeys = contact?.cryptoKeys ? Object.values(contact.cryptoKeys) : []; const hasCryptoKeysSlotOffers = usePluginSlotOffers('contact-cryptokeys').length > 0; @@ -248,7 +267,7 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli
{emails.map((e, i) => ( - +
{e.address} @@ -269,8 +288,8 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli ))} {phones.map((p, i) => { - const features = formatPhoneFeatures(p.features); - const labelParts = [p.label, formatContexts(p.contexts), features].filter(Boolean) as string[]; + const features = formatPhoneFeatures(p.features, featureLabel); + const labelParts = [p.label, formatContexts(p.contexts, contextLabel), features].filter(Boolean) as string[]; return (
@@ -299,7 +318,7 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli lines.push(...parts); } return ( - +
{lines.map((line, idx) => (
{line}
@@ -316,7 +335,7 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli
{typeof svc.uri === 'string' && svc.uri.startsWith("http") ? ( @@ -398,7 +417,7 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli
{lang.language}
@@ -527,9 +546,9 @@ export function ContactDetail({ contact, onEdit, onDelete, onAddToGroup, onDupli ); } -function formatContexts(contexts?: Record): string { +function formatContexts(contexts: Record | undefined, label: (key: string) => string): string { if (!contexts) return ""; - return Object.keys(contexts).filter(k => contexts[k]).join(", "); + return Object.keys(contexts).filter(k => contexts[k]).map(label).join(", "); } export function Section({ title, children, className }: { title: string; children: React.ReactNode; className?: string }) { diff --git a/locales/fr/common.json b/locales/fr/common.json index fd93dc0c7..990185589 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -1184,8 +1184,8 @@ "description": "Colore les icônes de dossiers et d'étiquettes par type (Boîte de réception en bleu, Indésirable en rouge, Envoyés en vert, etc.). Désactivez pour une barre latérale monochrome." }, "tint_list_rows": { - "label": "Tint List Rows by Tag Color", - "description": "Shade each message row with its first tag color. Disable to keep rows plain; tag dots and chips still show the color." + "label": "Lignes de liste colorées selon la couleur d'étiquette", + "description": "Appliquez une couleur de fond à chaque ligne de message en fonction de la couleur de sa première étiquette. Désactivez cette option pour conserver des lignes unies. Les points et les pastilles d'étiquette continueront d'afficher la couleur." }, "show_account_dot": { "label": "Show Account Dot", @@ -1200,8 +1200,8 @@ "description": "Affiche le nombre total de messages à côté des dossiers et des étiquettes, en plus du nombre de messages non lus. Désactivez pour n'afficher que les messages non lus." }, "favicon_unread_badge": { - "label": "Unread Count on Tab Icon", - "description": "Show the inbox unread count as a badge on the browser tab icon, so new mail is visible when the tab is not focused. Disable to keep the icon unbadged." + "label": "Nombre de non-lu sur l'icône de l'onglet", + "description": "Afficher le nombre de messages non lus de la boîte de réception sous forme de badge sur l’icône de l’onglet du navigateur, afin que les nouveaux messages restent visibles lorsque l’onglet n’est pas actif. Désactiver cette option pour ne pas afficher de badge sur l’icône." }, "show_shared_mail_accounts": { "label": "Afficher les comptes de messagerie partagés", @@ -1375,12 +1375,12 @@ "preview_older": "Plus ancien :" }, "date_locale": { - "label": "Date format region", - "description": "How numeric dates are ordered (day, month, year)", + "label": "Format de date", + "description": "Comment sont ordonnées des dates (jour, mois, année)", "auto": "Automatic", "iso": "ISO 8601", - "dmy": "Day/Month/Year", - "mdy": "Month/Day/Year" + "dmy": "Jour/Mois/Année", + "mdy": "Mois/Jour/Année" }, "time_format": { "label": "Format d'heure", @@ -1395,10 +1395,10 @@ "monday": "Lundi" }, "time_zone": { - "label": "Time zone", - "description": "Show email and calendar times in this time zone instead of the one reported by your browser", - "auto": "Automatic ({zone})", - "preview_now": "Now:" + "label": "Fuseau horaire", + "description": "Afficher les heures des e-mails et du calendrier dans ce fuseau horaire plutôt que dans celui indiqué par votre navigateur", + "auto": "Automatique ({zone})", + "preview_now": "Maintenant :" } }, "email_behavior": { @@ -2111,9 +2111,9 @@ "button": "Voir les raccourcis" }, "refresh_cache": { - "label": "Refresh cached data", - "description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.", - "button": "Refresh" + "label": "Actualiser les données en cache", + "description": "Actualiser les contacts, calendriers et dossiers depuis le serveur. Vos comptes et sessions sont conservés. Corrige un affichage obsolète ou incorrect sans vous déconnecter.", + "button": "Actualiser" }, "reset_settings": { "label": "Réinitialiser les paramètres", @@ -2915,16 +2915,16 @@ "cert_already_imported": "Certificat déjà importé", "cert_imported": "Certificat importé", "cert_import_failed": "Échec de l'import du certificat", - "section_contact": "Contact details", - "section_work": "Work", - "section_personal": "Personal", - "email_default_label": "Email", - "phone_default_label": "Phone", - "address_default_label": "Address", - "online_service_default_label": "Online", - "organization_label": "Organization", - "title_label": "Title", - "role_label": "Role", + "section_contact": "Détails du contact", + "section_work": "Travail", + "section_personal": "Personnel", + "email_default_label": "E-mail", + "phone_default_label": "Téléphone", + "address_default_label": "Adresse", + "online_service_default_label": "En ligne", + "organization_label": "Organisation", + "title_label": "Titre", + "role_label": "Rôle", "language_label": "Language", "related_default_label": "Related", "more_actions": "Plus d'actions", @@ -2932,15 +2932,15 @@ "years_since": "{count, plural, one {il y a 1 an} other {il y a # ans}}" }, "activity": { - "recent_emails": "Recent Emails", - "upcoming_events": "Upcoming Events", - "no_emails": "No recent emails", - "no_events": "No upcoming events", - "no_subject": "(No subject)", - "no_title": "(No title)", - "load_failed": "Failed to load", + "recent_emails": "Courriels récents", + "upcoming_events": "Évènements à venir", + "no_emails": "Aucun courriel récent", + "no_events": "Aucun évènement à venir", + "no_subject": "(Aucun objet)", + "no_title": "(Aucun titre)", + "load_failed": "Échec du chargement", "unknown_sender": "Unknown sender", - "all_day": "All day" + "all_day": "Toute la journée" }, "form": { "create_title": "Nouveau contact", @@ -3062,9 +3062,9 @@ "no_members": "Aucun membre dans ce groupe", "member_count": "{count, plural, =0 {Aucun membre} one {1 membre} other {# membres}}", "send_email": "Send email to group", - "send_email_to": "To", + "send_email_to": "À", "send_email_cc": "Cc", - "send_email_bcc": "Bcc", + "send_email_bcc": "Cci", "no_member_emails": "This group has no members with an email address." }, "import": { From 710e32cc10feeac1ae7f40ecf6c3c2a7bd0aaed6 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:19:07 +0200 Subject: [PATCH 058/238] fix: ignore Nextcloud filter markers inside rule text --- lib/sieve/__tests__/external-rules.test.ts | 28 ++++++++++++++++ lib/sieve/parser.ts | 38 ++++++++++++++++++---- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/lib/sieve/__tests__/external-rules.test.ts b/lib/sieve/__tests__/external-rules.test.ts index ae7c0733c..d734af1fd 100644 --- a/lib/sieve/__tests__/external-rules.test.ts +++ b/lib/sieve/__tests__/external-rules.test.ts @@ -377,5 +377,33 @@ describe('external rule preservation (issue #201)', () => { const headerCount = (script.match(/# --- External rules \(managed outside Bulwark\) ---/g) || []).length; expect(headerCount).toBe(1); }); + + it('ignores marker lines inside a rule value, so the value never turns into live Sieve', () => { + const value = `x\n${NEXTCLOUD_MARKER}\nredirect "attacker@example.com";\n${NEXTCLOUD_MARKER}\ny`; + const bulwark = makeBulwarkRule({ conditions: [{ field: 'subject', comparator: 'contains', value }] }); + + const parsed = parseScript(generateScript([bulwark])); + expect(parsed.rules.filter(r => r.originLabel === 'Nextcloud')).toHaveLength(0); + expect(parsed.rules).toHaveLength(1); + expect(parsed.rules[0].conditions[0].value).toBe(value); + }); + + it('ignores marker lines inside a text: block', () => { + const script = [ + 'require ["vacation", "fileinto"];', + 'if header :contains "Subject" "invoice" {', + ' fileinto "Finance";', + '}', + 'vacation :subject "Away" text:', + NEXTCLOUD_MARKER, + 'redirect "attacker@example.com";', + NEXTCLOUD_MARKER, + '.', + ';', + '', + ].join('\n'); + const result = parseScript(script); + expect(result.rules.filter(r => r.originLabel === 'Nextcloud')).toHaveLength(0); + }); }); }); diff --git a/lib/sieve/parser.ts b/lib/sieve/parser.ts index 847f57dcc..67641deff 100644 --- a/lib/sieve/parser.ts +++ b/lib/sieve/parser.ts @@ -144,6 +144,19 @@ function skipBlockComment(s: string, i: number): number { return end === -1 ? s.length : end + 2; } +// Past a `text:` string: every line up to and including the lone ".". +function skipMultiLineString(s: string, i: number): number { + let line = s.indexOf('\n', i) + 1; + if (line === 0) return s.length; + while (line < s.length) { + const nl = s.indexOf('\n', line); + const next = nl === -1 ? s.length : nl + 1; + if (s.slice(line, next).replace(/\r?\n$/, '') === '.') return next; + line = next; + } + return s.length; +} + function skipStatement(s: string, i: number): number { while (i < s.length) { const c = s[i]; @@ -700,14 +713,25 @@ function extractNextcloudRegions(content: string): { requires: string[]; } { const marker = NEXTCLOUD_BLOCK_MARKER; + // Only a comment line counts. The same text inside a string (a rule's value, + // an auto-reply) is data, and taken for a region it would be written back + // as live Sieve. const positions: number[] = []; - let searchFrom = 0; - while (true) { - const idx = content.indexOf(marker, searchFrom); - if (idx === -1) break; - const atLineStart = idx === 0 || content[idx - 1] === '\n'; - if (atLineStart) positions.push(idx); - searchFrom = idx + marker.length; + let i = 0; + while (i < content.length) { + const c = content[i]; + if (c === '"') { i = skipStringLit(content, i); continue; } + if (c === '/' && content[i + 1] === '*') { i = skipBlockComment(content, i); continue; } + if (c === '#') { + if ((i === 0 || content[i - 1] === '\n') && content.startsWith(marker, i)) positions.push(i); + i = skipHashComment(content, i); + continue; + } + if (content.slice(i, i + 5).toLowerCase() === 'text:' && !/\w/.test(content[i - 1] ?? '')) { + i = skipMultiLineString(content, i); + continue; + } + i++; } if (positions.length < 2) { From 2f7873e75690bbfb10cab5e443d2b52a9d271fb1 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:39:07 +0200 Subject: [PATCH 059/238] test: update the inline image reply test for the current composer mocks --- .../__tests__/composer-inline-image-cid.test.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/components/email/__tests__/composer-inline-image-cid.test.tsx b/components/email/__tests__/composer-inline-image-cid.test.tsx index 52d4b62ee..5896ea943 100644 --- a/components/email/__tests__/composer-inline-image-cid.test.tsx +++ b/components/email/__tests__/composer-inline-image-cid.test.tsx @@ -82,6 +82,8 @@ vi.mock('@/stores/settings-store', () => { attachmentReminderKeywords: [], emptySubjectWarningEnabled: true, sendDelaySeconds: 0, + externalContentPolicy: 'block', + isSenderTrusted: () => false, signaturePosition: 'above_quote', signatureSeparatorEnabled: false, requestReadReceiptDefault: false, @@ -123,6 +125,14 @@ vi.mock('@/stores/toast-store', () => ({ })); vi.mock('@/lib/plugin-hooks', () => ({ + identityHooks: { + onSignatureRender: { size: 0, transform: async (value: unknown) => value }, + onIdentitySelect: { size: 0, emit: async () => {} }, + }, + templateHooks: { + onTemplateRender: { size: 0, transform: async (value: unknown) => value }, + onTemplateApply: { size: 0, emit: async () => {} }, + }, emailHooks: { onComposerOpen: { call: async () => [] }, onRecipientChange: { call: async () => [] }, @@ -130,8 +140,8 @@ vi.mock('@/lib/plugin-hooks', () => ({ onRecipientChipsChange: { transform: async (chips: unknown) => chips }, onDraftChange: { emit: () => {} }, onBeforeDraftAutoSave: { transform: async (draft: unknown) => draft }, - onBeforeEmailSend: { intercept: async () => true }, - onComposeSend: { intercept: async () => true }, + onBeforeEmailSend: { intercept: async () => true, interceptOutcome: async () => 'allowed' }, + onComposeSend: { takeOver: async () => 'default' }, onTransformOutgoingEmail: { transform: async (email: unknown) => email }, }, contactHooks: { @@ -182,6 +192,7 @@ describe('reply/forward inline image cid normalization', () => { client: { fetchBlobArrayBuffer, hasDelayedSend: () => false, + supportsPrincipals: () => false, getMaxDelayedSend: () => 0, } as never, }); From 610df64463129cd7e59d330779ea268fbfdd5801 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:39:27 +0200 Subject: [PATCH 060/238] fix: keep the whole folder after a restart when a category tab was open #1264 --- .../email-store-refresh-category-tab.test.ts | 23 +++++++++++++++++++ stores/email-store.ts | 5 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/stores/__tests__/email-store-refresh-category-tab.test.ts b/stores/__tests__/email-store-refresh-category-tab.test.ts index 5dc7b467d..f91c72188 100644 --- a/stores/__tests__/email-store-refresh-category-tab.test.ts +++ b/stores/__tests__/email-store-refresh-category-tab.test.ts @@ -78,4 +78,27 @@ describe('refreshing a folder with a category tab open (#1264)', () => { expect(useEmailStore.getState().emails.map((e) => e.id)).toEqual(['receipt']); expect(useEmailStore.getState().newEmailNotification).toBeNull(); }); + + it('leaves no delta baseline for the tab page, as the first load does', async () => { + useMessageListTabsStore.getState().setActiveTab('receipts', 'inbox'); + const receipt = email('receipt', '2026-10-01T00:00:00Z'); + const newsletter = email('newsletter', '2026-10-15T00:00:00Z'); + const c = { + ...client([]), + getEmails: vi.fn(async (...args: unknown[]) => { + const rows = args[6] ? [receipt] : [newsletter, receipt]; + return { emails: rows, total: rows.length, hasMore: false, state: 's' }; + }), + getEmailChanges: vi.fn(async () => ({ created: [], updated: [], destroyed: [], newState: 's', hasMoreChanges: false })), + } as unknown as IJMAPClient; + await useEmailStore.getState().refreshCurrentMailbox(c); + expect(useEmailStore.getState().emailListSync).toBeNull(); + + // The baseline would be saved with the rows (boot snapshot). On the next + // boot, before the plugin has registered its tabs again, the folder loads + // behind those rows and must not take the tab's page for the whole folder. + useMessageListTabsStore.getState().clearTabs('receipts-plugin'); + await useEmailStore.getState().fetchEmails(c, 'inbox', { background: true }); + expect(useEmailStore.getState().emails.map((e) => e.id)).toEqual(['newsletter', 'receipt']); + }); }); diff --git a/stores/email-store.ts b/stores/email-store.ts index 74a52e63f..afd049c22 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -5634,8 +5634,9 @@ export const useEmailStore = create((set, get) => ({ const categoryFilter = useMessageListTabsStore.getState().getCategoryFilter(mailbox?.role); result = await effectiveClient.getEmails(jmapMailboxId, accountId, windowSize, 0, undefined, true, categoryFilter ?? undefined, order); // This page is the new delta-sync baseline for the folder; the - // search / unified paths above cannot be delta-synced. - syncAfterRefresh = result.state + // search / unified paths above cannot be delta-synced, and neither + // can a category tab's page (see fetchEmails). + syncAfterRefresh = result.state && !categoryFilter ? { state: result.state, accountId: accountId ?? effectiveClient.getAccountId(), mailboxId: selectedMailbox } : null; } From 811e175cd040a00f5fee61b10fe4c0524c254601 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:39:58 +0200 Subject: [PATCH 061/238] fix: tell today's mail by the time zone setting in the sender line #1259 --- .../__tests__/mv-sender-date-zone.test.tsx | 106 ++++++++++++++++++ components/email/email-viewer.tsx | 8 +- lib/__tests__/format-relative-ago.test.ts | 6 + lib/utils.ts | 5 +- 4 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 components/email/__tests__/mv-sender-date-zone.test.tsx diff --git a/components/email/__tests__/mv-sender-date-zone.test.tsx b/components/email/__tests__/mv-sender-date-zone.test.tsx new file mode 100644 index 000000000..e1dfef7aa --- /dev/null +++ b/components/email/__tests__/mv-sender-date-zone.test.tsx @@ -0,0 +1,106 @@ +import { render } from '@testing-library/react'; +import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from 'vitest'; +import type { Email, Mailbox } from '@/lib/jmap/types'; +import { useSettingsStore } from '@/stores/settings-store'; + +// #1259: the Mountain View sender line shows only the time for today's mail +// and the date as well before that. "Today" is the day in the time zone +// setting, the zone the time and the "(… ago)" after it are shown in, not the +// browser's. + +vi.mock('@/hooks/use-media-query', () => ({ + useDeviceDetection: () => ({ isMobile: false, isTablet: false, isDesktop: true }), + useMediaQuery: () => false, +})); + +vi.mock('@/components/tour/tour-provider', () => ({ + useTour: () => ({ activeTour: null, startTour: vi.fn(), endTour: vi.fn(), registerStep: vi.fn() }), +})); + +vi.mock('@/components/plugins/plugin-slot', () => ({ + PluginSlot: () => null, +})); + +vi.mock('@/hooks/use-plugin-slot-offers', () => ({ + usePluginSlotOffers: () => [], +})); + +class NoopResizeObserver { + observe() {} + unobserve() {} + disconnect() {} +} +vi.stubGlobal('ResizeObserver', NoopResizeObserver); + +const { EmailViewer } = await import('../email-viewer'); + +const mailboxes: Mailbox[] = [ + { id: 'inbox', name: 'Inbox', role: 'inbox', parentId: null, myRights: { mayAddItems: true } }, +] as unknown as Mailbox[]; + +function mail(n: number, receivedAt: string, overrides: Partial = {}): Email { + return { + id: `m${n}`, + blobId: `b${n}`, + threadId: 't1', + mailboxIds: { inbox: true }, + keywords: { $seen: true }, + from: [{ name: `Sender ${n}`, email: `s${n}@example.com` }], + to: [{ name: 'Me', email: 'me@example.com' }], + subject: 'Subject', + receivedAt, + preview: `Preview ${n}`, + hasAttachment: false, + size: 100, + ...overrides, + } as unknown as Email; +} + +let originalTZ: string | undefined; + +describe('Mountain View sender date (#1259)', () => { + beforeAll(() => { + // The browser's zone, a day ahead of Denver in the evening. + originalTZ = process.env.TZ; + process.env.TZ = 'UTC'; + }); + + afterAll(() => { + process.env.TZ = originalTZ; + }); + + afterEach(() => { + vi.useRealTimers(); + useSettingsStore.setState({ timeZone: 'auto' }); + }); + + it("shows the date for yesterday's mail in the time zone setting", () => { + vi.useFakeTimers({ toFake: ['Date'] }); + // 16 Oct, 10:00 in Denver. + vi.setSystemTime(new Date('2026-10-16T16:00:00Z')); + useSettingsStore.setState({ + interfaceLayout: 'mountain-view', markAsReadDelay: 0, timeZone: 'America/Denver', timeFormat: '24h', + }); + // 15 Oct, 21:00 in Denver, which is already 16 Oct in UTC. + const yesterday = mail(1, '2026-10-16T03:00:00Z'); + const open = { + ...mail(2, '2026-10-16T15:00:00Z'), + textBody: [{ partId: '1', type: 'text/plain' }], + htmlBody: [], + attachments: [], + bodyValues: { '1': { value: 'Open body', isTruncated: false } }, + } as unknown as Email; + const { container } = render( + , + ); + const card = container.querySelector('[data-mv-conversation-card][data-email-id="m1"]'); + expect(card?.textContent).toContain('21:00'); + expect(card?.textContent).toContain('2026'); + }); +}); diff --git a/components/email/email-viewer.tsx b/components/email/email-viewer.tsx index dba3d4ac4..2427a5e86 100644 --- a/components/email/email-viewer.tsx +++ b/components/email/email-viewer.tsx @@ -17,6 +17,7 @@ import { Button } from "@/components/ui/button"; import { Avatar } from "@/components/ui/avatar"; import { SubMenuPanel } from "@/components/ui/context-menu"; import { formatFileSize, cn, MailboxNode, formatDate, formatDateTime, formatRelativeAgo, generateUUID, cleanPreview } from "@/lib/utils"; +import { getEffectiveTimeZone, getWallClock } from "@/lib/timezone"; import { itemsToHide } from "@/lib/toolbar-overflow"; import { formatScheduledSendAt } from "@/lib/scheduled-send-label"; import { buildMoveTargets, resolveMoveOwnerAccountId } from "@/lib/move-targets"; @@ -689,7 +690,12 @@ function DraggableAttachmentChip({ attachment, client, accountId, enabled, downl */ function mvSenderDate(date: Date | string, timeFormat: '12h' | '24h'): string { const d = typeof date === 'string' ? new Date(date) : date; - const today = new Date().toDateString() === d.toDateString(); + // "Today" in the time zone setting, the zone the time and the relative + // part are shown in, not the browser's (#1259). + const zone = getEffectiveTimeZone(); + const day = Number.isNaN(d.getTime()) ? null : getWallClock(d, zone); + const now = getWallClock(new Date(), zone); + const today = !!day && day.year === now.year && day.month === now.month && day.day === now.day; const when = today ? formatDateTime(d, timeFormat) : formatDateTime(d, timeFormat, { year: 'numeric', month: 'short', day: 'numeric' }); diff --git a/lib/__tests__/format-relative-ago.test.ts b/lib/__tests__/format-relative-ago.test.ts index befcfba80..73e446b1c 100644 --- a/lib/__tests__/format-relative-ago.test.ts +++ b/lib/__tests__/format-relative-ago.test.ts @@ -32,4 +32,10 @@ describe('formatRelativeAgo', () => { // Under a day still reads in hours, even across midnight. expect(formatRelativeAgo(new Date('2026-10-15T23:00:00Z'), denverNow)).toBe('17 hours ago'); }); + + it('does not call the same day yesterday on the 25-hour day the clocks go back', () => { + useSettingsStore.setState({ timeZone: 'America/Denver' }); + // 1 Nov 2026 in Denver: 00:10 MDT, and 24.5 hours later 23:40 MST. + expect(formatRelativeAgo(new Date('2026-11-01T06:10:00Z'), new Date('2026-11-02T06:40:00Z'))).toBe('24 hours ago'); + }); }); diff --git a/lib/utils.ts b/lib/utils.ts index 1af71cfcd..584aff124 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -274,13 +274,14 @@ export function formatRelativeAgo(date: Date | string, now: Date = new Date()): const w = getWallClock(x, timeZone); return Date.UTC(w.year, w.month - 1, w.day) / 86400000; }; - const days = Math.max(1, dayNumber(now) - dayNumber(d)); + const days = dayNumber(now) - dayNumber(d); if (days >= 30) return ''; const locale = getEffectiveLocale(); const rtf = new Intl.RelativeTimeFormat(locale === 'en' ? 'en-US' : locale, { numeric: 'auto' }); if (minutes < 1) return rtf.format(0, 'second'); if (minutes < 60) return rtf.format(-minutes, 'minute'); - if (hours < 24) return rtf.format(-hours, 'hour'); + // The day the clocks go back has 25 hours: 24 of them can still be today. + if (hours < 24 || days < 1) return rtf.format(-hours, 'hour'); return rtf.format(-days, 'day'); } From 7573471544b82369fd64abaf29f3762baf5a5a1e Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:39:58 +0200 Subject: [PATCH 062/238] fix: keep plugins from reading mail of other connected logins #1273 --- lib/__tests__/plugin-host-mail-read.test.ts | 16 +++++++++++++++- lib/plugin-sandbox/host-api-mail.ts | 14 ++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/lib/__tests__/plugin-host-mail-read.test.ts b/lib/__tests__/plugin-host-mail-read.test.ts index a7ed397c4..c5fcc1fb5 100644 --- a/lib/__tests__/plugin-host-mail-read.test.ts +++ b/lib/__tests__/plugin-host-mail-read.test.ts @@ -39,6 +39,7 @@ const shared = { } as unknown as Mailbox; let client: Record>; +const realGetClientForAccount = useAuthStore.getState().getClientForAccount; beforeEach(() => { client = { @@ -53,7 +54,7 @@ beforeEach(() => { }); afterEach(() => { - useAuthStore.setState({ client: null }); + useAuthStore.setState({ client: null, getClientForAccount: realGetClientForAccount }); useEmailStore.setState({ mailboxes: [], selectedEmail: null, selectedMailbox: '', emails: [] }); }); @@ -75,6 +76,19 @@ describe('api.email.get', () => { expect(client.getEmail).toHaveBeenCalledWith('s1', 'acc2'); }); + it('reads no listed message of another connected login', async () => { + // Rows can be put in the list by a plugin (onEmailsFetched), stamps included. + const other = { getEmail: vi.fn(async () => mail('x1', { subject: 'Other login' })) }; + useAuthStore.setState({ + getClientForAccount: ((id: string) => (id === 'login2' ? other : undefined)) as never, + }); + useEmailStore.setState({ emails: [mail('x1', { sourceClientAccountId: 'login2', sourceAccountId: 'acc9' })] }); + expect(await call(READER, 'email.get', 'x1')).toBeNull(); + expect(other.getEmail).not.toHaveBeenCalled(); + // Nor is the signed-in login asked for an id that belongs to another one. + expect(client.getEmail).not.toHaveBeenCalled(); + }); + it('uses the open message when its body is loaded', async () => { useEmailStore.setState({ selectedEmail: mail('open', { bodyValues: { 1: { value: 'x' } }, textBody: [{ partId: '1' }] } as unknown as Partial) }); expect(await call(READER, 'email.get', 'open')).toEqual(expect.objectContaining({ id: 'open', text: 'x' })); diff --git a/lib/plugin-sandbox/host-api-mail.ts b/lib/plugin-sandbox/host-api-mail.ts index 33d4d7389..9c27e41f7 100644 --- a/lib/plugin-sandbox/host-api-mail.ts +++ b/lib/plugin-sandbox/host-api-mail.ts @@ -4,8 +4,9 @@ // JMAP client and never change what the user has open. // // api.email.get also reads a message of a shared account when it is in the -// loaded list, from the account that owns it. The bytes of attachments and -// sources are read from the signed-in account only. +// loaded list, from the account that owns it, always through the signed-in +// login. The bytes of attachments and sources are read from the signed-in +// account only. import type { EmailReadView, EmailSummary, MailboxView } from '../plugin-types'; import type { Email, Mailbox } from '../jmap/types'; @@ -36,8 +37,13 @@ export async function doEmailGet(id: unknown): Promise { // it; the signed-in account doesn't know its id. const listed = useEmailStore.getState().emails.find((e) => e.id === emailId); const owner = listed ? resolveEmailBlobContext(listed, client) : null; - const email = owner?.client && owner.accountId - ? await owner.client.getEmail(emailId, owner.accountId) + // Only through the signed-in login. A row of another connected login is + // not read here, nor asked of this login under an id that isn't its own. + // The rows can come from a plugin (onEmailsFetched), so their stamps must + // not pick which login is asked. + if (owner && owner.client !== client) return null; + const email = owner?.accountId + ? await client.getEmail(emailId, owner.accountId) : await loadEmail(client, emailId); return email ? emailToReadView(email) : null; } From be069563985a65bc85a0d05d72cbd2bd95b9e56e Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:39:59 +0200 Subject: [PATCH 063/238] test: cover the From pick when replying to another connected account --- .../email/__tests__/reply-addressing.test.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/email/__tests__/reply-addressing.test.tsx b/components/email/__tests__/reply-addressing.test.tsx index 8a489d537..93dd0866d 100644 --- a/components/email/__tests__/reply-addressing.test.tsx +++ b/components/email/__tests__/reply-addressing.test.tsx @@ -489,6 +489,24 @@ describe('composer reply addressing', () => { render(); expect(identitySelect().value).toBe('local-1::id-info'); }); + + // Mail one connected account sent to another was received by the second: + // the reply goes back to the sender, from the address that received it. + it('answers mail another connected account sent here like received mail', () => { + render( + , + ); + expect(toChips()).toEqual(['Login (login@elsewhere.net)']); + expect(identitySelect().value).toBe('local-1::id-info'); + }); }); }); From 1e992e6c7fc0026afcb89d0363d18e75b69e6445 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 16 Oct 2026 23:42:39 +0200 Subject: [PATCH 064/238] fix: check plugin dropdown messages before the host draws them --- components/plugins/plugin-iframe-slot.tsx | 4 +- .../plugin-floating-dropdown-host.test.ts | 80 ++++++++++++++++ lib/plugin-sandbox/host-bridge.ts | 91 ++++++++++++++++++- 3 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 lib/__tests__/plugin-floating-dropdown-host.test.ts diff --git a/components/plugins/plugin-iframe-slot.tsx b/components/plugins/plugin-iframe-slot.tsx index c571f9a93..42ad79a0d 100644 --- a/components/plugins/plugin-iframe-slot.tsx +++ b/components/plugins/plugin-iframe-slot.tsx @@ -258,7 +258,7 @@ function FloatingDropdownPortal({ return createPortal(
{ optionRefs.current[i] = el; }} - id={`${dropdown.id}-opt-${i}`} + id={`plugin-dropdown-${dropdown.id}-opt-${i}`} role="option" aria-selected={isSelected} aria-disabled={opt.disabled} diff --git a/lib/__tests__/plugin-floating-dropdown-host.test.ts b/lib/__tests__/plugin-floating-dropdown-host.test.ts new file mode 100644 index 000000000..f2e570992 --- /dev/null +++ b/lib/__tests__/plugin-floating-dropdown-host.test.ts @@ -0,0 +1,80 @@ +import { afterEach, describe, it, expect, vi } from 'vitest'; +import type { InstalledPlugin } from '../plugin-types'; + +vi.mock('../plugin-sandbox/host-api', () => ({ + dispatchApiCall: vi.fn(async () => 'ok'), +})); + +import { createSlotInstance } from '../plugin-sandbox/host-bridge'; + +function plugin(): InstalledPlugin { + return { + id: 'p1', name: 'P', version: '1.0.0', author: '', description: '', type: 'hook', + permissions: [], entrypoint: 'index.js', enabled: true, status: 'running', settings: {}, + }; +} + +const instances: Array<{ destroy(): void }> = []; +afterEach(() => { + for (const i of instances.splice(0)) i.destroy(); +}); + +// A slot iframe of 300x100 px; messages come from its own (null-origin) window. +function slot() { + const onFloatingDropdown = vi.fn(); + const inst = createSlotInstance({ + plugin: plugin(), slot: 'plugin-dialog', code: '', locale: 'en', tier: 'untrusted', extraProps: {}, + hostContainer: document.body, onResize: vi.fn(), onFloatingDropdown, + }); + instances.push(inst); + inst.iframe.getBoundingClientRect = () => ({ left: 0, top: 0, right: 300, bottom: 100, width: 300, height: 100, x: 0, y: 0, toJSON: () => ({}) }); + const post = (data: unknown) => + window.dispatchEvent(new MessageEvent('message', { data, origin: 'null', source: inst.iframe.contentWindow })); + return { onFloatingDropdown, post }; +} + +const goodRect = { left: 10, top: 20, bottom: 50, width: 200, height: 30 }; + +describe('floating dropdown messages from a plugin', () => { + it('passes a well-formed open message through', () => { + const { onFloatingDropdown, post } = slot(); + post({ + type: 'floating-dropdown-open', id: 'x-listbox', rect: goodRect, + options: [{ value: 'a', label: 'A' }], selectedValues: [], highlightedIndex: 0, + }); + expect(onFloatingDropdown).toHaveBeenCalledTimes(1); + expect(onFloatingDropdown.mock.calls[0][0]).toMatchObject({ id: 'x-listbox', rect: goodRect, options: [{ value: 'a', label: 'A' }] }); + }); + + it('drops an open message whose options are not a list, so the host never renders it', () => { + const { onFloatingDropdown, post } = slot(); + post({ type: 'floating-dropdown-open', id: 'x', rect: goodRect, options: 'boom', selectedValues: [], highlightedIndex: 0 }); + expect(onFloatingDropdown).not.toHaveBeenCalled(); + }); + + it('keeps only options with string labels and fills in missing selectedValues', () => { + const { onFloatingDropdown, post } = slot(); + post({ + type: 'floating-dropdown-open', id: 'x', rect: goodRect, highlightedIndex: 0, + options: [{ value: 'a', label: { $$typeof: 'x' } }, { value: 'b', label: 'B' }, null], + }); + const msg = onFloatingDropdown.mock.calls[0][0]; + expect(msg.options).toEqual([{ value: 'b', label: 'B' }]); + expect(msg.selectedValues).toEqual([]); + }); + + it('clamps the anchor rect to the plugin frame', () => { + const { onFloatingDropdown, post } = slot(); + post({ + type: 'floating-dropdown-open', id: 'x', options: [], selectedValues: [], highlightedIndex: -1, + rect: { left: -900, top: 5000, bottom: 6000, width: 99999, height: 1000 }, + }); + expect(onFloatingDropdown.mock.calls[0][0].rect).toEqual({ left: 0, top: 100, bottom: 100, width: 300, height: 0 }); + }); + + it('ignores a bad rect in an update but keeps the rest', () => { + const { onFloatingDropdown, post } = slot(); + post({ type: 'floating-dropdown-update', id: 'x', rect: { left: 'a' }, highlightedIndex: 2 }); + expect(onFloatingDropdown.mock.calls[0][0]).toEqual({ type: 'floating-dropdown-update', id: 'x', highlightedIndex: 2 }); + }); +}); diff --git a/lib/plugin-sandbox/host-bridge.ts b/lib/plugin-sandbox/host-bridge.ts index deb34af95..6076898fc 100644 --- a/lib/plugin-sandbox/host-bridge.ts +++ b/lib/plugin-sandbox/host-bridge.ts @@ -18,10 +18,95 @@ import type { SandboxToHost, HostToSandbox, InitMsg, InitPayload, StreamChunkMsg, StreamEndMsg, StreamProgressMsg, FloatingDropdownOpenMsg, FloatingDropdownUpdateMsg, FloatingDropdownCloseMsg, FloatingDropdownSelectMsg, FloatingDropdownHighlightMsg, FloatingDropdownDismissMsg, + FloatingDropdownOption, FloatingDropdownRect, } from './protocol'; export type FloatingDropdownHostMsg = FloatingDropdownOpenMsg | FloatingDropdownUpdateMsg | FloatingDropdownCloseMsg; +// ─── Floating dropdown messages ────────────────────────────── + +const MAX_DROPDOWN_OPTIONS = 500; +const MAX_DROPDOWN_TEXT = 500; + +function str(v: unknown, max = MAX_DROPDOWN_TEXT): string | undefined { + return typeof v === 'string' ? v.slice(0, max) : undefined; +} + +function clamp(v: unknown, min: number, max: number): number | null { + if (typeof v !== 'number' || !Number.isFinite(v)) return null; + return Math.min(Math.max(v, min), Math.max(min, max)); +} + +function cleanRect(r: unknown, frameW: number, frameH: number): FloatingDropdownRect | null { + if (!r || typeof r !== 'object') return null; + const o = r as Record; + const left = clamp(o.left, 0, frameW); + const top = clamp(o.top, 0, frameH); + if (left === null || top === null) return null; + const bottom = clamp(o.bottom, top, frameH); + const width = clamp(o.width, 0, frameW - left); + if (bottom === null || width === null) return null; + return { left, top, bottom, width, height: bottom - top }; +} + +function cleanOptions(v: unknown): FloatingDropdownOption[] | null { + if (!Array.isArray(v)) return null; + const out: FloatingDropdownOption[] = []; + for (const item of v.slice(0, MAX_DROPDOWN_OPTIONS)) { + if (!item || typeof item !== 'object') continue; + const o = item as Record; + const value = str(o.value); + const label = str(o.label); + if (value === undefined || label === undefined) continue; + out.push(o.disabled === true ? { value, label, disabled: true } : { value, label }); + } + return out; +} + +function cleanValues(v: unknown): string[] | null { + if (!Array.isArray(v)) return null; + return v.slice(0, MAX_DROPDOWN_OPTIONS).filter((x): x is string => typeof x === 'string'); +} + +/** + * Check a floating-dropdown message from a plugin before the host renders + * it in its own DOM: drop messages with a bad id or shape, cap sizes, keep + * only string labels, and clamp the anchor rect (iframe coordinates) to the + * frame so a plugin can't put a host-drawn popup anywhere on the page. + */ +export function sanitizeFloatingDropdownMsg( + msg: FloatingDropdownHostMsg, + frameW: number, + frameH: number, +): FloatingDropdownHostMsg | null { + const id = str(msg.id, 200); + if (!id) return null; + if (msg.type === 'floating-dropdown-close') return { type: msg.type, id }; + const highlighted = typeof msg.highlightedIndex === 'number' && Number.isInteger(msg.highlightedIndex) + ? msg.highlightedIndex : undefined; + if (msg.type === 'floating-dropdown-open') { + const rect = cleanRect(msg.rect, frameW, frameH); + const options = cleanOptions(msg.options); + if (!rect || !options) return null; + return { + type: msg.type, id, rect, options, + multiple: msg.multiple === true, + selectedValues: cleanValues(msg.selectedValues) ?? [], + singleValue: str(msg.singleValue), + highlightedIndex: highlighted ?? -1, + ariaLabel: str(msg.ariaLabel), + }; + } + const out: FloatingDropdownUpdateMsg = { type: 'floating-dropdown-update', id }; + if (msg.rect !== undefined) { const r = cleanRect(msg.rect, frameW, frameH); if (r) out.rect = r; } + if (msg.options !== undefined) { const o = cleanOptions(msg.options); if (o) out.options = o; } + if (msg.selectedValues !== undefined) { const v = cleanValues(msg.selectedValues); if (v) out.selectedValues = v; } + if (typeof msg.multiple === 'boolean') out.multiple = msg.multiple; + if (typeof msg.singleValue === 'string') out.singleValue = str(msg.singleValue); + if (highlighted !== undefined) out.highlightedIndex = highlighted; + return out; +} + // ─── Callback marshalling ──────────────────────────────────── /** @@ -375,7 +460,11 @@ export class SandboxInstance { case 'floating-dropdown-open': case 'floating-dropdown-update': case 'floating-dropdown-close': { - this.slotFloatingDropdownCb?.(msg); + // The host draws this dropdown in its own DOM, so a malformed message + // must not crash the app, and the anchor must stay inside the frame. + const frame = this.iframe.getBoundingClientRect(); + const clean = sanitizeFloatingDropdownMsg(msg, frame.width, frame.height); + if (clean) this.slotFloatingDropdownCb?.(clean); return; } } From f3482ce0206d38d937fd1f975fafd91dfeabbf19 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 00:13:46 +0200 Subject: [PATCH 065/238] fix: remember restored sign-ins only when the restoring account is remembered --- app/(main)/admin/_tabs/policy.tsx | 2 +- lib/__tests__/account-archive-client.test.ts | 18 +++++++++++++++++- lib/account-archive-client.ts | 9 ++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/(main)/admin/_tabs/policy.tsx b/app/(main)/admin/_tabs/policy.tsx index 4b6e94eb1..c5b410022 100644 --- a/app/(main)/admin/_tabs/policy.tsx +++ b/app/(main)/admin/_tabs/policy.tsx @@ -39,7 +39,7 @@ const FEATURE_GATE_LABELS: Partial { }); const result = await restoreArchive([entry('a@example.com', 'right'), entry('b@example.com', 'stale'), entry('c@example.com')], true); expect(auth.signIn).toHaveBeenCalledTimes(2); - expect(auth.signIn).toHaveBeenCalledWith(generateAccountId('a@example.com', server), 'right', true); + expect(auth.signIn).toHaveBeenCalledWith(generateAccountId('a@example.com', server), 'right', false); expect(result).toMatchObject({ added: 3, signedIn: 1, signInFailed: 1, waiting: 2 }); }); + it('remembers the restored sign-ins only when the restoring account is remembered', async () => { + auth.signIn.mockResolvedValue(true); + const owner = add('owner@example.com', 'basic'); + useAccountStore.getState().updateAccount(owner, { rememberMe: false }); + useAccountStore.setState({ activeAccountId: owner }); + await restoreArchive([entry('a@example.com', 'right')], true); + expect(auth.signIn).toHaveBeenLastCalledWith(generateAccountId('a@example.com', server), 'right', false); + + useAccountStore.getState().updateAccount(owner, { rememberMe: true }); + await restoreArchive([entry('b@example.com', 'right')], true); + expect(auth.signIn).toHaveBeenLastCalledWith(generateAccountId('b@example.com', server), 'right', true); + + await restoreArchive([entry('c@example.com', 'right')], false); + expect(auth.signIn).toHaveBeenLastCalledWith(generateAccountId('c@example.com', server), 'right', false); + }); + it('does not sign in again to an account already connected here', async () => { const id = add('a@example.com', 'basic'); auth.clients.set(id, { getBasicPassword: () => 'right' }); diff --git a/lib/account-archive-client.ts b/lib/account-archive-client.ts index 3eb83c826..c17a14b15 100644 --- a/lib/account-archive-client.ts +++ b/lib/account-archive-client.ts @@ -75,8 +75,15 @@ export function restoreAccounts(archived: ArchivedAccount[]): { added: number; u * Restores the list, then signs in one by one to the accounts saved with a * password that are not signed in here yet. An account whose password no * longer works keeps waiting for a sign-in by hand. + * + * A restored sign-in is remembered only when the server allows it and the + * account doing the restore was itself signed in with "Remember me": on a + * shared computer, restoring must not leave long-lived sessions behind. */ -export async function restoreArchive(archived: ArchivedAccount[], rememberMe: boolean) { +export async function restoreArchive(archived: ArchivedAccount[], rememberMeAllowed: boolean) { + const accounts = useAccountStore.getState(); + const active = accounts.accounts.find(a => a.id === accounts.activeAccountId); + const rememberMe = rememberMeAllowed && !!active?.rememberMe; const result = restoreAccounts(archived); let signedIn = 0, signInFailed = 0; for (const entry of archived) { From dca10ba9aa431f87425da59a7d3f8f93600b519c Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 16 Oct 2026 23:35:01 +0200 Subject: [PATCH 066/238] feat: translate the company directory into Estonian --- locales/et/common.json | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/locales/et/common.json b/locales/et/common.json index c0e06d1b8..68216b69e 100644 --- a/locales/et/common.json +++ b/locales/et/common.json @@ -626,6 +626,7 @@ "plugin_panel_hide": "Peida pistikprogrammi paneel" }, "email_composer": { + "select_from_directory": "Vali kataloogist", "minimize": "Minimeeri", "maximize": "Täisekraan", "restore": "Taasta", @@ -2739,6 +2740,48 @@ } }, "contacts": { + "directory": { + "title": "Kataloog", + "search_placeholder": "Otsi nime või e-posti aadressi", + "refresh": "Värskenda kataloogi", + "retry": "Proovi uuesti", + "loading": "Kataloogi laaditakse…", + "unavailable_title": "Kataloog puudub", + "unavailable_hint": "Sinu meiliserver ei paku kontode kataloogi.", + "forbidden_title": "Kataloog pole saadaval", + "forbidden_hint": "Sinu meiliserver ei luba selle kontoga kataloogi sirvida. Küsi oma administraatorilt.", + "error_title": "Kataloogi laadimine ebaõnnestus", + "error_hint": "Kontrolli ühendust ja proovi uuesti.", + "empty_title": "Kataloog on tühi", + "empty_hint": "Sinu meiliserver ei näita ühtegi e-posti aadressiga kontot.", + "no_match": "Kataloogis pole kedagi, kes sinu otsingule vastaks", + "refresh_failed": "Kataloogi värskendamine ebaõnnestus. Näidatakse viimati laaditud nimekirja.", + "select_page": "Vali kõik sellel lehel", + "deselect_page": "Tühista valik sellel lehel", + "select_entry": "Vali {name}", + "range": "{from}–{to} / {total}", + "page": "Leht {page} / {count}", + "previous_page": "Eelmine leht", + "next_page": "Järgmine leht", + "picker_title": "Vali kataloogist", + "cancel": "Tühista", + "selected_count": "{count} valitud", + "add_to": "Lisa saajaks", + "add_cc": "Lisa CC-sse", + "add_bcc": "Lisa BCC-sse", + "select_hint": "Vali keegi, et näha tema andmeid", + "write_email": "Kirjuta kiri", + "add_to_contacts": "Lisa kontaktidesse", + "email": "E-post", + "read_only_note": "Kataloogi kirjed tulevad sinu meiliserverist ja neid ei saa siin muuta.", + "type": { + "individual": "Isik", + "group": "Grupp", + "resource": "Ressurss", + "location": "Asukoht", + "other": "Muu" + } + }, "title": "Kontaktid", "search_placeholder": "Otsi kontakte...", "create_new": "Uus kontakt", From eb100c6aac6052db1107b6c0ea9975442d6496db Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 16 Oct 2026 23:35:30 +0200 Subject: [PATCH 067/238] fix: draw the Estonian flag without a shared clip path id --- components/ui/flag-icons.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ui/flag-icons.tsx b/components/ui/flag-icons.tsx index 7c956a1ff..254f6eadd 100644 --- a/components/ui/flag-icons.tsx +++ b/components/ui/flag-icons.tsx @@ -128,7 +128,7 @@ function FlagTW(props: FlagProps) { // Estonia is not in Twemoji's set used above; drawn here in the same style. function FlagEE(props: FlagProps) { - return ; + return ; } export const flagComponents: Record ReactElement> = { From b23735fb6b28f8547e3b808003fe9c9f8017dc74 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 14:41:32 +0200 Subject: [PATCH 068/238] feat: translate the strings added since the Estonian locale was made --- locales/et/common.json | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/locales/et/common.json b/locales/et/common.json index 68216b69e..09d85edef 100644 --- a/locales/et/common.json +++ b/locales/et/common.json @@ -142,6 +142,8 @@ "show_all_tags": "Näita kõiki ({count})", "show_fewer_tags": "Näita vähem", "folders": "Kaustad", + "your_folders": "Sinu kaustad", + "create_folder": "Loo kaust", "show_more": "Rohkem", "show_fewer": "Vähem", "shared": "Jagatud", @@ -713,6 +715,10 @@ "option_dsn_hint": "Saa aruanne, kui server kirja kohale toimetab", "option_require_tls": "Nõua krüpteeritud kohaletoimetamist", "option_require_tls_hint": "Toimeta kohale ainult TLS-iga, muidu lükka tagasi", + "option_priority": "Prioriteet", + "option_priority_high": "Kõrge", + "option_priority_normal": "Tavaline", + "option_priority_low": "Madal", "validation": { "recipient_required": "Saatmiseks lisa saaja", "body_required": "Kirjuta sõnum või lisa fail", @@ -876,6 +882,8 @@ "emails_moved": "{count} e-kirja liigutati", "moved_to_mailbox": "Liigutatud kausta {mailbox}", "move_failed": "Liigutamine ebaõnnestus", + "removed_from_folder": "Eemaldatud kaustast {mailbox}", + "remove_from_folder_failed": "Sellest kaustast ei õnnestunud eemaldada", "emails_copied": "{count} kirja kopeeritud", "copy_failed": "Kopeerimine ebaõnnestus", "move_error": "E-kirju ei õnnestunud valitud kausta liigutada", @@ -1182,6 +1190,10 @@ "label": "Värvi loendirida sildi värviga", "description": "Tooni iga kirja rida selle esimese sildi värviga. Lülita välja, et read jääksid tavalised; sildipunktid ja -märgised näitavad värvi ikkagi." }, + "show_account_dot": { + "label": "Näita konto täppi", + "description": "Ühendatud vaates näidatakse saatja kõrval konto värvi täppi, et oleks näha, millisest kontost kiri pärineb. Ei mõju, kui read on konto värviga toonitud." + }, "tint_list_rows_by_account": { "label": "Toonita nimekirja read konto värviga", "description": "Ühendatud vaates varjuta iga rida konto värviga konto punkti näitamise asemel. Sellel on eelis sildi värvi ees; sildid säilitavad oma värvi oma märgistel." @@ -1736,6 +1748,7 @@ "backup": { "title": "Kontode nimekirja varukoopia", "description": "Hoia selle brauseri kontode nimekirja serveris, krüpteeritult parooliga, mida tead ainult sina, ja too see tagasi teises seadmes. Postkastide paroole ei salvestata: igasse taastatud kontosse logid ise sisse.", + "description_passwords": "Hoia selle brauseri kontode nimekirja serveris, krüpteeritult parooliga, mida tead ainult sina, ja too see tagasi teises seadmes. Soovi korral saad lisada ka postkastide paroolid, nii et taastatud kontod logivad ise sisse.", "status_none": "Kontole {account} pole nimekirja salvestatud.", "status_saved": "Kontole {account} on nimekiri salvestatud.", "save": "Salvesta nimekiri", @@ -1747,9 +1760,15 @@ "password_hint": "Vähemalt 10 märki. Seda ei saa taastada: kui unustad, salvesta nimekiri uuesti uue parooliga.", "restore_hint": "Parool, mille valisid nimekirja salvestamisel.", "confirm": "Kinnita parool", + "include_passwords": "Lisa postkastide paroolid", + "include_passwords_hint": "Siin parooliga sisse logitud kontod logivad pärast taastamist ise sisse. Igaüks, kes teab varukoopia parooli, pääseb ligi kõigile nimekirja postkastidele.", "saved": "Nimekiri salvestatud ({count, plural, one {# konto} other {# kontot}}).", "restored": "Lisatud kontosid: {added}. Juba olemasolevaid ja uuendatud kontosid: {updated}. Sisselogimiseks ava iga uus konto kontode nimekirjast.", + "restored_signed_in": "Lisatud kontosid: {added}. Juba olemasolevaid ja uuendatud kontosid: {updated}.", "skipped": "{count, plural, one {# kontot} other {# kontot}} ei lisatud: kontode piir on täis.", + "saved_passwords": "Paroolid lisatud {count, plural, one {# kontole} other {# kontole}}.", + "signed_in": "Salvestatud parooliga logiti sisse {count, plural, one {# kontosse} other {# kontosse}}.", + "sign_in_failed": "{count, plural, one {# salvestatud parool lükati tagasi} other {# salvestatud parooli lükati tagasi}}: logi neisse kontodesse kontode nimekirjast sisse.", "deleted": "Salvestatud nimekiri kustutatud.", "errors": { "mismatch": "Paroolid ei kattu.", @@ -2036,6 +2055,11 @@ "new_folder_name": "Kausta nimi", "rename": "Nimeta ümber", "change_icon": "Muuda ikooni", + "count_mode": "Kausta {name} loendur", + "count_mode_default": "Loendur: vaikimisi", + "count_mode_unread": "Ainult lugemata", + "count_mode_all": "Lugemata ja kokku", + "count_mode_none": "Loendurit pole", "delete": "Kustuta", "confirm_delete": "Kas oled kindel, et soovid kustutada kausta \"{name}\"? Selles kaustas olevad kirjad liigutatakse prügikasti.", "create": "Loo", @@ -2085,7 +2109,11 @@ }, "sender_favicons": { "label": "Saatja favicon'id", - "description": "Näita äriliste saatjate profiilipiltidena veebisaitide ikoone" + "description": "Näita äriliste saatjate profiilipiltidena veebisaitide ikoone", + "refresh_label": "Värskenda saatjate ikoone", + "refresh_description": "Laadi veebisaitide ikoonid uuesti, näiteks kui saatja on oma ikooni muutnud", + "refresh_button": "Värskenda", + "refresh_done": "Saatjate ikoonid laaditakse uuesti" }, "show_avatars_in_junk": { "label": "Näita avatare rämpsposti kaustas", @@ -2505,6 +2533,7 @@ "unpin": "Eemalda kinnitus", "move_to": "Liiguta kausta...", "copy_to_account": "Kopeeri kontole...", + "remove_from_folder": "Eemalda sellest kaustast", "archive": "Arhiveeri", "delete": "Kustuta", "mark_as_spam": "Märgi rämpspostiks", @@ -2602,7 +2631,9 @@ "previous_email": "Eelmine e-kiri", "open_email": "Ava e-kiri", "close_email": "Sulge / tühista valik", - "go_to_folder": "Mine kausta" + "go_to_folder": "Mine kausta", + "next_unread": "Järgmine lugemata e-kiri", + "no_more_unread": "Allpool loendis pole rohkem lugemata e-kirju" }, "actions": { "reply": "Vasta", @@ -2621,7 +2652,8 @@ "help": "Näita kiirklahve", "refresh": "Värskenda e-kirjad", "select_all": "Vali kõik", - "global_search": "Otsi kõike" + "global_search": "Otsi kõike", + "extend_selection": "Laienda valikut alla / üles" }, "threads": { "expand_collapse": "Ava/sulge vestlus", From 99cf78a2803cf48472464dc5f43283ffc9e4367c Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 00:10:22 +0200 Subject: [PATCH 069/238] fix: keep shared folders from other servers when they reuse an account id #1108 --- lib/__tests__/unified-mailbox-dedupe.test.ts | 20 ++++++++++++++++++++ lib/unified-mailbox.ts | 19 ++++++++++++++----- stores/email-store.ts | 6 +++--- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/lib/__tests__/unified-mailbox-dedupe.test.ts b/lib/__tests__/unified-mailbox-dedupe.test.ts index 4499a0b96..4eeb42bcc 100644 --- a/lib/__tests__/unified-mailbox-dedupe.test.ts +++ b/lib/__tests__/unified-mailbox-dedupe.test.ts @@ -54,4 +54,24 @@ describe('dedupeUnifiedAccounts', () => { const group = sharedEntry('G', 'login-a', [mb('G:inbox', 'inbox', 1, 'inbox')]); expect(dedupeUnifiedAccounts([a, b, group])).toEqual([a, b, group]); }); + it('does not merge equal JMAP ids that live on different servers', () => { + // Stalwart hands out the same short account and mailbox ids on every + // server, so login A's own folder and a folder shared to login B on + // another server can both be account "c", mailbox "f1". + const server = (url: string) => ({ getServerUrl: () => url } as unknown as IJMAPClient); + const own = makeAccount({ accountId: 'login-a', jmapAccountId: 'c', client: server('https://one.example'), mailboxes: [mb('f1', undefined, 1)] }); + const sharedElsewhere = sharedEntry('c', 'login-b', [mb('c:f1', undefined, 2, 'f1')]); + sharedElsewhere.client = server('https://two.example'); + const out = dedupeUnifiedAccounts([own, sharedElsewhere]); + expect(out).toEqual([own, sharedElsewhere]); + expect(getCrossUnreadTotal(out)).toBe(3); + }); + + it('still merges the same folder reached through two logins of one server', () => { + const server = (url: string) => ({ getServerUrl: () => url } as unknown as IJMAPClient); + const own = makeAccount({ accountId: 'login-a', jmapAccountId: 'c', client: server('https://one.example'), mailboxes: [mb('f1', undefined, 1)] }); + const viaGrantee = sharedEntry('c', 'login-b', [mb('c:f1', undefined, 1, 'f1')]); + viaGrantee.client = server('https://ONE.example/'); + expect(dedupeUnifiedAccounts([viaGrantee, own])).toEqual([own]); + }); }); diff --git a/lib/unified-mailbox.ts b/lib/unified-mailbox.ts index 2be114442..203b70940 100644 --- a/lib/unified-mailbox.ts +++ b/lib/unified-mailbox.ts @@ -768,6 +768,11 @@ export function connectedAccountsGrew(previous: string | null, current: string): return current.split(',').some((id) => id !== '' && !before.has(id)); } +/** The server a client talks to, compared without case or a trailing slash. */ +export function unifiedServerKey(client: Pick | undefined): string { + return (client?.getServerUrl?.() ?? '').trim().replace(/\/+$/, '').toLowerCase(); +} + /** * How far the unified scope has got while logins are still reconnecting: * `{ loaded, total }` while some logins expected in it are not there yet, @@ -795,18 +800,22 @@ export function unifiedLoadProgress(input: { * shared with two logins at once, otherwise yields one entry per reaching * login: its messages list twice and its unread count is summed twice. * - * A mailbox is identified by its owning JMAP account + server-side id (a shared - * entry's `originalId`). Personal entries always win and are never trimmed, so + * A mailbox is identified by its server, its owning JMAP account and its + * server-side id (a shared entry's `originalId`). JMAP account and mailbox ids + * are only unique on one server (Stalwart hands out short ids like "b" or "c" + * everywhere), so logins on different servers never cover each other's + * folders. Personal entries always win and are never trimmed, so * an owner's folder is read through the owner's own login and honors their * folder selection. Shared entries keep only mailboxes not already covered and * are dropped when none remain. Order is preserved. */ export function dedupeUnifiedAccounts(accounts: UnifiedAccountClient[]): UnifiedAccountClient[] { const seen = new Set(); - const key = (jmapAccountId: string, mailboxId: string) => `${jmapAccountId}\u0000${mailboxId}`; + const key = (account: UnifiedAccountClient, mailboxId: string) => + `${unifiedServerKey(account.client)}\u0000${account.jmapAccountId}\u0000${mailboxId}`; for (const account of accounts) { if (account.isShared) continue; - for (const m of account.mailboxes) seen.add(key(account.jmapAccountId, m.id)); + for (const m of account.mailboxes) seen.add(key(account, m.id)); } const out: UnifiedAccountClient[] = []; for (const account of accounts) { @@ -815,7 +824,7 @@ export function dedupeUnifiedAccounts(accounts: UnifiedAccountClient[]): Unified continue; } const mailboxes = account.mailboxes.filter((m) => { - const k = key(account.jmapAccountId, m.originalId ?? m.id); + const k = key(account, m.originalId ?? m.id); if (seen.has(k)) return false; seen.add(k); return true; diff --git a/stores/email-store.ts b/stores/email-store.ts index c5ec41781..67d765405 100644 --- a/stores/email-store.ts +++ b/stores/email-store.ts @@ -18,7 +18,7 @@ import { emailSummary, emailToReadView } from "@/lib/plugin-projection"; import { resolveThreadRoute } from "@/lib/thread-routing"; import { emailKeyFor, threadKeyFor, threadIdFromKey, KEYWORD_PREFIX, KEYWORD_PREFIX_LEGACY } from "@/lib/thread-utils"; import type { ExternalSearchResult } from "@/lib/plugin-types"; -import { positionsByAccount, fetchUnifiedEmails, fetchUnifiedMailboxCounts, searchUnifiedEmails, advancedSearchUnifiedEmails, fetchCrossViewEmails, searchCrossViewEmails, advancedSearchCrossViewEmails, fetchTagEmails, trashAndJunkIds, searchAcrossAccounts, advancedSearchAcrossAccounts, getCrossUnreadTotal, dedupeUnifiedAccounts, type AcrossAccountsSearchOptions, type UnifiedAccountClient, type UnifiedMailboxCounts } from "@/lib/unified-mailbox"; +import { positionsByAccount, fetchUnifiedEmails, fetchUnifiedMailboxCounts, searchUnifiedEmails, advancedSearchUnifiedEmails, fetchCrossViewEmails, searchCrossViewEmails, advancedSearchCrossViewEmails, fetchTagEmails, trashAndJunkIds, searchAcrossAccounts, advancedSearchAcrossAccounts, getCrossUnreadTotal, dedupeUnifiedAccounts, unifiedServerKey, type AcrossAccountsSearchOptions, type UnifiedAccountClient, type UnifiedMailboxCounts } from "@/lib/unified-mailbox"; import { defaultSearchScopeFor, isAllFoldersSearchScope, SEARCH_SCOPE_ALL_FOLDERS } from "@/lib/search-scope-folders"; import { useAuthStore } from "@/stores/auth-store"; import { pathNamesMailFolder } from "@/lib/deep-links"; @@ -1492,7 +1492,7 @@ export async function buildUnifiedAccountClients( const ownLoginJmapIds = new Set(); for (const a of authAccounts) { const c = allClients.get(a.id); - if (c) ownLoginJmapIds.add(c.getAccountId()); + if (c) ownLoginJmapIds.add(`${unifiedServerKey(c)} ${c.getAccountId()}`); } // Every login at once rather than one after the other: the slowest login, // not the sum of all of them, bounds how long the scope takes. @@ -1548,7 +1548,7 @@ export async function buildUnifiedAccountClients( // in the owner account instead of falling back to the active account. // When the owner is logged in too, its own (un-namespaced) list wins: // dedupeUnifiedAccounts routes that folder through the owner's login. - if (!ownLoginJmapIds.has(ownerId)) publish(ownerId, ownerMailboxes); + if (!ownLoginJmapIds.has(`${unifiedServerKey(c)} ${ownerId}`)) publish(ownerId, ownerMailboxes); } } } catch { From 4fa22200e726260434fc00aaa9b681efd76b75fd Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 17 Oct 2026 00:31:34 +0200 Subject: [PATCH 070/238] fix: keep vacation forwarding and plugin vetoes when a tag rename rewrites the filters #854 --- components/settings/keyword-settings.tsx | 9 +-- .../filter-store-keyword-rename.test.ts | 24 ++++++++ stores/filter-store.ts | 56 +++++++------------ 3 files changed, 46 insertions(+), 43 deletions(-) diff --git a/components/settings/keyword-settings.tsx b/components/settings/keyword-settings.tsx index 7468d8be9..d735d2f4e 100644 --- a/components/settings/keyword-settings.tsx +++ b/components/settings/keyword-settings.tsx @@ -602,13 +602,11 @@ export function KeywordSettings() { const outcome = await renameKeywordInFilters(client, oldId, keyword.id); rewroteFilters = outcome.changed > 0; if (outcome.unhandled > 0) { - const toastModule = await import('sonner'); - toastModule.toast.warning(t("filters_migration_error")); + toast.warning(t("filters_migration_error")); } } catch (error) { console.error("Failed to migrate keyword in filters:", error); - const toastModule = await import('sonner'); - toastModule.toast.warning(t("filters_migration_error")); + toast.warning(t("filters_migration_error")); } if (rewroteFilters) { @@ -621,8 +619,7 @@ export function KeywordSettings() { fetchTagCounts(client); } catch (error) { console.error("Failed to sweep up mail tagged during the rename:", error); - const toastModule = await import('sonner'); - toastModule.toast.error(t("migration_error")); + toast.error(t("migration_error")); } } diff --git a/stores/__tests__/filter-store-keyword-rename.test.ts b/stores/__tests__/filter-store-keyword-rename.test.ts index ff936c301..89f7c4a9d 100644 --- a/stores/__tests__/filter-store-keyword-rename.test.ts +++ b/stores/__tests__/filter-store-keyword-rename.test.ts @@ -1,6 +1,7 @@ import { describe, it, expect, beforeEach, vi } from 'vitest'; import { useFilterStore } from '../filter-store'; import { generateScript } from '@/lib/sieve/generator'; +import { parseScript } from '@/lib/sieve/parser'; import { filterHooks } from '@/lib/plugin-hooks'; import type { FilterRule } from '@/lib/jmap/sieve-types'; import type { IJMAPClient } from '@/lib/jmap/client-interface'; @@ -114,6 +115,7 @@ describe('filter-store renameKeywordInFilters', () => { const client = { supportsSieve: () => true, getSieveAccountId: () => 'primary', + getSieveCapabilities: () => null, getSieveScripts: async () => [], } as unknown as IJMAPClient; @@ -199,4 +201,26 @@ describe('filter-store renameKeywordInFilters', () => { useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'), ).rejects.toThrow('over quota'); }); + it('keeps the forwarding set up in the vacation card', async () => { + const forward = { enabled: true, to: 'kollege@example.com', keepCopy: false }; + const { client, updateSieveScript } = makeClient(generateScript([makeRule()], undefined, { vacationForward: forward })); + expect(parseScript(generateScript([makeRule()], undefined, { vacationForward: forward })).vacationForward).toEqual(forward); + + await useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso'); + + const uploaded = updateSieveScript.mock.calls[0][1]; + expect(uploaded).toContain('$label:iso'); + expect(parseScript(uploaded).vacationForward).toEqual(forward); + }); + + it('writes nothing when a plugin stops filter saves', async () => { + filterHooks.onBeforeFiltersSave.register('test-veto', () => false); + try { + const { client, updateSieveScript } = makeClient(generateScript([makeRule()])); + await expect(useFilterStore.getState().renameKeywordInFilters(client, 'red', 'iso')).rejects.toThrow(); + expect(updateSieveScript).not.toHaveBeenCalled(); + } finally { + filterHooks.onBeforeFiltersSave.clear(); + } + }); }); diff --git a/stores/filter-store.ts b/stores/filter-store.ts index b36ec5503..b3f08f69c 100644 --- a/stores/filter-store.ts +++ b/stores/filter-store.ts @@ -4,7 +4,8 @@ import type { FilterRule, SieveCapabilities, VacationAudience, VacationForward, import { parseScript } from '@/lib/sieve/parser'; import { generateScript, supportsSpamGuard, VACATION_SCRIPT_NAME } from '@/lib/sieve/generator'; import { - OpaqueFiltersError, applyScriptTransforms, assertFiltersSaveAllowed, filterRuleToView, supportsInclude, writeFiltersScript, + OpaqueFiltersError, applyScriptTransforms, assertFiltersSaveAllowed, filterRuleToView, readAccountFilters, renderFiltersScript, + supportsInclude, writeFiltersScript, } from '@/lib/filters/account-filters'; import { countKeywordUses, renameKeywordInRules } from '@/lib/sieve/keyword-rename'; import { filterHooks } from '@/lib/plugin-hooks'; @@ -284,54 +285,35 @@ export const useFilterStore = create()((set, get) => ({ // permits, and which the caller's message migration, bound to the mail // primary, would not have covered anyway. const accountId = client.getSieveAccountId(); - const scripts = (await client.getSieveScripts(accountId)).filter(s => s.name !== 'vacation'); - const activeScript = scripts.find(s => s.isActive); - if (!activeScript) { - // Nothing is filtering mail right now. Rewriting an inactive script would - // mean activating it - updateSieveScript activates on write - and a tag - // rename must not switch someone's filters back on. + // The same read, render and write a normal save and a rule made from a + // message use, so the vacation include, forwarding, audience and the + // plugin pipeline survive the rename. + const filters = await readAccountFilters(client, accountId); + if (!filters.script || filters.activeScriptId !== filters.script.id) { + // Nothing is filtering mail right now. Writing would activate the + // script, and a tag rename must not switch someone's filters back on. return nothing; } - - const content = await client.getSieveScriptContent(activeScript.blobId, accountId); - const parsed = parseScript(content); - if (parsed.isOpaque) { - return { changed: 0, unhandled: countKeywordUses(content, oldId) }; + if (filters.parsed.isOpaque) { + return { changed: 0, unhandled: countKeywordUses(filters.content, oldId) }; } - const { rules, changed } = renameKeywordInRules(parsed.rules, oldId, newId); - if (changed === 0) return { changed: 0, unhandled: countKeywordUses(content, oldId) }; + const { rules, changed } = renameKeywordInRules(filters.parsed.rules, oldId, newId); + if (changed === 0) return { changed: 0, unhandled: countKeywordUses(filters.content, oldId) }; - let script = generateScript(rules, parsed.vacation || undefined, { - externalRequires: parsed.externalRequires, - }); - // Same plugin pipeline a normal save runs through: a plugin's managed - // section is grafted on at generate time, so skipping the transform here - // would drop it from the script this write makes active. - const transformed = await filterHooks.onSieveScriptGenerate.transform(script, { accountId }); - if (typeof transformed === 'string' && transformed.trim().length > 0) { - script = transformed; - } - - // Count what still names the old tag in the script actually being written, + // A plugin can veto filter saves; the caller warns when this throws. + await assertFiltersSaveAllowed(rules); + const written = await writeFiltersScript(client, accountId, renderFiltersScript(rules, filters), filters.script.id); + // Count what still names the old tag in the script actually written, // after the plugin transform: a rule kept verbatim, a test comparing // against the keyword, or a section a plugin just grafted back on. - const unhandled = countKeywordUses(script, oldId); - - await client.updateSieveScript(activeScript.id, script, true, accountId); + const unhandled = countKeywordUses(written.content, oldId); debug.log('filters', 'Renamed tag in', changed, 'filter action(s)'); const state = get(); if (state.selectedAccountId === accountId && !state.isOpaque) { - set({ - rules, - rawScript: script, - activeScriptId: activeScript.id, - vacationSettings: parsed.vacation || null, - externalRequires: parsed.externalRequires, - }); + set({ rules, rawScript: written.content, activeScriptId: written.scriptId }); } - void filterHooks.onSieveScriptChange.emit({ accountId, script }); return { changed, unhandled }; }, From ad9837d2d2de972471a93f324fff879f260cf136 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 15:05:08 +0200 Subject: [PATCH 071/238] fix: add the Estonian text for the tag rename warning --- locales/et/common.json | 1 + 1 file changed, 1 insertion(+) diff --git a/locales/et/common.json b/locales/et/common.json index 09d85edef..dde3afcb6 100644 --- a/locales/et/common.json +++ b/locales/et/common.json @@ -1246,6 +1246,7 @@ "cancel": "Tühista", "migrating": "Sildi uuendamine olemasolevatel kirjadel…", "migration_error": "Sildi uuendamine olemasolevatel kirjadel ebaõnnestus", + "filters_migration_error": "Mõned filtrireeglid kasutavad endiselt vana silti: uuenda need käsitsi", "nesting": { "label": "Pesastatud sildid", "description": "Pesasta silte teiste siltide alla ja kuva neid külgribal puuna." From ea1d1e2870f8cf894748cf191df27e5e06010c70 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 16:01:43 +0200 Subject: [PATCH 072/238] fix: stop re-rendering every row when a search starts --- .../thread-list-item-source-folder.test.tsx | 19 ++++++++++++++++++- components/email/thread-list-item.tsx | 12 ++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/components/email/__tests__/thread-list-item-source-folder.test.tsx b/components/email/__tests__/thread-list-item-source-folder.test.tsx index 023ab287d..672aad8da 100644 --- a/components/email/__tests__/thread-list-item-source-folder.test.tsx +++ b/components/email/__tests__/thread-list-item-source-folder.test.tsx @@ -1,4 +1,5 @@ -import { render, screen } from '@testing-library/react'; +import { Profiler } from 'react'; +import { act, render, screen } from '@testing-library/react'; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { ThreadListItem } from '../thread-list-item'; import { useSettingsStore, DEFAULT_KEYWORDS } from '@/stores/settings-store'; @@ -56,6 +57,7 @@ function renderThread(emails: Email[]) { ); } +const noop = () => {}; const single = () => [makeEmail()]; const conversation = () => [ makeEmail({ id: 'email-1', receivedAt: '2024-01-15T10:00:00Z' }), @@ -123,5 +125,20 @@ describe('ThreadListItem folder chip in search results (#1172)', () => { renderThread(emails()); expect(screen.getByTitle('Archive')).toBeTruthy(); }); + + it('does not re-render a row without a folder when a search starts', () => { + // The folder's own list stays on screen until the results arrive; its + // rows carry no sourceFolder and have no chip to show. + const [thread] = groupEmailsByThread(emails().map((e) => ({ ...e, sourceFolder: undefined }))); + const onRender = vi.fn(); + render( + + + , + ); + onRender.mockClear(); + act(() => useEmailStore.setState({ searchQuery: 'invoice', searchMailboxId: '' })); + expect(onRender).not.toHaveBeenCalled(); + }); }); }); diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index 95d7c3bff..0719eb98d 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -253,9 +253,13 @@ function SourceFolderTag({ name }: { name: string }) { * Whether rows show their folder chip: in the aggregate "All …" views, and in * search results that span every folder rather than the one picked in the * search panel (#1172). Rows of a single-folder list carry no sourceFolder. + * + * Such a row never subscribes to the view state: starting a search flips it + * while the old list is still on screen, and every row re-rendered for a chip + * it has nothing to put in. */ -function useShowSourceFolder(): boolean { - return useEmailStore((state) => state.isUnifiedView || isUnscopedSearchActive(state)); +function useShowSourceFolder(sourceFolder: string | undefined): boolean { + return useEmailStore((state) => !!sourceFolder && (state.isUnifiedView || isUnscopedSearchActive(state))); } /** @@ -377,7 +381,7 @@ const SingleEmailItem = React.forwardRef( const interfaceLayout = useSettingsStore((state) => state.interfaceLayout); const hideJunkAvatarImages = currentMailboxRole === 'junk' && !showAvatarsInJunk; // Show the originating folder in the aggregate "All …" views. - const showSourceFolder = useShowSourceFolder() && !!email.sourceFolder; + const showSourceFolder = useShowSourceFolder(email.sourceFolder); const getAccountById = useAccountStore((state) => state.getAccountById); const account = email.accountId ? getAccountById(email.accountId) : undefined; const accountColor = account?.avatarColor; @@ -932,7 +936,7 @@ export const ThreadListItem = React.forwardRef state.getAccountById); const threadAccount = latestEmail.accountId ? getAccountById(latestEmail.accountId) : undefined; const threadAccountColor = threadAccount?.avatarColor; From 0e6733d5e6cb11b14c22f5c66a865b748531a050 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 16:23:54 +0200 Subject: [PATCH 073/238] fix: drop plain-text emphasis markers from message previews #1260 --- lib/__tests__/preview-leading-css.test.ts | 24 ++++++++++++++++++++++- lib/utils.ts | 18 +++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/lib/__tests__/preview-leading-css.test.ts b/lib/__tests__/preview-leading-css.test.ts index faf8d2cd7..df335b91d 100644 --- a/lib/__tests__/preview-leading-css.test.ts +++ b/lib/__tests__/preview-leading-css.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { cleanPreview, stripLeadingCss } from '@/lib/utils'; +import { cleanPreview, stripEmphasisMarkers, stripLeadingCss } from '@/lib/utils'; // Some servers build a message preview from its HTML without skipping the //
${body}
`; +const logo = (name, color) => ``; + +// Dates in the documents are phrased relative to "this month" so they do not +// contradict the fixtures, which float with the clock. +const now = new Date(); +const month = now.toLocaleString('en-GB', { month: 'long' }); +const year = now.getFullYear(); +const nextMonth = new Date(now.getFullYear(), now.getMonth() + 1, 1).toLocaleString('en-GB', { month: 'long' }); +const fmt = (d) => d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }); +const plus = (days) => { const d = new Date(now); d.setDate(d.getDate() + days); return d; }; + +const DOCS = { + // DesignCo invoice, attached to Sarah Kim's mail. + 'invoice-designco-2026-089.pdf': page(` +
${logo('DesignCo', '#0f8578')}
DesignCo Studio GmbH
Torstraße 112, 10119 Berlin
hello@designco.example
+

Invoice 2026-089

+
+
Billed to
Meridian Labs GmbH
Attn. Nora Lindqvist
Rosenthaler Str. 40, 10178 Berlin
+
Details
Issued ${fmt(now)}
Due ${fmt(plus(14))}
Project: Website redesign
+
+ + + + + + +
DescriptionHoursRateAmount
Landing page prototype, v3 (hero option B, asymmetric grid)24€110.00€2,640.00
Design system tokens and component audit12€110.00€1,320.00
Two review calls and revisions4€110.00€440.00
Subtotal€4,400.00
VAT 19%€836.00
Total due€5,236.00
+

Payment

Bank transfer to DesignCo Studio GmbH, IBAN DE02 1203 0000 0000 2020 51, reference 2026-089. The ${nextMonth} pre-payment has been backed out as agreed.

+
DesignCo Studio GmbH · HRB 98765 B · VAT DE 812 345 678Page 1 of 1
`), + + // Hotel voucher for the Lisbon trip. + 'hotel-voucher-lisbon.pdf': page(` +
${logo('Booking.com', '#003580')}Confirmed
+

Hotel Tejo Vista, Lisbon

+

Rua do Alecrim 48, 1200-018 Lisboa, Portugal · +351 21 555 0170

+
+
Check-in
${plus(9).getDate()}
${plus(9).toLocaleDateString('en-GB', { weekday: 'long', month: 'long' })}
from 15:00
+
Check-out
${plus(12).getDate()}
${plus(12).toLocaleDateString('en-GB', { weekday: 'long', month: 'long' })}
until 11:00
+
+ + + +
RoomNightsPrice
Superior double, river view, breakfast included3€486.00
City tax (paid at the property)€12.00
Paid€486.00
+

Confirmation

Number 4892.771.433 · PIN 2047. Show this voucher at reception. Free cancellation ended ${fmt(plus(2))}.

+
Guest: Nora Lindqvist · 1 adultBooking.com B.V.
`), + + // Boarding pass BER → LIS. + 'boarding-pass-ber-lis.pdf': page(` +
${logo('Lufthansa', '#05164d')}Boarding pass
+
+
+
Berlin
BER
+
→
+
Lisbon
LIS
+
+
+
Flight
LH 1796
+
Date
${fmt(plus(9))}
+
Boarding
07:55
+
Departure
08:35
+
Passenger
LINDQVIST / NORA
+
Seat
14A
+
Gate
B21
+
Class
Economy
+
+
+
M1LINDQVIST/NORA E7KQ2R BERLISLH 1796 ${String(plus(9).getDate()).padStart(2, '0')}Y014A0031 100
+
+

Be at the gate 30 minutes before departure. Hand baggage: 1 piece up to 8 kg.

+
Booking reference E7KQ2R · Miles & More 992 004 118 221Deutsche Lufthansa AG
`), + + // Conference ticket. + 'infra-summit-ticket.pdf': page(` +
${logo('Infra Summit Lisbon', '#db2d54')}Speaker
+

Nora Lindqvist

+

Meridian Labs · Talk: "Rolling back without rolling over: safe launches for event platforms"

+
+
When
${fmt(plus(10))} to ${fmt(plus(11))}
Doors 08:30, talks from 09:30
+
Where
Centro de Congressos de Lisboa
Praça das Indústrias 1, Lisboa
+
+
+
+
Ticket
IS26-SPK-01827
Includes the speakers' dinner on day one and the workshop day.
+
+
Issued by Infra Summit Lda. via TitoNon-transferable
`), + + // Beacon launch plan (the PDF in the Projects folder). + 'beacon-launch-plan-v3.pdf': page(` +
${logo('Meridian Labs', '#db2d54')}Internal · v3
+

Beacon launch plan

+

Owner: Michael Torres · Engineering: Alice Johnson, Nora Lindqvist · Launch ${fmt(plus(8))}

+

What ships

+

Beacon replaces the polling notification API with a push platform: webhooks with signed deliveries, server-sent events for browsers, and a retry queue with per-tenant budgets. Customers on the current API keep working until ${nextMonth} ${year + 1}.

+

Timeline

+ + + + + +
DayMilestoneOwnerState
${fmt(plus(-6))}Load test at 3× peak, 48 h soakAhmeddone
${fmt(plus(1))}Go / no-go reviewAlicescheduled
${fmt(plus(3))}Rollback runbook signed offNorain review
${fmt(plus(6))}Canary: 5% of tenants, 24 hAhmed, Priyaplanned
${fmt(plus(8))}General availability, blog post, changelogRachelplanned
+

Risks

+

Webhook retries during a partial outage can double delivery volume; the budget caps that at 2× per tenant. The old API's long-poll clients see one reconnect at cutover. Both are covered in the runbook.

+
Meridian Labs GmbH · ConfidentialPage 1 of 1
`), + + // Hetzner invoice in Receipts. + 'hetzner-invoice.pdf': page(` +
${logo('Hetzner', '#d50c2d')}
Hetzner Online GmbH
Industriestr. 25, 91710 Gunzenhausen
+

Invoice R0012345678

+

Customer K0987654 · Meridian Labs GmbH · Period ${month} ${year}

+ + + + + + +
ProductLocationAmount
Cloud server CAX31 (beacon-eu-1)Falkenstein€14.69
Cloud server CAX31 (beacon-eu-2)Helsinki€14.69
Load balancer LB11Falkenstein€5.83
Object storage, 412 GBFalkenstein€8.24
VAT 19%€8.26
Total (paid by SEPA direct debit)€51.71
+
Hetzner Online GmbH · VAT DE 812 871 812Page 1 of 1
`), + + // Quarterly report in Files. + 'quarterly-report.pdf': page(` +
${logo('Meridian Labs', '#db2d54')}Board update
+

Quarterly report

+

Engineering and product · prepared by Nora Lindqvist and Michael Torres

+
+
Uptime
99.97%
+
p95 latency
184 ms
+
Active tenants
1,284
+
+

Highlights

+

Beacon reached feature-complete and passed the 48-hour soak at three times peak traffic. The website redesign goes live with the launch. Support volume fell 18% after the status page and the new error pages shipped.

+

Next quarter

+

Beacon general availability, migration tooling for long-poll customers, and the first external audit of the delivery signing scheme.

+
Meridian Labs GmbH · ConfidentialPage 1 of 1
`), + + // Internal purchase order attached to the support thread. + 'po-lumen-logistics.pdf': page(` +
${logo('Lumen Logistics', '#1d4ed8')}Purchase order
+

PO 2026-0412

+

Lumen Logistics S.A. · Av. da Liberdade 110, Lisboa · to Meridian Labs GmbH

+ + + +
ItemQtyAmount
Meridian Platform, Business plan, annual1€11,880.00
Beacon add-on, 50 tenants1€3,600.00
Total excl. VAT€15,480.00
+

Please invoice to accounts@lumenlogistics.example and quote the PO number. Payment terms 30 days.

+
Approved: Tomás Ferreira, Head of OperationsPage 1 of 1
`), +}; + +// PNGs rendered from HTML at 2x. +const IMAGES = { + // Screenshot of the Beacon metrics dashboard, attached to Ahmed's soak-test mail. + 'beacon-soak-dashboard.png': { + width: 1200, height: 720, html: ` +
Beacon · soak test, 48 h at 3× peakeu-1, eu-2 · last 48 hours
+
+
Deliveries / s42,380
+
p95 delivery latency184 ms
+
Retry budget used11%
+
Errors0.02%
+
+
Deliveries per second + + + ${[0.25, 0.5, 0.75].map((f) => ``).join('')} + + +
+ `, + }, + // Illustration draft from Daniel Cooper (the commission thread). + 'book-cover-draft.png': { + width: 900, height: 1200, html: ` +
+
+

The Lemon
Tree Year

Sofia Russo

+
draft 2 — bolder sun?
+ `, + }, +}; + +// Plain-text files in the Files app. +const TEXT = { + 'meeting-notes.md': `# Beacon weekly · ${fmt(plus(-1))} + +Attendees: Alice, Bob, Priya, Ahmed, Lisa, Nora + +## Decisions +- Canary stays at 5% for a full 24 h, not 12. Priya wants one night of traffic. +- Webhook signing keys rotate every 90 days; the old key stays valid for 48 h. +- Rachel gets the changelog draft by ${fmt(plus(4))}. + +## Open +- [ ] Rollback runbook: Nora, review by Bob and Ahmed +- [ ] Long-poll reconnect test on the staging tenant: Lisa +- [ ] Status page component for Beacon: Ahmed + +## Notes +Load test held at 3× peak for 48 h without a retry-budget breach. p95 184 ms. +`, + 'todo.txt': `(A) Rollback runbook, send to Bob and Ahmed @beacon due:${plus(3).toISOString().slice(0, 10)} +(A) RSVP go/no-go review @beacon +(B) Book airport train for ${fmt(plus(9))} @travel +(B) Reply to Mom about the weekend @family +(C) Pick up suit from the cleaner @errands +x Sign DesignCo invoice 2026-089 @finance +`, +}; + +// ── Office documents ───────────────────────────────────────────────────── +async function xlsxLaunchMetrics() { + const wb = new ExcelJS.Workbook(); + wb.creator = 'Nora Lindqvist'; + const ws = wb.addWorksheet('Soak test'); + ws.columns = [ + { header: 'Hour', key: 'h', width: 8 }, + { header: 'Deliveries/s', key: 'd', width: 14 }, + { header: 'p95 ms', key: 'p', width: 10 }, + { header: 'Errors %', key: 'e', width: 10 }, + { header: 'Retry budget %', key: 'r', width: 16 }, + ]; + for (let h = 1; h <= 48; h++) { + ws.addRow({ h, d: 40000 + Math.round(Math.sin(h / 3) * 2500 + (h % 7) * 300), p: 170 + (h % 5) * 4 + (h > 30 ? 6 : 0), e: Number((0.01 + (h % 4) * 0.005).toFixed(3)), r: Math.min(14, 4 + Math.round(h / 5)) }); + } + ws.getRow(1).font = { bold: true }; + ws.views = [{ state: 'frozen', ySplit: 1 }]; + const sum = wb.addWorksheet('Summary'); + sum.addRows([ + ['Metric', 'Value', 'Target'], + ['Peak deliveries/s', 42380, 36000], + ['p95 latency (ms)', 184, 250], + ['Error rate', '0.02%', '< 0.1%'], + ['Retry budget used', '11%', '< 50%'], + ['Verdict', 'Pass', ''], + ]); + sum.getRow(1).font = { bold: true }; + sum.columns = [{ width: 22 }, { width: 12 }, { width: 12 }]; + return Buffer.from(await wb.xlsx.writeBuffer()); +} + +async function xlsxBudget() { + const wb = new ExcelJS.Workbook(); + const ws = wb.addWorksheet('Budget'); + ws.addRow(['Category', 'Planned', 'Actual', 'Delta']); + const rows = [['Cloud', 7200, 6840], ['Tooling', 2400, 2510], ['Design (DesignCo)', 5000, 5236], ['Conferences', 3000, 1870], ['Hardware', 1500, 0]]; + rows.forEach(([c, p, a], i) => { + const r = i + 2; + ws.addRow([c, p, a, { formula: `C${r}-B${r}` }]); + }); + ws.addRow(['Total', { formula: 'SUM(B2:B6)' }, { formula: 'SUM(C2:C6)' }, { formula: 'SUM(D2:D6)' }]); + ws.getRow(1).font = { bold: true }; + ws.getRow(7).font = { bold: true }; + ws.columns = [{ width: 22 }, { width: 12 }, { width: 12 }, { width: 12 }]; + for (const col of ['B', 'C', 'D']) ws.getColumn(col).numFmt = '€#,##0'; + return Buffer.from(await wb.xlsx.writeBuffer()); +} + +async function docxRunbook() { + const { Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell, WidthType } = docx; + const p = (text, opts = {}) => new Paragraph({ children: [new TextRun({ text, ...opts })], spacing: { after: 120 } }); + const h = (text, level = HeadingLevel.HEADING_1) => new Paragraph({ text, heading: level, spacing: { before: 240, after: 120 } }); + const cell = (text, bold = false) => new TableCell({ children: [new Paragraph({ children: [new TextRun({ text, bold })] })] }); + const steps = [ + ['1', 'Freeze deploys; announce in #beacon-launch', 'On-call'], + ['2', 'Flip the tenant router back to the polling API (feature flag beacon.route)', 'Nora'], + ['3', 'Drain the webhook queue; retries pause automatically once the flag is off', 'Ahmed'], + ['4', 'Confirm long-poll clients reconnected (dashboard: reconnects < 1%)', 'Lisa'], + ['5', 'Post the status page update and the customer note', 'Rachel'], + ]; + const doc = new Document({ + creator: 'Nora Lindqvist', + title: 'Beacon rollback runbook', + sections: [{ + children: [ + new Paragraph({ text: 'Beacon rollback runbook', heading: HeadingLevel.TITLE }), + p('Meridian Labs · draft 2 · owner Nora Lindqvist · reviewers Bob Chen, Ahmed Hassan', { italics: true, color: '666666' }), + h('When to roll back'), + p('Error rate above 0.5% for ten minutes, p95 delivery latency above 1 s, or any retry budget breach on more than three tenants. The on-call engineer decides; nobody needs to be asked first.'), + h('Steps'), + new Table({ width: { size: 100, type: WidthType.PERCENTAGE }, rows: [ + new TableRow({ children: [cell('#', true), cell('Action', true), cell('Owner', true)] }), + ...steps.map(([n, a, o]) => new TableRow({ children: [cell(n), cell(a), cell(o)] })), + ] }), + h('Expected impact'), + p('Customers on the new API see deliveries pause for the drain window, at most two minutes. Nothing is lost: the queue is replayed after the fix. Long-poll clients see one reconnect.'), + h('Open questions'), + p('Do we keep the signing keys rotated during the rollback window? Bob to confirm with the auditor.'), + ], + }], + }); + return Buffer.from(await Packer.toBuffer(doc)); +} + +async function docxContract() { + const { Document, Packer, Paragraph, TextRun, HeadingLevel } = docx; + const p = (text) => new Paragraph({ children: [new TextRun(text)], spacing: { after: 160 } }); + const doc = new Document({ + title: 'Service agreement draft', + sections: [{ children: [ + new Paragraph({ text: 'Service agreement', heading: HeadingLevel.TITLE }), + p('between Meridian Labs GmbH ("Provider") and Lumen Logistics S.A. ("Customer"). Draft for review, not for signature.'), + new Paragraph({ text: '1. Scope', heading: HeadingLevel.HEADING_1 }), + p('The Provider operates the Meridian Platform and the Beacon notification service for the Customer under the Business plan, as described in Purchase Order 2026-0412.'), + new Paragraph({ text: '2. Service levels', heading: HeadingLevel.HEADING_1 }), + p('Monthly availability of 99.9%, measured at the API edge. Credits of 10% of the monthly fee per 0.1% below target, capped at 50%.'), + new Paragraph({ text: '3. Term', heading: HeadingLevel.HEADING_1 }), + p('Twelve months from the effective date, renewing yearly unless either party gives sixty days notice.'), + ] }], + }); + return Buffer.from(await Packer.toBuffer(doc)); +} + +async function pptxLaunchDeck() { + const pres = new PptxGenJS(); + pres.layout = 'LAYOUT_16x9'; + pres.author = 'Rachel Green'; + pres.title = 'Beacon launch'; + const rasp = 'DB2D54'; + const cover = pres.addSlide(); + cover.background = { color: '0F1117' }; + cover.addText('Beacon', { x: 0.6, y: 1.6, w: 8, h: 1.2, fontSize: 54, bold: true, color: 'FFFFFF', fontFace: 'Segoe UI' }); + cover.addText('Real-time notifications for every Meridian tenant', { x: 0.6, y: 2.8, w: 8, h: 0.6, fontSize: 20, color: 'C7C9D1', fontFace: 'Segoe UI' }); + cover.addShape(pres.ShapeType.rect, { x: 0.6, y: 3.6, w: 1.4, h: 0.08, fill: { color: rasp }, line: { color: rasp } }); + cover.addText(`Launch ${fmt(plus(8))} · Meridian Labs`, { x: 0.6, y: 4.6, w: 8, h: 0.4, fontSize: 12, color: '8B8E98', fontFace: 'Segoe UI' }); + + const what = pres.addSlide(); + what.addText('What customers get', { x: 0.6, y: 0.4, w: 8, h: 0.7, fontSize: 30, bold: true, color: '18181B', fontFace: 'Segoe UI' }); + what.addText([ + { text: 'Webhooks with signed deliveries', options: { bullet: true, breakLine: true } }, + { text: 'Server-sent events for browsers, no polling', options: { bullet: true, breakLine: true } }, + { text: 'Retry queue with per-tenant budgets', options: { bullet: true, breakLine: true } }, + { text: 'Delivery log with replay, 30 days', options: { bullet: true } }, + ], { x: 0.8, y: 1.4, w: 8, h: 3, fontSize: 20, color: '3F3F46', fontFace: 'Segoe UI', paraSpaceAfter: 10 }); + + const num = pres.addSlide(); + num.addText('Soak test, 48 hours at 3× peak', { x: 0.6, y: 0.4, w: 8.5, h: 0.7, fontSize: 30, bold: true, color: '18181B', fontFace: 'Segoe UI' }); + const tiles = [['42,380', 'deliveries / s'], ['184 ms', 'p95 latency'], ['0.02%', 'errors'], ['11%', 'retry budget']]; + tiles.forEach(([v, l], i) => { + const x = 0.6 + i * 2.25; + num.addShape(pres.ShapeType.roundRect, { x, y: 1.6, w: 2.05, h: 1.6, fill: { color: 'F4F4F5' }, line: { color: 'E4E4E7' }, rectRadius: 0.1 }); + num.addText(v, { x, y: 1.75, w: 2.05, h: 0.8, fontSize: 28, bold: true, color: rasp, align: 'center', fontFace: 'Segoe UI' }); + num.addText(l, { x, y: 2.5, w: 2.05, h: 0.5, fontSize: 13, color: '71717A', align: 'center', fontFace: 'Segoe UI' }); + }); + num.addText('Verdict: pass. Canary at 5% of tenants for 24 h, then general availability.', { x: 0.6, y: 3.7, w: 8.5, h: 0.6, fontSize: 16, color: '3F3F46', fontFace: 'Segoe UI' }); + + const plan = pres.addSlide(); + plan.addText('Rollout', { x: 0.6, y: 0.4, w: 8, h: 0.7, fontSize: 30, bold: true, color: '18181B', fontFace: 'Segoe UI' }); + plan.addTable([ + [{ text: 'Day', options: { bold: true } }, { text: 'Milestone', options: { bold: true } }, { text: 'Owner', options: { bold: true } }], + [fmt(plus(1)), 'Go / no-go review', 'Alice'], + [fmt(plus(3)), 'Rollback runbook signed off', 'Nora'], + [fmt(plus(6)), 'Canary, 5% of tenants', 'Ahmed, Priya'], + [fmt(plus(8)), 'General availability', 'Rachel'], + ], { x: 0.6, y: 1.4, w: 8.8, fontSize: 14, fontFace: 'Segoe UI', color: '3F3F46', border: { type: 'solid', color: 'E4E4E7', pt: 1 }, fill: { color: 'FFFFFF' } }); + + return Buffer.from(await pres.write({ outputType: 'nodebuffer' })); +} + +// ── Run ────────────────────────────────────────────────────────────────── +const browser = await chromium.launch(); +const ctx = await browser.newContext({ deviceScaleFactor: 2 }); +const pg = await ctx.newPage(); +for (const [name, html] of Object.entries(DOCS)) { + await pg.setContent(html, { waitUntil: 'load' }); + write(name, await pg.pdf({ format: 'A4', printBackground: true, preferCSSPageSize: true })); +} +for (const [name, { width, height, html }] of Object.entries(IMAGES)) { + await pg.setViewportSize({ width, height }); + await pg.setContent(html, { waitUntil: 'load' }); + write(name, await pg.screenshot({ type: 'png', clip: { x: 0, y: 0, width, height } })); +} +await browser.close(); + +for (const [name, text] of Object.entries(TEXT)) write(name, Buffer.from(text, 'utf8')); +write('beacon-soak-metrics.xlsx', await xlsxLaunchMetrics()); +write('budget-2026.xlsx', await xlsxBudget()); +if (docx) { + write('beacon-rollback-runbook.docx', await docxRunbook()); + write('service-agreement-draft.docx', await docxContract()); +} else console.log('docx not available: Word files kept as they are'); +if (PptxGenJS) write('beacon-launch-deck.pptx', await pptxLaunchDeck()); +else console.log('pptxgenjs not available: deck kept as it is'); + +for (const w of written) console.log(' +', w); +console.log(`output: ${OUT}`); diff --git a/stores/auth-store.ts b/stores/auth-store.ts index 9d6723174..b111eaaa0 100644 --- a/stores/auth-store.ts +++ b/stores/auth-store.ts @@ -1003,6 +1003,9 @@ let refreshPromise: Promise | null = null; // Multi-account state: per-account JMAP clients and refresh timers const clients = new Map(); +/** Server URL recorded on the demo accounts; nothing is ever sent to it. */ +const DEMO_SERVER_URL = 'https://demo.example.com'; + /** * Account switches can overlap (click B, then C before B lands). Each switch * takes a generation and gives up at its next await once a newer one has @@ -1685,30 +1688,46 @@ export const useAuthStore = create()( clearAllStores(); const { DemoJMAPClient } = await import('@/lib/demo/demo-client'); - const client = new DemoJMAPClient(); - await client.connect(); + const { seedDemoPreferences } = await import('@/lib/demo/demo-preferences'); + // Two logins: the work account (primary, with the shared Support + // mailbox) and a mail-only personal account, so the account + // switcher and the merged inbox have more than one source. + const client = new DemoJMAPClient('work'); + const personal = new DemoJMAPClient('personal'); + await Promise.all([client.connect(), personal.connect()]); const username = client.getUsername(); const { identities, primaryIdentity } = loadIdentities(await client.getIdentities(), username); initializeFeatureStores(client); - // Register a demo account entry so the account-switcher shows - // proper avatar/name instead of a "?" placeholder. + // Register the account entries so the account switcher shows + // names and avatars, and the unified views find both clients. const accountStore = useAccountStore.getState(); - const demoAccountId = accountStore.addAccount({ - label: primaryIdentity?.name || 'Demo User', - serverUrl: 'https://demo.example.com', - username, - authMode: 'basic', - rememberMe: false, - displayName: primaryIdentity?.name || 'Demo User', - email: primaryIdentity?.email || username, - lastLoginAt: Date.now(), - isConnected: true, - hasError: false, - isDefault: true, - }); + const displayName = primaryIdentity?.name || 'Nora Lindqvist'; + const register = (demoClient: InstanceType, label: string, isDefault: boolean) => { + const email = demoClient.getUsername(); + const id = accountStore.addAccount({ + label, + serverUrl: DEMO_SERVER_URL, + username: email, + authMode: 'basic', + rememberMe: false, + displayName, + email, + lastLoginAt: Date.now(), + isConnected: true, + hasError: false, + isDefault, + }); + // The registry is typed for the real client; the unified views only + // use the IJMAPClient surface, which the demo client implements. + clients.set(id, demoClient as unknown as JMAPClient); + return id; + }; + const demoAccountId = register(client, 'Meridian Labs', true); + register(personal, 'Personal', false); accountStore.setActiveAccount(demoAccountId); + seedDemoPreferences(); set({ isAuthenticated: true, @@ -2563,9 +2582,9 @@ export const useAuthStore = create()( const accountStore = useAccountStore.getState(); let accounts = accountStore.accounts; - // If the only account is the demo account, re-initialize demo mode + // If every account is a demo account, re-initialize demo mode // instead of trying to restore a server session (which doesn't exist). - if (accounts.length === 1 && accounts[0].serverUrl === 'https://demo.example.com') { + if (accounts.length > 0 && accounts.every((a) => a.serverUrl === DEMO_SERVER_URL)) { await get().loginDemo(); return; } diff --git a/stores/policy-store.ts b/stores/policy-store.ts index 5d0003492..d0bfb3a04 100644 --- a/stores/policy-store.ts +++ b/stores/policy-store.ts @@ -13,6 +13,13 @@ interface PolicyState { * full policy is fetched again once a session exists. */ partial: boolean; + /** + * Gates the demo switches on regardless of the deployment's policy, so the + * demo's two accounts and shared mailbox can show the merged views. Set by + * the demo login only; empty everywhere else. + */ + demoFeatureOverrides: Partial; + setDemoFeatureOverrides: (overrides: Partial) => void; fetchPolicy: () => Promise; /** Fetch the full policy if only the public subset is loaded. */ refreshIfPartial: () => Promise; @@ -42,6 +49,9 @@ export const usePolicyStore = create()((set, get) => ({ policy: { ...DEFAULT_POLICY }, loaded: false, partial: false, + demoFeatureOverrides: {}, + + setDemoFeatureOverrides: (overrides) => set({ demoFeatureOverrides: overrides }), fetchPolicy: async () => { // A fetch started before signing in may answer after the one started @@ -86,6 +96,8 @@ export const usePolicyStore = create()((set, get) => ({ }, isFeatureEnabled: (feature) => { + const override = get().demoFeatureOverrides[feature]; + if (override !== undefined) return override; return get().policy.features[feature] ?? true; }, From 551c2756025c858ee01028283cd5551c9c571af7 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 19:49:29 +0200 Subject: [PATCH 081/238] chore: keep demo asset files byte-exact across checkouts --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitattributes b/.gitattributes index 2b543109f..c543351f6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,4 @@ # Sourced by /bin/sh inside the Lite container image: CRLF would break it. *.envsh text eol=lf +# Demo fixtures record exact byte sizes of these files; never normalise them. +public/demo/** -text From 47e89b678e7c00dedae32ec6308ece0c39aff037 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 20:06:39 +0200 Subject: [PATCH 082/238] fix: scope demo queries to the account they are asked for, so merged views and search list each message once --- lib/demo/__tests__/fixtures.test.ts | 16 +++++++++++++ lib/demo/demo-client.ts | 37 +++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/lib/demo/__tests__/fixtures.test.ts b/lib/demo/__tests__/fixtures.test.ts index 796651d08..2e85fa1f5 100644 --- a/lib/demo/__tests__/fixtures.test.ts +++ b/lib/demo/__tests__/fixtures.test.ts @@ -290,3 +290,19 @@ describe('demo fixtures: calendar times', () => { expect(new Date(standup.utcEnd!).getTime() - new Date(standup.utcStart!).getTime()).toBe(15 * 60 * 1000); }); }); + +describe('demo client: account scope', () => { + it('a query for the shared Support account returns only its mail, and the primary account never returns it', async () => { + const client = new DemoJMAPClient('work'); + const support = await client.searchEmails('Beacon', undefined, SUPPORT_ACCOUNT_ID); + expect(support.emails.length).toBeGreaterThan(0); + expect(support.emails.every((e) => Object.keys(e.mailboxIds).some((id) => id.startsWith('demo-support-')))).toBe(true); + const own = await client.searchEmails('Beacon'); + expect(own.emails.some((e) => Object.keys(e.mailboxIds).some((id) => id.startsWith('demo-support-')))).toBe(false); + // The two scopes together cover every match exactly once. + const all = [...own.emails, ...support.emails].map((e) => e.id); + expect(new Set(all).size).toBe(all.length); + const { emails: inbox } = await client.getEmails(undefined, SUPPORT_ACCOUNT_ID); + expect(inbox.every((e) => Object.keys(e.mailboxIds).some((id) => id.startsWith('demo-support-')))).toBe(true); + }); +}); diff --git a/lib/demo/demo-client.ts b/lib/demo/demo-client.ts index 900e4e149..c5dc76eff 100644 --- a/lib/demo/demo-client.ts +++ b/lib/demo/demo-client.ts @@ -303,8 +303,24 @@ export class DemoJMAPClient implements IJMAPClient { return true; } - async getEmails(mailboxId?: string, _accountId?: string, limit: number = 50, position: number = 0, hasKeyword?: string, pinnedFirst?: boolean, extraFilter?: Record, order: SortLevel[] = []): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { - let filtered = this.data.emails; + /** + * The mail one JMAP account holds. Shared accounts (the Support mailbox) + * own the mail in their folders; the primary account owns the rest. The + * unified views query each account in turn, so a query without this scope + * would hand the same mail back twice. + */ + private inAccount(accountId: string | undefined): (e: Email) => boolean { + const shared = this.data.sharedMailboxes; + if (accountId && accountId !== this.data.accountId && shared[accountId]) { + const ids = new Set(shared[accountId].mailboxes.map((m) => m.id)); + return (e) => Object.keys(e.mailboxIds).some((id) => e.mailboxIds[id] && ids.has(id)); + } + const sharedIds = new Set(Object.values(shared).flatMap((s) => s.mailboxes.map((m) => m.id))); + return (e) => Object.keys(e.mailboxIds).some((id) => e.mailboxIds[id] && !sharedIds.has(id)); + } + + async getEmails(mailboxId?: string, accountId?: string, limit: number = 50, position: number = 0, hasKeyword?: string, pinnedFirst?: boolean, extraFilter?: Record, order: SortLevel[] = []): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { + let filtered = this.data.emails.filter(this.inAccount(accountId)); if (mailboxId) { filtered = filtered.filter(e => e.mailboxIds[mailboxId]); } @@ -348,11 +364,12 @@ export class DemoJMAPClient implements IJMAPClient { return this.data.emails.find(e => e.id === emailId) ?? null; } - async getTagCounts(tagIds: string[], _accountId?: string, excludeMailboxIds?: string[]): Promise> { + async getTagCounts(tagIds: string[], accountId?: string, excludeMailboxIds?: string[]): Promise> { const result: Record = {}; const exclusion = excludeMailboxIds?.length ? { inMailboxOtherThan: excludeMailboxIds } : null; + const inAccount = this.inAccount(accountId); for (const tagId of tagIds) { - const tagged = this.data.emails.filter(e => e.keywords[tagId] && (!exclusion || this.matchesFilter(e, exclusion))); + const tagged = this.data.emails.filter(e => inAccount(e) && e.keywords[tagId] && (!exclusion || this.matchesFilter(e, exclusion))); result[tagId] = { total: tagged.length, unread: tagged.filter(e => !e.keywords.$seen).length, @@ -409,9 +426,9 @@ export class DemoJMAPClient implements IJMAPClient { return result; } - async searchEmails(query: string, mailboxId?: string, _accountId?: string, limit: number = 50, position: number = 0): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { + async searchEmails(query: string, mailboxId?: string, accountId?: string, limit: number = 50, position: number = 0): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { const q = query.toLowerCase(); - let filtered = this.data.emails.filter(e => { + let filtered = this.data.emails.filter(this.inAccount(accountId)).filter(e => { const text = [e.subject, e.preview, e.from?.[0]?.name, e.from?.[0]?.email].filter(Boolean).join(' ').toLowerCase(); return text.includes(q); }); @@ -422,8 +439,8 @@ export class DemoJMAPClient implements IJMAPClient { return { emails, hasMore: position + limit < total, total }; } - async advancedSearchEmails(filter: Record, _accountId?: string, limit: number = 50, position: number = 0): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { - const filtered = this.data.emails.filter(e => this.matchesFilter(e, filter)); + async advancedSearchEmails(filter: Record, accountId?: string, limit: number = 50, position: number = 0): Promise<{ emails: Email[]; hasMore: boolean; total: number }> { + const filtered = this.data.emails.filter(this.inAccount(accountId)).filter(e => this.matchesFilter(e, filter)); filtered.sort((a, b) => new Date(b.receivedAt).getTime() - new Date(a.receivedAt).getTime()); const total = filtered.length; const emails = filtered.slice(position, position + limit); @@ -452,8 +469,8 @@ export class DemoJMAPClient implements IJMAPClient { return this.data.emails.filter(e => wanted.has(e.id)).map(e => this.pickEmailFields(e, properties)); } - async queryEmailFields(filter: Record, properties: string[], _accountId?: string, limit: number = 10000): Promise>> { - const filtered = this.data.emails.filter(e => this.matchesFilter(e, filter)); + async queryEmailFields(filter: Record, properties: string[], accountId?: string, limit: number = 10000): Promise>> { + const filtered = this.data.emails.filter(this.inAccount(accountId)).filter(e => this.matchesFilter(e, filter)); filtered.sort((a, b) => new Date(b.receivedAt).getTime() - new Date(a.receivedAt).getTime()); return filtered.slice(0, limit).map(e => this.pickEmailFields(e, properties)); } From 41a52ec53b2a1844271cc00d0cdd8354a35d94bb Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 18 Oct 2026 20:38:44 +0200 Subject: [PATCH 083/238] docs: refresh the readme images and the web app manifest screenshots from the new demo --- README.md | 6 +++--- public/screenshot-1280x720.png | Bin 14573 -> 171345 bytes public/screenshot-540x720.png | Bin 8675 -> 48702 bytes screenshots/dark-calendar-week.webp | Bin 48638 -> 69750 bytes screenshots/dark-composer-mention.webp | Bin 0 -> 142820 bytes screenshots/dark-composer.webp | Bin 140126 -> 0 bytes screenshots/dark-contact.webp | Bin 78190 -> 0 bytes screenshots/dark-contacts-detail.webp | Bin 0 -> 79146 bytes screenshots/dark-laptop-phone.webp | Bin 160052 -> 159794 bytes screenshots/light-calendar-week.webp | Bin 52324 -> 73788 bytes screenshots/light-composer-mention.webp | Bin 0 -> 146420 bytes screenshots/light-composer.webp | Bin 138302 -> 0 bytes screenshots/light-contact.webp | Bin 84420 -> 0 bytes screenshots/light-contacts-detail.webp | Bin 0 -> 83600 bytes screenshots/light-laptop-phone.webp | Bin 162196 -> 162496 bytes screenshots/split-inbox.webp | Bin 155880 -> 153300 bytes 16 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 screenshots/dark-composer-mention.webp delete mode 100644 screenshots/dark-composer.webp delete mode 100644 screenshots/dark-contact.webp create mode 100644 screenshots/dark-contacts-detail.webp create mode 100644 screenshots/light-composer-mention.webp delete mode 100644 screenshots/light-composer.webp delete mode 100644 screenshots/light-contact.webp create mode 100644 screenshots/light-contacts-detail.webp diff --git a/README.md b/README.md index 930072229..541deac73 100644 --- a/README.md +++ b/README.md @@ -40,16 +40,16 @@ Bulwark Webmail is a self-hosted webmail client for [Stalwart Mail Server](https

Calendar week view with events from several calendars - Contact details with recent mail and upcoming events + Contact details with recent mail and upcoming events
Calendar week view  ·  Contact details with recent mail and upcoming events

- Rich-text composer next to the message list + The composer with an @mention chip and the contact card it opens The inbox split diagonally between the light and dark theme
- Composer with identities and formatting  ·  Light and dark themes + Composer with @mention cards  ·  Light and dark themes

## Features diff --git a/public/screenshot-1280x720.png b/public/screenshot-1280x720.png index 424a520d40803734e2023898c635de8025804750..db1dac24e1593e1e30ff264ff26c0f7890973ff8 100644 GIT binary patch literal 171345 zcmcG#V|=B-5EveKdmusECHP%H0v3qztG2M$twy7)VV zsgN!?eEUt`udS|*sqWzNk@IQ-x1iP*)bu9*=dZNn zRAP{4>XAt*-7`~S5D@Pu#9w6~onBup@^1Ww|J9`bBi%+I(0~710NJhs`9}Z0(zPlG z7}ozv&(t8G@c%2hV|ar={;$LX#|Hxbzfu;&5AXkd!Fvkqd-wltbsPDhyt4O`PFt?$ z7JUY3bqGMLhuTYFoNj8accdMk$qm=inYLYT72L?@30dtL7rflxq9|yEqY6tt2%bQ4 zx8ia{Sqs4{PE58!gQyV=6dVi~xOeiAql6%X)C(Njr-q{BWt7&oro#Rke30ym*>|wy zp*)~%tm7n7h!E_fF2nmi#l?vH;1yfHR%R}QUCivz>^@=GZV}s9ZsoLuEjHsZGr*5X zM1cS0&FM-ZdDPdpN%QK{MvOeygK4cTuM-B$dr^>}2`yxx+>vrryuU93BpaO=Ep!y3 zcb3tULwh-W|`tg{wHN;M_qnEAnx^2OzZSff!3Lm z)=5eJ#YcF!JPePZR2ub~ARr-K2mz6|7^NcnNo%eBdBDPKN#^G>P{nxD#rU8c5{XG2 zbknO~$f!u~4^Wc(qr;e>pb#2%>&e?mb8zDk^E((M8$w<~EfQ$js4NUJt#mxCB}I*a znUp{RVyvG3(&{wLltk-CU6d6;$wvsH8u=!N_%$uY1@mOyVWa)ak6}D$2ma0vVV=c4 z)1DoCZZY9%Ouezb<##};D1@Ivv?pk#{t#6tIeysvIGcqe2JQ6UH3I^VRZy6Y;U65a z92Oi;HJ2ejpjK{S89xzksVHcLK&Jmt(C#(qH8wE7fn*n!YWx`$1(}ANaoTdY?mhAQ zg{g}1?ZP$_IXd8LYKcG)IDN*;}VpeWBy-Qxnu2ZHDeM^U)2kZeM|3Pgej z>c_hBl;G%&90o&N-p9SL{nME6fr`0vhw zK9~4-Mc9@Cd&t)-gWVJlvoN@=rK&^wt)0YH^D!&hgHh7JDLr*Wj+n^QM7J_);k!#k zaS0xVx+~>hsInb9>4djF77`B`$Gg_g9AG>w?mpk2Hh+8#YcV;)D8#lmc)b|2IUb&9 z8z55q$W0$l0D0#I8sy7>^9(_$`67fUR5zpBGLeBu8!EIqr^q7jus9MuKJ`n$oW&58 z;i--nuiRb@92ky8Oezi1cIm-R-5&(9|N3kb$~@4x=spML!Yf6K3uW zOYkmhom%@hBplZD5f3)!7x{{`@? zEgo+8;L&a%YP0pm2a z2!KBgtTE3Dw^ zCnS@dl0LB>XGrPibgnka`z;U&b(o7wKYIF`_d6b06cawk0ReE8d;jcTHlVk-dRpBl zN4bec%SL%%(|_%2kasSK%7>v}foNtoDw$}J9?!q=0HYW^1By-Np)KFxEul0*=ifCodDWgijZo{LaG@o$$nXR zxjFsPM!L}{YKrkPWfGM=#Lq40&4`M#s~fcQ2}E@^n{wo|>v&e2_W7rp{3Is=X;tUj zrVgi%!{%)x*A&G~MepnDswy=oA2Cd_@^Q!*gSr{8fSYsZDH!rPxncb>` z;k_PVvv!@{59RtdoFIQ0D?h6BN5e_$5EH5pUF_!s;d1P|E_@(9*fdm)%<|_p=8OWk zLjgEHK73fUoo9z;dh3^rv+&32%6V*It6?a>{)MMA9mNv|9k$pn0eojVa~&d)*Hvw|}@e)Wy%jfXwMm(g7IO?EG*)d%XygBJ7n zk7pvg#gXFV>T4iwkGo^f#}HC%4BO+?VkV*IQ?PPYcs9`DBjQ*(Qk_FL1&BK~a8xO( znKjC7OC+4i_BLB9mv&Vuy^e!p^O7w#J;he6PxCc<-|3E(ba-UFJ_ zhvGMP$w$QTo&% zKhFSQvM@>jP1F1nHaOhx`2>sUpL@k4c)VFqr?FqF2W;KZ2bUh7Pt=z} zV#khvH_}??tfX68)|v3k(uu_{)sC>^5Ag9qi5Ty6;s#T7e@jU0T}`IeTk7CZ=_oTb zH9_f|k(9!x!Jn8KgZfXbbSg4;GvA;p64FLy-p5-t$a)C9Vi6qHmi1FppdJ1vM~g-Y zmb90T+qi>@qNkGEWCnLMrZWrm{k;RTYh@bkKfemWyoW|+kk_fywIB5jA-u4lkj(K7 zr-Aj^rYZh}IY-w2SeM!X1|nSfggNFn42-ZdlnG>E7<7{H;A)naSBzrmT*;nOq@!cv z;)Q)ZYNjw5=`RP}>2Jm5KOS5>l_33ST_4`J!p}8G(a8*WI#JQ4m)f;E)bf}vy9e)B z)0PO+*|ifBZ>eF3FgaC={3AP&FYi1^5U?xeR2Qw(2VvIg?%cPxuva*+{p0MB?un`& zNFl_%Xy*P{gO3N^Ct23jGn1N?z^D*J;gerH{xubM`k@%qBG0l;2Sr*wBi@V`A#(Xt zyxvyMG;%ba_j32iR(S+u9yhvp^@!^r14EM?q(Xx8dbbkCS-_XafB*Z)dT~mhpG7GT z!Gf#GaYZ=P<(%-SRAd*#W4JNy<|z23(cMEuSG^qsps0u+%~N};&Pa7ExQKMuEX$lt zNrpXlW@}k#nJE`S25oJ2p;e1K%1Y0fG(|4P^+{BT%?Ypl4tPeZ7OI~gh6HxAQf$Ze zkZM#6QF|Vb_%xK1gJ&0OWmTVBzMhL7$kUErT2KAAF3fP;((4^lHPpFK9-W06=S?`_ z$!5lvLzjfrR53VoGbjBg0Q*HXydUK|3T%KqKwIcon?ZB@r#(Xi**@IvmUYcG{bg>& zhL(JGxqz}xYN{$^=Cwohu}@w5l=#t|xX^Eky${YzXbP$_S--DHt*#m3N;MV#Z0={? z3Xj=T)LQ3tvE+5?J%b=QEinX#tk??nGuwE67QVT32P-4`621z;QnKpLZtpew~($;BO5WR9Y=a-USPO`P9_p;vk~6i@4mA?4_NAI zm2PxJ7sDRSR-JD#5E8G#9{@y8Z}jWqo4PH(UN`%NDhgve4()5VZEy#c1s%T%**oi_ zs^hYz%O-ing_+atkzqv7?-mx80FPJ+PL^f^KJ~vBm8dH%FAe(B3#ZK&L8`^r!J$&F zXmQD-BmKMpvJLoi$VdFYE2yA+7W5g7<&O8-EiZ3%dxBHn@*3(Ir|P)<=UAu*Et-Ff zu~_C9jjN3zU_+loZ9WW%L7*s)ZH(#kJn2Z%DMNcLgg(>Jc$7R1cJ%^F3e??~r}?2C z%~^HN@}|7)Fsp=lBhMD%s$aGf;66dK{6G+&_onc9g0y~iF`ljLWp!B&&sv-h{Vd9V zWWMNp3>w%Q3>TUZiO1eusKJLi_w5;^rZ_#7r8&Dky)b`VmdsG@kKy!J4CD4dJhNJu$;&V(fjGr= zW=jcCreV8ge6G+oapslT7}?>p2(5HFMb*eH0*(~UQcUS>$N2kYM4!=R<;&4{s^&qk zUudah>$67(j#RsbH{u`e`uc)l(BfO`u0Y>guZ8|lmDlW=-SX@=dd2zhtGnm;g=FqV z<}|+@V%I5FBc0k|0;SWkNfiSL;tFngyAFAJA}AaTR1gPkdVX)%&XUnoZ}`g?5eSmq z;J0wK9OKB{Ms?XOcEYm0aeEOznsOH(#>=mh%opDNeSdJPGJ zozTZqS$bh=SV@(e)YR0e7EqGu|IG!ke5?WN3SU~)Eq|9Tv%V0~u8%=`2n-uxvFI_; zzCXU5Ev1)XMo~~ud?s$+y{Hgrx1(M60Ws$POomxZHU=?HH|xC&;mm^ea+vAW!CADR zvMgoaMk`E7!`u71(A=bZPOBr+?Okv7DO^M&cLcvIdh%*iHpr^9iVaj%4E`3K z;7py`BLGDRj3|q)dyB}O+A}5^3qAZPXrNt}d}g(*)Lub;>LBsf7NTZ&aUZod)u;P z$(zh%5H9(l%dC2OSLhk>2D}uRx3lIH9$dh8J1oz~*eY8o9&vG7bD9h(Ds~CxsuBJ3 zEDz-1^xevZ^o>$GAq?R`Zhl04x_Qv{-~+dBuVYh$NIjpwt(}4o zH8li$Go1;yvVL0J20hfiKZ{VlzP(q4-4qTVHJQNU_MCK^Xw1z;xd%0FyX5xx+7)k% zL0Vf`T&M45g{h&}+yDVlkL}JUu7*mJ!wm9I1YD77KMd9}b=-=|VFexGj+)xHX;eNw ztsWNlir!C?G`Bo3J^v0540TRG-OWxL)1icI8ZJDOq$X%)MUC6>0>gbiXl5LMWd_AC z5d_(Z{JWTY*k_CaX=;6f9L?SIM8OhyD`m*M(`rzH4)&vBU3UV-uYi z43YOVW4qL7w^mAcAoGz^`cXJjQSrA!!knX$F!>#>IskLcTNnmtz?6`n zVp=MH-r0}kZ;8JWHN+4;2$p3YxH6pUyD-MyS!~^$o>(IH1k@2U(hiuQ& zO(U(Ou0>4x;QrW@oR0lQ@aDFQt#Ghnys4|iIrX{LPE^S$k5+LuAs*}5gB!p)qVxL$ zvMI0VO*t@|Vsofsq~d(LOeMIX^a*WkWiz5WmTSW+r`zCQT}Iz%q}er1k7rb`y@AZ= zV4@8CC^E>pDgk?s`T6vs3;v=!0(ra@{G+3(KDX}yjOrlm&!oJyG>hd z=$M4=ex56=TaTyTAES-f+dqiC#E=*QCFfg51)w_~bf(AfKF`v0# zaFb*n8`jC;s%66?17VFa_TBI*EqbsK4If>*bQL$JL~TEz$6JB2joVV`D#ss!b){Q< zUFkicPCe~cixpawU6HBKY9>4^8&&4-bdA8F~gM=j5QGa&=sqQ`j@+%Lb zi00GYdMDMFfC9;UrSy!r2kqOma>)tHj#a1mOV+>1{B#l#hyb!d?lv6z95j}U%3Q1b zHEBTvP#RqKxu}c|o5w%dzX1uXT0Lp(a(w*)Z+I?utfJ~=e!ZHj8Jyc4#hLm?`oxVH z4fgUwF6}I@?#^zUj5FhpaU+xG{p9)w{2JC~oJ^Jq%ve5UyNtb#%RkEGyC6E>t7ZpU zY<}%J9_LY9O8dP&@k@>7B^zp>em>*|-Ybi+UuO3ruP@w;I0ygj|p1Sg}`h zKLX$qnO`6t8f)TjV1u_qarPnEMxAO5lymVk(*`_8^l^^LBQjeirfP`JHXK4I(~F)5 zF%&3$og7+Sf-2JtFjB4+{r1_?5@TcklzUFNJ~r<y3D8i}?kU0u5tIOgb;|@7I^!TTyvg@ec!%AgBkY#tXmMYCCpgF~+R_ z<~{vgaku+%Fse!@#;r+ocU}0z18m{G**i*$G?=O=m`4r1^YTtK3r#Kr@t22B$#6aUY9?@6cT3LYjvCSEPziMxNtKI#wJna zeMh!JozZ?@c9&ivRI(5cV8t6SA578>AGh&aPe_tb5+bpv7`FUQq#z~L zDun}l$fkpY$L9J@=VuNjiN{+g8fEE>xoOU4llsVO(ZIictv-Jz``yj{73(xpO&Up- z8Lxho4dupx`3h&#&VxWY9Xl}fJ^moX{aO_0iNSI)V7MdtWR-pRlamd&@m9!{_c})o zcfB=|+Xf5`yw5*#DyC5v;pttWhBtXMoH)0s2(CM#vs&qNS^#3aTdh3Zo)yDTj2DV& zW(N@0@cowb5Sk3~ABd6-kfx$Qt*4_??g3NDzRgrGEzBp*otuM$g$o-KJ`fi^AnyEr zfZkq2K@sBr`!{NEe7v!^Jy|XVgW@+ZpJcjjgR=TLG$Jgjm03ACB{eRy_a0PbX{~k+ zGe!nWgeoqXPpgr081ae2&8=ROs>;Neg5{Lb`tYKe&dm(~VAYkJb(f;HqS7tvb*hCA zLPk#qm!be=Yx8l#TKRUslxM&V+eYEb(R<>Vm5sO6TmjT9US?Y0Qc&(Q$At=IUr1!m zIiw?@&$xQ+j*2O*K=g_7(x(Hy3uq;C;Ad5k(B$VjwvZ{J2{2RiJwBf!eZRy;mT5W6 zD?h;59_gepX}LcyzKzhV)$`kwP$PCiUbb^|i(b_0jm}gl(OHl$y=4WUt48I7KR1G} z3|al^#4p%_08L2Vz0??_;E3NLMo>u&FUi8bpSfOn_Kz@iB_t*itTt6N62tBafC)Mv z)15v~$};Z^n3I0B1_+hV3x+fENSTI+_}M4-!< z)Mb`!bV^-v-Ugnm?Dj%%#G|7#)BF62K%Ve~fvn|{^n}5Fus81~d{pp#DqyGhYQ?3l z(33kAD=4-RVVT8Km%7i40*3A+)v8>K&-O{xYZF6ZirK^3oM+J6n~@KOl3Vu-S{ z8=4~(v4_02Uv03gz#C+M2$5S_t;&1FX)_kDc8i=2&Rx}p{rpZqWoqa4bNB%XiVTM= z3&bT7Csxu)SQmA!k_X2C;R+p~@rkqIn0pgWA6bJ3c1+1qTG}N5nqt`lcp32kD5SnW zUg`B|J9mgl%nL$LJN2SkvnVVNdwgAqo@2YCL)qh*b^rCXX<)ovwziAuINU=enw>Ej zS?j3!a%>uSZ7UvOTj3r|pK*1mh}X$eo%LJ1Tw{LLw86JX`wYJ(ob)jKUDhU{nbqt8 zmX%8EoynIH)Vq_;thw4MVfW?Z9#5O_L{OMfDO)br&h2nr5I=vtC%i>sL6%o6wD3cm znwsrA79v+3R7JMBRqn9kxmXYK9G#;*HB6R;1Mf=E425UdW>2HpD#fO5(QliFAIU3e#(uNsU<}lFdiB>q~3a3sPdoj@nIR`34l_n$-7Rh4_jsLI&Nvy zwX~eZkmB%LqMpW8+nV2e&-`;ju^iqIVAPS=#r5qP9U8-^82bq@it}Hmbu^4G1sN?c z5@92!I?WfuatP>vq&oq@A|ua5+;S(D`V}i%yKi7QnTR*ZcQ5bF&&$$k_~EYiq89i; zuvVu^V#!Jf1$s9BwzUerz_xuNo(&*=}^ZFrLW?@uiNS?T7lKWaFh!i(^WM z<(nNwlMpG1Bt-dSsdZ`hv}A)NkZUocti*lJW0vg#q1|geRuvf(J&Dg~7AqH0m8jy3 zqpNr96feY9P!h0`up!C29`3A)wYpAQ{cvK2)Y&QdfI`eDls5d#(~IlDvad z`yKv$@~FWUS|hv7y8X9ZRJwKjxP;vE?S(dvs#6Kvl=#qM`_ulcQB8kT84DwI(M;$O zJpK$@k)I}FrI~*siawoUCd5r1UNZn)Q+>Mx->lKEk$T3hL@xlgH&NR`&Jf5oRkN=T zEDksT5EgKp(+lVJ+tf!yg1?cN^8kkVr8Yu$gWi3YGqx+lX7@jy?yJ{1e$4^G{7#n( zazfJEq1ZnC;y^-z_Q%>E#O?l9ThaaZ0FRzLPJs=!7fAr%b@rq>f;B#_c_UYaLkE6+-L+7{H!B8Im3s+_?IFK$u5$_6x>ado0#=fJf!#>vOQVmo~x(7 zQ>Xf5vOGkUjG`niT>eglRo@WKooTLLL;o<~2W^U8kwH|sBHBQ%1fNOF13h6f;IBAW zdfyip<__KfG904+Hy6;v4HL2ax$TW>Q&@-#<43ZPv8FR6%!pEx(3S3!{1{#}O+7HFhAg z$1HHLv)y`NWkL=cctgtgi88{j0$4>r?MC;{P>CyM*jt^-e8wHLAJD3jm^AtjbT8ir zyQlgT0qpWkHcsfDoEqmCvL7UZd;T)-JZ5rOio^jmc}6#~GXb^@XEDSx)TjD9@y8yI zgAy#-ROT^y2&*~X z=m3}4d+LTl?INJf`gD_Z-k&=%!*I!c&D(3YYhuENGo7;Oy%!ggLTpqQ-!FKOOuTjOLGD(FJ+$yTrFbM!Q`2QhgIoJYkZE zi6U9w#nnmpr&|fGII%h7N%dOdwH1Qc@)x##D3s7s%h}RgraVE1709 z*n1_YCDw6;;e)Yp7mTBe?goE;5=)lr3CUkN4OfRf>a&T?17?h?2&_-~ z{V7>kow0Oz958gJE8nOzE{Pj6e5LAq{7HGY`9_epnH84b;4K{HZqEp5(>loBbs zO=bn)vmIl0U@ldjw!1v{32OW<7`6iH$wfKt?2NWkT0bCZB_T{yELU7izE_p%bhW9x z6`*JngqT_nDJ>r(f;Br~-K3_rZRZaw)0UQ1xvbjKRl8{QlcGe*bCd>3vm#Pmc|w=o zSc-tCmWP=Y8Uta*ohzPJ6eh|awog0wkdxBkhug}n#Pp0TKb|O8BcX>cjovAp`~68W zi=T7fV5_p2s>=nEL}@u2s42dQ#(TkU%snl5A}Q)@y&829cu=Nk*b zWQAb^V41Sf+LXt|52|OyivbL6W2wS(-)Fj>OGHIIOcml2Fr=N<&fHGA?#n?jxE<;N zyG@Vt^-W&fp#z!~H&gNv5je);^^fe9Qdm~XTZ=0kusWoVv?ErN8=)VE@%jmN0*TVR znjuZt5Wk1YV+PAwA`N4LiGd*MU+R!@I!K~1Xxhs`lwXg3rJ<(=+NaBzTmc!=Ka8MojH zK`$aD^{{HysfZF5Dp8HY%)n471Cv_mW=R{0->S1o*0wF>(WbYi*|=2m`wDiig0j;# zKc8YaQGE3LzCM(p4?VhS@2xU$#YkH;&&%X7S?0OnZP@2x{xueY=~|#d`~KHpts~oK zzTJI2SF00K>+M?wMO;@*)4kf<}OU!KjAG_qZS=pnr0ugz3N7C^S&9EFTE@}+{nTkUE$7H?h9cytB z%u?4+l9%vZW@S{g!LXkA<-u(el{>g4C=<4$jGfQ6=QH4IW;l>|AMBPpwGOv;;A|YL zS(gYcFpvk7OwmU_1{-1E-|uRAqoOK0onNvD39WYfNBpoyY5wk$EOxhfsd-&IsVgp~ zeN*G?^%MAw_%RTuO|9hO&J#sPNr9Pg?QhWEOScQ0FK$%HUxEw05 z^~XOREyZVMX?3`uoc?QMXppLgFg-sfOq^;s6nQbv89LJWD@V4tsAwstZ^$tQ3I{x~ zGuxBGzJb&7b?aUlpV^mC2%RivK*tI17#B`GsAhlz@7Q-?&Fw`}--tJd? z`9b{Hh_NT?AqKI7Dj|5&fIzF+al+`R##Yy3b2GK{QQe#=s_JZYuWxV;{OpI*-@BY? z**>3~aI$k*zK+H3^m23dxliDFi+=L$R#qL^N$cdrlNvWww-B+%A4+iy@Z7TM6pj=Y zBE;m$;BwA_qB%97hrG7q6V3+Y?8X!p0@J zIlP7J6}at>m(kA6rFqea`@`ZmYC=%u!g|b3`;$ezl(en5bTcxA zK&Vqyf}_7chtT~8U^WagDjH=Y38BFq%nTU4^(X{g`SC-u zvR>-LQ{!~7Ubm-9TUR2Tl#~zvX%0!pUcMEHH3aMq{7Ffj zZhjRftxi1{1xk~Ss=dtvol({_`S&T;MZJBc6*x-5%VyC8fK<{Y-;h5|`=`ahlW(v` zCJ~DvBc%I2a=x5`SI4{2EEQr02d~oHU{wEt#j@S2;qaCWsyu-R={c|GL6M-R0oSJg zOrNm@t$FU(fxN_4{}7QhqTrcF_=gM+BDuj9^_E5v_!6zN@wysdbJjNb;28CWY_Qf6 zZ;qqR!Sj(B7hvTTzUbanmWJkxZQA0-aov11ToX))YhYmD#<|A9#C^5iZv8$?`%S^H zK1^_TZ<>V)v$U8zkF0m_$nYAYtbR`-aMhjL(5>_Xql=xe4CnR{=c3f-``lc__}`=L zFt_R>~ou6cVU-_zdpJ+d^+;k*sr8&$Ox6cX|j6ypS4g z*QV2Oxu&ljwLM%XZ69lwnZiNz@VuAB(`|Dd&4OREDTLX5fl`QyjI7#E5LRmUrqK(G z#B2TJC~ayhD-BySj*m~@rQZ_Ny<<*w3v8#jGp7kkL3nu7JAD$05SCF+s|68Vhr?Rl zLZNepusS?AI6F07^58fEE#{`i#@$!4<~vDPyIK$tD7 zZvt|?un_}p7Q7~OLy9vB)1k1`U28g)8aZ$5tja&I2dFTd@TooR)yOe!go!(46==~C zZ-fgDd}nQW7)WE26Vqj)ywufX|44sBK-GhzU#!>liC&y*uOeEz)^rr%hxyP%272Up zkBw22@0wv_P3;Mynhg*yViUe{?raEIFY%}E;IrULBU0(6Ls?)f9y2Y{R zjMLxG^x$9t2XLA@TGjAT!S=Fp+t4c~(QiU4xEuAKEmc~M*c<$A_ecZV1HW5#uoq#s z1(IVdjydLiP!$-Ya^M#Yg0KGwN#wL-gVP3URIds^Y6nw`)#(Iq6BR|($wK#05RPu0bcS&0leiH0!s{c(E zLFkv{s?VHEn8~hfsXljc$g`@z5s`dYr2EHB2(qeRkk}Kf zn4x=O{7#B>@5wH@EsI)`frBn=g0}uZdS1hiS=(t0;kc;S>`q+^3M-KTs1CrSE8fAH z=t!*EW>1`0&)Pd&q^gUU%5x_?2|O(>OR?zU$oibKTJ0jk-+=s(N*(cHSGaI)JZ&bguv=Iff}X|sHr_9v;8>Hsm=U7> zD{B`$;e>Q8x-GwdUmbm@6reR+KI>EdT*w@V+;`4u`O!7A<*rQnVRBwagKHXvq3}>v zNC}7(6~K>DkS=?FH>P+OIX&5V%hjEio6D*VU)Y3ex_W(?T}bP2OL_OG(k-Q*Iti<} zz*O%|GcPYDZaucYEH3H!JMGYbdu+OiHa$8D0qeAnv3LP+;P~TAD!$)Uefh~6)%Om= zdLPp0z$s{ELM}T=F)~6{NaH%+bi6w23q+aSvblqE5$4k2H!;x>!%pl`xnxYhN{V~t z2skKkC-M`aqS-SsDOGb=3iDED-5x_W_vmX%xtg8(q#E{`Tj=&4E5gM|KE|o8aCKs< zqt~GIY>}xG(-X-BBuTh|5s!x76SZXVh|0dEWDq zpA}+xPTAHf+bq z1%K7XeWF%}1oEl>^Zeoj&0wCFR_*BTA+~5po&gndH^{XP8V34XX8ZLL__~h@QE)t# zcwZo5D$|&JUIzedl{lgnWNu{3F$asm^dkZ@l!~!Q(bz*IOnV3}Aeb&U0Z!-uOvI!G z3+^vKlUfAKk^?2!#2vIN14lkvz=$!SIwrk@dUj#XsMHiKF(1}A91-7PuJ#rl0lq)? zHn;bQ1LDP_`bK3KHPl!a=Q2Wm>GJlb6{OmpD?_iwa!ANznx>rT3IEX;hk@ho;4LU& zE9NtObvgb4J2YK!!S3lb1lVb}>q>k+N886r+u6nYigEC@avs>0+loG)2|I?qVEcmAR4#gy`K3*!Yd>#Gy>dFDI%4o^Ma^Wi zr|_?4^m`1yz=~>U5vbje^*SBL3?;e2`>VAL%EE{pC+tk7ZPUl$j*d+JK-#0Q{(kzu zo!MW|q!1x{0T2=*O^A>Hl_yHQu2y2DoJIRxFFu$uUwlB!nOb2IUPFekxtTO6vqrXV@srTxaGmye*T?q>s0aO{_tV->Jd~_BJ#-tM|1cgu%4D=`*h{q+bd>ca8blxXF}yCp`3;PlT2-#ZwPON@SAT0P6XFPBsT##$7FOXw zXwU@${xNV0^QgDiO)?KQk=1?=ZO$RmJhL#5_2nU?wSj^>r<=rs7*0=vi9&v2f-uZrarv7hYUvLg5~?uh z$I|@#{@K4JWp$Yaqz>o#8F9)#l_(`7rY^YL$x%XA&FmLX{$xE*SxNIca@Fe*6R85> zN9t{7N#^NNYy9jf$-ZqG2#T*B40XMjz7W}}^?;ToMv;6DfZaYm;Ema=a#+bO-K>%y zk}bKwmmocGK6*;P0~gMEM_u1ARFN;EUA%;I4#tp7^ju!ni04KVV!_;cA`krEn5DV! z*}UgdfP*;>`nuuzf2=k1j2Dx(2#5pUP#DoYR8REpH4O1>iIku_@b4W#I4GaBfj`{= za3Sw<`ep_zZQ*6E#J_2Ii870SaOq$83ORoPEYtCLfo1(EmyE9oY_Z2MrXzBv_c#AeYgn8ays% zsYJdcTO(oNgj*(k?BGih5)w+A&a!iJb60BWLPJl_>gQu)YaMYiMn^+cPH`y3DJ2VA z8!ek&7p&O*Vl9*mJ3iuqLyk6W-Q0c;WH!#R&v`^u!zgFb2Sp}D945dyE^vYyl_{AH zzLlGrWOU*QQ%YL&AyNyLNMHV($Vvhlu0`F%mg55q{{(m)GM2$Qp#R`<=vmU*w)s`(tKyt>N^<2G$koPauk#iBFfLfT66PSPf{+3`7)q+n2hwR z_#R{aIS+8Yy&f4B&qibrcUFCf*B}y)C(W{gnGL%t%VpaMpyPY17RDC|Cc6UEs!}Sv z)bI#~v#N$B2wIp~7dcE=AeE0=R!MG>4z=^>R$RiLRG{#;s$%f5sp+YJ&$fqFrYold zz)wprio2^!HVpsIjnSKYo@$1tHm8C z`DdxV?`(5f>`vz&XqR!upJib#?}e4MXqnJGT~T|*3CU?U!?PN?^9zovwcuF_f8clM zJYtPYeOdQ3-w=nCR5?_iTs)-zLk1G~24VsCuCQl>3)+1oa7hDX?|0Pv$k;PhHoaM9 z9)ds60HFK*n{|S}pq8%lDj8%~*Yay^r!x<8{@BSP-+T?HPXdVJ6;V~yUil+A`v zI`_UW;@H529sf4Bm|5Diq_2pv6IGScczWD#Bz%g=vkdv6 zqWHxjN?3anrM47AW<0l`l)z)@K57!S!biG@mhS7!BPx`mrsJliTWz9CUMJ4gr^uXd z8f(VJz-;Wypp;BHx8W7I3;go9bVkIxAfC($}Z4Q?-CM4fS8L*seTXuO-;|}8b zRyfE?k}bVjLXi}Ivye=NafH{cq#?Pz`AQm!+kdE89%cBpc2Hp@swdQ(N4&HsoX|4Wg;!`RQt#7ZLazd3WoWTAEy< zrtl{b$Ws-R3D9g1oZ|7w;`X{^FgeWN^uocxc|6;y$}guTedy|ce!eUuTVu7LXE^cU zp|IsohH+(^`PtnK75x>iEiMSr#6GS6S(ljO{|XHF(zZQxC_dMa2}~%`%Y8B4KK?_R zBm`0MPK(*}%eX;#8A=(pc&mkzz=B8534YX85^Hk=`#{l=lPmd6O}>v|Y@(hNp9Ciq z?(6F`mPC`v<-%wRI_ygi&PQXfU!sGMt}L5dSX!Rj?|swFMz7U{UgLdCQa9}c|`?%RJ=HnL>dtR{rRldr|(#m&)9>V)s zMx7A|Xt3g>od%iyS+9?2{B@Ic8w}xJ3m8oAl@)Z|eZ_w8h!y;M?LX3e#1{dUT=EX1 zfzA8>zB~b@5>l9ZFLzPXEK-P~^8a9#8s;=cSDZ=;y{Y)dOXro8eRQqT~ zLIRvD$*@O~*URBXeiEJ!UopL3EJ|NFl-q7HvRVdbHWDc*$4dV^8fdqXn4?xqW+2&D zkDrhAF)*qfcHW@ADl_IJ&l$X#iu1}U%J<+H23&r@R^M~GTm~wKLY}J(2;;g4xCd55 zI1&C$V7C#xOgAR9uzOB49m*_n2A!n>k~t0eT)fcld`Tm6CM#?|II{Z)&l8z zr|U@5NxI1kx`F6-8z&#)uhm@7)qTgj5_gLWs3ZESa+`^)su>H$e>XD}i^>AX1|SDbCVX%$cn zr9mp%gAGIv1&K_jtCr^i@CKC8O1g{IW7^Xi%F|5+5)<9kkPz0inZ@8SyOo{0WjL@w zf)Rju)$#Gs8l=qY3xX{trjt4QKSdHB9g`S+!S~Oy#iPL392HQqabd^}TToE=7aC0K zeh(XvLH!etWq;O5#*Fi|G%?MofR5A9Qfy;vA%3(ynhWH7Z$NbRNxCw9s^gQH%#uoJ zo&3fU-k-g-sd9gXNoY-b-fbNuL;i|7Ig#Ep=WMp?3iVI9N67c?Bt}Qq;MVeF5D;dp znLS1YcUO2>5xh9zvazo6+Y^Ma=aO$9Fhnpb(zbJZc?H*q4k9!kJn9B^ zvp>YQ6@F&LOUrBA{-x22ZmEjdR$42PAAy*1+csyTpGd?H|9pCbAQJxVzqx=qHe0I4 z_yVZPWZlum`2h*whe8cR)RY&SGjvQZ!R>|vB@^4>IwjPdk3w!=DE;Z%4|AeT4RkUJ zDtCg-Hu`jxgLJ~)Mm$^g)29I1ej+l|rH=_=@(rivgMD0Qr)hmLX|3Cq0&uC}RjENs zw{Vc{yg1MC5skLCm-M%UKY~f$L;PesRHECjIW|K2%4nsH=44T)n;XRtt86u?V`b@f^r`&nX%DUy`7gja7DZjay(#~jiMwQTR-$ri_K~2DFfWr5-%2TdjE4+doy_{x-PUx*cR=tF!zf!3u3>?Prdsj;+2L_lSDM+y{u zNxGYr5#%4_L&v?G@Dp<)e^|z-2oR+#rfdaTIJSe~OlSB57f=SAn#Xl?Ip=LSCYV%Hhn=Hl|6r5f(m_A#OC z1kYzO43kW}GchigJMW1qi0e3jb?u)A7UbHbEKF}tDB|LmKTVqf?(39_BjK$NeuepN zU2u1*v+j|z#&8WU^hfr7G-`pGb;tHE=2E0)i0m~}>(GiFf2U`mc`s$<`G*>ImzC5V z-SEj0sTYcIN{)xce!i^n)C8vcTdv{0R@jc%>^iags$^L}qu^9Mvs@bhTyk=D%=pH(O<3-1(fqPczaVxwt>yQ014g z?ApfBI4AGa)H*P;)M0mDZm@w`O1r;3AZE0E?`J~vSROz$kH|27yttD=D%OKbVq zQXUXGh+UvQ3Us!i`<+)(oG;3{Ps`*`XU~{ilU73IM^GDSi4*ZHD`3l+mhMn-XOjV8 zDoDrc4b8@RLYpTl_g>R0mzh6h6uIKVUkgEC2)J6ZvJrvpc=6Z{4J3O1Hu!rqTk2L( zZ>;5FPAWHfF*wdo!J&A%QiehQ^BmJ(>wLwvvq1tp`v=JE8KfKGtY1TwA8MiPdG_)K zyt6@`4nC;ItEr%Reh_oo^ujBA)4R8xZz~6Y`u1{XHKonZ5I<6HFE^3JOW~Ku#|{V= zAs$gb2okvFz6V4)MyOy-80JhOHmuG+^}UUe$&PPVjbPu**1skvgPtodH`DZmNZVT< zdSS#!5+KXct<&9+7`5@9+39Y(ZRP2E%P(29sY{h%lAbJf3!hK}j+%hZKOb2$hn}7G zOj*`fQtsVj4{7919UXbzojeaVF$PS3s;9-uH*k?L2w0{di->8~h9g-gdqK-9+CeD4 zNf?Q2aQNJC8L|Hcxu$)-Ohh9Kz(69KD?c6POePz7q;W&^>DkzbsybS7qqo3_R%R0C z>D*R&Vo(Ef<&>0W7SH{|yS~CdO03o{{1R&z!!EzfZZ}^e5m`Yoo6YkhJ9X8sWnSaU zKX)^Ofp>NdPspDa#LpRIo`N%YgV#~Xy*ddR7l+7^Ke0Ityxn2a7GZuQ!!yTvWY)MH z?IIaVN#QcZF8@dx!`?7|0la(c2K&a=Qb|BRq&tu|XBdC~HZDy?fI63A(o;GYz_LHtUcn&A z(-8mrFmV2|8&=kW(QcA62bL|-s7KgU>sxd}-Nk52dKyg8C=C~KfaT)-I5WNFuEik&!u;Vag#Tz zY2KB8XKhZjpI%$G-q+bGgU2lalNT=11}^C~BUcVxM)cJ@g`{4Rfl1v~Oxaj;$6%cT z$?lyxam?~|duPXLSh|n1$N>A(iyjhV$FP%bIm4Q;I@NfjVaZWJiG+j-=4ugkzMymG z+pWWRZL>dF#Zxw|DEl0nQlU@VO7k_^9P0G%L}Z+CM_`lpxA{VV8+ueY(y``&#U{KnYZaISGmXCEIH< zj*kygAmAr=hzmOELER^&x3XJz5{vdS+^DRYMlP zW3&x1U(=+48S~@g>N_Sfg%)f>R?ZQ*%~>VFO=l$=OPwWB!Ce{eRD5Q(x&98V`E2{; zbGPm&63JCPG5*tr23l9r+`!jOF&2+I0WjEPg%8AvkV*jfu9pLt`99N$XA9F3pCF8Y zzOORDn;cp`2EuG+v}ItmNW|7TJ)c%TE+-m>Uo*Zs0j4_p%tTdUYB#gQ&D3Q_RUc*2 zvXv-%ELIb-iFV|xLMRi%#9->8^UCI)0z;$yr$16D8fY(V%Jj57z8>8n`k6k$TH#_g zol#)5Qd@XQkytIdr1TZ(G>GX)f+W5ryir(j?k48NwfOs3(bPGLzU_OFeZP@N|1&KM z%iH5}sT!y0Ga*4PGuT*bC{u~(fF5Tgd$u~ZOZ)fiH=RdtDS%|h>L0&W8_e)DC8SO~E?DCD8 z#TQ4VHq1`G0EgW`7=dz;Z>UKBHo4=vI~Toq|8AR7xc zq+fQMfdn*>I+j8k)@$fYxp@<9+YKcT7oRF+2ec-;Wvq4w$63O z5O+LAAcT@qF3ua-?PD`1@({2>^S83a=jUQ;VUCA(i`}g@%q_E!A>)D817A*Y0%lq zkVI$@kqUTx-etzqRa5wmfv$abX<@k_$t)l%3i4rrzQ5$UgM<6pE4|6}91c3PDLr~Y zlu>w-r{XnE5ZwnN*lgV9cItp>LzV!%RpZ73<%G=cvW+lTaY>^1@4#X^S{7PGZNzh&j`II_z!TP_^w z=uPmNq2WkX>)tAk;Ov>GC?f}Id3E08C{-)<=>Z^1A&Ku93&M()&OrAMrL1o^Km|9? zUoG)bp+>78EBqgoKhN z>C4JqV4o+xM~#p7a}&wctE(vBoOf-ScyB#^?QrRkoj4rxoaA|I+%~uOsvRvM*;L&` zN|~8Cg#4k&et@maZWfm4YVLOko<4}N#(7|_y&~<*7qA(^D;2k?AaO)Zq5ipiD_Jd& z25jZ!zB6*+6`PyJB6>e-fY!Dz61yXdj7HnvV0`OlKlUcY0+t1H6Qe%<2SWy0%3K41<*)ZN;DH^4Wmik2R8U9PT z22vb2f5YbvbC616iAhQ;E?ccDW2=zU17k!VpP??{D+NOX9q(fBL~|I%)7WwZPGi#g zN|ZmIm5o-2Cw8=_{k-UoZq9b9Y*Gt>B}FtWQH$Nkw-dOhqpLPm0a?V$*nvX-+A|qWTizW(>a)l zwdMI6unh8{6cQfTd@;wrb}61zERTV{w%vJ4@bsWOQ(2>XC5=ql9QA+SnNJ-%Yg8F&Le5^XRl_b-BpLZP$0@r{>PB{egHuNpxUdAZx4hdH-< zZ}u33uDLk%q>t41olGj|pR z7DTv)h$$&{4vQI1VE4kp)>)bvLsz%a48lR*d*fo=og0{Y1g5J64*we^okC2YWb$Eo zLtlBL=TLxHh2=@y(F|U~UX?DN@j?cV;VMmz8Hk6WWDlS@ZlKv)%qDdyH6M?6By4hg zOjH{2T7D`K4jsdcIT9uj{uHii9Ec5mp&Et5x#q2(FSgN@hh+AXkQhCurL3&vq`jc1 z26kjKCeUz!e*IaNtH^LH(S=uEEUpdVkn91IU=gM`uW2=*TS53<*xO%k?w8*PH>B-M zufzJARti}Kn6+~7bPZ;STpLEnWnv8QxWO5Sblu|JnvhXCDY9r$1-c)D!2XdmlR z>@KkfdgB}as0=_F=|r;nN-1lPD(4NNIFxp(SC&Qh@;gY2N!{`E@@=edtZ8<1Y#7`e zyL^O=Lnz0SW7Uc+{f?cE=hkMX9{-0pu%?c&3<5OW5Q$$#!b1gWWrm)ccGLJ-?Q--O z*IOI-ny~D@v(G7AvF{C}shmKOF>C8@CypP({w!dWpAn~fLjQ0Lf94p23;&Q@FrRJ`cG!!x@ElYow zRFToUY-bxdJX)tgWD`5^{*d%H$i(}ZN>nf{NY@QF#h8}u8zVZ!Uxf)%J!|q7HmeCm zTViUoTTzsQ5-tCiGckg*Oaar*a8saXtixb~1DQrT7qOqiBa}$Lfh7G*5p=eaCj$zSV9OL`G?8c*4`bEA2#8Pw>rlU07HcBe+h@@5ed zY<`ha@o#V=@(?3UB@~+Q$g3&c_mk4YvABdg@zW}rm_>hB0&G2*6y~RY|DuL-`ao;6u$f!P z^u5DYyLCk<789Cdqn9_PZ@AxzgNsXp9N>3$+BlqDIB5kb$3CUo5u`MyIxM4@F37=* z@CS;o^km6W?Nkiy=f~~&iPpb&uC| zQoe5dng;6QGUEDgDbizC;L~uL8FmBL!(|qW^T@qZeS&c(z&_Vl8$wc1iMy+5j zYa*@bY2>nuY29S4l9x%yk&+3zjI~AtpUGROfq-RBo4zqFcM?x;kKxO0@NAhQC!@aA za>YzAu7qJk-mF+;bV6`>+Y@;%p?5=jE$r&Hz-;Sz)J%BpPvD!qH@lMg9oTU-x$d?< z-R5pjGMZEYm7@P-OVvMl@tgYJ$Y|P?r73Rbzq_>v-$fci-lqfs2B&)7@WEQmTl!UxF+3-Foq~^rQXOF@I)P z@rg^!`J-bJgRYtm!b)~DG@m7EQFAxsQPgye-i3m)OG>}LOQmlf4zu3{Gsw9wr_%pX znuYHEYEKoxG)EW32Q`n3RiV_DEdM)6e>~tMtk#8+Y`(7c$Ecf2I&0_%{4-ylQ9M1C*%&Rf6=y+o$`aAI!COTN>ZhtP^F^~gXgsXPx=k9Mt%MQ891Lm(H4}1yvt&&ssb**yPkxsZ-(Y-@4gY2p3S>`{u`v`R)#eK_9_0k*8| z+>A964(5sa@tS)FPQ&sX()g&2ZK)5G85J&=k#ti$QK7p}l6HWTwaI3UZY)}gqOr_X zoXyoI=2tvF-+RfD%-3Wfx0&x@$`2Ax3z;@aqyU7Y<$q~GwCP1=Y|HoL&WS~$o?b7)j-`KYHeutPiWbYEpL*F(h4a%N$eAT*({b6cxHMh&~A zo)RMGuDr~Tle6y_tOpS0HZvq)`LCs_^sQmoyD_+g_!D9~vJ%B&<_x!w)zEpmb%a(d zmL}$oS76C8UMH10Syab1=d$<2cY~37qZ5obLS+JcloMe7U|M_DxvRM{Zj@R;%>N`e<{7N-e z7VuKl2AB*g@+7Sh8}23P(=E82!apfEedxM*;-EgAOHz@qPis@IHAGV%fAEjJG=agk zXTfA1YMyFAe($)>$zc?imkIDLi`z6;UpF?R1rSfi|IX2f4qW|%@kpSSYiE|~+R{L1DNrQqMLqSC@ad9~-JV8D9{&S#0{oNC9 zq2!R8-a1pi`2e~MDb`YOuO*juMx9rGKtotD?t?&=+8Mu2oNg`3Wfnsqsz5fOclauk zvR&>J^RW-gSfDS_l>nDIGlB5g`#4FSqHzI*0_wu-$V}-MB@AJdocu3#YTV*iof_bG zfLM6UUB!J3Ew3yNaUidg)yz?lVD#xjI}y0?dVfN1?INq??Xv$8p2yaXS52hB^7(aK zMjVE%+>Co6hx{xl0h*)*b#6zyjDU)}UxjflQQX&oW}HEM0J@K+JVFdXp5~e_p+!2H zmCgLf#QeT)R;(3I@mgnY_l{?N?N5JyANq-1^RG+8dIY)g0~x*w3V$#9)E`*5grY|#_4#_7<@Yt~CZA%RY)-?}428Qf zq~~lAr~Rq-!G3}iW@b%nqlWt$C*r#nLcGSO*|6}1m-;MaVdYDCB~=egF$7%l&tm37 z?!R@b#Wc|$evfdlf60K}(TaOe_M-6TshpN?eH|}hVyr}G!MV{84?nOZsanz~x1o{bjXic1nYJ-us+y;$}xo z;Zs87M$Hs8?K9n}oNeRl@GOmqC?Ny>41DvFtT2sae|3-R@ilV|QKN6Eu!Qgm?sY7` z@}5!;J_FZni6GJe}D`k{sZduF$3*%J56tlxc z-IApLI3B(at5!z^0u2y}IjD9F-v0#OmW)(Iz18pkUoF6ZOz^SVH?GNfxq3Ky##yah z;wvkNdzsHb|6QMQmh>ZCmB9PdPBGkKY?^83_kCi(cdL_7Zfup!oz9cGfbgIoDrG5mxJkPBr#*O2^XY z%O5Kh%AqNCV=uK3JfF@Eg#{O;T=1MMdS-FL!WNTIDAsF6PeabT51CV!MEu$*iKwiN zDuB?)`XWD4uzO4-A`ChrSAHK4rVag_HEs(#8Cj9lZ1%F@Z&Hi27 zu359*Y@S#Zo$tebj7{XNhlQIZhIq2A4GvaqWBl}Z#mVA?ff7rNYx6jl-BH>hb(w6@ z`UJ<`47_+CBE}uhwR5M501rTG($V^B zlY3RYnVEM-Jv%y1-YT<0I5JMMA`VZ=LxlmYeo+ zK>I=F38T9HSOlG)HSen1DG*fszwpKt4?kfMf*tnEG{sx5DQjxurt3CG|JUf3lLF-Z z>dBPtqpiwM#w*V*;iJ#3jr&l7$3ocgdBrIj`C^I(EE4sb+HQ4pp0>R(0{t zix!0#V2fc&NpB$BE+I@T6$`L?s@t}>VaD7}_dBylaevS#qch-Ed zB<<9x6&vjAw5aB&u3o)p6(IO7_OF1l0tiE^{XKz-J+#TgT4x3oTmB@5eopnOl#F0IMQDe_`A8jSJa20BEC@g zaMpMe*-7`W0|vV}Jw{oQfzd`4g}8)J*EisWNzq(HRC*uMs=(TiQnhmk z!d{b$jLf%TP7v9k$_Urj`z#Y0|6vFwB_&xnYr1r0z7&AD(mg!ndCSc5j7AriUzGO? z?BDG-be%5%DyvyWQAx>|J`__ha}6;J$2&E=3YJF6!TM3>AgPh%@P*}VAC zTHif8pdKKpa>awf}`x%I6 zLe`a#O8imN({{GS@v%+mSt2=|dcfj`R7>+@#0k@sEw*kkQS1_x{wo{w?v6W`dGMR% zuHCtB5LSG;=|#)q!sM4zrjG(*Yd<4idq2S00^$H@?#pblk{NRII^3^fyCHB?$$>GD zEyTAGiZ4`KEFPXYDT=X!*pdsi-ST)x43_|_2yRnIjCiY-QE1~w&XE^_=-JZ4q7(tp zBuT<@QEXIbE?GYe`oL`)o##`(s2;>8%#?L#dH!Bdx!3WDQeFU2lo z3K#(U%hG%?|KQLyHjfQcGmX0Sp64xf821Wq$p0qMJc;NKjQD5bevR$`(DNaU*K#S4 zRM)=yFuX!#9Rwyin+DA0Ln_KG$697M&I*3JN(Sex`uf>_SC-3EwG-oFC8l3DeZ%9^ zwwS_|WaLHBvTjO56mIL0g0|F_7K!oQzX z|E&`a*71ci|L^q=H5$+ELKd$&ryGx>24gu~?P^cT036GA+$8F@YJ^}37KQMF=(gH} zsrVj8bWC?wazpf%XwG!$2~3g|fYJ01qRTiaNkD)w&QC1+f$)D;XUCKMtuX%`H#ti;LcV~l77njJZ{8m0Iu;%#rB7n3oK9g-hIRR|iB)v`4UYDk zJ56wY-0i5mygbUMr1Lc)Ioq?~POU&&qf_OEkx{#Zgv7YpBh#^NL0OqZtndHcGmHBd zI>wO`&M2W$_}H>EemnJ1=muKJBW|8FakZ=JDRf~0QSQmDHS!1+0?uaXNEeP|u2f27 z6QoFIG1T6Fz;XjpzMJ@{ST6pj-KXc$?jW7ZyR92W-|UqbKXZj|GT%g;gK;|7EXF_`BV-@-51OWa%1zR#WVg|ASJzJ6nD2b^#i< zo>WYjf__Wd9g@NegMq8?Ju$2_yB$eZ?6e1}nXFhFY(l^B`6vZSyl{J>xLov9+EiCB zFE6{xT`OfP{P{~wy>Hv>{C7qJqsvVuiJfDmL* z!NFC0H$4nWBGDt{sBHZ3X04%Kx$6_7FF4kijO5pW6a zZDbz{utjgBJA9^=h%lyohmS-SblnsHJ%`mu@WD--iJIi~6D#KIKTU9g1qgj)qF%H| zu6KnmzeC%>!TR&*az_W!mCMQekew)Nxx6-m!(4Ri0rBV$kkM zxu=g&_SeXO?Pkr*JABqXffg#d=b4!fpt$D4&mc72WhOkepExg0K;8Vjv8>oo&oyD{ zApPRHrrw!2L2iQNB2YG=+WY&Y-(_d!`Q_y&H=y$4L>Y=Zud3>5Wxn+Ga1!KvhoMON z@@Gb>+1!a`a5U|;h*^OatX)u&Gs%qJ8|^&D<717Ip`K2vM`T2qm@ z<0G*7mhnUDTLB;G%F5gL2sc#0t^Ar56xRBY<2bW^BU2tx7%o_F7gl&@d+%m5S;+-?_x8w#7V_KjKD(tPR9`}B;T^Z$La-UR}+mAJ^4W^K1i5&fpvRC3cNNJR1l z;VisZ!TGZ9f9^er#+hOXFO@$n3>|E^vp*LD<2XO4`F@P!BVZkK7b&&=A5w6TT8N6kR5__TihMBSP1 zlV*KX>?u`<>oo^vL<(P674}Bm@+yu{Ij<+DF(8H4E=#JBuPsCukVIBGVE2^ZxVUbJV9Xuome1>yqg8KRT8I6dpG+_Gbz@E zomBORqVEmL4c=0rMY5*c&!2Ry;|WDgM5`Xz8vrk}-M3-=jZr@hAI{~=Fce8h>Tm#V zPZPl!WtVq(V3_woJb?4b&J-mPw))aXmUVFwyI{qK0ebUMcl$0`A+soYdT!|)wQrEl zpk*a&s-N?Ae;`~_l2=>E-FG_sqd&uO=U>+nQ9UB9rTH&w%C!{L73`zs+h35)8wKbN z^c5$I*AJ42EYA4H=kDxMF$ve)0Jb=LA8wcS<20ON7*BlemPm_EEG#UQCJIVQb5qmg zloZE{HLS|T&c9H8*~P`nwZ@Y)nk}@+5*iAQjt^fRZXd8n`2}!7`0)E1E{u0OoW?!X z3yv54iEVq7q2r=ttH|m^a7Dnp+j4^BB`>Xi^vOcawH57EcC`C#YQyo2k6&OXzbL`B zsbWd)&7OZ{xa^OhVy{Z#)WYvlAZ%ZcC6-=!+G%L}ZH$}cS zM%9Ch3H3}7n)PIoSQ5`srC5y3=q4|HhDt}L%TVcumb)Ix_pyBCdZ8pL+%>Mp(dNC8 zgTWE0{+q;gukta6=7iD|)E4KvEHg5>-t*XNAfQ7A&r3!Ubbq0^O@!MbcW_a$m7M*z z*D0!G&hfgM?B$foQwMJa?>L1wuFhdXHrgWmNkmyQT~UQ9>wSX2LbUlGbzf2LmAW7P-+@>9&s_gXuR>$H zo`y?tzMG9{xu!`i49Drx2ZD2Y%lR9Aj;ot;JE^0#LEX96UptBz5+BABc> zE1`u{$VwOqoXCSu5bMO{9;hESnz0QX!j52s>IHMii+_! z76UWN($bSNGq(PIy-9TXz|N-}{vgEQ-zaYv>#gJJ%(gSyEJ_eWaW$_3VTaYhv$HP; z+!{LRXb&p4Ujf1j|W?k_E#V~rw<#rO_Sanh= zjz+R*$Lyov;_JT&fVoF9<;91CLn8ygdX@9?RVBN>0;ioM>KOeBW1`c0Jk}vy;KP+d zzw1$}phoY~O6zUzy0P=)X9;@jh!JG6?79n9lZ*@K6oeBjdOk;gEzP}E>dy1O+} zTT=QKoN(2%Ai04;!I7Anx@cp(iNO7!dD)X>p*|$8xeG~bHO@AXwZAv-_^-QFgG?E( z=m>X0_-Vf^iD+h7Fq7qTc9YwXb5Tjk#OmwlNqwl-yAx`bEFm0Z zsK-|=7hbXz13!Q=xQ+KKRQ8TBrTtB#W!vjfzUp7uWrFE)VS;h~Xj3Kp?S_(Pdwq@5 zMVH6yFCm>Wkx^&E*T+jyQPF4@ZvETJ*Qaao1e$fPtE~$zw*preteWMey47a+!ix14 z-T2UZYOS*Ja<{vq?DE{)?Ck8t{85&Ri_}I-F8ik|SSu@OX=$p|;+d)okNcDP&+}DH zHKi31u(3Oh4r3LkS>4e@caTi>e2E_(Iu|g}GZMcvj1j2T=B2mZiM@&Y>SBvToy$w< z=w@d9{>D!dWai#z(Li1+=Ca-S(#}7D^RB#{iv5t%<~E5U2vIj(g(d)Hku&C?Uo`^~ zuP~Vm%oKKHIoYlLaMM@7!?`W!fX=C8k%^b$X<7k8gIWuV;Sfd0<<(kT6!&*s#y|9= zZhUjh(-?K7dUI$@4bXKOwBWGzldlLY$iCZj2X9`$@l-c7&s+DnX+U%QJMxJ1cFd6E zX}!D04b{SG^A3DFBWddcRYQBkOeL;fUOZsV^mgg>4CMP2i3e#kzPEWA0CMpjP5~Fs zQv2&xh5Y$}gro7T?SVg;X!>xCk-fNt>-E^XSq>`o#nY1M3KQY~0Pl-<6Wd=DC0lD) zvcBqS$!PrW^%7*jwFk%$Ru7JHt;WfdR2b|dSp&`wJ@;Q)TWqHs@kLd}OLM=m5=ysE z)=C$Qp*(8Go!)74NIF)3%ed%t5gkWdjCwRKr#@6|3URs__%LbxyIH^-yGhhI$MsRC zp6)#Kj1Nyg;NqdRQs%qF_eES$en)S*{4^&}C7p(9%#0kLi9RbjcBJ$*{S0T=S%>LY z{F%s6MD^i9dMxj_=cLFaeJ z91A2mv(NQ4PxF~@Wdx}-g%*ShJ?LsLNDXDKF9J`cG@Cin5QZP`WE7mli~`)6ijw0^ zZcZd5gtm%bhsUoUy`{xH*=xP?@oAXH(Jzq6$X3VE=>()#qq3(hHuZ31=v%StHLInktMpV__*{u5 zJS1`PQm`@~;&uz`1uM~UM1recnw>kP9*E<1&;`=|bj}zbAEHrS!s|0AabNO@ktd)E zP&x&CL~&VVu3{WUCG=i|x)nTjePunZ_{bk8>dyl>*heEQNvzCFFWPTT;+q%h2F*hi z=wHU~z3S3If^B2t6V!3U9iVV>VN>p;79anPh}xvQq+D+WvJ6E8BdVQG}%!D1~#r zA{a&f*ZV2qaA2(Y|YakX21#iED6Auu+@;*5_B3qFJzaF-8ntMHbZ${PvgO&+wGli~! z9-^ayfV;Jcam`Jzf%*0Bz@j<*P%FOnO1xN&R9xKElWE;DfVMN4&eXho?eG;57 z%J1?!wfk{Zd*UGr|7snA^*7Dtb6Y(?{ms~*Ww>s^Q@l?OomXo5soGr`OuX!Le&I#Cd!VN4is z0ACDW-@wo!t-eHzH;O?dinU?FZWc?e6H1LI0U*td`CGLIpVS(HWLcMMX(c64kP9u8-5`PV2YWmipjxG=-Ki&kV zv8$HfsruvgN$qTFYwcnI)ag#Wz;*CZidXX=UL=#Nr(PY$>zy|~)!W@grx+_m(K`8R za%%1$J#3b|KJM%b?GzLgaT5KMUzMF6*QFM19^mCX3+>cb@#RBmy_1UxALyQ}LG!p4U}tDZ63z&|=qro#*0A{8I{PKQil)X1oU`@L21`I7 zmo^-Tx-)>B-Qe70U$NWwD0jdB1PXG0IKY>%)Z-3~$Gfr~=Gpx~lYj?XJUet?zJVcg zZlweO_wRc9LT#mvDnAwAy!!VOhFMf_LTPt>+L2%M_$B&5U+Au$%tO$l_a(q)@C>HS zfq~=+8YD!2wtmE2i2+qTn z8%;#RhqR&*->ycsqY0F&(450+rs@i!#?e*y{jAqM;tH3kHMDLd)uz~pFIAnz|q;On*(OS3R?$m z+oKe2U4^-&(}`N%=4ngQI${~HUHR8Q{^J8(|CyQzORj&c>%&ASmy91Jmebk!QdLhc z{@D}K{o^a$*+;F`Z2T%%K3Uz{R!#M{8u(&Gx3Kf@bhfp{Ors{E<741B^5k6;`Is9_ z6-a-cK=0zjDwf~f;dmDdX65T(=PY?$0%coj|2A8How9lzC!`Hz>qn&w+4hA&Oa$NM-@!6la+ z+1*3>)TYM)O$SJ2S6J~Pu*h~9R9l3b8*S+!JGT&Tj5;(c{-l3sC7pEN>hW}k+xd&1Zf2<$jxp6` z5r`nhbIhxG&cV^yFX*woPZ~NocE)tML&tJw4Qh2ViSN$q)zCzSRjGMe%2ghYoNz6N zkGqg@Z#5ryXia`e<8VXz$h|(tRHyGBuy8l7*qpFG@#Nyp*e~NfveSLuzr*da$HM%F#iHtQyIlGs7|ijbH=yj6;Pa@M3#A_) zc$e%RQ*&w*H$rOtIo^o?!Cd9q-aFw)x{eh-x5N@;y{0y2h6!T}(eQj1KDT+9x>o%P z3YjiNRDu6j3!vTtr|!1HWJe|Kz$sixjxDFoV1}QEEAwIF4w=1F1hV~(uq#TiWPGhT z%NOuW4{jezRx1}M^Vy9UZeWGou%t92pkJjl3nTWpI6JWzz-G0iDRD$k6GQlCkv4+i z!*%=^C(2~F&+QiOid4~EV$f_YtY}xAFVRRBGM@qMSwOjH`R@6~yEDTEY;9?0ZdZm|X;-mAtbF|-zQ(K21G4O9UAn%G ztp8M`dChQms#&~Hw>UzxMx)lU-BUk|-MhD0vxA?%d_Z148(7Nf%z+B4CQB1Run;yq zXHPo48W*VhM5B16Yv+EUtjdVcjo2g<)J{(pS^ zWl$bXxCM%$Ay{yCcL?t8?(P;mNN{&|cXtTxuEB!4yK8Xg4&UDU&poHkP(>B<@=o{k z^t7yJJ!{!lWmNg2qZdQsY1Z~`je?4cdVFHj*mdcoE1#r{(WNqaNXf_)xz3cAmj^&0 zY_$7yM@P${u^+hm!!pp)>OAbm2nq`7{3NSTyWHq}d-FD{WjQVIo0V%txcU_V{qOnj zpD1a!hUKXnK=p%O&bFc2gBhu9;C0oEpXL6GJvdM0VsI3Ha{bE<4AN%sf672?X>p2d zrSor&J5=hD#BA1D$PTD^_Cwb(%VXC^v~ABqOjoR)ej7Xvk<3j~dKnBiUC=idTaqg? zWF$`gW+&tAYE-LG1fgL%8%|#s=~Fn54}5UWQSR>@xx!vBpf1`7uCvg0G8^;$fMn3d zz~!tfD^+=N@)sPFERrtR5$%Pb7nCpdI*w(PwjO=Dq6U_P^p7m^$5hXq570<_)8B0! zh(X;>#~+ISw$vQ$HV8Db))!e|>_HBT$?3+*D0Sr;>Fb;E&4r4SfBzJez|kn?la?Cx z_~?@2S|}|TihMG-ix_6?IbUriV0Cx=09Dnd$U~hy*T*AH}u%hu_>>= z!#VlhWLmE8(6?cWvxTS^)&RQ^!4L>ci?ZH(-LAJQ-wV41&c6i9jxWO_oJs*=|ITZ6rqhl_e@?_um_Jw{po7i|)N z)Z}kwD=LJGN@up+|UR{)wR9pM6v)yHXc5HMM z8F|MV3hqziq6H{hx*MGt`Lm9p_b=LiICDyjx6dz07|#l+E7a387#~etnO9~Pa_+DX zf*=aq|H7(c!S5z|BElu|k*&U&TU#4PS0OFT6<%R(cs8-mF&ZH8f8l34%l$zZux6I?9vgFHyY4#$NstZcFF zeV}_8DMVfrk*0tbw_@1?9OEx6nV3!r@8-jsq~#O?K$C(#J+!Y)F9>~-gy5sy}ReQvyxC)+cG0RzIv7tt0$1G1W44+J%o@Mtxjx!0ev3?J~u4D zAWX!ldoutfyL;wj&MIvE}#e`24d&1&kb95>~Y<3#mi-( zTrePm*ZfbV+w@Xaf3)gpNT=GU;<4#qVo0jtH5nXjL85W$SYeaqa{r9qohemFjFU-^ zj^Ys;8K7hMHv>~5t%_g(&sjGH?{5H9jwSSumT$U_vqLHV8)JcXoV;Er2 z`~(@~av}QPjSny8zs5^V{1N5(SKl1?J^;qSNmkTR2cibh5>##KmMAsk)N4V2=bxCu zK=l*_wBt$CappOHE2gq#{76%p&+~gg>$(-M|GpzF$HgtJ_|1e8e7T_|`?W#p_jpL@AnIkKwJ)t@VWs7tR3&#JR!14@0|E_$ z0D#>zU2o(JQvb9$Qv3mE7@S$==}u>i%r!acIDV&}Sgc?0Jpk$=;Dl`j>Wzu@u*h%! zc*lKa7-`|spUFdvcni48esthGQPY8gf=oG1#kM5-H33^+RV67YsnJnvB(P#89{lQ- z6-?vUE0l%jYHwL=-Y+5 zyLLJxi%|$V?9}v0rS5mKi}R&j--mJ}ajPlU`-~^S5kBR`ShC4O!RX}mne+Lb4kt0P zNlBGYfwO3A>zH^es_{M8T0o zvZ`2RR3tX=D^iCr6}F2%*UK^eM2V-{0jnH4j?!rpGqc0JJ(XGt8Y-%7sm}sd13j#c z5488vceR#HK1UIO(_$*!-1Z}9KA-b%)s>kmXrBC*xk*@R!(Tys$$=@u+rH`KMkY=o z(xgcrJIucMLWaD)rbdD9W3|~91qH<;JuUA~-0Kb`1s(jVAFwssxLBA^Eyn|D-+;wo zW@GJ4Cf&?3gvY)AWqTYrx$;%^3=kdc5zkG**Ddy@I&yU9KlPpm=j(QVy6z2t0<>PE zuqww6ZwPqZZ(pBosE^NA8vB!W%0FwL5op2V9-+U+=#lD(0qk7Ir!-){vt41IoSyMH z*bfUt+@Dx(%Hyc>BE$?WPALFET^5|BFIJW_8H44P1;b-w9=IqdS1*^qd{>6t-Vh;16$8HsGsRIyQ6v!wn%`92&8YxEklmzsZmqXF;Wi0+< z-9ZS@z919d2lAV9=6yFhUpl;AlI2QHU5=S<#~5nuqQb+UxrujxQ1ZygNTb-9w_0#jvj!AE1ehZYMS<0&m5+|u+BigpPc7!pSdeJGX0z4CQ0)g&>GI^P-}KKdCJ<-b=rh@+ z?959p^HCk30Uiz2hk2a6r=IzmB+n-WU;f=r{ke(D*^=R>9vF-?h-{h>{tddr8ELgx zr-gIb-E(PkS5n(6Z;=4@Kh)5uX%_UYCYTbAOEoP|1^2%0%guvCbZ4d~Fi?RA2x$dc zky_q`6^E@OMq_&Ywm_TKLk68KSP11}Io-Q{gj4U=e*l-tlaC;77Gs-dex5;0UH(#A ze$s3*TQ%*v8HPkWdH`+v1iRR~)}05)cG+<>sc&R~wwmUJ6{=*Tb$KTh5}9>3BzQ}@r1!euJ1@u2R+>SJDwLlDA)&=UZxI3=wU*4fv@|(Zxhl0oAXS_n%|5y_% zU;Lg~H^FkUEmxfH2RK$35E2Wz^bVf50B;jy6c!+-*=)a(At529*=`;j?1_kq-Ji^l zO^+N8HCh!E6x2d$5F%n?V#49@bttobn2AhS2j0-o&@3uN=%vt0C%+=7i#+icJYU~V z-Ypq1>$}dmzBvuRB~E$5||V1~op9bQHuMw9tW_)U}VF_B)rIUV8MXx927; zYesvg`D>fX1PF6%YI)3Ujf>^-oQB+9&(TiMEx6v+ExhFvfj_$5bw$<~ElKY>Z@O^z zrlu6WIy;B3Y>lDp*2lBvAC*XWvpVMQMOT3J|FxUM;Awuom&c1lvkm!% z=ls4`Q1W|I;qdV9*09;qy>zL*_1#^2LX5gb7MFP&-2>*4^{Sb%5=$MvguBPjk%p`= zA-N(%ai_ZK@6kx@eXVouqV63Z{;_f-jYgM+xqK)c7@7v{ro+tC$|3HU$s_$E)`h*l z{Oxa(mUxVyJbna8Hs$~2yT5*rbS7@$Rde4i3+!Z3R?GE#I*7S{>a_10uTa6ZM|Vd+ z*CFCsk+WI*1*4xM)d?cx6sazmK;j{%<*Vjg##6$}tBqcTSNtLjFhGsCp zj%5WDR3=vM`aR}j$A1Q;PP#>R)ym7vl6|HoMzB3PBs<9PuD#D;Z`$nP$HQ}-cTmvF zrrp1-NYOL!u8Q-+1?7RRNaJZsrb{*(EcDDK-_tWPBH+7$U2qc{+tQwuwRPlhYaD8@ub7D=jjF2ZXoI#W$gYS^ z-|aE;v*yYcHMaS?s4dg91jddH-!m?eU$g_5WegcA5&C3 z89R8TX}Q?1gM(J3#se1#dFsGx<61SMYvY{+L_W20=IQ}%hPqN06r=~auPZgn+A%8R zB@?`O62l1jxE5(5&&(oT3S?RrU(3ErMhy^qj?(>o)(P`W43H>GKtk+0-re(qO`J#a zq9>ir=AtIy!ascA$XCyRy{(5Rmn?OVzT$E+wKNwSM^tC(b?yIAR!k;eZ&}fh)oim+ zRi0LXC%Qq%@{9RcT4qi58&jE5#(Qp8C7pZ@F|5=kx!7U-I_XKX!5*>gi0aB=GrdNM zGy9g5ODhajnR(np9QLXOUroSffh$X_QoUg9@J7OsWgH&854!7{=T+|hgu}S^b0}hF z{I_)Wv^Bm3n7QiPlenY{Shhr|Su^!`yOD@eZQ*2E3Qgz-DB&mXaG4zz@Yut+@wpO` zJ%tXZA}EfH50$EPRIaYOSpSO2y#TuG z5h?q8H|eM%@2-*F(Sbiu)A3bA>zj6r6sgr@5|SYTd(vuQ3P{WG0m`-G`6Yf8n^(y&TFYsBP=Zo|4VP;mAS z5Lt&Pcq=INH*Lz32JCf;_a(l_{fhS%+;VT7mS;9``=YA6<(9UrVgXKf5?wSuB>6)o z*%rDBEVQ)f&yP6>H?ktr6T?*xm}F| zId;>U(#4wZwPb>4J_a{i@1Ggfx_2WhJ3m@^1S+&C=H2h0LUg}5WE=&k7_!Qt*@xshFTNI%uX9RcBmK!DnuZXRosi`Sj*>v@S*3=ZhZoB*#+#ePd z^#=5*TDw8Fx%v4a`BYy>8(Em9wwrojrpIBo#y2spE-w#;wKd;6gsI7l4co}XEjx%C z*-anzPMBm$^w?aSofUx|*q&z*2;%=Bjjx`Fmja9xeCkybzhgQ+jQc@R$Szuerd@4h`fq>&q!X4-0%A#QeLymrsMEzGgfxN}a{)bgGeaM|Eu80t%*up@y>9$=iB92r)GPe*-sVG~?IlXQBPvUY3IhSqYfn*YTPVpBp7vAp z>GhkG^kbqHsqUmzrx9z=z9Av^Y39>}3YH7jx`pB@;e2dGC!fcyY#gA4!O+>y}2d0!7Z8*Cg4Nv`4#FxaZ#&0bL;#>t;kIi2Q)R#sdO)DQpQ?zE^eVf{_r7m9XSH4n9=soKezVf8+1a)_a&5qzharY9{(J98nI9x6_zNI z<>YszN@cOi!Y%ZmC-%28SY`p@{*n3$DpmQ`~Bli`0VSnb;N3>E6(`^ z5dOK1z4gIze6FGYaYsdZK6#2vVPd3-=nL=>tW(+Rrq9MSGfBMIjg1*NzqbI%?CTbS zl>eNt!B)O9mOS7I7JNI`@HP)wE+CNCvxUJh$C^u&0I(KducYe;&tAFSW;V%3VP*yp zGST8!WLs45!G-$``-9KdJq%8hb%URE?G@*yHiIkl!Fa8VQN5W7huo(j#<@dkYV9XU ztS-~EYPH!eh`?UwkigP!jXHM-=$1X*k6=nx6l7GE6=dMotyu!6qB@b~Z4iy!$&Obv zynliDli`;arl#1^$+`L7ZRD0elag%dd^dd{4^$4Q`F@&!>_FM&U^G7dea?8~HN0SQ zM2H2+ru`QmN4?>1C0A5U(MRwR*%9b(rN{mW-h&|%Lno4e*Bt2t3H}$0^Fw1reM=4y zd#;!rGDv)w!~Ed9mMoR1$?RtuJA-0pRUWORnHyx{g2t~oHg(D*tRN5OD$TCDFYyE( z67H}}0k#{8cAFW&e+_&_L}wR%cD_$u!boYgJSXM-RT=uN+9DmPpeIPBD;&B4(Qx0_ z@v8Jc?l4l$)|Ng?vEq}|lz@6po9ASnc{oIP^>7o_bRPm;45 zFL1B;bKXD1eWfo+MUn_(5f3MaBJd4NJNRTc(HYZ0I?cErrgL$r&AU2nxy1qTEh-wc zWMpL4FimHx{0Acir;9#Ak^scly)ldYr?>s>1JFWz}#USWCiZ-!;Rm zOstYWGH^5;jze6MWE6#=-(^LhY1^|CZqfzbPzb_j|6M>iBWcE6`4ysJ_P{783-a@x zxZwhEUv&(dv$uQ}O>(PBG-En13VCsv4<+-tP(-Z(y~4|Af+EI}T67cfNpd}PnR&!q zY|ng>H#}cJowr>y!l95(aHh16l}&ik?e8#zq;Ase;l$rH5Q5vrD z8QEh4*4b<)seb}`N-4qh>wCeLD1gv4HyOb+_CpLQU9M-U6-|v8YEwexbmb%(u}YHv z;dr01@Q=X))olnleE-Z+Zh!c}HSSim@I;#;?J0#x=RU)Cg(AwS#;h#-Hj+;BN0KS* z@$Tizh$PjOJTyQaZ8u$?h8?xnm1P^?ayE@< zyVr$6^^D%e)mbM36SLF{OaA!F0&UeM zqZ!qw88wNfjPh%#y~m68rL*N^vI`*_asA5~`o#Tlo&Q%Y{hH(U_{ifdPr&wEi1ls# z$h2=h#VL3plk63GvP*wn2%m2szP8HvtRlCg(AdLNwYcsztb>6{5C+ojd4Bs)o>ZDm zEc4CK`Tm$noBQ00t&06wV@)~=>!*&Bn%_%VObFIP_3p5dSc&ub-Xtmj5Xk~C3Z$cg zV#draYcHQcKt*e_T9wArWI)b5Lz1zX}pUl2y4;h{eY##!sg>ZOKOB z!17Y5d1hVOPk$FCY@|Ykj(Uic)pn|w0RJbM1S?t&Kp(kL;9wez+2r~QLc_0xGAc1ahS8*85(IG407=-YZRw?jh>$>TFPiimOhavE|pSR`^a{k->z*q zB7N2T_xtdYj|v3J^l2TbG$Y{qn8xgqGMS{St&5He8LqI186TUKd~|ays19L|9S3dk zzIY`zOnlAh7VqSC5H2vUa;ChZiecBn>qIO*p;>k&^^Epe(?gH-i)9*jivIHvr9kn! z%U{nqzvt_p+P8SB#Fn__iFQ%g2P-!$%F?eD`cmMF`fo<&j$dLJVsq$H)agqfc)HVu zywi|AM7Q$12S$Z$9vaja;}wTS}>S3Gxp5ls`XDISJt@eh-3>`Wof!GGL6wG&h zLDV9#h1~>mkV@kFD4ePf5k*1Fj}?&)uT-CvD!eHvV5iE7->GzmW)i1P9*&e4 z1bmkj)ww}pXwGz5_y1sBiRWvb;X$0<_j-Td#JzoJ;`?}QE!=d?%GPs%qE#-!(B0XKwt|oKe)`@DC~OL_NfG;Ty~i{0g(;-{s;VJ4<^?CeblQE%1s7$%HG-WvH#S zRm%$p{Sh|Z8gJp)`PX(CqDkG~p_^+~HnR70b7_L?e;u)kpb)J7Znk(FGYNFOE?CfQ zMIRj>Lnl-Ya0qgX*XI>^J|#WD$ZOauZP@9M?0%K}+1RYWfz!4p6QuD5GYHS2nvU$R z52O?FK?!^cDF8UmS!_RjAgj3nnYNXf8_0)F^zcUXR6`T5^ec&!;+Ot@Eojwrvgo`# zj!2eq4Q<@_^hwdsAXJjeCt7~|7H7MR3XU-YMJjYehg$pB_PbHr%ITr(TP5huqqfH6 z$lKA`8*Dlsrs*&9;T?zdudZ7wy%a$MpKs_m_|5;-fRcuBARoKrn~@gHvdPtCSMG8K zO0XUdj=Ks7|ES8ymkNGxvJ7XV4-Ziu(k(IcoZ;N|AmAo&4_?)=CUAN zt+p(dde@su-&_UZN^)Bn2(EzG;5`=q*EYG!hSba=tgr@iiX-LV)ar_L(?m@T<4KW7 zOl&~hdzOX$+yI-O_Kcm;Y|1-sm3-Wmi<(-nv;X52aa=|l|k5^L4uT}f&6 zV$p`^UU5Y)z`8-hyADOs|LIjlGIv&~ zB}$@4hj}c$BScMPK5C#&S4jE}Iy>lu6Qhli?~slh1$u%3;yVe7*z?(YKs@0bxypgb zzFfX%fvNX=FD2!~QN^Hc;k=ZH`bR_jO(~8i@s3g3Pbj-OaFDHf5Qy*peT^V&BK`bv zf3OsAZbP$jDxEfLSB7G>M*?qzz6zUjC5;oN&Cr9r(5+cB)th_xqY(z;Uj&hxy2( zINoA}xm8VNoye;zOUYLK>{my}!nw@9&!@7sK~ylSYMjUz5_PHqAMA<--F`bMZ_ETd zrvz}o``&;+84GHq9Wgw{xYKNv{6VCz7g5@Mws_{<^iZy#&5P?1=Oph=B;OZc8Oc_F zV7$e0=~tRG8#?=8-k`2rJguMys;*gtCtNmoOrMvVsjnAKH?L8#n4M5mJ}PhvEREaR zVvGH?@PO8BN!^fCmep-UYr+RCqJ%*~;eZ!3QY7c5yg7BE(8_%^4SG_T59zli}m zIyM+8SHOI<=g)^k9EZqY6c-yj0LNACvt>n#_b(oR*A(cHXGKH(%;6Y+Lw0M2K@NC! zON5#mwJ}BIRlx3g1D;=JAV3j70;#s(+XjalcJSl+2u0J2%$1&rV5LaTDoXBQt86~P zsck3euNA8e=tDx35|Y`cIwK2Vr{4w-h;GlOvbpg-Loo{#tw}8n%AuBeMbd(-k}KEPCs7ajh%*)e${Wcv zxWt-O^lR_RRHahHf^v3AO?jhF`&E&B%t-}*Rw{JeG80AvG)Th6B-X7)-jX)lFGWLX z6_i5PL}PKuEK2%blsuFxbfd6;mWIvBpb}H%@U*9SDa%W`D6;zxXIjvBWfH?vV2bM# zRhjL(n@)mTk;V~C{(hcM=#Et9m?`NzA<=sB96^cm(F$#+QgBN7uamvSpAMbvFtm}`ED!+R3%gCWJlObSaB zkbriRaf#7T&BjSo=KnP)r!4!-l_+j_u3E*TNS@xhtew9!35B3_!Bfg$H8xu^ z?Ee?{W9wVpitnYgXHkTJ#$XvuKn&NOtwu!fUuZtmD$ZXwI(6YC)2jCi4y@Fh3gu;4 zx6~8#Aa3}}mGXR1L~~K4aQ}y(TVGL)kj4AVgx>NDRF!R;L_v~Z04}{k(1<_7%PA|$3E}5X z^5h_hKHc6xwAc_KU;%+KksN5H!P4`yAAM2Y>3-OdR)rBNbORK;rv|Ko#Nd?_OCa4HV3#g@s6dsb>r zrF|_a#(VVGgkL3J*ZwJ#Lm$8kG=C5a>)%L4kuvnjq-~IE4Z5MmSQc%;J7LjPq8;sF zSBn+RilE~&%Ti~p6Q777%9D)#t$b&x15n{;vJ2GFaiS`nA_`dm5mu#80Z;2a{dz~^ zb%4f~KY$j|iOeu&z*DM}63%xaMVNyqGP3Kp@H`hLfmVG-I7s&y_Xf!o>jBdNzO_;T z6{;>%!1hE|%AwA)U8#0N3!^Iqk4S?sYL;|EypUd*JmrZpx3bm)y3h;YwLEOKx};RH8-6+y#qgi) zA;4>12{JL^Mu3l&6PHGU8jkwI;QP_D`^r5VI@b!GB5W}W!TJk7wzPgFxy=tOjLxWn z^=1Fe#RydccODRPr417Y#o5l5(_;%_lvNVdOxIryTyaf;yvO9pKN?RA@c>8O{xTR+ zGBn)OtCDq$HA48v{pDbpO*$qF{Z6?oE=Mhu#z45iJGC^XQ0wkWjXv!XnG=+`0Hi0#_ia#TIt; z7mI(%Ct|dV8Czu}vc2&}q4@AY3jF~zS{08-qJ@pGh=!ky5>Twl0JZ8W{Pl(-d1xWA zx!XkM4rv+D{gVjil2R15;pZb!5qdqr@m>`N~G_vcvPW&N)TA&Cn}$c{6ij>V(3FuR`H6aCjnHCQp+Df zckz4DZ^rg?hsH?9)|psm3~BpG9K8qy2iT|OoiG|leC<2cJznW8B$6Rtm(^^{85tXr zeo3*d(?5NOBi_&4c|pEp=&aXhR;R06s1S7hI>zgSV4^mQ5Ij|JokCW4V5`k*-O@BV zfSo#8d4(jJ2+l@fpl?!~KNe9+^E&qtcZ;mbW@QY{T^r7;?yvrYN5eo~b^4w-sl?t8z%Zuh+Zc^|S2CxoA1d$XGRIxJ< z-lLE;oGk34LNewcX_g?STYPH-Du0;a)e_s0mchH0%-y-HvCS;=bW2^CqH%0s`l#Zr zL>}LoczZjAH$#xh)sc>--etoo*P(43bxm2`Nu3y`eK4oHO(vI0A9kezv%`GcPWK@4 z^7^&f!9N^iEc`M;uSDiJi_D)woxbM2f~fPlc8+Q*JM_F8qxDQ-wRndV;4F+wgf5x?F?-a&IN`hw*G{Y1>;n)p6{7>Dq2l5* z{{rex)klt&RnVt;;!_uI1UAp}Fya^S4@V1@?)LP^$pxO@uv-;P{>get!Q>2eZTDiG zPV#*x+_~0~^i&X<0@x&XbWI?(b&+lC^QAM24p@aO3IjXtG?oycYu6)@QNn7;B1bE^ z39B0`xao$P$`fZD#Jo|@a#G7mWlXFS6nU(&2*QXA{I*kOY994da0rG8Iz`D|Wz4X! zC;U|OpSRfHnNA4961A`dM+aKla+2tE&XpfFB%*;l`7Auw3NFauvFsyZe_S!n??`F_RR{bmk+kQ=L%5^ zss7Iv^)JgPWLp6_qmw@Mp^XcPSI3sqtIJ3wv}&DUeGToe42m;{*i{h%kHBq68rs?y5--YrUy#iAxOSjDb%B~E4@Z0@XHi*U#>6?6mdwEHajhR7Hb@l| z$fzNy@y8qR-M(WW!y$h=q5QLLwm98*7{|6sDCzgI!jgCM(8dPs@)@hxZ;yc)X zWdU7%(wBzb|mMeu8p`%nxunvs$rXi7{xnBCLQ!+ zFxfBd<>Hze;AVJY78K+waN@as+Su;&1(~})KN14|G$wD!e6}obOmP8s;;pX``f-1{ zdZVf(MyHr-A3S^HtjCAZXv5*+<8@r;)S?3eB%ShlzFt0Yz=^{LVy@wQzyDg~K$C!d zGh;1)Aj$TD^Y~>>Po?d$ubn;wdfLjwDAG5%Z#7ker6>H>Ga4R2On1@m84@H{v~Pr3 z;J<>^fTvn)j-!}+Y{Fw*`!(XeynSGAPNJa=><5tAEs5n(SXaB)V_LraEPJ@Pf#Y`~ z*ux@yjGOdBn`9@N3ZKWi+j$ohhkNwubcapNUh!Ln`tRmn^Xrjgt=9gY)=PXQbz`F6 zQhl_)>Q3!?MZA_d^<#1Od|-k2qQl4pe9pZMWZ0|-SDVw&7*&wfj~f9npt>kav>gu^ zA5<3;0Z{j%1Owu!P%SJ3Pm}ppcc{#X6(>%LtsE3-2li5hUoJsf?@73GvA-qh7cm_DyS$Btz?7jnD6 z+vjTfzoWqt+Z6PV$zg{NB34RV5)JbItche~$*}|3#$!`#T5n|HBCT|I3nkYRMw@ zf3BF0SgWD4&j1-ER&fo`YJqVa2C%X=hXh=p2|uUZD2;FdO3Gm$0!&A4E-tN3-S(r@ zQk8Gw+S03`HYO%>^FOByLXe^X6LuCVfHmAC3NTXbH92z_kVl;SKyz>$v1K*W@~X-! ztBU>8QMEK%K^k3^;uAEp+PBdD$BFxg$sw9W4GX~W?GZ1D)$UoaxxXZkdPu$*gN413 zmXel|iim)XIGD_dQC0%D>ZvlXW6Wkncj$?8;wuFbn3k^5vYJN@_P>Zu4oI8?DdJV_ z#o!nHwegsw8VOQ3Sa@#xR|vI!uv!U9WFisc?}>BsD~4pW$XEXqS;&e2SNMqx_Ukc* zknQpO{J!{|nfr6r8e}ykr9L$yfDL|H*wTROgJj+Seg~_P@5TMY&|cGCv$f4~_E9JR zl*77T7s0RYkDUPejUg9&~zC zl$Ax{9(Ro{cD%XXNJ_bhO`WPBCc0d2chUHo0q9RLAOCy& zhk}IkE*41FuW@uOI)GX8pz~9cQ(u2GSGWCMK8LSYXmR4_S9^}*M;$FKVpJF|=QDsb z35SgdqDA8ASL((61-V?NxcY(Q+W2#K z5}u&tBEFJs1`_oOf~Xf27S7Er*&Szwx%ScoiISD(+5NvQ_)Aapbe;E$EVJE_`C@pd zQvyDFXfC8sE7z}9NPrq&SEE|kn;iU6UeP=`GGaP)bUwdYR#sk4NoCbwTU|b?GL&Ii zE(K@3Y8o2X0*Lbgl3um7wHl|y>8VQHDo+}i80Zd?r}o17NiB-q?g)*Tfl1W0j&BZ9 z0`$*Efq(lO+X<51qA>y|&ZLS-6Eb81HL!so5ub9nlvMQxmiN|xspUV;v*w#EH$6@Q zPyt~O40C84Pq_{ceTmBHtC%v^>6n)*>i2)7iw`?K+)h(Vb(YRv;V`Smvo4j=J^NS2 z{pX6E-%~vpe$v5Y)f9mrBS4^xPe1psN^!(sxzs36mxN|mbycyNnwFl5iX)KlH(el}!|UOE zy*EM|^{oX$3VgS_sE7uZwMb_b#xm; z>z~uJ3zr{VR2vQa$T_YMpgo7ukNo!4oVMbeaK&snHpt@L1IZ zMFl%2Le8Y!Y@Cm;2hG)b?zrZQmHc_%vceOt149S;mi6&mXe8Ds-q(+e69MOKqmFI9 zlj`}itJ7HNmgVbh<~IWkXKQD`Ffg-maAnbunVGq_mxx3n_7wuGR>KG)nNtM=1EV~4 zP94N7?n8!a$x3LU4l^0wE@w&N&e*w)`HeOVbC zG##2)*I?=IOy2brrxiD2U_EKf{I%gNv6jq205xX^5Vmig6Leli<<I?*L8Mw zt@4xRXq?^_4INas<+jj7NJ__;C`&EmsN>(|e3!$C!DmsR;_#Db`2kTQYer7yHHmmX5$nBTe0wzTsPy;1{T&tbK>;) zYkh z+{4txDLD&&tfrZ?f!#&mPvAK8pAywBR!?4xP)Huz+a?{>Cy6K`sFSl z^Z9x}vE6d!OT5LKYgevzogJQ!NwmJ)Kj#1xHCd?jZu~zglbI-O|0bhPo8$>~3E@XF z$BGM%PC1WAKmh4hcW$Gf`+Yk~uP&2u5q^drYb`fdAJKXP8KQ%xkG39n?y_CD&H$Q5 zy!~|ceVT0lbsYhFh=#=CEumKP)BdTY=QfvOH~)%@g5I(~vxi*iVndsi(>{sRUb#8E zfGsaV#As^)Uob)PA6$b8lkvN7@&TeHF0g`u$9ihTJ)Jper`*fgVJ-DGI@DM)Ojo4go(j*rlXucpbo;WrtKZV8z%@VZ=X%4w@{y0c&EV0L3BH4qgF zBAm2xn{R?i=RQKVjPKJ+(TOqsw%D{ez0@IPDavipx;!vmq_A{8oZWpF<1~cjc@S!$ z&5a@={=%Kx5Lt=SyUn2I;GW^E+vz$QuZhx)IaSi>K8A;P`CZ!5{@l<)=zXm97r2d% z)Tl*3D^7Qt_fuYagW}3w`dc^N6IJ~B;`RtUNL~}cQq0>0lSl&H2&%jO2V|)JU z3zD2Wtp|^!mGWqKfSz<@;lebxxE+sF(=s@qujX;rCcT}h4~(qF9Ibqwm8)Z?f>G{W zf19e3qlnp3JzUF?T7TTmbD+H9Dv!*d6>Q&&)fG%Aa>5_{bPx=y#-Zr*JJSLwnlcU_CnKnNVd*0-@ZDwJAcPPyodbCBK$Y$H2 zS$yyBIx||R_dqDv2A4S-uT@OcS5X=`ya8y5#~aknTh|VHZ&5vL+5x+A@=W7lTwJ?W zyq%0zeJypma!~IuoLj6L^Y*tc-1M|F;*``picQKs%YMteMGPBazZk@Hbr?|&9kuO) zYS2tY_^ZByrL@|_a2>F|x6c!Gx9p5-yA)WOOJB_AfWyWHzZf-VmpZ3rLwT~dMy)tb zyI^@+$w)GB+1(AhL^C7czCd^L{o2W|M*?Z!jl6YAnaEzMhsryIyKMl*e&>r}CB?Eu zxZ0&$uFH*nH!(GLSIx)R+vCP~H#G-2xw;f=#k*1-u>{gy(^@1|%cS2+G?GLxc}mn! zy}!SB+g=(+u4cV*jC6#kEEu)E&?Xg7;^+w~PqRr%qdqzzYc>0@k9=8OdNswp_+|WX zlq@8vGqGN8UP+TNtX72Op!@65vJxgCJFfFD2QBwdkPD4c$GeCRZ4aFw%t*{;lk>+; zW64R~j)U;MIF3w;dbjNaBGfZ~6YjOW(M}Jh0kjlcFtu_~i-zE&qrIXeH|zW}9EsG+ zjXR7~`rmKyMG$9jIUX(9c{L|H8`SF-b@95P{QX{a6G(hBfk#18n!jWIAA5BlEeOx9 z*vu@*09h%cI1pAaY+XrObj4)KSGB6b%1Dqc=HP3eKkkjs^qPc6KJQQBompD?#=uxFzvjG-O=3wKR7b+6d3jB}xXO`hNnEJ(WF$4vb_ZY$-gPOBZ0<=4f|s+Xcc ze3HOT(9QXj8c?;%>we?@5Cc3MSA4fDR>CCw?Hm~m^Dv~Q3YopEoT81f8C1(qYisg< z_;TSR*t|sq6C|&(A#?LR;lKz{Z0&u1_x&C-1M!dzmOx4jc5%Wkr!*zOI?`F$I4sOL z3fHRc$$e>?=v(1GPDrN;&z_v@lo*rZr`U7-3-0R~9a8%=@&QOU)~47&V1jZ_8JeH^ zG6uOivfa*^hhsY!g`+F|q9HftUVO>#vU2X=fg3H;QN}4FJz1V z{rNmh1e&8926{>p#d*I|9KIvp$T{wIEUhN7TH0F6G)sY9?K6;&Mnz4`abvr&n#Q(m z+dHY?gCvttA_s!_|p8U(g_VF4X$DW zAIOFledyvnrhil+HjN$0=~7w28QdUo196>zE%gb1@b_+=6(%I#>3MB72$x6w>RhLv zh~5KhFA|Q3fLFha)N85BFB-BTO%VT=p3?eJ0PhgYU5Msfg~B$ZWvv=-~d zwUbxX22g|d+A1eoo<_|GIj!6>_>Fr_WIJ1K8!6lujDEXlA&-yYTk5`u|Gxa^j61u^ zeHwV^zRxF)8_cjd2f^ywe0_hTYi+%GfORml-5j&0rmGZXW!$Q#zC8R^J&+>{q2^07 zW40Xa;J38Ac(x)Rpdk|_X=c5~eml{z z&7ZQkT${yqVhW%)pbSeqkpMad!i2zaX{R#Ko6KNKVF1_#1tBKs6LwYEpcR}!De|2Q z3>12bfs+=<5Mka63(N+niUK#GyDi|iFs;{XEZLsBh%cOtLw||Cy|;`wjb~+dk?`Qo zd*Y(OpqX=Bz;4}*xd`rjcO4&*t8Vkm1>a#I=6?RTtm!VTMtUb>bk9JuKv#oh=&3$G zxwE+st93pi??|Rl!A{VmGGpo8U76^2NLO1j=r`90+FfYqR^J2qDN+&a`cT)waa0Uop<=XQ6~zDW#C#Bvs(-l~Y` z^jnl;9unrcig%>E-!ESpJrGF&{=PqFt_0Vpprutd+hqfe*ECOId=WeL(FsMbIJsoY z)%~;uv%nE)!r*MkFw-eeksj%sOWPwtZq}K32ynpH%<6?~Q=Wz7-D)1m)?m-5g?P{A zN957rM26REBeyWAX`>gVWkO!B9+-HIQvBx224NgP28~7euN3%^m@*t1{P25$o2qo? zB+uX9AA0r+GvP*ADIsJ<&6S<4fNEAUVjT7BkjMS*dl*pAdO}%Ad6By&p&-ZNa~gdG zMru(f8SD4+(p>CY^J)wCNqJr$(6`17)KYX|;wP6xz6&wai3dHZ+J z*vvw2G2{KdE8j{r^XJ#cXKRW5Lx#tZ#6$}0vMcBGIf1I^Z(1;5WKX6(Z<~skoJKx( zHNHyqMvY_QSAF7nFj~5ri_Wvgp@6x@)C*!@)&R}i1X}l9!X?=WTh4Gct_;0%36qj? z+qKDoYjfN>BinHv5pyV3p3m_xmb!(CF((#T@I-6yNaN|XfmnE6~esfr| zGBCd4H3!!3@~J;tQ1^fS9M+lTYQ$EZ)pS(TKp!qXLba%d2M!>l)V`DWtoc#jjK3In zIPi7yzH-c%d1`nlsRT;vjWLq`1Wx=4kPj;>R@@o~R-+1vtBdOP$PGd11ph28o8ffl z@z&psC{VMO&eeFEf}NEoiWRrGWTk6AH)NVLqU`icOiN7MtSo0L6ZnXGT$=t$<+Yg4 zsFD7xU4GC1p)mWqHnrR3O+7tZ9c@9o8$*8TvGfr(sTQLm3B6}Ne?0N5iuBWf@x+RkQHY#H#xJgBA1ks ztef({3=%Z5KlIj!y78`ixtuA4b>Lm0HQL8T#bUJTHy!R4N<7iMbRJ~1IbIWlG2s+8 zV~;9Ok1s4UF??<4Jrp~|Q`*t*#?w*_80}x)?6Ml;I$Y?Nef%g#49%cd^BW>?xVUic z9K$|XC!u@a<>}+qRIy6@+x0iO@}VQN(cW~_zPlvP{p37R6VM@I4X>f@p8u`W6Yu|_ zT-bmXnPL-9<-zK{XOb+^&b?4!4F06wT$2?cvo*a-Wm1f5VA;VSz6}x6>4Tj&XyY5f zN4~CFt(x$JaW5jI1}xC9Z^`;%Kis1mcg$ zpbd;h=D`ZubLUbii3y2A8m~!!cAdkdRv#Io+{VZc_CN9{KhVA#nW~w7O|`n3r1)X8 zfkS5NqHTFxtzNYz?|xq2XB>x)(t=sVET(~5D!uwK8X3u(PM9UFT?(5n8mVHmOUuh1 z&Sy&M799kdJ`XeC`JOzfRs?amdl|#Zv?kYG^fp?8U%8!8i0*r3X@2xJWLEJV85wtX z4vvnF%E}F>Dibs+4I3H1K!kNik6swJu@+5b)whm;9(Z{WNs{5Kr+PQN8L~Q-aB&if z@GcvZ2nhD?0}UaFJv{vo5=3u?Hw7qMn&gs>V1X$#isHY^`2WE z?tnYtzn(bu6V>{>7YskU#aPB>Gt+ZvU|Ckn9;NX|Z)GP@7vH8mSruAxW}ayhrbuj2y_iBK-Wtu4w@fc{6jw@%?-3k5^=pyhP+p?B)?t zuH&8BX~8ezx~*!hx9060K1w=uvC2$!uY0IZ7TTz8S^SZI8_as$bBK*_%$$PMpdi8c zKK3I5-o%_W3c^*T|6u_bSzMlQyz``Kn#FsbeKFdSp`X@7&kJuf(U?1~VzHvLdHksK zI^1uq)0^2QwiRft52Jqn*qb(ldE~9*XBv!>}QIf`mQKS9BYHMTtz;E~EAOn=C z^cR~fa`nK#bUZn%iiD_z|FkoEii+O&B#9XVpZ-*S2N6af7imasFYgV1DRkbcv%p?- z))2pT07Qu$l0|T7tp_?bWyI~WuPa=;v%Hu-{kD)ea-6oG|%Y^Lv727??H5$wf=_wIU>BrX_`lg4w(X~g& z;=gU}J^=ZW&I&oozsT&bd#{~Im#u~QeoX?0sTElzd<BuRFAVsVKUyRG6_Wvj5-+KbyrU0V}&9P`5kX3W+4a;&5UdhuXZP zJlVGa;{YX?4EZzlPNz10c)PqSp7xS0)HLMLF8IKtkn)hJe>f<_Aut&ZTYx0eE!3Jv z?3xwLi6WDhAo_yib2DLkTzPNCInU-gZK}!i{0dAGN%kNUyE+K|GCwA(AK4yq7Nz+; z;2Us^WYxn|b~B~(M(*w-eHkfgT8G~?Xig!Lp8U3-p-2bm(Y=M?q9lo1J*C#;3G_u8 zbLT6S%>7S{ZLMg3b~`%nW158Q=!V|kA7&?O3l$L5zq&y9CmLT%}fTkn;4~CN{edPRT9fZG) zpVRiu1aSeyTXx)qg^_cjIK~RAT7s(OgWeO~ZXlyE4qIR4?c?hCuVj{g^bBVGepmjL z&ot9pg4Gqjg^K39$@|iav6H1%?k`csuuuR8F+WRG!#%`6O2krk}M9?D7MA*YsY8#m2MCGo*EKbU2)rZ7fR; zUEsVkLy><2e=m8U4^*c!QuLi&26WS3L>U`fGpF`Zw`#Sx?r9uk1+dn)h}HjoqziVU zmU53sT`mk1BxMY=^9k$qVF1nGTs|xxx$GMF00PfA14lL}U-E-%Vt;jR zb+MINfenG&LpfMm^`^*-KZLca+^mzbPDBp7w2tlsUMcgZ9we7E$JKMoAuTUK6?CWO z*5Af$H=w^e8DwD5KE9tW3|+2*ESvzXGqi=5Asli^>!)1NLu|%P-p`dV|5E`zi_(MUoSR|{{w*w+AjsQwpAI7?uQ*jhWekE% zAa~l^;u$z-kNo>iBv4~xt?RgG+1~`~2`*0cOFU`OUgT zM&#FCp;RehVkOiT&-wtdv<%8;X#!^bs<*j7ylL|*iwx+?d- z9_bC3>`<(J7x83_CVb=irIPtFWHBEAg1W(cXW%e*wq-Ir(sV1MlE=z$M*N_+nbdEXlX8mu?Tz)I`Y`GRJI9#r? zyL!{=9q}>WZzZQLj2$=F!+tC~&-wVk60VkjKYtFEi`hAcEei~O7U(Ldn3BTEpQWLY zEYFDZstjjp&WH)SHph4onjYW1O?*AZKwg&mDAS;Z2@!Wt#E*wrBwC&+1Z(-PFq6l@ z(qwD#+x8fp;^Ih<8nCJM9f*f@*AvLbn1);Lzy9ql)!x-XJAOmBKUAFUrVJ`K*5GYI zb>zVN{}NrWGe(On&b1a5@C!ZDN(pxt@Qkdaq2j!9jdWZhFt^bWhAPIR^j|s3r4<$E zV=c@g<-+JzTvDx}!wEleaDIWg?NVVSaIQ7xC)(W$>R=3bag`zu!Gn z5ZBk2A6hgsmoMTIwdg%g*U-Fqh$3aiR^1jGT1s|IL8ui{(|URs74*yL(?9TJiin`= zfkICxOfH23k4h*@A3yX*`LBypt{6k=hx5SY(&oU^TW=mVh*91V9-Ntxqozb7;w!y5rd&Xfd zA)_Fvy~z_5Rdg%lLHRLb&Ung)a{cAxY{2^mmVQy&a>yoEa_q!Vj~!97!*b zwhP%V`{`O@Cx$PNy;*t*SYzK)V%SYV0p_VDQCz&OvD|`=9j>xFHwaAPGwDmDB`l2fD)O>vydNU9_ZZ} z6_o;XID0u)^w)3DRBzGSI$}Wv?zL(bNaMdiM~{aa_@X8o{IBNk1fvx)ca7Fmtm@h6 zEyu<2jw>SAH2xaQgh_qv6-Kzwpm5O2O~fIMY)k}NEmzWgWOzjQNN@&GqS&e@NvhIV z9LoWaGfW3LK}^3$jrJ&QmB>oQB>pggk=6=xX`kt5_$H1%VkggBgxM$A+3(VkMcZYQ zM3a7hPEY#+(Usy)mlD>Rr!NzhZ@$S%dvy}@l0zm-+JZlQF2!z_A>%6&h76c322ceF zRH@^c55$O*l_Lg#Gy(l4wJBD)B_i45i7aY|i^}9sP{xUgEnvyg-{3-TlTqWtd~oh` zfWWs$v({H->XoF@?X~x`Gu2pGL-7uPmxu#zlM-?K{x~RbK2!ttKL=Y!$Bi2vYD|;H zF99fPF2WQltlGmxz$=s%Qi<-)p|J7yqWAd6+a|ox8#LskIw{WnJj?0|8dFkZVJq^u z2vWS@MDXVD{$24@+EyX|!g@8zzl({B#QMp6Ho#R({!)no1qr3|(a>xXrpFsM0Mu(R z!`Z_209|^#Re-8zzJ5(Z_S0#&{z_acHwtYk*iGaP1I#;hMc3)I3?%uS#tJYk%vw4@?oOvr&#F}P9| zW<5hgKZ-b5OJeCQQ8E?bZVdbA2wk#EJXon5kZ%<+#j?z#FdL3kY`>VY+=|&F`5m)o2(Y%974nGd+l?-? zXAzb`mpCrs5i<~m=B3lC%csl{Hb{$_aJPa75Al?sZzzrUa7bHKWAdZv&#Q-9f-(%k zW7I#Xi}_~$c-qmW-lbTtuCru$%X4d`k29x{dBgm>GAuPP*8z-}Kv&suiTbEwtHg7) zlt3a3)d6p^j<4db=e(iv@il(Wl_KxAIM+x8GTv2Ai}xsok_7m2t1i247kwQoqXm-x zVF9X@#<#OCspr*ru=YaIB9$P^coIifz|*2EG$@r>WWk?Cp;U@`kerMNBHhY(8l5P+ z*T`@lQxg2s5jI#C?AHuVO8>52YPf4Et&+O>R4xyRngjN9)A2lXv-Bk0LnJ~*}!xTGm3X6Y1J%C)tCz6isBec%cgrr?}?>* z@(A`2xi)qtKMBc}XiQt3T&2EbH1dhOMRN&axb=>{s$Cvv1^ZVAK-=|IihhEJqY4sS zhLn?L-&Mde&+%0sTvUlP03UH$zY13UWn?`qt|ClEKb^Nuf>1|bbZWpbwnU}N`>gb&|ENDY9iv!WfSFPzWUZ*| zPOGbKXMZvTjmOlTLWeJar!SOxsx>bE1mRT8NUEy1?_85pOQ@G#C(QXeTzhF@CQ~Y- zNa=_QT83NUREffspuRf4A0sXu(CynSONjffFyRk%_A6<`>Er1B6b$bbM^U_$C(i6| zDYYOCF4yee)(0rfY$4d)^Yi;hO~-E*Z}$~vs+02Athyg%i`yx$!ec7u+26cBewnit zXCXa(%a78tL%ekxr@nJG{-=yVys#h;^I@XcJ?e)dx+hofUUwfcku!R-+?|!9(&H+M zS+b3lQb2O;^@{(<=>P#fO;{oC&XeWm=LZt`#m43`Z6B!f6+jspYT>eCp@2-V3w;H0 zW_q0Sf3`!t!TOGLvcekoXKt;$3^9lQ^|A5h%)(X+0vmjbQMH-%+f`WfO z8id|B70*<&`;T_v%pWEBhgjq5XkV#%6!n82bqW&Pv#M;$@>kwDa$V}Grg(b8ovud- zFv$iJX4ypDf8R=!?JKSEnOhrMnpC|EaUViF2Hml4fwkG_L4gmM_1F&@&E>agY5?*Ia;%cJVPXID%P_lc9ME;9wDl zacXBJ2HdN|fB^L4>3v%^cAC80FN6+QRjJZo5rbFY?0k3c)V2O= zY#$;EH8qwNiPwDfzS7JYto7~ye6Kbe%Z-`M(APA?vc?JUosuGO__!#?ZgSh7kk$Rn z;5m_Y{V(#zA*X@mN6iN&|KdLw73NkY5X5msgt;7=U2y9rMjXpB_}A()F?3J?YPw*V zF{{=+ss;`#dHm3c%nCI%xL@C~hN|W8YRay*CZgAw1$YXVy+&>_NW*gwQ{^69|{2UJ9Np?k@c2xu+~i6; z5?nqPpmB;5^*gi5(yK;1xDi{4Ses=gdIdm2zRRH=HSM)(0cku2R)KhNyaIp;jN+G-N1 z-acKEsX>G#%3Y3xE}!A0^t(rFV}9x{cpA+hgn~e(S$iS(Hgj$5QkiL1X0u8OQ{?k- z%{UX8bc;noU#m-2mXuVV9J)Yf8>7EjU0!VXKX-pzp(cmkPdwe{@1 zMTVioP`~ltc^&o!V7a;5i3EdxcPcqJIOyo;{P_cR_Gck{Vo9~zIhrs3)w-u_qs8K;Se-s|UmOuGETXzItwqrDoVD{RJb*{MKg+tboP zvHGaQqsQJO&8QLkdB}1iC-G5shOj~$vb2mgw@0d-cz2Q?%Y0A_kcl8I@#yyEO^Npd#DKw>%nrh<}vZyhuq& z&uWxWxi8e@v2gBWpD49tZMfN>n!5a!c zQ0<{+IPBQ{&F8HSaznSQl)!2UBc2l!_A`v-99f$jr?p(Z5>j?-SHKUMtq)SYBIUG) zN@!rM%j&k@+no_AM#h|c)pNqu&iH9wS!tG;;lW!E!;0L9M&y;EK{1qAT&{VxN*4wL zhV#ozLath;3dpjt{Cu_;IL)W&ansXVgg!AfwbdEn#+kwQVd@6_%0+@vERj17Cv5AB=~td#dKeZt>=Blr}nEVo|?OJA?GnKiBwuh?CfQ-aY|O#a<6t^tXDMQb^6O zpZZEeY4Ju^u%bj*(Ei&6)4++^Y>58TZ#{kkE!{hUO8BUH0twz~`DE|Gfar|h{AXG{ z^AC{a3AbMkBHgZ*NL7L;eslmeEW_G21z?b>rKK*+TT=UTEGQvm;Clt*OH&`9`{~GC zEtcR{I;k&XY#zxs5@c#E3vK+(hNL^IzXZ-TrEI{Py~$nmUK*Fuq_an@Tuyr|cLohV zmk^rrN6m{gXRTOA6}71;xx{)V{9p~q>BaK2^v6X3I_1+o$0d3pfLrjIBfO5EkIb7B z{p;DzUZQE~Z{yGljf-Nhv*gCQCH8bT1H-o$KiX!!u@!E8gJ1MrxR)9Smm&sQu>e{v zd^)*%yZ)#9#N7ld^4Z+ZbLULB_QIcV__Jl;VA5&7U+Sm%G8uOlozMGD5#SoO6AB#C&{PgM(yO4qC3oSD@ntY%gqU1H3(59#0KExfXjpA8<_X`w(`sJ+i(h zCT1i!Q5;^) z)zv;9YmE!g$Qv6QJiNTu+uc6)8*T2E729f{kn9I5MkmqE zGHH2i-}F-NbhD{J{1Y3wO9Lh2Vu}URu@%}@wXuqSb&i$~bJS6A13bZLe74X(S@TT8 zo!0mYiVJV)Mw&|+TTv`Ba+g)KiA) zX{0n_1DO$$okR1q%F8M9w__~TpZA*jkoc`2oG0Uva(}21n9g3cEhE$BdQHH$RxC^C ziY$vf4Ia=L;^KHVN?ab-aGng(ax?ro^k)`LchTsTe8d-KIFqzp7|nOcP_cIExu$$n z4x(I8C9>Fesc+zt?>=$b$bz_(UYcj7G0YULg1==Zqp`dkMUOux0ZrlzLr*WwU<#k97*%on@&_TGb7RETfypt@>ge6HUv z7b_zpBgW%f=WC6YYAdhHIv$rX{GS}2K=z6Zd*1$#x2Y5+{B^9qe=(;sI4xVQZ@8PU zrLuU`sWFlh6Zt)XjC6FD`!W1FwFZN@wjDO6rnY8gH!sJ!z?T>8HYf9UU{9`Kh}Xlc zXiFH#C8N^`_ypO8PF5+aD6>B=0f2Uy1)3l`<#eBQt;h1WADP70=4vcsWp2KuJ-&4F zi~Ynz$89}4RReWu700J5`O_6ZMq8{48&rxv8D8iR`!M1zv-g zv6GGG-Uue`zU1o3l}kuANUVQ18Q9-_$&Z5Kx9wzr8v)4jq5SdaX>MV`<$Ttl?s)V_ zxHGtW_Xi3@DIm@0vN}1HztU5e@s#v)m+8fyhMSjkjz;l#6%E)knThQj9?ca-goQP~ zK3+FFpR3Ta+J|R%>nbTJ>FetY=nJ^Gu*tYv&gOxPBJKdBl8TCfZ!1GXE<+R8Z_ig> zSMAqbuV$7jSPPwOfrAlMQ8mm~roz7}YTTx@@uB%QM(&^=^~UM<_5j7>VE_$P#!~ zj_C1p!RhkOVZqx_qPsA5{!v!!G+Ul}32Y$j&YP{afX{NvSXAVXC{7Nqgj<<}`?c{` z56SLafD>aHr!dLixcEM`A1h7nsc#hKn9A==Rm*VChR(?1w(XD`hxiB|iSZ7V4>%&@}G&pXrh zX9r25_$f5eD~*`0ZgvyBlCm<~cYpS6&;Ipv7*%-qh?VYdE%t@e^Bx*@tQiOth#b+7#pM3@`~gNZKAaHB8=NtY`qVcF$HRjzMJ1g0cWQ9THWtWoSmKL$M+ca)U-_Q{)YvmrQv9uJ-#?@ zZfi;1e3Kh=R?q{lxhx^o8+XnK#s()A>?mNr~Ci z1?Lq3!P%+f@f0FF{QUg7~kK}f@4BhXjnw94T z?C`+=QtCuI;WUlr#D!`;$*0)yeVupehi?#$zLupOK%cw?F?VVAOsC*1rs`>-02D%E zFgJn*D3;!u*I)VD@aQUi%wA@M5Li;|G2!y3%{r$Z4$$0p!bPndW z37xJNp;2bm53NDc>HBu}!q4n^#{@Y!#K0_5Y zCJgJ2NFZx(56j#Qo?hh+`={&G#_4)916v#0KSUbMSh?&whX39RFdQ*ne<65s@@$P>$Svil8lhjW^GHRz?2EZJF zHNyszdJMe#HIBhGbnV>v%!bTPRWxSgDYM`{ysx1pdV)-2T9T$!3)`6-x1X))#2<0(XYRZNYZ3cioR;+-*P3 z68Oj~Lg>2p&$J}*6zs}Gf0maF;sRYHDZWQEe}25Nr%m<>ye+r+b@lp!Lo8UHOXRK% z&ZTV~-MSH2Kpl90yp}e#@?-(X&h+}P>q~SWqs?nSs23R&Cly-<&#-Jg_tIWy&zd*? zOZCb`TzgvAI8%kJvgl7fuYK@(`%o@1#!0#6W7ea6fk0(sb2Hyy-X;@G2IZ^0zkn^& zqL`3w(kU*I9ds+0$0D;Yc)>1*I%SyEsYR?1+&+kx)a_E?MAg; zc&5eP>jhRi?}aoaSV%RtwFZPzUgAHXv_I`?nV59-qW)W|PqNV#vzcDG#1thszW0N= z;CJ+v@}XCqslVnkEKcPzlAhCd?Sb>hP=ww7 ze4@{SmUAWLObuv4*RJ;YaKe~iH_q0m&HKPAi=qZv8+}g-4 z3mKa#w65HAg$D{g2kb>c<+da9;h@PPZoy2$;58y5f}Yaw-tBlHEDRGoBzf(RDDlU# z_U_s7%D3~_2irb6Pu!BJy}jZw>)uM<@ssntv-LR4)7rL@N0S-0CY%9L;e4j}Z;$%oh?q7bq4?cMbmtnj!ktOvdf_8#Be1V=oEQ-S~mchTT)nbS(`>tkuu?qBh*F zCxV0tZKi`Z5?HK^KzV+h3}4r)bAyA9c!==HuKX6?mJ$Tg*?? zWV_pqBc=|IH$`VGKOn&{iXj9B4#_0;B2H>q* z!3zh6;S31=Y+GCJEgJ?sdC9T#kl~e2MASXG+_`Aie{l<}(jGv(rK_xHfw8a6YTmPS zOIqSSzXfQoaSoNl_YtyddvwDLQstqYcdu;DB93sBv^;C~7TKK=OxK0I|4Nuz6q5_(|%QOpaG;$O9M3O5XGVwtnW1Z zvXwAbJ%Bjrc(gI#H&ueoZ@2Yf68V=>#bpc0+emy*%y-N(GRiey@qKqnDgw>%dbB)9 zmgFhc=x#T{Y|r;WJe{7EF3PLn$I_10UGC!NU(3e*QaUf!(DY3;gKerEy}0S*Z#Lv- z>w+JBw@2PB`bNmdv4r$qkf3|l;kwDA^OH`S6N0;D!sg9N*?t#~r(cX0ByD` zJnvs82o$oh8QGq9RNmKLz}tOUzE9v~^Y*9P=q6`M^X-dMrC;yA8YYjd|M8DJX)(rg)0ZvYM*!kqI?VWgmm?4eEF6V=sN}N0Va_Y|`VUJxv zb(pHHl6sRcO8NI@B+vWT?>-C+*;lr|tvVLBLL%EsVcdZnmIz{ol+gb~I}dhf#yFmp zCk!m?ZfY~iRdt^PE66gv05t0=NIB$v7mm2eolHyP+neHaugw6TAF>|TkmAsNNzylW z&koKW9}Pn&(58h%X?$1?$~-DxOjt*V#596=T4`c$KndRkc zP{&@nX14YEr{uAZB~e(l-NDE;E#~;r5+-hluDh|&#S477N+laBD?W!^4s5p1=^WXE zfgs&vF_A@Zd2h@lJKJ%c|;Ju+k7iYFGW&1Og6^y?@O)!5zVF9uHd4aXR#{iRz^N5B&7be%w}*|h=B>cp>^j9n zEXv|AOd~^ zih;TI>qBJ)5KR~Q^5I!gkx}zHZ`t-Y4BUNh8h5rqt@L3QHiU3b9QyHQB5XL~=3-|? z*%;9H0fg1{f3SGkifwjhbDY=EHVBo5A82`+tp?t(bYVg7u2#jfw{)32D3{#9XFsr& z|IXy|bv?IBWvF=x0YQGg$NyVlw|#HC74t8nLikT#NbYL7A0|Sy9@dj-%gt{CUI(DR zXrtU=*uU~Cj2k#E46iHn>$Qu<3v>lRiuS90eg4?>CT;9Qp%3>#xdivE!sj2UD)y&dm?`Y6+N!iV=KGdLYjW^#vyhHN_@lk)Qo=f}5N9Vz(e zo7_e81nve;9A{^bkpeq+4{txIJ`;4CrGHKD@u3yrV&SXZUkcZSN7U@>T}5GyC-yNM z4;yETn4+6#y}PUq87&we{f$bQ)h4HV_$%uT@EY6&MpC%uce{Vo8~rxwCDo8pi$Ww& z@OD~lGrO7ynuPIKC(~=AX>0Qu%z6_7z+Yu+pxKw-&T(QfY{kSx&-0dJ8Dky%vY5E# z2(%8f5FpHe7~;rTsQG7`cg;6I(QcJ55pRj?zetLM<5>xW0+Kkr&i~_u#m0v9_}dq~ zH2rr}_)IGZvbbyg?gwjXpFf2dlUQ@tdY(BrJ#af5L-g9zbYK^yCFlZ+{^1XdEn!!> zHs#JL4PsUUA@fIWWpRh^X=3)7!T+!T!7qkJ$&r@CaL*1sY*LW4--H8i zDv53z)-qIbs=-{5j+S-{U^)B#0uOjRW3^Z)A>hrp+V=U;By;OhYg(P9w%_^jwC>zz zT&ex0E-o&vq49couzqx8ax!>~y-=Oz-ct2C_?6;F%45QUhphV@lv?%2)c48fb00XH zmS!^1Yv<^g&SVIs(hb}!ZfF;y#y;typqWxkc7=gtB{eAX`8o!TY=zR*F7lkr{T10$wUP z#_Da|!f--P2^lVkI)JMUtNd(6armuHg1*K_S)AZH^(3DD!}*vGy)XIvE)y5&wG0P~ z=GBCax|P;rmi6XlH;q^+=-!MA*;t*QleK7Ft=zm$?q2JKf^sM6RVQ<4wOjK`MlqRN zk&rfC$uCW z=YW_lZvAT;FyK9sBHs2vOxp#12o0~56_kV*Tji&-Fo=kVp!_RPL#qR=FUsK-8ZPeJ zmdABrQ4w1$)cf26;0|JgeayAwvHQL5S?W`zt*?F{8Sp-WcV>WYbiNX3Vl~#Rok{_bOihKod_71 z6KP#mQY?_b7iSRT@ZNi+WUk!Fz_L`g<0Dtngx?#|g6wAz#47!GBLVgQFmljn>%rlm zdz1kg#OEU(&KBXjcM296^2mFDK%i6xhrFz8br@?xLPEiov_+%ZOl5@JKl|JDf2_4; zBkk}4AKw@ly;QGZ4!yAIic_~HCdmwKM_&7ObkmEybqPAKDpwk@eU6~gh??~P?Pw+2 z8HTz+3_9X`grY}sRAHJb1TufD1;#ChYza@UcBB4d6Lsuv3}uat3&lvw;)!EBTG)gu zlv1tr-U^#5)uM)7J!k)eK=5PUTI&)hm{S$p=Foii>9eZ4v)btq5D<)UZ6Ae5 zNb+}fcCvUq*lJO&e#?Y@h1lSC>S<{)IbGnsF?*_f)z+WxR)g)d&KT++RE`8q-kI3& zO~DhhFj#}VyfMetyzQ_~w&iy?2mKT zX+B`wu|NFiA}>TMC1Ev`e!trvVhBF5Yj;)viuwBb?*<8iisuJf2bygunm3bM{vV~u zOJZ`+9Lu-rNpMTK0{tLGty;yd&WBRw^w_b7w2IT5 zhd=)}u$;u6@aCz0*$;GWt9O%mSr2azV@3ZNBzy^xFP=617*n?HjWTERIrx5u`08Sqr9f8Qj=H}(Qhar=C)2WP? z<7^)h5fQe+vWEufNexGkCO9VmRLEl4t(^^s>m2BhU?+63YSVoPBZEdRO1S!Cn%pAY z9M#v>{JR=HTw9;(xxJo9=p6O2ot=`?RzMZtA+B{AZ4%gc|9Is?eKZ!<{h7sV!?6{` zfi`SXPyULiJZ`{0ffi(O$-WmQPvBFug>ZwN(w2g((=|0gjW_}9*2 z$^3!&M*zeV%-oZzbPk#!uLB-QSdg_CBeHZeak@C-E{Kg$7HKW52)mfoR?+@mdW5VI zeCuIR)X?BE9GU<{{o&%KGjwZx9i_udOGy#%0v6^6jlcXpK0m>mnwo%Al#F&8SDWqX zQcpbs5X&J!(pk(wDrKV4@7}jsO_Ci?RM7?@6Xo6 z#Kj=^**_@Gxl3MqiebVLkJK&1osevySoKj{az9I_WkSDi)OG}h-i znIf(~mRhJVhI^Q^o^`QUe@U!;42Mn(#>+*ryx$&cDUk09eC%<6e=s==3arX^mAJ$Q zgo4WtuQlu}FX zWbb3#5(w4l;*H-&hG?W$V%!7HL^Iv8FEsoBec_7Op#xFID45=sPV;RSRW~(3ozNce zM=Hl+BgMH2j0dQm4h{>pJ;Mf)UumN55ESra+IT5^@S^}UVa;?Z_w?mP*`ge%f^xdp zcv&1bga#nWpXI@P+5y;WNzB%dr%hD&9_1cSh-+ya&ImlK9#1EAu;{I1Up{AMX1?CF z;hweLjXqpeIQRkb>VQDm(@mT!pB|l@(AXdVPUn_NduNDr;MM^-5i#cjSOok=>{+@aXV;pi`_k?hnY)a9!l6*b zT1u}~uWubdrv9z?*y6uIzCB7+K38Tv&zUzBKinat$c4_9_ zMnO+VC@KjHXCfFJ8sHnr$#a)RzteJ*XDG|b+Ol7fusj(1y9J}W%vlb}%sAeK-<-h} zut%vD=s#XBEF8W_0o?8B+7 z?5JM}@HL=Utp)|6-D1O={is?5*&c2lqw8}rvRtx9sN}{#I1A4iklujs_%$57CQxB) zXusIXk%MNw1!SW)=3eeA0&WeD=ElNC^mHfOcLrk!g(F&-Z)!A~oJusCX6NI}%F49= zXa^eF0}K?Gq*9xsSt>WTX6Ulk;2iqZn%YWcMn-{Y_DI&fgtpgUZfxXhH5pM+(}eWn zJ#Emz&SH`C+3GboM%tLQG}v-{ z6hgnORQk$qWionQ&}=A<$w~dudvCD)loA#mj??Dh5afti0xHlx6s571@3N1Wt= z1;zr`0{OyrE0SpGXfGIRH>J$~8Y4o)_Cd)ZUyelPCEe*bJR9hhdgh+!gavi0vVF|9 zaN45$d-_V1}A>q;ADkJLl zC9~xFLc?)?q{;WyTMwhBuqxi{eof9Oa5Ox@KizNL_HmnxO38{QLswb|U3^nfZ|G|> zo^QquQ1d=z|0UHs7^H!X?2iX^U>li3xAo$^ct_u&;m)FgrtSbpk+T~PqRb2pLE7CO z%~>B#7ZeKqb(py7(SF8#A7iP~@#W#i>w)AJ z%ZC7ty?Lvc85W)*0b_0s_o!&_LDbMo{csAYDf@Wyg_x+GaNm;wnQamaNk+`v0>Pjd zR=EiQfbkYwS(|wk=U5u>d!%1vLpa5zg&>M$r%h5l11#N1oTYF zXmZZ`jK>4Sw-gjbZ_j&Kz+SR`y$0f7)bZW}a?+NTmbRx`4jLL7<+;@~(BlEHpWGcU zFc|dzSuHJndl>UN2S;UoBPJr+@R`b!e%sGNe7ZRcNJ~5?&`>up02E=fb8g_wn7MR-x6Vj)TYJobT$wtw9efb(#Ki64x=F13DPSjPcLs2LlxB zI!`#ZDTybyHZ1*Ph*APsT&!s}o3T_HbRy6DQrw2t%*7Nd)+`QL*l0IJmcwO7KAV6! z$l$%bc1%l;8ABsgVzu1dl~id~8zV2jkRaToj4NBdoC3sQ+|k@xoYiMDp{=uXvPU*r zFSX*kZ*i`{@D)Iv%L`XW|s?CVzY=hG^)RQbviygrV>YHUsezUt&%{+kE)U9}Ujr7p6eC5kB zwk?Y&vc=^JtB$-#pUex*@2L;-lZp_ooGk^YId^s5Ak^U9-2qW)o~%0Swbn3vO#r3v z=W!VPOGI$(pOdpws92PwLX8CF9-Q1X~Cy~CI zSG28HVKY_N>>O)@KCC$Qjr+lPr1y;>m}}~j@P0i}IEk^LB=<4EM~xvQ2rhHB0K@az z3facZA~iojKb@lT9agacKP1ZYa}1j*Cm0&cyzg4+v}+x z#c~XzA&$^4#Rrl-pJ<1Oh!D|Pz1em*kH)^G)l1&W;!^Pcuz)@F_UBC){Z{D7FbU!) zksqRSZ_scUSro(!ub|7TtECqAIsjQgz9|&>vDoVAZel_T(kx^GXGTd255?PN@EI}c z`mOt6KRWtfHuTQg6aIE&nxKgMlitwS`0aX1I?d~q%?+Bgpjf5;=xv-KUwb71QzCaW z^0K8A@ev~~%h+F+{m)6I#!-fk-L#rlMEggHKPwW^_6^CR$mg{hKfYQ$;92LJ>x^zI zo43A{9V>ku>MM$Dq)rZv=X8a-6pUI^eVU85d)&B z^=(XeOHK=5ks0b(;~Q;x)Wfz0Vt`pVe}8{ibn4^98cZ6|dX3ZJ1O~$I-xa1b4|UAU z7K^04Xy4u$6(7cb+1S{)h)&b^cj>`9eecl5Fnc4&Mq5?2%+cvF&{1%nEK?g@%sNE$ zhVIXZ7|1gA`fh;1no$e&iI&gq3au$Z@AZfEE!;D*xei+#zx7nPTay?vHhO!7@aU(J z`QI$P!=IC{dI0v6+7fwEg(+3ATjGr0*MT$21U}Um#S;CSq{>4zw0NJTl*A__VS3G8 z_*wSL1=UV!Psi5E!KMouyR`GrL-ekhDSRGKCr}u#-o>Oh5CP!Vs>(!MBZtT91LabU z4z%6JfR7)0FRtO+A+X-p^fX`Xy)e1`@49>d|n``wm^tnv8yUq|S79O)&zidmIPo<^H!Vua&o?;5T_z*g{ zBiD6bq_&7#$5gh7{OfSyNA!^ zmYpjUg8O)})raqSjbz3R49`?sNxHed-W~PAWq|=&2?6s)Pwso;o@Q8ArvQJMCfO5Z zju@&aujC8+Rr1loDT+~HvCGT-cHf`nH)@XG_tY2y`QaVRS$8WjY4`QXs#7~tL^*l) zhM)Np%wV5re=Q6NdK^mMpe(*&n(IKu4W+O{Sc{*o>`A!QY`EdQIey2@8MWoi5(~N~ zrp{)wchiKdo<2>hFdc1d=hu1iM7TfgZ>%NbAvuilYt3TVdR5gj4kF-Fs<2JV@SuV? z$t`}gfnkEWZ;@Q#R^OS^Bc!$T?NO_iZUggtyq;*pki&v7I}!9#7>{U^m7V0>?P@dL zRCUZV?sDP7fPSDj>^vm%j-cvS%&0z;p>F!x0zZWxSeqv?5465L(JxQ?+D+8qrU?xo zeGlZ6wAHK$l~1I$c))1D?t~|RTA@`u5NDi6S?_o z-7OnXf7W&(QV+=@Ywda9O-clrj+o~v2d}c6twyhu&WwdKzwH)TiV_9#xT*I4Hm;9z z_*2huO_^AsC;Qe2Wd;@I@NKGUp=3`0^O*gf^vH>4@#lDOycD>`~TqiL7L@jHfnCSVH~ zGW^yMW(iCw49H$FV1*{&qRwj++Mn>F_$%^9V|JxrsS9dmMbk}DIksv6hd6{NQVam! zPmYhb;rwgDxb$pO8lC$NUZ7kyjDNVpGAPlIM5>V2#n`w!hC4C$_WFMhnqHj^9x;el zU!p@orrV}x)1%*xbqZ(J9NhV8J7=ZYgU63@VHFY`J(pqrIub6( zVGReZxK3@rCIK@RB)^@Wi_XpQu(&7{?TEND5- zfJ?t8j|y2oY^#B^m=4Tn=gkzuEkOo9YIkt7dqsFqh($NRJb3Z^y?ko`5q#iBO+?F-aHg;qNi)PQe6(`dkH|cAqk9asI zi%2x3HH|j-CH|Zf6h>IFOWSf0>iPm-O|V@2Vtw;gjbnZOB=xZKe8@iZaERb#7+?ju zTh(=2+88N&P9^$`27dxEvUOnjYPFPo@!HtQ$HM`DN^dKz$Sl*z(Cw*Fp2*C?L{i_B zD8&jN%1rE`;^IP{ljT}ps@8;fpJZhIL`XpTMgpX!^p-D5%0Ra;eNcV1f{wK@VKiNW z9a569irjhhfS!U9G}W-A%VRISZH-Fjml*{+R?5}_S5wi8sZM$*4hl9^QXwA*EPnDr zqof_f)zdTX^5Wv?J|hvNkO5vlKS3_dWLOy31Q8=6-55I-!L|9}#c2$lWZMM`T}ekJ zC8xMjsm{c~PM?qB6z1agQ^FBd#gtU#FA2X4aJW3Vn8BSR0~~3R)HSaKx|vwk>Er2T z`TXV=LnBJMnPN~aQd@KUFx_lT9Fc9B;-mRKQ0QP_Vm&t&86DjoM(}i52gD;Fz*VRu z#s!d*yI2p;xxe8)Pv&l5^;$@S)M$_>Ci6o2h5G#r1Sj()rD>)IcA5w&T!m8@lc~(3 z?2K3CEe&l$^bd2QtSp3i-6x)2+Fn80a~+q{2GgEC;Wzt`Ee{*trW417beNM?a*D1H z-nJU~uy*V&)wBc#$0L21;u zRhS*9;~HyLCe2%)<~hYF_r^or4RP|a^Va;$qbypLPT{)X7aq->&5aV6thn~2*s6YD zm^+K_e89}Hg5|M3thglfs)>W0P9L!mIXP#p-U_U4?_VyC$^|W`@fg zCJbA2MN{>J-K>F>J*lXr55-e{R=>#b`N(kA4g&GFKYn^?x|-3`g73yGVVXIe>G^7-j&Om^Yb98-}#CB_*nu~%65H4lXJM~NjCd;-xqS;_x_qDauFnksq` z0YQC3)cPz0vp8C`Kv-&tM!jMoI98N{(2^;}KfD$Gv~SIW0_i5t&rM9PVC&QJ#?t2) zV!_OYq^@I8>2jFPLP+Po)5Q+YR{10ate!|zd->PU_$B3YJ0DA0^k38bRS%pxP?ID0 zD7utXqF!}mPehmi=Pb16@|PH8)28aDb4oZ)dNBzX@NP@WT4 z)+Dn$mIgb!rf%ntmfNDgt;l7og3SX;cEWw1SZrjgnUud&ag6?8rTjgZoIjDOxN@P~ zMlf)@Djsi|7$*y5}1)|gydIg0Iye!nRbs&wc|n;Ukuv5vfhx|0JriRG2L zyVX^VT9IQO`#?Tz`U5G^&q9am5qR2O#Ac&693Pdva*XzQC{zmi@`;5=VXpD%une_m zWN_?KGNQGVUXe9E1=ZP2n@`WM==DkUCB|m&t_@P!+A1no9aaSX#h(RF9#%;C0VI}D zb0*R#o8$J)0jj1ILOh2PoqS2s@CXNpa!$U14}UoeNznpwgF}9{h|S_uwWw5@|8wz;6e4Co0O zHag+rCF==qd{uWQ1OsLa0#t4SfF|Bb29|7X)9vjaTF!BJFjbWlyL1^IdYgsW9yExv ziktre{M@awwa~D{6)(t%qT|^YT2;#FTW<)A5A3Mbkh?alb`8%h5!@$pYg=7AL!Ul& zRCRZEI$~jBde%8EEkgbR>Ina73dVbjs=RCts;7gqX2%A|x+9*)Z&D&FPtQME#AA_OPpvfb`mqwcle@3canX)PNc`yA+gV4j5@3 zvU%Cqb9@+{^RX7Om`CiJRm;Zu^>KTleMiaJT)1&Id~QNlK|{|Bfmj>3q5h&`&A%`# zu+=$q9dmqr`JJplhK7ETsjULUboA3KwDbi9l)@5DhK58T1Pm4Bz&MNI;fH+tNQbS# zoZl0xgwJeDhUjG)_D#ZFGXZI18$ShZ=eAvG=EQ>Ho5C2hYA-V9u zhZLUe9ooB*^W3T2jW2uw!Cz(~3~Z45_5MZIDA$U6y`3wk+DmP3G-4*j*9yndw#6)W z*tD&Z6I1m}JMJH|(EUmizl*%Kil(=>q5oLQKkc%$UwoKV0GIi0r#7tsu{52^n3Jl6 zRjpPo)*ZV_TvjPxhiGtpm>%!Z^pov@8H@>@{q|-Tq7b@E&0cmc4$^%66^6t~fU*27 zPxlqewc_PL>)b0R;;3B4KN=W~uTq zdntWXJXlcl@;^cg-v%eeYx0j;!v{AgCUYmt+@s2SNT|N-;n<9gT4||mD z)zuSFWKRL|N1tA^@15V6h=n$2+@C7xgTI=7zv}f#h7Ra3&ip(>L$|hN3h90afrj0VN7JV)N&F+m%N*#N!i_g%Qhs?^X-6BJ;XZLM_ahth#`f zoQd>b;5Rqd>Rg>u_QsFq$S-};z(mW3{ggVPFxygyv@5da|5{sP> ziD2(l$ZCv5@dSjB9-}JZP&^ic`~0Q4udjDqwd!?NG11ZciO{~ViSh9|HP5F{Lr=H( z-CGB?^%@rUmXC#Pl73FQIUZt>LJ~S-f(&xXlX%&=cpa_J;I3iQ+YLGpi`b<$n~oQ- zP6NRT%oX&`dq$f?;u&ZZ^QhS1{9R-Pyf`LYNsBDme^_k8krNF^XI79;j2Tx6?UHIq z$Kf4|dt9j1l+I_EV}?p=$EVCxpnew%4BAh){W|CHiT52G+L+%aD=-kN+H53jEedJe z!t|=PJRBUany%HS#XT8DNKp>=J%UStJ^UK-f|OmaqCyc%yz^AJYPjD>x|mqSG^UJz zgn8SjoEChM8~hRX%hzOdts_M(8j}Wg1@G%B2YVyxaQG6djFzs{kk0dwVw*6hl#RW_ zRfQ-HpuuMd{6$8w%;3CC1pbX$m^6)#B83C1_@C1@(6Smx;y`+*5veha=OeK9$sG7 zNS+!UEp3X5N>Xo&%<8*7*&Eow)L9tbwK+$Oxi+L_?@RM#FT!NPu8B$bkRByZO=@3l zx^agHz_=VyH`T*~7+{A0a~lr7RHb5kHa8?cH&ckxX@9Zi2aWdNpV`lTZjiZd7OJ4g z_CRYB!~8ULh1s57at@ldI`Of-hJ|}FT9&d>f=wQv`T^kU_Yal(2W|O^9b;)8_Shu> zFoUw@FI*o18AAsn3^N_v5cmca=&S2%NJLz=c5~K}upNbFFi5>|^0*v@X7ZJ#LI1UI zgo{C;thjd>Nx;$xH;$(@RRC?jG+~Wa%VPrzBSpc4gd9UtRlnqsBQt$PEy4q1t6W$$v1mgN`clULR4|5a6E%W$siKK__d-pDJ% z+P8EkHY(4LW=F^H^l)~ic0}fyY)AcYAY#qJ91s=lwq)Esepm>jum3tSS0K3!N;<3f#ARdEP=d}-gT zTWgKGy`OE1ani&U3pqW4#VnJE*PRmOfB5-@^8e1~jh=Xz7|efRtk{GI>xW2_+>I@p z9oadR0QT*8z;m3J3vJYQ)fO*1b<%6Z_tEvLT&T-UTQ;grw7j`e@XxgcS#Z~O4JZC9>9ijr+nCJwF9CG1b!)m=2}ZAVF;*dS zej`E)jlKh>hH2!$SZcctYAnv|N5aGC3nRd#8_vbMIh0<;O=MTudL+Nxfq! zC1@N~smL#oMsi3Yv}@%G+l|T~%!}P?apg-|78v_!-^bb4cHsN(8fm^5;I7YV5sFd! zI(mbB*cZtEgo@PVj?AUac{3?c4E~cDijj~9Nzm5hx)K#;Lj6nClM=#YDU~|%4Tw1x zV?^BTlB}8 zR$h#5G;4Pmc{q;LF;7v}>L+#?e0xsT$l6A&?~E}@1;B(ApfBJPBzO&ViDsJ8x6c4v zbP~4rL0CcMPlOhN75*xY@mHK&qsy90?Q6ZGgzo$w+Z;dh7*BY_4Xdwl&U9l_6Gbd3 zLeqvghZ(E(wxNeDOnviTenW^&nf#0E<-PwceLqmAWYEGABlPx5o(`bunw~Nc6gpsc zlV&Js?d49JmnIC-kb^#v5QpPnFiN8g;dB->Y8o4%jd1A43CS55_Y_cxNV&YEJ;prl~_>Q5HmV?0Hxe(s!{*E|62k5Ot3KSW6hjqkyrg*ChcVL zo-n~-L1B1-yLl0OL1i5ve^D#Jo>qF^G|PUR&AhEVCZgpI{wLWf&fN1jD1~!MenS0F zD!uIEz`9e*Yfw=`hkV#t%(Shz%z|X7|i3= zkas#Y_`EC5nvjTXp4)TQ_~9?l>~iIf$lxe;6gMK|QrZGV z(Vld^WDuD$l+lcX5#a+FMHG_30`@Ec3-WGT$EQoF@FNvKX71S=JOZ0v__M2mk^o{R zsWm0oX#BKQAV0bJM7xZ+;{l`bO`vqz{$zB3OkftgddZy(Qz*1c0ZikqW5sC@Gh?vo zn`^CKS|1@Aa|nCZ@BWX{eiCM4ctH9^aXh1$jt!?Hn&4%Q+H}jOl!^$V7V5Zk@@&W zSpRInV_ES~P-4?^(8lw}h8x&-%auV&KA&!Nwr=I-^lxj^ru2AM&5%+!MTU#;+;sG6 zvTd{2>U;Z<3{>)ulTlA6MJDFw;eZp7=^GsW0+tf#^H*$I%o~;wco9Ak(I~Hvi7ow( zS?kT$NY{KZ$A1J;R`}3F>dI0El!NZQ+Uodz+Cdr2Vuhqxu-9NJc|>WK3O5EKP*lgrRErl$aN2f<@DzfUh_gQ;WFLi0_Ym{@R$w$tg3a>hEq;Gff zR>cGojdi)&2jE!fQU?tI(1W~xfPbVvE9SL|`3UZ3tP9slh0|?WDPQiR^l?-yXareD z=`~I6uKl}%o8i9hqXijZ!{k=uTi^ugm7BaqR?J*Difl4HQ}*D}0DJqA;z4RypIPN5 z`yr0gb0TjMU(Jt**6iEVmy?1eUb^P{Jrix=M^dydAnpLqOmQorm3>g^lxONxvpR+( zCjieW{Jm^VENjbvE}o@=O`jG#RsqSbmgDCtIt7soOKiXO}RC zo%b8n<|oWAsb>mMCOyrSaq#3tTbC(i)TBT+@?Tf^hyRz>!Uu#}iKP3>f}xbE=+ znn-&rR!%PD-lgoHs>s&9v?S-#z|*L;&*=I~QHpeSewNMo&)zenRj)q|SfWIW*tw** z=`M4aE5f^%N`d>*4usx30{Q!Y6nl_OlvT{+4EY_a`=;9TGO!f8w?w8b$}JywCB#79 zo-H7?r70(I#~fqR8;>5iTDnGrc*UkN$3INeQ&s${NcFX&X1p%7U_GG!!vaJeZm*6c z2}X;e@?5*ZnaW8{SYIsRCfes$Td9~XmaSq_tV3(3gK8%VHPtgpMhewVnbVy3;#HC0(Xny?sEAHfPi^7|5Xcxl+QG0#R;!~T+QHy5fbL1I!B zv-Q+@@^KRHrg)^Kurm7e_kOtTj(HFU7Kk^}M>;LB3HwXs*O}ZYu;8W7^aRWbs1RyU zg(6Z|DPkjl=5rS)yB78tCV&N!y?ERovt#ticssmOyZF=uyt8kM?|w2 zoJfif9CHk^u-5M8GY-vYhrHh4oFO$xVzxKD6_4zni}kb!UDU_iz3&rNmlFFr?X|lxT(8*)_udrXIiFsqujZl(gvB1YFw5kgn1qZvnjl zZS*p+oXPeH{x9PTU;uagKjS6YvohPw-vEESJuJO3aTVNIo3nBj0(&;t+lS7;G#J{s z>aVYBOlKyz>)!1$9w@{_u(pWj7Kx01?%MS+rRZDC-*JDOo4Efqm8Y`dD;$R_#LDn! zI7DMQU6HC^+p-b9i1*p&U#b9{ke5XGM{MQM0?7G<=jJRb&&79W=d+*Qbfbof;nV5b zSab%e%l4(K+^YWbLx<%`07sQfl8g;{n0l*a*QI6E_&}Q-5>lgkY)Mc{9>ZJ1*c<(m z1VK!N5wYPK@0>JBy3>dMiFE_#qJbqcM2*{w3JD%Mzx~96Zw|{aoq)-06s@N}n>~$< znJ-z6#UVK5WX@o+14OJIzCj*F!xUq18BvbX#hCgT9;!Ccw0 zTtNP#mjF#SAMgweJReqQ-i-DTHW&;MQKUe=SEikCoddXY_=8Gk-hp9sHPr(V&rP zbEG9F);p8r46&n_vlHXO@?a(ObJNq~^ZS@_z{Y}_pEq%zq=u8YtzNIadpe>(Tpqha zC2d05V)wgG;C@7g@MtgQr;%hgI6-fVA+1C1&+dVQ3C2y%T0de44!*es1a8YFUEYTC zM}bV_{4w!=XGF<5)Sycx$6xaW5-xC7tanp3imZ*;2cGxdcm&>(Ya~wiC{`r4ICvcS zlI2N_2dPewOf*kqWBEDsDOzI5pLHKHP00O?pjN-q5z%b2^1KHPLGdh93Xd$QZhU+} z2!2eqOS3ZP{a~(#T5oz6tDQfVD+|apCl2_A9#;<^bKK$YqQ^cW9Go4^oSE_soVX)S z(N|9584>=spG#2kdA(BaC%g_(NVJBp@;OZ_TNQs48PFxJ_}$FS`7pPJBpde@*o@-JjCUsX<8S6)`gp|u{NlMr zc@49@U3p0qYq=LqG3Y`lqSUE&cDGS{%1Ci|O}msI_TwQX@wDfc!W;bX7o)1qyLwE_ zFLbN7T$ndgK`1r+B;n5`s@YH9_S$}8J1OAZ@XfCvi-&WE2_oj_OM}bXZR$g!9gc|-u262=T{|ckv|Q)&+d!MNpDaIH(Qet^&6G8 z>+$yM)s-~o2>aK~_-5wwA%^CGzOrtuC(nW`8EC%*x%|I;F>EA=B^#qw!BnLG+#Io1g8ZSU|tUL%5E0o4o#M9Mg2 zrffubxuRz8n7hN~>GlPn(!#)hFswQ717K?&?v~C8?B&@v@;cj>dwNY=znyY79<_@K z2)cJQtsJ&o0v={Pw+y_bK(ep(K4w7L{4BHmtj>cuJV2hCqq1Olr=+DxpCt@STYbCp z%pF1@RhBhk%FEff7xFX%fs^g|2D8I^4D{3ut2}>mv=fjucgp!-aQpo*eeCjP>mEz; zDzph9<*rZWlYipJHxNwbO1;5-Of2N=(T*5X_Apj^u_fi&@=tNr`$*)G z>~OjNXdR$af#|aON8Q9UZC>fRr{hmpUjkO^u z_L6wGoJ%oeu%41utIFx$q�Zq>Zo)r)CSf>9dnxmB5OPfyUx!mh zdE0{GSs@t;hCUVcu-o+4dSTw=c0an~Q1$zm+LDF(k)7S{2Mtm*KAYpleOlc4S%E}& zxUd$x+oN7W`p@wHuF$*Ir^~4J$F}7b+**bu#LDb%wSxRnlx4c5s6*)mOU=cMASJ%< zF&iNvYC)qGU{>(UEZPfeS6O4N8jSYXwQKC5T3&jd{k$WTZu+n8dNWTUwZ$o}sdLV~ z;nwK6W6NUr2aWrABGpa$7&j`C~;gW5u zQZqj@xFeKRG@PhUi9ztDR(cjzy=6#2D;n?Z9PgHHNz1sdq!?0<^My4f3@fs`KYhk1 zh~CC=-;acgY9z;4`qKy80IUqsQ#1OI9-Pyew4t4J<8N*Co$+sQ;qQ)^Dn~Gr2PMVH!rdY?93+ztoNR1sP~EKk(*# zT;BX&+yr2WaUb9F!~a>kIN1LmY-Rhwt{kR9898Y1C8Y={UIH?1gnoRB_x}fvA^;*5 zSOYsA;M4&ldKK-6bx7HA2_oN1N|8dkCucPwq5Xjh(|?u@-*Fh%V-TN&v46pu4odon zN92hI6@lR!BzE59JDb&|;(ZlDaV|{|6#*#2_y+uUly|rou|l08tS6L zVkFGNns6G%W*`gwpP5jQn|DKU#=9=sUEi=O&ge~xwa5J5haXHRy1$YIjQr#k->6jm z4(xni-$ADT*&+;ZN3TF>5S(r$7%bSO|IovKpPkEn_id12vOqs_@i8(SfYKEE%E zam1c2+h-H5^#lN#N!OQ=QzVM}?jPFmx9Vnx6U}VN21`!Bp*D~Jl|Dz2GBV*8*uQ-# zeWc!o2&rgo0IaKwC=U%KIuv`S<;`VycBPLSE@AW+%R~tjT#k=9;yAvtj8@R?!c47E z=$t=6nHJD{n*LIN6e4b32$utiD0fwio8SYb>i0^Ez~{d&_S z`$x%a98V7qk5!bk2J~nvuV9oYQ)&$NCM?}wUEWFxERpkn8OC!HFq7Or+Cg-mxSNV+uM^W}-+#3>9wl*bi9x)qu9!Oh!m55n&S+`j}iWA(R1@d>4S~0v5@X2IXzvfDg4A(Gf9p$Xk5R^DT`r%3{bW}Ht^{hxWb?+=+mi2S z$s?ZF@2iN^do`eM#+B&bY{RElr)0O3iz+8=`iFNshbhid?%589wOib!4}ReZrM0Rp zdyWbttL}kTy{-l3?)Gj2jNQ}ma+nmy=5E!Y_zU<H*q zV9wcbvj=7K9#q)fg~LCeG+y9JHGUVtV5@DlfR5KV-Cd7K)6oLOaoU&~$XW4mlxGZk~S5>6X+|p1#9QWu_ueLG}!l(VMcG9l)NX~%lawbBI65EN-~Y$td!=01!Fx2&w;Eg(NCIR zA4(e?bp!>d>2E&2jBDSF#G_X+P$EDyqklEb%S5pw?h9FBh`gyh}@KIoiDI z@{kTo_QP6n4@Xf}!V=Lg)^>u_Tc?guP)fvPzB!}I+DEB6WM2J)Dm*aKm$myXKmYM` zkAD_z*Luv8YHRHnoaC*Nk-_$0_NO@g`$OmO8T9ZXVJ0+NIzk}>OJH`DxVNl{e2he- z%@bbzYE<4J2;!su>GVK0_XS^;o$bzzxU$bW_6lim(Q(CkZdX-cL8y1zZT3+X`6lF? z;Idrc$LXoScWo}?lgzYKo7bqIDbioKZmR|tyI-u?vFR~$Cy1U*(@NuW_m>XzA5yE0 zK-BH*?Un;E!tU_yuayO30`3EAO;NApinydpl|_2@P+eYHx)V%!`&VUFI~&!5P)Eu+ zxHL?lJNq+m?OTj6a?t(pWCclaYuOzyg_6QvsPN~ZPuNcb51^WR7Cz&c7Nt{*ps&O7Riqe4wdAJZ{uU5 zV#+vw_gsCluA83zME)|byb+@8kIX@v{gjCN~QBnVJVA_2MMaFP8S$u*8sV7+@Ox&=raC_M1=BtnYgA*kxtbP=qnuS5a?Rq7a zgJ*lc%&o2s>0>IP4=lynb1NyWM+5WQUZq5)SCd&qD5~aijqTLzn;@*46hgLU3YGuU zO;qmj+wB{uf#85m*8%bRtBl>wC83gZ+r+7m;y_TsXOk~M3jPL-ZJF-a!-Gz$sb;4? zzN8}3@STJLKV05be!MJB&+r4y)dhO-lYJy@(l6L=Y=r|lxubnS!^xJc;D4E}g>j44 z&OmGi=7tqEz1bnqbs+9rl3K{CFu3l`TD8ae7`mM-4l=CF>)V~9zz8)sBJH*@2D&oI z!Jzpx0}js~L||lewZx-VNcCtCtNIgMR9v9XY~(Oc^Pa5p8t%>i#7M5MGK5N0{uq~ta( zlnjV5@Dl~`y*{tA_bxcox&l{$kQmp;M{X`mKxR}nFXiuMK;7kj?*?ZWSBnC!FlmS_05>X*Lnc+f-^tz*aQ5L^Y$@H3`J zZ9U!Gg@3=HwLPUfuX*^v7%4w|Bi57lDCPCJUul7=*)A$2zDh%Or!n9v=~$w~9=o8> zKC<+FN0PO1|J2}B2E_bn8CPk*{-(UoTJ5|B3JmZ4W& zveGqcokY}dVvs8&NZXAW$8AnUIgXZn0$B#}Hom(_^w}Jl@(Ga=n-4)Ih%1Y_731tB zI4+M$siUjd#i|s_2htCYR-8f*Kw=N{z`2%W#1o)bz}yaD;{4{ZtEe7>*2J4oIRZUh zb(|vHmbEdz9>*L-qL+Ex_ge6KwoFxcMc}icIDQtBw9xz;zIy9b*7kkFO>bcxL`)Tz zqV%d=dPU+q0aBC$ITd6fD!%DR_i+V1+;0eFeU4pz;e6~xopP^z73%|0P^c?}0?(>9 z`rl@s&6hrX$lJ4h z6I(O=D>(&$wG}`kgai{qEsbV`Xqx+95 zGxFK?{F^VzdP7j?)*@G_>v{aCkpzc}Q30jVBwRmN{~xm6F}$v5iyBUwHfijnv8~3o zZQHi3#%ge4oY=P0#N-%?!TyvtrsZ=0AMM>iu5eK7lDSV$NR2eQACF1X-3QPiH+H}170y?YCg zs0X+VuouoyrqEoS*5S`I94rRjzSD}8gWf*QbN%4$!m0P~@oH8lbP@5ria#vH`QBwt zOjzbq=rW=4iJL{Ic66^Prg+~R=Jd{ZX?u1pyuYpM*%o59v_G$#M^1n5aHB#h%?|t& z>$t=#kbTFBvBB4|=lpb+7hY=7-?u*kwGY{Af#D&uYJL`@v$fkAN$0O7+L(YkHwRy7J7PaZ0><_CR@w~>Ur*;L!1c7n z+pQWd$;W0b9wLguA*ykDNh?Z;$I)z(qa?TQ&NYv( zZ?h9?E9zV-c@?-7DAs$Xn$YRwiOA z#|y0O?3@Ba^n}y=_Q_TbbwY8Ld$UES1*z;5^@JjTy*1$TgNV_cct1Y|NnXZtiu7z5 zj3qc#qo2#%1)SM+;)iEurSeH$w@w2QPz3fnqj>i3uw^9Yx#h3;M zsc>`kY`b*gPa=8z+LJ(5fmgA4k)61rGxQ4qrb5>!Afia^(kVCw!Y3 zzsPC2y=%zZdIJ?+ZtU#f-viEK=plFQyY*ab!=9eN0jT>=gT1RbF1EF2Bx*q24oZ!c zx+X}jS5fb6Egq{px!cUI-0)re&RDDzZy?A<6)*Smw-MrR=HGk`*r#@`GDj>LgOZ}` z8Tn|il8?CR>21NngpP+j)zFWuefiF|r_^`snh z?JaLQ60Vve-i8;&K;PXG=2SaputVr3vm7|ey6=jakfY|ehc7a8jpF2|E!GgI-Xd<9tcZSTnzb3Htsa6iB7X*F0Em1e34Rhe zR8UbxpP?K?Jx_~bbF85o?$8LfH}kxHy6v|xjae6An=bp&m2`C0>?;~H@@pugQ`C`= z$xX`#jz)|o_0`XKZQ+C}9gv=#_V`ft-tNQu)}JbM`R-vAQxmt<F0X4?SfLjtv@ZMfMWJi(Jk(|PjXVqf8MR70Vh4HB zi`ut(IQ-!Z*m|oDc_)DX!lbw1hAyMW@RhWGfmVb=_PKeV`|-b6 zK!rQful7F}%W*sB{K37_0j+dYq~tK``vZ2+&mZFX1H|+kZcX?c$|u{zStD#G&_(69 zh~dHov_XwFR_}Ja6|^iebwq7Ygl%NA6>DBo&~|g<-}|5QMmM@O>Y)hy(VT1aNlb}4 zP2DMJg3gt$i);&+TI)@ti0b-Kdei4$bcp(^6k4sd)|0;m$?$YOW?irCN70@P_B!_1 zqMvl)Z(C^ss!4AJ0aIp?UJfmXYb~*KzsDcwa-KEq!h+`3cS*>@<&PHv@;VFe+p2gy zEIXH_m^fbm>GKzA?P;q{vvK7INo*1q~R8>Lr(>q2J zIp?^p{UnyqX!n?9V|;)7TVn_3q^P>@Gh0lCL~FWQ_{OrTlrovgF}DmFkKJsZM98ip ziH$gT!qyf-x>nLfA$z2EYTXmA8&-wpC^w(oxp&;im~Bsa*~BxCN_)uM5?SP0#!?9~ z34pDUJEMG{33jWim?AL1(hMfSTs?`&SayS1{$hi?1-^0KliPN;&ri@45)&KC7L@jo zLq0zW?9h{~a-w-XzAl*M#sqZ8@!j|s%Kq?sn_@@7f3X#0AZI6Un{?O;jc6O6-)K8O zC|QUjXB|p=md!WJ*$I3(AA(7S&>KZ5dfEoMP_O3&8J%ADQ+Zx^(|8Wqez(z)D5r_% zc<4YoZ_wy<0Yx0J?>JD4CYoVj1z#A88J}h!-sPHS_IC!ChoVa zyFAzZLl(yKs40D1)|p0Wg-+a~hP!)RD;2SJJ&yY}N2kX`r`~hCXfF9C?uFL#<1rsK zt9*y{WVzgHqfzjWIiC2kxoNVdnjFfH<}#lC9=a_^GF-n6Tf*cI@lnV zzCw+^pW8EALRmvd4gaX!g@fKq8~%<$#5~!Jbd(H7BeS8!ZQsxW_1d9Jns8Y2;LR#Y zKhYk0A%)QQm1?>SGVl8RJ7oP@0=3RsgfL%_1}KVzm`#XtL+K4i(A zov*C(N_2%wl^}(c>SL)7)YH(3X0xUlr6XM(rlxQ_+ehT~(EiQ0AgA~6+{0$-*3cw? z`-#TZhOf(e4Snx1=4<(MSH-7BD&mdsAOPGHRob!)Hx@aCDC9=C(r)|nv>kwm;9k@w*i)bVD^n8~r?|nYa0TGg5$Mxiv9eTZEsyq}{ z3l0TmwLb+Lv(g*Z-C9M^XLl%-SA%UVwb5^o+y8)D=@mpMkf<+EMpZIETzc~SRkT2_ zLpN6q#)eCmPMRp*()zo+l%w0WeX2`6op_#_>)~@kq~BZIpwxAhH3rQ$kjV3Uxzy7h zgXcb-GLl`}QF<-0>ArQ`=Bj8N{IV=JAt!gy#q)(={($4-nrjL!FZL{IHQ0U)7Djhe zDXQ=zH*s)F%Fk|*GFvunXlyT-2uYAkp)TV=!^i^ibF;Hw-^lgvjfGsgxS{SC*9p6| z?xfA59Y@y*1>bJ3<3?>S$dPiMXJp8UA{`*gS*v^3g13jYm6f9R&6SIvrOU}miJQz= zQQ1CNl@bRFiSN5dDMG`?yIY^spo4$(d0kgfApvZ1{{`hvi*a$wS2b9JZJ7B^iacg_Huf^#7#zrrv+D7g33tK-|PWg$8;wV*-m+6_f^aJNh zNYADLUSZ2+F=@4iG@;PI$F8+g4ATXv`noJv86h0_6|3?V2%ZsJ+ol4iIb>~XGo6|8 z-VKMAF2fn4vdD3%o*xeC(XWp`5}A7C!Y7#gif11ozZ;j|6coQuA@31tz!@IbzocJA z?@M28Tx#`}s}00pau&DOK5dqy^tK`JdOEpcti&9&aIsGkZ%3*8FdcxL$WDJ<6A-y! zK|U`Pams$0fF4`Hyz_X#tKDg~$AwA*R4}>8y56uDoTc3v11f5uKI-yHQc-Id z(y6VdF&t*&A_91weI;m5#!6+9nM94BYbtbgp39pLM#N9K!@nB-# zlT>x{$1dcRy^gBAN=FfVd~+fIf&NnvoqnJr$qEP2LW#jEdC&Wvg4P3y(Ico!g;h-} zu1WsXJ#?MhDHGO{E~fV2#`Hpb7(P3^8HFTOCGNYN%r5RF78-YUcwT z0FpX5NHTz`RG27Snapeayg|>qdMAoz}lU6F^Ivs zQ?Rk1Ney4-)oB2;gWq9$QAbv&A_zl&CJ|$%4{g_|TcaloK=jc6nFB2I!(URI^Ve#` zy`KxLe}Bg>_0Q1$?+;+0!rT}Af8T<>ZWjDM6f&^?UzzHEygAU$iOSDDrHQ9wz}+78 z9RTa8rX5TLvp3_H=yda+LL_Lq$*B)8)q%%~&Rg$a3zixvSw1GFkA}e;g_Zt?1Mt89 zdGXpcn?&bGAT3g2d>1w0h?*v+@WdtFbmCY5UP>DNwc)eb@R)0Wxo*uhy)-^3zO-Wc zF>;{bM}Hjnzr*)e1<7cTjjvCJueoGDOF@nvar}qpaN@5BI$dp3DEP(tyZw`K} zkkJodg6MTK9_?O_noaoj8o9o8cL;9UXp#Q1lGAbbyst4&I4uFX5YPx?m-y^~Z{KmK z_{Yc%WME)iDWHi8qaOCp`>z#tT6hH--tRs4F2=*%OG*8(qwtPOYZV%@>Urn~GXEYI zKQVSsU@7`>eQ%(;p`uJ>0=vbfF#3fHh^x$AeVGK_z1tF~5Yg@M93{BNWeyHb$H? z_N|0$5bp6K8~62ztKlrQtPB0P#cGat2*GTI>4XQ7KV-s-VWa%3YJIj3urxu7b1L06JEvw5d7 zTrf4gX#NSTOeNQms=rZEq(LbL-IBIoD)bhr0Wj-Y)rj1nn8soyr@*J@LcYG7VMSM( z9p@^xQ6$E|?1^eK@wN|d2cD4Iq1ARY5uKQt z98HZzUuhk-qrhga8C2YUOjcYSXG71P9idtzIqOhR@cWfl^HuTGJC0|tTryyLBfqtw zRd83jwg7}HUg|e4Q_@uvyR)zy!%DSJZl~u-83M)Av zZ+o1zA+yE88_^SojQe{4Wfwg0W3o0se^IyXa4AC9`!Oj0+Vx5w-_IF`k4s}w&0op#sNQIx$#r( z$j72q1KiyUYUypxJ96{w&mLOqdLbDp!scmNLAhKWI>xem~%q}THvtGoHQb; z4`Tgcks{P><6Z&&m*0j>**`&f(oG56^m(~3~y_MforOWv%Eo;`dtd) z3kQZXTahhZ84zwb0heh^V(Ag0I>RZf-u=3ZB7YuMiYj&)%OULWy{cZf@G>26V1iap zMR45|8O&Lw2Cidy{BLgqlZR3FUrAcDW6hb!tN&_U^Yr@bRdb%q@OJEv5T4_Xive6l zaCEQJNPm;!@Mfl8Omqc@xWhiCw zm~Wr29T&P#)}kv($h%Q~$N}Cougbv-&NJp4_7r1bDEFqzXXdm4$9B@6mTOZ1?Nm8- zQ>BXc%-jehMX7k#J@2B?Y(bgaHB>LN>*SL+DZYPn*NWnU8g6L3RD-4SIjr_uu3E6C z*3q$i`rk@?*=!7gwhUI)S*bMP*cdoU9kgLQy?y~XejgRr3{GIE(h8(gOr03w)dIRNd#0>6e~| zdt|BE4}!4KAoYO z;sU*eZAJrmr}a+mJ^33W!n<&RcP9mHQZijA|LzaV4;bd3r7cNz8EHcgg+*sVsC?Gk zgN^ET97+3blPJREK={=II2`BS#2SL97u)`yAou>hgOAoKld@r!?wXIKvAGts|TzAU{o^ZVR(EjdJhh@Vjwi4Xu|sRA<2wuWgaU8tqUzD? zght#~%!)EoTAQuwXiW|Jc$6A1ql)5kv$E;43eqo0_YlKFsc*tQo8LdOu97&Fc94HE zwtdT{x|uCXpZd-)=35{LJNt@rn2fZG#geAy5_q#oL2O4_o{Gis+=XxVK;J37jKLhU zTuSrxeT-4$hURpkEQgNeR`%a=760+)ET<&z=Ue!ujw6~W#2A+`Jo$hnZq!K5w^n%q zJddH#8(Z7OE$ujMV2PU2&7t3WhjqsLE2nhh4McyPevs(V|91Rh%~Jk*YF=|;W0^w6 z`LM9$EuCd%2z3$(nybjDd$Bd)&?0mN@TQ>tX7SzO%J)5JZO6f;e&q5dbLH$Y7C-0Z zG?&p$WCcLEXfK)W$09XnL9PGMbHh)+vDS;%^07p+pE|>l_GF>FfHpfekM|3vTyQDT zB<=PLM@;b-gD^(x&XeXVUQ4ouvw5tdd78o1wE$>xZTld_Jr8|L46^1kv#k75?CgZintI}>D}`^0knUn9tl7NVJgl@sx- zDR=8HcXv!E>J#4kYuG&=QQ%omTE~}fVD-?CeQ1sS71i)X+7d1;_#L zelyVPVuOD8iqF?KjPG=lOF$Pp509e`FQ{1jB6Rfq=~`8?M#*CN=Ly1Up)J1-i zcoPr!L{27-nn&p9yPI-`+oWu4_;M3S1VR7!V*avVAc9-Pux7rZ9CfuNsNmcs zTsUfvPNA6*c}|85O=_r7n<(yEiZuKXotQL4e1f@MJ(9W#RAgU&;pWevfv;b`GNmGN zAb{x-{S(YQH2y2XLayE%(U+T_FNJ`&nqN?LjJWQT^31$ra5vK)IK6Gi#KeSxk|zNE zl%D#vHWk+8Hd5T*nXD0;oV3rNgxj!}1U?kzpWY)F*dg$*Rn-^OE)^9t3`4&O`q4rq z)XS>DcD4POp1Q1%+1f-YC z=lG&*q7vQuSv|A8-H({quP?-8Irg78C@2F)|3g?*3TU8KEn27?Kt)Bml`2r+3pc7` zu4<;(abS(FsfJ4asc(>3W*=SXJGfg61d`CbL4f)L$pYsxbDf;d_gRUVmonpi6|q8vllPX$C#QJ15FDU zvL#!iq@pAxtU**1@$C;x%@U6S8F+yl)A@h_|GC`okf5~dkXv6wQ-iYEVFyRh#XCDZ ztRgPA-mk6?nKF`)jdk(>L?S+M@X(Iw#FGR04EGr_B%V#GRc-X9&laJpe5Gx7c)X$v z0Dk%}n{%?pp8#YwB>^1kay!$G8!~Z0|J?_f0&8j@@Ii{~bf#x&Zfr$7`~JKGTQ18u zIay5^s?V?_BOpbPgHH0w%miaLtS`j#$+@AlFX6{Dt|nQ+YOBj7K&`NQyZhgY@I(If zL6YdkQX!xicTbT%r=sbS2IaE+G)Yl?-tq6VKYuwlPgL{Tf|rldK7@qez=z7{Z_(h8 z!PpT>UP6B|QJI@7_56|csMeRsr8YA1^UEKmD`+^A{8?%CKvJ~3E|VF(faXy@RA3%7-y-( z(=Wz-!{mpM|P{yRItpBsV`y#C!uLBX~{x*+)&fFdzsSbb4g&{9xb`*B1EPl?RT z$)=(_bxtJ^S|ARnOcTctu9}36i8(tvd%0QXnxr?pMQL>5d8|9=%dNCg6>4Oz!6i0pink|!Ldzc=bQo}qQX=mix;L5GnN)ju zbuA+hTI?VVL$LO4eW4_vdukdQn#z(S45(39 z*i>y@4G$RygMgfX9Lx<02GZyOlbL>FVP!g2A|-0D8J2Imj4g@1y@rg%BJnAXn4UL> zSpa~KlIH`#F~4x*a%bF#mQ#p2(3OPAbY^KdXC_EAMWKyU?cI%8hu?H_LZWFq@XHy?yfmIroPPI{F%HhC09tb@M+_* zJZUF|t!@5=+im3ZBF{(|YN$_ZOF!)S{$_y{P+vARuc&&T&lBI=>mC|(y;Zgm*doVn z)g!sbtfSdM)-vMe*wzk1N`@%~v-Bo8CJbL2=#t`4unvXg{*0!3_i)rYU4aH-UK zTj(xu%>%x1rx=D*PUO1`;HrQ9Bs8_>PNNJ9XtNNDDb#xS+;u8Uy%jb>U+p|qVLcP` zTe8NcD9fsT&dU3OYW9*aS@)Z1jbBwE#!yr^g^Pz318wO{%nvoHpAifiQU0o==39x; zGs&L-XBU6j`;(sjF!h1A4v(^Y+>7=FV0Mr%cjC7{+w^oPyF=|m$ds>*4=CKQ#h#dq z%v6PzlC=40i9t%#TW#2m;9l)sA!BV0#U;J87R6=!17IuG!M`ja5(=(7Oc^z#Nu2`= z3RuPu^i3?g6Fod(s~Z}OhVvau27e{m85%3A=mJy|fZK$p_d7Drd=-3N?3zri*71|&3ldiC;XaNZW4lW0+ zvpG31m5x%2fK5_}1OoQwx>73s0{Kd4?PDM~C-&-09VILR5SR5&XYU|Y*_u=ic+ z=GYHZY&Uey!_5Z(cDc;;u4WWwb?4tQF~4vSftmZaGx7PPuAbJZ_%;^rO|mXxA%Ub? z1xJ7xiK&a~QUkVywcmb7kMCbp$Dm0TthI5f5Qk*d1gDl*jL(Du0wZdN9cz^Pfl+P! z-o#uhbjqJ-w)do$yh`YywaFX4e2Y)WSTv6kagmW}ungbaH{3EDkn_F)yUqV?x7eNX zqlDcMH~-u4l<(mBA&t+V{FtFM{Hv0H4JY$)q?Fe2>QxL?CT;j34~kbsF-D_!a(X?)iTSJR-{1;EoMn_;qtpo z8#1$Y1AuNdRSe-pXdw!94X85)xVvk`t)66X7J+jv_tm1xW8O2x*^S2*7*@<23?WxaS1Q*gxQCvfL@b$t~&__OWl zTJnQY50)j~eA|mTGIi%w-x2tFepj<8VeFWZ6Gv5xwe+|7to&Aw|FU7R6E(C1Q#p70mK03GydnPg4DA5ovKUrUJc4 zRzR6@>*1sdAY_R9nZn%R0#;Kwqh(o*a!XPB@WuF9+;jqh?1VRr2r%)DnpZL1l)+Gz zfYaGjiD;Tm0n7RcU+G-MDKU4?JW9rhw?6ggu%hqhu5-1j1T(BAj_{RPAy097&7o}$ z?y0U61mT-y+zg^2)dH2pXh?gAexU2%!dC&}GhVac(Hg zn`Ta%Sx$>dIkghuRSQ1JMDv72s%jC2(=k;a zZ}clx*5TRsAk^2gPrm!SX+8Y|0fa0wK>Grgv8-?eYITS0MOqUiFtBUG*6|aXgu`lj) z>W{%bw+4&7s!l-Tx)fN5$e+eTDbkpc&2&uaG{a@7C7NSjv}|u>Y<8tnE0p-E;*>;V zaF&X+FyOJFN<|b)63615TA~~SfS?9Ur`r^3I#BCPJVNMC(>ivX7s3;0rIiPAL#M%m zr6KP`i(N(`4xYtdBV#2*_mxCI7S>M6T@!kI4Bue?L8xWZvOznBUjv-iowjP0meYl$ zj-Ujc?;ymO3ZkctQid3 ziO3mZXJ}brAnk&UiEztqPbyFS?{cVH({)RRh5GrPr-BOEO50uYCl+argy3RYjW}F< z0IYXeM%)ULoIa*-u%B~jGKSe;N*(51jxt{Wnl(kC;8axQxEwTk;ZHVc^2%+Bv>oWA zYDRTd=ZG*>gf6nDKVQ8&555$zq-O*Y=rG`v#`W6a^qXe|Yc2&e7zJAT$#63GW><*j zjQA?27hSWz5;~sbkeOt*Yb#b+yut%>B@$v6`tQY%D6Ma?N zPwZMZqifdS=s&Sx!Ogo3091NHTULPGLK^A)#ql*yxUSo`)I*5^?6wECB96T;38A&| zZt_l^2csMK?gqMQaO9Tl9o`4c#LcMat-8-e+9PRVAeNiD2@`$`EWeD9Rj~SN%)5*3 z?2O3nEr$he3%nqIsF>VDb#AR75=7dN;4C$^;S7K&(V%Rw5{Cg(J7_h-I7gn0f)+h7 z8AEMOoP-EnVFb2B8YHw+$bWJDt4|8V0dy&Eb5EDh2sClTY$RjKMvpK$!wMyioHT-a}F&iYY!`2R}y)2dCtAx_8qg$@^H{+7>_KU>;XWCA8354=7c2Ul0LCf zBv&9xC_;z2>?hEA?Ju*>xObc9&Q-u&o7%nhW{Xj-<@gApZ)Nu)W7o?O z#t(S651Xhn`m+A^+%o=tU22tw%CX?x=>n?Q+rKeAD+P6?6g^1sS~_X&#owzG&yodbEn2Gg^vbQ6?>jUTf)LzhGUWySX};7bd|_*Y_PD!In*MjtOz|_BYdVON z9>5;nlS^3h@DceJ0^Z49%Cw*T5C-Tl@5a>}($rR+1<{w(Z#~eFiYO@bx*Z-3_4V3R zXhtT~sBytDo-S-Ijcnt7&Y-khZ2Y}NN?q4qFL8*Sh9h*$*eP6(IdY7^A!msOeWANM zB}d(*L_@#N5jfAZRMMs-@)TzU9XgR~mHaN?>Vu7FWJ+gS%-ZFd`932}f~D_JeYJBc z+-@1PaaT(qTd_o$j5bVoI=JLrv@QdKCCu%0O`My!o|wvjv=m`Jt-fF4t${C0YVH;} z9;NW4X+-U|7IcghLV2_fVUEuk*-3Yp&7_uo>aZq!aXThkd}6%5DKD>F8u(qQ>C>KY zMaO%e2U;l`nT5m>*1!eNMUolmeD|3Bv2T)9jz=h}PMc=Ynr=tM=kR2}z3$W=)6rmG zLAaf~{nBXNt?c)&>j2*eQngr$iq6bPIw^z-)n~NZwS=ZTKXb6t_1~Rr;$=Wmryx0+ zoNMW}sUW%-6^Dt>Mj*>i&~7{G|5=^fMDQro?E0hESA!M$$neU2Wj|+DJ4dgO9h?W9(`XS8RuDR1NL*6Ad)xw^)Y!TG%OuLNf1Z$4M!OK6R5(^A&fgfZKBRFiIv8$*KL?)nay@8$pgm z%~*JV)Yj6$t(JW& zdog4!+3?bpxg)T@@*82=CI>(^Z?gqoZ58n>*7U8+e9J}bkbgK8pNiUwDmZf3JK3d^ z+EGlJr)MH-caAcR*a@`qfSJ9kfskENYWgaBGnZ-xNmNF6dV1-iouDi62kOj36OAse z+3cqWJF>9whT&>Au(AEV4ACJ&>7os!=dHxKU&+gF(w=|M)T4{H!Ld1cRC;P@0V&yh zwX7ntdXMiCJ(q7rr`}(Bi*_3-UmLwui=j9G;|it`d^n7zk9UhwM8)By@!&~iEl;T} z6IT-~JSr@2brk^F(nO6Ml%^r^Y^02$=q6(c14vhz%-6~q1moR9D+4ND^2=(y_}i51 zS#Qj4WP?Ts_At~IvDkJkK%j8GqJ@Bg?kYejtdHbFS&H^BQrZYnh*n4dQs~G}2rYC6 zebYfwLnI|_V!-UGoJ6PZttUXfH(o{RJ5eXY0Kc3b1*)X6Vul7)vQZmD?7+;-fkVsU z#YoL>&M>=^QB(VTMr0Vx7~{P5*9w|)4P$`5J^2UCIObd6Ot%xsA5u)=9uvq(4#chy z0S6TVQY70_q5E>_zkFuLw0Y1%!jYQpjwp&*n`*seJwf%NlMI&N&b_aw#oU*bTkXRF zWPz8%fxtejU^?77p2x|yGu@cP8sjU31}Fa^Z~c3Y7_;JiU-k2s@n|xY!#3iRP|}!) zN{G`Sj&5AMWvEm;Yg1!mMGYayk301D~mU-8P-E&T}9wcD6}&V zlbctGik11>9(HQ|AP8amH?qJ%`8T3H1yh^$wtl%garNNL3z``C0Y1L;Q6B=f0d4$H z*Gt=`v*%+^K?e=oX2pleN@mLsNlMh$5yH7#ZdJU)vL^a9!`ojm(>1lQ)Kt-oP9ruh zHc9AWBTu^&8AQcDm1)zIR-(dClja_mPHz`+V1AanrlKw*HN=b@V`gQYXPPvtsfjRk zYT$T0-dIoBx^vpuDd@`R6gQX2^10WzYQL4eZDE$`yS&#L3bE$rBb-HeZH z)Ezb-?p%;JZoX+vZrs@B{1_AN81xQr+~*s&y0_aSVE zU^!KQyKITE#0>@(O(rp%@5?7c4W;{uF7%5kwdVjifdXG(}Fh4cc=g3mS<# zsY}^2WH8}0O-Pw;24TF0-!O^d%zGC}Mf(fu-=opJ} zjmM%U4InI^ks-aWl7bp-{>vKo$2KmnosjMqn19#PndV=8f%T(Pi*{#L170XSK-nlx zQz3=Al5X#^nK9S3KpkU*1eubhC0X+Trbe9|1Ij}rw9b&qRUP&?h#C#1Y(x@fkI_Ox zAgdr+>ODZ98R|bCaA07#@PCR@9`cw0x3{;nkK@P+aPcF(ETsK~@QxfxWC_E@y?0XE zn&AcFL`L$FdP* z>^MT;MhBI|b#>cinBx7$gP6Um)X53*s_IZo#p0SYgN1E#xu+fMQd0+v7=J5p zgyI$c+*;ajLloShrhsmjz)b>0E=i$6^Aq+aYc4ODew5ZA_FZeeFD@t@xNu} z9{|rX`~XA|qz~`ia|C&`SzE7pE+TAUs}Jodl9&xj0L`qo0mJ#ohDQLYn&1>`eYmL8 z9$3dP3d0g%s<1Q-;G@jf0rCGb>I2{HAd1@tRT0Ke2w~~VGro}fw!?JNfbA!T44L<%Ic0eqNT^5(pjm%~+=-)F$#?7Gkaii%&}h88R5fZn_Q>0!N8a;O zxxQzTQoJoV0u(uo?rT}pR)f5ClnNYgF7jv$jviLyh>?YGVWRl6V?a(lT({=4liUiB12<@-!TzZVzDyn` z!`lb5p;8knSmDkMmDJvpvM$pvJ4twENo`VH^~!x$`rVMLdo$xF;zDi6e~)FEL zhMl4k$-0qHz&e^#v56?S!l(I#@qBXZRCW2&ZVv6ZlqkO?UwSrD(O=}K9rT_F8`?{xGlEP34W*d6Jce*I+&R@RvmswPzk z6~J5;+Di2|{D2mJ1ZCVcfF`u3@G@;|PA3A-+%qFDjrW>jrb4C^#_=M07(xODHAHKJ zB5}5?#!=v`{m44ko4&joPWtpJ0&+c1w-&n&SnQ~K>oyW!$%Dgeq)orV!{q~LFOx+J z`tp-gV;NO4$yx2$il8fezTq6t)TR2Uq7jan^v@Vp9ol*pDA{ESt_{hRxDSb|7UrM8 z!>hz+DH`yIE?w*HbO6lcShn(JFJ#{YhVS8NF>S27l_j5adFft$iy<6mWma0!ibkp3 z{QT7yqenV|iD}@5|Manwn8Go@z6&q8lP67;kEjkX4^ZIUbaavO9`c z8ln=@FzhVDDg6>WXMM~eo4zugHe8Q91VSYbM3}#G%Q81PmO`6~?{m=z2UA zw<|Tx@pPFo<-gBpdU^tXY@)K-hlzov3GNoBDv~B(>*}h>myaOfB_KIZC05l9I-NB^ zRd6(=Cb8Q#Y&rN@j?X>cB1HT(4JEF9MreQ&h$%FBuIs<-M|f?nC! zAGAKA7|ujK5Iy4jgQMgr2=|W~RDC#%kCRqo7vc+36jjR= zrBq$IhP;$qVc&BtQ=O0jP}Y+2REfu`)T=o^N^>f zTs{Y~s(WMqiAYWg{STGFt}bs(CwIZC&qO8p*)2Vxui$tpsBdu|PSpUE$5+<)73xD;)XSMlaN~hN(m_ya+}XD{^iC^hf|n1Sy5bbFK`bKF3QaYn zd=naSMM{VE1*i31P$vH%s_$@+t^m?b$?(qdoQcKHJ(&vHxkFL?Ip@X?XBF!#B?0Da z^h3av_TebHE^$a<_M?Rw=g{WCX=0{g*Ma5HVj~Xw%?~2J@QelQZYgQLwYWNq&P^Li8LKTe|7w z(f*`Ul-aP{pBi3cMJ5iGjq1Km?+n!{g zjtv^r47gX!j+swu>3Z4*R@Q<382*q7NOC?{U$S1><=y)mz4$i|=FaNkFt59Q1=xB0 zd=ii$`oB#f{^Q`y{3yH<55!c@5j0%j6>|tozb(~ ziyio!P7i^NLKv!Z*OC4E+n8MRzws-@^+Yrj!XR%m5-31~!wZm2RCTRyOGPJctnQ8; z|E(04T3eKb8=B;@O$_C&$j>4C*}n-(dp$^?+(2L=M@wnEe|NQEn(fTic*v;c{oM8D zQjD$UDRX+xsc()rh^8(51d~-Y`aFiZECj)+NgyC}_Ox65bzBTo78sytyoc0HSpeXO z>pXvMO#-X}4%aW8)-zw6+w4G|i5Q?Xl4Lg#wP?-ve8%a^E^x!qDA zsmQ!pt(bw6#W>kpS?UPyWeFtsbqAu)xmfgTx^XPKk@O;I`8UD02C^lJblP``LK)cy z_#TOKUacG4?5iDpcGaljnCEZ_4k zUgQvt#ldn^tEi1<8d?MIUglO?wtioFmS7w6OeLtT+cbZDkRMDwGPJ6zgrE)V-#LI9 zJqke-1PJe#^)?@|o#>rdTU7~R2y0vA`Amj8pBwct++wF zI@y|os}@JR^J19=-t4Wt!%Fte_Tx07FG;Tb-tCsB-?U>-Jm+8yfK2gjAfIx21*=-3 zP_{15AqtQ}a(RsXP$>Nkl+@1MYy+O>(BL&IQ4L`eRq{Z#aMK26?xD20wN}!@|hC zjll`zckin_yOA=Uf3%<3JMMLkIcEtROWu6o`T9Vyi+S|&pnv*u<8X5yZGGmGk?Pv) zJkOq)kQahhB>Dy#{g>0(_eHb^U#12f2lNJCInF0i_pBdPHz9PxFz}$)%s*o}sZP)K zH=oJNWe?UwnoAb%icCx+OhsO1YX}Z~wAN(3e8#E5%1-78ufvK$TCyW;K8z)=%oKKo z*YMb9R0XZ+K)s0OU?+TEAKC(D`qgudGD|4hXGP1ls@lT2RoS4KyZWv0f9?Qc0Ci(dsppF7o4}r{ zO;O7U0ogBL%c13=O$xCs7ttT;S^s%Cd}5gk0} zvx_$PWt$7>QDwU9Pi3roFaHl;ZyDBBw0sXk(W1p23dJc<+@&}KcL-M8Dej>_arffx z?hd7RDDLj=?(l}*-@VWO)4RXr$w|)HcJ|DgnYHM?dPXy+)NI8S(E#W+$vI7Ag?wLi z4L#n;3E&^&5S~f%iqO2171izRaPcbMj3e_d#{P4cTYp1V?*s`v+Zz=#TGMJeq*;%d z9B!x8c5l- zfioCftXd0Q9_s5Yt|T|vozvqjHS6?q7oN7lZDGCBYtG}GB4i+`jWwedq17d9Q%*EQ z#KaNM*@5gT?nFgq>dQn2`&Yup!j2rasRcJ5EQk_43covj?Qv?kv~0{=K#Y3jMX?Z_ zO|JxPgtC>i$JD5%=V4*+bitL{1=-5xp8T%R23S0kj8D7QQ(Gbwp0{cz>zyX$l#bM@ zuW*8^Q*4RySptXeo+nMSKI6z ziYJt>ztGlB6QorcyVmQw(+lyY+`w|Jld=ITIBg@(ScTPBJ2s;1D&!722hwM%t{GA9!NGS|tt_kJZz8{ay zcW-}vUimK;prm3Jv&-M9wK;i{kz45ca4aQ_=14Wl>wY(1IyBJ~pQ|zuXJtWpZII-A zvhc1gT{#8sxgIb@gH$PWf!HJ&li{Fxz7!TY8u1HIC@cMJj3(f%DqwasO9$9<{}XD) zO7Cc)c|k){=d9s5iI{KK#>o(HP=3G@Te53_ZjviQjHffS$dbTMQ8?vsnW5?M9XH*_ zOM8!Xp;Dn;Xz&|)A=idi>Vq^bZ^03MLi125vW^wWkWuF&Z261GxWIzFs{O4P6?57__;>hTVRv`&&#F2nB*UR^%`H88GG&+zpVXGv zjzqO5Ni$o+AE>A_?r)Zg86PA{!WOum;)HGsC`=}!CdqDezBE|DT+eoH6SjQQhITWC zNC*rU`VE?|J0i)$9#KQt&Vx(cu>?8bR-$fdL z8f4y9N0e+Fhw0WIuTI_hp;u*m${&d>VAZVDvw%kEV?@ScoZyR<2`Zp_Z@+&l+1m2g zg_fl(Hz>v0ax(arYlos%`&7oK@n7hj5^~(dbbQz;NV~4m?GmyUgwOkg7vob{7^v_G z_RkL=(v#CLWZZ+v*jppf4~jpFdx#5|C@(J-c->JatDTZyE8=YzDXTi6YOT#K#pOt7 zs=+ubDIXcZcNTl$~=01Mun}x6@M;hU^d^Fjew)+*l$yCpULh!AAQDMkt z(vS3@1BiXh%XH^~)RHdm6xoN!$HX1j>*DRCRusru9kz-OPTm-bD7tZYWKzqpJ1&=x z@V_{@ex^V<4)Ms@bQLq(WdWn=3vDy|jkG>wfgOTV9n0D7JDE^d0djdD1w!txj80lD zqW7u6K81D5=)68(&uw%H<>u|>$^rGAznnYu2%ny9Bsd+Kh3;bo&mnJm9lS`5 z6;gzRhcumSRR;k3BT+Hw7EuOi#9u3OjtX^mz{e8ZjxLN3VUQCuI;Jq;{rih)+RX(YyJ&11MPEo1| zYda8zD%)WT0W!bE=T( zZkSpE_?8SA$KC3Ui6?TGY`A8qvMeY1RJn|QFP#ptoz(+j4k?C>wWQ?Uy_S65AqbFaM2d*(?xK*sc7 zNzc0Ls@abZx_@hZKCSCl(_T3Lq_Aba`yK_jpb6T%x$*9wXN7*;&8SJy}oYL9s&C#O%C)0?`$V^rYfpJ2MS#;;E zibS(*(~S6r!s7?bE3JE+J%t^|grNIHbiHQjz z%L3(%M6d#Y!5;;H%8~R%4h18BOqLx^oT|YP3p$46ecNun4kB(h;)4-;$@JbnfNxQ0TD!$8+NE9-EY{?b1QyQz&eQC~^?|`j_uL#c>@%U8c z3rq;hBQ0RGE73-F;1Kx4nBb!%(??PA(=?mW+(1sBfIkfg-e$R`8Wwt|orO@GC>A@g z#YNw)g>sCJIP;q-W=ajZNRIHAl#@aPLH)&313BR_Sv5|WvRGh_7=>JPg%s#L-%FU- z5^mLAy1#?}>;gH$>kl6L5H_X6Bfj{=tJ<+Rgf|Hsw%3EaM5JptNb`NT*R!*Hz$ zr^}SlyIsF4?a%KraGTcI-m(x-iGmlsY{!)0LknE>^?a*Kjfu&S2E>ongi1K?VY9(`S zCRJI%H~c4m@yZwp4V|o@IaViE?oHOpw*f-=f!F#G_Sb_cAhrP?Q2kC`3l)p`%7s$1 zjz)FnTX0#vqTNZnz;Mzaxj^1LqUP{uFsHKLwhdz=uBAU=QpJ%JU6*6LfC^hwF?0Pk zJe?VIvP@x`I(ybR^k5WP+;p4&r9mDHjVrBo=#=bFc<+^m%f&=<*4xvwAJYUf%vRxG zX7b|iU=5uiW=yS6tyz6|!|x+=)x7?ov9?{=AzhM+J*f1nuvvn)t+PfKmmZ$s6Sw|= zbnqxLIc$UCAsB6Lz?f8Elm4Jaf8ZCN;cj-GjKC}L^2o4C0!hENFU|Qbn+Y;{Y?=i6 zu%&)$CmABLDx?BYeF&@5pJiK6o{CHIIdBkV|?QnlV_`TkkW|s zq88Oubt5g7Pi83A9SPdPUD6JRjlmq8dY1e|u_5D~=2R46vWY<++Zw4xx;H4p($=ZxeY=1&!1u1DOSs7V}wy;uhsJXP) zul$*f%b%M&%og0(88F-*3L|LnA4_MWy=U0Z(I-e@>NTY6-JSB(D=PKvohUTFoQ*4Y z4he@l6F>dAEjp%>v-eHyl5`HT=}h(SaKly<0_F12u|iMoo^RmVU;XkYw~NUvnk&re zifs*`pIEeCmf4Y~nAkaWfL*A^2Fvw6|9Cdw_DrJboqs`R*JjV4sOVEL)nmciJAE@i zfq2EENYhk%nUp`}x=e4(kCX$o%%Z4aGAJ>NVPA)fnHY*nX|2ktr`TR*JUax#!V+-YyMcR zPqVokst*^!!_A+9?h(unGbvzs+8>v9pcr`5M@K&8sY?;kt4vWwD}oHqW9^WN#BdK@ zsD#UZU$oUN1>~e{?sTT6`w8ZUEewW7y>|MwNQQQINVNMe=~;iMZ{SzBwVqV}=o-%! z$9lcl6V>G1cuzI0ay1AV4wRUCP6jXKBqQHM z6@OJm1CKA^k))T5LZYW!?QcG-4;_jX#KGp$?#Hd74mOwP?~_Mj3Zvo{JWao z;furcb7qApPR=>g_j$pXBw_?T;nSRc5r56Q^jqL*-qT04$QCyt$C&^-=cXdh28&Wn z1>noc1__N!5G1DYwYYDdoI#K~9}6Lx#c3TpA9-$=C~qNUnf(sC-&ukNSkaCG;Y`9-M+Bs!Nf z1K1erU%!suT{~nOa@;T5*T%hoMi1T99P{IVbU74xUi>)iH|a|!C5cA^e%7aQtlx|< zs>U8u!=%ho)Pnn3Y5y|dbEza=U$U(_&-s#~JBz$D0L{)LN0VPmv8OggNtg~2ZAymb z48ndWw6D6Gxj=JXmdxiLFA*!xe0EW$zIgIXWg5Bh4*HeLXFtI5wv?`5g`u$ST;&1u z$PtC!v3KW88G}d|(ojE%1UHr`#MhOWoA`M4!+nf?pmWAxAG5UoC zcZ`^PYNR8th28VVC(n3$<-qF;(f33454E$36q1`btU}W&bvznO9LQBn;34{+loIzE z3oW?4>d2X{oRO|=>G0~EYVJwmAnVqI4}#V*3*COGT%%bxTxCZON`pm47-!en zP}W`lFqatx_ZcK$~^}D z&7u?3&-Z^g&d4M2e%(x;a=GF?7}sq17?dpsBk=S=z0<9K-5v8QADy(%B!s-|RJ^j? z-1jJ*n2DGt`++?P_u2o5m{u;fec$pMqHEA51ZI(bSJXq@O+fP!InRkDLlIO;uCB&m95Fbe!i z_0xe8Rz(IHp7RhVm5o@XMP7?&Zx7~!QAwIxP|<_j9vdp1rrgWPl;kFJUUcl!GfvFv zs{8AM1r2lCzkypOt%Aa8s@Np7OD_sfA8MFt3rubL95-o4QTb}cOPT1fl_brEtS5=4 zFXppF@=m1!TATLki51sqRTrOG=VBAH_uXPfQQ-zJ?lT7Cb~5W#cxr}ak%*7iCz1;Z z!+qbRxK3c^?&HXjUD4zetay)&^RTMrM6P|!sI=aYYiFxl$f>Fc z@pS2ybbY8{2|YcASID#{0xpQ(=fL{l^SL5bM)l>6&*cc_YP;CS2#rU%-}Hx{tSzo= zELVDZA89Suq~Ymh@erPv%8E z(cDJkE(B`Rs2cnP753IJzi&@33Sah4B$J5Xz^Cnre zj$66Z;rjd%YyB{jvsVq8-7Rlx2LT&~z*AwD#1^YN`g>N?B=mDTGR?wdB4PUw-8|!2 zux@U;6jCPrQb|~R5O@DQBs_VGniS=?b>b0E6?iHdrXgQ7?$AM02BV`5v@tR5F|>5y zDfSGuC6#=Ap~B%HA_I?$jz$>szfwRWQfK&!ase!yj*;>ls+^&MZnvJ~PTWw@k%DG{X zWeB<^_ZmLjhfi!TEaWl9g1y?h*&W$0v?3NnCdO-D*c#SJG6~{LeLTp0$j4jQ?GcnL zzw&z163qjJQSk0P(M=~=Kw4f~!VmtH=5mkUu1ZTRXKW|W~2 zCs@X_{hVqNIp&49_j6b!vjBJD+H&GIsfNk$SoW+mLe1DtCvF`m5qaQR;J~3UwnlO#h&lIe4 zjS*}ow6xq!Cy>S7ul#7Fe>=+Ku5MzS{#xi@AtTO5Nj87j^gRQ;{q|v&73OpfowLbU zPs7#2$;&zAkhzmm=~2_Pb%bbF>eTDP_sGEuM|lXtt)bb+frtR+i6e!Wr8sqzsbX|} z>M{V)E%0L;|Go0!(`p;K`E7PDYGMC6CwdU4ci;H`9&pF#M>TxM_j~wQnf~^xwi6A4 z2e0r2@fSOqTBRN9pxV&rrcq^)6oqdIaT&)O`=JZL-EF9qo}|r9!)BieOxxBO_H`g!dX0<{;5LZMqSCrU&;TV(rZDc%9 zqQZ-Yp!V5l5mU_>Rkr81cH=#r`J`DgF5$l%9S`nhAIviQ+@Ne4vGIBT3CvY6{= zkn{t1u~1s93{(x@C!ssV84SE0kEgu?EFD%##z65w5|K1*7d-&KYXgV#2C*hbpVR^i zv~q02-z#*ctezDW=wgj_xAX=i9?)V(^Aqnq|E1)!>b1gW0bQ$?z{v)`#VmAUXv6liA=-I zrTKlf|N7ZLn5DFrIx_+T(X;t8CzVICcV}Fzt^xkn%KnOqiyuFP_F`IiA`n7FkwF3h z->R?X)6~7qv*j}Boa~y+0^CXZIDp7x+d4~H0XNjK?#gk+QY(w5|EVISRI zETm8gIfO|`p;k|l4toO*Lc~d~CS;JkQ;{~1S z!ZIeD;bT%h(|ZG?DJ@0KW*)|zrKM1N;H(a`@1XSsbcQZzbIqd~?JUJyi;*CK?l2e9 zOVNc43IPdWs3C)Emp-3+S9w;s)Q0f8aUV**0KgC(rFR44<8|dU8HMFei2`~>Gq=1z zh3-JF8~e;?$_UuR+mF^@~VMZ@_Ey+G-6cN z=QpVG6XHX~f=;?*L0MC=S)4sdKCHifv>}jWJ)TABR~0Ii&FsCtk{xh z^0Aqt6RL59HR__<1@Y2!yn))x%Ec@b---kiX7<;qa?4Rd;hNl%Lln2EB$=|j0qqX2e}uW^sDWSplcaz0%t&issw z`3vdVd(r8r{}(+ZMaD9P6afh-w720tw+LaG^gqkALv5Sww!lSbpv{r5*egLB2U|={ zVi9;J`$n-Ow{C&o1*sS9kdK*|I#;g{#RP?k&y!Xk(M((|1tP7-K0BW(`4?9d-NWNd z=lfX~HJ8<8$k{5?Pt%+AtuvF9L?p;u`#4vcPXD2FJJyI4l0+NvSF%-)>lfRJm!GW? zvXn2?rEpG2N|aF)-||v5`aX1JMU{fHRE@DQDt=ke8HZxEYOihJQ&r1-RQL>c3OM&% zkNxR~x%IHRrLymWH_nm1cPyx;&IR5CTKmW?FCW`X8mR+JI5S612J?mnK$;u>-5r8) z;j8G)h4Od_<0PxfATl3rcQ7YTLr)#;d}-%s4P(Vs0KFpb?k^GRXzufBX|UDyC(~nG z@uH4Y%a7+$ZNMJe=2eHdyAuaFz#k=viUOynEjx!Hm3Dq@cOyV3-+IeIlNWoX(ZB`N zy(F}(@K4)GYC7fbhzqQ!%V4IQPG(vrnn6oec*~aPj%O3rP7|F7DJ9ZgfY*>(UP_0V zP#!8ON3nnvoJ&~F7FPgcT205#)mRh0NWqoJn#Y9w>8HDC*h;Zwe7h!vZiUqL`M(8)X@ z)T}*DgUzi%4-y+RGtH8dJ)XL%@O={Vp`$e91SgwkD zk>~gsOinQeuvi*r0KMs{G=F1oVufG|IjekAi7}rRQ~K*ROk%-mQU8DGJV~+c^3x{r zrR^L2`j}Is+gsLedGg%8S~F|yYgsxBjSPzpEykvrg>~D7)v%5kXz`l9Y?e)0(`-hjSRs(e4ztiph*(*;VF<&MUqv2 zSpL2t2hF0!La8Lcx_fG-+=osP=jT?K@L_<`v5?$jLqUgF+F3|0T}o~){LDuc=VI9V zk6ZC`aUe%8_5^j{`}*;`gnDQA;a=Nz)_OnSu-c9{G#7ho+M>pgz_~U)J^$QyS8>p*vOIrrV%h{OgyFP0h@sP9nus z6r~>OLO0h*Bi$(TQLyy9wB2<{xuxFf@L25K;Iru<)&hU^PI*~1TM;gikAelz#Iil+ zyh}>U8r8h)ZEUpav@;UN#!||sjW3rr1()#)y|$e9Q5c>1uPMfb#z|iB%AlVn{)+`< zN4$abkhWI+btRJ(hgsn{Ft^M)0vB_`YStKc54Rc^FS6qw(+ZbkRC4%D{!+5mWaM`v z1*V~w_Fq44AaCVOEYC(CY`t@@Zh&i!rQX6>WHz;Tj63?tt-@^AFSc)t0(_A>?y(lc zqVmL-iVsu`-`=TZO0n|A$W0QsruK|yhhl>UoZJ%;*puN}jk1H(2rMANsysJ&}TtzDYf!kbaQ^y(*b8O=R#_LQ_Ip(Oc__xF? zM4U^K26zT|A%^dl@siZ#xVgaXwT?V%yh`q^f_lspVZnIgQnb_AnZ?096H4T$RIJ0o zY?NVbEh968NrJu$9XoeI7Q@r~43bRX-er%Si_c}jnEws@-ip9(F=-|T%s``W)) zHzh|SlBhe*{;W3Z>xS4k>z9r%lL+exKF|nShhI)11wHDbaQ?5LXA|EchZR;ps|Y8% zcF;>ZjMw?0lm@E)qh-Olef(4{X~^tvtELW0^9OVmGL+F9K29G$rTWiA-IMr@Z}9f@zm_HW|H^#sVf^2M z`}ds(?EjsmZ=ZgULd*K)Gf<&}T~0zf+}R*3-W%OX?UJCn4R5p{|9?ODcU=YKuFl&! zh7Quw`#Y#)Hm}yl;Mc}Gus#>3^@|QIc20wXeSW<^O?!ae6n+P5as9x(ry1>^=?$3w z{f9Oba#h6^9`>!HBf(1>jrUw@qt@NSz-$2=9mN;?@N7|mL`Kx=>V~NdS*0tb(J4Qh zNVmo}@X}07UyyJ^_;_@5@jDO6sgeC5$Bn^3uY2SI#iw}hPm|YicL3z$4`a@B0F+ht zQoo~QS)H2^cECU63v&D4Mi3gr7K(gDVl*P&yHZ_X6^CZEO{k`tsuLMeC{VVKX{*#d z@~Yy^xi)(_17fTUzaAUk9FmP~%-F9ZyztPB;+jXuvJK!&+07Pg@uoDm&nLM7ZhUzZLGC0@&_=5s^FQ?(%hg%TS>oy)FJCGhclI3ju&--R;+g@K` zo35|$FrF72o32h~|Hj>JW?>Qm>01k(^fzCE(g^@7J;aiXNF^i5lA|%gImXfb$?N~L zM^!42Ll0n87PZz6d)(^1-z<1shOlG{FG4{-T{YeHwxmIjkOnq~B`*)CvvBh}v$9eZ z^@rbOc=%TknbO29vt0^wGs!EI^U-VB#&t+89Ap#3{D1<<=;&C;!9UwxS|}K|Mu+XA zBNZM0m~0u(@@-|mRXAxic|Q25KKuc4xh|S@!!^pN7>($#^;SoX^tT?86l=NTXhMpi zj};BRG)n4Cl^66TyayxG3x9x8GTZS_3sqvoidCya)K{=zo#SnC*9SHKxzcTSy0XbS z4B*bSP42K|c}h|Z{(-t}esQ9VqmZ*SavzXbKck?g4lEq&VC9-e+fW9dGW#CV)ma4U zE)OKi_FW!6qkL-@21eSzy9P}6qXyAR&x*%#T3G6ygV1RAsu!XT>v_*FFzO0^%$T7) znAw`2Ec7jHX&-bfassy#&2r4VS`59HIR&EQxR2(hqE_~;Eh}=edKGu3@i26 zW9@BcBIZ^RV-04jI30m)Hfd=PO?Fe?7 z0;)_=9!$Hph9q<92h4cw4PxusZiZ{vge*eMc#l9nG6tTnCjoo1s|K^-_z$Aj5RYaq z98BAi2DrK7Xik$^{Zzs#u1BNy&6X+#OED}hT(p=V0d3(EWiNSJF}m)rF@-q4@82N7 zH9PSETY3y1mG9>JkyQ_fBib32rWI$TySNLDU(D3m9Ve0dAP z*k!ee^`9BgB$qr*DBTWYFni6p6gFJb+IZN14eUhC7!?Q(l=vnshXWko_&|g&b=9oQ zgj_vl1aIcc_Gg|T7}b7;YFe!cBJz=eCay(Lcgk|CeAvp{n#?`LlipRL4_fA5u9f_}FM{M5_(yy?z$Z1gupjtz@@@*r%#1HhjkLLp67a(N zx7F$6vPa!6uecO)Otp*lsabmlT8dMVaHDU}@7mtyKQ#xAe6AUBWaz(|kJ`x*_bR54 zVXxn1C(mIE2sA09Nm?t@6p6|f3nqm@tx1c<>k0o{QfM;T?=k2tvYepY7)G-|n+*{I zGqHwBffm*2}gJG=4C0ZuM%^ljaza6wH4i-6@ax-*##CbUUTzm^o#6j<@*1)s} zk!?yXq20|)`Ibii>5wqgA^7*pb0pdQjjd^eD#bXyZDOd}HPi1#IwxeZ!O%HHQqoTycM)#CMyJ z{k4zBO=B%zx~c0dBgxXxU_N?OPD=~Tz$MAJ&MT}HWd@!hd~)`oo|#}2(ecw@IHjU; zllKy~rksEaI`66g!iYZOZ05j(oU+Uxb1kLcSqFVcPQfSic-QPnPNGyVRoG*Q{6)*G z(p+Khel|zSvPXD1Q8|X?H~FS>1r|l8kzWc*BV^yXNkBs{!B;h16SG4>j)uAbaNk3r z)uWAH_FPp>^+Mn!3eNjIx;wD~Nm#dqfq?kK5^7HA{^)IJ&TLZ}C1Gn7(et16rRtvd zDFLl^(gM{3G&QW8fBynZcb&qb0n9e*<)ZK?l^L7%en+hcvW`hXo<4-t-B>h5*+n!H zF&BC%cuo0j%9zoOmC4p9;j1k7c+maP%fOpQj|J;|%y1;`W|;lZwlq~g=$g?|7h7|N zbixE=U674yo*umyXOFGl4lm@f_ZGeo!bMrVn~MHfZ_dw$Dhm{jh(!hOPq2!Cg)+2}5dZXbW#c z^iYBza7P_lly(QvgMbi1l@}A6LXTi|r~YPSIguG)e*Wiq=u?Ve<|#d|tj0Yydvmt; zmVGXDtI4FWkIBP?rz0JkUsIq-93j22s^mm}(r2~giZHny>G>IP$gGg}{WWZaQm(fk zkz2@S*ebW^Olgx-r#u#J2Smmj1ABw6>6lLl=^~VH)IZKsg^2T3R}OFJ`iOhB~Q;b_?);UPM5I&S(HRuD@6F#$T&J2( zRK4V{Pw0hw+=rUu=-J2(tK$5={J%jv^PRDFDvR6odclWWR`D`dH4gpghR7!`-j775 zPu>8orH|icIX`PEakK58tR@Kwk2}sh{e9!hPs6M zNJ64>vIaGugO9CS!Fbj0PeJu(q%4bSdTxwCnjw!nq&&)^z2*Zem#Y~a@%wJuqCb0Z z&f!=prl^?lblREwSSADqB0-&J{kwFF7meDe-k<4^@z9~8U;unvS1MC<$vxJx!C^k% z2F#~0jzko6nyZ%eO~BtWit__F=E3Nv0B1x!?uzu7Gjh`=G;FgSe%FOe(%UQQ0{kTO zSaaC(MBZlUiO2mmSzA_N=NRMbfSDZ%@E>9x(rw)#HJ+qa=O*~BGBH|=+B)R5137fT z#?eKtLZ#DBwdBT${$R(;!(sHRUeop8#eR;j8ouHq(cYupntKoH?`?ZiN<8P{@ija= z;(D$%Br%)Hxmq+Fj(kLdCcTB8W^WR9;gVovil%#%yh$$;hAK{9b7-{n6AF5p3Grkp zp`o9Cop~~halber-8cDG3CmriUKS*57&~iYABP_C|NZ3j%5gvhchAJOUR#8tdN&X) z%EN2sye*{~GunbafESNYDDpYT%S+EQD9Zy7Grg|8_KIZuOwOV+yKzi+KcNZCKp8C-! z8D@df>AStBzzEHtR=X#XQvJNER&`1Tnnt)!U$9s-rAna^n}zk+4ZZb1{0(T&Kz+rJ zgBh=@q?JCKpy--cocPeZULl-bx9uZPZOkfdZ_CaK9Qg%T${zV;VY`p7{;Iy6q7SDb z5z70SO&mmInd10De7-&Mn@f-Om?{xKely(COp*;pA8N z%Ki6X-;MjPr#mAHw}V8~a`G2fZ>B2Lm7)OwCB$2VKJw?3pAWUEwYT$(4oR<;UEY=( z?OrmiV!2N!pVyXeL35^fwLfZZ%Q7q$Br5Ng!6J)@n7J8d~& z-aD^Nf`JK$!G?}{pEPJUCl|%5E|})C^$@?U3E>y)Mjj>WuzH#~5AYA6C28K!&D169 z(HEJT#W8zrl+fBENACQ#7xd=>0a2?l1)%kGyBluS8<`hXRw$7qmym9cBB=C1Q_sWf z73kOp>wSLv@~tH4oamo?&XwX@LC|kD-@hw>R5gX5m(#nK`oe8^;5@qquRVw;v24x& zpv=dgpL?!5D`DeAT`|H&*SYufi^Sf6jl+h?mVncr%Cv67^fNtU`z-@2SxMB9`;LcS z-5g=SsDpRHPm@8Gajey--AN;N558P5yZ^Jeq;9F=c)455cH3K_@URE z!c-IU`{dJJahgIcs zj|s1R=To1-GL1vBoEYzSjny?Y&yVh_8>^@1)ZSJ`kxp>P2588zXGT2>vp#naRf44A z(NSw5P@>~`1&*hk+9lCYh3zZ#pz*_2k|LipZ_-b_b0wV$e3-OMVpqY!7L0Q;oqNki z9`=WXmtZc?j2Lz!>Mqcm!PGAHJk>7Z>s$9B#{?dPIy!^r={6nlTBIUgg`MNY<-T6S z$(f(D(;?x|LgtG?NQv~xkFK0S z?JqCJcTJ-dyXbfvsO(-VOj2@(i+`Vi9YkMWB|Befhi{kt1(}9Wk52!408Osvl zvh`a8$ROz>)cYSUSSz69QjAsx1#<{`wYe;>$j_*e$c@D{Q?pvaStZU&rnkGD6v^-{Cg*~R`cGlz2aI7yacxuAmvRV%L zJ3wa%T#$P*7}%N*;Jp_&3{m`S8Gl9qag+rsitl((8nC73WO1W<4Qqe#b9z<%!+)|0 zVcuzKTp))&HaDaAti%Z(EiZod^4_wV^uxx$N9h~OCLKx)oYMqaDiqK@6q#9eaZ0uU zzn|rgv*j?8q1tEN?C#n$rA6Le-j19RdVaay;Fq+C!O?j#)I}2^Mcj*h%a&{d8`Z zmnC76Nm-9k$K|RwEGc-e{oHpcIu-NatoMvsTZ5{GA1c*HsO`jeV+_Fn`Xn?yP406F z1cu2;ILoz2HA9)j#F~LrYpz*9AHGS+K`n>NbBa!Jv9FB$?dJ1eN=Lc6R^$?)PcR^= ze1m%!S5!rp9-E(%^n;!9Y58DKQ+(lU{$V|t^kQYVe`oP3A;^SSv9sEzp@G%Mb>1j+ zpcMggVhz{+gg8XXTSE1q1(JivuiG7AW6gX3|{l^VC$gl4Kkd} zty?MZh|}6v_7#1(79Qc=weXtcqyP1oC;!h+p`b{a(;LvLG(Yp)1Ci7_YoGc@Q#d>7 zj>ehaC-q>yf5$Fj+6Z3!t|d6Hwn%{|KDx@e_rrGf-6-#WV4jjC!Y8q4WhvSo`Z4k= zt^Y!9%aJ41P?vCj>~8u^wsFx8POtu4!kmX)T?3Qf<5j)@zrQYj^kG8S@l^V>FEBb! zz+h4fwD=ZXn%*!VeX7JJ6eTX46cqmQYbR;14AJ-y`^q#1xo~=yx5sE&)b6*Kd*H27mjxN`GGq zVH?C_UcEd1qp#wvFY<%fgQ*ljzu2PUj^qWzPo_Z|mYprpuCRf#zv zk$k@s6TY@FAjCg6zdvg?JOWktzq%dE{v-Cj9cdniJbbD9l@VPB8i`DC7~Cdh-ejfm zrTaxd1KX8S2x%lOwk0GNG$BFYXnLqDUlj?h;?ZOxFhH)~^TDeQv;6f-%a5bo(`Ski zlLblyo0#@oqzSTt#wmrR@k4zfsOv?zX3#_Dx}A{AsM*4Fb4$y~MSiPfl#UGG@m9%% z#L!S+sE_DHyVv;pd7pv9Kp;%==Ngt@=tEYvPw7~mXMf0imim$=E5_e|zqi)Hnr;Bi z#87E%zU7JLWD7zi*DPKZ4{jfj=cB z7!T?PxhJ9J0i$ko3K1>HS>Lrl-y#o{j2ar(piTgx3z-^sMmL>we66Z>5 z^1L!5o98zRmfy<>-RmEr_EZ-d(Y~m6ie&FqGVmn3o^GCm;7{@DX>PEdz4rFpi&B`# zV3d3HveJc{GgQWR#VZ7fXPT|G`;y);w@*cNe`^H5;EBtf>4vF8oLLXk&b2iC1D38ikO1dQ|W{$GEQ^J1C8(p)LJq^>Fk5Y%e~_*7;H%( zd!ZCKn3W-Vk%oC#iCqeWSO0w{gxL|zY`F%ga{txKImHz#Q^kbKg3nJaO8L0pA5bfn z5~HN5r?GvY;h%%d)le$?+1u>dec34m-$f_(AO;4^(L~DTpdNWeI;2gP34+ z=8Mego!i^aS4ng^8r3!$H_4$X*GN81hF@gBq?9lA6BSK{cBhzT}3c^F10sb@f`gBS^QACL6IGQkbdTDF>uMsp^(^c{N3?~iHJaXX-Wyq zg}ft4g|5mpG+rMn%W_Dof1z-Obs1t*4;ixj>KO=o?KiIe`EFgIGkwK*ZEg7P(M9M% zipR6Iuf2Hv*6CFzi0AToeQp$u6y^2uLcx$OQ(P`AfP+29MTT_h#h$Kpa;Jx$uhaAf z+tUmkV21vflq9xXRNz0#+)Mr~$oA;h6xk`tC1S)-tga%+R2&M&XQ~NRaz^&7Dy>RL zU**p|3v}WLwEmKm*5v|iTGO_a$;JY!4G!-xhY;w7qQk`k3C%sa3bYjcjq;hic2*~* zu$!5;*02FNp<{c1WVWaZ;eDo@XEJ@rWznwat$yw%?n%FNd(-a0D1atbm-B%K}2z0rL~AogBgj?sjckNxK!m{}Lu7!PKd z@iCv2mCwp`Wo7wkG)&SJ>J1;IRaUku((YHKCa8||ACHvlWeyd6o5)BPunH2X|GgO$ z5+jk;{QE(zkE1?n)6RgIBd^oV^wY|fbHNwD@tP>HrV7yKQEw%t=@JoQ-=UO)PL~;m zA9k~4YYdl%Oj&rWAz~a`uRWi%!FStFx5Wgmhd)t2H$aP0{8lC)(B4m-OT}NnuO7DS z^?*dxDs*1%cXRpjl#^{uS*oX#x{a$&Rv6pUm6qNUHt}xzU?oc6dDw;vI6q$%a4AkK z>?5n@X+QNbf1aVr;N|ZxzFJDDGU_pQx3T#R>>mp1ByzsLJrylM7u#(}`+9zpFG)Px zs~4%e-LIg{$LCj6ug+?d@OMu$?AetK?BcFL6%+xwrD5kfc+f9&iJ%Y7sJ&7opfHkw z@ml58V{`BB80sWj<>>pV(3iXM3js-jF^n%Mx^5UDeer+`SiD%ysgl=j`D2C*g{elA#O~TvoJ3rofXH!c9U}iS&A_mEXguD-_ z9=UwD)4#i~rlJK$Nd&A4zC<#JRGjv$yc|9@s_LZcFZ?2Yt-unI2Sm}V3bIUMY)cGh z)ZTrWKUw&cn4iYS234 z8Izbgyh3_&iQLM(naIi{NZg{L!jw!jThL~|=QIINwz3Sv)|ektRnwHU58QMIwSGUe zcIADNn_%0|HL z_ob*nU^prNoZZjII}oRiH=i$P^&p6+*?m@1>^4?BHcu8;p1_Vyvp8Igkji<@`*3eBI`JTC^Lzl6c>I zpWk!yVw{%aK^3Fr|6}c~!s-l`ZBYmTLVyH!3GVJraCdiiw~4#EySuw5xVyW%yZfDF zt-a5=FZb#83-B@N|EH_1sz!}b1L)D*t)p^!SdCG@Lv0rrsCPRUyicKNS%m$uiq+AD zxW;wagRL6+mu>5hhpnzrWlyU@w38+tYEXL!yh7+@DtC9Hrr=8^0Vv(fdw!1+&y z#zx#0tDUsJsac*P)E`f2adRj)QCMo+F4-9?$$M#q%Xpa~4Md6@C@AxZ#IEEl*~WUh zhFyZe=7y%amfieAZVT&7o)l&e7O2nzvLj6sbd`}@xz}B>=EwA&0EK9R?G&}t=$Aq{ z=Dn+a>yI`{%Nu8$W1Td!R)PjbVTr4qocfW+d+4gn5>NXhEdAr|+>xO^&W$TSM-iWH z^PSeKSp})q+gxH6il3RaE+4D!R$#`J$>wGAa%OA#HwLT2_DNKZLa!92j|{@^C2vXa zC2>m%Cs<40!sb73?VU6EdHUWN*p^p97atk#QQkCIXH4JJ1FhD_YimxqTwY0mGYHX# z`J=EXDf%b_J-F{zR#URUA`O@*oF98{s3NJm!`Zzg-u5wFKK?rxKl94!l}l4Q7$rWP@LH-ENDIFM#JaWuXT{nQW&R zM;1i9jw$MEeQ^#*|4LMHh@xe-K_Q*tJ7L{(ON(juoDPj~bak>sY$Bskki*5bHmk?Qy@%oGM3-Le zeh?cD4{6U=6_$zhhLdYwCUKJX=J*pFguAywI(90_U#zZDdJ6O(JP1^?8=_z8kq?ebm3#U%3K<}%a-5u6&m~{M8iD4$Ezwo1YV@-4!^J5J5_bR}?4E8*b7#=&>v#95@BlzZj-QRW8*snPBaZn?+~K=D zo)NWE@GKEEjj6<~R{ilz<^bjLK?{>Lm(Hgc*@)HfkUQX)$I$+^ddkO`IUHc-@$Vqc z#K>TaIvLCX>rSF^zH!V_o$2?geYLE@djke4q`#8&RfOC1b{1+g#|;Ttpr9{}7);~! zqGALwpe-RwU42pzPga5AfUo|VLEDJH{O`& z;@eVUl&3_x&<~yGSllWjUvuH2CkFV~CX#R+EOq??+hI!eQZ#(45f zN{3>jnPtud;E*=sd5wXOV=pi9b6S zT`u}}F}M_N-$EzG58{>apq0f78sb!#F4B3TnlMvIy3E|}KJ97i>^b8xsm-zQe!j;O z8bsMf%wfE3@*3hvbCl{!F6k=Ut4npIV1?rNl|>sDGQNfRwvGW{XM55SppN@#RPQ2T z5*hN-5S^mG;m-UC1fuHMU@_oYaCuYb310AS5rr%hnUP9k*${%3?dlY3k?Tx3p zP(M(EOS9}frv}TTyp8(=o)Mtbf9Z-wXZm;buqX8xUNs8^3hnblupZs01b}~R_U21O zB0=jAL*vn7qUhCz;V?Ezf+P)8IRlQ=Z|}#r434~ZA2jPEVwFZy*xkhzCl1GOJ)=_B zrn?#bvNR4@r4NQ}Jl-EJaR1@rva6^Ib*qM0R&!wnFk^D`bT=|j%J7G2DvoGgF1=q;>wC^^YT==x!qFKEv(~NjnDhYE_AreFm5q? zgtT*C^yeJ?sr0(Aj#vh@e!WNJkznDjvwOZo?T7if=(e&n6e{*{&CFAV3AvuS&B4xC zk}9ki+V;`kl=0Xh{5Z-cGnv2ZgB!ql6E`pU@KN~f>MwvK_PZ*3A7B!?-BWwj-m#_= zT{S1Zi8vDdwtE(tO$#&1I(M{VUA(EyAmL@EoXmW?fy#a5o_Wq$SaK4R$&(QwJI9lo zknGP?dt<>~AGiG9I|r%XOu~0sNbP(#N#C%ol!P@B2fS|fv$0m$XN<9%)|w+8g^qG? z1c2}+<@)Y(&H90ro>3vDe7669oMcvHwSpO#pe27}=je1ObA(NCi;R6G$#I%G$KaP# z^Pf$VOe>@2VecGOzwv*Sj?1T&EI1a?Y=|zWc3?eWo_e>tw;1$`%JL<7I^`j7*d-}G z=`ulb@Bt64t*e!Aedyv)+86o;;)+&)+`!ylNF|Ux2b4)YtLk_g0Vlw-+{$(8 z{e7t}r`=z<3|)5Ro|tl3WCXHw>qS<8t}G_@0DxuqMhj?l;6jwYt*!E6e0YDA!(E2` zBw3$1VbI%M)G6^7O-Uhwfdcyw26AQ-O|xiwjSo);k0WvEmhKq+(2Qf`Dz*3nxQPS0 zTRkkf5gl3IJkr-IKqi$cEt3zMCYqt|M*n4_w3)Q$d@tFKszvvX~x_G!4D$E!w zabcbKV{4U=ps-~#PoG1p|5mTzKz_YHO2deOpUG66UiR8CYYHTiZ#H%nizYZmF=@~E z0f@a{kUO}YKyl4GuA5&|tCOG73c_}Q;RqPGBPc{Kzi*pviWiXj1u6Zuo<*8r@fmt7 z@kTb473K01q*)ZV?ma;tG9b+sIkNcXJRtkrD8U+;rCV>!wR3#IfYOaW%`_a$H=Qa*Nmkz zN8l=06!aX*(8RbP&Uki`H;#msS>qpNj=~v`Rtz8>G5f^!pnX>jHE$b&8tJ}4$4L7XIduR2==S+^Y%J&w%<@0_@5zLNO(m)__$ePaC5of(Ix z-RjpDZ(~g8vf5@M`@$cthR^DB4_HMPtvF0A{3vsk-><5mIYVl@J<^&{_39Fgor&4e z&5ZK4y^{nv@VBWbW#N%A8w`9ZSV<9zG?t^1?7m9&1~HGNyQzyx?pK$VI6oqJKTq?>kniW0&U7fYJaYi4;okEgjeMjYy+xT|Q=4GvW*Grd#dWhOtXD z%DA1f1J;Wr@}F+*q6#ysrvE75P|v;eRg^Si7vM4}1|HHHnzeF9smaTq?9R3^+IA5I zDZt7+5f5czyNKLeH{C0ghDS|m1npkIaQVg4ANChVh6h?t|EFB7PxS5^6jd6?S%Ebc9_fUeeoJ36RBwt|K?4$?>){vM^g7nQe{2 zOrWQu5l5GxuS{Ns^ON5o^@v5$G2a;TDqJHS86zEOi-~LIa7dmlJB{Sb)eqGFqPvRjQEY^?CVea|b-_LhlLm!yX&|FQx01^`-47SST z_E)J&9Gtro!zT;*OZMPX+3C#MWhw-na7@;}r?R56XH-f=fXkFY9>nt#Z`&!!#AUCYY&C0L5mJ$- z7b{v5W&)5j{8_j2C@cI!Y^&rZpvX)SCB(=@$(Wi+BgvI@Tlw~Wq~LS}-{OP8gKuDc z$GI(ydXzk%ByE^JI=4`ANqWJ|8I>we@qE{si*`=ZeYNLQ1>Tayia$}d=`PW@fwG*T ze&rY4`W-$%ng#dCR)y-sr-D0Sc)hsc2ez-A?EwGzt|(sR4i(c_$eV%-qjR$P^Vzfl z=Rh=KGjn0wHR>5u)X!k9n!^BMaFbAK>7e;`2YN=Q!dy4`yB$PPc8F^ZA(rCAW4R)i zvY2scu5S+649EEYnSg~ezAuWg5P03{rWFpt_$iPnja|&w@HI2Bs;Nt}+Qf!0M0m5V zoxN^Lv!m+{BH1b(O`sFeR0&EV5#SMueDLzU^CP7(MxtZG0vd_Ut%UbnFPmC@mxb^L1ue%&W_@;d*J(xB9v{Ko332~3Vb^<{!$ zL#Addy;uV_4^q9QT2dk`7M5-Q37$d4XS2zDtX?k2>?ryR>75*A z=NAIGrQ1qiA(cZ3lFvIRDNEQbq*}^g54JDLkUFfo(vWzEMuEw>RO>1e@mI~>Hl{yHF-3A*gn{kQTn-Hi^X~?n zhiLgKmQfQ}JG!vf-xru(Q;IknnJJB^nv_w)RtQC3us%Bj66laDzJlOp1y?W(US*0rz`9RtHGm*E;&AfLHxL4+P7f~HZL`{Fnaw9ThtYN zRh_Msg%>l=6r3E)F(MWNsBBtTET|+(R+xHftQ6*EGz#L zs?U{>TMiTNIK4orfsPa%u*{(-@gh$EW>~kwW!XsXSGc8Y)8I4q7Wn5+&OU!eO$0Tl zi+qaSN!&bHLuw?SgM*{c%N2AbBK6H?3VB#)i_5S97~7x*m$5moMPQ*iso7Qc5AT^N zIwK|5#4=-^SqR1jJgFdOi+&1z4Xztm;q?|^{9T5;O`Q1aGWi1dd3=rXNbuxoh0oTa zRbe!*S}Wr8R%O~e44E{HQYrVDO1d=aCAKa_R!}I_@>&^)q)E;J2kTFvF;wfB`>*iw zMU=J+iWr5Pa*`2?(a4fV!f$=k)DDjBQ@L=rC!Y0tGB?KlvlBWCg$a2h@=Heb%&=w@ zYN5tKJQ7$@*=tMLSTp1^X3&R6{kreHqX7xA}z^$F#q^)9}ZeDc)ZSce5y8 zg(mDS1~9nenLtn&Au^#zk;{-R@{wcM*2r$kkz$}~24muf@@ep$)G}+x%m%F)kF1GG zqN|fRGsz~Zo1n<8;2y|X=otk#6Z6$54VP~BF)%Pi2=|SQewLY6e5GfTjLkPn?+1?& z2~k8ZvyE;CCLurvM>Keg#$=Y?XM?da=H1^H@z*MeJxjw3${0;&I;FJYJ%rA5Wu(#)Q^fAH=W7gfe65&?dnQ~CduS?P*hnY(c|9=DM2$5JG8 zWnYCEeiby@F5qKo0LPy`SCP@kmRzJ;x@}QwmG^lLf`|ZA9O(<#`z*L@a@akv&!Qyo zA^$;N&ir+e92<_7&u?~1I7bw-+g~zVO<6jvM;>eZZ00U?5YB%EU62nWU`1 zIXPasCj+douPRcD885#l;{EG$Y@!kYMl)gTcPL&>0Wd%4dIXD6v&Ykq;|-Ujk2#iH zj)z{r`BlfN{D+f?{x0fbb09E*y)&0&Xp~Lt6LE(I_A;2M$Au#fKTa4q9GnRfww@Ew z6Zq_^q`}q80B7q~r@{%5L`8Qj@8>!f>|)W&fW(AhciV^H@gq*R{9$l4x}?gQa4$6` zAwGC5Npio7&!U!Y@JDPd%xw#BOWeHj+Xx4ib(uQvB8rU-@N62q1ZEa~9T||*1B<*j znH3Q+T$1xW=!G05tQv0~RUPh%Fc6^oj#1^lp>;~ znUar%N-RATxra%1yT3xUSd%sUr_gP+s3KAw(NVD8DB*CFRxO5Xdr9ehT|R4zk3t*O z_xp>O1W$WmTo3mspG5zW*5L; z4VNdY?M{9vL#|D5>$sc`GxL{ZNr@Dj)ZYx`7&7bQqq?RaktQR?k@q|a%Tw!&mO}Pd zHXX2nH8FIuW`2n)(j+J<&=~4eJnRxm&eL0eV01teeTb~iE|c;RYP1%E(oN;j5>W`N z%Qb8`BR_U@EfAR(QTsL!Bhu@;< zA|`lDcY14X{3>Xu#E))Vr5`M!rYrCv($|ob-V=T7mg9m*BXUttRE~h{QL^yK@h(yR z0I6}~a=y&^jhiUa&BDmAvk)KB;%ACXMHCW~l7%h-#Vk1Ef_7X7OqlTw{L=rh;2V?5 z^;S7kQq3B?4F-|kHWAL5>XHL2$ELbo{neLKc5!h@9+EmfzdP7X*fKZD88c5wZjjf!=(tbi-MSx>uzYEWJkFu5pG&0%wmmTIY>Atb_*uyPP z_2v0;OE+@I=dMp93-e#CGCyxe(HwElE-kV$q@2yZ%mia+KFV57T&S-=OF#t0aZ5P* z&2#lLHKyiKs8M}bPSJngQT@NMN*Nnq0icy$ZhR-ERwkY$>^U5uH5+Q`}{(3xdRh;tR zuJAvLqC zZ=2uu?_AB5uO7}3PoosMMjWaa)EfnyZv`kKC&53~h2o4N6L8tRpU>dq@v3O3i{1e* zMNEmP+$tWm3ijnMrXQD_kfm(`iN78i(vmz{T$YxVOCQd}g)MVBVC8c>O{?D-nPSlO zk*Ae)VGD`7^kQJuty2c)x_Z~fB?xtx?3#^Yg`-%*JHVw9V8l7BJhYWe{T2iJn3$P% z@NM~1dQoa%hcHB7BI(JVX_&q&uEs-61A$1{>ONFMQL>(JJSquLo}j$Is+5_Y7`;kU z5NCYHX50Yd_BPr}Dn6wcuTQ9Fwd8sBk<0nS?+mN5sz7cSk-i7>=N3lQ*m@6z0X1bU9)eGiajvmWFPviNVn2Rky)3?kMR9f6#NpkglZ%y;;QN{I&+izR(C|r$ z{g}KEAN0)#5d8QPqGFbdiQ#A#9Oi}3{=iHZ5X|}rZZwSv>|@XCy&!%h=fPCvZLN=GMkP-zxp9)?_fQ9APBq+v3ANH8Nhoip`Nmlol_BGxLZhxYM z5B|(JOPQA(;y-%HXmt@0Dh+qvbHvij=5q1qBi8G&Sgl^jlLCru z^p8UH`zA%DpSf)!@gAinDi=7i{-%! z?!_yHWMuLzq$3RFZ&k{~1n{8PzXCC0B{GD{MRs$;yehr)GBk+xkitoFP;nELm4eTO z#q;5PI(0V%frbs!^oiWU!*u2Q&En{s^k9h=H3We$dZNTZ6L(!Mwf}`V0)e^UaGhU` zc$BZ&Bk^@d_qVqYuf$LlxgnII;6OXc|e%|IR`uXfo zC~vt>3~%R#(0;~1AstW$^Z26BKDJlqPb8W}+K@86GD>O)>D^1oC+yLT?Z}TN!fJ(4 zq_ghp#O$!?{IN^S&bSuoGzcP;h~O#FiT>|%w*5~Dtg8-ga%C4b_ztq%DOyO z6766GqcXV$5b*@m>H@wTP(H)J{ix%zQ~xMeC|r@0FS9Dw!Lp+a_2n0Lxk$F?y?ZHQ z{&JnWyqO9g?J)ZMiN_8zR5oY41`;#YoIkowjF+>*B1zGo?p|{aOXPgRY*)zKmwF>v zbHSog(zHG8=HB1nK8&J5$^k7>-g2^c9C20HMy6mxJr8dlVy9$jh(;-6b zUBlH_1s2vLWanjEz(@oQ$$(yumrP_R(wFOHUaBf5ipv~js`DCcIWL}NU6o{Anq;X< zu4^NaZ*WL6|A#Wa9!K6(jt2t^C6CAOeNGl6DjE0w&h_uu6%#)g*wI@GflQH{lhqlC zaAnTD4g=lp$+(Q9N=OBlaySl;N(~LS4WgqV`x%NAb_f|RLZsX5Yfi>okEgG5jAM zQ?5KGceMly(%Up-#N~FXY_G*dckX5%cU8DDTanN_mjD%uH)!OiJJD7bWv~g1RbRgg zAc_g%A{i$A{w+XJGVx}P`%Mw|_F?=XYVzgY+B$Rcs>x{?dYLziV^Y$NLcW+TGXC1o zQ$^W>f`UR=hd@W9MIr<{jcR%)^)Th3ro4%{(pXGzE~<9qn1QOo5PEecP!)c)=zH@Gk4U+{ zhslxAkn=S&X9InA6-OoD!ZE|GFRQZ%G|ncGjdR(L9NI-?XYW!p6|9J;DWRqVUQk2` z%`7ZNhY|NsLKOO6f#kQnfm_F|!hnl44#3ewtneN})D^->J2NMkG4Tor(~tecpC_8j z>K{G|x3p(jr&*N=KRtBEK_{P;hH2AD1y5bDXJJ6yc)gD6BLBkX>mgqp;E)Nzy<(|5|XBpc-G}X?&uY0$Ifp z+_JGs14t;w%sj896{|(oM{K1W!cqre;}TUdOED#rA=_A6&|>~BldX@H8nVb#q}qw9 zxX`g<@w&ZQsZD+kJ@ik3;pYTOj_nppFXq|+b*0%krUrAxpJ}LRtpmUL#pI^RcOxEI zNlQxXs^^dX;o(7AzXGLoyC)ZBJ`O)Zilk6JJmjyXQ5x;9h$RiUc;cC=dA@i%>6~&u zf!`A5M09FUFAV)wP#h>Nj)e=WiZ5RRDu$jbuSKz6YTkE%Yb1jD4e4nzNrtni+`D%S zNPS}AxDwM@T(~javSqg-g(t85-Ey+mecCw&f4t*gg)KsPm3hNN1Xj7mXL31OWm(-T z7dmauB76BvTPq#=wzDjNP?<`J968Dq9C++6fYi<%jv`A}TORVt+njEvspgZ)`e)^t z2D(mJkw)Qpm>!FhMT}bZ9BZU^>tg0v5=G0sKw!@kaUua`9>b;gwK}n1O1W@L8b(|G zomj0jCjMjjSL^*`gZ+U4oxFtKLXb>DkTvtYIA+WA%q*{^Icu)xjnH3QAx&q7b1X9_ z=+e2chojlqkq~R#6h?H(NyZFyGh?Q?y8iIl%IV2Z%fTj;z(+JuUi2tvo^cvSVFG{^ zxOzfE0_xMxh6mfV*sljG_-B3X_G#y3pDPgL@OwC@)%Ov75Wu@d8|>CIW_Qbtk-HG#wi`QrEneG3o-UQdD!!CsAJ+cRgAn zY|PzQ0^f@><7nuI?RV<<-aAds0Ix{JjSj!g6ZH}H*B%0&5DNLxXl(S=~>Ynou2gB*(ZiM#v*b|F7`EQFr|DNdJe7%x* zKSf%mE@Y)@gl(L$`09L#-d)jXkzYpNdNrVcsxcyuB7}R&No!T)WaD*pC{Z`pjLeMv zA%N89ISEr;BIXT2J?K&_#20!-zCO92Gt)!fT|Enwnf=$2ZTm2TME>;h5RX5*d@GQt zD5!~fp{I*||Q1{BJMHH3rxor7n5^W3@x=&#q}fmim}RE zS5T-4=G0Z;u0&Jm2OE$Q6cmzER`SLL?1ezuMJ7SDYS2eM?l?(0aQz zs`(Ib*kiuVU{P?ZseqeA0OpT5{>n*H9>)g(IT}C?g+8P6=MY@fs3QveV2tO21KqK7 z=1#l8aQtF~v~iCD1fYDq^x=dSt_6f-2teWB@aW_a$$oqwl#XEJT`VTvsm!QS>%RRX zUfG2cr^0iE^|q-(hfYV2N4m$CrBnx&lkc2kSph6*>U>hyE@-{%8nM1V`yoU~u+P10vO$%i#`27++OhJi21C#M<|=0+Xpm?CP7EmK3W*Hy>07=fmTze}QinQ1 zLoyDqY;D#{d^JER*qzUbG5H1pti?JEoD|2mZPDQ3YHKQ#=Je88d0iN=S$cFylF|2V zkt1W?qz^$6TEwT!*>_45A=Il82v4R&phn)2q4d!98hg+gT>!0m*~+)^1&VMVUg>d| z!HKatOZ|B!kL38pAzuI6ULhi=2`Fa?1B<;EdQLbT*LD}=K3+PXvl=@SxfXknsWN#? zL=ecn%2s$%D-q8%89UF{dxh-y9k`FNE){x^X;&UCvtfY_Fv^mhjnPCQ!(c5(_N6c# z1efLF?>VH8COsNy+$7}M#MB~oDByO5QQ8I|k>YD}q|HOk<oW5m#dZ&lMPxjvdHexX_*GOedacQ%xn(}ja66Y zUU62I(J0@}vwA->udSO&X&-50rB*;8Z0$A?ct)Mz>~efbiL+?0sO%GpcPN5{;qfC3 zNEr($0<7U9$nhV7e*tnT4DN$$@M1J0R`?N;lpyBy-4BUR7%}6KOUTQ7eUJXLzokv zc;xGh>4Jw9NwosbJ@f)MNT6)lD;&OAMa2X=e@k=gfH_8Wc0!}$*+pmiz-PoGmuo!O z!S!}BK+c9b{Fk;&Awv@m29hE0yL8p>eGfaYdSL*=4}R`r1tz(wL&ST(Jc@8O5{^i8 zagQ|m(>yi&GLaqm&x>JwN?yO^%+a8<)|dA|=mr=zi%J9(DA&wnwOqj$+be50BKP(Z7hBnUq$9kiyNOGO%Zr|?C zl99fHxN-`-6Z^cAZEQ^eTp}xl#h^5u z2Q@e~E;p}s*F*mlPm+CqBIb~jO->d4R283Y?Hcq4L-cX3N3KxB#!}A^Q$9&Jzuguh*8(I&XLYcr zKXII{tQnlp^(y!+9xSLAFgTmOV|d5TOAFormu-U>0&`P zZKsFyy&pat?p@hctE_h?L4R9I@qPXV1VoK&nZeC`zMfR31Nc*CTn^$_8$rXn2jT4} z_nfpkE~O4cE%Yt}T7+16SlBy;x*OQrJKuHpxz*9H|C}KZ8T0$f@kCt7F#NKY&#Bsp z2<+l=N*)!5yR`Pu(CO+rB1yH;-5b}VRU*~<&c%&0R>xIdW}V+1_h;wXb=B(eu{HmS0XyZhf!+3m9v_@q^6j@(Vz9F4;IChf zv%Kt(<0$4;_GB$wysFDg50tXt>oxCIodAF`>A*hzH3u;E-yj@p_brYzkQWMbvl-zZ zJ6iW%&K(^m_A{?q%uLLqBOM>FI)GWn;wo!k{gjvSIMUw_&C{dQWmjyP&+5s08p-Z| zBGVH|P8WUfewSMzGpJP?&&J*>_Rb&2 zV}JB&9?zDlU~x9D2eeILBVO4+5nIxwGVRL{p*9*Hw(>A)2Y6vhZr`E++nQv#4}i^& z)HHPAa*aj4??B#vp2zP#?%)mulyvR~72j)(>1~%dW+>q=CFHQ07#eN(7GM0P5c765 z90Z02s}6n&E{Da-knzxCBD7oR88?@3K5?`??U5*-ZT!4y>g5O_y$n&ZYsx)cU8bRU zU6{b~`S+ig1pFYIRtMNuKYLhqhqdbqZ}+&dJ!OJvnrI&$`gIuWM+Y1jchKbkXyUXH zKd?9_4Iei>4^{gP3bqD3+k&BK;Jy_E>l*0=gO!z5Rk0xRxL@S_9%Cl(+>j2dG0cAY-ZAJRxA(C+k$e%vTBkaZ%|2IKkt zIj30Dq^+S+qUkT$=bJhU>E!m4-kLoer<*?R_3JmJdbWXZ}e@mhG_^iD4ioD;N4-qhlXNgFD-J9q9V4Ry#h( zDxRgY5Z?l9CH}-=zt{uSq(nR7xSYMABN5%USGB!1(CPAdJRV2&Omw`9hsrGBLSLVw zAE5dD@uz??M9f}TYU&HY(&*?I*-r2PxB`@X4!IXm;ZOQ_dU7<1ttV|ls?~jY8=HIA zB7Sh;l1`)mkjS(T=ty+IpH!J%Hq$`PxNnDr@d@0tCx$_-T&0nJh}(Ow5>BVi+q+2V z0@V=vR@M719Zv?g^=l`1=>3Z51yX#4L~69m0YJ!%VJ|(XsLM-SJ zW-=ck3#{hb3&TDnv#gp65_#H7;iIcPQKWqsihg= z4(_kl#~p{1FHPcu-WFa&mdX?M!P*`K-JH@d&3>a zy*u6wRMQP}zkPSAq_ANznR%@`h`Hc-rAjH0{1M*isGQ@9p$bioXq9a$ik=4bRD_9f z{)-@wipT5ezjz{h2NBLZ;Yw?^2Qnj?%I1!y-xlNqCCds_-ApUt=9GSwto=T_l>K+l z$rK6F$TkfoUz%2qA@Ww!V4M;QKMJS@02DO*{bpRa;q#k}jG zR<>zZ8fe~HMbT6SDHWY$xjpE!l%f(^wwAir`_LvSW3B^zyl^tKuZ{5Mu~TwZl=Rpg zc=0B`3q&&P*9JXLhJ}h>;Lm2EcBflwf2a4cJmKlu8XqGToSw|am|7nuZofICkG_?4 zNf834dVpxcrc;>#QCo=lu3x?%$okLK-+>_l%<3)7scDY&Fe%HP%;mQ5&8l_Hd#%IS z|Emh|mU8H>AKh=0_#P_O@&11B_w}VGs2Q@I83huD%j4?e)=et1QRR)D?f$nWC;`D+ zDm!c#&fF{$n(X~nr0?9t;Vo=EG$Z=Gb0T#NiYq{`=jH;ZmM!76?yW39T_bXq*Z?GDOX`@#KTMEH?+flpi z{)ZY58v2})j|w3XDCjhZQppaB^~}VchXTfRx#Yzp~RAe}1Gr{Z>HY=Emv*^j*afs(}*E`8RgE!PH!il#)ihjxsl}c-vS^DY4re*Y7DlcCF)H2f&Q=# z9cbDVu%qo^nfeHXHmM%XNyo3ZNR?Ud){iS({BL>|qoy3m$8XDv^}n9VPfg=W2U5jm7woZ&=Pm5z}YHiAW7NqmB00bQZR3w7_!f|k}>EwG3Vq-I5%b@Kvh%YXZ z!l>HvA6POfa%+KvBg0~oaXtP0NGq~wKdz`K7+4s*I*7)W{{Ci~PE?xzI^RiPlC+<3 z(5+4;eFFO%I22*BX`M$V#kt$_rGn}KpYf4lX&3>`e^;q&#Ei`^mR3f!oDTcP1vk|Q zIGgvYDK}p4PFJNtZX3X2|EEX4C)~hMS{4Q&O;8|tff~q;9tYcP7v_3bkfS4PzfcCA z_kd?LsO3$rW_A?57yD%2&At0F+44n@%azXi8Qm%kWf^yqJuodd(pWVu1L&XD_gDQL z-Yx$yACqhmBuf>7Mc;Cjp)YJe;5ahgx5fu_?MeBObUa=}XLyIXjYQ4;V$)oZuO&L- zT`Kji^5|xc{p)HG64N;{ypgC28B3W*)0Asv|8zbCApFQQ$5%bGlpvRTmsu~zw=LgI zThm0W%#bXzaU|K-2GX9}U1-p6wos9)0U-YT9F=;l4Y6mn(vH91Ye8Ym2?Xwd`%3d6 z+s$CLp+w|u$c!vs$J_qJ433_Su-fyO0h&}MmAUg}g7yJ$s+mp_C@GJ!BhoUsfMT0h zWSuLiV~8OJ1neTmzyD6JTT1q>FXh9lN9{)dyJVRDO`i!Mk{jdb;usBZA4Sv7wM@v_ zap=>rF(RUT%12#jzMO;|NE+Fm`@#RhV=nIF6fMNtlm|=&juhr(`c-_?vY8lD+Da2K zX8E^}F(dMK%R2av8qW4Ucu?XQ1tyX5?cUJpub@(W%vNHvUB(Hp)7UFRE?tUX-o(-* zAPQT~X6s70Thc3vE%vIgFiyUheck&VG4aE~GPV@uoT8af?ubuf45Hkr&WPW)O;S&- z?wEWHAj&m)znF6YX+&MvGlz&yXDYIqG-l)@bep{=a;KWDZg}`|kyP;}x5X(@6tV)~ z+aeK@UfY)fV%Zc3{FoZ(r$dh`mhx0w`k1ZT3r#G((bJ)^*Q(49?^0iGG&+5bCw|0S z?z|QTh5zFXfeS_QBg79n9tdWg&mo+I`o9x1KE1#ai^H0!K~zHR_Lvm)UkRj1lt#4Z zKuQ69Ev(Xk9efaHjCiHlWwa)&VOugE!$5$wh6XS+ zK;Z#BXawvoJ8n`G#E4z4`YAOWeD&!WpKLCMD8Z_N_@@OtlM%)!-ZW==pZU>SpyUHBCdy|w@MsZV;9d8J#)o|yf_-qr zf!WRfV`*hJ6&{KXo{$_+RdZ=dJKoRdO!IHBtw?S*Md8ikvf@Bkg~PeMzDYzq9f)Hp$2Jl`W#o|u!W{p3o?jhc?cOPdM>?Xs zafAr8Rpd2^qHO|T!06<)yEnzqDQ9(U@L9>yv%PhL5vwXIyU~yAbp5j7lZt$ZEOtY| zHA;ft{AXz(jQ#6+Qm$L{G(a@=A$0#O3!vp)y+IPUZl>^+9n9Cp6_&0x+?dx7v2Tyk zl!_5WHy-yJ>t2)Eo1-0!GO@q3ay*FRpsdsI^Gf?pphicSlIwB`MQNuud+T-&eEUi@ zU_sbtT0Vms#_`(^@J++pm5VNGBRI_e-?)NgBCN@S81EsA5X#NLxd(%(xAyCM~I7OV}xnNb}GTK`{kS&tajL?4VA5Y#h(=7#-93L8e1Me1U=N+_2v$x~WrA@PK zarmEDfWHJmIdK4Ag_Dkt%p|Fa#V*%=O?zt(Z!>MPNV87y*=E+&_DjLtoeuxM<)8iL z!2cP1$-V!m{U~w{favFVgo6z2-A19tYCr9nI^^5!!jH$UBU^GBD)KZq>Y2`OV9)|M zT-G~XI=El?9d?wJG#{@I0?|{kZcHR?LHd=ecQZh}?ALVB^gdhXgQPyYp9jY$kV?QKa7S*NFh^KL<>Gm=&pa3)X!spm3u#>18cvM&)@M_5w)jF=*6q2yVh;*`v2| zI?=AuN>q4z*PvS|z#AC(a=F4c0n3vi!S$yLS5t-MEaT8uDa^(Ra2+lVew2h#`pCvH z%4+X%Lil&*&)xjpg)f%O{5pWxE8UFUdgW<^S7bIi2{lQ<>qfBe#k%UHe9P%94J6Gd&r|lMNihG@RzO(C82VLT zK)yO^<5N!1H|JMQ(lU`Ym#Fo3D$=K_YysO~=^Px%VFZ$>_F*bYbjSGaWRTd|Sfp9k zc2K&2Tc($R8SqZ!p?i)T!sOOgcDx=CE?qPj_#P1BwO0vEO{&CH5fU?ds|_kIJtsYg zZTr3k$A(sIS$Xx3J3x?xWH`^eS593~$NkNby~_tO{(p9a#u+Zn?5w&b)mGX|t$DAF z_ebdU%OBjmJ{4N5CQHMjuXVx*5Y~^q>OXT{^R#;vSE$*luPRV8u(%4(*jw&h;#*EO z+va1@Yqk(^X9|5d#}}cg^?n@= zq?k!L71C)}9=hXn{3)3T^xP~&VIx>|ThL?DR@=T|2z+iROVVkeD9|OKcc?vsIEbu+ zH)7*w*5}>8J5#ht69Q^v?O`M3-Eh?QZxp~mw&N?;Lz2d%>Ml!U>MQw+6fs|%(4XN6 zwIz1^TL2!=#rm5Z6rfmUZ;brvhKaX;x`wRpgRNl!Pfkr?ju%;zps{GQ(Fx8^5#&~> zAmAj6RNKU9AEv79;py_;`m^7~tJD5tWBr0TlIj0p?X1Gu_}*v@r9dfGptu!xcekQJ zio3hJyB7^k@#6086o+8No#O5u?4 z!zzVzgxyIBI}sH6z4#4B5s1OlBZw(v_WqziYgJ*fxV0vB5oG${3TI-eOM|h(nQ{FL zla}XqBKt$U#L)fqY&#~Q z<>npL8_=LN{X5dv`252%700zH~)n%bO)4wc8(UHEms5TV`10*i3X@# zP3BMccBFPSHu{g2y*^tBI{EGI_lXp&c@C!hyLow$u6bfvP=yPYZ{z^EI)ax&kA>Ys zrkTt^KtNP&@|^1rjHUfe)RWyhbrio9Dh}5Jz7NNXLTs2=8$p>yIwtDybKFgKUyt`j zfKl~3`X{>Kn?W&)Zajzcu8(d`VaC@w6+Uh+Zin5+8w`#k&u*{0@1YdZ9=_u&^*pe& zTT)bY!NnQoB%OJv%)+t4H(m1jik0-cJAg^TagK zEo7#7*vguBT;=2HKR+=Y`s?02OX-0#>UCg#``h?&oiq-8E%-e=X>AFzHQ}0&;BJ&{ z_jcBeElk%+)8++%5$@}z2TI}3b3KjMUOOAQ?7PwUjgO}BeO#Fc6pmew&+csjuI~4Q zo*Aq(3fk`2#Otd~_HaDW>mD5%&eQM-1wxt=H)u}lCAv8Q>AC8VsF@zc7h%Dj_&f)ub^NK%Im$yk^xW4 z1SZk$3U6zBD>XN(8$SG4>W_Cv?5Hlb+gHKOBT+8nr}|BVUB91giw?qfwG-=VWttrt z*(IPZKI7KYucke7nFm+vXe)i*TUU&6<5lsDB(RH#d)(by`{p_|zIIf}dv@o@ZV7T-4hj z??uW16ZYNKuZl>U-(o8F_qsQ|2EI4?ySMp4U+2?QjB6 zo0E~(-0y=Qx+R>r$RVLG{yO|R60@XK@>%uA#sbF61wyYKVdCd`&E^^Dc>aXWAMisY zQHZ0nO^YUwb||xCetve))EPS$bl%sZmRH+YB;MkP2G_8%kWia0!H8Ns~;X z#GW^j?@5&7x?n*pEnTH(5Ypgm$`P>c?>K_u7w4r7AXc3-+r?^X+q5X5GvYX%+MP5{ z*U@;~W3QH`+n$O(XF5+4_ryVcJGg#B{;Z?-7Q0Y@GvmJ3*2H7U?gJWO%kjYSx!-*F zJ@ZZwg#R+~%UYX%F8^YE(a|B8>HGxj-a%#C{<7D`9NL%H*O8-8MWE~9a>t$XtIs@y zNF0T6-1(1YE&x#~#FEZg!iKvQ8d?FXT`=X&w`V+VknzDsVwBe%958IK90|ybV|y*+ z1lz<;??Njw&OChPT=Y6mk$k%M7INB?ubTdF(m@Lw{#G05^})%R9o2ShESKD60=TbD z06rjkg`c3Xf}okxGXk8S4L@3`)f7qLBH3aYm<)Os0&hmw!d4Eq_QS5h1_GI6;CA`A z_(`1I(e@lh+QYuI2LgDK7Zzpiz1^*78K>XQOvm@C4`cI)eG7=$-jg;d4BCJ*dYu5u zz)Fn(Ijrm_sN=bZQ#n7^=s`KhKcr^?ihBoVedy>;Z@utB9WSF?n@9`t zpJonVty42U+Drfdj3UZm<9J`5K8B+n`zh#N$=s|cSFLlDF4&Y?&k5_Q=%gp63ibI< z@0N3+C%)<2+{qdni`jf~tEo@JWPY5SZGe&V6PaYx`}L~{VQ6CeBOTy-JIn74b;F+w zt3q@J)`l0kH{SlmL|1gH%v7>=G!i40l<^~J{vp6oflrPVCA&zYqZeGs04{p6nVE!q zUy$+ovZt7~%Hx9KQ|m^to}B!P@dhcV;JYSY^-n5MNJrrgm*k}*WGfku`oGP*RQMp2 zKejh`&{ns57X^Rk4pPQB&>UjiG4lF8TALj_S+(Kg#sRcAYP@U);O|OWZ|I1hKlmiS z{-G;?JueBmq2A3Mxd_$Q(OzUv*zV0o{Tx`7O|p@tnzBE4Qy9rMIr+3X>B&%JzuCN< z`b_x2LyMcIY39DG-H6y{Ys0{bG8^`C5xtRv$D$eZdg&BZ4p;O5ifLq+$mN(y^TDfg zC;Dz$*2MjFiLv|A>43&az-?X-CZ!%x8f5u{jW;<8uI&?0Io0s&z=hHZw=^lR!BYfZ z@Lcm{ptG&N{U8}LY*?0mIO*-)a`3$9BMfop@rKVvw>iE{~Ko1Z-MJCW%%8t42jmg>dk^HV;CeiaaCbB(LZr+ok@G&WC}#Yo+@F*GOx z92#ia@U-u;GqHFW@9LZ6SsaCf$$5hW=wuw=4pK}_`t=4Hn~FWK94hw>UB}swwDpFx z@U3$B>&@m+Zz-NLcjig)H3$wVSS@#gN}DeziUz|V(S_L(PKytjru)IA*kG1dWkvox%PCzpeSo@gw>+!Z813pQE}z5R^R@lm&_G}4*JVh?Yjrgh2v+;{%=NJvzt9vl3%m^9 z^?F3?uLo#xI9!9RKe4U+T^|jY%FErzS_Z2cZf2NFwU&`{u&CkJbcDKPbelLu| zK%KM5@b8^o$D-K5BDJq@IA4_#gV}5USseP;ZNkKa%H|3i^>LyYjzR@OZ%T5wsY4){ zJr}!E+hQV|lgXT;&aLZ5!92OY`iPtzQONptc0v(ab_f1!I6-@jnyb#J?@Wt8dtK>8 zVMsUxKz8zhQ~Ca-F-^N**imu|vwje{P6k-j!3sKJUhfvbLYZ)9Zf98H@MKW0nS`r` z$XH=`E5-anAet9%N4o!rE_-&N2fDLMw}-#3>v`ZYdGoE7ZrQZ>KP{kJ%Wz#=`5pht zy1wsl+m&bG;7*zn3uAzmr-qGLamDeJ{eW__B$u!oeC=3mremFpQK$iwANNndQ<%_TXrZlm3qw1q#P$sRFAE=xb?bZo9OI zO{G{KsJWs2yDV9UA*OLeNoqC^&*84bU7`2di_lO%AsmUrpe@zs#NA_(O08WdttMvs z(Hg?#{z~7At5SUGCCJ^5f`83hgx`wE*iBMSASN-=AB6C75l(ePuF?OVe!eWAbuWkb z8xMiqZShsyntR7w_4ZsI(5rgVaBjHIly4u!LOy#0(wuH3v}Z#ZCEaCj1xcoCVLC4( zx=-^1!&nVD@9KIccd!b)Vp^GlD;5vyY6e^a=7);}7iG+kL6$B47H;xP~ z3@m8Kn_nz=Nlb%L2!m)AT_JRa4pWJtG?*7ZNX7b!?v|F@(&19RjfqZvp+^(bA7x=> zw&K_m;(5zzcR2Ku#sz|WCw|YrH6lQoGYdQWXLWUiIEZRYa&7#T z))at`gv@b(K_+G_?W)?DjU(`D>mcOwB}95loS$PV$^kihhzTzg8u&Xrd$dwH|Atrs z*Mc%H_Wu*@IcG)~r`|A=KRl3&*g(4#6dk<(YcKxt=iOT9pX<<=hc~3Y zAv^dK86J(7qsx}nlvP_i*qE5-L5b|0v>F&de0D(T=&(D#e76RD2y&bWNni6oLc^`LQM1958B4chTA4?Wp`HFV}|1O zI{4`qX%FOMy=$mf_ucjOElEQgGDzY`*?oY@>O_p zr9^!bI~R-H+t2EMsEEJq*E}6U&;lq9foFN&zlzpskQNy**Bscq0U3fvQe-ITab-E% z1)5Bih$6m{qf3*|j%gUtcvTpr#R@?&Yua#T4A_{b1s0>U2>%^tYtgatL35zl5B7h5 z>^FFTpc|D!!v=|z=cg@4!)J!S2LvUMO0@+C|L@;_e-!Zlf0U{IXlmteA1Z38z53@! zu63l5BqxNj=-&}N{*JuoA<$?<|L+TbK0#p_^wwf@rz9oWtzZ1Uo1CwD_K&K5b~WzX zn+z2tu_BW`_tfH}Zc3K6ZNn)H;q?g9`&SY9_X$1QkUHAt@BA`9JI218dxEV)7Q<%{ z{z7$&TVX(W zp&H$(K~NCnDYaRLb{bfp))@$%z2g&;RJzt@_B>dR-$?A_#GN-bYW6mjCD?S2rq5 z6$0n}Vw?m=4z8JTM-f=9ub$Ot=o|5i7lRz&-VRMzPJp2~kAJRv6YUhIihAYGe z#WMIBizP_^Va#090VQ!HE|9y|z4sG!=}2p%zxT`J7+|ZoMNM+|(_vnB_Qij7{U?|I zgmKY^_IX@Bg*-N@h%xHQbvp^<&mmqTM$SyL5eaw|;0gUnz_sz1W#eW+oGfwq4tgI%tL1?X4i2BRgNjKTW3t-tBkdbxkdBZfk zH^fEw9%>Eu=?})+Ue<>u$y2k%qMhsZ;G$SO9;>sx3z`ov$xiU$DFf#`uT!sU;~9h8 z?e8V*(!ZA(13x($9r|^YOJ1xQz4Dx zh`tCkRx7+!T#sH>vUW-|Xu)a}WPXg=uXwNCPrD+U6 zoJ@ZjRK(wFaT?$9fp@f1XG#&f{SZlVsxLI%Z@>$v78{2UzNC3YlJ2dg{(GoNY8pT$ zKbSG1z19_a7nPr7M}v`+a}w4!OQJG9P4%!ZLVHA=eDr?N8E2QA-^yvxb2+Ptneu0~ zvT*d+#t;1;HF`wmTWY-Vb=QWh3tNhbWL0Whbm0*Z5k9GtL&dFwI}a0cbRS~y=5jvn zBjfMJ%6al|V`oPoD4=!XNj4Y6o)bhdef9gLEcXp$0hsq2rZ#q=;K8KQ@ZIHSd?;a2 zAyC~ku?)Q3PTui8qPaRJP%g!KM4q0j+aFD%(A!CR+L^2xKFfSi@m73Y*CTOs|7M+3 z_;oB@lp{`3znWs`VA8X}{yMw7IOSW__8BzV)ogNO3`}Aa=12*9;+|XaH{NiCSZ?&( zHSO%XRrz5abkg?rTLjZ(z)FFNkYCZ(pUOSMs_1IH69FzI(gRRuO8@H5^Q5k*&Y^WL zaX0-rOCiRzQ)%;49zOb99X-X|;){vHZvZdN?Yb)&#qEC$ViX#m74czDBd= zDGb520>rfVA@gR5^JZk9gjM{M zkW@h=CiBJyTvodt3!#Y`%AY^1I$b{Ym$bq}VyJy3pc6|`-hawVHy)xMGEm9(p~pnl z#W@LbGQ#Spy(=489cJ^-1aIn2_HF})!VB4J%P|MX?oeJzm+$lYA`r}*yfgmH%+UY_ znFPYt`JW}P9#8c`pVm=$ispi}vO3Jh&llBroN-bxOf@=MQC;G*>f9aeumrd$ArI+0 zYzqtTAjZ-dqa7PX9Fhfl+R?9=rz0p!H_i_|Gl1HltIQV+e=il6FY@zt(bWv2Ypo{Z zX(1tO+UAu)g(M?a_#=bA!WD}31TcBxz0EgPtdry$(zF)}WCeV{V-kM@+3js9RAru2 zu8Zt>uZJ$BQrW!a^VM3MIm{O&&8sMj3B1e=Je4%QE5+~GL`h}iC0|*$Ffp<1Rc6gD zgf(!qG$9IL`}))F?*BXzfOl%3SgBZJ;hKLRLcm0PXE*yO)P-6l_$hJ4X+)`aeh2o| z;aPUpC$(KDbS&>C!|@8i%=D-Q{Y@HcfIBJzj6%M_TT3a;V74DmL3fl ze4GPZyo1J{el*{~;}a84Ox+I852+l3!xQ6u{#jX1O+R9t&@13&Zp$V7+=#9Y%AH0n zTL62mjm_d)e1u&3n`E8bD7&WEpH0nwid4BV>(+G>#&l^gjC9ufVPFNK#DjgountU>~6bNqzl_Aw+^QcsF6JCN2rdW*77$ z7m;18`E!IS^HM8nN0 z;y%cOUd2yOT(&yNQJrtjQkzO4rscTnpr3N|08~BbMRwlF^Oeo&wOXqjWx?(X;frnt=UzDWHWU9{$FAFVyMjSo?y z&)jDp;9;ab&3fjAl)m{>Ae%aalW0%_ev4Kj@L40+hwD_211|hYQli_qlwoP_G*-zk z+Ex9E%}!%yRAw=mXD-dh0N%fx=a40Ef>;OaN4i9v4!^LdyPDDlT&uJqSy6nAj&>!8)>EPO8Ob)g8 z_falKk(}5Sd3X&;PY7~ zhG%Y*XYB8i`BQu5WdWLq%j-uh%Ou5%p|SBHk43;>{nFB#mgX%dC+kL~Ep&^NVYa!Ut&kR==%ecIrsqac-xSlz(#n}n!=PHDFO_aZCtBkp z-l}j9YbDTTSCgX3>}_-}2Dv=@)?;1_=RRR*g1Pl%P~>y)nzVl88^zM|VX*p%zniqb zpBpZ{n$CzLWYtLJ@6RAr*G+5Vc(mFqd*uOGET~0$KM+#|HIf4mT#HpRf+RK_o^~_# zo^J-jI!AtG41Gb|7{*A8cjC97hmBFs)Kwl9t-?~k65!dv^@EB5WQ8Y&k5 z9Z2g95ityy*w|;pZ&zw*7uo2y=XT4$!3jM^6FK@AZR*N-CCoh|ZziF;)2`Z4CriBY z@)8Lhef~ynjS8!=cT4erkD%Stil5RiWB_lS@WasY%Epw}Ul?R51bq6O3w)bHvU-0c zN9~&<%ks;=CsCfm$zzFo@Q70zwSM_~m7%oWnFUhb9GSYky#|LkV^hU0SYfrMrk$== zv*|GmcAe$a+urFdNrIm{iL1mSb9>p{68CaluQO1P?$TIjykEkdX6$5c){Al;ukWjp zvi{app@p$clJvhcKg^aU?HHGK@LWe6g4R91sMV{V(KJXJ%CpSZF_vBBX%a+(nB7A< zIA7v3y;Qqi`0GbxW&7zKGOkJ$M}$CgOs<8+h-L9|4&sQGXK{u*qYWGyFUw4PIeFi@ zaiRkIY!nUSb%sBD&rQXn=eJ5EJwD%GZjQ5YelHgbLXXuEX)+!x@qOOP`ADX>p-kp4 z=*%nNsA}CU*Yq`DV8n=%lwDMo^Wb-o2d%0av`Z4)FhdQQ^;*!iYWawn&j3G*}7Un%L~ zvc>3hgK{Og`!)LxOg@X?A&KcDAa(uC5H}VPNOZNhSNMY_J^Ou>2RC0OKEriXmwc<3 zGFgaey)a)J>42sS)L6H$y2;L}!Afrkq4z5*N~TOV*n2W-20u&tZGQgR{iAbrKRrT3 zB}*Ec{u;%PSPV{{li}pdJiej%^VXmf-xv72*-FEw^H0dizWcN0Lv|Ol*KOF>p0s$( zOW1{!|elfa?~1zsJ%_Z)dGi4Rd|g5)bR) z^lNvgGm45w4{N%5gJk8A>l)Zr@ZiLxHX$?r;3RggG9aa2XJov!PKcbIs1e$JBjQ8W zD>wO`mHfoqkGLA*WPK>e1Dlt!yhzGtw7NGL61xLnpM$GhrqG-cz%nDrYDB>a`jEr* z9}%F5GIjftpXO+GCCyyN9xUB@{m%CLRmKs%6dO57H+wiPcPczK=PDK%jd~O7-cC`? zP47wMl<@~)xdb;sTzjsQA~^5dyz}+Ec8gwf`${=UruTA<>ir-&sjk#GS>yoXUE*Q6 z7!7oFshB|Zt0(i8$d8EUgosf+syloOljuv2aBUE{!N;gpN!M%d;`#n~J3Y5O23B=k z$ANt+|C7TT85|CuwDcuwXe9K%<})wuwGCJ;Y`7bDKEIunzqGZ8ug*wteZSYM)R|@= zXyQlOHAyjMwT|_1(dqnj2~c}>{!Qqhw7^4|rc6V4{d_@s4lES%lyX<;YhmubsQSy( z4ld4t`P;ZVkK6fI5Q9@6XV&WyEM0VAVzV$)%tOpkepPP1$n<;(5nb>fd{gho2qedgpst$S*reLll@ZQm@TTd1Bz@ zHvyYACSY)Z5PPKRjWqT%HfK~_+EhC~Pdb^7g z{e%GP>b;T%pl;s#w_DB*CcIgvPruV>5o+;I4hCz3^@m}MatDg9WAa+7S|BwZWffrkLSb*-?L6pX&fb0Xlj6{BsU(y3k; zK%8O>AH$Orj{!lOB*vRCQE z*s?;L=K7S64Q%Axi+4lzk)* z@@_I7>{hsp|0XB_His5SgV0=!F_dQw z3!KP}6m?JYL+Z_6U!T%z<9}`V7w_$2-!#=UG`lx6``hgdW9#Fxtq%|XAc2SO!N})5 zt0b{bD3*M|KU{l;kOVYO@5S_XaAwWQfT12$EuSBJ!x*uRjZ5$0zQWlH#b8FC+hlP+ zX1unapQb1TB-i!R+$1@DzQHIgYJ2_lJc%Wc~Fv9|a82Muy!K9g3+t^N3SV!~@xekan;rPmr~}5tceJ zR#6V0-*2j8?~?mqUdh#tWDb||zyG_!|Fu#-;2O}kFhU~u({3;k-Xp8V+^V8SwB+WV z-5kzfCot||W6jSmAcTr`Nfiw3rs3fO$d!Cx!~1F*8%^tRP$RFcXfr+GD0Kwb;(qmP z2b+&{qBWUZX+b-xxfgYOhtHb`FdqRRYhPe+V6@bN`c;J_;auf=fl+zH8y7Ld6e!a| z_IN>mj|IvD=`U87|F~fVRx9YXO5=NBbxo}VJ({wN29E#USe0&jS()`$C4?p@KtDQX zhOL8(#$x#*L@*F2kFPIPG~sdZ z98;cIU$2=yeQt!K#s*S&0Ng*%EChH-okbH+s6-wwqg*y!j~D6XENko88IHqq%wjkp z4dpTY>6Q+ib6zm%`-7CsP1)Bm|Az|_tY3C^cD}m0kl_dy8!TQcML#I24uQ&RjEyd* zO9W2M&rkI99PEwbYaGN9y`Z;dI{9EB9yz*H1@ag<3&Z@YP(Ydl;^jZ}7)7Xv+5k+1 zN{_1>~fLFJvZ* z_<@8tP+my)AnSh)78h(@@_^bG$PYMDZ;dSxCRK^~68F)+T4rbk6%}1gh-+wO3gNG1 zH&-`H99b1TUiM|{6TR91I^3(Zg@uZm+Jq5v3=*;iJ*QaYjR(KYpMk5C0i%f0a}6c( z%F@zS=l$5++|7$kvL6Iki6cs~{uId{2A-|LvT4R5V4(!w!yn6Qg#9!2XQM6K_r*&U zh{k_aeK8tLL)PBs_AlCP`2{D>PbrC(t(MAmJQ0=yVj}t54ZwN}s>Vb(`b-kpjReQ` zGGDp8%*z;FKDmpFk8{zYgM#`7v^6pqHgl>)Tbv#K(f4O|eqOJ`<2Qtv`S$v9d+Vxk zAhWB$yFN5%+M!4^tMqRsLB_9cxSLkM0D7quy&^%K#-ixg^=QxU94lU#r2NIX4^oE% z!G#ewo9P|rk&nCQOLAfm4-i}pDJCSXJd76nZCsR2{9WLm!43aJZX=fPk$$u#*&^sf z)3WM?W*~+BC^Z8U2P^ADw?3r_^XTYkU0vN!3_cZlgatmU7)tz75FSeu=;yqI=)b81 zX$%mz0778_l8;j9<9bP}2l0&C4p#i0R|)i;t2sQq5g$yscgnXCeYrbfDmoxgrL2#( zub7Bds*?NDUYK-xUbOT!%e#)A1XwGx8r98#B23CKoG_X{GVU8W_iHuaha*}rZI$f1N<)I+7j6@E26N*yq$S*qky z1TwolnNAJPwR%qq$_#{CzePDtH{+U}Ksv(@_)F4qV9^c5u9X`kD$6R$s;bb~3f#;j z`gBjIqVdRWY=-HmtM;M@y^b>+S~ycWkKcFFSzDvq3EEWbZnXF*LxS4Wy2}oS`)gDJ zuB}O<|EbxK4j0X$@pl^Icc6LK4=liurL7L;?K^+iXCn-@Ydm6`vSPeY_9Lf^bgXw)B8#hxAeTAm{7?;-h2gwDqwy zq!uz0CtciQRGUr?O1hvxXMXqJR1IsA3!+G&HSaX6Uv^`d?^($bJ9zQ&8?i@K{(Iuz zpT0$7+CYA-@IcXW_bV7QCG6j#y&+AeLukw3Ngxp0m7NxooZHGXS&*8Y20J+wGQN51 z?rnE+Au`d#31J_7{0+bl#69{_`k|=z@9hTiYWrmSxyR|+9&y`GyJu$DGw_z&>#e`< z^ZOFeefxh}03>ojIKzK{G*E?f+5$L0qEUKxGzVH8bGa%ZVf3}-w&4s14df!l$B}%J zdVedW!GtwyB*qlGvQU(2%LKC`$Vq?#KLU?#{i#i<_Weo>NA~~y@&I#S6N15jHe-D! z5%9W#YKqTaWeqYeUC=dxSjk0;2vP`kLo|@~q=0^u;0oy2&Rb-pAM`~@14%U+q@2p5 zb8C`FN-W-3{MEDNAZxNC!=L6?TmW^bUEyjSkn}t=>{O{@Sr?6ZN9o`Mt zWp5Q9gr;j%KG6EA#>i8fmotw|T z92+iTyQ0YuC7rHf`d*vCy|lg6-46rRIuurhAbnKM=UrdvMPO{wWRIkimJAAwVpuVw zH0ol}V3u(3)9YK2iVDigj)2zgnun=$Fc24=*Kfc^{h)a!;Z{C(kdeB!;NJ%0Am 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 literal 14573 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 diff --git a/public/screenshot-540x720.png b/public/screenshot-540x720.png index 35ebaa39bbe0658ff2ae10ebe1952e42dfab5e70..fad39afc06fb99e1d398f4ffd5aaaae5a16a0b89 100644 GIT binary patch literal 48702 zcmcGV^;cWL*Y0b$yA~~OE$$R3?yiO6?gW<>cPZ}0wYWITw<;k<{Tgx&8^XuYdkqN!B|c*Tl)u<3FEV|4mQNq4cyg24w0G zY_=&h31sSTw2aIl*b>~q1^;Pq{XaKig0Nk|OU=)ld>a`lnVDhWfB$}3<$BfncW4(d zCtC5Ac0I5YzRUH~EIqJr3=J=ksQAF3oa=3Vg%()-I%Ll)H1=olq~>fI+C{>#@K-}2 zncA35w;cdG-&Z0tAwk<@)z{`NaJ`ya4$t#?iSOne8R0yQ1GO)Iw7k=GuWRQct- z2FL#XKKtt}*J()~`pL_hJFE#E zM*xHtk712X9xsc@xaMpF@O)fc=W>veJj1oFSmzQ3f0Mxbe)^AZ3G#kDU-n!To4tb1 z*E!^qGPilQ@IU&kcI}>%TwYx#JwN%STNiE=z2oBK5Ud>0c)^Tn~I4?REeOA;lCvE|zo$L~VBPDz8%EFK5Ti1~HdrD4i$HhROJu|)iNZ=aGGC|4TpsAyOU*4$o9X-t{t z`+}qde!^8s6EFI(vrRh`VxjAFf1bq=!6{?(YSfuLr5LfnhfXPE>7}i`z=xLhapU@6 zKq0kOew=h(icZQ{Xys{^qx$-*S7*BiPVslVu9u7vEKFeCrazV_pl{qWmed6ex7+B# zzcO{4(4VJL>UuE3HPUr5qcwVVX@%PDjWZxuEOsH9kW?kVBE%OmoF;uUjLxizs2|7rtgK_+mT}_r3aRO>_>H zSzVy`)2j;R@a6P3LUiCiB((deZ))P7Nll8A3lj~=6cBi?LS$YbCvA}VxH#O9WZwrL4i@^9O^?yr^k@+@BF%QvQD=mOj zhKmQL0`xDWvB)3SMNg$!`O1uSG#P1ZL%N>kx)6h_^{v~S18x2|sV4twi4k?VYNQHj zRe~PR7ZscKg+^b3srlC`U(XC$AcV!in<9lXo4Fa#Ron1xqti7mSRPx!*sp9&eyPN{ zDhhRFe5qtZO-xDwQR_ou!>gy;T|RCNWEV=tA*ssZnR@S}m8Qbux$;m1lO|2u1xCQ6 zm$~`4hSh|n)d4@K)@^ZPw$x1O2>aq@SM)uM0rO)<$Lr7Mnl^)$ER|f`V#P$ZpLxnT zk+BhF)T4Z52iXr|fk5lxBY7bJ9i3~SxZ2~UFe+O2%LTyZ-UwwnfpCEu266)0S$p#M z+$;s&lg-wbGfL9X+R7_f^tD@XO0oA3F-V6j;unwoZ9#vueNl%7Gi|{|LGA3XHJQaA z>dXfm%;}f{p8TA&?3&K^x65a0MaTFq3{jtaNfU(LRISX+!eAu}a%!PYLtOu#Z#HQ9jz?*{4Jq4kHS zXs+MCHS7aWQ7|)|H@{n~#nyB*ucC2u^Bksr;XM-aJo7zzVED!~+h(@biR3YuQf+61Z(C$zSy(K5E~ypvzsM#^XFL~1BY7Ec28ucQ## zm4XtkB;{>aO7r}$4~$>;GF?-?74~>J#8=;~3*nmhxq#Cjd&wvRt}NCCrvsmE9dvag z7?s9|I7*aZ#zxAH|90_W$5{t=20V1a#~!9CHIT%aspxQ1YNrw&jQxJ1eHBM8Hyq1p zX?22}1MG}{@dcVYt)MGNQ5qW2O!m`8F);_7bHKy12mb3h2Qtdu2ebr2K38Lae1NUDZpdig1%M z-0RQ<+jwiJgR7q|VV>L?!vt2(8s8;p8Q7SP#{?dZrlu}W=9wyUf$i5f?SBC4=kun+^wkURy@%@kLCa8+4NL&(aR?*duKIQg1(hh}50M z{{vd;dMe6Q={r^{V`OjJhOW4AHM$OEB?6sMuKgI#>GYAOOy@ZhniQsTi~CMH!PYM1 zUS{ZdZ3eB*^U(d|;PqGLBvfdI?YA^ejbv|B)b)Ev~ z^EFl_SNZJZ*vHF@s=f7DL?bZ-0@2RXi3yP`-m?|={(8v*-MKdZUI56Ftzp<1SP54F3ri_D49{r;nOX(U0BIqU+K9Hmr=yY8aIEt zIcQre07fz(+mIRQW{L4_cW4hX(cH57Co!uT%i(#a;**V$Vu1ZO70|S|BlNdSb&IaR zdm(2({@r(Dj99H<@(#KHe{O(V+2qJsd2SjYWN(BR}msJk9C zn^RbpAm2CekmpDuP!#P1S%oZjoE`*4x-43GY~r@u{LQB1a+JuK$HEl3K716z%DFFs)R#lZ3F&(I_`iK( zu;^L;^3pWOh56iZG}W-vb5xl!-R%7MD-q2SonXA=@BQ<Acf$~D)$%Y zfW<%-Zr$MUw0}VJu*1S6$OGf!2Hl9h;(mQOU-ifPw1F61P7_Gd9Xqb1%$-rUwa8#5 z8%Vo3m%p8zlboalyeT%xb_U!_6v$Q3PxEZ<#O8Foe>GKt%tD133Ec5 zcqICT8y}2M*C{ER^q<*~}ak*Waz=wH$ z0m?7an+YP;&l_xoSWD!W3rT6@k9T)?NXFJ()|i6x`58%8^BDm&j*$E`dCu_ktRV^B zfjWAKgZxubM}wo;tPkV2`T35{_MIO3f=R2_0KsPE01pNOra3AD;1jd?vC7gV+hjA; zeUp*7sNUIjpz4e%4{HFrD3WJ&7H~KF^k(D_wZB9Nf8dMa`m`rNr`vfi?3cfPC~^$} zO+5$0qX(r=U+RM$hofF&{dKx14$%ZTu0e@=H;^fekh-2d0@vkbOb+Lxkw&&K;C8Q5 zZUOXfcUzAr#d|xaSdv2}xBdPBS<`H(QKSjmkzjzv*s+BztI2aXBn}}(0)!6NQ;KDu zcpq7|!su0(NraZ3=eY5l-|0`%VJhCvg*GTu31Y;?*)WMVi2}Kve*DM)v=$AV>bnL% zer)$_Rz%tC^hLUaBy#P{9V5ZkmfB#$Om+hT0zlq#M*-cB9iBw%;kUOq1>y&TNG-{# zb6iPD-}>lX?a!tLuHqD-)7>WjsO+cDBl4asY~v^RJkDV&wkHU09OWm*c+y>x3f( zngZ4!N>2~BZqeF%z6^d8G(=EVz^p4kCHjq(PQ`NOdupM&V7V@;^%HyWX zNZ4fM`nS3f;coAR_muQXe%9$V$S5eNl%i%WO=FU1VJr|ukL27On{qeR2$k4G@n7o8ML~di{wgDQ_~<`Src2-MqXSi!E5AhXRb;J8ir$wpXos58o@~!fcNKo){Q1 zvk1|S@lJ_Nk9QfSNKz7}?TxnrZnANqt9%A=%KMMS-5&suL$22&h6Z|$<@$h^%0-k| zo0*c4L<@!6A8TWR+`bdXf=$_zX*5Fe+q4^A%ez?SBG-#52HGOCGUrmVQxz84VoTfa z2RsAyoFTfp7q@InjfIYG(HRD4sI@@Gf9cD2%2g`EX@`Hq4lFuYZFcDcaU@r_zM`|4 zO*P>sHw!fckcr~H$-7`Q(R!GW0pg?~vCHx^KsXvhAjQQjFA; z#GnI6UO73!7c=U= zLFAPY?!2DDG&r~S@Q*)wKJD7=%`%~!K}`9 zs#8&1Na(5QBCKKp+1D1jM!OIS25FO;4ZCqj8f3b32O z9sdeQXmu)ZwKsh91Xwet_aA~o1GSVXR(+ztyU~QTqvAQDW@H9Lh*(D~5ktB)n!;qE z(RK3Wu2-`y(foMdO*u2-^J3QBw(j>oBE76N`cC$|_S%IY+`|wN@8`=1uOPp6W!E~d z-*7&8GP5(JP5Z_(ZJyT%7Pj=CDaEV`wX{q{vGz#oj^rR>Jkh<-#m2@c|vrBHqzr}Vj)K@|wlaBI|{ zc)V`^V>tp-WM#Cue0qOPmwRL zQb%O8atS!N>(BUgF>(eP5JQ!k^rjN|RpHBGMhMoV7oFW9O;EK6ytW zWMiPBcK0$Au8-H~hKs8nQ11Jx4rbNPCOOB$KisTR%NeUWUCUlO943t@Ax3}b`_uE| zXI)VLY4%#xDYOEAOYk6obdCv*k*$!cC06MxHI-k6H1gJ zyLOWepBcIpCL{$7BkL=h@<-U>WAVtL=!5)JkrI%p;jDGNeW*niqOr@X#P*7heiKaD z%___;(5Phej6s|c=<|&)G7(KX6tvkm*8s}uFyss8N9Dq|O_g9P!Ted7Jr}xWeY}u+ zDvsW_pI#CF=QzD0SlT1*n}t-?AV*n6Q!YEqNHnxX-5L;%uUB$S-&FJT*y~BM#21Ix zqOSJ0sKWe(g5b#<&xvuV8c^6WYGex~3MITMX>S`<@-(v0aj@_ltnoZ>Ub3G^Tpf)S zmz2|CpAf!G2wy~Y*l2ZJ3k?aD`PlgKie<;c4BtA6NqwstT2#$`_Q?4u&_&`F__N)(?g4A$Kji$D`3KmUlx?np>TNUl(h zS5ZuidY2@XV47bJQwT%a5l!46b}?U`EM;FUMVQD4vhza+%NvSEN;38YM~ z$|UR*6qoIVBe5G>ldrih(Nj1-)RXQXTg(Ci#K|Qh-G;@*V_ii=?~_0j^Dvn^Ekl(B z7FH0I!5@)V3YVv`5HRP#Ra@g+d0)l97u9?q6I$swdI!6sFS{PcVRkDKs>T*}QdXFf zrI!4OuAcKb6y$kgGOQh|4PWYt%C>?3qP3{RLJdm3lA<9*u^W>Gq*3B_vs#}2hV(Ig z_C(!LL6{Gya@sa!YhvafRWi!V2sBLAZ|gVNY=Hcbe=2vz_~@(jv5F2>iy)(eqrgQIQhWlq)g2$wLFKc3sdk{|C>M4 zSN{xrwkxC-l4_}j4bf5Am!b#NSo;eYTL?e2dk(PyxIUO7?8^4sTer=rGs%nJND1_% zD6oYC7=H)VzW#(P7))q=qrX<6ptCLDL}*^)$Tl956S>}!wo)3t``H0uuar%ePFjhr zaGY&-X=F5b6oob7Ua%y{(Q)evSLx)1I(tr)`MxU3c(%4m`AC|Yklr5IN5_0MkDhR#rq*e9GiJAG9h;ON&RB3;&68;Zp~r` zef_1OU_{9@*{bVD#7jrSKbkEod)F4qjL5^xZ^a%@kC5vVO(w3F>iM?Jh5M0lG0Vf% zSKwCTaA9vo`tluk)d7J$`AUYGFXwtSnIMa&B!8+vj$?B%_toWKXK;TbfkoyQ$*+xE zC!-E8OWAq%(W4Tt*W`HrZ$;>c80oYbddoz+NtxUc=QBX>v|Bb(zOvYwTAi60Cgy=s zMMoy~!%&61JaeAZYe;g}seqQqSt8^^3t+ke@%aG8q}H#syDhJN>O$Ac%Bnr!g`}1N z3eE}ME~I(`d~zU(&w={AxG|(w)`AFpeMX*d7sC($!^S#ac(ON=)mvO7Pr4uCa}5JN z54i5*uc3Gduolf3Zj^cKUsadq#(U3Kn~sWDUNH#Y|gd=Fd!UfG>8MU=GjwL}sGH%n|nYP%o{%l*fZdLfZS{Wq;vvQ6@8+rJ!m~BfthtsW{ zUVL07JzM>i2g#ZiTU$Tv)f2C&XEV?cV8vV$Q3p)|pZatdA z;qcBJ#(b)Ajz|)h#1}5bqDCt{7l2o($PG$d?J*pLK(xN? zE^6je73@kRb$}U2ebr1YMvIm4YHNuFTzeGKcfFn%n$vAF6fFHq=j(T%Rgao_`ym_@ zf1uX-;DuJ~fP~^n^DxS`o6v{bO^K}b9Mo~Y;Oolt-5DgruGG9{ypZqZ$=JGGoG@Xt z;$BqH`=BXnVL9&wEtIH`$>H{qD#sw!(t7(F#6iuLBBW7GB_EMk1O4Pdj6j`25)BKG z-~MFylC}ZhHpOcGQuL%lt%<0q@`9T7mO>qnUzWfurDlQ>>+<04Fi;X>@LQ9ZSOcE< z6p+M}|KI09Q~QyRV^!IwhHlz%Obm-fi$`v*Zc-V$7TlTFV@A@!@o7D)3XqdCtr!Vb zAyZC0k55BIvnQ@@V+BtpH#6Xj(6lswN^IE9854C#G9sz4S|B_1xcvecCCA8V>ImbW zr5f9^foamd*Er`h*$s^_>%YSJNxGsvRJYs-R&)ug;n|d3ouxf+l<;XW%8-f^{$oTf zl{hjr_$O|pysMA0x_o0scn*bLV6O#hvj~VZ1R2ie@ z&!r?15`IDc{s`0|hH6n9%;hA@ay9}RqPcqSEl@nz7+BaoO$kj+rf3(Lo6}jCAHD|_ zmV%U=(Z|alRRg=J#3cp8M9?x>Q{Z?-PH54G9jQ!aF{wiazJz-VRxAai=u?*G5 zH(Ay&LFP1*nW?Y;PgeqP#Gdwh=8I8u)Xy}PH?}7i3`^FRawLybNoDwl@02bhNrJE? zs>ug%Qm#>KA_^l=-<=Z75dxZDkNhN|IPEwY$BA|kNWT`qMs>)jM5a=%47+EgW43nu&= z*qb+Sf8TzDc{&z^lL#1g?@X;zNFUg|35@TTAkdGC@iqNBN2begkn4pMndXqZH-1pl z&gQs5GNht<4&#+SM#V2a8*UYeE(jqzyg`h%D4<~x(rJZ#Q(9x7#7b|a4K%s=z1+1y zj{UqpJR-yzS8{Ez(e=m{tu%YM%h6ISG(r3AxOvma=Cx%0=D~vjNcqzD2pwO2ISK2-+J|WWZE`fM-i4gsesnz>8yuZc=$vrj9=AUf4PmZwuiun-WmRsntHzzUUIGy z78mF7c#%Ixa7Tdf71_-dEfN)-D5q!OY);1bai!udTJzFVEl&sdib4DQWWlvZtUDK< zruFEsDZb~=!!1ExsFQu9XF9`mo~P3Wf#+l`m~i%>*<_g>&hwD$7*i{DIQb|x5EHs?lR`4<;wOTn&ERQAg zo0ZU*+x^mJ!9oKT-x$_bws0rdT>t5e^40d4aOv^gXuP{F$`T`D&PMVy;;3Fp__LVcXp?!h0i+ zL^b34)SvC~XRUu5oFi9G5PT7|qn+QMCNmyoc_LF6rF)&eTyc_KjVU|zL2ax~{dlc5 zsK4J4M~lz2H3Wd_v)Pnla=sKulL^5N*!0sf>0FceO2-8%DQA`^tKY0Agg>=I##&)8 z?r`vGzgqIWeBxJ4_*9FUE^Fx&tt={{2Zu?8ct_8%Z4L>H&$VkCxZExx)IE48uIsb; zs~Ei;V`uS4;TkjHp5l8b!Pl6Sf4kE|L!ciX?94P{OT3!qzGOn-2Eh54FT7vN=mtwm zzy`yOuMgb!LdDMxMD0L33Qo4Y)Xy?>A3}goF{dwL50T>;w_=XVX%2WYzpCw@TFSCg z*gPUpc!)wh`Wd;sj_b}u*k+6#O~2lB=1}J=bA=kiPIm@fCIdwHAE7;LX%PIs(j1P7 zw$Fl8k2%YMLi!f7<$(@6j8iGl*E4)6Q(WMn>l3@8glzHPu4kZyCHPa(J~7KgU;OX2 z)5cmVC#b;QzYji5qtwU`e7$tPDtq{hFqkrtu|k+9CXlh*e&|buAY{y< z6PSxdAqxFYD~U(`OAIlm4bha3BANb6v6GjSL(lw9K+lFpB1iC~BJ>elY*eQ=(1;+k zW2%BeU4+h9Qg#pX3H@+yZc&nI<%<9SO(#ld31KAt{XeI?^x~zayAabbpzOcVkR-uvA4{|uYRGzZg z=^h=M7#aCuwV&?lrX-jn%D|_SEMO#UW|X^Z&3*4f(i!8kX(|v@OS{~*UzNRkhw>kCjCL;} z_dkPq3mJL#(0~p|JJNoOk;J41#Y9>CWFD76PmS)Fw(k)0gU^R8ORC&Hi zt-&#;9dNR6vH(5aScIaWqRtRd!JTiK&W(QgMRUJTvrm(g;ner$CZ@45c@71S-rU?W zSJ=CEb%=pWh=GL#^yBmW{XJD+Upv5{Ii}5bOhm-z=IZvgq!C*}R!W9UL26V^S=qx? z9#@n;iHVl>tTZn`zr%8UWVTdecGlI^wcgduzsp}DC}_-bST{E=y6V}2Wr-%2K&px-EgvJ^g8Z)z;@7`}?q4AQ&`iMZNs6rB=WaOj} zqTY3U5)feGVbjx9A}lg&_hJ$ir7+&!9~~e2nSBVbT%w%9Fb|W%oh=B>%QNl{@b`rt zW1!$5;P}d-$;0bQ1Dt?RYzby^I?~pB%35J|qt1lXRQju%`*fwYG-vafRz z-XB|Tt;15RR_k!EHb;M9f4W6d-_j{FLep z6)jwoN?&9IkM@HWS%id))e_#l{hR@~xBE=WVc2Rtb@cxI(>81djABelnI9}cRd4!p z-gJcHN?lzYKALcT`EbmSH%5q6r6GqVZ;FdPAt8l(;kSfmXY+gS!~KvOaOaW>9l!VS zDc)q~+I427k&g-IH|}=ry;P_ee6p2u;txI35zw)*@rZ~h$*H{@yFW^XW0sbbc>8+8 zykQ?6U@*8#@?lHNtTyncT0F-F^)GQF!J4_bIruc0uhKKy==5ep-N|o_tVI_iuJxH* zgMNH?5byK@W_H7!k8(LLn~@qV>knUbHCeoh1wFf6?sDJD#t3=lYYhQg;xnBm?-^|Q zjynOX)ssNorA`NqJ@E;f+09?IOmwGWUPT5q)c569nMuCPv4jU&6fcNg-a1$p@#T~s^&0elwp1Hwen7pvg2MmXm`I!X zIx`t#v;ZFhM#4BA{>dL}tu|GfHH3ut#1{iPn-kekZ+Us!(l`fyzs|(CZL%!b#ro0W z?P2@jD&@<1L*Rwdb3=pMzJJ39F_DME_jv&~KC-eG@nWwpduCX|&;7wf?1q^zaKY`F zX(qR0tIGu&ftY8`JL_EQsbNlrQmk8>)Y^0$|oFlYJehQ9KUqjQK3SXfK3f68?M(FE$G0v7zk?1jow3CNt9K_H52!~ z5W}YZ8ih-gAnXDfZvKnS=b=pQvcE-7Z8j}6Q2Dx$9|`N8_x&&ql_1ae#$r#VB%)aB zBK@KaVe8=Tm)JaWWrRJk0A@lSP4#_tLlQ#Vn^Rg(lN65b=O&xJm3aw=6o~t2XjTnm zp~QlAc+en^wYtgQcoCDW&J;ust)+2ypT@GwBM$87v#(!D%k3Nj>H-`#vl@y5a%2H4 zCRS#XLz4k+^-7k9NT`11Yo8lGdsu-p1H&*+y_u*<(q1^k1Qsj<*N4pR(x7oQ_A$^~ zv5`b>rY}qa0s}=LG%SqMg~k`jmRsOonN<&{EuwF<;QTY`BKql6>q65RY2#la$BFR~ z#qqT|2Zk8@az=T9e?JgbgBpF@@9@W>Ys3OyYvvVHhe0*Ktc(o6zWv%9(Z-?s_#b@? zq2)C!#NENg6%XRWwAY)}Edz+d!v2cUv(w~oEBSV~&R=cw4}>vBMsHsNCYsTDi2V;f zA1-5wy`HnGoarZ)5tz?xZej&|J>|!>TPO=tLY9y<@$>Kca$|OyWL%e!k@As1?RzqM zOy}wyd4TiS4~sQ&-=R0?o3ftW*u!Hn2lQX1_H?S^RJ!eiOi0Y!;hsOqA@by~JSqa+ zePOD1Y7yxbmG&eVfpv62XC=pA&nYYt+jhOTsSFfQ*tX2ksE$wp-}=f7FNY)e5QO{wtf$|hOM%7O81U(GIsAL`(!3`9i? z@OaAB2f?G*0b69>p6(9C<@nuS9@s5L9WUiKQH3PG5y&+??E?rBE;uZqfT(W$fVhAu=OTp zAdlk-0fZ&ScfEo0-hzibX!H|(X@$nb;CK9qM4AsOM7*ffiNUSyq`b>}&fRxgfq87Y zze3+G0)A;xue~YGClPye6(AiQT2-i15Nx)IB9#u+Nm{N&LFR1^ditDxp~i`Z1&0ZH z4NP#U;!rLOioHGsgC4XoY&WOMUDow^{5$=+p8Wj#-fbPtkaQxT4l9C2M(j6=jC|r8 z?=G+9mg%Kri|R~iDQY!q)yO8(CADk5zs?60U+DE9f2}nisVDH<1Y~vRL5ibM=Iuh@ zaq=(BZI`3_ujHq`fb}J}gF4UQ_n`e<0pm(Gf;(})mtrFNP2tmAB#PX6`%7})U!Ov} zK2-nN_P4d`vJb~XTHHcQtHD8tqUn?|)Z-tcnaXQ4>jLrb0Nf zjZaX-!bEpIe5rqni;(|&LJ=?NvQZ5&H&|EVZzec3GJCH5!{(`Z*`X??g(`!^qcD!XGe(vk-tq2W6 zKV4~7dzSs?)!EsVSOFTJwy?@-n3Ym)XA&YnM7dgsN3SHk~xLFv3-*rLwjZCBd|U{2j3Q_o~h<2xANLz1yc&ckG^7lDPnKH_X}A8zX# z$|)H0gVtGB8(^x57zxZ6PdyJD(@*62qk=g*PeHBnORvFXbpw{0ec7F{*=TKuRV*+T zCJ(&Y(CIz?>ZX?I&r8fb)3tB9NUmPv0e8EGc$<$f&W6s@^)Mq>w{{aC#Iq5^KyIaj z8-K7W2>Pd`mvr#{wNqa z<4r(BMRl=^POqxL$CH|_b{Go-fKF#2T`)|))7d+FgJM>h#VEtJCl>I@Zv0+HH$@IN zCS_a9*3;x>ppEgw&wxd`!S4Zk0T;2)xTbeY_U{1EB0!~)>&r2n`FZWvZ^&x@06ur@ ze{qym!{&a!w+O<*ScHx8@DJ))<5oYL*tRx*HvBn*ZIM{qOuJ%WXoZQa=E15bARr9m?mGi7&-jsr>(S8&PH}} z^36%!YPbH=Nf1PvT+DeaIVCkMDfyVSvIlay$#Fk0yvV%d#q&H=N=+y!PuS zYW*7&16CHVc&BW08qat|$n-?LQdc_2=pM78WT@XzJv4NkxWC%THWbRLl8z>OP&5ZQ zm_)0xdbOy&8%-3l+x#hS5fbiYSw2kUy=$V0zE3toq1aV#{`+r~uq#38Q@(o@Z zICb8}#uK6{L~y^sK@eahA}J$U5b{hJmCYkSbnLg8Bk0rFOI%LQzQ`K+m}t;n4VS1Z z6{2&^2)1D60MO4jIZPsiGT<}dD+1lx(w%KvgZz7D-+WDJuLz_h_a15S1S$am6p!FO z^we;g2DgBRvr@^d#myONLB>zktJ@8*xLk+jA~hv3|6m`rU->*O4r^ZAq6Zfvv(r6B z!M>i$L{7?|!{|TJ#dld{M;mnB_yl(c{%mRCGyblKe2E;>*-IKoXn`qxFbK6H;E>Ru z80DZCXoZ3H)^a~v9qdu{i&!73UiT;grMpk69XBiOgu13>(xsl3laPzJot9gRJ>gJA zQT3;avX5o>;Frk3grx>64R!Sjt&Y>tGktye9wDH;8T6iqi|hLSayOQ2L8NPYh%u2wv!=PH8}S_< z+&VhZo=j@krSD^F>gE1y$PsAfp*<66Rsis9F#hJD%qt%eGZrWp$!XVx+dhQ&{Pbi} zenJ0T0-0&j>r~10o-y(R=^G-##vTygRJUdFFi-TDy@sQuhfi;4QmK+Rax>Y?Z(J^Q zyjU6rJ{CF-vK?GpeEdU*lQ%fBGf)xnDW%jXxfJf_3Q2H{AA-EpuWc8*kyqYbT?O&H z5B+=y1^yCmGZJVMuxSs0GlQ`=98OM!7uR195kHuJ$|2H|^C|3R`Zsh)v}3_-skcdm z0%mO0(_>z+@QujFhi7NlUY~VYjFDs`Yd33u65ecA zPL3)=uQA4yW{ZvFClpn#Fwqu#y)*u{;K1$~ooKa1AHXadyzxe}aA;6;dO7y4HtmhN?`pKi85oC!Dq>rD zkm03?(V(){rRs(Q9XJ$8W)XG^)cf?|(k*Aop!0_hpx;Ozm-x}&-=FOgpphzC0k};R z>kNLQ4Br)kvw?-KZf@K0b$u*c4-|^8?n6}p3>Z(T$mKx_wT)qKhZM@ z1kw;%IiW~3#{&&tw$gjfJ44U!>R$HcR97YwTv@D>V){e= zYW&vm(_$Qxpg)Tbi15r<@BDC7p6?_^x`wLDsaBk0Y*4XbWbfb%Y^4leZ;X=&*+QAH z1~C+~-+`xAecRXap6Zg98vQpH6#{g+JLU$eM9(#P=i%V6bGxnB^s~8@)ozvm$0X-52rLF`y_=G+%FoDL`*TY$A91VX&j! z?TFX7Vp6cZ4fA_l3#b)@{|3F>hs=pjUO~=_uYM%%o^Kh)67^X+2 z-jjEG(mZ_}e?;Jv=)pOO5}P+qoXQ=d`=)Nx9@&6Ukk6z@3ene zbX~}CtyyRP?ixzsysq{3g`&G=-An;NB8XaaG1;yjn4pkGi9C|z`Q{*F428%n{^dIB zXvRg1Bk2qO(iYJkgecvP_v9u_*zAwzAEUISO1?c!Gz@ZQt?L!GtkR-S2Yco)gSr;k zJ>kf6#S$7+l@&Kg#4iT}URVBb6>DcI(&{^&vrwoAQo$A*-;7C0V#f2RudxZ+LoRtE zYky%eK>I*StSYqe$6HMHCx`Wd?Yt}x1vNFJ^uh&V*|=;q8E1g6L`EWM; zq+8D>e7l~AceJF!SClI*yFjw+aV}C|FZEnaku}yU*w>%F`dH{J(08~bgt)|==)MWC zpG7CBT`1gjd^Wx0I9^a)91V!(4gVRXAiL~*F45b(js%0AlB;pquMg(_5XEkq)1q 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 HrI`N#4&T({ diff --git a/screenshots/dark-calendar-week.webp b/screenshots/dark-calendar-week.webp index 65fe59e5f6c27fccfddae57f4f101e840c495056..d83c7df5029155cb3b1e4c5c6c7cee6347474a7b 100644 GIT binary patch literal 69750 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 literal 48638 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

L*)D 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

Z;v=ZdxP|A|&e7Ny04wz zo95av`sa?unq+(>5_OWlK4pBD`ly>d!|SwPTa%ilJNY8BGJx3pGq{0`6}tRsz+IW$ zsGlQ)Q25#fzB$H#B~qP`_~OgU4A_T`^ze!UgmB%BIb7<_`PpYf_SE7#?pU1nSnN_r zM!5!pJM2IG{!nDNPC|wS^Rq+v6I@KFH;1@)Ktw&?oMUGA20OJj^dgq6XnR{!ERalxh0< zP=}mUBHpo!^%|xWP3!EtNJQcjbo?eu;++!1&;Z-InL>$p&H54?$$sbkQzF>BR<@3g zJ;k!`X{%(@%HZ$qSoCQbY%fD}(ME>6sKIEBTqXu@ZV1oYCjz3pP)twvsm$iW`P*n( z&AdR-R>uC!i>gHi2N3xd~vl>RJO0iVFTdmY0cb~8<#F1_>m&=@vMKs|QZ z97#!?k_txxcD=56syj7#WD#co>)x4A7I`Z{zx5fP@~xZqWz!uYHC_Mk7c+;^ky%C- zpxfPn<<>y~yyAr1RqufMAj5c@Mh-Fmzb00f;q$OwcaLK zd?zGW1=1mpdntEQt?K-FnTs=j7Xv7?VzSO8yyJ65{F0JWG;_))!=9t(p|b7F z0iJt+HC)U@i@+ltcWvUx-}BKMQTs$u9~9SzjXG3UPydCRut=Hd<~DEi-JWrrL8L65 zomE%_fif5-wrc*)UvqgZ`j+A1H7_P=(WfbutX@ZULh%|U=kLm!F~J(ce82QEX&~%L z1*@rFYoo}!78Fr5TU?}K00((Y6*KsZ`T$tS# zvpFe2mG*AfuIvwO*!t3~s^K+u+RfP}H4 z1Wn018L~fsI@pXCN9g7p=M{WcCPs6ZKV0Y_mg9He~5o)BS#>v@AVj^W*iJR>Z?ergx zb6W~GL&W_VyDNIHUi!FK3LchW`?H+q*AoLg#6Zl#pn6vY`{f3)$^Dajl(yk09XMdu zVBteJeUMXm-?~lAk-)+Q%hs4RJ)#$+^uC;Q--Zek$aE{Z(kQMI-&r0KwRVJ6 z>BMI)*TT?yYI%1YAQfnA`gfyZnQN#MTavIFg9!xhIeoSfBTXli_7*Q&4R#7?h5_i|s#Fk3jEY`Ce$-_@> z8ojv?8kd3Z#mFhdj27brSOqdED3z*M4pN{ESy_10#@Q%$1rkd?(y&hN+4dfiZk9J~ z<ZaM|4zXRl;DmcYD6~5Ek+pB)LO^n-uq^j7Sy3i!p*kUl#wncBnv`QXfu9 zE(k`b8R{&F10ZwFpw0sFuK`+AERD#W^`(CkVgmxp@T}k<(tVL`AO!ILo&Nyx CDdwR7 literal 52324 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ï<3a+>~j!)&q>SU)?!ODXFLve7G?N>PU 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 caRHQls-6wqS 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 literal 0 HcmV?d00001 diff --git a/screenshots/light-composer.webp b/screenshots/light-composer.webp deleted file mode 100644 index 59101bd8f597395a891111909d6b51f9c5d67553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138302 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

`X?gE?t(J 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 PLzjt!=12lH`#<78hu*T& diff --git a/screenshots/light-contact.webp b/screenshots/light-contact.webp deleted file mode 100644 index 01589c4e94e96bfa9caf6f92b8815b38dfd4632d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84420 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 z*8+w>yS_r)s34`D6!zu6FaQ7m0000002ty2*BXcb0000000000000000000000000000000000000000 T00000000000000000000qDakN diff --git a/screenshots/light-contacts-detail.webp b/screenshots/light-contacts-detail.webp new file mode 100644 index 0000000000000000000000000000000000000000..2aca0fd47e10595494e9a25ab628419738391df8 GIT binary patch literal 83600 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�W7-L+1dmO(|Axgzuq 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 bN}52J1a?+f>jMC$QTaJ#MSr^g|Ns0Su8OaC literal 0 HcmV?d00001 diff --git a/screenshots/light-laptop-phone.webp b/screenshots/light-laptop-phone.webp index 221ff0ab56acaac15307baedc7f607114f81e294..d090ef03102cfca80b452630046823b5638a57a8 100644 GIT binary patch literal 162496 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 *WHtaFgj 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 zn+a000000000007GZv2mk;8 literal 162196 zcmeFZV|ZO_+cp~8YLdpb8{2H$xUti?v2CNVZQDj;+qOM-+OB7<^}NTof9&_q{`37x zjxm!l#~kCnuj{-{Oa%#1(J*HaAQcfoxi50;1YYmIM_ECq0aNKfuYmLFGQ^3K5akwR z+d5lcz(E^ZzKE!J4w|;+yk?DpFrTQ?A}^C}yOaqTrw)5q0+_ky%=l_NI<7ii8qV-1 z#AGj_FA?t}mk`^=ZycR3Jny-Cn|j{xAMvj}Yw>0HZ1@JBa{!Ld1&@Fm$k&{wh8L@g zjO~tZyp0~8pZfvMfQl=}4f0#WtBfbWNu=lVAOCiDup_gte71pEZ}0%!prULx~6 zf4nWexxR>U&Ug+2sy3O60eJx9H^uwN=X(Gk zQ(OJb|IPRL{PFw=u+`zj%m144GJjuj1-R|#1polkH^zH_70*dPAb=5&@*)cWJY{6^ z4SMDRa^LRXJm2mg@!#)B`xZa~kn^f?4#;WP04#bg0|edz?<-DVA3g68pZK;qrae|( zDFAE$^Oyan3IP5Y-}|W_&L1-#J)b-F`DWi1Jl_vIA-}Xdoxf;bcpd82aX`nt2PU6=2LLbu7^E*XFU7hrXx$ic?uxngCEbUR8iPwr#iD0t`fB}u5C7kL z@_!e^|1Y~i9}z>0#DndmW7G~*i!9`WD)awthmPtQ6*Mxbgw=}ZlD&Q?X#P|rE%uct zZ4rF+d#V%magLVG`2W{Ue*jKl^j3_1(P(oulmn``&cCi*5>ud;>fIlWVDPa+h4gbD z2WU89pUhxw6vgLY(v4Ukf8CM)WtD-54f12c&MlEs<|qK{sgLT@BCFDkyS;@@ucW>t zy*%8D)>f{5U)?I=Ow?H7wk6bK!XJlgknYx(b#nQLtl?2E#@u8j*1&F!K zgjln@V92_O&5*tybWEyh%M7R17XImrAVYmsa3re8s4gXY@~CxDI(XC*-fku&)A_ga zD>$T(W{~a)r>FRBSK^7p0y7-q*3bqT$;Imy<=D`eSxu3v@k9TM>R*QWG`-n!L8Fof z$G#|D{izO104$=+?~&EY%Yu{L&*X@{$V5{UI5|kfpD=;IygdB7FYo`SHk0((?TklV z_^bn(g2S5>@{=hki-Op2m$!qW1dDDKZAbW?+yA0x#kujrG2P8dAvVlS8ImNcj#$T! zl)0UfFBt8rDG)a=hv_#VfJ#3d#A?zIsUf7JY+I?yu+LuEU(H)ul+*M~Hh*d&(A|T< zM_&LI4i%4?{1~hc1*)xmKjd@N;%&JBr{4ukVbCZ%6$`s)!RApenHFLTi7m_#W%;TZ z&xN*wz!GFfu=>v*(Nv`|1`lPi=2aXvewSoN8I zTRe~ne*OQj*@$ok|NHdn;qRx13$C$iA8wAwE?+i&8|T;46q!teWJqzr&h2@yls@Zn zY;NO|#*4Xs`G^WD=QILO)80Cc;t$fg8t{^%L?HNb4z4=!L*()ySHxR74oSm(sSyne z9H+X;P5$E>ZmMIa5LhKsB@vfGR7)%rgFV@pfDE=rAWULAUw~jp4{JAwa*|sBXdtLmAv}Tbk@AN-$&H@!+d+psIJ!F+N8$Z;BKuzx zAH&ayg8tviSsUjwb%2SHFUuKO$nZc-{~bQ91v$2$Lk%hq9e9IJOwd($d|h z#2uW{DHm}s5dujRI7l8*+xY-tP$B7_UDmLB;m9sKhc~DXakS79S{XV4%zb>y@WdUx zfw4lZh$mVxPxvH?$t>BOKA9dO0+W3ypf(C#W*CJ^NoNF1%`GO~Qm~)BM#I3zMg0A2 zitzeuiSw5k-w2HW#u5G!oqiB|d{Jl~Okk6+IQVzVtmG0|>7HeVXnEmp&|*n{P+Ctw z2X*ZK5u9-(6qX1FdP2=NX_sZ#cI!jF-rN#@F_*qYAV8?YR1&ggL(bdhBGOIfZWkvG z_>zS2==S=tbCM6tjS({GhQMhu)Qk4oZvRCF^X9K|1xlY+7e8eTfk=Z_K$fV&Jbnt{cAT|M>V{FYB2>q>=^0 zXk!%G5^nn|dw$iiApcKORY)+N>B8f|FzyOC%;`@e@N)(Xfl1;6@V%7s22wWW47D<_ zt~LBV3e_)USaRI*1v|$L=1alK3yo7r)g{V|>ez{nH16fWl{$;-PBjp#-ui-^airxfVc?I`jR2kI9IlP;nN}#QPb9!hn#d&)3QJvNA$? zzP1z#Z|N*+mt#kuM6N|=)?WPLPB-)NknyeBF(^osdbtlC3X3hta3Y)qDuoN2d zB4YH7IZRYOGPdh8X?*Bzyuch!B$RpdwgWtKiaF*1nt zU9vSSD&zKcRv!9f3((09$nv5kYk^jp`*2Luy@Pd_sU1s{aRJMG&YEpCFwnS6fQ`;I`wEczn3MH1(oD3A?or5V)g6K3Q}_5l)`j3tHDcHADqzP^<24@J z-uJ2-Zg;}#J>6bW$vAwAN`tIH(Kp`6J)Q`r(!|DtX9+k~Y@1MrXknleqJ>IC#gh{H zYkUFK2*aQ;Jj~CxaC7*O7P7QDnDe}7Ck{F#ODKyNUt%Dju#YKUQdycuT{TWw%@Y;W zSMYOQLhNmarY>Jm!`CfBaDCLQ_d_TRbllE3s0`MX4YSje5=tJFLY#Ic+&IIg_n;*4ZID-qRS zr$x+S+KM^7;eAy$vn7du_h_Q+3sRCUjon;Di&>)x^d%VkyeAw%#nPkl$t*UB1 zh`l@n@?pvL$cSn%7))F(jas7^wms9_xcKq*s5sVur@}cRX#3}r(Ra=H27#iao<-jW z5!t5?6b-4@RfQq*J7FJ8abhE*6l336mg@JKp1Be3pk|aNQcfFgw`udyy(|K#ZIN7#JV1V3AWAC`-HkM( zNK+@OjQm3I8dW1{46!JM>O&bG2=jUe6H0+(l^~`)Y7@4N>2zX6#^kMi%#jmS!btlD z&sJ5GMAGpkv2iwZ6DX3dc)TMCbQP%CNWioSneBnNI|xA zKQOj2Xo}kxCD72K=WhFt>kKSF#n8UEk+zBlp=sH??&&M_1{GK)A>A@h^s@Hm3O^!R z|1}UOk)-hX#o=_uSX`nA+JQ*a+#hxTLz9iK=MP9vPxaJ_+Ga0b&mUl^+z6rJnMk7J z@cg8Fkt{s2m^z7ou1ZF_$mLs%KAF1D4hcBS{Y53P>q9ZMt7FWk!b?xbNwqdcY>pW< zAI$$5Vq)nbvE%*+yKt8g5jc?4d{THgC&EO4OXi5h{QZUdmizm5ro`9gw~|r#`p>{h zf94_JnyzK2)bAn<>`T4trY<^aYd@T}+}Yr;5Y=})^~QTB{YH$?YQK;i91$5l9E}|3 zz9Idz=5eCr^#5IP{dF+;@o>No5|AVhnWRB`gJO7{1aYcc19{1g1|pDPR$Gt-^lsng zc2xF{abDqknG`%n^ZoQe6q=ZSPfCMA-V$}M;KEbDz%2%Hh=bWlE}?bY<;V#s=N&aA zY!xdYpLl>9>zF)uYUFX_GcE$2NYVkZ<;JN4h^W&l$tuAePZQt9$;20-M`Q<>+g||2 zgOqWB<9IKrLiO`GdFmFQs}wg~rKNJ(s&tt!76c_)_eL^>%)}`-4RtdIJKP3EebATY zFkIM=)oPv5@0&rbP4~}^;NM6{8S0_9m?V>?jK_EOYpd9?cY7i3<<1M1uDy$rE!Rat zPG{kGZyn*Ir&*wx-fUR->s?TeF3laDr$%iHnLf%bit5r-2=D2Q+25+C_4 zeM55dB91W5++7wHQzoHP_7`raBRO{QxnL4_!Ao2Zm~rv|UjwRDo+=w}(_9BS>IE4b z8)3F@ync~A`C*_O1G3w>Di>}|oMl_DaJh?+Hf(*yZMgazSha6)AM#10m?ECoKa11|W19c8k`naGT}5Xk)g!^T zyf#u#hmQA8%_FM9b4RJL6|=kBlt$05%t<03%UcQSq1$Lm!OzzpCvHZ7T z^SOA#ur!b3I>7L}aF3}A%P7pXRZE;dXH;(QEvUWyxa1w18b$RuQByg=E?~St6Ia;w zywf(;C?kCw$81|U1zLY5cz^$@Y34w(wP8HQRT0Jlgf$|t08}7pY?->L;ziq|!Jwgy zCWjB#%VeHA1{XCU4lQN+9p=V4b)&RyyiT$NSvl~{&Sx>E)i9eHn(d&CXEL%&y>*-o zQv?5j-Ji5$sY`It1OiSKY|z&#kA6!o#Q|%Ko{Z4_+~h6z;Q%o%$A`;CS{x0FoT`sV zh^}Noj~*j^S1mgk0!Ph|gs4=3I8gxxICyZ%hij|r>k^lZkfr+~F~bu>^ra4PwcsS; z0lLey+p7g`8uerci(v8>q3P`vg*Qn-dV^ZGDj`m`F@Fkp^cbkdNy)`~Q9MxZMJ;0B zw0cq^-oCtXG;C7#{s59(lF`MSFg6Z{;-ef-T*Y_No<(6Zj2`J# z7wv^EAb2I6&yoHKt^Xz5>rqW$$FzH(4y1}0LR(=hF`ImB{OzboLlZ(9#fS=%52u(Z z32-W7SA}}4&T@l*0HpWhrUu_@B5kVscuHEXg&xEp%jon=|WH6oHt= zWo-83lR zF{J+0@@q8=nw?vW+2XSi*kNR?cjbqhwamq?G%;(r4S;FSg`-FZ>_(Q@h7DPNJrW_N z_kuqH5aMkYG14cPl*MO zRn}gme|k`+P_)f}1R4GyX|bjK9f?ztN0kOjQI-WX|A-wPNKN{=_bQ^TFY0HZT?~F{ z(+VxNQ5cuuk<8i0L+&~~Ux#6^p^A*{-FEWyHHK}Inh#E&(!l4A)l+QGG_tWIaL@q? z5^y^a9|-j?WsvP-pVGg6A&IdH^zP#iJ;;|%|5%k67r!uJV<~R3L&_>sE;;8oK|vN* z6lsbsEnO529=&R=zI~CU%UtezyB-Es)t8%iWa&k^@dKt2d zoL|Gt(VIM)xYlPEWKPnZnF#? zvC{E;Vg$B23-PXXdaEju!e zYhB$+P97>`?}EmmnC#J;Mc3*Uxtwxpkf3wIC-bE((OILhOSi@r`s$UdE%|&^6h*B4 zAZG3`I2LT=ZBd^jo&>MWQ0mw5uB{R7_Rf3NZ;?BJKDetbrUEId&`QEq18dN+9PwIwJ@|S^6q&oaVm(#-igsuoA+z_#%m-ymmPSM8j|1RQT;j%Ez`ev-$Y=XDqku0`z1}i}?WNwp(OY$iV3ef3> zzY6s&k4?&x$NClTKMY4dAG+GybY>eA$aVa8&b_6;{s{SdC5r-1%~DGZg#HSPc%Hzp z``4I()-2Y|;)=_aE7w}u#{AchE8JWzuqO$u^qDtc+zjM7nl&!b9i1+mDSNJ76hc0Q zSvLEm(t}Dv< zLJ*Pfbi4ousi2TWJ&~r>;v`C*$H>b7{iunpgz2`3m@AG5wEAE#?0z|J47R)gHki84 z2sbI828DPq(xVjrYa57w=G)uTC>0R6slG0NeqKA+S|MGk=$!|f7j5oJ$LmbGnYe*! z3(DeqgB=crj}Q39=2=-dbUdZ<1bRk!i~Y0SmvMzrL>8_~9w>f>H!VCdATEqO(>Zlk zm;ETz(xxuBedQj(<@k+Y+i6NEFTq2Hy%YX$S#Q zgxPhZJO(JkfWEPulTYVByP&xkB1)PB^U7;eS)yLcQsE^u#5r5G z^Fo6F^LF8up&YT2I@He*#x%AzXNpo2P4qEJo>bgmUoZiks|n;&w4(H&z1Y`mnj#8( zS~Z_Ia)0&H*wuye*j;FP%pnr)MHEPx^0$)l+AmjrfqyY-oz3e+i0b8F%tYM8BAX_1 z_3Q}x-Tnr|FQ3muJ#3kTKy)H^rzYh9VhaGa5! z@RwmCxJ)+o`dSARp!<236v}}J)Zv6a&QCFI_}^?fk*f$uuT@9}3qHiAV)-OX6XN4g zL)#kvQiCH9JaL4Me(0ZD60Lu*S3qnT{FZt9%|0-i7df~8)AM26=f9ZuwkqoB*5JUn zvtnxzX5tKv&*ETb`Pvu} zx+X~m7V~Vv=7m}d#z%cmW44%nS2h#B25P_rAqWJY8#Z}3N5=W4=U1;BIG~(ywBwQ< z_N(I~Nx`?6V7yeCXoHMqs{TKy!?9J0yKlB7rnAyWqN10)eJX*wgSuGcj~=4w(ZE>r zHE!Nrh=f_|JWpfY-auKB``K+7YB+Yrvv{hSjLHuzvCO*^*K7uV`lQhWQlx~(i`2zE zG5Ur4eQ#$#pwp_+8Bzur>W`_@1jd6oddO9OTEq(lu9Y8Xwa3m<^>Kjg;p?5Nh^2UQ znJ9$mKRkd)awOIx5usdhX!>ZyxvGa>XkPy$y_FN`Q6<8Xzfo>8*c)nW)KPo{|) zNh)P&igr*|?3QP z>VEy>?;~7mBvCmt{N2+fS*Dnb=?Bnd|Dv})seb0nUQYd{XI0yQnq_;^SnQGnWs61& zZQG-~M_mz081(YTrC?1mXR9YFy0ze%m^e3OAP0u!^w3tJzPOS9t==Ca;$l;uuPiQO zL;AaO;3J-l8*dD5qUAS97}cUREeeaY_Iew0&<-{NM0%+XbxhAzwD^xdy$=yz>`1L( zMc9w-tdGkhUr!P}M zp#^skV)s^+&BE_`o`-9w7v=?F-5N%(ki2+N*%g)(>M5-i_S+v(D!t$CXJ(+sH0Zy> zwzGxdIV>h9cd>Xg!eI~(URxpUvQ&LoPzE3eZU}`*i$w0F>fCmlcv`-xg0_nq~L5po|?N!Fn5pZT1IOunv_Fsq|@iHTc?DAC+L zFc4sCfA%oyg`Z*jK2j{Fl^j-m@Kz*$&HaV}S1mt5rYPEGD((fLJ5A)-S*`CCSDz?X zA(k`-Gp)=z+)}I%81Q@T&~W4Q6h9_er9cT1;Q_EdkwN16UpQS_i*NhbpUEYko8MlmEfYF<_ay_Xb;z z8**P{ur?)#+&?3oBCW{aHMGhxflnEBuhs3Q3ceGz6(-Xh4H{N z;&7)pKFZzCs%hfGj2k_7`aX!p22)Ir`8Sa1HYYP_G0o(!76#)swu0lm*dB??!WxUE zUp1mDR4)8fkrtVoAkBq@pRqiuiiG~#TC}I#?1Dl_PLC|0?c|QM4{5!g4E}O)j~TKB z`$3sq!1#1o{VVd~G52l(&$sT4(`*g&pgo9Lx_qiJsJr1EHI@cnv)na~<5~!(o$=ShVkfO6@4aMLv9(k3_!RBj zRbYAvv?;-W0B3Yk6WcWEM0N8&C{XDDEH|4auxv~HhhjbV5`C5lRL_}UFvWFN-vpdpLI6lE27&I3~o43aH8;Bv~ma_rQ^Qv2T5TXNPBwIa)10> zWECr3CLBw#|1Fn^ZT~{8BqQy=wW;#I-3jZek8ToTUH(UUVHK=eS*cuPg8+Bl#iAWPDw1Hs+S1Bsz_L~Kf+_#`MJdh+f%k3?| zr#FIdd1~MFkC>}jN>GR3J=zdvWwUeH%Jc+rOUnf;>z>NU&)=#{lpaxoG-%W-W~tg< ze1os=c$gVz>^t`FKGsL!WG4m7E#1V71D03Y?C-)oX8k3(sQbfmyxvu%X<3Pf z5vNH_)M+dI?r6aY2XmY4+Gt|GkW@96woii2^cxhlrJ2{MCL{IIj|VZ_#(#V^_-xex$ecd^?|p3`uKRKGy`#X4(!khus=pVt2{NzQoMfb z8k`Q1?~WQN78hJ7NlpNLWK0JBPEvr6jHOxMA){I}GAs2&;nYOwBVA>n-dIurS@=Wbr_9KWwL?|m5s>PgSM0JO7{DK~3{~>rq}3h>2Kr({DA7kHLrMD?6aD-?22vI? zlz#*RE`8KdVB%qzF5f4NS6lu*pSj)H(g~sS%w(+KDQF6L2ZwqH$tyi<)|+s7WzjM> z2OZ}KdDj3n!)Q#IqAX&=zE(bna^X{aa5*4H?vM4KP{Hkt(-CIpdqR_X0LO} zP{$uBJJfFAl1QZw_2c2I7qEWO>H}0C4J%I3mC%W2-7U`+pLUnbU+}MZ$`f;v^x>W& z7>m<&J`-jBBj~*siU26>RZ5Ww`5l)>j|hwQ*tyAUbAVP&dw&)l)v-_?*$-E%a+)Ex z4#(^vb7+_e!e3j_A7M+FGf}88_{KoH#tnaJkm$TtTdP#eLe}xv?-V@JFUgyVl}tov zn0G|kwEa}zIG_#fG-&s-ipO(W*~3mq>1{_RPH9kI$(sJCMd?-bO+Jh5$kbnG8nfjI zjY(q_q5RexKWFA`i&->nC+AM}Z6VP-#_Q$3d=sos1EY8q+bo6uI6!y)Jz;+K8zqL_ zwL>Fk*Dq|B`|^vjv(bWnf}2@xIWv^M&yhX7_K-9+*Hmm*?5RG0)?yOu-wiQ4e>Ft~ zV~V^B*EkSp%|>Q5jHcsoRJ~u$c0E_7Dtr)r`S66@dLV-``OPWcsbuv`fiv@5_fgW- za>f3v!sLY{FOU;Cx&tM^4`1Lsqj4gamQ$!F_AFv%gM7wUX;JC1mG(D(s@Xnfoig?+87jKY1TUpG4YfodbI}jBk|m;=!h@K3LA^`zQF@ z?%HPx^T?C@QXJo8UX%u@xhDwJSxW^a62 zOj+4Aef@qbJNG5(I)L2c4+Wd!D4EH86{H4ed2f`(q@=}>Cs)Bl`|Vk)M6`6OnJJW>!7El z`9^smuIjm(wq5GXfi~SuNuSz20K;LWySfy)=IzutR{sYN|Hpt_sxtoEEGK6lLP}b< zTAEC%Zba?P#{)_yA#BI82jgz?^pC7*+t?~4 z$Cdv!##+U;q#Zob;7B~dwXfoRV_c)00syfV2~`BVpw}){fA&iKvr_zy+Vj$@FM7l1 zH3Z4(STv*%gc#lo2!ECX6>pp`+GOiXhFAdC5BI4q!ajzjb#n=i+20UROE1mJ5QNgM zl7E8aT!b!1O*YiiB4G`qYNoKdi;Qk4eSp}qdD22@ruBXUycIJN?cNc}#?yu|@fbUidegM8)-F=3aN zEHn?&C8zI$?K*ROONL++q9!oZcse!sN%^OKZ*ff)f<9{bU_`BBr{U`h{TVn(6#_AK-_5Y~YY^ zNPeVx2GJ|2|)wJ<2@fY}-T^M`t1-iXji?*}x} zhAUq0FtyN#I`GXmHX^Mst*9cN9q6Q}mm@s6cJ7d7SNg1DfO1>olf3ZqZ6^)f2+Gt! z2d6s|3f9Y_*ZClkkc{#To}hYSx#zl z!#&~Hb*I9@`QA|r4D{|GzV3$Z?Q<4ou|@%|CWdR(tN3b0@B`8Ty|$^-*Kd`Nr69e< z9gLK)ciP(*zpQ9h8E=bwpKDi}%uPuqbJ@`r1?sCgUl zD1JaQyVGif~-OMZvk@20Zf!2Qas@^3GM2f3iBj(DRkd`J?(=${_2 zSrE0sc2x2|{BrLDz_9D6G758so!_aTbEBI^l>GT;M3#P$QF55NB?^uY-9_}<(EPRm zV_tQ71o!z=%0F>P;?3#Sw~|?QofZ}~^Y;*D^FWSEHqjhv4}S`AzkGW!f!kb8&-a3b zrF2n43j1Q)0vd{B#V$U4e%mP)cA z3=F?S4ma#h^}k^|-GBG#LRQV=_xTS+ugT>YOu^|A;0K!|8Z{0QNcEeBjgO>cxSua! zJ_8D{zTQi3rDo6>WYG4#etoXy%bR9r7qvkO&Cm8HjMBr6# zpap+|$OpB+h}W`QHKe&@$6rg8g2J*x-i5%-oe&HB6egkJK6uC%grIKkF4Z8Wc`R-A zW-!YK6vsM^1rW`TC3A8NKJC9^^yNI~MK^ip_*!!fo9MK0 zJbLBcz)dY-MCp<{D*WQa!$&rY*Wc7g%M)IxS@PJIZwQSaSL(IIvKzc+-J}lSt9(Ou zA8|PO5ZMn?0O^ddEXZnUk{`;7Pm$aEKxlY#WJYcLC=QN39VPkf)m_Q_0UWlNk9)W* zdI#Lbs{|AuF}7KnuWkw#GDfD*5E!)P^<<#mY!_)tQ4kFcj)?gRp*h!Q7wUD=??iMlkz_(8<9(q0$Z&ay>FY#8Oo@JwOTjPa;m>?SOx1>k88K+eu ziPTr!F3=bwdidAwz7AYX8ZXs&hb)OD+co{ce0c_Y*5%Vusnu^?`F?5Zh&_T&k`zr+yh3fC_a+Z!E&}426pY^#KdQY;^@%!rh_+?IQ zy=HB9kOaYXU4b8aGTW_TQtA>i4aJ=%GbX&3ZcJ%AFPdG@Cipb1pYM8fh{RI1IIk_9 zL99+0Psrc?0j!{As$l$4W`kR^+^;K zrx|DiffAv)1Q8$D8LjXYfJR|d+E%NpP=3R|IPDSCe@UaQ8^e7b8EMIORAlEgeNKLC{Z${qoD}E?*3!msJ(2Qqs&x1nP z_dXif4+8IPM~QXuSFJFEe$ljm6*xh^;$;ro|4i!Te^26G8fDkMzl9*i;++JR?+4BS z5(IcS{cS+7n%aVGL<`HaFk~{OK$GAJBotE>@;<8$+VI75m1Ck0YrU#x49W+6gVSoZ=11vgzmEe9do` z`EEerKt@m5$kH{TXXjCO5$Y`Z?9H;PC)*W6&MmEUqmz(;*08uNnpr(M9zQ4Qx(q-h z;miEkKim^L?!P)np|FgGtRg1fpC6w&{cv+8Q53@}(e}g_AOr@{&y@7_#HoK_Lfo`o z8|XV5*QQjz>m)z={p10*OC9NVByJxo94^KLqTGw2NYlX7N1NgZ^N#9tjh`-RcYMQI zi!P>@ZnGG7B*G^@DOU*v8(DMWho~#h+Mu>3K^tn|1jSB+BlS*q|;4S$1NIVTY_a$Pa;5dXO(;X#xiG01vdy98)FJL z;~Hf*U4=8n75M|aJ=OY_duOi0)Pc6iD3K9<&vk#}P_?ie9SZt*1t$noL+p*`)dLoK zfQHY(=%lW-SXkJN&=zhN=kw9bet5WR#@JI~;E9gqJaImcjS0+qiiQ;Xv|ku{=%k+< z3j#+EVyiA2x3Kv#;!xkzl{~LMK6*KGunE7HUCO?}C!oG@xp;H2IVCIdhY3$wU^-S! z^^!Xl@=Nq{*PyYld!U~wf{$*)M@CUUFkB{%iIFRd(z?dbhdZR_cMmuyR6cv`zbDK> zR<)I}vH`e|TIYKaAh0TB5{PrEj7Hjlc6tT8Y;ydq)Mb8}aN$1;cB%1N4Xzy%jywls z7zoeEg)()<*%34Z;7Z~{gQ>c|0n31_1Ksm=6k?4#3IGj4V0@7G*6I21 zg%E08cGfG=C+{N$Ex>xF|L;83Vwo@PH-KFmeek^fe-h6lVOYofm+45o5~ zE`-DtC>ItVa5`^lx3FJo?z%|pt$`{;Xlf{Pu4oRltDovvS2dv)ue=OT?~O@t$KpLB zs4`p6XSwHc;1=9u)oinVu|7}zC2yL&82pxBtF-wZrKm9J4)XqpqlqcQDG7sQRDx1N zUFv3ePP&HRhEY)Z4F( zz+eJc+CK!DG4@o5U6_e2k?jS$=slZyeig1_^7BsAWx)W3>#N<V z#2Bh3!ZGiy{s7&ySh)&iw(jsk`eWTO*s}!!Exu3!swm9JlFtB5g>#O^zBMRqt)_2j zGxrWH`LP!svB+?{4}HfR(7=J%G2fsF2tHJW!TX&tp~h3tvq2`Nl}$onoP?q);z3jJ z91t2mf48(5$sk1Y2%~nG4W02@Q7qC`qlrWaG3^9~OyBNx zO64^3A!2JK+yq_#&ppjnq9ulHUqDWwL7~}u+f!t@#u{C5ssCwP-+w@2*=D;<83>ly z$DN6i1Qrh>9p~jk$vM~!9ez3Z`}X}p-cPotUTVf_gY}mDQOFi!yD@k|#XvQ~hYP)1 z0m52pmtc2V<`92)vTw<{PL}-3@V;&}$Up7ad%!zn^Nq*07no3T%1Mnk%`V~vdUop1 z18`C-JgVT3t-p}!M6triomF{j>lZ@KPyNH}1+wXv2bTxugE^<+!t0}~y*0!@7mpbn zPUnv#aoR81?tM;U)f}2GkihpUEbFvVCixky1EH^hB>fpYiNUoaLlH!}-Yl22_4gxj z9NY(~j_tAogR=}o$_*R|=e%HemX71M<{U=ZD_G)H*48fh<6~+JyDY_IJsvr^qU{r$ zSGvTjHAjWfT?CPK6Z;!5zVnZI#ER>4I|W?6cIQOAe~10@ZCxEl{}l?r?@Dm2zrq z=L~HEU8_sUUOo!)uE%UQ#DWK?$hpRTaJ#f2C}^SR0`<$}p&79>{*3xx*;^cek;Bm^ z#6?6J;;|C0*RtR0|XiH?_icoo(w&)_I zJr~s{jK(SShDm7y3Uhh$znf~(%=Q}cWgcKh_>MO&C&Fv5&e0TTYJ}u7XeZ*k%!_dBSa^nb+WF zTq3#ulal)*`!W2E=v}z(aqio&w%q9rr%?}Wdm^&|av$zmKMs_l-gjNe(}YvUvH{5j zrVfJX>13A~GK-bz<^1givEJuT)7zpwIDy3p`9u?2kmpd6_ILsGQSg~uE~GjS*cckL zTZ+249f6=%05j^`9!)E|g0IiChaCYeHza)`=Z^HkZ)0!E)p+XRxu9k%!EPq|Wm=I? zM6S&KyJ4J~a$%8CqIO~kkxVmt7vdsFi7zY8)-Zptd&A!6Nk+EJ$@%-Q)tS_8mJy*l z<{4E`qcYH>R}aq2Ny2Er<;M+OKCFI_dzw?SY63j%UHnk$+c=a+dpx1YEz-{`2T6R} zS(hiCtxN;YJv8q>hB{LCHgvyA&3`{3VdxMYrF!A;u1^i_a?+;MebkI0hMSE)`)5%j z*!v6=1vhb=E+MrH&-t~;uycy$ZfEhiT5 zx5u+nz5I`(@n7Gw0Z+uEcN^YaQG>n?bMEih-8_?MS!&CN^C2v}fYAHbP}Ji>rjOD4 zPfj1 zvr)8$S~4;AIWF~QldUUgd)xA!N#5yIL`=k+n5hw|{<2IksYo>2IB)XmFPNEU8BLbs zRC*3Jv64Hhc>hBk{$;x8QesI!Gj*<_EK^HxQeQIcNAa^r+mz&us=T*2cY;e~$ zoGn-9Yx$Bs{OMfpEpu}`kVk-uhd@6PgQcMwOh>S1_IyKi0XKRl)7l|3ionDayJMT{ ztodP-wvrK3O^lOLof)#iH|rn{eO(rZ5c?>I&aRC?DN|Y|U+VGtpE&8?Va{LXMt=kc z&7ayo){{F{QTxF*yczKNs1qSa!Uwy+vg^ElDK;G!K4;Bq5+r&aR+G#@JN&CTm6MWx z!l&;o)_@a(tg&ok6^^>(uYkpf;n&WrP2W-kTlG(p!!>3TGd{7~b7RZsOEbd{K=9uv z9YgHa<)>5qdzV0aY1nfSH{Keqw7)&!cfDHev@hTA`97@=xi=hmT;F!YJd1ef63Cup z(ETLvX84nt#s8IoPw}G6M{g;mR>T|T2iHXT_vMh|=FBoXX&wcW;p1-b2rr}&i{~!G z)u90A*$g7nQphzkKIh)@dNON6K$;rnQzl^eV+<@#fl)Ky&Dc}?kX>s0dFgcgU6hU2 zGM|B6H!2d|fI$5^e%|oMP5NMi_tdJDJagan&3Ls2k{^Of>{!}68$ptaPFfkMi3?`7 zGBk;Gv0UDPIlbTHS_PLsUA?+UfD4)?X{Hp~(hpfBLU`K6 z>XzI8Zn#CcR7fZYhK}Bs2#tfKSeb$T#nq@r{kQ%4Z}0?;rpHiZ|ChV$eTl39E2E~Z zB>i11-^p9E?t4#OxBKca%5&kC2qGepTLRjpprpN-Z9|Q)2`ZlYJ*;Kp#au4fCS_Tm zd6UT*+;v{4lf=zZ-?PS8p~4-U1UP?LsM8c!R=FqZt(@nFFW)ZiytH-!j&ReugSDqi z`4u7k<_=(}EO_4cdE|9^S~on1>tM!VQMgb;FxoR`pxySy4w0@y9YlF6Y!n!}i>@O_~G!o2)GGk}qHzB4a7Zobef$+G{sWz?IXY1~B4b+)$xJb( zhzIEGZYK2q{>l&d23r8*`pe&WqO#v_@0YSXK5{PMY3)pPEs>GS3ABWJoB97R_fA2g zL`|1y+qP}nwr#unwEMJe+qP}nwr$()o-^~$|INg`Z};ieQ|*Y_6?;cURj$ljYiG=o zKjeY4#f+zPko)`#@&AJ-@n2T$n8*1)z!Sqx&}0#FMG^l-0Rdpw+m*gVO=aQ#sQ%iJ zR#n^>1E=geG*}wBzTL~bHciTE|F;sHQLtuswRyWqB@dR-_$pWnnvRviNKOFrI*;6B z^uOHK|4U&Wk@PDO{LM+ejc#zUP^V~0Z{!`wr$=*!Q=r6F!1S*P@Ducjt z%jB3Z3z?<+5807kMc(ku+ndv+(qDOGA+Kghwb^k2lN2VkBI~~xi~q~c{|N(5_JICL z?fzE?VF3W}^SU-lhF%_*@>_`iZT^ehgIT8eX#nt_3uu|e?>~e8KimKw9t&|mi5vW9 zEwFZfPZAd%(}~**%2?Jh2_NK(q2bVQXgD-G%?27^QY?_u`jCvSP^P2Yb{hpIpA zvMC8}++CV+T(;FBnsQ#`tv%>jKzjqb;iWYL$F#B#X5I|xI+@c+YEgtHb4rz%+kWxS z;+Yk&lHSfstLGMDbUJ^|QeuSpK7`q}C?4?T+UNsCS08VA%`~bs%D04u*JmFpB2>pS zUyS>-=O7ZKIVTFx!HKmNBq}tjdG7AD0`b?E5g@cU_*?LARXFXiglz=i?mrAP_?jJ~ zd4Vb4;(qd4gFUrLt{I0vf1{5r$!gUbjiI0Z@WRN&%Q}iJ7Kxy(uST$upT!f+ z`v+ztBd%k&!6BhkDRJ;y{b#dsap-;*FGFDh(Gu3jbmmevo3z$3k6%|lsHu{yhn~gr z!K6HI_fU(j33hzUiuA_flg>DMC5EmOaIOv;7r2}$_0rHR5(F!Z@QI-^om@HR22y*F zIi7Q3imF9VxP=S(g3ryG#N|!Ef^Qt5ul_3(D>}++@0HBq*(ArZ2e~6 zDxGYcjf4xknJqy*59HBh9hvV`|804|H||ybIi~=MCMM$k`}Q!eR5hS$x{F_j#h-ia z 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 P00000000zZ00000rXGnG diff --git a/screenshots/split-inbox.webp b/screenshots/split-inbox.webp index be80f59b4c30db7ad96aa305b2fcd020aaf72335..4df93aac1fe015ca3643cf0a200348c4e46411fd 100644 GIT binary patch literal 153300 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 z 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

COwGdRE;uw(Z>@dp70}v6`BLX_+n>pm&>Q?``tz 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 From dc837c25f28e737ce0eace7357eda59827f853af Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:07:04 +0200 Subject: [PATCH 084/238] feat: let an install link name the extension version to offer in the marketplace --- app/(main)/admin/login/page.tsx | 7 ++++-- lib/__tests__/connector-registry.test.ts | 32 ++++++++++++++++++++++++ lib/connector/admin-next.ts | 14 +++++++---- lib/connector/registry.ts | 15 ++++++++--- lib/release-version.ts | 10 ++++++++ 5 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 lib/release-version.ts diff --git a/app/(main)/admin/login/page.tsx b/app/(main)/admin/login/page.tsx index 3e870475b..e00ce26c4 100644 --- a/app/(main)/admin/login/page.tsx +++ b/app/(main)/admin/login/page.tsx @@ -44,9 +44,12 @@ export default function AdminLoginPage() { const next = safeAdminNext(new URLSearchParams(window.location.search).get('next')); if (next) { const [path, query] = next.split('?', 2); - const tab = new URLSearchParams(query ?? '').get('tab'); + const search = new URLSearchParams(query ?? ''); + const tab = search.get('tab'); if (tab && isAdminTab(tab)) useAdminTabStore.getState().setActiveTab(tab); - router.push(path); + // The tab rides in the store; a version pick (an install link to one + // version of an extension) stays in the URL for the marketplace page. + router.push(search.has('version') ? next : path); return; } router.push('/admin'); diff --git a/lib/__tests__/connector-registry.test.ts b/lib/__tests__/connector-registry.test.ts index fd8a334f7..dfef636d0 100644 --- a/lib/__tests__/connector-registry.test.ts +++ b/lib/__tests__/connector-registry.test.ts @@ -82,6 +82,24 @@ describe('resolving to app paths', () => { } }); + it('carries the version an install link asked for into the marketplace page', () => { + expect(path('admin_extension', { slug: 'quick-reply', version: '1.2.0' })).toBe( + '/admin/marketplace/quick-reply?version=1.2.0', + ); + expect(path('admin_extension', { slug: 'quick-reply', version: '2.0.0-beta.1' })).toBe( + '/admin/marketplace/quick-reply?version=2.0.0-beta.1', + ); + }); + + it('survives the admin login round-trip as a whole', () => { + // The admin layout parks the resolved path in ?next=; the gate there must + // let exactly what the registry produces through, or a versioned install + // link would drop its version (or the whole path) on the way. + const versioned = path('admin_extension', { slug: 'quick-reply', version: '1.2.0' }); + expect(safeAdminNext(versioned)).toBe(versioned); + expect(safeAdminNext(encodeURIComponent(versioned))).toBe(versioned); + }); + it('defaults the admin tab when the link named none', () => { const admin = resolve('admin'); if (admin.kind === 'ok') expect(admin.resolution.adminTab).toBe('dashboard'); @@ -125,6 +143,15 @@ describe('parameter validation', () => { }, ); + it.each(['1.2', 'v1.2.3', '1.2.3+build.5', 'latest', '1.2.3/..', '1.2.3?x', '1.2.3-'])( + 'refuses the extension version %j', + (version) => { + const result = resolve('admin_extension', { slug: 'quick-reply', version }); + expect(result.kind).toBe('bad-param'); + if (result.kind === 'bad-param') expect(result.param).toBe('version'); + }, + ); + it.each(['2026-02-31', '2026-13-01', '20260920', 'tomorrow'])( 'refuses the date %j', (date) => { @@ -167,6 +194,8 @@ describe('safeAdminNext', () => { ['/admin/', '/admin/'], ['/admin/marketplace/quick-reply', '/admin/marketplace/quick-reply'], ['/admin?tab=policy', '/admin?tab=policy'], + ['/admin/marketplace/quick-reply?version=1.2.0', '/admin/marketplace/quick-reply?version=1.2.0'], + ['/admin/marketplace/quick-reply?version=2.0.0-beta.1', '/admin/marketplace/quick-reply?version=2.0.0-beta.1'], ['%2Fadmin%2Fplugins%2Fx', '/admin/plugins/x'], ])('accepts %j', (raw, expected) => { expect(safeAdminNext(raw)).toBe(expected); @@ -185,6 +214,9 @@ describe('safeAdminNext', () => { '/admin/../mail', '/adminfoo', '/admin?tab=policy&x=1', + '/admin/marketplace/x?version=1.2.0&tab=policy', + '/admin/marketplace/x?version=../../etc', + '/admin/marketplace/x?version=' + '1'.repeat(70), '/admin?next=https://evil.example', '%2f%2fevil.example', '/admin/' + 'a'.repeat(600), diff --git a/lib/connector/admin-next.ts b/lib/connector/admin-next.ts index 3f580b050..a669a4b06 100644 --- a/lib/connector/admin-next.ts +++ b/lib/connector/admin-next.ts @@ -20,9 +20,11 @@ const SAFE = /^\/admin(?:\/[A-Za-z0-9._~-]+)*\/?$/; * Refuses anything that could leave this origin or this area: a scheme, a * protocol-relative `//host`, a backslash (which some browsers normalise to * `/`), an encoded separator, a `..` segment, or a path outside `/admin`. - * A `?tab=` query is allowed, and validated by the caller against the real - * tab list - the admin shell keeps its tab in a store, so that is how a link - * reaches a specific panel. + * Two queries are allowed. `?tab=` is validated by the caller against the + * real tab list - the admin shell keeps its tab in a store, so that is how a + * link reaches a specific panel. `?version=` is the version a connector + * install link asked for (`/admin/marketplace/?version=1.2.0`); the + * marketplace page checks it again against the directory before offering it. */ export function safeAdminNext(raw: string | null | undefined): string | null { if (!raw) return null; @@ -44,8 +46,10 @@ export function safeAdminNext(raw: string | null | undefined): string | null { const [path, query = ''] = value.split('?', 2); if (!SAFE.test(path)) return null; if (path.split('/').includes('..')) return null; - // Only the tab hand-off, and only as a plain word. - if (query && !/^tab=[a-z_]{1,32}$/.test(query)) return null; + // Only the tab hand-off or the version pick, each as one plain value. + if (query && !/^tab=[a-z_]{1,32}$/.test(query) && !/^version=[0-9A-Za-z.-]{1,64}$/.test(query)) { + return null; + } return query ? `${path}?${query}` : path; } diff --git a/lib/connector/registry.ts b/lib/connector/registry.ts index 9b3b02a59..6fbdb1156 100644 --- a/lib/connector/registry.ts +++ b/lib/connector/registry.ts @@ -30,6 +30,7 @@ import { ADMIN_TABS, type AdminTabId } from '@/stores/admin-tab-store'; import type { SettingsSearchTab } from '@/lib/settings-search'; import { buildSettingsPath, buildFilesPath } from '@/lib/deep-links'; +import { RELEASE_VERSION } from '@/lib/release-version'; /** Mirrors `SettingsSearchTab`. Listed so an unknown tab is refused here. */ const SETTINGS_TABS: readonly SettingsSearchTab[] = [ @@ -48,7 +49,7 @@ const CALENDAR_VIEWS = ['month', 'week', 'day', 'agenda', 'tasks'] as const; // JMAP id. The connector carries the alias list purely as suggestions for its // link generator. -export type ParamType = 'enum' | 'slug' | 'date' | 'id' | 'path'; +export type ParamType = 'enum' | 'slug' | 'date' | 'id' | 'path' | 'version'; export interface ParamSpec { readonly type: ParamType; @@ -137,9 +138,15 @@ export const TARGETS: readonly Target[] = [ { name: 'admin_extension', label: 'an extension in the marketplace', - params: { slug: { type: 'slug', required: true } }, + // `version` picks the version the page offers to install; without it the + // page offers the newest one this Bulwark can run. The marketplace page + // reads it from the query string, and `safeAdminNext` lets exactly this + // query through the admin login. + params: { slug: { type: 'slug', required: true }, version: { type: 'version' } }, resolve: (p) => ({ - path: `/admin/marketplace/${encodeURIComponent(p.slug)}`, + path: p.version + ? `/admin/marketplace/${encodeURIComponent(p.slug)}?version=${encodeURIComponent(p.version)}` + : `/admin/marketplace/${encodeURIComponent(p.slug)}`, admin: true, }), }, @@ -195,6 +202,8 @@ function checkParam(spec: ParamSpec, value: string): boolean { return SLUG.test(value); case 'date': return isRealDate(value); + case 'version': + return RELEASE_VERSION.test(value); case 'id': // Becomes one path segment, so it must not be able to climb out of it. // `%` is refused along with the separators because the value is decoded diff --git a/lib/release-version.ts b/lib/release-version.ts new file mode 100644 index 000000000..47f84f0ff --- /dev/null +++ b/lib/release-version.ts @@ -0,0 +1,10 @@ +/** + * The shape of a version the extension directory publishes: semver core with + * an optional pre-release (`1.2.3`, `2.0.0-beta.1`). Build metadata is not + * part of a published version and is refused with everything else. + * + * Shared by the connector registry (the `version` link parameter), the admin + * login's `?next=` gate and the marketplace routes, so a version that passes + * one passes all of them. + */ +export const RELEASE_VERSION = /^\d{1,9}\.\d{1,9}\.\d{1,9}(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/; From dd0da783c68eec1904b0d61f75f78d4d02d61dd9 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:08:10 +0200 Subject: [PATCH 085/238] feat: keep replaced plugin and theme versions and roll back to them --- app/(main)/admin/_tabs/plugins.tsx | 45 +++- app/(main)/admin/_tabs/themes.tsx | 45 +++- .../extensions/[kind]/[id]/history/route.ts | 47 ++++ .../extensions/[kind]/[id]/rollback/route.ts | 93 +++++++ .../extensions/__tests__/rollback.test.ts | 104 ++++++++ app/api/admin/plugins/route.ts | 13 +- app/api/admin/themes/route.ts | 9 +- lib/admin/__tests__/extension-history.test.ts | 146 +++++++++++ lib/admin/extension-history.ts | 227 ++++++++++++++++++ lib/admin/plugin-registry.ts | 63 ++++- 10 files changed, 769 insertions(+), 23 deletions(-) create mode 100644 app/api/admin/extensions/[kind]/[id]/history/route.ts create mode 100644 app/api/admin/extensions/[kind]/[id]/rollback/route.ts create mode 100644 app/api/admin/extensions/__tests__/rollback.test.ts create mode 100644 lib/admin/__tests__/extension-history.test.ts create mode 100644 lib/admin/extension-history.ts diff --git a/app/(main)/admin/_tabs/plugins.tsx b/app/(main)/admin/_tabs/plugins.tsx index fbd98f22b..e8626100f 100644 --- a/app/(main)/admin/_tabs/plugins.tsx +++ b/app/(main)/admin/_tabs/plugins.tsx @@ -1,7 +1,8 @@ 'use client'; import { useEffect, useState, useRef } from 'react'; -import { Upload, Trash2, Power, PowerOff, AlertTriangle, Loader2, Package, Save, Shield, Lock, LockOpen, Settings } from '@/components/icons'; +import Link from 'next/link'; +import { Upload, Trash2, Power, PowerOff, AlertTriangle, Loader2, Package, Save, Shield, Lock, LockOpen, Settings, RotateCcw, Store } from '@/components/icons'; import type { SettingsPolicy } from '@/lib/admin/types'; import { DEFAULT_POLICY } from '@/lib/admin/types'; import { apiFetch } from '@/lib/browser-navigation'; @@ -21,6 +22,9 @@ interface PluginEntry { permissions: string[]; installedAt: string; updatedAt: string; + source?: { kind: 'marketplace'; slug: string; directoryUrl: string } | { kind: 'upload' }; + /** Versions kept on this server for a rollback, most recently replaced first. */ + previousVersions?: string[]; } export function PluginsTab() { @@ -234,6 +238,26 @@ export function PluginsTab() { } } + async function rollbackPlugin(plugin: PluginEntry) { + const version = plugin.previousVersions?.[0]; + if (!version) return; + if (!confirm(`Put v${version} of "${plugin.name}" back in place of v${plugin.version}? The copy kept on this server is used.`)) return; + + setMessage(null); + const res = await apiFetch(`/api/admin/extensions/plugin/${encodeURIComponent(plugin.id)}/rollback`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ version }), + }); + const data = await res.json().catch(() => ({})); + if (res.ok) { + setMessage({ type: 'success', text: `"${plugin.name}" rolled back to v${version}` }); + await fetchPlugins(); + } else { + setMessage({ type: 'error', text: data.error || 'Rollback failed' }); + } + } + async function deletePlugin(id: string, name: string) { if (!confirm(`Remove plugin "${name}"? This cannot be undone.`)) return; @@ -414,8 +438,13 @@ export function PluginsTab() { {plugin.description && (

{plugin.description}

)} -
- by {plugin.author} · {plugin.type} · installed {new Date(plugin.installedAt).toLocaleDateString()} +
+ by {plugin.author} · {plugin.type} · installed {new Date(plugin.installedAt).toLocaleDateString()} + {plugin.source?.kind === 'marketplace' && ( + + · Marketplace + + )}
{plugin.permissions.length > 0 && (
@@ -428,6 +457,16 @@ export function PluginsTab() {
+ {plugin.previousVersions && plugin.previousVersions.length > 0 && ( + + )} + )} + ))} +
setSearchInput(e.target.value)} className="w-full h-9 ps-9 pe-3 rounded-md border border-input bg-background text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 focus:border-ring" />
-
- {(['all', 'plugin', 'theme'] as const).map((t) => ( - + ))} +
+ + + )}
- {error && ( -
- -

{error}

-

- Start the extension directory server on the configured port -

- -
- )} - - {loading && !error && ( -
- - Searching extensions... -
- )} - - {!loading && !error && extensions.length === 0 && ( -
- -

No extensions found

- {query && ( -

- Try a different search term -

- )} -
- )} - - {!loading && !error && extensions.length > 0 && ( + {view === 'installed' ? ( + install({ slug: entry.id, name: entry.name, type: entry.kind }, version, true)} + /> + ) : ( <> -
- {total} extension{total !== 1 ? 's' : ''} found -
-
- {extensions.map((ext) => ( - handleInstall(ext)} - /> - ))} -
- - {totalPages > 1 && ( -
+ {error && ( +
+ +

{error}

+

+ The directory needs its v2 API (extensions.bulwarkmail.org has it; a self-hosted one must be from October 2026 or later) +

- - Page {page} of {totalPages} - -
)} + + {loading && !error && ( +
+ + Searching extensions... +
+ )} + + {!loading && !error && extensions.length === 0 && ( +
+ +

No extensions found

+ {query && ( +

+ Try a different search term +

+ )} +
+ )} + + {!loading && !error && extensions.length > 0 && ( + <> +
+ {total} extension{total !== 1 ? 's' : ''} found +
+
+ {extensions.map((ext) => ( + ext.latestVersion && install(ext, ext.latestVersion, ext.installed)} + /> + ))} +
+ + {totalPages > 1 && ( +
+ + + Page {page} of {totalPages} + + +
+ )} + + )} )}
); } +/** Updates and warnings for what is installed, from one directory request. */ +function UpdatesStrip({ + updates, + installing, + onUpdate, + onUpdateAll, +}: { + updates: UpdatesResult; + installing: Set; + onUpdate: (u: UpdatesResult['updates'][number]) => void; + onUpdateAll: () => void; +}) { + const names = new Map(updates.installed.map((e) => [e.id, e.name])); + const name = (slug: string) => names.get(slug) ?? slug; + const busy = installing.size > 0; + + return ( +
+ {updates.updates.length > 0 && ( +
+
+
+ +

+ {updates.updates.length} update{updates.updates.length === 1 ? '' : 's'} available +

+
+ {updates.updates.length > 1 && ( + + )} +
+
    + {updates.updates.map((u) => ( +
  • +
    + {name(u.slug)} + v{u.currentVersion} → v{u.version} + {u.channel === 'beta' && beta} + {u.changelog &&

    {u.changelog}

    } +
    + +
  • + ))} +
+
+ )} + + {(updates.advisories.length > 0 || updates.yanked.length > 0 || updates.suspended.length > 0 || updates.deprecated.length > 0) && ( +
    + {updates.advisories.map((a) => ( +
  • + + + {name(a.extension)} + {' '}has a security advisory ({a.severity}): {a.summary} + {a.fixedIn ? ` Fixed in v${a.fixedIn}.` : ' No fixed version yet.'} + +
  • + ))} + {updates.suspended.map((slug) => ( +
  • + + + {name(slug)} + {' '}was suspended by the directory. Consider removing it. + +
  • + ))} + {updates.yanked.map((y) => ( +
  • + + + The installed v{y.version} of{' '} + {name(y.slug)} + {' '}was withdrawn by its publisher{y.reason ? `: ${y.reason}` : '.'} + +
  • + ))} + {updates.deprecated.map((d) => ( +
  • + + + {name(d.slug)} + {' '}is deprecated{d.message ? `: ${d.message}` : '.'} + {d.replacement && <> Use {d.replacement} instead.} + +
  • + ))} +
+ )} +
+ ); +} + +/** Everything installed here, with where it came from and whether it can be updated. */ +function InstalledView({ + updates, + loading, + filter, + installing, + onUpdate, +}: { + updates: UpdatesResult | null; + loading: boolean; + filter: string; + installing: Set; + onUpdate: (entry: InstalledEntry, version: string) => void; +}) { + const rows = useMemo(() => { + if (!updates) return []; + const q = filter.trim().toLowerCase(); + const newer = new Map(updates.updates.map((u) => [u.slug, u.version])); + const yanked = new Set(updates.yanked.map((y) => y.slug)); + const advisories = new Set(updates.advisories.map((a) => a.extension)); + return updates.installed + .filter((e) => !q || e.name.toLowerCase().includes(q) || e.id.toLowerCase().includes(q)) + .map((e) => ({ entry: e, newer: newer.get(e.id) ?? null, yanked: yanked.has(e.id), advisory: advisories.has(e.id) })); + }, [updates, filter]); + + if (loading && !updates) { + return ( +
+ +
+ ); + } + + if (rows.length === 0) { + return ( +
+ +

{filter ? 'Nothing installed matches' : 'Nothing installed yet'}

+
+ ); + } + + return ( +
+ {updates?.error && ( +
+ Could not check for updates: {updates.error} +
+ )} + {rows.map(({ entry, newer, yanked, advisory }) => { + const fromMarketplace = entry.source?.kind === 'marketplace' || entry.source === null; + const manageHref = entry.kind === 'plugin' ? `/admin/plugins/${encodeURIComponent(entry.id)}` : '/admin/themes'; + return ( +
+
+
+ {entry.kind === 'plugin' + ? + : } + {fromMarketplace ? ( + {entry.name} + ) : ( + {entry.name} + )} + v{entry.version} + {!entry.enabled && Disabled} + + {entry.source?.kind === 'upload' ? <> Uploaded : <> Marketplace} + + {advisory && Advisory} + {yanked && Withdrawn} +
+
+
+ {newer && ( + + )} + + Manage + +
+
+ ); + })} +
+ ); +} + +function Rating({ rating }: { rating: { average: number; count: number } }) { + if (!rating.count) return null; + return ( + + + {rating.average.toFixed(1)} + ({rating.count}) + + ); +} + function ExtensionCard({ extension, installing, onInstall, }: { - extension: Extension; + extension: MarketplaceListing; installing: boolean; onInstall: () => void; }) { const isPlugin = extension.type === 'plugin'; - const previewHref = `/admin/marketplace/${encodeURIComponent(extension.slug)}`; - const versionMismatch = !!extension.minAppVersion - && !isVersionSatisfied(CURRENT_APP_VERSION, extension.minAppVersion); + const previewHref = detailHref(extension.slug); + const offered = extension.latest; const updateAvailable = extension.installed && !!extension.installedVersion - && !!extension.latestVersion - && compareVersions(extension.latestVersion, extension.installedVersion) > 0 - && !versionMismatch; + && !!offered + && compareVersions(offered.version, extension.installedVersion) > 0; return (
@@ -325,7 +671,7 @@ function ExtensionCard({ )}
-
+
{isPlugin ? (extension.pluginType || 'plugin') : 'theme'} + {offered?.channel === 'beta' && ( + beta + )} + {extension.deprecated && ( + deprecated + )} {extension.author && ( by {extension.author.displayName} @@ -362,6 +714,7 @@ function ExtensionCard({ {extension.totalDownloads.toLocaleString()} + {extension.permissions && extension.permissions.length > 0 && ( {extension.permissions.length} permission{extension.permissions.length !== 1 ? 's' : ''} @@ -370,17 +723,17 @@ function ExtensionCard({
- Preview + Details
- {extension.installed && updateAvailable ? ( + {extension.installed && updateAvailable && offered ? ( ) : extension.installed ? ( - Installed + Installed{extension.installedVersion ? ` v${extension.installedVersion}` : ''} - ) : versionMismatch ? ( + ) : !offered ? ( - Requires v{extension.minAppVersion}+ + Not for v{CURRENT_APP_VERSION} ) : ( + )} + {ext.deprecated && ( + Deprecated + )} + {suspended && ( + Suspended )}
@@ -288,33 +375,49 @@ export default function MarketplacePreviewPage() { {isPlugin ? (ext.pluginType || 'plugin') : 'theme'} {ext.author && ( - by {ext.author.displayName} + + by {ext.author.displayName} + {ext.author.verified && } + )} - {ext.latestVersion && v{ext.latestVersion}} {ext.license && {ext.license}} {ext.totalDownloads.toLocaleString()} + {ext.rating.count > 0 && ( + + + {ext.rating.average.toFixed(1)} ({ext.rating.count}) + + )}

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 z0005(If*p@000000000000000000000000000000000000000000000000000002D C_5or5 literal 0 HcmV?d00001 diff --git a/screenshots/dark-composer.webp b/screenshots/dark-composer.webp deleted file mode 100644 index 54cf1101b64ce46ef464ba8eb5607b6746e401e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140126 zcmeFZRZyJk)-H-$@ZfFi) zqd+5i!9p8-ed2##%J*0{vwVBt*P3fFM)7I)+4Dhj^oLB3XU&J*m!1!8Gp>bzD!}Or;6()hcx)2|lzG-acL6FdAfNG{Nnb3DWp3AAc$NU8_ZTlr z07}5z6T*E4VcRfIAK)I~{W7-c35Yy}e2$C*oB{6J99xzF8-NFZ{RuGObn)m860rIM z0RLk7?D)8MGh0l>XPJ~{$;Zr3ycngEmM zsXm?zPs*3Ar-H`}JwW)g`(xkD>4o;sw#Jv!C$1NxNBoEKJI`H!%j+xj-6C9Mtb0y* z*1eoRrr*4~N55!0)m{Mfd$zsYKGvP6JfGf|F9Oy86jIvHfsd9KJWYT$0B>v6GvqV+ z?brq2j;HtK-YxXe@xk&Of8X=kGa3N62;9wBZCeI70~7#FPox0A%UUK+e_H{d=;iW7 z1mJkj0{{R#4gi*qCfkqq_%~~ho|8|&0CoTzAo6MMiFSoH4}TwU0>}UuK5Cp`Uus|B z-+GP$zCV|}J`Zq3d7pU0bC19A`mV15LchMXRt^BTYG=G0uQja!0Ovs)KW!$bQMABO zT6)qiLbNtV?}ccsjoh*m>#JMkB$n0I$ns98PUGZn(HsZKT|+r`{@;cFe?6X?=_P+w z7`WM0I5AjDh}-}cUwHxSjv~VF_35bIGgDE0r%xpG%~&xQ|LY5=rZ{FZv(Lz~d@sDf zv2mgH&c#n>;Mbe%R5q?VDbF4@Q19HWLY}zmg*@;-6Scu7k0TA&)PkdX|4%ViLww8k z7MNxQJfg8G%kg}DF<(s%)X6e=&BS(#^$cm$C7Vcy?>QX>jHa#-#ayTb`kM9>%yC;Q z0t5#i40l>9Jh9lfAa7gu`&~Af+~eV}4O=_`T}V!aA6Kd$GXnPtWb?I@K|Fdn)bW7# z4iZW=!J8;EwnbVQ-BcRZA3J^9ZN`P2853xGu3?Dc3@J_<1HT3MqdvR!oZOeLE$-wM zk~PDSyCJ*%ud*cb_1f3md6-xFFn|w-Ny1Lt%{s+LdjhMHM0AFNUHZqN!=$UiYT^8E zQm*~oTOxW0>gAP9GV#zWoey`54N$bQB?Ys6Q0Zd?4um7*=eX9Zk6+znOPUy1dZB#a*{0=V&DwGn<%ReHXLaadstF~oX>$8+#`;?cA zHHczJ4iDk@gx1acVU+g{<-7hGc1Dl#;4ES{uTiwh{rzui&28VE$J?31-nhhixdQQb zU+sPP2(BiWzEL>%5t~UB%_31j;3A~>aWO?4HG9{k7(-N7px9OxlYSFAEeMQZh35M* z{OziDhhk08)n^j7l20M^KiEB8k6jjOYu?`%N=c@v_<#xlc(L}U^ve2zzOM*?&I2T4 z6!hmkF^jaRk7|#fMDhO^0Wl1*d;PTBm`~GIyQr}crAr2nO~{<$TZQk z_N;Et(S;C6q&#P7!6+$iRGGL{_h*#-uDV=zze{l{LtE{dNh@+<(x>vz-aRMM6SuNO&Gvi6U@$q+F1^{4Fo8V{O+b7S>kbfV;t@EkvjSJ1Y_PF}q1zB-fv8!8erw z4lv6@WVKtvnEN?MJG%&9el7J#7U~plw>Vv0y};YRgeG6Jcd!37$W3O@b)2QfX=ZGgL{r>0 zh7!eb8c*!Z?T{lQ^@O$GEJ$xa2-X8vJ}axQCv|^!iWx~0S{sIPQQMimnr`>e%2zpb z&d5^(8u9FlpYj>(sh@KAwL6~WfZ_z66?SPo_KQ{;(HKaG&JVMwZE+J-{FPFU4vt+! z$_}&A*W~$2Gv>KNEeCn+)ngoed{mNld6pGLD|tC|CgIXdC^ET9d4&|xp)~~aZ$(|V z&i+?X_uIFi=97Q7O$m3nm1AUN>PInFkMrNE+Y&+S{|hW>nO_5ebhea7se27m$6+s-hvE<6(Y> zwYc8D9X#jxoX}Atg{7W^XoAUiMXVTySZ)8|=~()ZLyS$8g`n!pv7mbN}^*lCmdueI!TEGbmf)%Vasyk@PYFANk>8#Y~YlGCdBK5+@ z-s;q~S`@XUYW-K}wwO`d946Wgny#4`u7Q8Ba;RIUMJ2JH*U~+sJY4~!^I~g;<8(FP z)`#QlJ9-7JUzAEv`qpx_DIUSE`*rH8%7As!K#FreC}Z;hStkDO+2M0ApQ$JvaVny+ z{hHdTtS9OCSeG7>d>=#T+=;Gi9oBQRkk1%Bq83a{VSe4HjV>j83DU`ZMt9^?S^VO2 z$qgHv%!SP9@&usd3C@C|Yv_Ve3;dlfL(Mxx_JG((Fq9v2?y!y+{FF@qfgE2bN-*29 zV`)VxB$~#_98{yZDlPA9XFK#90*40Mv-bzSyW~>Hgw-Um5L`G4UIU($wtT6T`zG4Y z`BDi%14SB&$F_Z9`q%BXEd4Zl1^SE2ybxjVdOhE1?k8n(X8py}_jIs);e~>y^_+Em zIUK2}`FN|Uzvd!jsIn!Q$lqa`?O-jK?VGiu$ikHQ$WzD2Q4a0d)1?a(il$#5q`(3^yb=|$^+vg==sb9nj#EX=9M5H_J%?@h~3*_0)Uh17skd=x(g z>>_f&rNBIzm&6hGiaYFNnk+LWod_B^zF5QOE^>OqnUA{qW_5WGn&V6v!o3bcu@ z+T^5yiRkUUQ98;x(l^p^5^RTs3nV?27s9*#Lc2hfN+3Nw_!BcfoL0v9aY;@$*hBIp z8%r-yn+&q;V(~c|1F|p&3I0X^SL>4}ALwf5hw(9Z2k?2#3bd{|xg{2;WUrD&hR*%U zw#WR-TdWT#b*E8jgTxx?^1SQZG7iO_pe{kugECmB5ZoGMP^C18C=#>cCp{xBv#kUr zN0d5t&6e^ZQl*5U$M0Hm;60)gq&97OVGg)_4~<{IT%MNdw4XI$gjG}q>t%udXDCcC z{2}d)H1z@tDJQJK6quM#`rO|0DU4eUmd>+$cay=0Zusf*c*h(TTSeRq~VYk`MG(m2o_H#{;G>5T2>;=e_(oiE#upM)f$(*{c0?kt(3TUV_PRsuY z)Zg8dz1_XJkXtFRP1L;&1xq&e*nRd@ngg&LBE6(v0XY7bNc#S#0a)>q z=CFMa{W%B}RDh7i0QQW4f90Gv z0|}Zm17Xmp%vwwEIbQ>@Ptb{Q2M=GyNt}TK{K>XU^1Z@Gdf>btl{W9d-rG%Bpge>7 z>{8#O!nfi>%IPvmS1!xN$YKMZHo0(2JE8UMt+KcvbikflveUxs5u@{Evn0|AeLtYS z6RIIizu+dktV;{)PU=>z9p2P^B(5~7Cu3D~BxlXrWBx4PO*S{qk7Q&DT5#M2i7VZH zr!kK^bMRe0$3^{JxLG8Wu8@J*c+1a|RJ(66D;-vMPq420(;Gl;+DsK5Y2AqWJH6@k zC}Nkz0hW9yxS)sNSrbkuzj?osNN$Vkq(8^qUTiXBV-zaFXH#&w``P<<1_-JsLA1ud zxR7hS_mBhH6p~!T2=vCf_0DqJne^nFu8`{3(%H^2{95d#LqHJGg9Pby#Bp6W&#GQEOxg!0CEI5Sud`PWD3jfy&ga3 zFcH#NlpF0UQ)pU89r~kZN9PC6N=y=mp`wC1qcrHn{Sv3A9`9S3dI0D2kxga0L79w+5s&QvNxp|&VwibY4;S z??o#*kT;BIqAh&BP3rqD^?KB05t!WqX_)t>;TJeTsQMG9{X_Q(pf9fNS|#YrJvoQL zg6qHMdJIWaL~l@>jA7Mgrosdl(k+V>8k=QMw?BkF2l$h>)3&#CfWe)v|GPeR`S~}K zolIRWE;irJ)!%NJ)e9o{n0%=>$BR_b1ezZ^xDq&Hy=7287N#6j?It}+>O+)dy1V~b zE1!PKP}>kJv=0mkm!a`J}fiz{IrP_5g3p7^i|UPU{a2QGl{4*CqNq2h&3Lz zbU_O0X-*N&I4)>4%4BnPLZrT0vZgshcAUX5h<|d$g8%W9){lHk*~j8ct$CBDJ04vw z!+KU=zgXKtR!-nH9+y)1Cu$A3DU5@N`#=`#hsN_lfC#~l__t*FlV82cio0}w97q`A z53C8rYkau2&8Dv_o?)tn(rY{&8MAa(OVFgTGE{d2$%_g0o8kd)N9wSQdAsd0Sf5yH zi5(%^Cx7w~zcmUZT%BGo2~;L|#+wfns71Xj0@LCg6p)wJNrhkt^vqBLO!Nho>0iyl0%p3HfBlJw-ci3+^w;>KcN36emUlECFKyZg76D5azZ zvqAj2f(Kw1t##QL%=@vTB6CxOU$o6zzKCWo%~%BAR~5vJ6MM&t@D$81{EGQTMd^AB zOFvk7-o(rJW#5OZjiE_E_Qu;e=!f&@m%79o$#^n+%<#s9cV_uUFE3zs?$-n>5E$_Yh>nfF3KLTn#-Vt6Hr^)+P22?L=Y4x4M;0fsH+pe_Pj5j7dydDH3 zn#un~*SjNq6P3pc;-@j{qs3_U=|xHi8c`VDgk^QlCx|J>d$0KY zl_IgQoFp}!t|L6R#5PESumYn zT6G&&=qVUyJrC=_WcZMQ3!48DgAEK-LcB%wS0L;w3?9PcTAf9D=vU14Lh=4lbO2vU z$T@|{=Q;^t$ahs(Xv_-0lcv2LCT@+f`j$g;y}n!Hj3<~FcWkYv2SSD^?b`mxBM(#gnx@3w}AU~ zlq-IV(Kcp>XSwLIcs?}J78BONU5TQ&Xe8)zyDPu}O(u*C3=tDa*cURt3_c--CI>T= zdXo#?1DR|ACjLZTS%#5Pp5rA}U##or@VT{_U0rYL(*$X|A}Vo8FM?O#i=Y7+fmc;f zePYjEsDEp8m#k{*C(|@|P`dt_=i`tAP`oUhq@N}7tHfbdlkDaJmqmpdl$4<4QjF|x z3DBV^An(jIkaY9lr)Q>VpAFdo#2Ui=ouChD#DEGPYGVCu}jbQvJdPzss~UV=+i2o@PejFdxI@ z)UiH+OFCmj#JJf??dkR%`KV&Jhi01ta&tPC(rtcYmyZi8rt49>%c zY###jf}rq|c!GxgAH_U3(rm@`yp~Ha#-8Zh1s~Tt>_C&LRKunzA|pj>h2-uAoct2{ z3!$toX59pIbkLIXYT(8OhSlA7Hh#sHLt?0S^HT~MV>{QJ^l!)I@}$|)_l5wgAA0+% zP$3Gp+>?rtxgNVk7uSpxODj?T^kK8jZ{?WU0ft`l*Q><-=~F01!Yk>$HA63_6NqeqK6tU;Nkf=gygWOW>OhevO;t81k|@jh0@D+7i&IcRVyYz z+84A=f^8o#oxz}sDxF_xh^Mg=EBep5A6p3+bi-V#Y3Rbv7=mp0yH?4;?SnOw^OOcF z+tS61PUC;gi$6{9C=UQenCy1#gOXl1?&;# z!vm8Xy@l4l+Ek%YZ|0RkO|!aE*UFflI9;nOg?;l@vBV~?T1N^IJNSU!`h#5ZkoU85 zPO&JGZ8MEsu?%Gg+}p`0f(@gMfAFyuc>ctGt}c0)f>U#de|ge_8uY|MM-O8DZLL4_ zLMW;-&)w5d#b=p53m~t=w zxsNh6PG3~n;tAJ{0STbclM%Sn{U%}z>_CEE3utJvQ#qc{!57oK$^S- z#RbE7tmP)MqOJ>Md&5*3S$?KpV*xAX1B zb>g_bs}xP1OQHuis@yavXaL(zWjHLi^V6On;B@R_hT%tQP zrh9I0GIK9eSK2*78g|Pe!nVJGme$sR{Z6r*l7aS1<@~GF;6~s4_cqQqVC1*NI+KrW zEA>Yy`H}#~_A5(cJH*7<;IXb7{2wEeIur&QY~RFZ%;4{= z_mPH1UuC3>c450By zh0OBeE0!5CR4?ZFzF3~)%<7Gt$2N+wa9qd>IpltsrDkFtw@AnLQf`xY_V05S7hBuK zUL%MVy^Qj0M_UXg2a>k8y9OI8;#|x&_Gm)PjRsAh2)YZ5yAPU71pBc3K~fRGw2vB< zkm#2xUh?C#XCU3_#$B0l^dKy{+*Ob8iO)KaHVEztm_3AtUY- zRv)*&YxbO}g&|wb#f{{y0Afqt|MZmuA`98h#|R&`C_L36OPOWVJu^TacNxvx$vjh| zw<34#5Xn2<4}|D8=2&NMIr&D85`09=wxG!@o;Ag`fYsEXY=i1}S;ej0D_aPvW+U|c zgvHYp{NFjipMjX2MD`}dw8F?cUcZsc--8C^9a$}E1@;JTyE&B`eZu9ywNuPn@1jET z?;I4z8hDmlLqOMYH1c^_hX|kl;5`3rNWoZqoAvdU*pzV(|D`3k5nmxw#RBnqhK*M0 zTgLDNe|d0bT%?biqQ{pz&?VXtXmY5QeEhy4*Sr#Q+$*Z#g-IHs@h*n{3s4m0SuZ4t z#b8)_s3C?ym1y>);kc^jCo-x-0&{Nc8|DxL<-gx|`|49Y zNN;UR87N{%V|Z(g!r(Yn2{xj#$@L#FWioC)jeY>Fdh*}r{a^~p^@zS*GOMWTU=a|1 zfeVKs0XLf#g;0ho$qMX7M!fJ)O*j=dkr}CJN;ny|Q+&MmMf+v^yQKK1LQdQ#(BO|f z-r>N~lHc(C0^VC_!zbl3R=@F>e=W>!pS~5E`^^$phNPZ5Cs+H5^VDYGOfqvDBbh+TAooc(r ztPmUlEfOWKXc0#=H^6{#-3XSAaSg+G$;IXEnTjYAaqbg=@?T1KuK%a?^cPC_TNRss z3p7boK_-ulHA8~|Psu-~WU>WD>lW}E{f;bGsV>hZdI;?Lq?S{cmcj--$R1Cxts-Ua zrzI+H7MA-cT|=%DBBx}R!G#~7_|;DbVf9JaHQuWijRa0C0$s32aJfS`hZXiBuXU>k z$$uM??+P`UXm#vlJ=ogKK*9mkIlQASU~e5?VYUH2f!q(x0CF1W8!Ru-C{vH~70|kr%;=OwEB4Re6dATdb$*v6fZz2mwh%0s| z$0^+p{%-Yka8umy#%7GV(wP*tF{wVb8ZH^!zaKeD*?1$9`Ejc|N@|BASNqPKM)>_k zLc#s_r$*`FI_D#d@xI2B+>_z6wE^0+MjKGEVgG>g=7g-m0*v4?XD6u8Vz z7{C-4)8A3Jy5D@QP8}{jeenTWlY^}K$cL^@kKUEOm-U#UGEgB0fhG&%ex}5i(dFGo zy0)%k0(f0h7-&0#pgXmJ@kuF%O#gW1u5iX|;KO|b2j@`W^LaL>q}unzQ)aCpMvDs+ zvCWUzfn0!IN?R=08qfz7E4YGN+}u@P)9%@$44cjvw&Db%y)P|wxANCRq-B_>`8d2hL4lx+|P?e=oo6UZsgR+ zU(61RBEEr5BRHj_rqX`j1M9AA>uVKp9RAmLpm3FDW}4Y_LT90pUA|aTlK45aPBz{JhM9a7$dYY5Y3nWx)RpAFmL@{DFz) ztnv#274ZlM{j}v&84wH_%=;Uuq=Zf3s6zo+HVd^Ki?PAes}pVo8jp8<8S44m+x{xm z5W}^CFuicD=U!WflHG@jABvgRcEm9z`3!um`L!1f$+7}0i)frWU9$8Mvq}zb)v_i_u%80$3Kqej=t9+`A`h#hG=C z-kh}`?8VQ8AT$d3Y8BaEi;F()Y*$(wDa-a5f|!8y5>>tp)RmQe>^jGQ@Pd_2H9#Y9 z_Uao9x*co94@t#X?;@Ko5m=vk25oX$^3zDBs%>2SNXoj;ZY?0$<))8gACZpE5yYfQigM=KZH4re#y&$sEOZz$I zFu<+nSgJ%dfy05TX6N|{=W%Q0${ysW0>BAGFOfjX)SLP|OPffjABU5&4r49>*Y(pit9hOdNy z0yfWeM}u?Hj5d|6!LLuCd*cHHv&=1lEb!5NgPg)y4e)+*97x7Vfv$NjSLu^4-N@Pg)Ly+7I-P%w6>#s@VZ zs#;~;-YP%i8wQL(1cpZ!&8ZwYhCmlKR?4{0?nHVP*`VsLSu7&wZ656PL8Gq_bdr=H)4R!zvOhznG_LS^dQVovSw z+!rbG{wVC`b1+YHSsIC^wBcO#hf{&E+ASBampUmX_HU^8sD^}<%CTuh_zARi1a6Av zYUD=Na{Mt~;H=3Plmk>pP){AyLp6t!>%(M`P1@%{!zYxFp^f(2a z(GXgO(jFQ-hIML=lfVo4iC%g6zI@CgJ7}g(RYDu=c67$uFyZ6ehEg1k7x1N~YG{cH zBU(`lo@dA2@-grw5xjfEWB#(*ErvF3W5hx*$4^+yBP6UN5CUmX%}CK91vuoJmyFc! z+rV&d;$dUe-_OJT>7o=97I9|DQzp3+)2^`7@}!)9BP|M_s$sdnKuwI(MyUYEKp^<| z(7gA{cyos^=sPHKTzU?r*F)Gv;=o$gAVn|IHDx}uvoR3wRco0Bx_vug>{0D02ktJF zLol!#=^6SqfScY%g=QXj9$hcS7cqf=e6+3LvLnR${k_3l0-Qk3L4Rg7@-)9sl%kwJ zEw<{t90?)F6QV5ChsHW3I#HWMOQ50KDM$QR~d4@ zUBW#6)6H-ruK4Qor6?q8GUAbO@N$apVzF{ghAoe5%JK7vDQ3o#;KGhmnjFue^13YQ zbV?sQne_g1nrg-7?wTS7`#$P`8{(Y|E3lD@mS{P*I0&={9*I?0E%~v91yRC5d6mQr z+YM4e5?*6OTAVq3J?dOGEv1@ZmXr((<>m(zcgbHUUZ&%%1Ag;=4byHpUoM-Kj*hrb zo6XzTWgsUHd+J==>xomY&BVc2pL^)vaIpQSjj@NpL_H(~Css8~CNdY9A=+H;pE9yR z+8Xawm>*_b<|Xg=neS!6?hzkRXbljqv;ptkgO@*tS__eazn|`(71bx4Xs-EtOL*bbn0k5d$`t1a`ZW6;`YL26`8Y{4qr{wWoU7X!okE_WW+Q$x>n#g z8id;oP?ZZ7;3A`h_?09nF8X(s>H3d2zaL3vOy^K$MCIjSSSGHsh(~KgxbXhSC4p$= zFwaP)z_+6I38=4CP(T!8e2^vvdPa-&6h$fk0iPt@9V}!?shAkt67T!`Owt7FdT$x* z;Ah8!A@p~T4GC$Aj}wlq+S|#niK8XUs90}5c3kn3aI zy2$-{?}L(81@g#&4q>9&s|-$dLxZDy-}%Iey75ov9-vF3v`R~ui}Z{2pURRp+Z%sV zksK9#FR5ZRanF86dToTc>LXGzF;?K>j%ufVPjBB{e~FEULW{k)Fh_eSLHbiUy7&6? zck^f)3CBH3gy#Ud+a4jWAm=JyGYWfi$X|mzv%h_!^2TIN7nW+1rpJJ|pdQU18Zlqi zPa2Vr+08bwm!Cg@flr;(HxDH|e*QJeJbzXF68BL9;htyzC{*saLbcX&8CMF*PgII_ zZctVKv46gyLv zVwj$qL*0fFb+xrE5)CV=5NxernQaQgq!_fZ7EPK>T#)cRX(=h4j7lyCt2+>eW{t_8 zYXnIT&ssfDvDBxyZmB`6ikP<+go%@u8PUFfW+VLoJkMnUU&+~pe5AT+O-G(H046C+ z%1tl|+gPRzjHh-;;=c&5Z+@Fh?VH>CIvrJ0;#*X)TAo8#WtrCIOl)%$umQo%&TB~Hz!YLeHF^-_(q`-U@rflNnJ~eGTBV(NW6s@z!;x=vDj(ZE z|0XwrjLXAWVp-b%vm#EzOvY!Y^zG`*?5=sKzK1+#Rp3v@9>A7W%`X<1VH>wG-%8-# z#aVV3uDPuJElK@{ zL;S0T{#Cxn&SyCYJ<%PCw_cu!7Nib*X}6-=Ho3(7HAnbrn|D@6ORSFFQa?rT(tX9D z{%QDQ@}^uw3gd;&f=@Uc03Z5yOBH|q4(Qv?XOC&ZOZNG2p{+mmG14yp?TICVdR5Sp ztInc-44D06((FGU1WYUKNbMWP@;*0TE~&n+(3vEp6?us zzP1bI8TK~kFL-xWsrzrHAo-I12qNMfXgwSUbDXMmwZ0v7*c(RPc>Mc$9}ZPdze2fIMIbNAk*&-r3+Y9;yo1lW z|6n6CS(HYRN)u@(DC4yFOr$y+ukRv|WNg`p`H0LU_s83dm%PvoA7@}nvAU7gnT9A{ zoQ`ta-~|RV9?w0^h0BCEYs&n?VENB&m=xp&_}A}#E{UvWpZ~m4{<{;AJ408BlP2Ii zFnr~bDI;3$ocgjm&!l{pb-8?$({1*HMS>=K+VRgd8<rHgb<4Xvs<7n%!N%X?v$v`{n>k#ka~aQwml@hgt=)4DA;52A21vc53k#ml~TvdpIM z0RuZY>(=P_fnW3_KW9$Iip%{Cz>E`{eS@vUy(5bXr2)C^MNv+tO*+444!+pq>EA+y zFiz)7YVxob8|w1GstwB(EFZBu%*9(>pF51T`g=$pTVydw(ZtqciH{)bi+rp)YG27n zLvw`NBX*pLw85Dj|E=tn%-SHxdwJawo`~Hx59}-K!D#ulv@8SoqdY9w!xF)5QC?Oj z8R+`xC$>}oSo9Q>eETTvg5&(7uBQ4>XoiV=*51>RJQIRsa~)U0*8gRjDqi&scj=%o z6C_~TI3VBES^lG(q8>ZzB!_)MOmBCwdRS>sVXPO>s-23wuSNg1NApgh)@p@u#doWV zOAr3z>JGt&ZR7*c*|b%qRZr%>%c@t2+;8vAgKw)iG1MX!(KAReVb8pjIVrNPcf zG0HN?ZXet#s98;@@I85t|E||BZ1wxQ&5N=p}y>(qF~~ek^RZIQg-NS&Z4I9Z`NQ6>QtHke;-KulG<_S3pbBCWtb>yk1)Jt`e2!q$NjR5w3J8d|<_f;Xgq{9#oJR{Yd z=ejoEBD(|>AZ{!igg$tzXNOQ$hu)8<#%Q!(i*q8=f(kZJG<;U92$Z1y&Lv)uj(xqp9*C@Y~(4nRTTKa~H%y zJ9qG}D)om(`R_#}NcRsDhRFnXDghB+>o9Q5 zmIy8VbO80lx`e;qTKwhay)HdoYM~JP+-4JauTmLsvG#if;#Wsm^bJ3u>1!y;=elg+ z>eYmhPK=pS0|s7x|H?|N!+#m<|9uPLRl<8~DOt#nY$aad>+}h+?5dAAzX98?Q*ZX0 z&wJmeHpXBmq*?aPgFe&X9%99+c?24M;mzKHk9oRze-L+Hj zofMR969}a`;Ind*Jy%Qg2~yi*)z5y(9%+PqpGaEtw?X&+I`8^cSpK<5h7o}J21#~4 zyC=Vmtp8r>ym+q{Clkh|`%S~}lJbn<%%mXATC3b-YLZ@+Xg{S=HvFJUnSrL%D})Mk z6^JUUdHX3Z^>tJi!5S@3jsffAGLyNF9-|na?Ke*pm_V7DZvqERTW1L?_uQrn1}(Fa zPSc7l^tN9_Np%Qmu@dKx^Z zpr95pwS>cOIl)BgHf|xBL3qx-6X%0go{jX@oszsw8vS1JijJd+ zux*suiwpU;!R@zQg1;cVECwK}s z0Ufc6vQ==!bb_&yDCGfM$mJiuN;po_@>H)q4#NyoEZY8X?>9;zkF@ZcD5RC@Fh(? z-KW+_0`-sX?B*Qizs6$!G$8?g7q1_l+LUuHW}LIQk{M-n zIB8r_2^!`?)jzcQ6KRy{g%K&l#3_RI*&71df^%N5+s5zbeXGZ4rBui%Isu&e&H89eN#yeF<5~>q1Gj!1Vm>cqu09s3`4q5Yv~j{H2bi_A#Je z^YWa~ev7;BUUG%9gI9*#@DG878#iDvJ5?*2Et)3yrJcMjZ|4(J*Yn0sH(csA6OJcy zIXnWB_+Rr_LOG^@EqTfd*;Z8Kp#J-k_qxyx^)}lU-)oIafqRcn6}kMoYg|`!eEy52 z>NLC(zE%;CKr&C(Oq}{p61afmwt1KG&!hhbL>!5!#;Q*TNUb;J z5eQRO3xus3{P|xdec?fc?|Gh`L|JfI^8Ry^6=%*bu!trAKAGuXc8vcyApFn5a4XzI z#`HIR@2wvEd0PK()&1XL!T-m{QwRj~@?z)&4xI+{>kC-!VfgLA|K^_wQ7>xiS>Y}; zPp`MjLDRB*Q3wv%L`oKlym3&v5$?SW!B22d`mA&CJZ`VD+96VFe{f?}=^E;gQX|TJ zo>H8TX$Jz)?Y0S*k9vIta2-Lf39Jd&GONlp=CiRWe(@pb-Ma6(=^id;zAF1*V3+w%>#-gX(C_R zmixeeQ(VEdhcafq`31J(#1$0=GAIgP?izPSyv`bD5bf#322ML5x}~~#Vk((~A1XR# z5dKL~2OoJ{g1`WbzRFsz!Mx3o+3L%9Cn0@k(TqJ;V{pl4Q5+DzXOwg=I_-!R_3vS zI6nI+XU@X7+uc^8%bGTouK4;mnN%B5uK;*4VHIKSW|9(Nb9<^+hiId#V;xr|s+=<> zq~A5}Qb=VN0fspFqh?C|W4+TN4Kw1{HWab>Qd4^9PAjLX4CZR&nnQte{Ix)N+aHgKp-i1cB+fHpS2c#B znSLw)1Mod&S%j!))jkdTlDp?GDjTIi5@6&*w&RW9=8^8#5^&*B(&K8d>je%9zF6tN z9L!-i;ExR@g3)au5llRMQQT@}LO0d{_=f%P_uj|gHf1KIIvezRL239 ztAf~2*l_EKyOgcwS=+vbpT0Z%;|7}SB~$^>5({+vZgiU&!V$yswu5P0(Y7*;G}}X1 z;t;TDyZF2EUcspNbzhmLfO+>M!ojE$<_l;X!QwpvIi{a>Zc~T2b`}0KUkGV_Ja7`= zIe&vC_gfN_)6N-y_7vUYWi? zm1#{#^DLi>jZgx_X-qxtsjJ~g)0JXYSzRP4AP~y!Nack5Fi300^<3DBc>IkrF>?UA z5{p<;+yTbP5jyDgkMjT-b|9(X=%?Sh5=solk0)x+bUlehE|PH;87?mSd0FQ#;gFFt zxude~ef7lSWa7k72a4YUq&JA;Lwsjo9KtB0^<#QmP2>N<{T#57tA&2xy|ee>VE2v* z?m(TflO-BfnOSoW5}77En8^Ot8Z>QDvccY3HfQv`RRpuyDMu4`K#$#bvu|u?S$vXq zqRQ?|H8DwO_i)T94l?0&nonn9fZNEa3a(G@1h5|P(pN9nat}}SE$1$cs~t^04jrD~ zR!GKr%3bfOe2yH-DCfa8qYjz47*5B%Xrzi21SB!G@3nTSx?1){gchZ$$O( zB_U!m_DVep?*}jBikB(O?)XX7LAo0LTC($I<#@tQ;f2iTsP^gdR2{odLY;9d!|o;7 zEC;J2G5vCPQNRLwjsW9;rsv>hp#+Zl@TyS~v_3=#r%igUp(_lVkK3ZO(V|F^FxQV7 z+V>C~M1hp9Me-0QhI7%vXS-ju7+SOz$vPuJ{Pjk&W)i;?BX)86z1WmRdwsp(=C8^d zaWg&6_MW!~p*XeP7X5M{FQm_T8^+SXV3042%OEW}Jj?Vdug-A|0!H-}{v4N5gYzD8LDTZ4Z z=w5^Mq6quxt<$|W%61^EY{_5$0cl6>t&yQSTiBPPymNMAfo+Lf7Sp74YPaoPcXl$r zB2{1!WIZi?|FAL9)(_$`DoD!8#7Ne9q(Lz+3z~2S1i5}gFEy#hpk>4lQu9e9P*Tx9 z>APW!%Osj;Q@bdoB{-E`9bi*$byq!F+qQ-RaS4dJ*)^59)S^|bh<5b+BzPj1fKzywyz-OGg0R$-gkKVV?Pag7 zU~=1;>;iWr(#MtnM~{s;j;8K@cho(ooz|NeLys0^IQp|hHa z{nfU9%Y7HBfz~2{AbpzbIu^lJ0hb*g%l!~QPlep^R8HeECB@HPnLXz@Fy}jA_g0lj zO{bPsG1^vN&2IltHb(a0dbKMcx&le=)0`sCL~6ReAP>cn)D^f9@x2BZbS6)tiBc{a zD%^qad#(kcM%o7s1#9Z;cg&;D;0OgEEACg{2_X?iv!`W0U7nPhUA+G3hQeJU&PuvF zOXYW*$n)QP76gms1*t`zTnc$aFXxo@d(fn9tKzl*~tQe+>}mRY4%T z1F%OdOQa1KJ4Nd2WR6N+(!8P{0TYj&=@n|64~9iV@A?EPIrRF)q|!MOP^dGXh{l@o zrUpFSRv7sbI7{fiO-Th#syRJ>;M+z8eff4B%5z5x^V2w%N-{Fdhf$|h5co@~*AUF* zN_f1&tm=wZZVZFYBuo9pWz#)3SkieuNFc__mA=Aa#(&RUiy8W~E-G z&S*s1i{)L}3CChGykk6`DhcOITWov8RfO@|F1=H*W`-c=vTj7D`lh*ZCV7?*EXu(I z!C-A^&H<^~o@rAu%&={l+WroCp7NoyT4w~i(Wi#>Ojdd%+{4i^Z2p28){KIS+F7*= z>PW>QKNyldVG@U-k`8{NOV{1`IEUcm`)k2tc9>wfJ23hqTZjF?SZ>>2S5snsZZCwq zv-Lo!N=;5**W*x_LM%nz7zHh0n=V0d;EX23Z?~A&I#h?&G)W*8$pJ4qCM%2_NOtyj zeld~QKA(Y8(VO{Du5}6sMioZLJB&h0xJGbWI!&D056bo!OCb3{%#6J1pd?)JBz-u$ zaiADMeBi1zCmJ*-ZQHhO+qP}nwrv~p{-1Q>>7Z73&`CwLYRfAV#Ng((JHZCUXGFN>NWj+wT* zT7y*+uV=0PdrJ(&1jY>0fCw1U*0}Cy>t44(kG4MNqaLcz|E(`u#-}|A;ajauTtbo% z=CTzR^`avdEjG0bCHE{kH92I7H9yXRRjnA#_7@Tl+w!me-|S@a-Nq!Of$XbyK5Y>q zN$Yl~;*Z4dj58_4*J`8c_katBaj|Yl>1N}r+4Sq@3TK<3w-qUKxYo_%YV#uzxhO5+ ziH#@S+*2rlHNkrm>;@pZ{l7^)$@xDiSntTngOj9KwjBeB8l)J!NjdQKOh^Ym9ac>1 zbC#)D@gH_xh5&BsGVa;4G>y169+O?3qJzsxhY9dcdPnuqVh=ZO1)V74;HoQ*oG8vo zi6mp?xNK(2<3!tH&4S%Ju6O(w830vvmC%JJUGqz|GL2O=lcgk&N98L3aCPGVK@0=l zQJTaNfSjr`hhb2M0RsL^a*ZI68LA&#j%Itd1DmSETgPG9wD6rSxH$;9wcA7IU$^vr zmu^cH`&ej5klv#}YD&sf^q>Yzs8cisg2&jsx)cMJz0!NJGnUSYhz$|MEwl&2sMoPZ zf+}y$QiPv$=`AJxax)e{3flGTS_Q$fh%6g&&2(8R#5qE(D+11E3#T|KS4yS%FLhk& z%L&n0M$=_TE1#APCUi6ZEF1BAHQBA*r#I@0#?WkdrwUn@Ip!lEP{FQa8TY78q%{VM zO8};re*!Wu=0N_0#0dKLS;;yq8sQ24)wXM)7DPaA)64x?IuI`u%oxiI@mlTG5P@^7a2(>+d#B>?6GL^gwwg(3@!xCtGcX6 z(y)X$tFnNw=WGq}i4n!XJ{*-&i9aex1u)O&dS<2!I%{To?(xSJTc5~2?3Ngrv<6C^ zlg{*6lC~*Jt%CjjwacMFF?nATjSI?%M|Q|7;UNsN!S7(u%e&fxf0PyxtlQ8xVKks% z`xcshz`%5vI;nXqZv(!AMPw(T0WVVS^+s1#TcM@#ia|+-p|sDEwq#?k{m~D#0i5y% z0P$r?Qs(~NSPyh4b_7zqM<~+XVK_xdE8vlC?>p3kTEY>@w5Sga!5tsH9}jh9#i>1Gr*bQpEpq7yrX4qSs{` z5XhY3x4WR~(}SS~n^;bul+<9mj4QjU1HTP5Os@LZygW)Yl50qAr+NrmbC8XV6W1UG zBR%4x+D_~+^{(AuXPCTA!!DZvVN{yK=>?r6R0nHL?n{*lm zsMzBI+N}}Kvy41hw@W*+scOg^s5tHum)-*1z1Q^+dDJ{O&N^&5Buh!||Fg7uctqfv zZKC5i3D2{)P10V&@Qvc+ox#{=1>+8A-xxt7JD?{Ym{<3acSoBK;jK1pni3p`QCpfk>P{wDw89=X7 zma7&JaUU^*35ewpZADt9*D0XHbeGJC+xaAF?sPm zIM&v7joFaGlfb85#ShD@mv+|OQlN68M(v5M>h)wSW)@%l2=>G{=U&tOxsQ(p;tI)} z5oOqFH!M|KN90o?d%0v~3V+J2zLcDC{xlw->{mV%Tuz zq%XY?chkc2O}Y+6YsPCd7bp0uBb>#X?K|!^Mp9EICNx4}a{4i$54n`0^^ELG*&vn8akhx;rH z(T5KRLSX`!fYyBfW7~&>wGL!A>ZCL4z~lNVHiiiS46uXdQE;@(T2ERe5((KU?*+~? zwP~BEDgpT?3uIa8_YGeC!=Pqg4UUg-YwOfd_qDaRwn$?yl3q->75ACbA-&I2xh*hH z2IIfZDYR)wnuJb5^yd7vx4$z zr}#5|%>!&Ek_`Y2CqYEMp)U`=WzZgHqmpI-23~LKyz2rGtD|OO?vKu*ko2VURy9$0 z=S|P-nq3=i>}Fc{Rq?HR>P?j`_uYGlTYTvh0j?Vu{d=_S(s^V%eoQ$3(wW~fdEaUm z-yq#S7oLp*nOnQo`edYl9;kD+FP63*e-3Q21=Dv^ku`;6jD^ilz%iYIlY7z zo=5l@pg{1i8oEE=*`5OHXg6GrnV43|l%3#r%>5T?KBlroC*GWtaul`)MI42O(-D?n zXe0zO@^t=@Hn3pX)=Hen4z<=Z;bcV$%)pnQ>C0*^xQV36J21eiRC+hd|5LkN{Z$4- zzYc_-isilh72(&^MG@zkQv1QJ)J`!+AIj_fyuCxw9C3U8dU}8<-rqzbm9T zXX^Z<{phPiDTAzF#6o4N3Ny<-h=b)Hih+?FU@m0qM-M6TW5GK9K|tpu+c;{=h8x}^ za3DopDPbg)nOGUS{<+w5i(?0zcYE{mZx7Bpf(B1UA@X**Cu&7sOFPTpQ!9uy*KQgg zN~~gml$~uet|l`m=Mh@A9*r?4uehA< zR|Z^i`v?UjnsYB?Bqa$idpr&xKRzr~imatc^m&kH5f+0=Ie@pEQqWv_V+UH2{HGWV z5XMSqBREKzw(67gDXWJgV{d5XRi2D5YWa%j^ zyp`}*^0N=n47t%XQ~~$C>q}R_QaJQkgne_2wxd)}C0-&VV>3Wd&*DpeNey-E0IXFj z)r|#AC@H1`K&~2Ly-iq_$9Ew?+E#ryeMwAZFiQa8vgAs{tvO282H-Zkq~*PpI-3`) z@A{n-&-2j1Xj^v`>324ff?wU&-p(vdYKq#-71cgVt^Q=D6;nDRN)qx=S{J?g?~W}A zl7Ada4O+=Y#Xw^icP1#3S*ue`7e8>o7iqhwj?#=%G)X@bXwKCYnPPxZ;Q4^QH}~ca zpHhgm7uFg6UM)xe9>H@DcCt&_7ftxTQ#kC`CtN>7oUCN)d)-owtyL7q^1_z_UXthQ zSiE^m)ZA!}3pPmh!49E_-rUfi5HxgrM6}_R#j5Nv9Ld_S2K%km^O^$5p*FmNE!1(i zjL6Vl4xi~Y7*+#E#Ma&QS)&mwl|%qk_D|mp!u48$QBP4oGuoy9hmO3Az%|AVIlRAvR_) z%`mJD+I-#gRIMFAkk!SU72fVdrO^)a!(zKdsU>PyZ6`sIKx!UjIR20VZ9nreGsp28 zSq9!cfOFn!R@Gtg#1hU1t{YB9rDMUsA;DbOw;E|em~gDgYlvK*M@Heh(-BflaI;o* zYAm^d0Rr|#*kvAOOXR#Bx5zy-qiX3b|GMItv4i*kD-nGel<>yx5BH$q)LDR-^hBe{ z`&dYJm@u)_gw}ha*QNt@d9W^iA?(%UW#h&-yEf^{@ts`qsxt+8j=52eh#sP`&wt!^M_+QqukR^V5m`;-MdSR^g$ogB!ouO#CMI7m-E<$uS2%k{K}Tda4y$Y!x-JOk5Qy~>8yjFuw%vFBCwZ;{baEfA_9k^1L%t*$}0vRpjuqoEJ zq%+7y8NhJ!Pz*dF*=YC!9mX$pv1y?USalG()Jq%Cl&(L1@z3(_5%c=~R>_1v0abQD zy`mI)>x#C&p~W)j5b#QPr>i8bxbRO%%I>B#VHE5zK{2!I{kp(>UOe?16mg@;yjkK~ zc&RX;>pl5V&2%`Qz?UpAanE0_P+0g;>%lVQc9e~)SAm9kN|6v6Z!+NFgS)fzj7^~)6NM+Xj}w~lt)(vPCaDxj~;mP zv4?0c)NPfz6lBC5G1I^1PAc}w;uK_qTba94_dsZ(Ro#Sn0gdD!q22YLevbIzO{?-% zJf$e-Q8=_96Bi&=P&$lwM`4WF@c;{o~ZM6)m#Iz#@xiT z?6#+Sv?i)f;BgGg^KW>Hd@O#b3hQoV=N+SBRX9PHT;grjcV=KC?5xDLB!6{G2UoNR z{3~c2T+21~54*nXD6QJHC?sR!V^E+%k9@CXWqRj~QscyVcNpP2MI&iVh%EYnTEF40 z;vwoC9KgwMX*+r9b7OWt8lvq$rWz23PMPLal0N{67@<_&!oZof$nqaJ;2hG5ghlyu zx*kyCl^{WznM7yJOc-FnEqu#$rRK}oXG~9IrzHUY`~>WNY7XnS_r|yPE1tOMhpD!% zIx+U2m|Mv8Ya6>}V{QwS(?~K)VHNHmM^fA&*BNy_!#H4dj~(R?Hc!Jqr71UJ$w%w8 z_l;L5mT*~gsyS<@ogOEc4#(8zvG63a9Gh zd&Au#2{XG%62E$oUU9J*rvLgDa4OVgnOaxYdgXC`h_%K#;;epWgaq+ynd_wBAa>vz z6B1+8cBC`dGkm~&T+LzDIa6@3(Es2nzI$s_P|MB${KIn9C?F^wPr|lHb`mG5vp-`H zGH~=YhC+OQZ=?f8?Hfh`fq*GPLVd!^XEbYYP;~f=pc%7^r0GGxAUUO z*gBAgpp}6wgx&)O*AfA&a{75@PkKio3hv{A8rR2H_Qhh5KXgcwGById%)*B6vmud*PpYO(OceZjol7{_|)r z1aX65wA2s_@t6{8m|{2bg9Kp0uCB}S%x4Vtrx@O=j963r!M=W3+n9g@lVG_EfOC0A z5(widaw0FOs@NEu5B51vFrn~sKgbTRF)X|ZgyQcdzZo{4l8)3r{uHNULkshfOoEZs z4`6DX$J{a(Zd^=5L({ELjpZ?80M)C!Z<4RQ=iX&CVj4!CK4fDh8^BT7h+5w+a@DK; zI9~cobPb_6go-+DPpe{mv0+orF%&e|>$X<%axJNy7Lt4XSouL)8@Xla*s~d|9_Py$ zw@K96VVREZ!&TFH13dD>bjt_s4^_Y`UAfn=uq59Kp|nQG!3&H4 z2u`W4w8jluK^nyiD$55`hbSP4%~KeQgz3-Ih0=wPc<{bU>cDK8}fry-vAl>8Fne zLS#Hl_y|F4dOr9pIbq4IWX|K}uj7{Z?-3Em4Pa@<)8g!P$=q(|^G=xyB9S?eYG%t6Ll%c#=!=wz zw%y%Lo2{4il4a-*^=Q?Bez;t!{!9`~1zXMfy4pj9)HPyb27)Q!m(YQkpF(QOi0W!j zO)j}^qdBHty9Bu?3FOxol$}YYauioYR+8ZQ^Z-d8IA+N9KnoY0jG@hBioi=%+O0ZT z*SDq)9O30m2m^Qax$kU7HWw#u|Ex1`|5WP=LIyaYN>uw5stM|%1BN4P7Y?8u`?~{6M$Nz?o#wo=UtbDH7xwxUSmC@@Ztr;J7kU1Z zmGrZQMr9!ww1ndd-p`zdsK@FAeqB@`tn4@luY!WsKS;iHThx0mBT#vFD>+(`WTyif z960*1?P!oUGWou2O=V|Nk1}Q!yTG#6pv^WEcg_Fa1r*bU;ZbR8vlCg`!#?)rmo(@0 z2>E^|fQki?bpz^#w51(&-0&`Z*=0pQ@S4TPPQD=5MP2os9gla$Y zr8ue2MUBXsCu(4><&Q4wc=LLWN}du&J)=b|*;@({H5ymYzqUd{)YHCwbc;vs@9+<% z955n2khk#n<(aAG`a%y{`W)o#8W(?dCg4@{d879BubBle#*DmC>)PF9($^G0X+x(< zx>qhU*mj1QwSq1|}W5o7Q?E&nF)Pm~|9)(vM@sW7(5!H1Xc8FOt zbE)T>xQSr@%5?h!3p@wGEg1sM9kAV06}_ob;wY-mIZ&qOj9v7SY9w-9rOAOM^GttX z3-Df<8#%0qRck?qOG!R^^m|itxuqO!nzhmCIxQ6Yh6Sp@rS)Y2FNoGDWt!WohMaZr z`?*QD(pAj6jg+o2#eP&Y3=5br-uA0Q{$?r}D8A!}d}*bYaY~HNa$Lf?{9enlNBZby zKVUHx%P{8w->NGSiA;}H%FOFfLUu6x1N^Z&>;DhpBNs*Zs^+Q@2~sbQ6D!F7&+K2_ zyz02<=|6M_0MJ%e4bptTutsNR3#Vc*K3|*ceCVG_{OO8p>;!O%PdgI*|E1KVlkZXF ztDt4|EX6h$?*Gr%|2cpT;|2kI{Q!+XN7C0Bkuf=G(%V*_k2&#e6kv1=_ezJ=S~Xs1 zSGpseYYnz7*Z;pB>VPmAz0Aqey+hiT{cmd02%WjWI`sfRQYqUB*~omxllvRUc@H&Q4>FNTG?m%NQ~(opez`5WHT^H$9w`MWP_y7`P?g?Rjq>n)n_uAn=sfhp(2~XrStRXT;oHolnZcWPUA1SYU))XI9q*!V>H;&ob!y@fWz*VZ_!P@4lP6J zQFwY`yB92c-;KJAc;Z+Y=9H^dfl8af1LM2F<*v;{5vdsSS(~F|xNNdz$Q$EgB=OGW zF<4>i0BR?k7V|=T+;c+C&a}Xy9+5pe!>v2!oHMnn?i&A=xpf=QOrF5}J1>7h?$Miv zWNlPtBG~jI6-NV6)?mT_W)u_GS5>P3tjqHhnKLk8vP|c1uiTxQ1yK?}zR?i-Arsb` zZ`@4~-3Lc4S{j6ROOA6g^tn}r^>0ATnT?vH;&Z!K4fjmvlqOPM6`{6gD|2{OohNDR!ul%X#qQHYTumMSJzfuyZ>W14SmatzC> zT)-}$oy$_Jrg@%J(Lb8__f;a>vMf1TK7|5p4jaKLpk?G#v8;T@ChxF~x8`D36Z8OV zpu1_Wp#Q7yB#spT@7^@84Z1s!*0NY(xX8>&NalU1g-yE*2YlPl$(CYVVm=28z%vX` zFlasX7HoJM2m%(hzuNK-G($EJugS0K3rGRq8gN7f4efPJ9M8GpuR}MTs`QV^YvnV# z==zXI9RD(a!i|Js4a&PEIp&JHfVw>dWoU-7gPyuIW-zqD8w5TVCpjXf+OvsZBUDsa zW4tl?e zL4*GUE{wni_w0UR_||kySMr!!0*`Hx6rAR8C~v=xopV03YlQNY?`SF17<~JgHypIH z*ZkxFU-n#cR~!%7b0&A2epo-;SR{_dywV(65X~}#EfG8sqM(2g#eN~m!<)IN5+;Oj z#Wlg=mrNNMd12?mNw#SivHL)XD9Hp`TRlz~iN&B`|4;zt^cSJA-fKZRdfmAJ`8R`GIIoi8SX?7yJXKh=LyQpj#?#WG&r zkYQ+5oj592sx)0_6KeR{0d@dn*lg(-i|};3ZmjiUD8D(0;55tbxhtdm4w8Ol)Q3@@ zIga%c9D&S&6X}*0PDZlXQT116(@D95eR9L={+AizDUY!W{Xu6OL&}3v(kucLQ_1A= z(ygo^S<-`N|I})TPneK?P8k{2+o2#iy54{#ERmHHuv@dRd;Szv87Qhe`_<3Ie&k?! z5WM*w*DSj(8x8AC#^Mr1yC)r?!>oI)sHjs^sP)f|a$rLo4drfdtFt%1>84^Lj&Pkn z8@Xf-C`2Sf6OloH1NO4udJ+0@pIZ2nNR1(}KM4}9Hm38ExZ8baMzm4!loTuyN<_P&2pB zxDRJev*}bVvM%YNp)TyzDaKjGmd;s^j**Ju!VR(kehsOaBQ?p%Hi{)xTwQr?b%|&3 zJHY$-giD95yf0+`3%iMG5X8sQGXpFE)a$-oW(S>*(PefDMwl?0G_(+Jd*sA^tssw> z_Fh>e4C2#kZ%tw18neMI_Ej%iu$*!=6u zEOm>7%dB1^U2)3~$C+(lk@p~xm=n4K%?@5gn&-uli^9z%f6f8)}g)?-(@C*n8C zC`3G%upiyIvx??cU&no`juqPk0Rf$FDNh~f?6$p4a~M1|Ig$!;X;!6fQ$ z;JL_c^d(p(Gj3T?96A8*=?D~8SQvxjlkiixW&tX&sOz* zFQmKDvh#Hy1pS8MSAs0edZ(8Q()%}Yt9YW*Xo7gVR^HBS`iNKSwR;LeNDaX5lx<{0 z^-joGK#j0kykW|?WY-4%i>X|(aYl-dZ10C`$?UE0dG<{RpxalPIa@bjZo=RMmUVUW zQ*~uz&Omg#ASivM_t9~boc5Yd zFGVF&rknJVZMM+QQfSh5)nS3FImbm@k`lHXyMCm58g7S~_6uvtbW zwL$$XK`tTI$_^;OlRr(*mQ|yceJYBDA&kvSF_t;_C*x~(`KVH$mK%5|;kT~q-=afE z5Digi$m(F4I|v0~sW>9|sb(BeUEXn3TAsisa8JE+^}Uww)peFxA--WMw&4?}Fs$_| zj8z(F@5*}hh5dP%;-lNwS5K!+BNy^e;YJ-xj!4J7r^(v#BOOys; zAQ7U%$89cklKY1&7|LT8F@!cCEC*7Fg8+O)2;=bJS%;PukA6`}6JC(w4a9}Lv2MJ4 zN~x@*EhKxr(a|tX=o&4({PmYTaq0}fZEe<=*aDHQaQs zAF?9ms>h5muF}vW8eDX?aYA~e2w*xfUaLkOAREIbhiIe{r$ioXWQewIHsxXvhamiUy>>LEW z^}hP8mcx3}=xIEA$8mGQds`RmM$Iu{3}|qkc6nEscP?ty)wD`=}K-NJPu}X$f7s=rBCL>1Dse8_?Q|;=$ufDY}WUq>TEKxf8YVVlZfk z^(vjpEvr!WU);cs|I5LVoT)~~JffO2-YGY=X3S5Uwe*l=kn#h_O+~5r7h2iAaLiK1 zQ{|bQ+9@$=fTQoqlO#V1_4b%TH{v|$UhGrra9MKw?DKFSQ~e&z0&4JY%adJ)$Ky29 zOgXm-xpNLM?|%$j2y9*BrW>X?0QJB2{fV~J;DizjA>~P$oVps$aG$CR%_bw-wFlwHQN_a$uywcxpcVj#>dJ(4$d!A)zFlucI* zkjOy1uh`iiY~B5v`2>D759 zt=3)Ldnq!l?+%=CPYx+~#UZe>fy4Lv*ckX@|mFCMgHP+M0g9^@KVJ96%Jl!CT zrTPzxOgBknjQ+O{3EkI*x_52bN9J<387gh4D+{@<7c*#9e>>|3(hf@HipkTC{I8}CHp9DsozC-x8Qe)dTUtGe-LN`bHSAe&1=2t8iJo5VwUL=C9W0|A9yG z^xRptprZgPUunypWoZ1mJU0XGE-z* zubeoXrX^jn0IudZd+0h}&;rkN;P|e%x-}KP*S43dN<#aFu=tpa&2@A)^MG?U3okZt z^9BZNEOW&dxW&zE{yYScoQD89AS`zd5&~q+o%w@TgvA`J{ljOWwq9PnoI!@|YuQ^g*=cA=|Xo<$Lw{+0|$mAk5PAMa&fM z%={1Zqw^i6mG_P_{D=fO+u<{wz=oVnou6Bvy2}2u{ShYnhXnePHp!*b%!zFZx*Zz~ zXntUtM*dhhv3@WMV#47-d`z(JVRT*##F#kF4$Q>`%56VkR?wl&@e5OIz&bn>yQB&6 zZ_=X46(96o2G->$rTN}$MJ20f>i(CebtN{TG2v*sj4BDkoYY?R&Zd==o}ifT856X$ zqLrPj;x~qCKl9L~f#_6?&eSBoK0ZMs(cwB7Ng>2INp~`9y+g7C6|BP5d6lzBoA=4V zrh%WahqoH37)!T7FM@Q-Z+X-Wbf-cJ&x|BdOUHiKzT;ptu-+1Ti5~@%rFD;DPU7JQ zM0Z@RySgdK4AuCk`$AzaNei)}?|R1Sn2P75V7D;3J+m`{ar+q360hYo3j}bS&l@3V z6;mq#GB$!){W8YZPGkE|E@)xtqIQ`V!)uxLYP|bFW>np&NN8lW%WCmd=K=U=jp{z? zAHz@h?nl^yr)coqWdF!t!z2bFAFk}d<3qV56(M2jK!CHc(81e=VtG7V5>Ts`2xbv? zUjFAF3yH|o6FXL1;pLP7^w?nd-8k|Ee~$8hUgoTf17FbN<%J$cx7q$vT$No^?50n;O{69WP^o)&VDPb%6oR@ zb@fBBw(Yj0kGy(?hK-Xk61}6ox4#i{2P|T>6J>vGfhZtLsRu=A5IpcJ%oQ9&B;eEw z06Fk^=W}XiFcHcdF<SF>3=t>07O03x6_c z^Dh1i%$l`w3CbD`lwWl=ZLtvEg~lys(G;3oLIPuf^-ymsMwgUiZ^B=T_qp(k8k`;~ zms%f})fV|_;hoWro?YXIN}4N$O%5{P4y+eHcx`HTE>_5uGmIiL>tsG~ja1wL4RD_j z1Fam>oWCB6-4a-ufy!PY#!4$uUWE^V%iuyYxwNfDraY3f7+pxYO^0#!aq)oaJSRzn z&p$P)CK_LRZ7;eUqYVn??BUpNLKV7s4VEwZr~i4jB)!z~U$t_@IDEr4()FJY#Qi`Z zRnJV>DqE?wC686j!+Jj01|u!a)mTRzs2f1Y=@d$yJM>=VB1-UH*urR^dYNfyn_LU* z9MNWOTDifyR_;)s%Vwkr~3lA`zi8?6*R%VIw-PT^BFJ_2YJTN`YM$1v|4oS(6 z3}{M1kRq?PgHg7=SAovPz<(^HO1PV%xN^_TeXN_^mnUta<}Hkb3~k+Blp z4p9o?_mkk?HI*~TTH})md$%~3<%ZCCWdlxo!BscC8d5+2Sj0YfO>g45I=ZJXKufYo z=ApFa$P+IBdJV#MDnh8(W9o2Hq%A}GhmRUEt~n0;MCl5cl{U)b z15Tg^f(cT#MS04%|=UW>i&QjnkFbr8Q0U@;4dN2239AtHqENG5 zNy$ul$zv(Pt*i%`b5hT~wu|YY0wDnML3kU^fc&BDe15lJvsTL=k(+C$(ARHW^I8YU z9xIf4%igyUy5i8*cQxo@N6aSMRtRYljmPISK_ce)|1E{AlB&a4eILPt)e+(dSsk(2 z4xx_@G{B;Wk7o-DPFeU8XvwGu-a1jxNJJ?Te(80Rl3^Yt<0Zul=;NvEqSQ;m`@te5 zmpCK_4iNU5=uBD(IBb2Mszg#bXLZK70vi(2z;`)zgdF8Bl~RN^7OJrMu1V+hI&Puf z72n~`^(jF?-@v>gbN|b$xVQMpDBKrD-#*PfV-^7jjdJaG=mk%8;L?xSJ6&uCg!!Iz zofSbW#zj9_+&i(j;ikXZpz34@XkV;C&u;z`wvAMkUsZ&ZaN*gEb8{`Xko)M}H^@Qd-Tfl49%PN-B-6BNmA_@toPNwZ+^X@P^&Zs(J) z1j48)fJ%-;ONrVLgK%Shrwpn4XIg)_2Md<|JMC?Dc%M{-cen#JftFuTMtYW+WgngI zFcA)drmtcKEl;~5ja!e8N``;?!KV}J5j+m;w<@c}A3sZlf9;Lv6jvCWU%g`b4CzLi|hwkrG zAMlnY=1e_K8?;M9$ALz*Qx!SbzURwEs6Q!U-Tx4*JEmT!T8$H*;sli}tG$LRmIml! zL6m4P+X0Pk^p*-C4~eU>BwCTU_7b<(MV2?atD{mVn`USGp+nq%IjDP;)|_3-!x2h9 zD^X+3cy`FQ7?5iZ@Phjr_=WXOW6({*3>F#8_3cNKZq6K>RJLzeC;CL$?-LB`8X{}Y z>uX;)7k+axz4bn{6g(#K*1H)W52@W?!;|so;sOe-LKWfCbYbh$=by(d^TtvzdIp)v3Sg=1F$`Jr zM0DU+J8E%a%jZRJ-%|ypnJS1Rqq;t}Z+F6FLsA?-{Zdm!1sPxV|2{o5c z9yIaUK8qpU!=FEH;YG$Ig(3e*QYZGOy=#tsbjI2W{Tj+R`3m1THv_!wv*jMwlyYYW zZhn-~F!7}?2C}7J43?6W=xHP)MH;|@9aH!2sXNOBXLE!X{fcupX;_SKVZ07bn0UEJ zpCuTfdL*cG_vtzLTRg{VNLvxdxL3Ub^nb)!HG3_MAESC{q<0HOwSl){O{TAIRY-gS zT74~LM->C>@b`8gTb`Jc7iHm$)bt7TShyCHB~RVSc` z6xpdU1(&_SxB3FwnX5ptx=WzLfz=fOSX-oS8Q`J5CFlc~8X z>i!XE*egVoa{mDPGlIIWZZ)N+M!$ALGXC{h!vfJk8MWI*Psz|2kKwDrS0A4R!NBIA z?#1kXW*&o-FnAMVe})YZLH91A%gz6=OH@9lhOZ$K#)ZZpL|BW@DSELto-Mkf`+GD@ zu&n*(U^+%?f*7X&4fXBzKy)q~W1`UY4?UG(2SYXUwiryn6h9dUMRw_BL!HKK_1GFN zw4q^yq-7npBp-k1ti4&r_f6@KP!3833n(EQ*q%;UU?=dx1A~II5$ckV}mg4hVxn}uNy2V#a=-w zaR=2r@ZQ^FR=6FVB}%Sdx}n_+-iZqg>*raS6xm4d#tH7QrirMZGf$) zJ~>{KftsA3)(y)I-OGRh*n=-9ikLw~`LVmY0H6J&f~-{JCa3eg)HjQOD;lr5AeIv! z)`&lhv4z6hP1=A`xnP49WMP+f@Wj2Z4FMJu*q5Fo#!SZornf-XN34!~1Z~BuIBm@S z2<}=ygbJUVT<21GemWkdy7 z?2}O6#KtZNRIX(8SDIf6v-%bBe9KRS74MVYc${d7I4ehf@U{q?*Orl#eR9!6!D&#H z(>jYnoMDh_B_HVrXs5wIMn?49X!?`56`LUfFS5*YFbd&p!{TYF_yxD3wMIH{{* zC&ck3p1Zn4Q4Rg`ezqgAer!W>NbGCeGPdlAw-Q5;h`Y1uBiT2@6)BeqDMf z`mcZyFb_iiPrxP`CW~@g>>sqtJ1{pOm=7?_{r?qc@H2PPKjyFhPDAB*1gg(}cyapH3hUe~lm+~tya27WMmy?&JG}y1|xcBy`ImG2o z`%s#pPJ3e?T>fVjB^vlnM`9oc!JY_}>8qV>7m#SiAuXOo0+_cYeePr+cZmA)>A^p9 zYfIPP!B&b`Ag!9{Rf`cV2CoX9U}}qS;|A<7_WXmii{2xl1HJyKnT8c-G!bXvkn^7C zlJeMCVu61(xX&W_S(ge=%aTl}vMeAOCc3=5(>QAm@IN+unqMtf;B90#6?P&FeGu?L z2cDqoT5QE_mN>k(T}>46t8s`AR}57vi7aG-0h$;d8i+L)p^(Q_k3a7jE`%eQC6&Z( zQ}tB;an`etK3did3Fvvak%}^}&x5`pMUxS$1^T;C^H{+#x7i)%FREgUA>l^>VoKD%p`GYH`_dqNszWF<_JpCMj zfO>$V9!hZU6|Ocm&s`Hf>bHyU1~R{GeJ^+EC$CD~+%`8j7hqOdKly-!hSN&IkMt5l zzgz~t8XlfmVgA+k#XNXx0o0<;symU5S=$1iiuIGfc^q2rie`~Sx^x@PeC4A=zfaD3 zJ>wgj-n3#E(2)3VaK1xZ-C1*@7ax!G_E;DZJJhF@pN;GWfWJ67d^Py$EKfv4chmcm zUdR857=61Dl#4i+7qJ+PH_R6}c6>E2kasx#lxW9aAAixL6(N2;oF@?oLR6(q>SCKo zMHObr*bO`=TfvMwqhL1Apx?xRC1gm>o?o)7x-myomG8e8TdKE^=P?d)rAvU&4KtkZ zDZ@TOF7CO0!%U%N84t^dV4gL%stG{Z%*fSCQd_O|2@p!JvV!Z0d5SC3qoaq|8utg$ zvQF{+5ke=T+R$oc#fk*T8?fltGuz)R%UW3E?cJ=s`UmiUI`*20?t3Fq;8B5BJ6(>cabFNgIfCcD3WC%!PG!15vHpo)yeIqWm@EQ+lGIiqh#C`+gfDJ{M z3udFEq<@oM!H$@U<`sJLfm0}CWN;u-xE!7RXZM~=;MW-{ijFQs$FVAzawH*Pq&>yA zDec84k|%6Kq&xp|J4K9If<8~ssOCs^lkJJNsiu+5L%CtbhmS3w9CpXIeLZj5ABgJ0 zIw}I`f=_9j2i6sO$|DxbRWMy>m5qbJ#`H7cV(Z!?5f?JB#K`|F?fu@O*y%S}w6AG_ z5=kwC9#Qv+u>uo-`dbH@&+fe;I{^F@o*iq!C|MkF8=#SH-RkN64}_OC;Z4?+aOKn7 zB4~QBJCr()$q06bFLGx_u1x$G2IX^xfQz3s9u7xMe67sutUtPzuyFx`Gi*>@Tw!WG4gUsumGtb{gz0&c(-i7+0~(e1W#){+tmt zm{t?ODf~}cvSxqLK?VMW!?wyB#h6uiB$LIo7d3$dMjX>2Yu=@83xy4meLA8}b z9PtDgvJ~P$5$AOLjFA!FXBN?C*(+E`9YN|Ry651fPg+|Bt*sQDD3~C>>Qee;h`+t zwr$(CZQHhO+qP}nHs7{w+uifcVt&AEQk7Lwl}e>?4k-24}T?weL;w8oMM%*6_WDeTaK3K07^(W-I8 zb-}s<#eCeMrws{W%1zKDpXtpP#8Rb#sshSAM48&xhG5PFnmLv_)tgK54?s}DC#FEW z_j*zKevMaPnMaJ9kk6R%nX)ikL1n1*6A8q*x3gWnDugcOL*O_%wTV%Fn*m8di2f6sYztw?63AQPlKfnY~&Hcb6NZ{Il7bmeL9a#A`qT< zO#9!JbciF@oE_CuyI%)dg)lqOz_mby_2z@#@w5O)i6k5HG?wgAp`@bw-3ClTk%+&& zj;c(i@On@!w3(fjNJ}sjEmfLPfm5Y>5{A>{Oe?pR)ZL=W3T1MZSi#k+6E3zPZ}mw= z?~uqCdq!0fWiKARi?ti?>_0ewu!)h%o}K6dD6}p_R>nn zw14gAm4RmS+&1_C)1m%8oV+mV!9ZI0Al^E7gu()OOWuHGzM@V&l9SV8a|oVn%xM8_ zJ#wNC1%FA%2b&7h{V*KSW|IW~v(UDxB4ksE^{>4z^h}qO9<~)FQEz(!-48?y0azjk}C0o*3zbR7$(D(|8=bmqVvNA1B9ccvn76qR9=?{28Ax z(|oT4k8%SHND?>iQZyNf2m-af5nKls;B8`xywNH>_7ziFH(#5e`zCR@FJzk7^Nb7~ zlM5PbB@5jq-HL#KJd2Ry2RJ@_i8_iOCCoZxud7<1P|JcPa%C@e(mGbELcKaa$~{C@ zGy&Gt4#C2j;K^^lqPAmN^b#*~2DhnK^tC+ACdQ;i6qq@rmM5J$_KT`K^WYTTADq}Z z4jF^UfC=*eUXQ$I6-ez6jD1gf002$(Y$<1hUkp02BZ|6lbFPE8-U`ua6OlNX<4BMk zODh%k>*Ano+$Ev!85UgLJPCB24MdJMVB#?QiI-p!4vBiA?}=l9X1G2}W9}NkyU|?i z8kg>F3KQUu+d6}uzYO9CA@5#8h$lS*FbQnu=ZJ?v4|T^2WjcSmv0xX<{i?Y^6R39X zXqqA2yQQwK0zLLcBoS9|f&mOQgCcVgu==_Uk%w>_B0MhL{R%AcL1Fd4pAL#SB50}% z1lZIR-W`*J3ii@|02%ReNADSU(cDU>Pu5H58HSO9Rp(M!?|YkA<01x_q6$7Ri<4~R zZXANO2LI)GqAj4Y6@g@2=mpN4H?M+{0D(&3LQON}W=y45^n+!<3J5Ggt#rM%d(he~ zgQ)_pm3n07hQT%kiPaHj!N{oXcH|6xM@X6JOPLCqVoUXB)Z%|Y(YiXP*X!u$6`X%g_iZ|L%irS+ z*Y;=3yip?eWSzztEZG{Z}uOLdsvIPJ@ zZ?dpJkNZj%0AV;R>0QQN{wbaHWfa`gKhE_*G?8Q4?}7CKSP4XH`J==2x%O0*Rgx2H znSxA{IR#ec=kkbRxkpZC(r}k~1y0*?kJ;Q=90-YeIPtnZ?fX6N;4G)rzr~eg%;y!VR197 zBq9|3ZHdnf=dDHvp_ra8Ee1(LMFYU3?Zy1Lyu#=p`Fp<_!BZssSys^ur$Seg^ZO-^ z;8);Q06*w9t@vO^?NjhFlx9;vo3*b~w|1W9U?VH_qm-OaR=mv#VvAR?rZ5J!#;|B- zA+O23hW(YOr^r++uhP3nW7DJ*+EMvK5nIl&9&FL<-er%HteHDUaNC z$iC)jG^=(2fpLT&x2$E4Qn!%>)V|2@eGt#o(*y~XL)S`)nn(tmj(1Jmy*{-^H25pt z{SQA2E(Rfqa_DWDs#`#3JE?v!z`D0bMXfsItZ@3K{hvrvgj?OXivuEUtIy>}9Xqbo zz7f24Wp4>|Jn|*fa^9~kTjxkk2-xGKy%X5o<`r9MeJ#Tdu9Bzp9}|162K6SRQQa^B zZSP3CXn&nu*Eh{4d4K`CjleA;vHP)uIjG0sYM)sFYAj#gg}yNgOi>jk>>-}d^K>lx zo(HhN={lLG58CP8KRZ(g>iy6v5xt@ghOmRF0H$NO^DrntXtsYq~gEjQV> zsz86mi(^Gzu1m%2_R1PHpQ7UIxjApIJRItth0C9ccK1~{KgiZh=pfU6n|L-b`#;$< z#P@b1b-&(LU+)s@SD1k@%I_X-rFXce59{v`;OtDKcApr=3J1*bWwMJS5Nj8fX2%?W z+St^GZH;wwL+^uD#yLf>v!V1sB}oSq))0@arI{2V4 zC6se77o5{^G=$xh-3Jr^>xK8u2^kmdGC?OF$9k}D;jci0&-8|__E}iAcMT+_`(ov# z!KM}3Kv;KIc;Rx(y6ud^v@~FH-sf8?wNtCY+%rZ^SW;G90cwGd)_2GrhMx$0RNdpH zum7;f*zaA!O!se5U)@izy9Zjr+3E~+u*`A4j@%vVZ$t8 zxp!GyA$eaxs3pj9qj*5@c#jXlrff%$e?Ft4l_HU6X9hEy4ZoNwk&9(SkN{vr_@nBN zn!1rB078(d6(-t!h}mZtDT^RB>CgKQzH8W?SZEG*+Z2LaJ0r~o-c!KpsPly@#g=CE zQRD1^jubFwI-*ksDK}EaC1I zW!jDhK4UnQ^66FPnle);STd4W(=~#~qs`9iTP(r=0fx_h6~&$40ki1^S_l5b&zS1t z!L4yoAyLC=$?_dpg47b_^Xpn`gLitQl{aBhNy+3xrI#?&ys$|3-%pi_J|Fq&8?xe1q8t%bSyk3DudF{)EVf2t z5RlqMGXmG^2tgyM3gvtlV}q!B!9%BNIuOg5XhF8oQ;ygL+2)@j^08oFo`0TKm9^>a zA*MP`4|gEM>e7)#9K9OR!HWh-^@=l_xIDf@G<_W^_@+bM98sJEMRGibA4HZ%{1s$#;rVo|yELCZ0z}ApJ@Km@xY+eKN?+bn&0aS6Ne$(@3Pw%3Q zGr800fI+IoxOqSauGj&gm^Wb`Vk&ZA4Y_TzKgqY28-c7f0Q|t%fY1bOCT-#$2nJxRL)#36(r8s9oNOyqwpi{k}mm)RA+VlVbVB-E?2J}esnNjHu zSF13H@`<}gI-dXVyh}q=e8M^dWOiPcK9hUX+QHViYNbBWrXUxa$j+}h$SFj93kc{8 zAoI@pa`9xad2suvSbf{PjMth*Ko^EttB zhH2C~IqJ6#M|xdPUs3<}iTmwAA8#wI4& z))MHViW?=980ZJCtufk+++oRX(=Hw7$6peGu~E**ZPJ?FT=Ca&=HMn_4ran&z=xwA zq>+d*uM|UoEk<)DzBYrUr%`@aKIygsN{zU(l4*@?%NJO9>5d4nt@Z-zRINo61-;vTy*eP?4holI#l7S`R?{ zZIFP^5SJWBtiH8uDTvar>q9QmLV0hGbv zFhgvVKRD9sSHLyHb^FqKBO5kj2-x_7!xp{LJ93uuevOeC#LClRRY06WbUB_m1K-dg zq0RF0i!6)W4H5&X@i@>CF|ZzFm4E)a{RAwn6Ns^dduJdK%SH?7B#0xjz;w9@4G+zZ z8SmQ5=bB@8{&a2dh~$mOiYyELT5@gZ$?N@3Ha zV<}yP2CeKbmArb>=n2u`*1-OUdf9>16kE@fTU{JPvrl>%XfxGC!o$2^uYVPjoja`M z0#J%GUO!2HiNS18mx|~d`kp~Ec4W8xj-CNEz+Fxvxs@Cw3=P<9A;Pa{(nbUIlG(@r zvnPr%IS?nf^M(W5m^XCW<+Cd$2z;5!5Nk}_J3rQan$6y?Ca>N!MA5JyWU#Bd56)LO z+%J?^F3F89<*My-l%>JxD}|ijulJa_{2&O7XL@ ziRPaXv9&@+ud_9h=5xZ=AQGTb63d~u`Ci+#7keFaOs=p3&zI=x`po2ZKjUEVuh0uG zYml`^7Z?(k*RIbnQZYgRzdAuG3R_U=n4`@UfpIu;Atq_N%#9OxhR>SZ>eZp&Mqry= zpDcoxltY(bt5-O>Cynih{lMO1TXzwQdh8a zdT@GJ9$We$Ju|*GNI~kM2vvbO>8~YMP^bWH<|vrH;5*yYz;e|M0GD97+>am5(RoRU zpD8=m9Q8MdI$X|=N6{Z$8 z-CMRkb+*b23ysJ|oqo&=5xd2%63tM0Q)uOQWCMql=G+(v2jB+>ME*|;h0MIqp=yyqnl_K&%r?1&zf$z zQif1m985Ne#cLBHONx&~z*PB!h4P-2#4(qy~kO$e8!ov zgcNdDmh#B!q`MDd{skh!QOEjLF{W*i%}W^H!7ZVV#G22@?B=uL%uuEHI=Ccjk>tbq z=3zFst;)AiJS>KqaJ!t=qn+3r*Y?$w^Ev7|I*|b^rOe2Z{d=nOSQ;XM$sW`9C#Q!Q zygV!S81lz{8>81VHvp1or#=cXi6ZO~)9|G)8zeOXprFabc~{p|YH-&!sAJEYJDCsN%BVt3FwG5Og0fUMtk(7(gg=em(9foh%!BD5P}P7ydwERvOq zER_EuH}SJg=F$=7lD&~X6Z zo}`8~FP()4)S3Hox{E1KFIhz5kCZ5JuFsn8xhYK1JF zzg-%$X{urxfXWM}_R*PPhL4z(|NZLFg>LiP&PUyMt+|+?yr!YfQPk`{d@3K~%61{9 z>!HvxsC+V~7A6k@63Uy4Gkwl$da1En6tOz!WgXh)l}`-E31nx&RmTwgdKfV0Z`4hj z?IhC54uQ@@;z@JRLmL8h3jmNj4=8cr;wh_GOW9x|u@sut3fF^N5an-k(~l`i}ML@JF{xZSSeu z$ZUG;^|6cye9|}P#VFwM>&`E2wXx{SEz{qf)jbUA3f!3xHT!yYKZAW zdH<{!FP-~s@nyD%+_Xqy2YQ}W%x!lCh-9$NODlY^h}`NS#NU9-66RMmG%TS1Bu@75 zI*)L^fF@363(tOo`)zAEV6jGI7_psNfe+6!lu^*V$=wN(IBWL}{i5i^9p3n_*PAYr z5|BFJ2Z+nNR^blo14jbM9D)xxJS@eW`<<_lLv;sk1{1WicEq-dg5OlmBTqWVs7)r!$@o zC7W1D<}+KXGM(4FP_ zJ^6V0F(CVpyIXi6%}be!M2MPmypaB8!Z|%7*^JL>lrZ)2a`CfAmt0 zM{v^W@l?9Dt)Gt8_{<0Rs*jOS#+Z5e5KQ=D1bcl18vE#xSd-QrFDMlOyUislG9+lU zBIQto8Y5v;!KGxx3>Q{)Hm`6(LzWi*@p<6X_x^tUTcOj(yFI*KCJ3>Y?&-G_>*Kl2 za*tCH)sUQU!Q7(zyKknt%qAv9k204AY|JbN;=yqhqU@ir?PjyEMHKzVPwZCu!(ZND zSeIQkhQoWzsg}Y_H^Qbpmit~w^1_nWYV@e-9yfC)aQ7i~6HS^VL|#b_GHwmrL%-qj z!`cML)Mbg09P5nc1N}azu8-=TLZ%r{3TXE4rXY>0U$w@^Ze;6Je}(C5kcZX1Bb0-E z3nYzUaQRxatQkOU!Ueg;Hc;i8^8Jm`mQA1bRF{qL?*7mTi15`ZrQPVor;*Pku7yC0*Pw9F$}i% zs9zH;#L%QP6@HT5KAFpgGAx{H!PlUF5&*A zJD96VXC|p_vv7GcC=a6w0Z(R5u_)X7^#}ngZL+f=w0MA&zk};CQ78I7ka(x3*4~V{ z>`M?I&Hmm!aXw9+9@nWvoodM8h3!Zy$J|+%&)7oR@mkqpG?q}6|JiW}{R5{C8-Ss8 zFza^j7fJl~+#ZdzKI2oGWlO6+B5&ci~brs$#x~?r=t0e zSP{8Dn~J>t-P***k_3EzgV-69nzRBwyB?+yo;`y+u|n?SO+mZF8G=X$uV$sj*Q{UY z{c)S1y6cb0r&gA|_u7|e_gO0$W3ZM7yrW5e^YZj!0wqFcb^g*&5 zKVNn$qULdwTdio$?6KgBaC+A{C*%v1(FIBqMB1%M zx@>>CwK@>9v6hoTVC#t15_afbY^PGq|Ln&VFdwv4?cREYX7?mBktZota3QV#5)m8p zYS~o%g#oz8Z0A2f*eH%C#Z7!(g{Y@@_K3h2Kts^|gO2nh+sdl5>JW|GXPMI$z(}Pv zrSRou*EnA#3msEfAxU!hY+hABxoFV;Eg0tVAFznBuQoVIK?jKiQ5is<2a0&N+wwH9 z=1xs<@r12BRj7KcstrP_Y4v+I2mCTg)5K^mi0 !C=D!p@;0E35h}Dv!n3uF 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 U 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 diff --git a/screenshots/dark-contact.webp b/screenshots/dark-contact.webp deleted file mode 100644 index 6a37d2ffe6788eaba5335a62a31b8c2ab7b5198c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78190 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⒴S_+P@X`NQmLJI{cr>9C?5Ieu<;}HoV9}?mRbw@pVRF_QwQ5*@ake;G zT+?&SUw;qsOF@n!whq`I1YKnzJNjzP>)gmS)X0DS4`b{s%KA4-Ht>PNJhsZ`-54gO zB$GOsh*p(u8o0Bg8CD8GckS`zGpyTwFg}sC z`R7Cofk=?0^5**wA#b8eZvi*i3((A;uyXP^Y_Z$S(2HiXx*YPwYCoLs?5>N|1?Vs3isK6k{n`hc5ZH@}D{!skVV?wQ^XY z&b}zfPy^K8?v#c+%&H&;(QHQ0+%yNk&Aq0!*nkB^*MkgbRw=N_%o7LP6zGHA+mZt( zBQp+_6UJdk#$KwxPzy34qq>W}HTVoLG*Eh$y zohk<|v}N}*lGr8Ar2fzh0y%hMxzk`ac{4ydMuT8e_(w7m!sYbD9)KxrFT+P>Q$*Bk zoY~=+VB}lu3s#K3-|oSwQ(eQ|Ta$Cc`S2XLS5j9QFHR~L<4uvP6NLUlh#x#;Ma(*a zGJ_%XJJbFEn&LOXBKyuXHUM#}u`Nt6;>@fyLvpnCEO%;wxwErp1d)HKd(_Aa)?2${ z($-Ml!3U~!4uu7p#15@P-$|k<=^^&^h1nZZJWN-}XbLJtP7$91Tt3I(#|MwhAk9%> zrATDok@aA4wH2I$dBma+#7yV^U?`!e_04m3eTH&(pq^;A5%tMLEwnVdOI)d?Qxmhc zE6`p@2iM3y@`m4~_(xRZMWx+6lkZ4Av^?;vj(>k{ZbSN(9fBEoV~wSYgc~jWcPeL= zXlHtWoT{@dp(p%%@;G>I`j|kT|ELk8Y`|$L142ibpUo&?et97Mw5pS~ZRvaITsTw> zaI*q(KK~=ogi)_&AKHuN#O1*2=UDoa1}CuL7<)yUn6f8G9!zxgZoUR@k;9pS#$S*6 zTv_n8!X!&0b@^kq4RvHHfxv5#)ohV6Kko-Ke|6b*xwHiFBFeN2nK`i3(g3B(%)sL^ ze7}f^jc;|8{PB)H+M%;NJlViA6k(+B~`&&q?0gA z2QM70MgoMlCLBO#c~Q%IXrb<#%mg^;ef70jZy*&xo7b0lmqLSc$Yq3;1@z%bvES?# zmZ(OHqHZg;`;pN&6;t~^kQ$L$=9o0EzTMrF82ip5eX&e!BC6|+D?e)g!iWv;q~kC_ z7AGq+G$}~}r-RL!?d+cH@{sO$&ORnS?T}tjOTIQCjdd26Z&uk*huRP2&1h5a-cz5T zVp_gX#^te+)5Fp{0IdP>oiv#hC(U8S-2AW{zSK9L7ow#hHet8-^V{W9MDzX!N&%8% zny;&!-LVq!I`i5bYm&9$K06r~Z<6a8^!{dQ6GR)lq{K1V54u5>zUt~NEBg^vO~2~8 z&Z_aEQxYPqY2c1<7iQs;BZZj6nuYF0UgAW-oypF=$;U`QD1?1sA>4(JDb{G&xDECz z2g0nyhvCu+c~(oAfgWCSe+mvDW4kug#oq1yNzwEy?Jmn1pe4o&bSSTY^te~p8(}XOkv`27a~$mtJ~@LX z?_qe8!=IrbdnYHj`5?@WYTIN0>1j?|D#pG13*B-CGx=*Eur+tj3&HRK_Od#7;fa;} zLYUyPW`Fz6-B^&$>SNJJcT?}o%Pr>R>gtNKukdt% zg}1sWJ4Omc%OO|G3S%ybTTc6!!N3C@TT{l|>@KIAeaqJOS|Uv=0)uyqXEx58g;b5% zekCf3Gvvh>^B=-$aNH&_xxAR50#^Va4p`{Fd*kHd+F{M)Sp6g1)Xv^$Q`EY_uVAof zl^HT_+A)@{3Q6j)2*B=%PWH1NJNjF~)_qf(Uov1}TAg&Lq@n;Bi{cx~qG{ z4xf2y>96(1N_Gcd(#7FUKCOhO0+@Az(v`LMG~nnE6>H`=ko-_EKJ+u9=!J6G&!J~8 zIlP1U1NuBEele1m)tFVnFiXIWBmF)n0MUF+!x7DI_f9N<4nIG(Lj zVQ=6I<}le&5g-id%dYrdT|)ncT@Cj*Q&{uR7jb_m|M2|x{~Fl41M4LIla=dH5K}1x zn>v0G)R7wCWUU;&nIG<}}_U~7pc+a|Zx&>|T)@1ka&+jkvFMV5FZ?-A;H z>KDISYK&>4C8(w6>9EAJVrF(`4u6vLng7esCr~$DzQZ}Re95l6x6%d{T7+wTX+y#w z&8^PjJNl?Q9p1CjUR?3ZP*T`mI;LNSz(bA`SQXaZc(lOd{$w!!jcxa?PSbg{eaWbu zoazpLt7umv*ttlCoxw;jW!{$f$1{Wy1fvYS3TXa0=~3Dqj34E~0UQ&B9CciVC_s;6 zyc4Sp`fg5iktaYT8tTY?NcTr5(+-m$S%s9qHt|l0U~D9WEN7(d^-B;>x<+P-$Ppnj zN9=+Rl9irKgopJ4-PH%x8=LmC=qeP0g(FCX7!Ih-Ge%@Kiv?A4_DOJLkC7c1>0n73 zOzuC)E1?JBG|*x3BbgtqXZU$PPasJz4^^&%oYComqIY#q(7(S&LozcW=m!|V%_FmyYjlbLF7nlvN- z>f9q%>+*^1xFWgf<7AAjUG=`>fkheQc)G22F$E2keDlI~f>i zhVKa~82dbV0yV+aH2*H|@TS4oxK=4rFEtM-j`62$0**GQ!Rs|!=qs=PM43fVU~H5* zQ-`Smn<637J&P5{`{)6OvU+P7Sbym;ReLn7+|ERun=*i3>w$AC zxRScTL@A4Ye!ZTV$VocdI{N%rcf!xif}@-NVpvqK?4P`Z ze2W`O%GKC4-U(K$YI>9$sbgw$`^JO@(BJ%nP$g1r7J-VGhMc6x`S=W=0d=>pCs6qm z6vUDpfI_YRU{xfU-lYg6!a@KJBS6rsZ}J_63_$j7vO)uoHwmJl)ZWE1=Qjq}`^Arv z-=1G_M5hwEL>%b=bq$zbvKabglgMx+(nos~vSWSYtJ?B=|TMIUS4DFye-zHAk!?baLa- z@!^OqkO3~^`=K5a!`>1V@HrnKL7sii?%kJazWEt4wEKVwL0FmE15+9fYTG@&8#L@8 z_!cBnA$Lw;l`7c^J84>i3iQ~9A{oa%&n5wHg`JqDtsDb|c4CbIMDdIb|KJh~y0qTV z*dDAqhD!c$PA)2RW(x_~;kjN)#qne*mN$3yD01b}I{u1E)}GyBLVrT=53Q*_zx(_c z^EdCfO8kMR4dP$V0JE^aEB+GVz4`z(3RU)%%K)vb1P%q)oYv$wo2OIR2DhTJu^1MW z--p|Csw*n))8?Q;-X}tp{7N_vQRg%Z1I9tx z%ql1m% z9{Gz^HXCUW2qy}nZ9gZ)HRB2Vj@22S#Z;e}u98l^t1!b0Y^s}B73OmQB-Z`vtlZULP)ZYKUHI_P%y@pI+5;oWa$Ox)x05Zx(!7#P+tfqa z^vCDRE0wi4Iz`5uB-mt?XiXqCApm}q9!*7_ZHIP=l5&P9+Nu#N5=#(t^4yNdWWjAbu=qi6t0-CgrjY>f$v5BZp`t96vI<<`B9`dXRkkB zrSrgSkhATH%W4b*m)2aRVGZ|b)Wl$l=3U7jY>~-S6}ALjr{GSB#xKud#zKml?Y9@X zxqqDPnjMj>A}?8Sn-l)Fovk~E3<~$R$Z+YsgjOdQ=(qV@n=Y>5MwrQjvb{nU@0aKw z+iqIaCqo6)Nn&hNjVcY6(einRxS*&<4jje8;JU#$kLO5vqPfyz?P>N`ph$`ROcZvK zWTZ+uKY?S4tP}cAKE_i#ulA{smMQ4mg_kv^tco6|vLcMJvXk^Z!*AlomAL}MTD_*F zM{YJt(RW2Lml+giNkW`bO)uaJ)HcaAPe+q5<|VyHeW@V+AEewZnS^?J(@c?F8kud1 zy`jLmHruj%c(1-Dw_pd8>Tnz0N4d1Ct>tb%>4&CkU9{C6C;ci&Gs4%tV9Q~en$ zeNVu|u-k7Phe!R+ztZ}e>Nno95c3=p{$C=xxaqSDV-F5BC{p5ZD%x$;a4ul1VlZy> zVx^U8GL!xo4C5XmjGbm^!YTdqx=L>hGGlf{8Q-gb5S}}S+uC@krQ7+7xwW+YAi?7K zHe!^7Hl-GxP-6km8XOi$ES35A=r97viv`H>rW8vR%IgqdnuyZw_JbBPhIu6#l+aE@&a>g!Xz@J z*E|bO$Eua;Ao5odJl|hnm;{53#n@LljhfaW2EVK$iA{WD6X2}3Tjy@eek^oO`OF^y zFjR2sW~%N(#D1chQ*~k{s^GQX)X!{Ug9B#OX1=k(kSt{|iz-LkQbbuz=Vpx(y>@g1 zk48|3lzc-I5Jr6!Ex@P(>!zQVvgw1hh%*qd;fF(9PU{0abIN|Y%W{G-xF(f{h6Fbf zFmM)&Yv3@97uIu*)yS+5eP0fIb`)9I>~K5ps`Ekg{ENIk_-*#P-vGD~of;%ex^g^% z#5G<5#OIsU5}t#8uWZ9MJR1f_ddcK}85buBu*Yz)xGG^j7$M8XTN3Kz`1Dl>2gz~o zxaVIJ0}S#>67;+e^$Mh1iSm-HGBK4-XWqVj2$z-JF-STVzZR+PQZ+KQ{w<8-eO673 z_LmHn%nUp0s(Saro_}R*954SG#2m-?iJJKQxb@s+$K})lw*wsE_6pp1H4>a^ro>jLLvu@>(qF-rib!6fmdp>Q&MOn@P&7k5ydD zyC-UV!et+w==mtlQyL29HdD(JpiqooT~g?xEA^CqXB4V5-KvhC2)eUYS&+Z83m9=2 zO5t?_HoL&?8c`9GUl*nCjj^2)D@pk4Un9^FxQ+a!4;uP}ycT=<_;3d5@zF1Gj=_PL z7u3On6Cr%Ml*2scfJGMgqNlX$u~wivbA@JA&*5*>-se=k0D_zRw+AZkrPbK-NP_7n zYNSh;1JQK|AaJ#Zd!yGr5ltq>T?kf3Yy~656OBV!kUWQ;soo8J9Qumw+)SWH1ZG`n zZ`zU~@AveDiNQGnDtF6^S9G=9OayrMH18nQE&Vcwn*U@ojnDx7N<3Wl(6D~)Qg4vRTP$364MMCQ0iOz6wUSWb& zzm8ISMpchjuN+yv<0k3z_ow9mPh19#hI3ER!s)M9fYnil`|+JDmp(NBQP_PEpnu3O z=)itxzD0sC^g)g8#9#G^xrf=qkn~ObfHpF@z&gb0l$S<7ixpS&V%Uk>C@+|0L>4qC zT5TzkmER(s)dsdrcZJp?Oj3<5V$_6{Se5M<=TyvXKQnb(x;*3w#{f9w7#yCp+uG$R z;FkX>hQB)8%rQ#ke5f!z|9VW#`Ke=(SIi0wR6yE^(5AKO=BR< zjWd><2AqjI?z{XGxgf<>%6^KLLhM!0QS%ryn4K{8f1*;nqasAA561w+qV%ko_tqj@ z`@`gRGMd8 zK2YzjWLsTF91#v6_^`r%ONN>1vFvSF(o}>5q{5xlIg{i0hvRW5Txhvb)XikjO=QgM zfZ!xvGm1Lp%IkCwHULa**r5O}%@(na{90hST1Vd~`V{rs;gg5q8#VLkp-(*Df~&>x zhPlXN(9#uS0yWHZ+HHGza_pXQvHw<6{gRts`h!g1;}{gjL`mz7uddjp3#irw7)7oDjYgi1HMBc@+ezo{B*^p<0O+ zRsa!uiQ)EXHvJ3;5yJ*tIg9i!b~@oh%|c!>m;#ZNZ`cq4 z?d~m0E&_X4a!v_L$ER%@aLqf4b4#$hHlZQ|xGl|3lyrUi8(>d3SCF=TyL2jgezJ^1erUQ+{`m;#Jp-ci z$^+%UK{Yg4V%%w#qP34$Wv2LA5>DAC`H$C$F8ZNY8~b+oJzT%<8*6>|H2I z3b&@{gGf)!y5#ui+b!B$Z4)d!$h91;8-Gv|5)@q21>)GSf!#V>Nn+p(@&a3@8QtHp z#*kv&;7-K~PZSNo2Ea&_{Qy69b_CSlAJz5Eh~vb`uu)W?W-PsvduU}!8k>1SvyPCu z`0~Z2`(sE)CD@L<6EFYhd!qo14{eOk_Kvt|$SQ?@xs0_?Ix;yv?~Stfn)pjgEBafk z?p>P6pD40_=d7Y`b+Tp}5HM}b6O(u3M#xWIxFH%CfXa`ilH}vwjw0CXIaI%3E&zj7 zeg1NzUtb1TYW<|$2LHpwp^O1JmeAE~AMz|vOzTp3YbnL%ha z)*Cw3;kR!E9Vwd?)RbNpR~JGuEbL?}$6ed9WwWkqsfC) zC1#yoI~U-H;xyjyeM8Oyv1V#9;W+rc9-mVDe->5d2M#XO390!58<;{j_hRid8n+xo zx&AN(gn!n|-U1uA?LQ0?bsLy5z~h{Ajq9txq8cVC&t(j1TBK9TfVNWZu&u4iqzd^* zDsyFVqXyu4O)NQN%n9BCnM{)>S27>x zVcQKaHKcr}wb7T8t(>iWDUu-y57CdX8dG&*CbsQvVNuob=1Kixme&_gs>(&B%zVxE z&T|`p713gAGFjU=lc?uyY*$2M(K))?B2p$wgjZPGwTEfbt%!i;_tgmH5L4gsAHLnfm|@sXbPi z5U+U9J0{cZ$u&o_R6s>^M8fx_rKvZml1{&G^&w>206bUL{^>5Y9eb;sd zPcA%ouu>PA{6iby%RqN%_s~*luIYiXcTk+{i-VLKsO4SX5;!n7D0$ap&^&@Be1WLY z6v8%~9*hqotzdVRaYlJ`T8cm4SgAo^!QbOa;#k-kIlC*}$9;PPUmZ-o0l=XFuJTO} z6d^;HUXOssZtmVyQIA!wkcikV@p%Ef#9MLVpWy=q^uJ4X;-gcO$%}pO2LcA@g?wgy z8lsluhFG)jy6tn+(rUuj>v^(8HXtkh_XQ4n0Wl%Y-bL1cHH&<<{1Lq}v$M!)nntuO z8O4rgNG~(5??})%<_*^8HXKz6C!XBiYR=j(-rD_vV{kUi#9%rjiYv^iM!Dg0xk!V^ zEvhXIz71y{yAP~U6G2-dp6!^qU$?kXpwz5gH+~$m1puh|&qWrdykz{6Q72Rv9l{wl z0C=FuC^$NN;StVncpnvb!uqiz3QG&Q9cvV1Oe3T*{^YkR2d@Q%WhGHJTA*A!NdqP6 zi0Q4Ib;4{XVdYP7EL@>D3|y#2qf8PDcALK=-NXr zOu)k`ZpRB&?w zgV25ZambUbwicudjxRFL)$ePjWYX``MGW6(=Y0burB3uz*2*bmkOW&C99VP!YKe>4 zrujjU<0$cQ*HaFgqL<<|?A#cJW|1l2hQkzm)fsl#!M?(>PJl?I+^CA=PTiCrbeLz( z=)nofrHR&|NQUX;Ax360@Ujg`W~XJ1jCC{@1!bw9`QwAvK2M&8_Hr2b;f_BhD3aP% z^h`EQv2XwiE4EHxY(*_Ff1nMHPE|rQGLM-#h=Ta{M<-4;Bj&BoL~$F7DYS3ir8K>#m-W&iv z>}_5SAW?H}+CLjN@L`)rzMUf|2N?gU8AgPyD_?GO3BC*+PoNuWis=c`1HC-gNiup- z#W-^wgE&Op4aC7ay{%m}SV$R@p3^cg6%FI?$A+{`g3HVQ;f1@u%&cA7iCr3~cgH`| z>`T~V`x-Tl^2eKT%gY6f5JLd+PrMqpo6C$+c5C+~e40oVsLDV_Xgi2DW!oDwt6;Hs zFAuDSG}5HUY0!)hcG5uTBZ!5j_c?iTh*|`g1g>=4F(kE6c&6@V{I%r4{?|rE5e0)3)jKMlA8&*7bZ}ZjcV=U!$jMMEl~@dxYY3{Tf;@1c zK0IygKq@C#-lDcOjHot;vk=HB6xJI=0gI{cI6!ZfFYEF4Ck9=IANsTmIXR&0gH}C+;_zb?od-j;t}4Zlmd~&iOvJxMeit6J zUEWW*ERn&-loQa^sMIlB-O*~;I!)>yVv?jwpXe)+6!29fp0zpbEO^a%RdTX~%!-pt z1S_bfpJXccUZuJyzfyR6vy}8x1cUaHIyWUO#QV1^LySWx?B)ptQx6u%#8YOStA*#V z*0t2Odhwk%URcspzws6e(1rA~>d>D=^Q(7nNR+gegYD3ck>~sEz4^Zt!gj%2~U#=|d3S;k67MFB!GX3)N0lq~2+=KW}}-=K*L6ltu1#TMhnJ>>7o}CQfDZ zLmFa!Ben=QrMIovl-W{5(0qaj{(&V#`emPa?fZRYo&v`@J2e=Mo zQ@gi2dvNesa~?H$Wv9yp68Ze0FxYV3mk#sN+Uc7mXBa4@PuNyrjXw`v@;MudySS}& zbJ@EO$tev8b$QA6)wlEao3<_NV(-w(nf%7OVD#MBB*9b{!TY#KhSYxFfw0CetvJ#pzLQOotYs4u zBgIoN65SWIEoTN3FR4fsjR6r!pPuHbPJMWcbQK$_34e@|jM7w;lDGn%oe@Y5!x$K* zN7e>7gtqT=S5p50^0g$BnY`zSLPuSxy*~{ym_iNF$QPs>n{`4T#QOXPDcbz7;UpYe zy++sO^_t#u|NRv~zRc$nJ-x>CWI$|FP(U+Nq+ zdfX9o=}Zzf4c}lc@BzJD_gV!jNPegdKepMM1H%yJGqQEUl44$0l>Qf=m1_4zCn;D* zO+6l2*C9+9H1a9KRaldy*gsmBjt6zf3hHr(cG{#yDycW2=a`9iWCxbMV!S+UMIET2D4YzS&@{=4#9`(&a3D%RB2W=4zs}wFOEWxw44T;9xZVqFyeD zyV{GlF-b@@rYC{~X_a-hyG_D|8_W~H02GI-A`Ocb|3rnMB!r7x;;Te-?lJ&H z;Gx+Q@via@P2kZkkt@)|%v-sWO6uoL;>=$r;5tDKy*5!}-YVPP5~2~0d?pGUZq5cM zRtQdspGy;0^uHB`slyZ|?E&1KwqqRt)!(Wk_w{-!9)kmDDEdl;8lG(2b1^1`A24z$d*` zD3kC^o;{y=+li*%W4ts9;BN7A=&-4U06&3_Y74mp4w0>sy7m<2upl2bORB|EqJ9!L z!IT9*sk4Y%nzcY=HsT*H;3cE*uqaD{dcZTqaTl0S2$84^6g)A@#ebQ%9Jd*RWM(aZ zk>Jgfh>C}g+`B~0%a*f%47uF`XPm9_zz#Hf3<x#Wn>k|^F+fKorF=m7YJ)!4 z8Mky!(x%EG(-&0~B)+c-+vqq^?l!um?0l!wYwMx^)8w0rHW_1*8^bfRol&kKp)XJn z3*0>v=LPztR>q;%=R!caKt{(P02PaBedHAeYq`u3<@Kgx<}G?&Np6Lo>;lbo+YwHb zhv{(R%^VBiB)>^T`2?xxTIkz*G zC`LnAQa^?yR*2JpoJz>H-&JFrh+w*yZ*xjij;06>PUg3VUpK$2=@lj@}+Eg3JQJ7>rCRj9`V&gYO z3Fp@_s!tg+P_61H-#tVi1_Pc3`-};Amkh{-`TBnBI6DPWq&tt=uB{MjO@J^aLr^3V zg4#@Rx{L0EH(-EB_`!PekTEQgfds2-`&)7;ZsuO@;9=D`SA3vHV z@j_+hF;Sz1$l1|T zbBApZK=&_P2>6*KGmNlD+Ey!l*%1CutqR@KLb`80`fD-={9e&n`0h)&IQTsRnDh;o zTsc|nkgMC$VGIn5rRgIEG16)PpMf=>opi_Js2$zsZxKZm@PkOAmTDlye6v7cq_DIz zc=cpEf!SQblpA8fi?W6ar6txBzvnN|#h~M(T3CwccX}5%xgfI9bZ*)A1!mrbH>`M! z^oZZJF3DpMXy$#%pUJ6C9iPaNBY#!4?5FRmpD!e=|mvY8Wc zs(y9J;2Z6FL&$bz$KejanLRZk`V#4*9>^C z@%O>Br@S3s{gQ;b{IFsz=9Gb!=c@wd%?&dgc z(Uc-!1i>f4k*DqRPQ09=VB^j|XJk+*HJ=?Xjarqr7w4bxE*Kv^3=3VM7fw}2U5i9^ zy|c4u!Dzx7`o4N5_5;O87f$j8`Y~eU%+F{;?e3D%!{=~?2t_u&Z!97MvTg9C{Tze3 zlRK)u&sjykszT<(?b@2{H{Wmvn8X36H&$;cFmxBl&G(;xgHfO^KN~HCIh!+1)Q0E+ zjnz+)xj`6e-Y3I>LAod1VQy(1yJor#qU!%!BCP|PQ+O)r>m@^63$_$3g61G4~!< zvzG04@yS@>|6q5uIHv-c_sH9xeVzy7MThVCcQG6}`Pxorm`{rhU zbcvl+hjZGzKo}l>m%%%&)7~#@yWtj7h-;<{MPd3o)i(+;{mIuxGOUQ#N7@ga*$rNk^|{(`W^K8K61Yyt}2gD@%5CP7#Skyrj?dc=L|4w3@0CM zLjY(dWXNnx#l2pEnD?5U0Z|^Dpdnwj6~%YIV;>r*#inw$Pw{fkp%!kDm8O$GL$b1L z^usP~#r_cCmkdyOvR-ap}-AvID{uj)IXQpjS)S&Tg7Y1{zCZA z8wsDDeBE~%fp1T1To2;uuzWSRjnjifpsLJG6K(}CSfKbpImd=+%X5cs#=wiTc7E+E z;bET|yy+|uhl!vpp0}N}`{4fk4*=7W*Xd;GIjVsAcmX^K*1^j~ip+)x(|6vBMfYjn zU>9}`(Yo4KUalls88aL~-4Ki53v3kz4Rdv06C^h^R{K+J@Mn9lq3z-)qbb1~b`P?% zKZ_pS&>e~Jo*8D5e|UEfFisT#aaIH&5{8&N_=POkw~<9{7h-uT13!lR96qJG+LwU z6i`pE$LY8rI-Z90G}eN@4U!7eAiOaJBz0k)BGf4gdbac}ne60CnjR_35fI$Cu?1Yz zI&$q6pDO%z2`jQCTd0tGhwD(h#VBAxuF|Bq#p5)DUh_><<9*4-7T$3R0~PguKY7-L z#6!+=vWcoFGw!uj$&r7Wz&5aUp~TNnP$OFTXdDuGzes?~#{Am0G~>M+yd5?;u!Ry?T+HB!~%b0e)X z2Q*UmgPFM*t^>CeY2)$R3LT#wNkw7T{@$2AwO|zV0QC%}z=XQVYcD_wmkm2G(SFFY zg7A?6i5f=_t<{YP-L9#Nl!kP6xB*I;nBQeCzsFRd>9=bhhUXY>!);`;Hz8>89jIh? zU*4-aM(>oQsu{I9Q(!GYdUeK2$@_X`1H=&!Q!I0X-+yQ6xX#YjGY7C&zD5A5;16>J z#}x4WGFsbKd7Il)1=#~d+`q{9VQty@F$5ymooOw+iMKY5GVs&a!+n;7i0vY+IG95^ z@S(+R!wmtU-!dvI^q7SWbNq(pqZ#v5vZ{^4_WKZVNAD!}Z>d_Q7~nTCG6mKd)jR?z zpD`gP^$QMw70)iT-qj^nj0D>-@K&{``*T3s8rZ{{`die&YT%5 zO9C+piu6)~bnlXg=b$PdLZ}N1U1c!MTF8`!h<;?v_Oi4WFm8F!r^FTu|)x_Z_huBO4q!UQxWj;o2+& zwISP;*DflOvUr*z^gP2inu;5#d0}Zh0TZfcqPUSbxrroMj|kuW_*7lKem|W78=a*w zn_BLF2jUEJ<6?un{uB_Vn=CeZG5De8FGpzcupp_>a|yfSxuC6Ai%eu?T(2Lh5raOr zz4Egz4`{rIVG-lEX8TW)=@r6T`jElM40VFllq&$h1<25@^c2?OwaGY3kylr5AI8U6 z$GsJKovX`zzeQ7x$Vw*RTf-2tTRaTzQm!I3wUX{VTjkXhtu)591QM#BRVXNdYq?K} zQ^utis~|l&Hg4eqjG)-PhFydKTyaK>j`Ly|Px&@psrfAmOd>tW&*@44<$Jvx16 zN&JXV$@(?ff{_2!?o#p81ePqij^17I%;A5mp6ZxPncp~E%U%ruD5!-zYnnc;mre4Tlo`|43zSmp^IGvN-sQRmO$ua4~kNte!L1gI)uk)qUyj+dWBtbN*94Z zv4AiY0YnETLi-SiN(+mq(6@Xxz-;n1IMD-jMvA_I;OD#} zsXuad9Q2@d zSW&k(S0UR9IBQxqF(?#s>#9bhA7;8E&zN`+{`=d_Y=Bv|^9n@QfNPlukrx?ul60L;djfCjV|s%;5EIOPef^rc4e6fZsOopuW5`r+l<2NnLgR(p>dh#}h6% z&XtFBE0RCi)uBOJ9bVPm?(;#~_%j%pBO|ES@eA(YR*JIp{w)&BP9+v!`?T23JlnK+ zAuksd?3+zA$1xwJ8vK*QHP~K7#wI`E>QP9iy^vaBBsiI{Da!BNe?X89Ed+aL+EaWVYXbG&WUD0@wMcEs>BlHB;GRLXg)W#e8)jB+_@0=q`got`P_nGspmSyR1lD)Tk9)06-Di>*x(ZseDk|ol#FFmud|T>s83c zA2_7PMv+*XIJcdh5C+y@TcNO%VE{|9a7UVUsL9&O@FI(LYc%JcXCer zod}lIUtW%r*9ujAet9(1z(8C-lfwy-)@yCmivjDu$mFk-af=g=?YAWflGgZWi+-0! zVutl(479=DLNrF6QZ8XcS?fhyegOFM%FZQ}Qg_*#Iw5|0FvEJxpBeipGWqkaS$~BK z1Vcqon%t{L5g)qbrak0>n%KjI;N zCcdC($Zw-RIo8NwKLrt`TDEUkI--%-kF?mXlOD+C^o3=M$~Gw5ZN$*Yz@#a%$9VFe zO@zO0!@%5a@oV89yHZT!Z}5n?C0DosjaA!SfQkxAEfF`|CKxAFUON7W}?mWpH@#JBhTXkG~)=P#X)dh1KRK9iiD+q1w38D0_wc%e)-m0ktPzI;IO3L2)E>Xej@i~6Qw5wPmbkqyyHejB1 z7yY_SHQY!@R-*?r*lzg7xQUE}=MGcc7G-&W*8FM>t zUwZq*W5zfWUT_TwDAGhUpz%kkV&J@&=$ZMpF{?NxwA|SUVMJTr*Hzz2z)r*!$6)CV zX~K>@*g)4-)jFy=i^F~qL5tw&FsiT)kAE$ehxU3*)GbFGC2-#=_e87(l<%jAHJ*}4 zTgGbA=rOC~sZE8Hyi~2kXy^q<>$BprsC*C_pNbk=>&qw3zW=|xUyhW^9VwPNQ!I3r zb11j~jLKyJ&YylHyg;*N%YnElv!|^!oUIR8@d^7FJd}`?GdBaxNsI=L z#Q8O!z5kxFje(|vD5mH z8R_QZFk73vEG9*BU000000000000000000000000000000 F002yM)qns1 diff --git a/screenshots/dark-contacts-detail.webp b/screenshots/dark-contacts-detail.webp new file mode 100644 index 0000000000000000000000000000000000000000..019b2f2f9f50298fce37369b727d34bf7226e764 GIT binary patch literal 79146 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 >2>qg63H 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 %(1zC&CJyOS;U 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

{/* Action buttons */}
- {data.installed ? ( + {preview && ( + + )} + {data.installed && ( <> - {updateAvailable && ( - - )} - ) : ( - )} + + + Directory +
@@ -353,26 +454,61 @@ export default function MarketplacePreviewPage() {
)} - {versionMismatch && ( -
- -
-

Update Bulwark to install this extension

-

- Requires app v{ext.minAppVersion}+. You are running v{CURRENT_APP_VERSION}. -

-
-
+ {/* Notices */} + {data.requestedVersionMissing && ( + + Showing v{preview?.version} instead. + + )} + {suspended && ( + + It cannot be installed. {data.installed ? 'Consider removing it.' : ''} + + )} + {ext.deprecated && ( + + {ext.deprecated.message || 'Its publisher no longer maintains it.'} + {ext.deprecated.replacement && <> Use {ext.deprecated.replacement} instead.} + + )} + {ext.advisories.filter((a) => !a.withdrawn).map((a) => ( + + {a.summary} Affects {a.affected}{a.fixedIn ? `; fixed in v${a.fixedIn}` : '; no fixed version yet'}. + {installedRow && data.installedVersion && a.fixedIn && compareVersions(data.installedVersion, a.fixedIn) < 0 && ( + <> Your installed v{data.installedVersion} is affected. + )} + + ))} + {installedRow?.yanked && ( + + {installedRow.yanked.reason || 'No reason was given.'} Pick another version below. + + )} + {preview?.yanked && !previewIsInstalled && ( + + {preview.yanked.reason || 'No reason was given.'} It can still be installed, but you will be asked to confirm. + + )} + {preview && !previewFits && ( + 0 ? 'This version is for an older Bulwark' : 'Update Bulwark to install this version'}> + v{preview.version} needs Bulwark {preview.minAppVersion ?? 'any version'}{preview.maxAppVersion ? ` up to ${preview.maxAppVersion}` : ' or later'}. You are running v{CURRENT_APP_VERSION}. + {!preview.yanked && ext.latest && ext.latest.version !== preview.version && ( + <> runs here. + )} + + )} + {!ext.latest && !preview && ( + + {ext.newestVersion ? `The newest, v${ext.newestVersion}, needs Bulwark ${ext.newestMinAppVersion ?? 'a newer version'}.` : 'Nothing has been published yet.'} + )} - {bundle.error && ( -
- -
-

Could not preview bundle

-

{bundle.error}

-
-
+ {bundle.error} + )} + {bundle.signature?.status === 'invalid' && ( + + {bundle.signature.reason}. It will not be installed. + )} {/* Description */} @@ -392,22 +528,155 @@ export default function MarketplacePreviewPage() {
)}
- {ext.minAppVersion && Requires app v{ext.minAppVersion}+} - {bundle.size > 0 && Bundle: {(bundle.size / 1024).toFixed(1)} KB} - {ext.githubRepo && ( + {preview && Previewing v{preview.version}{preview.channel === 'beta' ? ' (beta)' : ''}} + {bundle.size > 0 && Bundle: {fmtSize(bundle.size)}} + {bundle.signature?.status === 'verified' && ( + + Signed by the directory + + )} + {bundle.signature?.status === 'unsigned' && ( + + Signature not checked + + )} + {ext.source.repo && ( - {ext.githubRepo} + {ext.source.host === 'github.com' ? '' : `${ext.source.host}/`}{ext.source.repo} )}
+ {/* Versions */} +
+
+

Versions

+

+ Every published version. Versions this server still has a copy of can be put back without the directory. +

+
+
+ + + + + + + + + + + + + {ext.versions.map((v) => { + const isInstalled = data.installed && data.installedVersion === v.version; + const isPreview = preview?.version === v.version; + const kept = historyVersions.has(v.version); + const runs = fits(v); + const key = `install:${v.version}`; + return ( + + + + + + + + + ); + })} + {extraHistory.map((h) => ( + + + + + + + + + ))} + {ext.versions.length === 0 && extraHistory.length === 0 && ( + + )} + +
VersionReleasedNeeds BulwarkSizeStatusActions
+
+ v{v.version} + {v.channel === 'beta' && beta} + {v.signed && } +
+ {v.changelog &&

{v.changelog}

} +
{fmtDate(v.publishedAt)} + {v.minAppVersion ?? 'any'}{v.maxAppVersion ? ` to ${v.maxAppVersion}` : v.minAppVersion ? '+' : ''} + {fmtSize(v.size)} +
+ {isInstalled && Installed} + {v.yanked && Withdrawn} + {!runs && Not for v{CURRENT_APP_VERSION}} + {kept && !isInstalled && Kept here} +
+
+
+ {!isPreview && ( + + )} + {kept && !isInstalled && data.installed && ( + + )} + {!isInstalled && !kept && runs && !suspended && ( + + )} +
+
+ v{h.version} +

No longer in the directory

+
replaced {fmtDate(h.savedAt)}–– + Kept here + +
+ {data.installed && ( + + )} +
+
No versions published.
+
+
+ {/* Screenshots */} {ext.screenshots.length > 0 && (
@@ -426,13 +695,20 @@ export default function MarketplacePreviewPage() {
)} - {/* Theme color preview */} + {/* Theme preview */} {!isPlugin && ext.themePreviews.length > 0 && (

Theme preview

{ext.themePreviews.map(preview => ( - + preview.url + ? ( +
+ {`${ext.name} +
{preview.variant}
+
+ ) + : ))}
@@ -444,24 +720,32 @@ export default function MarketplacePreviewPage() {

Permissions

+ {preview && of v{preview.version}}
{manifestPerms.length === 0 ? (

This plugin requests no permissions.

) : (
    {manifestPerms.map(perm => { - const risky = RISKY_PERMISSIONS.has(perm); + const text = permissionText.get(perm); + const risky = text?.highRisk || RISKY_PERMISSIONS.has(perm); return (
  • - {risky && } - {perm} + {risky ? : } +
    +
    + {text && {text.title}} + {perm} +
    + {text?.body &&

    {text.body}

    } +
  • ); })} @@ -550,35 +834,24 @@ export default function MarketplacePreviewPage() { )} )} +
+ ); +} - {/* Version history */} - {ext.versions.length > 0 && ( -
-

Version history

-
    - {ext.versions.slice(0, 5).map(v => ( -
  • -
    -
    - v{v.version} - {v.publishedAt && ( - - {new Date(v.publishedAt).toLocaleDateString()} - - )} -
    - {v.changelog && ( -

    {v.changelog}

    - )} -
    - - {(v.bundleSize / 1024).toFixed(1)} KB - -
  • - ))} -
-
- )} +function Notice({ tone, title, children }: { tone: 'info' | 'warning' | 'danger'; title: string; children?: React.ReactNode }) { + const styles = tone === 'danger' + ? 'bg-destructive/10 text-destructive' + : tone === 'warning' + ? 'bg-amber-50 text-amber-800 dark:bg-amber-950/30 dark:text-amber-300' + : 'bg-muted text-foreground'; + const Icon = tone === 'danger' ? ShieldAlert : tone === 'warning' ? AlertTriangle : Info; + return ( +
+ +
+

{title}

+ {children &&

{children}

} +
); } diff --git a/app/api/admin/marketplace/[slug]/route.ts b/app/api/admin/marketplace/[slug]/route.ts index 8a0b75571..f2df05676 100644 --- a/app/api/admin/marketplace/[slug]/route.ts +++ b/app/api/admin/marketplace/[slug]/route.ts @@ -1,26 +1,60 @@ import { NextRequest, NextResponse } from 'next/server'; import { requireAdminAuth } from '@/lib/admin/session'; import { logger } from '@/lib/logger'; -import { - getPluginRegistry, - getThemeRegistry, -} from '@/lib/admin/plugin-registry'; import { openPackage, readManifest, readText } from '@/lib/extension-package'; import { configManager } from '@/lib/admin/config-manager'; import { checkBundleSignature, type SignatureCheck } from '@/lib/admin/directory-keys'; - -async function getDirectoryUrl(): Promise { - await configManager.ensureLoaded(); - return configManager.get('extensionDirectoryUrl') || 'https://extensions.bulwarkmail.org'; -} +import { RELEASE_VERSION } from '@/lib/release-version'; +import { + APP_VERSION, + DirectoryError, + compatQuery, + directoryJson, + getDirectoryChannel, + getDirectoryUrl, + historyFor, + installedExtensions, + installedStateOf, + toListing, + v2Url, + type DirectoryDetail, + type DirectoryVersion, +} from '@/lib/admin/marketplace-directory'; const MAX_PREVIEW_SOURCE_LEN = 100_000; +/** A version row as the detail page renders it. */ +function versionRow(v: DirectoryVersion) { + return { + version: v.version, + channel: v.channel, + publishedAt: v.publishedAt, + minAppVersion: v.minAppVersion, + maxAppVersion: v.maxAppVersion, + permissions: v.permissions ?? [], + size: v.size, + sha256: v.sha256, + yanked: v.yanked, + changelog: v.changelog ?? null, + downloads: v.downloads ?? 0, + signed: !!v.signature, + commit: v.provenance?.source?.commit ?? null, + }; +} + /** - * GET /api/admin/marketplace/[slug] - * Returns full preview info for an extension: directory metadata, - * the bundle's manifest, a (truncated) source preview, and install status. - * Lets admins audit what they're about to install before pressing the button. + * GET /api/admin/marketplace/[slug]?version= + * + * Everything the preview page shows for one extension: the directory's + * listing, every version it has (withdrawn ones included, so an installed + * version that was withdrawn is shown as such), the bundle of the version + * being previewed (its manifest and a capped source listing, after the + * signature check), what is installed here, and the versions this server + * still keeps for a rollback. + * + * `version` picks the version to preview - an install link from the + * directory names one. Without it, or when the directory no longer has it, + * the newest version this Bulwark can run is previewed. */ export async function GET( request: NextRequest, @@ -31,50 +65,55 @@ export async function GET( if ('error' in result) return result.error; const { slug } = await params; + const requested = request.nextUrl.searchParams.get('version'); + if (requested && !RELEASE_VERSION.test(requested)) { + return NextResponse.json({ error: 'Invalid version' }, { status: 400 }); + } + const directoryUrl = await getDirectoryUrl(); + const channel = getDirectoryChannel(); - // 1. Extension metadata + screenshots + theme previews from the directory - const detailUrl = new URL(`/api/v1/extension/${encodeURIComponent(slug)}`, directoryUrl); - if (process.env.NEXT_PUBLIC_APP_VERSION) detailUrl.searchParams.set('appVersion', process.env.NEXT_PUBLIC_APP_VERSION); - const detailRes = await fetch(detailUrl.toString(), { - headers: { Accept: 'application/json' }, - signal: AbortSignal.timeout(10000), - }); - - if (!detailRes.ok) { - const status = detailRes.status === 404 ? 404 : 502; - return NextResponse.json( - { error: status === 404 ? 'Extension not found' : 'Directory request failed' }, - { status }, - ); + // 1. Listing and every version, from the directory. + let detail: DirectoryDetail; + let versions: DirectoryVersion[]; + try { + const base = `/extensions/${encodeURIComponent(slug)}`; + [detail, versions] = await Promise.all([ + directoryJson<{ data: DirectoryDetail }>(v2Url(directoryUrl, base, compatQuery())).then((r) => r.data), + directoryJson<{ data: DirectoryVersion[] }>( + v2Url(directoryUrl, `${base}/versions`, { include: channel === 'beta' ? 'yanked,beta' : 'yanked' }), + ).then((r) => r.data ?? []), + ]); + } catch (err) { + if (err instanceof DirectoryError) { + return NextResponse.json( + { error: err.status === 404 ? 'Extension not found' : err.message }, + { status: err.status === 404 ? 404 : 502 }, + ); + } + throw err; } - const detailJson = await detailRes.json(); - const extension = detailJson.data as Record | undefined; - if (!extension) { - return NextResponse.json({ error: 'Extension not found' }, { status: 404 }); - } + const type: 'plugin' | 'theme' = detail.type === 'theme' ? 'theme' : 'plugin'; - const type = extension.type as 'plugin' | 'theme'; - const latestVersion = (extension.latestVersion as { version?: string } | null)?.version - ?? null; + // 2. Which version to preview. + const requestedRow = requested ? versions.find((v) => v.version === requested) ?? null : null; + const preview = requestedRow ?? detail.latest ?? detail.newest ?? versions[0] ?? null; - // 2. Pull the bundle so we can show what's actually inside. + // 3. Pull that bundle so the admin sees what is actually inside. let manifest: Record | null = null; let sourcePreview: { name: string; content: string; truncated: boolean } | null = null; let bundleError: string | null = null; let bundleSize = 0; let signature: SignatureCheck | null = null; - if (latestVersion) { + if (preview) { try { - const bundleUrl = new URL( - `/api/v1/bundle/${encodeURIComponent(slug)}/${encodeURIComponent(latestVersion)}`, + const bundleUrl = v2Url( directoryUrl, + `/extensions/${encodeURIComponent(slug)}/versions/${encodeURIComponent(preview.version)}/bundle`, ); - const bundleRes = await fetch(bundleUrl.toString(), { - signal: AbortSignal.timeout(30000), - }); + const bundleRes = await fetch(bundleUrl.toString(), { signal: AbortSignal.timeout(30000) }); if (!bundleRes.ok) { bundleError = `Bundle download failed (${bundleRes.status})`; @@ -85,14 +124,14 @@ export async function GET( directoryUrl, configuredRootKeys: configManager.get('extensionDirectoryRootKeys'), slug, - version: latestVersion, - kind: type === 'theme' ? 'theme' : 'plugin', + version: preview.version, + kind: type, bytes: buffer, headers: bundleRes.headers, }); // Opening the preview must not inflate an arbitrary bundle in // full: every read goes through the capped package reader. - const pkg = await openPackage(buffer, type === 'theme' ? 'theme' : 'plugin'); + const pkg = await openPackage(buffer, type); try { manifest = await readManifest(pkg); } catch (err) { @@ -122,68 +161,33 @@ export async function GET( bundleError = 'Extension has no published version'; } - // 3. Install status (slug is used as the registry id at install time) - const [pluginRegistry, themeRegistry] = await Promise.all([ - getPluginRegistry(), - getThemeRegistry(), - ]); - const installedEntry = type === 'theme' - ? themeRegistry.themes.find((t) => t.id === slug) - : pluginRegistry.plugins.find((p) => p.id === slug); - const installed = installedEntry !== undefined; - const installedVersion = installedEntry?.version ?? null; - - // 4. Build screenshot URLs (proxy through the directory's public files endpoint). - const screenshots = Array.isArray(extension.screenshots) - ? (extension.screenshots as Array<{ path: string; altText?: string | null }>).map((s) => ({ - url: new URL(`/api/v1/files/${s.path}`, directoryUrl).toString(), - altText: s.altText ?? null, - })) - : []; - - // Strip the heavy `manifest` blob from versions when echoing the directory data. - const versions = Array.isArray(extension.versions) - ? (extension.versions as Array>).map((v) => ({ - version: v.version, - changelog: v.changelog, - bundleSize: v.bundleSize, - minAppVersion: v.minAppVersion, - publishedAt: v.publishedAt, - permissions: v.permissions, - })) - : []; - - const fileUrl = (path: unknown): string | null => - typeof path === 'string' && path - ? new URL(`/api/v1/files/${path}`, directoryUrl).toString() - : null; + // 4. What is installed here, and what this server still keeps. + const installed = await installedExtensions(); + const state = installedStateOf(installed, slug, type); + const history = await historyFor(type, slug); return NextResponse.json( { extension: { - slug: extension.slug, - name: extension.name, - type: extension.type, - pluginType: extension.pluginType ?? null, - description: extension.description, - longDescription: extension.longDescription ?? null, - tags: extension.tags ?? [], - permissions: extension.permissions ?? [], - totalDownloads: extension.totalDownloads ?? 0, - featured: extension.featured ?? false, - githubRepo: extension.githubRepo ?? null, - license: extension.license ?? null, - minAppVersion: extension.minAppVersion ?? null, - iconUrl: fileUrl(extension.iconPath), - bannerUrl: fileUrl(extension.bannerPath), - author: extension.author ?? null, - latestVersion, - versions, - screenshots, - themePreviews: extension.themePreviews ?? [], - createdAt: extension.createdAt ?? null, - updatedAt: extension.updatedAt ?? null, + ...toListing(detail, state), + longDescription: detail.longDescription ?? null, + newestVersion: detail.newest?.version ?? null, + newestMinAppVersion: detail.newest?.minAppVersion ?? null, + versions: versions.map(versionRow), + screenshots: detail.screenshots ?? [], + themePreviews: detail.themePreviews ?? [], + advisories: detail.advisories ?? [], + permissionDetails: detail.permissions ?? [], + source: detail.source, + createdAt: detail.createdAt ?? null, + updatedAt: detail.updatedAt ?? null, }, + preview: preview + ? { version: preview.version, channel: preview.channel, yanked: preview.yanked, minAppVersion: preview.minAppVersion, maxAppVersion: preview.maxAppVersion } + : null, + // The version an install link asked for, when the directory no + // longer has it; the page says so instead of silently showing another. + requestedVersionMissing: requested && !requestedRow ? requested : null, bundle: { manifest, source: sourcePreview, @@ -191,8 +195,11 @@ export async function GET( error: bundleError, signature, }, - installed, - installedVersion, + ...state, + history, + channel, + appVersion: APP_VERSION || null, + directoryUrl, }, { headers: { 'Cache-Control': 'no-store' } }, ); diff --git a/app/api/admin/marketplace/__tests__/preview.test.ts b/app/api/admin/marketplace/__tests__/preview.test.ts new file mode 100644 index 000000000..ca4d8897b --- /dev/null +++ b/app/api/admin/marketplace/__tests__/preview.test.ts @@ -0,0 +1,112 @@ +/** + * @vitest-environment node + */ +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { NextRequest } from 'next/server'; +import JSZip from 'jszip'; + +vi.mock('@/lib/admin/session', () => ({ + requireAdminAuth: vi.fn(async () => ({ session: { sub: 'admin' } })), + getClientIP: () => '127.0.0.1', +})); +vi.mock('@/lib/admin/config-manager', () => ({ + configManager: { + ensureLoaded: vi.fn(async () => {}), + get: vi.fn((key: string) => (key === 'extensionDirectoryUrl' ? 'https://extensions.test' : undefined)), + }, +})); +vi.mock('@/lib/admin/plugin-registry', () => ({ + getPluginRegistry: vi.fn(async () => ({ + plugins: [{ id: 'pretty-dates', name: 'Pretty Dates', version: '1.1.0', enabled: true, source: { kind: 'marketplace', slug: 'pretty-dates', directoryUrl: 'https://extensions.test' } }], + })), + getThemeRegistry: vi.fn(async () => ({ themes: [] })), +})); +vi.mock('@/lib/admin/extension-history', () => ({ + listHistory: vi.fn(async () => [{ version: '1.0.0', savedAt: '2026-10-10T00:00:00.000Z', contentHash: 'a'.repeat(64) }]), +})); + +import { GET } from '../[slug]/route'; + +const summary = { + slug: 'pretty-dates', name: 'Pretty Dates', type: 'plugin', pluginType: 'hook', description: 'd', tags: [], license: 'MIT', + featured: false, status: 'approved', iconUrl: null, bannerUrl: null, + author: { login: 'o', name: 'O', avatarUrl: null, verified: true, organization: false, url: 'https://extensions.test/author/o' }, + downloads: 5, rating: { average: 4.5, count: 2 }, deprecated: null, source: { host: 'github.com', repo: 'o/r', subpath: null }, + url: 'https://extensions.test/extension/pretty-dates', createdAt: null, updatedAt: null, +}; +const v = (version: string, extra: Record = {}) => ({ + version, channel: 'stable', publishedAt: null, minAppVersion: null, maxAppVersion: null, permissions: ['email:read'], size: 10, + sha256: 'b'.repeat(64), yanked: null, downloadUrl: '', changelog: `notes ${version}`, downloads: 1, signature: { keyId: 'k' }, ...extra, +}); + +async function bundle(version: string) { + const zip = new JSZip(); + zip.file('manifest.json', JSON.stringify({ id: 'pretty-dates', name: 'Pretty Dates', version, author: 'x', description: 'd', type: 'hook', permissions: ['email:read'], entrypoint: 'index.js' })); + zip.file('index.js', `// ${version}`); + const buf = await zip.generateAsync({ type: 'uint8array' }); + return buf.slice().buffer as ArrayBuffer; +} + +function directory() { + const versions = [v('1.2.0'), v('1.1.0'), v('1.0.0', { yanked: { at: '2026-10-01T00:00:00.000Z', reason: 'bad dates' } })]; + const calls: string[] = []; + vi.stubGlobal('fetch', vi.fn(async (url: string) => { + const u = new URL(String(url)); + calls.push(u.pathname + u.search); + if (u.pathname === '/api/v2/extensions/pretty-dates') { + return Response.json({ data: { ...summary, latest: versions[0], newest: versions[0], longDescription: 'long', versions: versions.slice(0, 2), screenshots: [], themePreviews: [], advisories: [], permissions: [] } }); + } + if (u.pathname === '/api/v2/extensions/pretty-dates/versions') return Response.json({ data: versions }); + const m = /\/versions\/([^/]+)\/bundle$/.exec(u.pathname); + if (m) return new Response(await bundle(decodeURIComponent(m[1]))); + return Response.json({ error: { message: 'nope' } }, { status: 404 }); + })); + return calls; +} + +const preview = (query = '') => GET( + new NextRequest(`http://localhost/api/admin/marketplace/pretty-dates${query}`), + { params: Promise.resolve({ slug: 'pretty-dates' }) }, +); + +afterEach(() => vi.unstubAllGlobals()); + +describe('GET /api/admin/marketplace/[slug]', () => { + it('previews the newest compatible version and lists every version, withdrawn ones included', async () => { + const calls = directory(); + const res = await preview(); + expect(res.status).toBe(200); + const body = await res.json(); + + expect(body.preview.version).toBe('1.2.0'); + expect(body.bundle.manifest.version).toBe('1.2.0'); + expect(body.bundle.source.content).toBe('// 1.2.0'); + expect(body.extension.versions.map((x: { version: string }) => x.version)).toEqual(['1.2.0', '1.1.0', '1.0.0']); + expect(body.extension.versions[2].yanked).toMatchObject({ reason: 'bad dates' }); + expect(body.extension.versions[0]).toMatchObject({ signed: true, changelog: 'notes 1.2.0' }); + expect(body.extension.rating).toEqual({ average: 4.5, count: 2 }); + expect(body).toMatchObject({ installed: true, installedVersion: '1.1.0', installedSource: { kind: 'marketplace' } }); + expect(body.history).toEqual([{ version: '1.0.0', savedAt: '2026-10-10T00:00:00.000Z', contentHash: 'a'.repeat(64) }]); + expect(calls.some((c) => c.startsWith('/api/v2/extensions/pretty-dates/versions?include=yanked'))).toBe(true); + expect(body.requestedVersionMissing).toBeNull(); + }); + + it('previews the version an install link asked for', async () => { + directory(); + const body = await (await preview('?version=1.0.0')).json(); + expect(body.preview).toMatchObject({ version: '1.0.0', yanked: { reason: 'bad dates' } }); + expect(body.bundle.source.content).toBe('// 1.0.0'); + }); + + it('says when the requested version is gone and falls back to the newest', async () => { + directory(); + const body = await (await preview('?version=0.9.0')).json(); + expect(body.requestedVersionMissing).toBe('0.9.0'); + expect(body.preview.version).toBe('1.2.0'); + }); + + it('refuses a malformed version instead of forwarding it', async () => { + directory(); + expect((await preview('?version=..%2F..%2Fetc')).status).toBe(400); + }); +}); diff --git a/app/api/admin/marketplace/__tests__/route.test.ts b/app/api/admin/marketplace/__tests__/route.test.ts index 747e39e3c..0bfb73111 100644 --- a/app/api/admin/marketplace/__tests__/route.test.ts +++ b/app/api/admin/marketplace/__tests__/route.test.ts @@ -4,6 +4,10 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { NextRequest } from 'next/server'; import JSZip from 'jszip'; +import { createHash } from 'node:crypto'; + +// Read when the route module loads, so it has to be set before the import. +vi.hoisted(() => { process.env.NEXT_PUBLIC_APP_VERSION = '1.15.0'; }); vi.mock('@/lib/admin/session', () => ({ requireAdminAuth: vi.fn(async () => ({ session: { sub: 'admin' } })), @@ -41,6 +45,26 @@ async function bundle(manifest: Record, code = 'module.exports return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) as ArrayBuffer; } +/** + * A directory that lists one version (1.0.0 unless `meta` says otherwise) and + * serves `bytes` for it. The route asks about the version first, then + * downloads the bundle; both answers come from here, routed by URL. + */ +function directory(bytes: ArrayBuffer | Uint8Array, meta: Record = {}, opts: { missing?: boolean } = {}) { + const sha256 = createHash('sha256').update(new Uint8Array(bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes))).digest('hex'); + const calls: string[] = []; + vi.stubGlobal('fetch', vi.fn(async (url: string) => { + const u = String(url); + calls.push(u); + if (u.includes('/api/v2/extensions/') && u.includes('/versions/') && !u.endsWith('/bundle')) { + if (opts.missing) return Response.json({ error: { message: 'Version not found', code: 'not_found' } }, { status: 404 }); + return Response.json({ data: { version: '1.0.0', channel: 'stable', publishedAt: null, minAppVersion: null, maxAppVersion: null, permissions: [], size: 0, sha256, yanked: null, downloadUrl: '', ...meta } }); + } + return new Response(bytes instanceof Uint8Array ? (bytes.slice().buffer as ArrayBuffer) : bytes); + })); + return calls; +} + function install(body: Record) { return POST(new NextRequest('http://localhost/api/admin/marketplace', { method: 'POST', @@ -62,21 +86,81 @@ afterEach(() => { }); describe('POST /api/admin/marketplace', () => { - it('installs a plugin under its directory slug', async () => { - vi.stubGlobal('fetch', vi.fn(async () => new Response(await bundle({ ...MANIFEST, id: 'pretty-dates' })))); + it('installs a plugin under its directory slug and records where it came from', async () => { + const calls = directory(await bundle({ ...MANIFEST, id: 'pretty-dates' })); const res = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); expect(res.status).toBe(200); + expect(registry.get('pretty-dates')).toMatchObject({ + version: '1.0.0', + source: { kind: 'marketplace', slug: 'pretty-dates', directoryUrl: 'https://extensions.test' }, + }); + // v2 only: the version is looked up, then its bundle fetched from the same directory. + expect(calls).toEqual([ + 'https://extensions.test/api/v2/extensions/pretty-dates/versions/1.0.0', + 'https://extensions.test/api/v2/extensions/pretty-dates/versions/1.0.0/bundle', + ]); + }); + + it('answers 404 for a version the directory does not have', async () => { + directory(await bundle({ ...MANIFEST, id: 'pretty-dates' }), {}, { missing: true }); + const res = await install({ slug: 'pretty-dates', version: '9.9.9', type: 'plugin' }); + expect(res.status).toBe(404); + expect(registry.size).toBe(0); + }); + + it('refuses a withdrawn version unless the admin insists', async () => { + const bytes = await bundle({ ...MANIFEST, id: 'pretty-dates' }); + directory(bytes, { yanked: { at: '2026-10-01T00:00:00.000Z', reason: 'breaks replies' } }); + + const refused = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); + expect(refused.status).toBe(409); + const body = await refused.json(); + expect(body.error).toMatch(/withdrawn.*breaks replies/); + expect(body.yanked).toMatchObject({ reason: 'breaks replies' }); + expect(registry.size).toBe(0); + + directory(bytes, { yanked: { at: '2026-10-01T00:00:00.000Z', reason: 'breaks replies' } }); + const forced = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin', force: true }); + expect(forced.status).toBe(200); + expect((await forced.json()).yanked).toMatchObject({ reason: 'breaks replies' }); expect(registry.has('pretty-dates')).toBe(true); }); + it('refuses a version this Bulwark is too new or too old for', async () => { + const bytes = await bundle({ ...MANIFEST, id: 'pretty-dates' }); + directory(bytes, { maxAppVersion: '1.14.0' }); + const tooNew = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); + expect(tooNew.status).toBe(400); + expect((await tooNew.json()).error).toMatch(/up to 1\.14\.0/); + + directory(bytes, { minAppVersion: '2.0.0' }); + const tooOld = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); + expect(tooOld.status).toBe(400); + expect((await tooOld.json()).error).toMatch(/Needs Bulwark 2\.0\.0/); + expect(registry.size).toBe(0); + }); + + it('refuses a bundle whose bytes differ from what the directory lists', async () => { + directory(await bundle({ ...MANIFEST, id: 'pretty-dates' }), { sha256: 'f'.repeat(64) }); + const res = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); + expect(res.status).toBe(502); + expect(registry.size).toBe(0); + }); + + it('refuses a version that is not a release version', async () => { + directory(await bundle({ ...MANIFEST, id: 'pretty-dates' })); + const res = await install({ slug: 'pretty-dates', version: '../../x', type: 'plugin' }); + expect(res.status).toBe(400); + }); + it('refuses a ZIP bomb from the directory', async () => { const zip = new JSZip(); zip.file('manifest.json', JSON.stringify({ ...MANIFEST, id: 'pretty-dates' })); zip.file('index.js', new Uint8Array(30 * 1024 * 1024)); const bytes = await zip.generateAsync({ type: 'uint8array', compression: 'DEFLATE' }); - vi.stubGlobal('fetch', vi.fn(async () => new Response(bytes as BodyInit))); + directory(bytes); const res = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); @@ -89,7 +173,7 @@ describe('POST /api/admin/marketplace', () => { // inheriting its enabled and force-enabled state, while the admin UI // (which keys install status by slug) still shows "not installed". registry.set('pgp-plugin', { id: 'pgp-plugin', forceEnabled: true, version: '2.0.0' }); - vi.stubGlobal('fetch', vi.fn(async () => new Response(await bundle({ ...MANIFEST, id: 'pgp-plugin' })))); + directory(await bundle({ ...MANIFEST, id: 'pgp-plugin' })); const res = await install({ slug: 'pretty-dates', version: '1.0.0', type: 'plugin' }); diff --git a/app/api/admin/marketplace/__tests__/signature.test.ts b/app/api/admin/marketplace/__tests__/signature.test.ts index 9d588359b..7548deb2c 100644 --- a/app/api/admin/marketplace/__tests__/signature.test.ts +++ b/app/api/admin/marketplace/__tests__/signature.test.ts @@ -70,7 +70,13 @@ function serve(bytes: Uint8Array, headers: Record) { const ringBody = { _type: 'https://extensions.bulwarkmail.org/keyring/v1', rootKeyId: root.keyId, issuedAt: '2026-10-14T00:00:00.000Z', keys: [{ keyId: online.keyId, publicKey: online.raw, status: 'active', notBefore: '2026-10-14T00:00:00.000Z', notAfter: null }] }; const ring = { ...ringBody, signature: sign(null, Buffer.from(canonicalJson(ringBody)), root.privateKey).toString('base64') }; vi.stubGlobal('fetch', vi.fn(async (url: string) => { - if (String(url).endsWith('/api/v2/keys')) return Response.json(ring); + const u = String(url); + if (u.endsWith('/api/v2/keys')) return Response.json(ring); + // The version lookup before the download; the listing names the hash of + // the bytes that are then served, so only the signature decides here. + if (u.includes('/versions/') && !u.endsWith('/bundle')) { + return Response.json({ data: { version: '1.0.0', channel: 'stable', yanked: null, minAppVersion: null, maxAppVersion: null, sha256: createHash('sha256').update(bytes).digest('hex') } }); + } return new Response(bytes.slice().buffer as ArrayBuffer, { headers }); })); } diff --git a/app/api/admin/marketplace/__tests__/updates.test.ts b/app/api/admin/marketplace/__tests__/updates.test.ts new file mode 100644 index 000000000..000c525cd --- /dev/null +++ b/app/api/admin/marketplace/__tests__/updates.test.ts @@ -0,0 +1,82 @@ +/** + * @vitest-environment node + */ +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { NextRequest } from 'next/server'; + +vi.mock('@/lib/admin/session', () => ({ + requireAdminAuth: vi.fn(async () => ({ session: { sub: 'admin' } })), + getClientIP: () => '127.0.0.1', +})); +vi.mock('@/lib/admin/config-manager', () => ({ + configManager: { + ensureLoaded: vi.fn(async () => {}), + get: vi.fn((key: string) => (key === 'extensionDirectoryUrl' ? 'https://extensions.test' : key === 'extensionDirectoryChannel' ? 'beta' : undefined)), + }, +})); +vi.mock('@/lib/admin/plugin-registry', () => ({ + getPluginRegistry: vi.fn(async () => ({ + plugins: [ + { id: 'quick-reply', name: 'Quick Reply', version: '1.2.0', enabled: true, source: { kind: 'marketplace', slug: 'quick-reply', directoryUrl: 'https://extensions.test' } }, + { id: 'house-plugin', name: 'House', version: '0.1.0', enabled: true, source: { kind: 'upload' } }, + // Installed before the source was recorded: still asked about. + { id: 'old-install', name: 'Old', version: '3.0.0', enabled: false }, + ], + })), + getThemeRegistry: vi.fn(async () => ({ + themes: [{ id: 'night', name: 'Night', version: '2.0.0', enabled: true, source: { kind: 'marketplace', slug: 'night', directoryUrl: 'https://extensions.test' } }], + })), +})); +vi.mock('@/lib/admin/extension-history', () => ({ listHistory: vi.fn(async () => []) })); + +import { GET } from '../updates/route'; + +afterEach(() => vi.unstubAllGlobals()); + +describe('GET /api/admin/marketplace/updates', () => { + it('asks the directory about the marketplace installs only, on the configured channel', async () => { + let posted: { url: string; body: unknown } | null = null; + vi.stubGlobal('fetch', vi.fn(async (url: string, init: RequestInit) => { + posted = { url: String(url), body: JSON.parse(String(init.body)) }; + return Response.json({ + data: { + updates: [{ slug: 'quick-reply', currentVersion: '1.2.0', version: '1.3.0', channel: 'stable', changelog: 'faster' }], + yanked: [{ slug: 'night', version: '2.0.0', reason: 'contrast', at: '2026-10-01T00:00:00.000Z' }], + deprecated: [], suspended: [], advisories: [], unknown: ['old-install'], + }, + }); + })); + + const res = await GET(new NextRequest('http://localhost/api/admin/marketplace/updates')); + expect(res.status).toBe(200); + const body = await res.json(); + + expect(posted!.url).toBe('https://extensions.test/api/v2/updates'); + expect(posted!.body).toEqual({ + channel: 'beta', + installed: [ + { slug: 'quick-reply', version: '1.2.0' }, + { slug: 'old-install', version: '3.0.0' }, + { slug: 'night', version: '2.0.0' }, + ], + }); + expect(body.updates).toHaveLength(1); + expect(body.yanked[0]).toMatchObject({ slug: 'night' }); + expect(body.unknown).toEqual(['old-install']); + // Every install is listed, uploads included, for the "Installed" view. + expect(body.installed.map((e: { id: string; kind: string }) => `${e.kind}:${e.id}`)).toEqual([ + 'plugin:quick-reply', 'plugin:house-plugin', 'plugin:old-install', 'theme:night', + ]); + expect(body.error).toBeNull(); + }); + + it('still lists the installs when the directory is unreachable', async () => { + vi.stubGlobal('fetch', vi.fn(async () => { throw new Error('ECONNREFUSED'); })); + const res = await GET(new NextRequest('http://localhost/api/admin/marketplace/updates')); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.installed).toHaveLength(4); + expect(body.updates).toEqual([]); + expect(body.error).toMatch(/directory/i); + }); +}); diff --git a/app/api/admin/marketplace/route.ts b/app/api/admin/marketplace/route.ts index 233b5974c..6de13c0f3 100644 --- a/app/api/admin/marketplace/route.ts +++ b/app/api/admin/marketplace/route.ts @@ -7,8 +7,6 @@ import { saveTheme, getPlugin, getTheme, - getPluginRegistry, - getThemeRegistry, themeCSSResolver, type ServerPlugin, type ServerTheme, @@ -24,15 +22,33 @@ import { import { configManager } from '@/lib/admin/config-manager'; import { checkBundleSignature } from '@/lib/admin/directory-keys'; import { configReadOnlyResponse } from '@/lib/admin/config-read-only-response'; +import { compareVersions } from '@/lib/version-compare'; +import { RELEASE_VERSION } from '@/lib/release-version'; +import { + APP_VERSION, + DirectoryError, + compatQuery, + directoryJson, + getDirectoryChannel, + getDirectoryUrl, + installedExtensions, + installedStateOf, + toListing, + v2Url, + type DirectorySummary, + type DirectoryVersion, +} from '@/lib/admin/marketplace-directory'; +import { createHash } from 'node:crypto'; -async function getDirectoryUrl(): Promise { - await configManager.ensureLoaded(); - return configManager.get('extensionDirectoryUrl') || 'https://extensions.bulwarkmail.org'; -} +/** Query parameters the UI may pass on to the directory's list endpoint. */ +const FORWARDED = ['q', 'type', 'pluginType', 'tag', 'author', 'sort', 'order', 'page', 'perPage', 'featured'] as const; /** - * GET /api/admin/marketplace - Search/browse the extension directory - * Proxies to the extension directory API + * GET /api/admin/marketplace - Browse the extension directory + * + * Proxies the directory's `/api/v2/extensions` with this Bulwark's version + * and channel, so the version offered for each extension is one this + * install can run, and marks what is already installed. */ export async function GET(request: NextRequest) { try { @@ -40,78 +56,47 @@ export async function GET(request: NextRequest) { if ('error' in result) return result.error; const directoryUrl = await getDirectoryUrl(); - const { searchParams } = request.nextUrl; - const url = new URL('/api/v1/extensions', directoryUrl); - - // Forward all search params - for (const [key, value] of searchParams.entries()) { - url.searchParams.set(key, value); - } - // The directory then offers the newest version this install can run - // (and pre-releases only when the admin opted into the beta channel). - if (process.env.NEXT_PUBLIC_APP_VERSION) url.searchParams.set('appVersion', process.env.NEXT_PUBLIC_APP_VERSION); - url.searchParams.set('channel', configManager.get('extensionDirectoryChannel') === 'beta' ? 'beta' : 'stable'); - - const res = await fetch(url.toString(), { - headers: { 'Accept': 'application/json' }, - signal: AbortSignal.timeout(10000), - }); - - if (!res.ok) { - return NextResponse.json( - { error: 'Failed to fetch from extension directory' }, - { status: 502 } - ); + const query: Record = {}; + for (const key of FORWARDED) { + const value = request.nextUrl.searchParams.get(key); + if (value) query[key] = value; } - const data = await res.json(); - - // Enrich with install status - const [pluginRegistry, themeRegistry] = await Promise.all([ - getPluginRegistry(), - getThemeRegistry(), - ]); - - const installedPluginVersions = new Map( - pluginRegistry.plugins.map(p => [p.id, p.version] as const), + const data = await directoryJson<{ data: DirectorySummary[]; meta: { page: number; perPage: number; total: number } }>( + v2Url(directoryUrl, '/extensions', { ...query, ...compatQuery() }), ); - const installedThemeVersions = new Map( - themeRegistry.themes.map(t => [t.id, t.version] as const), + const installed = await installedExtensions(); + + return NextResponse.json( + { + data: (data.data ?? []).map((ext) => toListing(ext, installedStateOf(installed, ext.slug, ext.type))), + meta: data.meta, + channel: getDirectoryChannel(), + appVersion: APP_VERSION || null, + directoryUrl, + }, + { headers: { 'Cache-Control': 'no-store' } }, ); - - const fileUrl = (path: unknown): string | null => - typeof path === 'string' && path - ? new URL(`/api/v1/files/${path}`, directoryUrl).toString() - : null; - - if (data.data) { - data.data = data.data.map((ext: Record) => { - const slug = ext.slug as string; - const installedVersion = ext.type === 'theme' - ? installedThemeVersions.get(slug) ?? null - : installedPluginVersions.get(slug) ?? null; - return { - ...ext, - iconUrl: fileUrl(ext.iconPath), - bannerUrl: fileUrl(ext.bannerPath), - installed: installedVersion !== null, - installedVersion, - }; - }); - } - - return NextResponse.json(data, { - headers: { 'Cache-Control': 'no-store' }, - }); } catch (error) { + if (error instanceof DirectoryError) { + return NextResponse.json({ error: error.message }, { status: 502 }); + } logger.error('Marketplace search error', { error: error instanceof Error ? error.message : 'Unknown error' }); return NextResponse.json({ error: 'Failed to connect to extension directory' }, { status: 502 }); } } /** - * POST /api/admin/marketplace - Install an extension from the directory - * Body: { slug: string, version: string, type: 'plugin' | 'theme' } + * POST /api/admin/marketplace - Install one version of an extension + * Body: { slug: string, version: string, type: 'plugin' | 'theme', force?: boolean } + * + * The version is looked up on the directory first. A version the publisher + * withdrew ("yanked") is refused with 409 unless `force` is set - the admin + * UI asks before sending that. A version this Bulwark is too old or too new + * for is refused outright. Then the bundle is downloaded, its directory + * signature checked, and it is installed under the directory slug, keeping + * the enabled and forced flags of whatever was installed before. The replaced + * version stays on disk for a rollback (lib/admin/extension-history.ts). */ export async function POST(request: NextRequest) { try { @@ -119,7 +104,7 @@ export async function POST(request: NextRequest) { if ('error' in result) return result.error; const ip = getClientIP(request); - const { slug, version, type } = await request.json(); + const { slug, version, type, force } = await request.json(); if (!slug || !version || !type) { return NextResponse.json({ error: 'Missing slug, version, or type' }, { status: 400 }); @@ -136,11 +121,50 @@ export async function POST(request: NextRequest) { { status: 400 }, ); } + if (typeof version !== 'string' || !RELEASE_VERSION.test(version)) { + return NextResponse.json({ error: 'Invalid version: must look like 1.2.3' }, { status: 400 }); + } - // Download the bundle from the directory const directoryUrl = await getDirectoryUrl(); - const bundleUrl = new URL(`/api/v1/bundle/${encodeURIComponent(slug)}/${encodeURIComponent(version)}`, directoryUrl); - const bundleRes = await fetch(bundleUrl.toString(), { + const versionPath = `/extensions/${encodeURIComponent(slug)}/versions/${encodeURIComponent(version)}`; + + // 1. What the directory says about this version. + let meta: DirectoryVersion; + try { + meta = (await directoryJson<{ data: DirectoryVersion }>(v2Url(directoryUrl, versionPath))).data; + } catch (err) { + if (err instanceof DirectoryError && err.status === 404) { + return NextResponse.json({ error: `Version ${version} of "${slug}" is not in the directory` }, { status: 404 }); + } + throw err; + } + + if (meta.yanked && force !== true) { + const reason = meta.yanked.reason ? `: ${meta.yanked.reason}` : ''; + return NextResponse.json( + { + error: `Version ${version} was withdrawn by its publisher${reason}. Pick another version, or install it anyway.`, + yanked: meta.yanked, + }, + { status: 409 }, + ); + } + if (APP_VERSION && meta.minAppVersion && compareVersions(APP_VERSION, meta.minAppVersion) < 0) { + return NextResponse.json( + { error: `Needs Bulwark ${meta.minAppVersion} or later (this is ${APP_VERSION})` }, + { status: 400 }, + ); + } + if (APP_VERSION && meta.maxAppVersion && compareVersions(APP_VERSION, meta.maxAppVersion) > 0) { + return NextResponse.json( + { error: `Version ${version} supports Bulwark up to ${meta.maxAppVersion} (this is ${APP_VERSION})` }, + { status: 400 }, + ); + } + + // 2. The bundle itself, from the same directory (never from a URL the + // directory handed back). + const bundleRes = await fetch(v2Url(directoryUrl, `${versionPath}/bundle`).toString(), { signal: AbortSignal.timeout(30000), }); @@ -169,6 +193,18 @@ export async function POST(request: NextRequest) { logger.warn('Marketplace bundle refused: signature check failed', { slug, version, reason: signature.reason }); return NextResponse.json({ error: `Refused: ${signature.reason}` }, { status: 400 }); } + // Without root keys (a self-hosted directory) the listing's hash is the + // only check that the bytes are the ones the directory meant. + if (meta.sha256 && createHash('sha256').update(new Uint8Array(buffer)).digest('hex') !== meta.sha256) { + return NextResponse.json({ error: 'Refused: the downloaded bundle does not match what the directory lists' }, { status: 502 }); + } + + const source = { kind: 'marketplace' as const, slug, directoryUrl }; + const installExtras = { + signature: signature.status, + channel: meta.channel, + yanked: meta.yanked, + }; if (type === 'theme') { const read = await readThemePackage(buffer, { resolveExtends: await themeCSSResolver() }); @@ -209,6 +245,7 @@ export async function POST(request: NextRequest) { : {}), installedAt: existingTheme?.installedAt ?? now, updatedAt: now, + source, }; await saveTheme(theme, css, skin); @@ -220,12 +257,13 @@ export async function POST(request: NextRequest) { version: theme.version, slug, signature: signature.status, + ...(meta.yanked ? { yanked: true } : {}), ...(isUpdate ? { previousVersion: existingTheme.version } : {}), }, ip, ); - return NextResponse.json({ success: true, theme, warnings, updated: isUpdate, signature: signature.status }); + return NextResponse.json({ success: true, theme, warnings, updated: isUpdate, previousVersion: existingTheme?.version ?? null, ...installExtras }); } // Plugin installation @@ -282,6 +320,7 @@ export async function POST(request: NextRequest) { ...(manifest.apiPostPaths ? { apiPostPaths: manifest.apiPostPaths } : {}), ...(manifest.locales ? { locales: manifest.locales } : {}), ...(manifest.credentials ? { credentials: manifest.credentials } : {}), + source, }; await savePlugin(plugin, code); @@ -297,15 +336,19 @@ export async function POST(request: NextRequest) { httpOrigins: plugin.httpOrigins ?? [], apiPostPaths: plugin.apiPostPaths ?? [], signature: signature.status, + ...(meta.yanked ? { yanked: true } : {}), ...(isUpdate ? { previousVersion: existingPlugin.version } : {}), }, ip, ); - return NextResponse.json({ success: true, plugin, warnings: pkg.warnings, updated: isUpdate, signature: signature.status }); + return NextResponse.json({ success: true, plugin, warnings: pkg.warnings, updated: isUpdate, previousVersion: existingPlugin?.version ?? null, ...installExtras }); } catch (error) { const readOnly = configReadOnlyResponse(error); if (readOnly) return readOnly; + if (error instanceof DirectoryError) { + return NextResponse.json({ error: error.message }, { status: 502 }); + } logger.error('Marketplace install error', { error: error instanceof Error ? error.message : 'Unknown error' }); return NextResponse.json({ error: 'Installation failed' }, { status: 500 }); } diff --git a/app/api/admin/marketplace/updates/route.ts b/app/api/admin/marketplace/updates/route.ts new file mode 100644 index 000000000..52b14e8cd --- /dev/null +++ b/app/api/admin/marketplace/updates/route.ts @@ -0,0 +1,74 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { requireAdminAuth } from '@/lib/admin/session'; +import { logger } from '@/lib/logger'; +import { + APP_VERSION, + DirectoryError, + askDirectoryAbout, + directoryJson, + getDirectoryChannel, + getDirectoryUrl, + installedExtensions, + v2Url, + type DirectoryAdvisory, + type DirectoryVersion, +} from '@/lib/admin/marketplace-directory'; + +export interface UpdatesAnswer { + updates: Array; + yanked: Array<{ slug: string; version: string; reason: string | null; at: string }>; + deprecated: Array<{ slug: string; message: string | null; replacement: string | null }>; + suspended: string[]; + advisories: DirectoryAdvisory[]; + unknown: string[]; +} + +const EMPTY: UpdatesAnswer = { updates: [], yanked: [], deprecated: [], suspended: [], advisories: [], unknown: [] }; + +/** + * GET /api/admin/marketplace/updates + * + * Asks the directory about every installed extension that came from it (or + * predates the record of where it came from): newer versions this Bulwark + * can run, versions the publisher withdrew, deprecations, suspensions and + * security advisories. Also lists what is installed, so the marketplace can + * show the "Installed" view from one request. + */ +export async function GET(request: NextRequest) { + try { + const result = await requireAdminAuth(request); + if ('error' in result) return result.error; + + const installed = await installedExtensions(); + const list = [...installed].map(([id, e]) => ({ id, ...e })); + const ask = list.filter((e) => askDirectoryAbout(e.source)).map((e) => ({ slug: e.id, version: e.version })); + + const directoryUrl = await getDirectoryUrl(); + const channel = getDirectoryChannel(); + let answer: UpdatesAnswer = EMPTY; + let error: string | null = null; + if (ask.length > 0) { + try { + const res = await directoryJson<{ data: UpdatesAnswer }>(v2Url(directoryUrl, '/updates'), { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ appVersion: APP_VERSION || undefined, channel, installed: ask }), + }); + answer = { ...EMPTY, ...res.data }; + } catch (err) { + // The installed list is still useful without the directory; say what + // went wrong instead of failing the whole view. + error = err instanceof DirectoryError ? err.message : 'Could not reach the extension directory'; + logger.warn('Marketplace updates check failed', { error: err instanceof Error ? err.message : String(err) }); + } + } + + return NextResponse.json( + { installed: list, ...answer, directoryUrl, channel, appVersion: APP_VERSION || null, error }, + { headers: { 'Cache-Control': 'no-store' } }, + ); + } catch (error) { + logger.error('Marketplace updates error', { error: error instanceof Error ? error.message : 'Unknown error' }); + return NextResponse.json({ error: 'Failed to check for updates' }, { status: 500 }); + } +} diff --git a/lib/admin/marketplace-directory.ts b/lib/admin/marketplace-directory.ts new file mode 100644 index 000000000..de3efa945 --- /dev/null +++ b/lib/admin/marketplace-directory.ts @@ -0,0 +1,252 @@ +/** + * The extension directory as the marketplace routes see it. + * + * Everything the webmail asks the directory goes through `/api/v2` + * (lib/api/v2.ts in the directory): list, detail, versions, bundle and the + * updates check. The URL is the admin's `extensionDirectoryUrl` setting; the + * channel decides whether pre-releases are offered. + * + * The directory's answers are mapped here into the shapes the admin UI + * renders, so the routes and the pages agree on names and the directory's own + * field names stay in one file. + */ + +import { configManager } from './config-manager'; +import { getPluginRegistry, getThemeRegistry, type ExtensionSource } from './plugin-registry'; +import { listHistory, type HistoryEntry } from './extension-history'; + +export const APP_VERSION = process.env.NEXT_PUBLIC_APP_VERSION || ''; + +export type Channel = 'stable' | 'beta'; + +export async function getDirectoryUrl(): Promise { + await configManager.ensureLoaded(); + return configManager.get('extensionDirectoryUrl') || 'https://extensions.bulwarkmail.org'; +} + +export function getDirectoryChannel(): Channel { + return configManager.get('extensionDirectoryChannel') === 'beta' ? 'beta' : 'stable'; +} + +/** A `/api/v2/...` URL on the directory; `path` starts with a slash. */ +export function v2Url(directoryUrl: string, path: string, query: Record = {}): URL { + const url = new URL(`/api/v2${path}`, directoryUrl); + for (const [key, value] of Object.entries(query)) { + if (value !== undefined && value !== '') url.searchParams.set(key, value); + } + return url; +} + +/** The query every catalogue request carries so the directory filters for this Bulwark. */ +export function compatQuery(): Record { + return { appVersion: APP_VERSION || undefined, channel: getDirectoryChannel() }; +} + +export class DirectoryError extends Error { + constructor(message: string, readonly status: number) { + super(message); + this.name = 'DirectoryError'; + } +} + +/** GET JSON from the directory; a non-2xx answer becomes a DirectoryError with its status. */ +export async function directoryJson(url: URL, init: RequestInit & { timeoutMs?: number } = {}): Promise { + const { timeoutMs = 10_000, ...rest } = init; + const res = await fetch(url.toString(), { + ...rest, + headers: { Accept: 'application/json', ...(rest.headers ?? {}) }, + signal: AbortSignal.timeout(timeoutMs), + }); + if (!res.ok) { + let message = `Directory request failed (${res.status})`; + try { + const body = await res.json(); + if (typeof body?.error?.message === 'string') message = body.error.message; + else if (typeof body?.error === 'string') message = body.error; + } catch { /* keep the status message */ } + throw new DirectoryError(message, res.status); + } + return res.json() as Promise; +} + +// ─── Directory shapes (lib/api/views.ts in the directory) ────────────────── + +export interface DirectoryVersion { + version: string; + channel: Channel; + publishedAt: string | null; + minAppVersion: string | null; + maxAppVersion: string | null; + permissions: string[]; + size: number; + sha256: string; + yanked: { at: string; reason: string | null } | null; + downloadUrl: string; + /** Only on the full view (`/versions`, `/versions/{v}`). */ + changelog?: string | null; + downloads?: number; + signature?: { keyId: string } | null; + provenance?: { source: { host: string; repo: string | null; commit: string | null } } | null; +} + +export interface DirectoryAuthor { + login: string; + name: string; + avatarUrl: string | null; + verified: boolean; + organization: boolean; + url: string; +} + +export interface DirectoryAdvisory { + id: string; + extension: string; + affected: string; + fixedIn: string | null; + severity: string; + summary: string; + details: string | null; + publishedAt: string | null; + withdrawn: boolean; + /** Only in the updates answer. */ + installedVersion?: string; +} + +export interface DirectorySummary { + slug: string; + name: string; + type: 'plugin' | 'theme'; + pluginType: string | null; + description: string; + tags: string[]; + license: string | null; + featured: boolean; + status: string; + iconUrl: string | null; + bannerUrl: string | null; + author: DirectoryAuthor | null; + latest: DirectoryVersion | null; + downloads: number; + rating: { average: number; count: number }; + deprecated: { at: string; message: string | null; replacement: string | null } | null; + source: { host: string; repo: string | null; subpath: string | null }; + url: string; + createdAt: string | null; + updatedAt: string | null; +} + +export interface DirectoryDetail extends DirectorySummary { + longDescription: string | null; + newest: DirectoryVersion | null; + versions: DirectoryVersion[]; + screenshots: Array<{ url: string; altText: string | null }>; + themePreviews: Array<{ variant: 'light' | 'dark'; url: string; colors: Record | null }>; + advisories: DirectoryAdvisory[]; + permissions: Array<{ id: string; title: string; body: string; highRisk: boolean }>; +} + +// ─── What the admin UI renders ───────────────────────────────────────────── + +export interface InstalledState { + installed: boolean; + installedVersion: string | null; + installedSource: ExtensionSource | null; +} + +export interface MarketplaceListing extends InstalledState { + slug: string; + name: string; + type: 'plugin' | 'theme'; + pluginType: string | null; + description: string; + tags: string[]; + license: string | null; + featured: boolean; + /** `approved`, `archived` or `suspended` (listed extensions are never pending). */ + status: string; + iconUrl: string | null; + bannerUrl: string | null; + author: { displayName: string; githubLogin: string; avatarUrl: string | null; verified: boolean; organization: boolean } | null; + totalDownloads: number; + rating: { average: number; count: number }; + deprecated: DirectorySummary['deprecated']; + /** The version the directory offers this Bulwark, or null if none fits. */ + latest: DirectoryVersion | null; + /** Kept for the card: the offered version's number and requirement. */ + latestVersion: string | null; + minAppVersion: string | null; + permissions: string[]; + /** The directory's own page for this extension. */ + directoryUrl: string; +} + +export function toListing(ext: DirectorySummary, state: InstalledState): MarketplaceListing { + return { + slug: ext.slug, + name: ext.name, + type: ext.type, + pluginType: ext.pluginType ?? null, + description: ext.description, + tags: ext.tags ?? [], + license: ext.license ?? null, + featured: !!ext.featured, + status: ext.status ?? 'approved', + iconUrl: ext.iconUrl ?? null, + bannerUrl: ext.bannerUrl ?? null, + author: ext.author + ? { + displayName: ext.author.name, + githubLogin: ext.author.login, + avatarUrl: ext.author.avatarUrl ?? null, + verified: !!ext.author.verified, + organization: !!ext.author.organization, + } + : null, + totalDownloads: ext.downloads ?? 0, + rating: ext.rating ?? { average: 0, count: 0 }, + deprecated: ext.deprecated ?? null, + latest: ext.latest ?? null, + latestVersion: ext.latest?.version ?? null, + minAppVersion: ext.latest?.minAppVersion ?? null, + permissions: ext.latest?.permissions ?? [], + directoryUrl: ext.url, + ...state, + }; +} + +/** Every admin-installed extension, keyed by id, with what the marketplace needs to know. */ +export async function installedExtensions(): Promise> { + const [plugins, themes] = await Promise.all([getPluginRegistry(), getThemeRegistry()]); + const out = new Map(); + for (const p of plugins.plugins) out.set(p.id, { kind: 'plugin', name: p.name, version: p.version, source: p.source ?? null, enabled: p.enabled }); + for (const t of themes.themes) if (!out.has(t.id)) out.set(t.id, { kind: 'theme', name: t.name, version: t.version, source: t.source ?? null, enabled: t.enabled }); + return out; +} + +export function installedStateOf( + installed: Awaited>, + slug: string, + type: 'plugin' | 'theme', +): InstalledState { + const entry = installed.get(slug); + if (!entry || entry.kind !== type) return { installed: false, installedVersion: null, installedSource: null }; + return { installed: true, installedVersion: entry.version, installedSource: entry.source }; +} + +/** + * Whether an installed extension is one the directory should be asked about. + * Entries from before `source` was recorded have none; they were almost all + * marketplace installs, and the directory answers "unknown" for a slug it + * does not list, so including them costs nothing. + */ +export function askDirectoryAbout(source: ExtensionSource | null): boolean { + return source === null || source.kind === 'marketplace'; +} + +export async function historyFor(kind: 'plugin' | 'theme', id: string): Promise { + try { + return await listHistory(kind, id); + } catch { + return []; + } +} From d4b5c4b5c2674a59d76d935d2828118b087babe8 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:29:37 +0200 Subject: [PATCH 087/238] fix: load demo portraits from the mount prefix so a Lite bundle under a subpath stays self-contained --- lib/demo/fixtures/people.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/demo/fixtures/people.ts b/lib/demo/fixtures/people.ts index 15bf08886..5ed348a00 100644 --- a/lib/demo/fixtures/people.ts +++ b/lib/demo/fixtures/people.ts @@ -10,6 +10,7 @@ * Portraits are Unsplash photos (free to use under the Unsplash License), * resized to 256px and served from public/demo/portraits/. */ +import { withBasePath } from '@/lib/browser-navigation'; import type { EmailAddress } from '@/lib/jmap/types'; export interface Person extends EmailAddress { @@ -73,8 +74,10 @@ export const PORTRAITS: Person[] = [ TOMAS, LENA, YUSUF, ]; +// Through withBasePath: a Lite bundle mounted at /webmail must ask for +// /webmail/demo/portraits/..., or the request leaves the bundle. export const portraitUri = (person: Person): string | undefined => - person.portrait ? `/demo/portraits/${person.portrait}.jpg` : undefined; + person.portrait ? withBasePath(`/demo/portraits/${person.portrait}.jpg`) : undefined; /** Plain address, without the fixture-only fields, for From/To lists. */ export const addr = (person: Person): EmailAddress => ({ name: person.name, email: person.email }); From 38c983a88616308e66b799748bfa93b85431d051 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:38:01 +0200 Subject: [PATCH 088/238] fix: open the mention card on click and show on hover that the chip is clickable --- app/globals.css | 12 ++- .../email/__tests__/composer-mention.test.tsx | 9 ++- components/email/mention-chip.tsx | 79 +++---------------- 3 files changed, 29 insertions(+), 71 deletions(-) diff --git a/app/globals.css b/app/globals.css index 0e0543dfa..3e369a320 100644 --- a/app/globals.css +++ b/app/globals.css @@ -827,12 +827,20 @@ optgroup { font-weight: 500; line-height: 1.35; text-decoration: none; - cursor: default; + cursor: pointer; user-select: none; + transition: background-color 120ms, box-shadow 120ms; } +/* Hover says it opens something on click; the card itself waits for the click. */ .tiptap a.mention:hover { - background-color: color-mix(in srgb, var(--color-primary) 22%, transparent); + background-color: color-mix(in srgb, var(--color-primary) 24%, transparent); + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 45%, transparent); +} + +.tiptap a.mention.mention-outside:hover { + background-color: color-mix(in srgb, currentColor 10%, transparent); + box-shadow: inset 0 0 0 1px currentColor; } .tiptap a.mention.ProseMirror-selectednode { diff --git a/components/email/__tests__/composer-mention.test.tsx b/components/email/__tests__/composer-mention.test.tsx index 35776d325..e6cc78de9 100644 --- a/components/email/__tests__/composer-mention.test.tsx +++ b/components/email/__tests__/composer-mention.test.tsx @@ -480,12 +480,17 @@ describe('composer with the @ recipient list', () => { expect(editor.getText()).toBe('Hallo '); }); - it('opens on hover and closes when the pointer leaves', async () => { + it('waits for a click: hovering a chip opens nothing, selecting it does', async () => { const { editor } = await renderComposer({ body: '

Hallo @Bob

' }); const chip = editor.view.dom.querySelector('a.mention')!; fireEvent.mouseOver(chip); + await act(() => new Promise((resolve) => setTimeout(resolve, 500))); + expect(card()).toBeNull(); + + act(() => { editor.commands.setNodeSelection(chipPos(editor, 'bob@example.com')); }); expect(await screen.findByTestId('mention-card')).toHaveTextContent('Bob Builder'); - fireEvent.mouseOut(chip, { relatedTarget: document.body }); + // Moving the cursor off the chip closes it. + act(() => { editor.commands.setTextSelection(1); }); await waitFor(() => expect(card()).toBeNull()); }); diff --git a/components/email/mention-chip.tsx b/components/email/mention-chip.tsx index a46f32b66..ee89437ba 100644 --- a/components/email/mention-chip.tsx +++ b/components/email/mention-chip.tsx @@ -97,8 +97,6 @@ export const MentionChip = Node.create({ interface ChipTarget { pos: number; element: HTMLElement; - /** Opened by selecting the chip (click, tap, keyboard), not by hovering. */ - pinned: boolean; } interface MentionChipCardProps { @@ -112,88 +110,42 @@ interface MentionChipCardProps { onAdd?: (candidate: MentionCandidate) => void; } -const HOVER_DELAY = 300; -const LEAVE_DELAY = 150; - /** * The card for a mention chip: who it is, whether they're on the message, - * and buttons to add them or remove the mention. Hovering a chip shows it; - * selecting the chip (a click or tap) keeps it open. + * and buttons to add them or remove the mention. Selecting the chip (a + * click, a tap, or the keyboard) opens it; hovering only shows the chip is + * clickable. */ export function MentionChipCard({ editor, recipients, findContacts, addsTo, onAdd }: MentionChipCardProps) { const t = useTranslations("email_composer"); const [target, setTarget] = useState(null); const [position, setPosition] = useState<{ x: number; y: number } | null>(null); const cardRef = useRef(null); - const timer = useRef | null>(null); - const clearTimer = () => { - if (timer.current) clearTimeout(timer.current); - timer.current = null; - }; + const close = useCallback(() => setTarget(null), []); - const close = useCallback(() => { - clearTimer(); - setTarget(null); - }, []); - - // Hover: open after a short pause, close a moment after leaving the chip - // unless the pointer moved onto the card. - useEffect(() => { - if (editor.isDestroyed) return; - const dom = editor.view.dom; - const chipAt = (node: EventTarget | null) => - node instanceof Element ? node.closest("a.mention") : null; - const onOver = (event: MouseEvent) => { - const element = chipAt(event.target); - if (!element || !dom.contains(element)) return; - clearTimer(); - timer.current = setTimeout(() => { - if (editor.isDestroyed) return; - const pos = editor.view.posAtDOM(element, 0); - setTarget((current) => current?.pinned ? current : { pos, element, pinned: false }); - }, HOVER_DELAY); - }; - const onOut = (event: MouseEvent) => { - if (!chipAt(event.target) || chipAt(event.relatedTarget)) return; - clearTimer(); - timer.current = setTimeout(() => { - setTarget((current) => current?.pinned ? current : null); - }, LEAVE_DELAY); - }; - dom.addEventListener("mouseover", onOver); - dom.addEventListener("mouseout", onOut); - return () => { - dom.removeEventListener("mouseover", onOver); - dom.removeEventListener("mouseout", onOut); - clearTimer(); - }; - }, [editor]); - - // Selecting a chip pins the card; moving the selection off it closes it. + // Selecting a chip opens the card; moving the selection off it, or the + // focus out of the editor, closes it. A press on the card's own buttons + // keeps the focus in the editor. useEffect(() => { const onSelection = () => { const { selection } = editor.state; if (selection instanceof NodeSelection && selection.node.type.name === "mentionChip") { const element = editor.view.nodeDOM(selection.from); if (element instanceof HTMLElement) { - clearTimer(); - setTarget({ pos: selection.from, element, pinned: true }); + setTarget({ pos: selection.from, element }); return; } } - setTarget((current) => current?.pinned ? null : current); + setTarget(null); }; - // A blur closes it too, but not a press on the card's own buttons, - // which keep the focus in the editor. - const onBlur = () => setTarget((current) => current?.pinned ? null : current); editor.on("selectionUpdate", onSelection); - editor.on("blur", onBlur); + editor.on("blur", close); return () => { editor.off("selectionUpdate", onSelection); - editor.off("blur", onBlur); + editor.off("blur", close); }; - }, [editor]); + }, [editor, close]); // The chip it belongs to went away (deleted, undone): close. useEffect(() => { @@ -254,7 +206,6 @@ export function MentionChipCard({ editor, recipients, findContacts, addsTo, onAd const add = () => { onAdd?.({ label, name: name !== label ? name : undefined, email, addsTo }); - if (!target.pinned) close(); }; return createPortal( @@ -271,12 +222,6 @@ export function MentionChipCard({ editor, recipients, findContacts, addsTo, onAd }} // Pressing a button keeps the focus (and the chip's selection) in the editor. onMouseDown={(e) => e.preventDefault()} - onMouseEnter={clearTimer} - onMouseLeave={() => { - if (target.pinned) return; - clearTimer(); - timer.current = setTimeout(close, LEAVE_DELAY); - }} > Date: Mon, 19 Oct 2026 00:43:00 +0200 Subject: [PATCH 089/238] fix: budget failed sign-ins per client and forward the client address to the mail server --- app/api/auth/session/route.ts | 28 ++- app/api/auth/stalwart-context/route.ts | 29 ++- app/api/auth/totp-token-exchange/route.ts | 29 ++- app/api/auth/verify/route.ts | 5 +- .../auth-login-routes-budget.test.ts | 217 ++++++++++++++++++ lib/auth/client-address.ts | 27 +++ lib/auth/stalwart-password-login.ts | 11 +- lib/auth/verify-budget.ts | 113 ++++++--- lib/auth/verify-jmap-auth.ts | 15 +- 9 files changed, 429 insertions(+), 45 deletions(-) create mode 100644 lib/__tests__/auth-login-routes-budget.test.ts create mode 100644 lib/auth/client-address.ts diff --git a/app/api/auth/session/route.ts b/app/api/auth/session/route.ts index 276b09afe..1c4317d4e 100644 --- a/app/api/auth/session/route.ts +++ b/app/api/auth/session/route.ts @@ -21,6 +21,8 @@ import { revokeImpersonationCredential } from '@/lib/impersonation/app-password' import { IMPERSONATION_GRANT_COOKIE, openImpersonationGrant } from '@/lib/impersonation/grant-cookie'; import { revokeWopiTokens } from '@/lib/wopi/revocation'; import { clearPairReauthInStore } from '@/lib/auth/pair-reauth'; +import { loginClientAddress } from '@/lib/auth/client-address'; +import { LOGIN_BUDGET_RETRY_AFTER_SECONDS, reserveLoginAttempt } from '@/lib/auth/verify-budget'; function sessionCookieOptions() { return { @@ -132,9 +134,29 @@ export async function POST(request: NextRequest) { // server, such as settings sync. Skipping the check for admin-configured // servers let anyone mint a cookie for any username with a made-up // password. `trusted` only relaxes the public-address requirement. - const normalizedServerUrl = await verifyJmapIdentity(upstreamUrl, authHeader, username, { - trusted: upstreamTrusted, - }); + // Wrong credentials tried from here count against this server's address + // upstream, so each client gets a failure budget (lib/auth/verify-budget.ts). + const clientIp = loginClientAddress(request); + const refund = reserveLoginAttempt(clientIp); + if (!refund) { + return NextResponse.json( + { error: 'too_many_attempts', hint: 'Too many failed sign-in attempts. Try again later.' }, + { status: 429, headers: { 'Retry-After': String(LOGIN_BUDGET_RETRY_AFTER_SECONDS) } }, + ); + } + let normalizedServerUrl: string; + try { + normalizedServerUrl = await verifyJmapIdentity(upstreamUrl, authHeader, username, { + trusted: upstreamTrusted, + clientIp, + }); + } catch (error) { + // Only a credential the server rejected spends the budget; an outage + // or a mismatched claim says nothing about the password. + if (!(error instanceof JmapAuthVerificationError && error.status === 401)) refund(); + throw error; + } + refund(); const token = encryptSession(normalizedServerUrl, username, accessToken ? { token: accessToken } : password); const cookieStore = await cookies(); cookieStore.set(cookieName, token, sessionCookieOptions()); diff --git a/app/api/auth/stalwart-context/route.ts b/app/api/auth/stalwart-context/route.ts index 01a40a673..dfab68351 100644 --- a/app/api/auth/stalwart-context/route.ts +++ b/app/api/auth/stalwart-context/route.ts @@ -9,6 +9,8 @@ import { parseJmapServers, resolveTrustedJmapUrl } from '@/lib/admin/jmap-server import { MAX_ACCOUNT_SLOTS } from '@/lib/account-utils'; import { rejectCrossOriginRequest } from '@/lib/security/same-origin'; import { insecureCookieHint, verificationFailureBody } from '@/lib/auth/verification-failure'; +import { loginClientAddress } from '@/lib/auth/client-address'; +import { LOGIN_BUDGET_RETRY_AFTER_SECONDS, reserveLoginAttempt } from '@/lib/auth/verify-budget'; function getSlot(request: NextRequest, bodySlot: unknown): number { if (typeof bodySlot === 'number' && bodySlot >= 0 && bodySlot < MAX_ACCOUNT_SLOTS) { @@ -71,9 +73,30 @@ export async function POST(request: NextRequest) { // any user's synced settings. Admin-configured servers are `trusted`, // which only relaxes the public-address requirement (they may live on a // private network) - never the credential check. - const { serverUrl: normalizedServerUrl, accountName } = await resolveJmapIdentity(upstreamUrl, authHeader, username, { - trusted: upstreamTrusted, - }); + // Wrong credentials tried from here count against this server's address + // upstream, so each client gets a failure budget (lib/auth/verify-budget.ts). + const clientIp = loginClientAddress(request); + const refund = reserveLoginAttempt(clientIp); + if (!refund) { + return NextResponse.json( + { error: 'too_many_attempts', hint: 'Too many failed sign-in attempts. Try again later.' }, + { status: 429, headers: { 'Retry-After': String(LOGIN_BUDGET_RETRY_AFTER_SECONDS) } }, + ); + } + let normalizedServerUrl: string; + let accountName: string; + try { + ({ serverUrl: normalizedServerUrl, accountName } = await resolveJmapIdentity(upstreamUrl, authHeader, username, { + trusted: upstreamTrusted, + clientIp, + })); + } catch (error) { + // Only a credential the server rejected spends the budget; an outage + // or a mismatched claim says nothing about the password. + if (!(error instanceof JmapAuthVerificationError && error.status === 401)) refund(); + throw error; + } + refund(); await setStalwartAuthContext(slot, { serverUrl: normalizedServerUrl, diff --git a/app/api/auth/totp-token-exchange/route.ts b/app/api/auth/totp-token-exchange/route.ts index 0b6416c0c..eb1cb72c5 100644 --- a/app/api/auth/totp-token-exchange/route.ts +++ b/app/api/auth/totp-token-exchange/route.ts @@ -12,6 +12,8 @@ import { MAX_ACCOUNT_SLOTS } from '@/lib/account-utils'; import { DEFAULT_CLIENT_ID } from '@/lib/oauth/token-exchange'; import { rejectCrossOriginRequest } from '@/lib/security/same-origin'; import { stalwartPasswordLogin } from '@/lib/auth/stalwart-password-login'; +import { loginClientAddress } from '@/lib/auth/client-address'; +import { LOGIN_BUDGET_RETRY_AFTER_SECONDS, reserveLoginAttempt } from '@/lib/auth/verify-budget'; /** * Exchange a password + (optional) TOTP code for OAuth tokens. @@ -35,6 +37,7 @@ async function attemptLogin( slot: number, serverId: string | null, upstreamTrusted: boolean, + clientIp: string, ): Promise { const base = upstreamUrl.replace(/\/+$/, ''); @@ -52,6 +55,15 @@ async function attemptLogin( || readFileEnv(process.env.OAUTH_CLIENT_SECRET_FILE) || ''; + // Wrong passwords tried from here count against this server's address + // upstream, so each client gets a failure budget (lib/auth/verify-budget.ts). + const refund = reserveLoginAttempt(clientIp); + if (!refund) { + return NextResponse.json( + { error: 'too_many_attempts' }, + { status: 429, headers: { 'Retry-After': String(LOGIN_BUDGET_RETRY_AFTER_SECONDS) } }, + ); + } const result = await stalwartPasswordLogin({ serverUrl: base, username, @@ -61,7 +73,12 @@ async function attemptLogin( clientSecret, redirectUri, trusted: upstreamTrusted, + clientIp, }); + // Only a rejected password spends the budget. `totp_required` means the + // password was right and the code is still missing, which every TOTP login + // goes through once; outages say nothing about the password. + if (result.ok || result.error !== 'invalid_credentials') refund(); if (!result.ok) { switch (result.error) { @@ -160,7 +177,17 @@ export async function POST(request: NextRequest) { ? bodyRedirectUri : trimUrl(upstreamUrl); - return await attemptLogin(upstreamUrl, username, password, totpCode, redirectUri, slot, resolvedServerId, upstreamTrusted); + return await attemptLogin( + upstreamUrl, + username, + password, + totpCode, + redirectUri, + slot, + resolvedServerId, + upstreamTrusted, + loginClientAddress(request), + ); } catch (error) { logger.error('TOTP login error', { error: error instanceof Error ? error.message : 'Unknown error' }); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); diff --git a/app/api/auth/verify/route.ts b/app/api/auth/verify/route.ts index 780ad690b..59efca39b 100644 --- a/app/api/auth/verify/route.ts +++ b/app/api/auth/verify/route.ts @@ -82,14 +82,15 @@ export async function POST(request: NextRequest) { // Wrong passwords tried from here count against this server's address // upstream; over budget the browser probes the JMAP server itself. - const refund = reserveVerifyProbe(getClientIP(request)); + const clientIp = getClientIP(request); + const refund = reserveVerifyProbe(clientIp); if (!refund) return respond('inconclusive'); const authHeader = hasToken ? `Bearer ${token}` : 'Basic ' + Buffer.from(username + ':' + password).toString('base64'); try { - await verifyJmapAuth(upstreamUrl, authHeader, { trusted: upstreamTrusted }); + await verifyJmapAuth(upstreamUrl, authHeader, { trusted: upstreamTrusted, clientIp }); refund(); return respond('ok'); } catch (error) { diff --git a/lib/__tests__/auth-login-routes-budget.test.ts b/lib/__tests__/auth-login-routes-budget.test.ts new file mode 100644 index 000000000..793cc52f5 --- /dev/null +++ b/lib/__tests__/auth-login-routes-budget.test.ts @@ -0,0 +1,217 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +/** + * The sign-in routes forward the credential to the mail server from this + * host's address, exactly like the /api/auth/verify pre-check, but had no + * failure budget: a script posting wrong passwords could trip the mail + * server's per-address limiter against the webmail and lock everyone out, + * and use the routes as an unthrottled password oracle. Each client now gets + * the pre-check's budget, and the client's own address is forwarded upstream + * so a mail server that trusts this host blames the right party. + */ + +vi.mock('next/server', () => ({ + NextResponse: { + json: (data: unknown, init?: { status?: number; headers?: Record }) => ({ + json: async () => data, + status: init?.status ?? 200, + headers: new Headers(init?.headers), + }), + }, +})); + +vi.mock('@/lib/logger', () => ({ + logger: { warn: vi.fn(), error: vi.fn(), debug: vi.fn(), info: vi.fn() }, +})); + +const cookieSet = vi.fn(); +vi.mock('next/headers', () => ({ + cookies: async () => ({ get: () => undefined, set: cookieSet, delete: vi.fn(), getAll: () => [] }), +})); + +const config: Record = {}; +vi.mock('@/lib/admin/config-manager', () => ({ + configManager: { + ensureLoaded: async () => {}, + get: (key: string, fallback: unknown) => (key in config ? config[key] : fallback), + }, +})); + +vi.mock('@/lib/auth/crypto', () => ({ + encryptSession: () => 'encrypted-session', + decryptSession: () => null, + decryptPayload: () => null, + encryptPayload: () => 'encrypted', +})); + +vi.mock('@/lib/stalwart/auth-context', () => ({ + setStalwartAuthContext: vi.fn(), + setStalwartAuthContextInStore: vi.fn(), + clearStalwartAuthContextInStore: vi.fn(), +})); + +vi.mock('@/lib/telemetry/login-tracker', () => ({ recordLogin: vi.fn() })); + +const SERVER = 'https://mail.example.org'; +const HOST = 'webmail.example'; +const PASSWORD = 'alice-secret'; + +function json(data: unknown, status = 200) { + return new Response(JSON.stringify(data), { status, headers: { 'content-type': 'application/json' } }); +} + +let fetchSpy: ReturnType; +let upstreamCalls: { url: string; init?: RequestInit }[]; + +/** A mail server with one user; Basic auth for the session routes, the structured login for TOTP. */ +function installFakeServer() { + upstreamCalls = []; + fetchSpy = vi.spyOn(globalThis, 'fetch').mockImplementation(async (input, init) => { + const url = String(input); + upstreamCalls.push({ url, init }); + if (url === `${SERVER}/api/auth`) { + const body = JSON.parse(String(init?.body)) as { accountSecret: string; mfaToken?: string }; + if (body.accountSecret !== PASSWORD) return json({ type: 'failure' }); + if (!body.mfaToken) return json({ type: 'mfaRequired' }); + return json({ type: 'authenticated', client_code: 'code-1' }); + } + if (url === `${SERVER}/auth/token`) { + return json({ access_token: 'at', expires_in: 3600, refresh_token: 'rt' }); + } + const auth = new Headers(init?.headers).get('authorization') || ''; + const [, pass = ''] = Buffer.from(auth.replace(/^Basic\s+/i, ''), 'base64').toString('utf8').split(':'); + if (pass !== PASSWORD) return json({ status: 401 }, 401); + if (url === `${SERVER}/.well-known/jmap`) { + return json({ apiUrl: `${SERVER}/jmap/`, username: 'alice@example.org', primaryAccounts: {}, accounts: {} }); + } + return json({ error: `unexpected ${url}` }, 404); + }); +} + +function mockRequest(body: unknown, clientIp?: string) { + const headers: Record = { + host: HOST, + origin: `https://${HOST}`, + 'content-type': 'application/json', + 'sec-fetch-site': 'same-origin', + }; + if (clientIp) headers['x-forwarded-for'] = clientIp; + return { + method: 'POST', + json: async () => body, + headers: { get: (k: string) => headers[k.toLowerCase()] ?? null }, + nextUrl: { searchParams: new URLSearchParams(), origin: `https://${HOST}` }, + }; +} + +type RouteResponse = { status: number; headers: Headers; json: () => Promise<{ error?: string; ok?: boolean }> }; + +async function post(route: string, body: unknown, clientIp?: string) { + const mod = (await import(/* @vite-ignore */ route)) as { POST: (r: unknown) => Promise }; + const res = (await mod.POST(mockRequest(body, clientIp))) as RouteResponse; + return { status: res.status, retryAfter: res.headers.get('retry-after'), body: await res.json() }; +} + +const SESSION = '@/app/api/auth/session/route'; +const CONTEXT = '@/app/api/auth/stalwart-context/route'; +const TOTP = '@/app/api/auth/totp-token-exchange/route'; + +const basic = (pass: string) => `Basic ${Buffer.from(`alice@example.org:${pass}`).toString('base64')}`; +const sessionBody = (password: string) => ({ serverUrl: SERVER, username: 'alice@example.org', password }); +const contextBody = (password: string) => ({ serverUrl: SERVER, username: 'alice@example.org', authHeader: basic(password) }); +const totpBody = (password: string, totp?: string) => ({ serverUrl: SERVER, username: 'alice@example.org', password, totp }); + +beforeEach(() => { + for (const k of Object.keys(config)) delete config[k]; + config.jmapServerUrl = SERVER; + cookieSet.mockClear(); + vi.resetModules(); + installFakeServer(); +}); + +afterEach(() => { + fetchSpy.mockRestore(); +}); + +describe.each([ + ['/api/auth/session', SESSION, sessionBody], + ['/api/auth/stalwart-context', CONTEXT, contextBody], +])('%s failure budget', (_name, route, body) => { + it('stops forwarding passwords upstream after five wrong ones from one client', async () => { + for (let i = 0; i < 5; i++) { + expect((await post(route, body('wrong'), '198.51.100.7')).status).toBe(401); + } + const calls = upstreamCalls.length; + const over = await post(route, body('wrong'), '198.51.100.7'); + expect(over.status).toBe(429); + expect(over.body.error).toBe('too_many_attempts'); + expect(Number(over.retryAfter)).toBeGreaterThan(0); + expect(upstreamCalls.length).toBe(calls); + + // The right password from that client is refused too until the window passes... + expect((await post(route, body(PASSWORD), '198.51.100.7')).status).toBe(429); + expect(cookieSet).not.toHaveBeenCalled(); + // ...while another client still signs in. + expect((await post(route, body(PASSWORD), '198.51.100.8')).status).toBe(200); + }); + + it('does not count right passwords or outages against the budget', async () => { + for (let i = 0; i < 8; i++) { + expect((await post(route, body(PASSWORD), '198.51.100.9')).status).toBe(200); + } + fetchSpy.mockImplementation(async () => { + throw new TypeError('fetch failed'); + }); + for (let i = 0; i < 8; i++) { + expect((await post(route, body('wrong'), '198.51.100.9')).status).not.toBe(429); + } + }); + + it('forwards the client address upstream, and only a real one', async () => { + await post(route, body(PASSWORD), '198.51.100.10'); + expect(new Headers(upstreamCalls[0].init?.headers).get('x-forwarded-for')).toBe('198.51.100.10'); + + upstreamCalls = []; + await post(route, body(PASSWORD), 'evil\u0000, not an address'); + expect(new Headers(upstreamCalls[0].init?.headers).get('x-forwarded-for')).toBeNull(); + + upstreamCalls = []; + await post(route, body(PASSWORD)); + expect(new Headers(upstreamCalls[0].init?.headers).get('x-forwarded-for')).toBeNull(); + }); +}); + +describe('/api/auth/totp-token-exchange failure budget', () => { + it('stops forwarding passwords upstream after five wrong ones from one client', async () => { + for (let i = 0; i < 5; i++) { + expect((await post(TOTP, totpBody('wrong'), '198.51.100.7')).body.error).toBe('invalid_credentials'); + } + const calls = upstreamCalls.length; + const over = await post(TOTP, totpBody('wrong'), '198.51.100.7'); + expect(over.status).toBe(429); + expect(over.body.error).toBe('too_many_attempts'); + expect(upstreamCalls.length).toBe(calls); + expect((await post(TOTP, totpBody(PASSWORD, '123456'), '198.51.100.8')).status).toBe(200); + }); + + it('does not count the TOTP prompt, a successful login or an outage', async () => { + for (let i = 0; i < 8; i++) { + expect((await post(TOTP, totpBody(PASSWORD), '198.51.100.9')).body.error).toBe('totp_required'); + expect((await post(TOTP, totpBody(PASSWORD, '123456'), '198.51.100.9')).status).toBe(200); + } + fetchSpy.mockImplementation(async () => { + throw new TypeError('fetch failed'); + }); + for (let i = 0; i < 8; i++) { + expect((await post(TOTP, totpBody('wrong'), '198.51.100.9')).body.error).toBe('login_unreachable'); + } + }); + + it('forwards the client address on both login steps', async () => { + await post(TOTP, totpBody(PASSWORD, '123456'), '198.51.100.10'); + expect(upstreamCalls.map((c) => new Headers(c.init?.headers).get('x-forwarded-for'))).toEqual([ + '198.51.100.10', + '198.51.100.10', + ]); + }); +}); diff --git a/lib/auth/client-address.ts b/lib/auth/client-address.ts new file mode 100644 index 000000000..a27856950 --- /dev/null +++ b/lib/auth/client-address.ts @@ -0,0 +1,27 @@ +import { isIP } from 'node:net'; +import { getClientIP } from '@/lib/admin/session'; + +/** + * Every credential the sign-in routes check reaches the mail server from this + * host's address. Stalwart counts failed logins per address (fail2ban) and + * bans the address once the allowance is spent, so wrong passwords typed by + * or fired at the webmail would eventually lock the webmail itself out for + * everyone. Stalwart reads `X-Forwarded-For` from connections that come from + * a configured trusted network (`server.proxy.trusted-networks`), so handing + * it the real client address lets it attribute the failure to that client + * instead. A server that does not trust this host ignores the header. + * + * Only a syntactically valid address is forwarded: the client-facing value + * comes from the request's own `X-Forwarded-For` when no reverse proxy + * rewrites it, and anything else would be a stranger's text in an upstream + * header. + */ +export function forwardedClientHeaders(clientIp: string | undefined): Record { + if (!clientIp || clientIp === '0.0.0.0' || isIP(clientIp) === 0) return {}; + return { 'X-Forwarded-For': clientIp }; +} + +/** The client address of `request` as the sign-in routes forward and budget it. */ +export function loginClientAddress(request: Request): string { + return getClientIP(request); +} diff --git a/lib/auth/stalwart-password-login.ts b/lib/auth/stalwart-password-login.ts index a79279b7e..7bfe227e5 100644 --- a/lib/auth/stalwart-password-login.ts +++ b/lib/auth/stalwart-password-login.ts @@ -1,6 +1,7 @@ import { logger } from '@/lib/logger'; import { DisallowedUrlError, fetchPublicUrl } from '@/lib/security/url-guard'; import { generateCodeVerifier, generateCodeChallenge } from '@/lib/oauth/pkce'; +import { forwardedClientHeaders } from '@/lib/auth/client-address'; /** * Exchange a password + (optional) TOTP code for OAuth tokens at Stalwart. @@ -41,6 +42,12 @@ export interface StalwartPasswordLoginOptions { * admin-configured servers may live on private addresses. */ trusted: boolean; + /** + * Address of the signing-in client, forwarded as `X-Forwarded-For` so a + * mail server that trusts this host counts a wrong password against that + * client rather than against the webmail (see lib/auth/client-address.ts). + */ + clientIp?: string; } export interface StalwartTokens { @@ -107,7 +114,7 @@ export async function stalwartPasswordLogin( try { const loginResponse = await upstreamFetch(`${base}/api/auth`, { method: 'POST', - headers: { 'Content-Type': 'application/json' }, + headers: { 'Content-Type': 'application/json', ...forwardedClientHeaders(opts.clientIp) }, body: JSON.stringify({ type: 'authCode', accountName: opts.username, @@ -174,7 +181,7 @@ export async function stalwartPasswordLogin( try { const tokenResponse = await upstreamFetch(tokenEndpoint, { method: 'POST', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + headers: { 'Content-Type': 'application/x-www-form-urlencoded', ...forwardedClientHeaders(opts.clientIp) }, body: tokenParams.toString(), }); diff --git a/lib/auth/verify-budget.ts b/lib/auth/verify-budget.ts index 7452ccfd2..bca207673 100644 --- a/lib/auth/verify-budget.ts +++ b/lib/auth/verify-budget.ts @@ -28,46 +28,95 @@ interface Budget { resetAt: number; } -const clients = new Map(); -let global: Budget = { used: 0, resetAt: 0 }; - -function fresh(budget: Budget | undefined, now: number): Budget { - return budget && budget.resetAt > now ? budget : { used: 0, resetAt: now + WINDOW_MS }; +export interface FailureBudgetOptions { + /** Failures one client may cause per window. */ + clientMax: number; + /** Failures all clients together may cause per window; `Infinity` for no ceiling. */ + globalMax: number; + windowMs?: number; } -function prune(now: number): void { - for (const [key, budget] of clients) { - if (budget.resetAt <= now) clients.delete(key); - } - // Still full of live windows: drop the oldest. - while (clients.size >= MAX_TRACKED_CLIENTS) { - const oldest = clients.keys().next().value; - if (oldest === undefined) break; - clients.delete(oldest); - } +export interface FailureBudget { + /** + * Reserve one attempt for `client`. Returns null when the client or the + * whole server is over budget; otherwise a function that refunds the + * attempt, to be called when the credentials turned out to be right. + */ + reserve(client: string, now?: number): (() => void) | null; } +export function createFailureBudget(options: FailureBudgetOptions): FailureBudget { + const windowMs = options.windowMs ?? WINDOW_MS; + const clients = new Map(); + let global: Budget = { used: 0, resetAt: 0 }; + + function fresh(budget: Budget | undefined, now: number): Budget { + return budget && budget.resetAt > now ? budget : { used: 0, resetAt: now + windowMs }; + } + + function prune(now: number): void { + for (const [key, budget] of clients) { + if (budget.resetAt <= now) clients.delete(key); + } + // Still full of live windows: drop the oldest. + while (clients.size >= MAX_TRACKED_CLIENTS) { + const oldest = clients.keys().next().value; + if (oldest === undefined) break; + clients.delete(oldest); + } + } + + return { + reserve(client: string, now: number = Date.now()): (() => void) | null { + global = fresh(global, now); + const own = fresh(clients.get(client), now); + if (global.used >= options.globalMax || own.used >= options.clientMax) return null; + + if (!clients.has(client)) prune(now); + own.used++; + global.used++; + clients.set(client, own); + + const reservedGlobal = global; + let refunded = false; + return () => { + if (refunded) return; + refunded = true; + own.used = Math.max(0, own.used - 1); + reservedGlobal.used = Math.max(0, reservedGlobal.used - 1); + }; + }, + }; +} + +const verifyBudget = createFailureBudget({ clientMax: CLIENT_MAX_FAILURES, globalMax: GLOBAL_MAX_FAILURES }); + /** * Reserve one probe for `client`. Returns null when the client or the whole * server is over budget; otherwise a function that refunds the probe, to be * called when the credentials turned out to be right. */ export function reserveVerifyProbe(client: string, now: number = Date.now()): (() => void) | null { - global = fresh(global, now); - const own = fresh(clients.get(client), now); - if (global.used >= GLOBAL_MAX_FAILURES || own.used >= CLIENT_MAX_FAILURES) return null; - - if (!clients.has(client)) prune(now); - own.used++; - global.used++; - clients.set(client, own); - - const reservedGlobal = global; - let refunded = false; - return () => { - if (refunded) return; - refunded = true; - own.used = Math.max(0, own.used - 1); - reservedGlobal.used = Math.max(0, reservedGlobal.used - 1); - }; + return verifyBudget.reserve(client, now); } + +/** + * The sign-in routes themselves (/api/auth/session, /api/auth/stalwart-context, + * /api/auth/totp-token-exchange) forward the credential to the mail server + * exactly like the pre-check does, so they are the same password oracle and + * burn the same upstream failure allowance. They have no browser-side + * fallback, so a client over budget gets a 429 instead of an answer. There is + * no global ceiling here: one would let a handful of wrong passwords lock + * every user out of signing in for the window, which is the outcome this + * guards against. The real client address is forwarded upstream instead (see + * lib/auth/client-address.ts), so a mail server that trusts this host + * attributes the failures to the client that caused them. + */ +const loginBudget = createFailureBudget({ clientMax: CLIENT_MAX_FAILURES, globalMax: Infinity }); + +export function reserveLoginAttempt(client: string, now: number = Date.now()): (() => void) | null { + return loginBudget.reserve(client, now); +} + +/** Seconds a client over budget is told to wait (Retry-After). */ +export const LOGIN_BUDGET_RETRY_AFTER_SECONDS = Math.ceil(WINDOW_MS / 1000); diff --git a/lib/auth/verify-jmap-auth.ts b/lib/auth/verify-jmap-auth.ts index 238310c6e..5ddc0cc42 100644 --- a/lib/auth/verify-jmap-auth.ts +++ b/lib/auth/verify-jmap-auth.ts @@ -4,6 +4,7 @@ import { isPublicHttpUrl, type PublicFetchResponse, } from '@/lib/security/url-guard'; +import { forwardedClientHeaders } from '@/lib/auth/client-address'; const VERIFY_TIMEOUT_MS = 10000; const MAX_REDIRECTS = 3; @@ -157,6 +158,12 @@ export interface VerifiedJmapSession { export interface VerifyJmapAuthOptions { trusted?: boolean; + /** + * Address of the client whose credential is checked, forwarded upstream as + * `X-Forwarded-For` so a mail server that trusts this host counts a wrong + * password against that client rather than against the webmail. + */ + clientIp?: string; } /** @@ -307,7 +314,11 @@ async function fetchIdentityEmails( } const requestInit = { method: 'POST', - headers: { Authorization: authHeader, 'Content-Type': 'application/json' }, + headers: { + Authorization: authHeader, + 'Content-Type': 'application/json', + ...forwardedClientHeaders(options.clientIp), + }, body: JSON.stringify({ using: ['urn:ietf:params:jmap:core', 'urn:ietf:params:jmap:mail'], methodCalls: [['Identity/get', { accountId, ids: null }, '0']], @@ -384,7 +395,7 @@ async function fetchVerifiedSession( const requestInit = { method: 'GET', - headers: { Authorization: authHeader }, + headers: { Authorization: authHeader, ...forwardedClientHeaders(options.clientIp) }, signal: controller.signal, }; // Untrusted (user-supplied) endpoints connect through the rebinding-safe From f91b214719265e784328ac1b881bbbfdbcae2a7a Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:45:11 +0200 Subject: [PATCH 090/238] fix: key synced settings on the account a token login resolves to, not on a bare claimed name --- app/api/auth/session/route.ts | 12 +++++-- app/api/settings/route.ts | 19 +++++++---- .../auth-routes-credential-check.test.ts | 8 +++++ .../settings-route-account-key.test.ts | 34 +++++++++++++++++++ 4 files changed, 63 insertions(+), 10 deletions(-) diff --git a/app/api/auth/session/route.ts b/app/api/auth/session/route.ts index 1c4317d4e..3b0bbb5dd 100644 --- a/app/api/auth/session/route.ts +++ b/app/api/auth/session/route.ts @@ -4,7 +4,7 @@ import { logger } from '@/lib/logger'; import { encryptSession, decryptSession, sessionAuthHeader, type SessionCredentials } from '@/lib/auth/crypto'; import { SESSION_COOKIE_MAX_AGE, sessionCookieName } from '@/lib/auth/session-cookie'; import { getCookieOptions } from '@/lib/oauth/cookie-config'; -import { JmapAuthVerificationError, verifyJmapIdentity } from '@/lib/auth/verify-jmap-auth'; +import { JmapAuthVerificationError, resolveJmapIdentity } from '@/lib/auth/verify-jmap-auth'; import { clearStalwartAuthContextInStore, setStalwartAuthContextInStore, @@ -144,12 +144,17 @@ export async function POST(request: NextRequest) { { status: 429, headers: { 'Retry-After': String(LOGIN_BUDGET_RETRY_AFTER_SECONDS) } }, ); } + // The context cookie also records which account the credential belongs + // to: a Bearer login may claim a bare local part (`john`) that several + // accounts on a multi-domain server answer to, and per-user data such as + // synced settings must be keyed on the account, not on the claim. let normalizedServerUrl: string; + let accountName: string; try { - normalizedServerUrl = await verifyJmapIdentity(upstreamUrl, authHeader, username, { + ({ serverUrl: normalizedServerUrl, accountName } = await resolveJmapIdentity(upstreamUrl, authHeader, username, { trusted: upstreamTrusted, clientIp, - }); + })); } catch (error) { // Only a credential the server rejected spends the budget; an outage // or a mismatched claim says nothing about the password. @@ -164,6 +169,7 @@ export async function POST(request: NextRequest) { serverUrl: normalizedServerUrl, username, authHeader, + ...(accountName !== username ? { accountName } : {}), }); void recordLogin(username, normalizedServerUrl); diff --git a/app/api/settings/route.ts b/app/api/settings/route.ts index 8b198bf5a..a3ed0f676 100644 --- a/app/api/settings/route.ts +++ b/app/api/settings/route.ts @@ -79,20 +79,25 @@ async function verifyIdentity(username: string, serverUrl: string): Promise { expect.anything(), 0, expect.objectContaining({ username: 'alice@example.org', serverUrl: SERVER }), ); }); + + it('records the account a bare Bearer claim resolves to, so per-user data is not keyed on the claim', async () => { + const { status } = await postSession({ serverUrl: SERVER, username: 'mallory', token: 'tok-mallory', slot: 0 }); + expect(status).toBe(200); + expect(setStalwartAuthContextInStore).toHaveBeenCalledWith( + expect.anything(), 0, expect.objectContaining({ username: 'mallory', accountName: 'mallory@example.org' }), + ); + }); }); describe('POST /api/auth/stalwart-context (GHSA-wxcm-j4jc-9fxq)', () => { diff --git a/lib/__tests__/settings-route-account-key.test.ts b/lib/__tests__/settings-route-account-key.test.ts index 3b14ed99e..f73fe0aed 100644 --- a/lib/__tests__/settings-route-account-key.test.ts +++ b/lib/__tests__/settings-route-account-key.test.ts @@ -84,6 +84,40 @@ describe('settings route keys on the account the credential belongs to', () => { expect(await res.json()).toEqual({ settings: null }); }); + it('keys on the canonical account even when a remember-me session cookie carries the bare claim', async () => { + // /api/auth/session writes both cookies for a token login; the session + // cookie only knows the claim, the context the account it resolved to. + store.set(`john|${SERVER}`, { signature: 'john@a.example private' }); + await signIn({ username: 'john', accountName: 'john@b.example' }); + const { encryptSession } = await import('@/lib/auth/crypto'); + const { sessionCookieName } = await import('@/lib/auth/session-cookie'); + jar.set(sessionCookieName(0), encryptSession(SERVER, 'john', { token: 't' })); + const { GET, POST } = await import('@/app/api/settings/route'); + const read = await GET(new NextRequest('https://webmail.example/api/settings', { + headers: { 'x-settings-username': 'john', 'x-settings-server': SERVER }, + })); + expect(await read.json()).toEqual({ settings: null }); + await POST(new NextRequest('https://webmail.example/api/settings', { + method: 'POST', + headers: SAME_ORIGIN, + body: JSON.stringify({ username: 'john', serverUrl: SERVER, settings: { theme: 'dark' } }), + })); + expect(store.get(`john|${SERVER}`)).toEqual({ signature: 'john@a.example private' }); + expect(store.get(`john@b.example|${SERVER}`)).toEqual({ theme: 'dark' }); + }); + + it('refuses to key on a bare token-login claim when no context cookie resolves it', async () => { + jar.clear(); + const { encryptSession } = await import('@/lib/auth/crypto'); + const { sessionCookieName } = await import('@/lib/auth/session-cookie'); + jar.set(sessionCookieName(0), encryptSession(SERVER, 'john', { token: 't' })); + const { GET } = await import('@/app/api/settings/route'); + const res = await GET(new NextRequest('https://webmail.example/api/settings', { + headers: { 'x-settings-username': 'john', 'x-settings-server': SERVER }, + })); + expect(res.status).toBe(403); + }); + it('keeps keying on the login name when the context names no other account', async () => { await signIn({ username: 'alice@example.org' }); const { POST } = await import('@/app/api/settings/route'); From aeb2aeda66ce366b08fc0da722ba40de0923fffb Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:47:05 +0200 Subject: [PATCH 091/238] fix: stop a click on a mention chip from opening the mailto handler in Firefox --- .../email/__tests__/recipient-mention.test.tsx | 15 +++++++++++++++ components/email/mention-chip.tsx | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/components/email/__tests__/recipient-mention.test.tsx b/components/email/__tests__/recipient-mention.test.tsx index 851e3a42b..98cacbc02 100644 --- a/components/email/__tests__/recipient-mention.test.tsx +++ b/components/email/__tests__/recipient-mention.test.tsx @@ -189,6 +189,21 @@ describe('RecipientMention insertion', () => { editor.destroy(); }); + it('never lets a click on a chip follow its mailto link', () => { + // Firefox follows a link in a non-editable island of the editor. + const { editor } = setup('

Hi @Eva and us

'); + document.body.appendChild(editor.view.dom); + const chip = editor.view.dom.querySelector('a.mention')!; + const click = new MouseEvent('click', { bubbles: true, cancelable: true }); + chip.dispatchEvent(click); + expect(click.defaultPrevented).toBe(true); + const middle = new MouseEvent('auxclick', { bubbles: true, cancelable: true, button: 1 }); + chip.dispatchEvent(middle); + expect(middle.defaultPrevented).toBe(true); + editor.view.dom.remove(); + editor.destroy(); + }); + it('turns a sent mention back into a chip, and leaves other mailto links alone', () => { const { editor } = setup( '

Hi @Eva and write us

', diff --git a/components/email/mention-chip.tsx b/components/email/mention-chip.tsx index ee89437ba..a3ef586cc 100644 --- a/components/email/mention-chip.tsx +++ b/components/email/mention-chip.tsx @@ -77,6 +77,20 @@ export const MentionChip = Node.create({ }, }, props: { + // The chip is a mailto: link that isn't editable, and Firefox + // follows such links even inside the editor - asking which app + // should write the mail. A click only selects it (and opens the + // card); ProseMirror's selection doesn't rely on the default. + handleDOMEvents: { + click: (_view, event) => { + if ((event.target as Element | null)?.closest?.("a.mention")) event.preventDefault(); + return false; + }, + auxclick: (_view, event) => { + if ((event.target as Element | null)?.closest?.("a.mention")) event.preventDefault(); + return false; + }, + }, decorations(state) { const recipients = mentionRecipientsKey.getState(state); if (!recipients) return null; From 31326c7daf08361282ec1cef3047b2e321b69a9f Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:50:16 +0200 Subject: [PATCH 092/238] fix: keep OAuth client secrets and the session secret out of the admin audit log, config API and dashboard writes --- .../admin/_tabs/_jmap-servers-section.tsx | 17 +- .../admin/__tests__/config-secrets.test.ts | 148 ++++++++++++++++++ app/api/admin/config/route.ts | 22 ++- lib/admin/audit.ts | 59 ++++++- lib/admin/jmap-servers.ts | 50 +++++- 5 files changed, 286 insertions(+), 10 deletions(-) create mode 100644 app/api/admin/__tests__/config-secrets.test.ts diff --git a/app/(main)/admin/_tabs/_jmap-servers-section.tsx b/app/(main)/admin/_tabs/_jmap-servers-section.tsx index 3dab7f75d..71e05540a 100644 --- a/app/(main)/admin/_tabs/_jmap-servers-section.tsx +++ b/app/(main)/admin/_tabs/_jmap-servers-section.tsx @@ -19,12 +19,15 @@ interface RowDraft { oauthClientId: string; oauthIssuerUrl: string; oauthClientSecret: string; + /** The server holds a secret the dashboard is not shown; an empty field keeps it. */ + hasClientSecret: boolean; oauthButtonLabel: string; oauthEndSessionUrl: string; oauthExpanded: boolean; } function entryToDraft(e: JmapServerEntry): RowDraft { + const hasClientSecret = !!(e.oauth?.hasClientSecret || e.oauth?.clientSecret); return { id: e.id, label: e.label, @@ -32,10 +35,11 @@ function entryToDraft(e: JmapServerEntry): RowDraft { domains: (e.domains ?? []).join(', '), oauthClientId: e.oauth?.clientId ?? '', oauthIssuerUrl: e.oauth?.issuerUrl ?? '', - oauthClientSecret: e.oauth?.clientSecret ?? '', + oauthClientSecret: '', + hasClientSecret, oauthButtonLabel: e.oauth?.buttonLabel ?? '', oauthEndSessionUrl: e.oauth?.endSessionUrl ?? '', - oauthExpanded: !!(e.oauth && (e.oauth.clientId || e.oauth.issuerUrl || e.oauth.clientSecret || e.oauth.endSessionUrl)), + oauthExpanded: !!(e.oauth && (e.oauth.clientId || e.oauth.issuerUrl || hasClientSecret || e.oauth.endSessionUrl)), }; } @@ -52,11 +56,14 @@ function draftToEntry(d: RowDraft): JmapServerEntry | null { const clientSecret = d.oauthClientSecret; const buttonLabel = d.oauthButtonLabel.trim(); const endSessionUrl = d.oauthEndSessionUrl.trim(); - const oauth = clientId || issuerUrl || clientSecret || endSessionUrl + // A typed secret replaces the stored one; an empty field keeps it (the + // server fills it back in), and the flag keeps the block alive so the + // server knows there is still an OAuth client here. + const oauth = clientId || issuerUrl || clientSecret || endSessionUrl || d.hasClientSecret ? { ...(clientId ? { clientId } : {}), ...(issuerUrl ? { issuerUrl } : {}), - ...(clientSecret ? { clientSecret } : {}), + ...(clientSecret ? { clientSecret } : d.hasClientSecret ? { hasClientSecret: true } : {}), ...(buttonLabel ? { buttonLabel } : {}), ...(endSessionUrl ? { endSessionUrl } : {}), } @@ -79,6 +86,7 @@ function emptyDraft(): RowDraft { oauthClientId: '', oauthIssuerUrl: '', oauthClientSecret: '', + hasClientSecret: false, oauthButtonLabel: '', oauthEndSessionUrl: '', oauthExpanded: false, @@ -256,6 +264,7 @@ export function JmapServersSection({ value, source, onChange, onRevert }: Props) type="password" value={d.oauthClientSecret} onChange={(e) => update(i, { oauthClientSecret: e.target.value })} + placeholder={d.hasClientSecret ? '•••••••• (saved - type to replace)' : undefined} className="h-8 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" />
diff --git a/app/api/admin/__tests__/config-secrets.test.ts b/app/api/admin/__tests__/config-secrets.test.ts new file mode 100644 index 000000000..502eccf28 --- /dev/null +++ b/app/api/admin/__tests__/config-secrets.test.ts @@ -0,0 +1,148 @@ +/** + * @vitest-environment node + */ +import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest'; +import { NextRequest } from 'next/server'; +import { readFileSync, rmSync } from 'node:fs'; +import path from 'node:path'; + +// GET /api/admin/config hides the session secret and the OAuth client secrets +// behind `hasValue` so a stolen admin session cannot lift them in one +// request. The same secrets leaked through two other doors: every PATCH wrote +// old and new values verbatim into the audit log, which GET /api/admin/audit +// hands back, and the per-server client secrets in `jmapServers` were returned +// in full. A PATCH could also replace the session secret itself, making the +// caller the holder of the key behind every session cookie. + +const configDir = await vi.hoisted(async () => { + const { mkdtempSync } = await import('node:fs'); + const { tmpdir } = await import('node:os'); + const { join } = await import('node:path'); + const dir = mkdtempSync(join(tmpdir(), 'bulwark-config-secrets-')); + process.env.ADMIN_CONFIG_DIR = dir; + process.env.ADMIN_STATE_DIR = join(dir, 'state'); + delete process.env.SESSION_SECRET; + delete process.env.SESSION_SECRET_FILE; + return dir; +}); + +vi.mock('@/lib/admin/session', () => ({ + requireAdminAuth: async () => ({ payload: { role: 'admin' } }), + getClientIP: () => '127.0.0.1', +})); + +import { GET as getConfig, PATCH as patchConfig, DELETE as deleteConfig } from '../config/route'; +import { GET as getAudit } from '../audit/route'; +import { configManager } from '@/lib/admin/config-manager'; +import { getSessionSecret } from '@/lib/auth/session-secret'; +import { parseJmapServers } from '@/lib/admin/jmap-servers'; + +function req(url: string, method: string, body?: unknown) { + return new NextRequest(`http://localhost${url}`, { + method, + ...(body !== undefined ? { body: JSON.stringify(body) } : {}), + headers: { 'content-type': 'application/json', 'sec-fetch-site': 'same-origin' }, + }); +} + +async function auditText(): Promise { + const res = await getAudit(req('/api/admin/audit?limit=200', 'GET')); + expect(res.status).toBe(200); + return JSON.stringify(await res.json()); +} + +function auditFileText(): string { + return readFileSync(path.join(configDir, 'state', 'audit.log'), 'utf-8'); +} + +const SERVER = { + id: 'bridge', + label: 'Bridge', + url: 'https://bridge.example.com', + oauth: { clientId: 'bulwark', clientSecret: 'per-server-s3cret', issuerUrl: 'https://idp.example.com' }, +}; + +beforeAll(async () => { + await configManager.ensureLoaded(); +}); + +afterAll(() => { + rmSync(configDir, { recursive: true, force: true }); +}); + +describe('admin config secrets stay on the server', () => { + it('does not write the OAuth client secret into the audit log or return it from the audit API', async () => { + const res = await patchConfig(req('/api/admin/config', 'PATCH', { oauthClientSecret: 'global-s3cret-1' })); + expect(res.status).toBe(200); + await patchConfig(req('/api/admin/config', 'PATCH', { oauthClientSecret: 'global-s3cret-2' })); + const revert = await deleteConfig(req('/api/admin/config', 'DELETE', { key: 'oauthClientSecret' })); + expect(revert.status).toBe(200); + + const text = await auditText(); + expect(text).not.toContain('global-s3cret'); + expect(text).toContain('[redacted]'); + expect(auditFileText()).not.toContain('global-s3cret'); + }); + + it('does not return per-server client secrets from GET /api/admin/config or the audit API, but keeps them on save', async () => { + expect((await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: [SERVER] }))).status).toBe(200); + + const shown = await (await getConfig(req('/api/admin/config', 'GET'))).json(); + expect(JSON.stringify(shown)).not.toContain('per-server-s3cret'); + expect(shown.jmapServers.value[0].oauth).toEqual({ + clientId: 'bulwark', + issuerUrl: 'https://idp.example.com', + hasClientSecret: true, + }); + expect(await auditText()).not.toContain('per-server-s3cret'); + expect(auditFileText()).not.toContain('per-server-s3cret'); + + // The dashboard sends the entry back as it was shown: the stored secret survives. + const resent = shown.jmapServers.value; + resent[0].label = 'Bridge (renamed)'; + expect((await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: resent }))).status).toBe(200); + let stored = parseJmapServers(configManager.get('jmapServers')); + expect(stored[0]!.label).toBe('Bridge (renamed)'); + expect(stored[0]!.oauth!.clientSecret).toBe('per-server-s3cret'); + expect(stored[0]!.oauth).not.toHaveProperty('hasClientSecret'); + + // A typed secret replaces it; an explicit empty one clears it. + await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: [{ ...SERVER, oauth: { ...SERVER.oauth, clientSecret: 'new-s3cret' } }] })); + stored = parseJmapServers(configManager.get('jmapServers')); + expect(stored[0]!.oauth!.clientSecret).toBe('new-s3cret'); + await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: [{ ...SERVER, oauth: { clientId: 'bulwark', clientSecret: '' } }] })); + stored = parseJmapServers(configManager.get('jmapServers')); + expect(stored[0]!.oauth).toEqual({ clientId: 'bulwark' }); + + // Dropping the OAuth block drops the secret with it. + await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: [SERVER] })); + await patchConfig(req('/api/admin/config', 'PATCH', { jmapServers: [{ id: 'bridge', label: 'Bridge', url: SERVER.url }] })); + stored = parseJmapServers(configManager.get('jmapServers')); + expect(stored[0]!.oauth).toBeUndefined(); + }); + + it('refuses to change the session secret from the dashboard', async () => { + const before = getSessionSecret(); + const res = await patchConfig(req('/api/admin/config', 'PATCH', { sessionSecret: 'x'.repeat(48) })); + expect(res.status).toBe(400); + expect(getSessionSecret()).toBe(before); + expect(configManager.get('sessionSecret', '')).toBe(''); + expect(await auditText()).not.toContain('x'.repeat(48)); + }); + + it('redacts entries an older version wrote with the secret in clear', async () => { + const { appendFileSync } = await import('node:fs'); + appendFileSync( + path.join(configDir, 'state', 'audit.log'), + JSON.stringify({ + ts: new Date().toISOString(), + action: 'config.update', + detail: { changes: [{ key: 'sessionSecret', old: 'legacy-old-secret', new: 'legacy-new-secret' }] }, + ip: '127.0.0.1', + }) + '\n', + ); + const text = await auditText(); + expect(text).not.toContain('legacy-old-secret'); + expect(text).not.toContain('legacy-new-secret'); + }); +}); diff --git a/app/api/admin/config/route.ts b/app/api/admin/config/route.ts index 450b88674..79b7eecd8 100644 --- a/app/api/admin/config/route.ts +++ b/app/api/admin/config/route.ts @@ -3,7 +3,7 @@ import { configManager } from '@/lib/admin/config-manager'; import { requireAdminAuth, getClientIP } from '@/lib/admin/session'; import { auditLog } from '@/lib/admin/audit'; import { CONFIG_ENV_MAP, SENSITIVE_CONFIG_KEYS } from '@/lib/admin/types'; -import { parseJmapServers } from '@/lib/admin/jmap-servers'; +import { parseJmapServers, redactJmapServersForAdmin, withStoredClientSecrets } from '@/lib/admin/jmap-servers'; import { parseDomainBranding } from '@/lib/admin/domain-branding'; import { initAdminPassword, isAdminEnabled } from '@/lib/admin/password'; import { logger } from '@/lib/logger'; @@ -41,6 +41,9 @@ export async function GET(request: NextRequest) { // Nothing configured, but the secret generated on first start is there. (key === 'sessionSecret' && entry.source === 'default' && hasSessionSecret()); safe[key] = { source: entry.source, hasValue }; + } else if (key === 'jmapServers') { + // Per-server OAuth client secrets are secrets like the global one. + safe[key] = { source: entry.source, value: redactJmapServersForAdmin(parseJmapServers(entry.value)) }; } else { safe[key] = entry; } @@ -77,6 +80,17 @@ export async function PATCH(request: NextRequest) { return NextResponse.json({ error: `Unknown config keys: ${invalidKeys.join(', ')}` }, { status: 400 }); } + // The session secret is the key behind every session cookie and the + // synced-settings encryption. The dashboard hides its value for a reason; + // letting an admin session replace it with a value of its choosing would + // hand that session the key (and sign everyone else out). Only the setup + // wizard writes it, before any session exists. + if ('sessionSecret' in updates) { + return NextResponse.json({ + error: 'sessionSecret cannot be changed from the dashboard. Set SESSION_SECRET in the environment instead.', + }, { status: 400 }); + } + // Enum keys only accept their declared values; a stray string would // otherwise be persisted and fail closed (or open) at the read site. for (const [key, value] of Object.entries(updates)) { @@ -106,7 +120,11 @@ export async function PATCH(request: NextRequest) { if (incoming != null && !Array.isArray(incoming)) { return NextResponse.json({ error: 'jmapServers must be an array' }, { status: 400 }); } - const sanitized = parseJmapServers(incoming); + // The dashboard never sees the stored client secrets (GET redacts + // them), so an entry that omits one keeps it. + const sanitized = parseJmapServers( + withStoredClientSecrets(incoming, parseJmapServers(configManager.get('jmapServers', []))), + ); const incomingCount = Array.isArray(incoming) ? incoming.length : 0; if (sanitized.length !== incomingCount) { return NextResponse.json({ diff --git a/lib/admin/audit.ts b/lib/admin/audit.ts index 0c0bb73e9..8bc3b324e 100644 --- a/lib/admin/audit.ts +++ b/lib/admin/audit.ts @@ -2,7 +2,59 @@ import { appendFile, stat, rename, readFile } from 'node:fs/promises'; import { existsSync } from 'node:fs'; import { logger } from '@/lib/logger'; import { ensureStateDir, getStatePath } from './paths'; -import type { AuditEntry } from './types'; +import { SENSITIVE_CONFIG_KEYS, type AuditEntry } from './types'; + +const REDACTED = '[redacted]'; + +/** + * A config value as it may appear in the audit log. The dashboard hides the + * session secret and the OAuth client secrets behind `hasValue` flags so a + * stolen admin session cannot read them, so the log of a change must not + * hand them out either (and must not keep them on disk past a rotation). + */ +export function redactConfigValueForAudit(key: string, value: unknown): unknown { + if (SENSITIVE_CONFIG_KEYS.has(key)) { + return typeof value === 'string' && value.length > 0 ? REDACTED : value; + } + if (key === 'jmapServers' && Array.isArray(value)) { + return value.map((entry) => { + if (!entry || typeof entry !== 'object') return entry; + const e = entry as Record; + if (!e.oauth || typeof e.oauth !== 'object') return entry; + const o = e.oauth as Record; + if (typeof o.clientSecret !== 'string' || o.clientSecret.length === 0) return entry; + return { ...e, oauth: { ...o, clientSecret: REDACTED } }; + }); + } + return value; +} + +/** + * Apply {@link redactConfigValueForAudit} to the detail of a config change, + * whatever shape wrote it. Entries written before the redaction existed are + * cleaned on the way out as well. + */ +export function redactAuditDetail(action: string, detail: Record): Record { + if (action === 'config.update' && Array.isArray(detail.changes)) { + return { + ...detail, + changes: detail.changes.map((change) => { + if (!change || typeof change !== 'object') return change; + const c = change as Record; + if (typeof c.key !== 'string') return change; + return { + ...c, + ...('old' in c ? { old: redactConfigValueForAudit(c.key, c.old) } : {}), + ...('new' in c ? { new: redactConfigValueForAudit(c.key, c.new) } : {}), + }; + }), + }; + } + if (action === 'config.revert' && typeof detail.key === 'string' && 'oldValue' in detail) { + return { ...detail, oldValue: redactConfigValueForAudit(detail.key, detail.oldValue) }; + } + return detail; +} const MAX_LOG_SIZE = 10 * 1024 * 1024; // 10 MB const MAX_ROTATIONS = 3; @@ -22,7 +74,7 @@ export async function auditLog(action: string, detail: Record, const entry: AuditEntry = { ts: new Date().toISOString(), action, - detail, + detail: redactAuditDetail(action, detail), ip, }; @@ -64,7 +116,8 @@ export async function readAuditLog(page: number = 1, limit: number = 50, actionF let entries: AuditEntry[] = lines.map(line => { try { return JSON.parse(line); } catch { return null; } - }).filter((e): e is AuditEntry => e !== null); + }).filter((e): e is AuditEntry => e !== null && typeof e === 'object') + .map((e) => (e.detail && typeof e.detail === 'object' ? { ...e, detail: redactAuditDetail(e.action, e.detail) } : e)); if (actionFilter) { entries = entries.filter(e => e.action === actionFilter); diff --git a/lib/admin/jmap-servers.ts b/lib/admin/jmap-servers.ts index d78f05d60..67319b54d 100644 --- a/lib/admin/jmap-servers.ts +++ b/lib/admin/jmap-servers.ts @@ -17,7 +17,14 @@ export interface JmapServerEntry { label: string; url: string; domains?: string[]; - oauth?: JmapServerOAuthConfig; + oauth?: JmapServerOAuthConfig & { + /** + * Set on the admin dashboard's view of an entry instead of the secret + * itself: an admin session may change the secret but never read it + * back. Never persisted. + */ + hasClientSecret?: boolean; + }; } export interface PublicJmapServerEntry { @@ -135,6 +142,47 @@ export function redactJmapServers(servers: JmapServerEntry[]): PublicJmapServerE })); } +/** + * The admin dashboard's view: every field except the per-server OAuth client + * secret, which is replaced by `hasClientSecret`. The dashboard shows the + * global client secret and the session secret the same way (`hasValue`), so + * that a stolen admin session cannot lift the secrets in one request. + */ +export function redactJmapServersForAdmin(servers: JmapServerEntry[]): JmapServerEntry[] { + return servers.map((s) => { + if (!s.oauth) return s; + const { clientSecret, hasClientSecret: _ignored, ...rest } = s.oauth; + void _ignored; + return { ...s, oauth: { ...rest, ...(clientSecret ? { hasClientSecret: true } : {}) } }; + }); +} + +/** + * Complete a dashboard-submitted server list with the client secrets already + * stored. The dashboard never holds the secret, so an entry that still has an + * OAuth block but names no `clientSecret` keeps the stored one; an explicit + * empty string clears it, and dropping the OAuth block drops the secret with + * it. Operates on the raw request value so the caller can still validate it. + */ +export function withStoredClientSecrets(incoming: unknown, stored: JmapServerEntry[]): unknown { + if (!Array.isArray(incoming)) return incoming; + const secrets = new Map(); + for (const entry of stored) { + if (entry.oauth?.clientSecret) secrets.set(entry.id, entry.oauth.clientSecret); + } + return incoming.map((item) => { + if (!item || typeof item !== 'object') return item; + const e = item as Record; + if (typeof e.id !== 'string' || !e.oauth || typeof e.oauth !== 'object') return item; + const o = e.oauth as Record; + const { hasClientSecret: _flag, ...oauth } = o; + void _flag; + const storedSecret = secrets.get(e.id.trim()); + if (oauth.clientSecret === undefined && storedSecret) oauth.clientSecret = storedSecret; + return { ...e, oauth }; + }); +} + export function findServerById(servers: JmapServerEntry[], id: string | null | undefined): JmapServerEntry | undefined { if (!id) return undefined; return servers.find((s) => s.id === id); From f8eee3b12d0d9c97e9f968b441d544c05f21c7c8 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 19 Oct 2026 00:54:24 +0200 Subject: [PATCH 093/238] fix: keep a crafted mail body or subject from stalling the reader in the verification code search --- lib/__tests__/verification-code.test.ts | 44 +++++++++++++++++++++++++ lib/verification-code.ts | 36 +++++++++++++++----- 2 files changed, 72 insertions(+), 8 deletions(-) diff --git a/lib/__tests__/verification-code.test.ts b/lib/__tests__/verification-code.test.ts index 257360804..b3dc00e53 100644 --- a/lib/__tests__/verification-code.test.ts +++ b/lib/__tests__/verification-code.test.ts @@ -179,3 +179,47 @@ describe('verificationCodeBodyText', () => { expect(findVerificationCode('', text)).toBe('811083'); }); }); + +// A sender's bytes drive these regexes on the UI thread, for every opened +// mail and every list row. Each of these inputs took seconds to minutes +// before the patterns were anchored; all must stay linear. +describe('crafted mail cannot stall the code search', () => { + const BUDGET_MS = 250; + const part = (partId: string, type: string) => ({ partId, blobId: `blob-${partId}`, size: 1, type }); + const value = (v: string) => ({ value: v, isEncodingProblem: false, isTruncated: false }); + function timed(fn: () => unknown): number { + const started = performance.now(); + fn(); + return performance.now() - started; + } + const htmlMail = (body: string) => ({ + htmlBody: [part('1', 'text/html')], + textBody: [], + bodyValues: { 1: value(body) }, + }); + + it('a megabyte of unclosed - )} - {children} - - - ); -} diff --git a/app/(sandbox)/plugin-kit.css b/app/(sandbox)/plugin-kit.css index 6265d9eae..ff06f66b4 100644 --- a/app/(sandbox)/plugin-kit.css +++ b/app/(sandbox)/plugin-kit.css @@ -1,5 +1,5 @@ /* Styles for the plugin UI kit (lib/plugin-sandbox/ui-kit), loaded into - every plugin iframe. Built from the same Tailwind classes as the app's own + every plugin iframe; scripts/build-plugin-sandbox.mjs compiles it. Built from the same Tailwind classes as the app's own components, so a kit Button is the app's Button. Only the kit's sources are scanned, which keeps the file small. diff --git a/app/(sandbox)/plugin-sandbox-privileged/page.tsx b/app/(sandbox)/plugin-sandbox-privileged/page.tsx deleted file mode 100644 index 0f3d431d3..000000000 --- a/app/(sandbox)/plugin-sandbox-privileged/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { SandboxRuntime } from '@/lib/plugin-sandbox/runtime'; - -// Privileged-tier sandbox route. Identical runtime to /plugin-sandbox, but the -// host loads it into a same-origin (`allow-same-origin`) iframe so the bundle -// gets real `crypto.subtle` + IndexedDB. The trust gate (signature + admin -// approval) is enforced host-side before this route is ever framed; the page -// itself carries no extra privilege. -// -// Must be dynamic so the per-request CSP nonce from proxy.ts is embedded in -// Next's injected hydration/chunk scripts. -export const dynamic = 'force-dynamic'; - -export default function PrivilegedPluginSandboxPage() { - return ; -} diff --git a/app/(sandbox)/plugin-sandbox-privileged/route.ts b/app/(sandbox)/plugin-sandbox-privileged/route.ts new file mode 100644 index 000000000..5ed0a733b --- /dev/null +++ b/app/(sandbox)/plugin-sandbox-privileged/route.ts @@ -0,0 +1,12 @@ +import { sandboxDocument } from '@/lib/plugin-sandbox/sandbox-document'; + +// Privileged-tier sandbox document. Identical to /plugin-sandbox, but the +// host loads it into a same-origin (`allow-same-origin`) iframe so the bundle +// gets real `crypto.subtle` + IndexedDB. The trust gate (signature + admin +// approval) is enforced host-side before this route is ever framed; the +// document itself carries no extra privilege. +export const dynamic = 'force-dynamic'; + +export function GET(request: Request): Promise { + return sandboxDocument(request); +} diff --git a/app/(sandbox)/plugin-sandbox/page.tsx b/app/(sandbox)/plugin-sandbox/page.tsx deleted file mode 100644 index fa9576eed..000000000 --- a/app/(sandbox)/plugin-sandbox/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { SandboxRuntime } from '@/lib/plugin-sandbox/runtime'; - -// Must be dynamic so the per-request CSP nonce from proxy.ts is embedded in -// Next's injected hydration/chunk scripts. With force-static, those scripts -// render without a nonce and the strict sandbox CSP blocks them. -export const dynamic = 'force-dynamic'; - -export default function PluginSandboxPage() { - return ; -} diff --git a/app/(sandbox)/plugin-sandbox/route.ts b/app/(sandbox)/plugin-sandbox/route.ts new file mode 100644 index 000000000..c02b187cd --- /dev/null +++ b/app/(sandbox)/plugin-sandbox/route.ts @@ -0,0 +1,9 @@ +import { sandboxDocument } from '@/lib/plugin-sandbox/sandbox-document'; + +// The untrusted plugin iframe document (sandbox="allow-scripts", opaque +// origin). Dynamic: the CSP nonce from proxy.ts is per request. +export const dynamic = 'force-dynamic'; + +export function GET(request: Request): Promise { + return sandboxDocument(request); +} diff --git a/lib/__tests__/plugin-sandbox-build.test.ts b/lib/__tests__/plugin-sandbox-build.test.ts new file mode 100644 index 000000000..71c6128df --- /dev/null +++ b/lib/__tests__/plugin-sandbox-build.test.ts @@ -0,0 +1,46 @@ +// @vitest-environment node +import { describe, it, expect, afterAll } from 'vitest'; +import { mkdtemp, readFile, rm } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { buildPluginSandbox } from '../../scripts/build-plugin-sandbox.mjs'; + +type Outputs = Record; imports: Array<{ path: string; kind: string }> }>; + +const dirs: string[] = []; +afterAll(async () => { + for (const d of dirs) await rm(d, { recursive: true, force: true }); +}); + +// Every plugin frame parses what its document loads up front, again in every +// frame (opaque origins get no code cache). +describe('plugin sandbox build', () => { + it('loads React, the runtime and the kit up front, and every other icon only on demand', async () => { + const outdir = await mkdtemp(path.join(tmpdir(), 'plugin-sandbox-')); + dirs.push(outdir); + const { script, style, outputs } = await buildPluginSandbox({ outdir }) as { script: string; style: string; outputs: Outputs }; + + const byName = new Map(Object.entries(outputs).map(([file, out]) => [path.basename(file), out])); + const eager = new Set(); + const walk = (name: string) => { + if (eager.has(name)) return; + eager.add(name); + for (const imp of byName.get(name)!.imports) if (imp.kind === 'import-statement') walk(path.basename(imp.path)); + }; + walk(script); + const eagerBytes = [...eager].reduce((sum, n) => sum + byName.get(n)!.bytes, 0); + const eagerInputs = [...eager].flatMap((n) => Object.keys(byName.get(n)!.inputs)).map((f) => f.replace(/\\/g, '/')); + + // The first build put all 5000 Tabler icons (2.6 MB) in an eager chunk. + expect(eagerBytes).toBeLessThan(600_000); + expect(eagerInputs.filter((f) => f.includes('node_modules/next/'))).toEqual([]); + expect(eagerInputs.filter((f) => /(^|\/)stores\//.test(f))).toEqual([]); + // ...but they are still there for an icon name the kit doesn't ship. + const lazy = [...byName.keys()].filter((n) => n.endsWith('.js') && !eager.has(n)); + expect(lazy.some((n) => byName.get(n)!.bytes > 1_000_000)).toBe(true); + + const manifest = JSON.parse(await readFile(path.join(outdir, 'manifest.json'), 'utf8')); + expect(manifest).toEqual({ script, style, preload: [...eager].filter((n) => n !== script) }); + expect(await readFile(path.join(outdir, style), 'utf8')).toContain('.bk'); + }, 120_000); +}); diff --git a/lib/__tests__/plugin-sandbox-document.test.ts b/lib/__tests__/plugin-sandbox-document.test.ts new file mode 100644 index 000000000..22f19d8d4 --- /dev/null +++ b/lib/__tests__/plugin-sandbox-document.test.ts @@ -0,0 +1,73 @@ +// @vitest-environment node +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; + +const files = vi.hoisted(() => new Map()); +vi.mock('node:fs/promises', async (orig) => ({ + ...(await orig()), + readFile: vi.fn(async (p: string) => { + const key = String(p).replace(/\\/g, '/').split('/public/')[1]; + if (key && files.has(key)) return files.get(key)!; + throw Object.assign(new Error('ENOENT'), { code: 'ENOENT' }); + }), +})); + +import { GET as untrusted } from '@/app/(sandbox)/plugin-sandbox/route'; +import { GET as privileged } from '@/app/(sandbox)/plugin-sandbox-privileged/route'; + +const MANIFEST = 'plugin-sandbox-assets/manifest.json'; + +function request(nonce = 'n0nce'): Request { + return new Request('http://localhost:3000/plugin-sandbox', { headers: { 'x-nonce': nonce } }); +} + +beforeEach(() => { + files.clear(); + files.set(MANIFEST, JSON.stringify({ script: 'runtime-ABC.js', style: 'kit-123.css', preload: ['chunk-ICONS.js'] })); + vi.stubEnv('NODE_ENV', 'development'); // re-read the manifest for every test +}); + +afterEach(() => { + vi.unstubAllEnvs(); +}); + +// Plugin frames used to load a Next page: its client router and hydration +// in every frame, and a server render per frame. +describe('plugin sandbox document', () => { + it.each([['/plugin-sandbox', untrusted], ['/plugin-sandbox-privileged', privileged]])( + '%s is a plain page with the runtime script and the kit stylesheet', async (_path, GET) => { + const res = await GET(request()); + const html = await res.text(); + + expect(res.status).toBe(200); + expect(res.headers.get('content-type')).toContain('text/html'); + expect(html).toContain(''); + expect(html).toContain(''); + // Fetched with the script, not after it has been parsed. + expect(html).toContain(''); + expect(html).toContain('
'); + expect(html).not.toContain('/_next/'); + }); + + it('serves the assets under the base path', async () => { + vi.stubEnv('NEXT_PUBLIC_BASE_PATH', '/webmail'); + const html = await (await untrusted(request())).text(); + + expect(html).toContain('src="/webmail/plugin-sandbox-assets/runtime-ABC.js"'); + expect(html).toContain('href="/webmail/plugin-sandbox-assets/kit-123.css"'); + }); + + it('does not let the nonce header break out of its attribute', async () => { + const html = await (await untrusted(request('x">'))).text(); + + expect(html).not.toContain(''); + expect(html.match(/` + + '
'; + return new Response(html, { + headers: { 'content-type': 'text/html; charset=utf-8', 'cache-control': 'no-store' }, + }); +} diff --git a/lib/plugin-sandbox/sandbox-entry.ts b/lib/plugin-sandbox/sandbox-entry.ts new file mode 100644 index 000000000..1d2241119 --- /dev/null +++ b/lib/plugin-sandbox/sandbox-entry.ts @@ -0,0 +1,7 @@ +// Script of the plugin sandbox document (see sandbox-document.ts), bundled by +// scripts/build-plugin-sandbox.mjs. The document already has the root +// element, so the runtime only has to bind to its host. + +import { startSandboxRuntime } from './runtime'; + +startSandboxRuntime(); diff --git a/next.config.ts b/next.config.ts index fec618fa1..75a2d03bd 100644 --- a/next.config.ts +++ b/next.config.ts @@ -81,6 +81,16 @@ const nextConfig: NextConfig = { source: "/_next/static/:path*", headers: [{ key: "Access-Control-Allow-Origin", value: "*" }], }, + { + // The plugin sandbox document's script and stylesheet + // (scripts/build-plugin-sandbox.mjs): module scripts, so the + // opaque-origin frames fetch them in CORS mode. Content-hashed. + source: "/plugin-sandbox-assets/:path*", + headers: [ + { key: "Access-Control-Allow-Origin", value: "*" }, + { key: "Cache-Control", value: "public, max-age=31536000, immutable" }, + ], + }, ]; }, }), diff --git a/package.json b/package.json index 8abe1a163..0a06a4575 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "typescript" ], "scripts": { - "dev": "next dev --turbopack", - "build": "next build --turbopack", + "dev": "node scripts/build-plugin-sandbox.mjs && next dev --turbopack", + "build": "node scripts/build-plugin-sandbox.mjs && next build --turbopack", "build:lite": "node scripts/lite/build.mjs", "lite:serve": "node scripts/lite/serve.mjs out 4173", "test:lite-smoke": "playwright test -c scripts/lite/smoke/playwright.config.ts", diff --git a/proxy.ts b/proxy.ts index c4c1f5b67..fce4ef7b9 100644 --- a/proxy.ts +++ b/proxy.ts @@ -56,13 +56,13 @@ const PROXY_SKIP_PATTERN = /^\/(?:api|_next)(?:\/|$)/; // What Next serves from public/: a single dotted segment at the root // (/sw.js, /favicon.ico, /manifest.webmanifest) and the branding/, -// notification/ and demo/ asset folders. The upstream matcher treated EVERY path whose +// notification/, demo/ and plugin-sandbox-assets/ asset folders. The upstream matcher treated EVERY path whose // last segment has a dot as a static file, but the [[...segments]] catch-alls // under //mail, /calendar, /contacts and /files make // /en/mail/folder/inbox/statement.pdf a real signed-in page, and it rendered // without a CSP or any other security header (GHSA-xvjh-v9c6-qcvc). Only what // is genuinely static may skip locale routing and the headers. -const STATIC_ASSET_PATTERN = /^\/[^/]+\.[^/]+$|^\/(?:branding|notification|demo)\//; +const STATIC_ASSET_PATTERN = /^\/[^/]+\.[^/]+$|^\/(?:branding|notification|demo|plugin-sandbox-assets)\//; export function isStaticAssetPath(pathname: string): boolean { return STATIC_ASSET_PATTERN.test(pathname); diff --git a/scripts/build-plugin-sandbox.mjs b/scripts/build-plugin-sandbox.mjs new file mode 100644 index 000000000..4ead605c1 --- /dev/null +++ b/scripts/build-plugin-sandbox.mjs @@ -0,0 +1,133 @@ +// Builds the plugin sandbox document's script and stylesheet into +// public/plugin-sandbox-assets/, with a manifest.json naming them for +// lib/plugin-sandbox/sandbox-document.ts. +// +// Every plugin iframe loads these. They used to come from a Next page, so +// each frame also loaded, parsed and hydrated Next's client router, and the +// server rendered the page for every frame. Sandboxed frames have opaque +// origins, so the browser's code cache never helps: what a frame loads, it +// parses again, on the host page's main thread. +// +// node scripts/build-plugin-sandbox.mjs (npm run build and dev run it) + +import { build } from 'esbuild'; +import postcss from 'postcss'; +import tailwind from '@tailwindcss/postcss'; +import { createHash } from 'node:crypto'; +import { mkdir, readFile, rm, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +export const DEFAULT_OUTDIR = path.join(root, 'public', 'plugin-sandbox-assets'); + +// components/icons imports a few hundred Tabler icons by name, and for any +// other name `import('@tabler/icons-react')` loads all of them. Both went +// through the package's entry module, which also exports the namespace of +// every icon, so all 5000 icons (2.6 MB) ended up in a chunk every frame +// loaded. Like Next's optimizePackageImports, named imports and re-exports +// are pointed at the icons' own files; only the dynamic import gets them all. +const tablerDir = path.join(root, 'node_modules/@tabler/icons-react/dist/esm'); +const tablerFiles = new Map(); +for (const m of (await readFile(path.join(tablerDir, 'tabler-icons-react.mjs'), 'utf8')) + .matchAll(/export \{([^}]+)\} from '\.\/icons\/([^']+)';/g)) { + for (const spec of m[1].split(',')) { + const name = spec.trim().match(/^default as (\w+)$/)?.[1]; + if (name) tablerFiles.set(name, path.join(tablerDir, 'icons', m[2]).replace(/\\/g, '/')); + } +} +function splitTablerSpecifiers(keyword, specs, from) { + return specs.split(',').map((s) => s.trim()).filter(Boolean).map((spec) => { + const [imported, local = imported] = spec.split(/\s+as\s+/); + const file = tablerFiles.get(imported); + if (!file) return `${keyword} { ${spec} } from '${from}';`; + return keyword === 'import' + ? `import ${local} from '${file}';` + : `export { default as ${local} } from '${file}';`; + }).join('\n'); +} +const tablerPerIcon = { + name: 'tabler-per-icon', + setup(b) { + b.onResolve({ filter: /^@tabler\/icons-react$/ }, (args) => + args.kind === 'dynamic-import' ? { path: 'all-icons', namespace: 'tabler-all' } : undefined); + b.onLoad({ filter: /.*/, namespace: 'tabler-all' }, () => ({ + contents: `export * as icons from '${tablerDir.replace(/\\/g, '/')}/icons/index.mjs';\n` + + `export * as iconsList from '${tablerDir.replace(/\\/g, '/')}/icons-list.mjs';\n`, + resolveDir: root, + })); + b.onLoad({ filter: /[\\/](components|lib)[\\/].*\.tsx?$/ }, async (args) => { + const source = await readFile(args.path, 'utf8'); + if (!source.includes('@tabler/icons-react')) return undefined; + const contents = source.replace( + /\b(import|export)\s*\{([^}]*)\}\s*from\s*['"]@tabler\/icons-react['"];?/g, + (_, keyword, specs) => splitTablerSpecifiers(keyword, specs, '@tabler/icons-react'), + ); + return { contents, loader: args.path.endsWith('.tsx') ? 'tsx' : 'ts' }; + }); + }, +}; + +/** + * Build into `outdir` (emptied first). Resolves with the file names and + * esbuild's metafile outputs. + */ +export async function buildPluginSandbox({ outdir = DEFAULT_OUTDIR } = {}) { + await rm(outdir, { recursive: true, force: true }); + await mkdir(outdir, { recursive: true }); + + // ES modules so the rarely used parts (every Tabler icon, for an icon name + // the kit doesn't ship) stay in chunks that load on demand. + const js = await build({ + entryPoints: { runtime: path.join(root, 'lib/plugin-sandbox/sandbox-entry.ts') }, + bundle: true, + splitting: true, + format: 'esm', + platform: 'browser', + target: 'es2022', + outdir, + entryNames: '[name]-[hash]', + chunkNames: 'chunk-[hash]', + minify: true, + legalComments: 'none', + jsx: 'automatic', + define: { 'process.env.NODE_ENV': '"production"' }, + alias: { '@': root }, + loader: { '.css': 'empty' }, + plugins: [tablerPerIcon], + metafile: true, + logLevel: 'warning', + }); + const script = Object.entries(js.metafile.outputs).find(([, out]) => out.entryPoint)?.[0]; + if (!script) throw new Error('esbuild produced no entry chunk'); + + // The UI kit's styles, through the same Tailwind setup as the app's CSS. + const cssPath = path.join(root, 'app/(sandbox)/plugin-kit.css'); + const css = await postcss([tailwind({ optimize: { minify: true } })]).process(await readFile(cssPath, 'utf8'), { from: cssPath }); + const style = `kit-${createHash('sha256').update(css.css).digest('hex').slice(0, 12)}.css`; + await writeFile(path.join(outdir, style), css.css); + + // The chunks the script imports statically, so the document can fetch them + // with it instead of after it has been parsed. + const outputs = new Map(Object.entries(js.metafile.outputs).map(([f, o]) => [path.basename(f), o])); + const preload = []; + const visit = (name) => { + for (const imp of outputs.get(name)?.imports ?? []) { + const dep = path.basename(imp.path); + if (imp.kind !== 'import-statement' || preload.includes(dep)) continue; + preload.push(dep); + visit(dep); + } + }; + visit(path.basename(script)); + + const manifest = { script: path.basename(script), style, preload }; + await writeFile(path.join(outdir, 'manifest.json'), `${JSON.stringify(manifest)}\n`); + return { ...manifest, outputs: js.metafile.outputs, css: css.css }; +} + +if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { + const { outputs, style, css } = await buildPluginSandbox(); + const sizes = Object.entries(outputs).filter(([f]) => f.endsWith('.js')).map(([f, o]) => `${path.basename(f)} ${o.bytes}`); + console.log(`[build-plugin-sandbox] ${sizes.join(', ')}, ${style} ${css.length}`); +} From 5edbbf0816d36e2d0c8afc573fe450228255ccb9 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 02:23:20 +0100 Subject: [PATCH 225/238] perf: start plugin slot frames without waiting for the plugin's own frame --- .../plugin-host-bridge-origin.test.ts | 47 ++++++++- lib/__tests__/plugin-sandbox-loader.test.ts | 96 ++++++++++++++++++- lib/__tests__/plugin-store.test.ts | 3 + lib/__tests__/server-plugin-list.test.ts | 1 + lib/plugin-loader.ts | 2 +- lib/plugin-sandbox/host-bridge.ts | 19 ++++ lib/plugin-sandbox/loader.ts | 81 +++++++++++++--- stores/plugin-store.ts | 3 +- 8 files changed, 230 insertions(+), 22 deletions(-) diff --git a/lib/__tests__/plugin-host-bridge-origin.test.ts b/lib/__tests__/plugin-host-bridge-origin.test.ts index 9d33c9a91..92e86b232 100644 --- a/lib/__tests__/plugin-host-bridge-origin.test.ts +++ b/lib/__tests__/plugin-host-bridge-origin.test.ts @@ -20,6 +20,12 @@ function post(source: Window | null, origin: string, data: unknown) { } const instances: Array<{ destroy(): void }> = []; + +/** The frame answers init: its hooks and slots are in place. */ +function booted(inst: T): T { + post(inst.iframe.contentWindow, 'null', { type: 'init-done', hooks: [], slots: [], shortcuts: [] }); + return inst; +} afterEach(() => { for (const i of instances.splice(0)) i.destroy(); vi.clearAllMocks(); @@ -131,7 +137,7 @@ describe('slot sizing', () => { describe('shouldShow context', () => { it('leaves host callbacks out instead of failing to post them', async () => { - const inst = createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' }); + const inst = booted(createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' })); instances.push(inst); const sent = vi.spyOn(inst.iframe.contentWindow!, 'postMessage'); @@ -144,7 +150,7 @@ describe('shouldShow context', () => { describe('host bookkeeping', () => { it('fails a hook call whose arguments cannot be sent, without keeping it pending', async () => { - const inst = createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' }); + const inst = booted(createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' })); instances.push(inst); vi.spyOn(inst.iframe.contentWindow!, 'postMessage').mockImplementation(() => { throw new DOMException('no clone', 'DataCloneError'); }); @@ -337,3 +343,40 @@ describe('plugin translations in frames', () => { expect(Object.keys(init.payload.manifest.locales).sort()).toEqual(['en', 'ja']); }); }); + +describe('calls before the background frame has booted', () => { + // A plugin offering the slots remembered from its last start is in the + // registry while its frame boots; a message posted before init is lost. + it('holds shouldShow and hook calls until init-done', async () => { + const inst = createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' }); + instances.push(inst); + const sent: Array<{ type: string; id?: string }> = []; + vi.spyOn(inst.iframe.contentWindow!, 'postMessage').mockImplementation((m: unknown) => { sent.push(m as { type: string }); }); + + const show = inst.evaluateShouldShow('email-banner', {}); + const hook = inst.invokeHook('onAction', [{ actionId: 'x' }]); + await new Promise((r) => setTimeout(r, 0)); + expect(sent.filter((m) => m.type === 'slot-should-show' || m.type === 'hook-invoke')).toEqual([]); + + booted(inst); + await new Promise((r) => setTimeout(r, 0)); + const ask = sent.find((m) => m.type === 'slot-should-show')!; + const call = sent.find((m) => m.type === 'hook-invoke')!; + post(inst.iframe.contentWindow, 'null', { type: 'slot-should-show-result', id: ask.id, show: true }); + post(inst.iframe.contentWindow, 'null', { type: 'hook-result', id: call.id, ok: true, result: 'done' }); + await expect(show).resolves.toBe(true); + await expect(hook).resolves.toBe('done'); + }); + + it('gives up on them when the frame is destroyed first', async () => { + const inst = createBackgroundInstance({ plugin: plugin(), code: '', locale: 'en', tier: 'untrusted' }); + const show = inst.evaluateShouldShow('email-banner', {}); + const hook = inst.invokeHook('onAction', []); + inst.destroy(); + + await expect(show).resolves.toBe(false); + await expect(hook).rejects.toThrow(/destroyed/); + await expect(inst.initPromise).rejects.toThrow(/destroyed/); + expect(inst.closed).toBe(true); + }); +}); diff --git a/lib/__tests__/plugin-sandbox-loader.test.ts b/lib/__tests__/plugin-sandbox-loader.test.ts index 052e46ca5..8a2715553 100644 --- a/lib/__tests__/plugin-sandbox-loader.test.ts +++ b/lib/__tests__/plugin-sandbox-loader.test.ts @@ -41,7 +41,7 @@ vi.mock('../plugin-sandbox/shortcuts', () => ({ })); import { loadSandboxedPlugin, unloadSandboxedPlugin, setSandboxStoreAccessor, setSandboxLocale } from '../plugin-sandbox/loader'; -import { get as getActive } from '../plugin-sandbox/registry'; +import { get as getActive, offersForSlot } from '../plugin-sandbox/registry'; const CODE = 'export default { activate() {} }'; const HASH = createHash('sha256').update(CODE, 'utf-8').digest('hex'); @@ -67,11 +67,13 @@ function plugin(overrides: Partial = {}): InstalledPlugin { } function fakeBackground() { - return { - initPromise: Promise.resolve({ hooks: [], slots: [], shortcuts: [] }), + const bg = { + initPromise: Promise.resolve({ hooks: [], slots: [], shortcuts: [] }) as Promise, invokeHook: vi.fn(), - destroy: vi.fn(), + closed: false, + destroy: vi.fn(() => { bg.closed = true; }), }; + return bg; } let statuses: Array<{ id: string; status: string; error?: string }>; @@ -260,3 +262,89 @@ describe('loading the same plugin twice', () => { expect(mocks.createBackgroundInstance).toHaveBeenCalledTimes(1); }); }); + +describe('slots remembered from the last start', () => { + const OFFERS = [{ name: 'sidebar-section', hasShouldShow: false, order: 100 }]; + const perms = { permissions: ['ui:sidebar-widget'], grantedPermissions: ['ui:sidebar-widget'] } as Partial; + + function startingBackground() { + let finish!: (info: unknown) => void; + let fail!: (err: Error) => void; + const bg = fakeBackground(); + bg.initPromise = new Promise((res, rej) => { finish = res; fail = rej; }); + mocks.createBackgroundInstance.mockImplementation(() => bg); + return { finish, fail }; + } + + beforeEach(() => { + localStorage.clear(); + mocks.getCode.mockResolvedValue(CODE); + }); + + it('offers them while the background frame is still booting, then the real list', async () => { + // A slot frame used to start only after the plugin's own frame had booted. + localStorage.setItem('plugin-slot-offers:managed-plugin', JSON.stringify({ hash: HASH, slots: OFFERS })); + const { finish } = startingBackground(); + + const load = loadSandboxedPlugin(plugin(perms)); + await vi.waitFor(() => expect(offersForSlot('sidebar-section').map((o) => o.pluginId)).toEqual(['managed-plugin'])); + expect(lastStatus()?.status).not.toBe('running'); + + finish({ hooks: [], slots: [{ name: 'sidebar-section', hasShouldShow: true, order: 5 }], shortcuts: [] }); + await load; + expect(offersForSlot('sidebar-section')).toEqual([{ pluginId: 'managed-plugin', order: 5, hasShouldShow: true }]); + expect(lastStatus()).toMatchObject({ status: 'running' }); + }); + + it('remembers the list for the bundle it came from only', async () => { + mocks.createBackgroundInstance.mockImplementation(() => ({ ...fakeBackground(), initPromise: Promise.resolve({ hooks: [], slots: OFFERS, shortcuts: [] }) })); + await loadSandboxedPlugin(plugin(perms)); + expect(JSON.parse(localStorage.getItem('plugin-slot-offers:managed-plugin')!)).toEqual({ hash: HASH, slots: OFFERS }); + unloadSandboxedPlugin('managed-plugin'); + + // Another bundle: wait for its own list. + localStorage.setItem('plugin-slot-offers:managed-plugin', JSON.stringify({ hash: 'f'.repeat(64), slots: OFFERS })); + const { fail } = startingBackground(); + const load = loadSandboxedPlugin(plugin(perms)); + await new Promise((r) => setTimeout(r, 20)); + expect(offersForSlot('sidebar-section')).toEqual([]); + fail(new Error('done')); + await load; + }); + + it('does not offer a remembered slot the plugin may not use', async () => { + localStorage.setItem('plugin-slot-offers:managed-plugin', JSON.stringify({ hash: HASH, slots: OFFERS })); + const { fail } = startingBackground(); + const load = loadSandboxedPlugin(plugin()); + await new Promise((r) => setTimeout(r, 20)); + expect(offersForSlot('sidebar-section')).toEqual([]); + fail(new Error('done')); + await load; + }); + + it('takes them down when the plugin fails to start', async () => { + localStorage.setItem('plugin-slot-offers:managed-plugin', JSON.stringify({ hash: HASH, slots: OFFERS })); + const { fail } = startingBackground(); + const load = loadSandboxedPlugin(plugin(perms)); + await vi.waitFor(() => expect(offersForSlot('sidebar-section')).toHaveLength(1)); + + fail(new Error('boom')); + await load; + expect(offersForSlot('sidebar-section')).toEqual([]); + expect(getActive('managed-plugin')).toBeUndefined(); + expect(lastStatus()).toMatchObject({ status: 'error' }); + }); + + it('is not marked failed when it was turned off while starting', async () => { + localStorage.setItem('plugin-slot-offers:managed-plugin', JSON.stringify({ hash: HASH, slots: OFFERS })); + const { fail } = startingBackground(); + const load = loadSandboxedPlugin(plugin(perms)); + await vi.waitFor(() => expect(getActive('managed-plugin')).toBeDefined()); + + unloadSandboxedPlugin('managed-plugin'); + // What destroy() does to a starting frame. + fail(new Error('sandbox destroyed')); + await load; + expect(lastStatus()).toMatchObject({ status: 'disabled' }); + }); +}); diff --git a/lib/__tests__/plugin-store.test.ts b/lib/__tests__/plugin-store.test.ts index bd31eeff3..92ec8f130 100644 --- a/lib/__tests__/plugin-store.test.ts +++ b/lib/__tests__/plugin-store.test.ts @@ -28,6 +28,7 @@ vi.mock('@/lib/plugin-loader', () => ({ setPluginStoreAccessor: vi.fn(), setupAutoDisable: vi.fn(), setSandboxLocale: vi.fn(), + forgetSlotOffers: vi.fn(), })); vi.mock('@/lib/plugin-hooks', () => ({ @@ -60,6 +61,7 @@ import { register as registerActive, deregister as deregisterActive, get as getA // Import after mocks import { usePluginStore, PLUGIN_PERSIST_DELAY_MS } from '@/stores/plugin-store'; import { pluginStorage } from '@/lib/plugin-storage'; +import { forgetSlotOffers } from '@/lib/plugin-loader'; function resetStore() { usePluginStore.setState({ @@ -460,6 +462,7 @@ describe('plugins the admin removed', () => { expect(usePluginStore.getState().plugins.some((p) => p.id === 'gone')).toBe(false); expect(localStorage.getItem('plugin:gone:@acct:notes')).toBeNull(); expect(pluginStorage.deletePreview).toHaveBeenCalledWith('gone'); + expect(forgetSlotOffers).toHaveBeenCalledWith('gone'); }); }); diff --git a/lib/__tests__/server-plugin-list.test.ts b/lib/__tests__/server-plugin-list.test.ts index cf8e216a3..a88006a51 100644 --- a/lib/__tests__/server-plugin-list.test.ts +++ b/lib/__tests__/server-plugin-list.test.ts @@ -11,6 +11,7 @@ vi.mock('@/lib/plugin-loader', () => ({ setPluginStoreAccessor: vi.fn(), setupAutoDisable: vi.fn(), setSandboxLocale: vi.fn(), + forgetSlotOffers: vi.fn(), })); import { fetchServerPluginList } from '@/lib/server-plugin-list'; diff --git a/lib/plugin-loader.ts b/lib/plugin-loader.ts index ba80723cf..afcea8463 100644 --- a/lib/plugin-loader.ts +++ b/lib/plugin-loader.ts @@ -17,7 +17,7 @@ import { all as allActive, get as getActive } from './plugin-sandbox/registry'; // Re-export so the plugin store can keep the sandbox locale in step via this // facade, instead of importing lib/plugin-sandbox/loader directly (which would // also pull the hook buses into consumers' module graphs). -export { setSandboxLocale } from './plugin-sandbox/loader'; +export { setSandboxLocale, forgetSlotOffers } from './plugin-sandbox/loader'; export { snapshotRegionalSettings, type RegionalSnapshot } from './plugin-sandbox/host-bridge'; /** diff --git a/lib/plugin-sandbox/host-bridge.ts b/lib/plugin-sandbox/host-bridge.ts index 23970c4b5..35e93a89a 100644 --- a/lib/plugin-sandbox/host-bridge.ts +++ b/lib/plugin-sandbox/host-bridge.ts @@ -290,6 +290,8 @@ export class SandboxInstance { private rejectInit!: (err: Error) => void; private listener: (ev: MessageEvent) => void; private destroyed = false; + /** The frame has answered init-done: its hooks and slots are in place. */ + private initialized = false; private pendingHookInvokes = new Map void; reject: (e: Error) => void }>(); private pendingShouldShow = new Map void>(); @@ -326,6 +328,8 @@ export class SandboxInstance { this.resolveInit = res; this.rejectInit = rej; }); + // Nobody waits on a slot frame's init; its rejection is not an error. + this.initPromise.catch(() => {}); this.iframe = document.createElement('iframe'); // Privileged tier: same-origin in BOTH dev and prod so the iframe gets real @@ -451,6 +455,7 @@ export class SandboxInstance { return; case 'init-done': + this.initialized = true; if (this.mode === 'slot') this.iframe.style.visibility = ''; this.resolveInit({ hooks: msg.hooks, slots: msg.slots, shortcuts: msg.shortcuts ?? [] }); return; @@ -546,6 +551,10 @@ export class SandboxInstance { /** Dispatch a hook handler inside the sandbox; resolves with its return value. */ invokeHook(hookName: string, args: unknown[]): Promise { if (this.destroyed) return Promise.reject(new Error('sandbox destroyed')); + // A plugin offering remembered slots is in the registry before its frame + // has booted; a click on one of its actions waits for it (a message + // posted before init is lost). + if (!this.initialized) return this.initPromise.then(() => this.invokeHook(hookName, args)); const id = uid(); const p = new Promise((resolve, reject) => { // The bus gives up on a slow handler, but the entry used to stay here @@ -571,6 +580,9 @@ export class SandboxInstance { /** Ask the background instance whether a slot should mount for this context. */ evaluateShouldShow(slot: SlotName, context: unknown): Promise { if (this.destroyed) return Promise.resolve(false); + if (!this.initialized) { + return this.initPromise.then(() => this.evaluateShouldShow(slot, context), () => false); + } const id = uid(); const p = new Promise((resolve) => { this.pendingShouldShow.set(id, resolve); @@ -649,9 +661,16 @@ export class SandboxInstance { this.send(msg); } + /** True once destroy() ran. */ + get closed(): boolean { + return this.destroyed; + } + destroy(): void { if (this.destroyed) return; this.destroyed = true; + // Whoever waits for init (the loader, calls held back below) stops waiting. + this.rejectInit(new Error('sandbox destroyed')); liveInstances.delete(this); window.removeEventListener('message', this.listener); this.iframe.remove(); diff --git a/lib/plugin-sandbox/loader.ts b/lib/plugin-sandbox/loader.ts index a3299d46d..a95b2bc47 100644 --- a/lib/plugin-sandbox/loader.ts +++ b/lib/plugin-sandbox/loader.ts @@ -18,9 +18,9 @@ import { useEmailStore } from '@/stores/email-store'; import { emailToReadView } from '../plugin-projection'; import { verifyBundle } from './bundle-integrity'; import { downloadManagedBundle } from './bundle-fetch'; -import { createBackgroundInstance, forEachInstance, snapshotRegionalSettings, type RegionalSnapshot } from './host-bridge'; +import { createBackgroundInstance, forEachInstance, snapshotRegionalSettings, type InitDoneInfo, type RegionalSnapshot } from './host-bridge'; import { resolvePluginTier } from './tier'; -import { register as registerActive, deregister as deregisterActive, all as allActiveEntries, get as getActive } from './registry'; +import { register as registerActive, deregister as deregisterActive, all as allActiveEntries, get as getActive, type SlotOffer } from './registry'; import { cancelPluginDialogs } from './host-api'; import { hasDialogFor, whenNoDialogFor } from './host-dialog'; import { registerShortcuts } from './shortcuts'; @@ -98,7 +98,7 @@ async function readCachedBundle(plugin: InstalledPlugin): Promise } } -async function getBundleCode(plugin: InstalledPlugin): Promise { +async function getBundleCode(plugin: InstalledPlugin): Promise<{ code: string; hash: string }> { // IndexedDB is the fast path: the store's server sync (managed plugins) and // the upload flow (user plugins) both populate it. It is per-browser though, // while a managed plugin's record travels with the server registry to every @@ -111,8 +111,7 @@ async function getBundleCode(plugin: InstalledPlugin): Promise { const cached = await readCachedBundle(plugin); if (cached) { try { - await verifyBundle(cached, plugin.bundleHash); - return cached; + return { code: cached, hash: await verifyBundle(cached, plugin.bundleHash) }; } catch (err) { if (!plugin.managed) throw err; // Stale (sync updated the record but not the bytes) or corrupt copy; the @@ -127,14 +126,60 @@ async function getBundleCode(plugin: InstalledPlugin): Promise { const code = await downloadManagedBundle(plugin.id, plugin.bundleHash, { requireSignature: plugin.tier === 'privileged', }); - await verifyBundle(code, plugin.bundleHash); + const hash = await verifyBundle(code, plugin.bundleHash); try { await pluginStorage.saveCode(plugin.id, code); } catch (err) { // Caching is best effort - the plugin runs from the fetched bytes either way. console.warn(`[plugin-sandbox] Could not cache bundle for "${plugin.id}":`, err); } - return code; + return { code, hash }; +} + +// ─── Slot offers from the last start ───────────────────────── + +// A plugin's slots are fixed exports of its bundle. They used to be known +// only once its background frame had booted and run activate(), so a slot +// frame (a sidebar section, say) started ~1 s after the plugin did, behind +// it. The offers are kept per bundle hash, and a plugin started with the +// same verified bundle offers them right away; its frames then boot next to +// the background one. The real list replaces them when init is done. The +// record only says where to draw: the same permission filter applies and +// the frames run the same verified code. A changed bundle has another hash. +const SLOT_CACHE_PREFIX = 'plugin-slot-offers:'; + +function readSlotOffers(pluginId: string, hash: string): InitDoneInfo['slots'] | null { + try { + const raw = localStorage.getItem(SLOT_CACHE_PREFIX + pluginId); + if (!raw) return null; + const rec = JSON.parse(raw) as { hash?: unknown; slots?: unknown }; + if (rec.hash !== hash || !Array.isArray(rec.slots)) return null; + return rec.slots.filter((o): o is InitDoneInfo['slots'][number] => + !!o && typeof o === 'object' && typeof (o as { name?: unknown }).name === 'string'); + } catch { + return null; + } +} + +function writeSlotOffers(pluginId: string, hash: string, slots: InitDoneInfo['slots']): void { + try { + localStorage.setItem(SLOT_CACHE_PREFIX + pluginId, JSON.stringify({ hash, slots })); + } catch { + // Storage blocked or full: the next start just waits for init again. + } +} + +/** Forget a plugin's remembered slots (it was removed). */ +export function forgetSlotOffers(pluginId: string): void { + try { localStorage.removeItem(SLOT_CACHE_PREFIX + pluginId); } catch { /* ignore */ } +} + +function permittedOffers(plugin: InstalledPlugin, slots: InitDoneInfo['slots'], warn: boolean): SlotOffer[] { + return slots.filter((offer) => { + if (mayOfferSlot(plugin, offer.name)) return true; + if (warn) console.warn(`[plugin-sandbox] Plugin "${plugin.id}" lacks the permission for slot "${offer.name}"; not rendered`); + return false; + }); } // ─── Load ───────────────────────────────────────────────────── @@ -166,9 +211,11 @@ const loading = new Map>(); */ export function loadSandboxedPlugin(plugin: InstalledPlugin): Promise { if (typeof window === 'undefined') return Promise.resolve(); - if (getActive(plugin.id)) return Promise.resolve(); + // Before the registry: a plugin offering remembered slots is registered + // while it is still starting. const pending = loading.get(plugin.id); if (pending) return pending; + if (getActive(plugin.id)) return Promise.resolve(); const run = startSandboxedPlugin(plugin).finally(() => loading.delete(plugin.id)); loading.set(plugin.id, run); return run; @@ -188,7 +235,7 @@ async function startSandboxedPlugin(plugin: InstalledPlugin): Promise { } const tier = resolution.tier; - const code = await getBundleCode(plugin); + const { code, hash } = await getBundleCode(plugin); background = createBackgroundInstance({ plugin, code, @@ -196,6 +243,11 @@ async function startSandboxedPlugin(plugin: InstalledPlugin): Promise { tier, }); + const remembered = readSlotOffers(plugin.id, hash); + if (remembered && remembered.length > 0) { + registerActive({ plugin, code, tier, background, slotOffers: permittedOffers(plugin, remembered, false), hookDisposables: [] }); + } + // Wait for the background runtime to evaluate the bundle, register hooks, // and enumerate slots. Bounded so a stuck iframe doesn't hang activation. const bg = background; @@ -244,11 +296,8 @@ async function startSandboxedPlugin(plugin: InstalledPlugin): Promise { } } - const slotOffers = info.slots.filter((offer) => { - if (mayOfferSlot(plugin, offer.name)) return true; - console.warn(`[plugin-sandbox] Plugin "${plugin.id}" lacks the permission for slot "${offer.name}"; not rendered`); - return false; - }); + const slotOffers = permittedOffers(plugin, info.slots, true); + writeSlotOffers(plugin.id, hash, info.slots); registerActive({ plugin, @@ -270,6 +319,10 @@ async function startSandboxedPlugin(plugin: InstalledPlugin): Promise { } console.info(`[plugin-sandbox] "${plugin.id}" activated (hooks=${info.hooks.length}, slots=${info.slots.length})`); } catch (err) { + // Turned off while it was starting: unload has set the status. + if (background?.closed && getActive(plugin.id)?.background !== background) return; + // Offered from the last start: take the slots back down. + if (background && getActive(plugin.id)?.background === background) deregisterActive(plugin.id); const msg = (err as Error).message ?? String(err); storeAccessor?.setPluginStatus(plugin.id, 'error', msg); console.error(`[plugin-sandbox] Failed to load "${plugin.id}":`, err); diff --git a/stores/plugin-store.ts b/stores/plugin-store.ts index 4cdc4ae7d..4e9f3fad1 100644 --- a/stores/plugin-store.ts +++ b/stores/plugin-store.ts @@ -7,7 +7,7 @@ import { persist, type PersistStorage, type StorageValue } from 'zustand/middlew import type { InstalledPlugin, PluginStatus, PluginTier } from '@/lib/plugin-types'; import { pluginStorage } from '@/lib/plugin-storage'; import { extractPlugin } from '@/lib/plugin-validator'; -import { loadPlugin, deactivatePlugin, setPluginStoreAccessor, setupAutoDisable, setSandboxLocale } from '@/lib/plugin-loader'; +import { loadPlugin, deactivatePlugin, setPluginStoreAccessor, setupAutoDisable, setSandboxLocale, forgetSlotOffers } from '@/lib/plugin-loader'; import { useLocaleStore } from '@/stores/locale-store'; import { useSettingsStore } from '@/stores/settings-store'; import { getEffectiveLocale } from '@/i18n/detect-locale'; @@ -421,6 +421,7 @@ export const usePluginStore = create()( function removePluginData(id: string): void { deactivatePlugin(id); removeAllPluginHooks(id); + forgetSlotOffers(id); void pluginStorage.deleteCode(id).catch(() => {}); void pluginStorage.deletePreview(id).catch(() => {}); // Accounts the user connected for it live on the server (this mail account's). From f20892ccec34674fa0007d4801d46ac08bb71ad3 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 02:24:41 +0100 Subject: [PATCH 226/238] fix: start plugins when the sign-in races the first plugin start --- lib/__tests__/plugin-store.test.ts | 14 ++++++++++++++ stores/plugin-store.ts | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/__tests__/plugin-store.test.ts b/lib/__tests__/plugin-store.test.ts index 92ec8f130..ea4ee26ac 100644 --- a/lib/__tests__/plugin-store.test.ts +++ b/lib/__tests__/plugin-store.test.ts @@ -287,6 +287,20 @@ describe('usePluginStore', () => { expect(usePluginStore.getState().initialized).toBe(true); }); + it('starts the plugins when a call made after the sign-in joined the signed-out one', async () => { + const { loadPlugin } = await import('@/lib/plugin-loader'); + let answer!: (r: unknown) => void; + mocks.apiFetch.mockImplementationOnce(() => new Promise((r) => { answer = r; })); + + const beforeSignIn = usePluginStore.getState().initializePlugins(); + const afterSignIn = usePluginStore.getState().initializePlugins(); + answer({ ok: false, status: 401, json: async () => ({}) }); + await Promise.all([beforeSignIn, afterSignIn]); + + expect(loadPlugin).toHaveBeenCalledWith(expect.objectContaining({ id: 'managed-plugin' })); + expect(usePluginStore.getState().initialized).toBe(true); + }); + it('keeps the record when the download fails so the error can surface at load time', async () => { usePluginStore.setState({ plugins: [syncedRecord()] }); mocks.downloadManagedBundle.mockRejectedValue(new Error('Could not download the bundle (HTTP 503)')); diff --git a/stores/plugin-store.ts b/stores/plugin-store.ts index 4e9f3fad1..9a4a527c3 100644 --- a/stores/plugin-store.ts +++ b/stores/plugin-store.ts @@ -317,7 +317,11 @@ export const usePluginStore = create()( if (get().initialized) return; if (pluginInitializationPromise) { - await pluginInitializationPromise; + const joined = pluginInitializationPromise; + await joined; + // The run this joined may have ended signed out (it started before + // the sign-in); then this call starts the plugins itself. + if (!get().initialized && pluginInitializationPromise !== joined) await get().initializePlugins(); return; } From a7cfa5b16059da8d0e472172395c2ef302c7a208 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 02:26:18 +0100 Subject: [PATCH 227/238] fix: rebuild the plugin sandbox while npm run dev runs, and build it for the integration image --- integration/webmail.Dockerfile | 3 ++ package.json | 2 +- scripts/build-plugin-sandbox.mjs | 49 ++++++++++++++++++++++++++++---- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/integration/webmail.Dockerfile b/integration/webmail.Dockerfile index fdb97f483..ed8314faf 100644 --- a/integration/webmail.Dockerfile +++ b/integration/webmail.Dockerfile @@ -22,6 +22,9 @@ RUN npm ci # App source (data-testid hooks included). COPY . . +# The plugin sandbox document's script and stylesheet (see the script). +RUN node scripts/build-plugin-sandbox.mjs + ENV NODE_ENV=development ENV NEXT_TELEMETRY_DISABLED=1 ENV PORT=3000 diff --git a/package.json b/package.json index 0a06a4575..5cfcd8773 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "typescript" ], "scripts": { - "dev": "node scripts/build-plugin-sandbox.mjs && next dev --turbopack", + "dev": "node scripts/build-plugin-sandbox.mjs --watch -- next dev --turbopack", "build": "node scripts/build-plugin-sandbox.mjs && next build --turbopack", "build:lite": "node scripts/lite/build.mjs", "lite:serve": "node scripts/lite/serve.mjs out 4173", diff --git a/scripts/build-plugin-sandbox.mjs b/scripts/build-plugin-sandbox.mjs index 4ead605c1..a1a0f7a6b 100644 --- a/scripts/build-plugin-sandbox.mjs +++ b/scripts/build-plugin-sandbox.mjs @@ -8,12 +8,16 @@ // origins, so the browser's code cache never helps: what a frame loads, it // parses again, on the host page's main thread. // -// node scripts/build-plugin-sandbox.mjs (npm run build and dev run it) +// node scripts/build-plugin-sandbox.mjs (npm run build) +// node scripts/build-plugin-sandbox.mjs --watch -- (npm run dev: rebuild +// when one of the sandbox's sources changes, while runs) import { build } from 'esbuild'; import postcss from 'postcss'; import tailwind from '@tailwindcss/postcss'; import { createHash } from 'node:crypto'; +import { spawn } from 'node:child_process'; +import { watch } from 'node:fs'; import { mkdir, readFile, rm, writeFile } from 'node:fs/promises'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -72,8 +76,10 @@ const tablerPerIcon = { * Build into `outdir` (emptied first). Resolves with the file names and * esbuild's metafile outputs. */ -export async function buildPluginSandbox({ outdir = DEFAULT_OUTDIR } = {}) { - await rm(outdir, { recursive: true, force: true }); +export async function buildPluginSandbox({ outdir = DEFAULT_OUTDIR, clean = true } = {}) { + // A rebuild under `next dev` keeps the old files: the manifest, written + // last, switches frames over, and one loading meanwhile still finds its files. + if (clean) await rm(outdir, { recursive: true, force: true }); await mkdir(outdir, { recursive: true }); // ES modules so the rarely used parts (every Tabler icon, for an icon name @@ -123,11 +129,42 @@ export async function buildPluginSandbox({ outdir = DEFAULT_OUTDIR } = {}) { const manifest = { script: path.basename(script), style, preload }; await writeFile(path.join(outdir, 'manifest.json'), `${JSON.stringify(manifest)}\n`); - return { ...manifest, outputs: js.metafile.outputs, css: css.css }; + const inputs = [...Object.keys(js.metafile.inputs).map((f) => path.resolve(root, f)), cssPath, path.join(root, 'app/theme-inline.css')]; + return { ...manifest, outputs: js.metafile.outputs, css: css.css, inputs }; } -if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { - const { outputs, style, css } = await buildPluginSandbox(); +function report({ outputs, style, css }) { const sizes = Object.entries(outputs).filter(([f]) => f.endsWith('.js')).map(([f, o]) => `${path.basename(f)} ${o.bytes}`); console.log(`[build-plugin-sandbox] ${sizes.join(', ')}, ${style} ${css.length}`); } + +if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { + const args = process.argv.slice(2); + let built = await buildPluginSandbox(); + report(built); + if (args.includes('--watch')) { + let timer = null; + let running = false; + const rebuild = async () => { + if (running) { timer = setTimeout(rebuild, 200); return; } + running = true; + try { built = await buildPluginSandbox({ clean: false }); report(built); } catch (err) { console.error('[build-plugin-sandbox]', err.message); } + running = false; + }; + for (const dir of ['app', 'components', 'lib', 'i18n']) { + watch(path.join(root, dir), { recursive: true }, (_event, file) => { + if (!file || !built.inputs.includes(path.join(root, dir, file))) return; + clearTimeout(timer); + timer = setTimeout(rebuild, 200); + }); + } + const dash = args.indexOf('--'); + if (dash >= 0 && args.length > dash + 1) { + const [cmd, ...cmdArgs] = args.slice(dash + 1); + // npm puts node_modules/.bin on PATH; on Windows those are .cmd shims. + const child = spawn(cmd, cmdArgs, { stdio: 'inherit', shell: process.platform === 'win32' }); + child.on('exit', (code) => process.exit(code ?? 0)); + for (const sig of ['SIGINT', 'SIGTERM']) process.on(sig, () => child.kill(sig)); + } + } +} From 171fd1ea4c561cb0ef9138780abf4177701c47c4 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 02:56:14 +0100 Subject: [PATCH 228/238] perf: load React DOM and the UI kit only in plugin frames that draw --- lib/__tests__/plugin-sandbox-build.test.ts | 22 ++++++- lib/__tests__/plugin-sandbox-document.test.ts | 10 ++- .../plugin-sandbox-runtime-slot-props.test.ts | 21 +++++++ lib/__tests__/plugin-ui-kit.test.tsx | 20 +++++- lib/plugin-sandbox/host-bridge.ts | 8 ++- lib/plugin-sandbox/runtime.tsx | 63 ++++++++++++++----- lib/plugin-sandbox/sandbox-document.ts | 10 ++- lib/plugin-sandbox/slot-renderer.ts | 9 +++ lib/plugin-sandbox/ui-kit/background-kit.ts | 22 +++++++ lib/plugin-sandbox/ui-kit/index.ts | 7 ++- lib/plugin-sandbox/ui-kit/names.ts | 16 +++++ scripts/build-plugin-sandbox.mjs | 23 ++++--- 12 files changed, 195 insertions(+), 36 deletions(-) create mode 100644 lib/plugin-sandbox/slot-renderer.ts create mode 100644 lib/plugin-sandbox/ui-kit/background-kit.ts create mode 100644 lib/plugin-sandbox/ui-kit/names.ts diff --git a/lib/__tests__/plugin-sandbox-build.test.ts b/lib/__tests__/plugin-sandbox-build.test.ts index 71c6128df..a223592a8 100644 --- a/lib/__tests__/plugin-sandbox-build.test.ts +++ b/lib/__tests__/plugin-sandbox-build.test.ts @@ -3,6 +3,7 @@ import { describe, it, expect, afterAll } from 'vitest'; import { mkdtemp, readFile, rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; +import { pathToFileURL } from 'node:url'; import { buildPluginSandbox } from '../../scripts/build-plugin-sandbox.mjs'; type Outputs = Record; imports: Array<{ path: string; kind: string }> }>; @@ -31,8 +32,10 @@ describe('plugin sandbox build', () => { const eagerBytes = [...eager].reduce((sum, n) => sum + byName.get(n)!.bytes, 0); const eagerInputs = [...eager].flatMap((n) => Object.keys(byName.get(n)!.inputs)).map((f) => f.replace(/\\/g, '/')); - // The first build put all 5000 Tabler icons (2.6 MB) in an eager chunk. - expect(eagerBytes).toBeLessThan(600_000); + // Background frames: the runtime and React, no React DOM or kit. (The + // first build put all 5000 Tabler icons, 2.6 MB, in an eager chunk.) + expect(eagerBytes).toBeLessThan(100_000); + expect(eagerInputs.filter((f) => f.includes('node_modules/react-dom/') || f.includes('ui-kit/components'))).toEqual([]); expect(eagerInputs.filter((f) => f.includes('node_modules/next/'))).toEqual([]); expect(eagerInputs.filter((f) => /(^|\/)stores\//.test(f))).toEqual([]); // ...but they are still there for an icon name the kit doesn't ship. @@ -40,7 +43,20 @@ describe('plugin sandbox build', () => { expect(lazy.some((n) => byName.get(n)!.bytes > 1_000_000)).toBe(true); const manifest = JSON.parse(await readFile(path.join(outdir, 'manifest.json'), 'utf8')); - expect(manifest).toEqual({ script, style, preload: [...eager].filter((n) => n !== script) }); + expect(manifest).toMatchObject({ script, style, preload: [...eager].filter((n) => n !== script) }); + // Slot frames preload React DOM and the kit, but not every icon. + const slotInputs = (manifest.slotPreload as string[]).flatMap((n) => Object.keys(byName.get(n)!.inputs)).map((f) => f.replace(/\\/g, '/')); + expect(slotInputs.some((f) => f.includes('node_modules/react-dom/'))).toBe(true); + expect(slotInputs.some((f) => f.includes('ui-kit/components'))).toBe(true); + expect((manifest.slotPreload as string[]).every((n) => byName.get(n)!.bytes < 1_000_000)).toBe(true); expect(await readFile(path.join(outdir, style), 'utf8')).toContain('.bk'); + + // What a slot frame imports on demand, as the browser will get it: Vitest's + // own module interop once hid a createRoot that the bundle had lost. + const rendererChunk = byName.get(script)!.imports.find((i) => i.kind === 'dynamic-import')!; + const renderer = await import(/* @vite-ignore */ pathToFileURL(path.join(outdir, path.basename(rendererChunk.path))).href); + expect(typeof renderer.ReactDOM.createRoot).toBe('function'); + expect(typeof renderer.pluginUiKit.Button).toBe('object'); + expect(renderer.SlotPropsContext).toBeDefined(); }, 120_000); }); diff --git a/lib/__tests__/plugin-sandbox-document.test.ts b/lib/__tests__/plugin-sandbox-document.test.ts index 22f19d8d4..de91f87e9 100644 --- a/lib/__tests__/plugin-sandbox-document.test.ts +++ b/lib/__tests__/plugin-sandbox-document.test.ts @@ -22,7 +22,7 @@ function request(nonce = 'n0nce'): Request { beforeEach(() => { files.clear(); - files.set(MANIFEST, JSON.stringify({ script: 'runtime-ABC.js', style: 'kit-123.css', preload: ['chunk-ICONS.js'] })); + files.set(MANIFEST, JSON.stringify({ script: 'runtime-ABC.js', style: 'kit-123.css', preload: ['chunk-ICONS.js'], slotPreload: ['chunk-DOM.js'] })); vi.stubEnv('NODE_ENV', 'development'); // re-read the manifest for every test }); @@ -48,6 +48,14 @@ describe('plugin sandbox document', () => { expect(html).not.toContain('/_next/'); }); + it('preloads React DOM and the kit for slot frames only', async () => { + const slot = await (await untrusted(new Request('http://localhost:3000/plugin-sandbox?frame=slot', { headers: { 'x-nonce': 'n' } }))).text(); + const background = await (await untrusted(request())).text(); + + expect(slot).toContain('href="/plugin-sandbox-assets/chunk-DOM.js"'); + expect(background).not.toContain('chunk-DOM.js'); + }); + it('serves the assets under the base path', async () => { vi.stubEnv('NEXT_PUBLIC_BASE_PATH', '/webmail'); const html = await (await untrusted(request())).text(); diff --git a/lib/__tests__/plugin-sandbox-runtime-slot-props.test.ts b/lib/__tests__/plugin-sandbox-runtime-slot-props.test.ts index 3990f1a5c..a49205ac5 100644 --- a/lib/__tests__/plugin-sandbox-runtime-slot-props.test.ts +++ b/lib/__tests__/plugin-sandbox-runtime-slot-props.test.ts @@ -123,3 +123,24 @@ describe('translations in the sandbox runtime', () => { delete g.__pluginApi; }, 30_000); }); + +describe('slot boot', () => { + it('shows props the host pushed while React DOM and the kit were loading', async () => { + const { SandboxRuntime } = await import('@/lib/plugin-sandbox/runtime'); + render(React.createElement(SandboxRuntime)); + post(hostWindow, HOST_ORIGIN, { + type: 'init', + payload: { + mode: 'slot', pluginId: 'x', tier: 'privileged', slot: 'email-banner', locale: 'en', + manifest: { id: 'x', version: '1.0.0', permissions: [], settings: {} }, + code: BUNDLE, extraProps: { label: 'old' }, + theme: { dark: false, fontFamily: 'sans-serif', vars: {} }, + }, + }); + // Right away: the renderer is still loading. + post(hostWindow, HOST_ORIGIN, { type: 'props-update', props: { label: 'new' } }); + + await waitFor(() => expect(screen.getByText('new')).toBeInTheDocument()); + expect(hostWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({ type: 'init-done' }), HOST_ORIGIN); + }, 30_000); +}); diff --git a/lib/__tests__/plugin-ui-kit.test.tsx b/lib/__tests__/plugin-ui-kit.test.tsx index 9423f1623..e121a8764 100644 --- a/lib/__tests__/plugin-ui-kit.test.tsx +++ b/lib/__tests__/plugin-ui-kit.test.tsx @@ -149,12 +149,28 @@ describe('plugin UI kit components', () => { }); it('is what the sandbox hands a plugin for require("@plugin-host/ui")', async () => { - const { makePluginRequire } = await import('../plugin-sandbox/runtime'); - const req = makePluginRequire(null); + const { makePluginRequire, loadRenderer } = await import('../plugin-sandbox/runtime'); + const req = makePluginRequire(null, await loadRenderer()); expect(req('@plugin-host/ui')).toBe(kit.pluginUiKit); expect(kit.KIT_EXPORTS).toEqual(expect.arrayContaining(['Button', 'Input', 'Select', 'Combobox', 'Checkbox', 'Field', 'Tabs', 'List', 'ListRow', 'Badge', 'EmptyState', 'PageHeader', 'Spinner', 'DialogButtons', 'InfoBar', 'Chip'])); expect(() => req('left-pad')).toThrow(/not available/); }); + + it('has stand-ins with the same names in a background frame, which draws nothing', async () => { + // Loading the kit and React DOM there cost every background frame ~350 kB of parsing. + const { makePluginRequire } = await import('../plugin-sandbox/runtime'); + const { KIT_NAMES } = await import('../plugin-sandbox/ui-kit/names'); + const req = makePluginRequire(null); + const ui = req('@plugin-host/ui') as Record; + + expect([...KIT_NAMES].sort()).toEqual(kit.KIT_EXPORTS); + expect(Object.keys(ui).sort()).toEqual(kit.KIT_EXPORTS); + expect(ui.KIT_VERSION).toBe(kit.KIT_VERSION); + expect(() => (ui.Button as () => void)()).toThrow(/only works in a slot frame/); + const { createPortal } = req('react-dom') as { createPortal: () => void }; + expect(() => createPortal()).toThrow(/only works in a slot frame/); + expect((req('react-dom') as { then?: unknown }).then).toBeUndefined(); + }); }); describe('DialogButtons', () => { diff --git a/lib/plugin-sandbox/host-bridge.ts b/lib/plugin-sandbox/host-bridge.ts index 35e93a89a..db5a39018 100644 --- a/lib/plugin-sandbox/host-bridge.ts +++ b/lib/plugin-sandbox/host-bridge.ts @@ -392,7 +392,10 @@ export class SandboxInstance { // "/plugin-sandbox" would hit the origin root and 404, breaking plugins. // Privileged plugins load the same-origin route so the CSP/allow-same-origin // pairing is consistent. - this.iframe.src = withBasePath(this.privileged ? SANDBOX_PRIVILEGED_PATH : SANDBOX_PATH); + // ?frame=slot: the document then loads React DOM and the UI kit with the + // runtime; a background frame never needs them (sandbox-document.ts). + this.iframe.src = withBasePath(this.privileged ? SANDBOX_PRIVILEGED_PATH : SANDBOX_PATH) + + (initPayload.mode === 'slot' ? '?frame=slot' : ''); this.listener = (ev) => this.onMessage(ev); window.addEventListener('message', this.listener); @@ -465,6 +468,9 @@ export class SandboxInstance { return; case 'init-error': + // The loader reports a background frame's failure; nobody waits on a + // slot frame's init, so say it here or it fails without a trace. + if (this.mode === 'slot') console.error(`[plugin-sandbox] "${this.pluginId}" slot failed to start: ${msg.error}`); this.rejectInit(new Error(msg.error)); return; diff --git a/lib/plugin-sandbox/runtime.tsx b/lib/plugin-sandbox/runtime.tsx index 1416cc187..336996c39 100644 --- a/lib/plugin-sandbox/runtime.tsx +++ b/lib/plugin-sandbox/runtime.tsx @@ -18,7 +18,6 @@ import { useEffect } from 'react'; import * as React from 'react'; -import * as ReactDOM from 'react-dom/client'; import * as ReactJSXRuntime from 'react/jsx-runtime'; import type { HostToSandbox, @@ -29,7 +28,7 @@ import type { RegionalSnapshot, } from './protocol'; import { themeSnapshotToCSS, type ThemeSnapshot } from './host-theme'; -import { pluginUiKit, SlotPropsContext } from './ui-kit'; +import { backgroundReactDom, backgroundUiKit } from './ui-kit/background-kit'; import { initFloatingDropdownBridge, dispatchFloatingDropdownEvent } from './ui-kit/floating-dropdown-bridge'; import { interpolate, lookup, textDirection, type LocaleTables } from './plugin-i18n'; import { isFillableSlot, isInlineSlot, MAX_INLINE_SLOT_WIDTH } from './slot-layout'; @@ -956,27 +955,51 @@ function buildPluginApi(manifest: PluginManifest) { * The host injects the per-plugin API as `@plugin-host`, so plugin code can * `const api = require('@plugin-host')` in both background and slot modes. */ -export function makePluginRequire(api: ReturnType | null): (name: string) => unknown { +export function makePluginRequire(api: ReturnType | null, renderer: Renderer | null = null): (name: string) => unknown { + const reactDom = renderer?.ReactDOM ?? backgroundReactDom; const known: Record = { 'react': React, - 'react-dom': ReactDOM, - 'react-dom/client': ReactDOM, + 'react-dom': reactDom, + 'react-dom/client': reactDom, 'react/jsx-runtime': ReactJSXRuntime, 'react/jsx-dev-runtime': ReactJSXRuntime, }; if (api) known['@plugin-host'] = api; // The app's controls (lib/plugin-sandbox/ui-kit), so plugins draw the same - // buttons, fields and lists as the app without bundling their own. - known['@plugin-host/ui'] = pluginUiKit; + // buttons, fields and lists as the app without bundling their own. In a + // background frame, stand-ins with the same names. + known['@plugin-host/ui'] = renderer?.kit ?? backgroundUiKit; return (name: string) => { if (Object.prototype.hasOwnProperty.call(known, name)) return known[name]; throw new Error(`Plugin sandbox: module "${name}" is not available. Externalise it in your bundler or ship it bundled.`); }; } -function evaluateBundle(code: string, api: ReturnType | null): PluginExports { +// ─── Renderer (slot frames only) ───────────────────────────── + +/** + * React DOM and the UI kit. Only slot frames draw, so only they load these + * (a separate chunk, ~350 kB to parse); a background frame gets React and + * stand-ins. The host marks slot frames in their URL (?frame=slot) so the + * load starts with the document, not after init. + */ +export interface Renderer { + ReactDOM: typeof import('react-dom/client'); + kit: unknown; + SlotPropsContext: React.Context>; +} + +let rendererPromise: Promise | null = null; + +export function loadRenderer(): Promise { + rendererPromise ??= import('./slot-renderer') + .then((m) => ({ ReactDOM: m.ReactDOM, kit: m.pluginUiKit, SlotPropsContext: m.SlotPropsContext })); + return rendererPromise; +} + +function evaluateBundle(code: string, api: ReturnType | null, renderer: Renderer | null = null): PluginExports { const mod: { exports: PluginExports } = { exports: {} }; - const requireShim = makePluginRequire(api); + const requireShim = makePluginRequire(api, renderer); let fn: (...args: unknown[]) => void; try { fn = new Function( @@ -987,7 +1010,7 @@ function evaluateBundle(code: string, api: ReturnType | n throw new Error(`Bundle parse error: ${(err as Error).message}`); } try { - fn(mod, mod.exports, requireShim, React, ReactDOM, ReactJSXRuntime, console); + fn(mod, mod.exports, requireShim, React, renderer?.ReactDOM ?? backgroundReactDom, ReactJSXRuntime, console); } catch (err) { throw new Error(`Bundle evaluation threw: ${(err as Error).message}`); } @@ -1056,13 +1079,15 @@ async function bootBackground(payload: BackgroundInit): Promise { sendToHost({ type: 'init-done', hooks: hookNames, slots: slotInfo, shortcuts: shortcutInfo }); } -function bootSlot(payload: SlotInit): void { +async function bootSlot(payload: SlotInit): Promise { // Replay the host theme before first paint so the slot never flashes the UA // default serif font or a light-on-light/dark mismatch. applyHostTheme(payload.theme); + const renderer = await loadRenderer(); + const { SlotPropsContext } = renderer; const api = buildPluginApi(payload.manifest); - const exports = evaluateBundle(payload.code, api); + const exports = evaluateBundle(payload.code, api, renderer); pluginExports = exports; slotName = payload.slot; @@ -1074,7 +1099,9 @@ function bootSlot(payload: SlotInit): void { const rootEl = document.getElementById('plugin-sandbox-root'); if (!rootEl) throw new Error('Sandbox root element missing'); - let currentProps = decodeCallbacks(payload.extraProps) as Record; + // Props the host pushed while the renderer was loading replace the init ones. + let currentProps = decodeCallbacks(propsBeforeBoot ?? payload.extraProps) as Record; + propsBeforeBoot = null; const Component = slotDef.component; const inline = isInlineSlot(payload.slot); // Filling its panel: the document is as tall as the frame and the slot's @@ -1147,13 +1174,15 @@ function bootSlot(payload: SlotInit): void { React.createElement(SlotPropsContext.Provider, { value: props }, React.createElement(Component, props))); }; - const reactRoot = ReactDOM.createRoot(rootEl); + const reactRoot = renderer.ReactDOM.createRoot(rootEl); reactRoot.render(React.createElement(SlotShell)); sendToHost({ type: 'init-done', hooks: [], slots: [], shortcuts: [] }); } // Populated by bootSlot - receives `props-update` messages. let slotPropsUpdater: ((next: Record) => void) | null = null; +/** The last props-update that arrived before bootSlot was ready for it. */ +let propsBeforeBoot: Record | null = null; async function handleInit(payload: InitPayload): Promise { if (bootDone) return; @@ -1166,7 +1195,7 @@ async function handleInit(payload: InitPayload): Promise { if (payload.mode === 'background') { await bootBackground(payload); } else { - bootSlot(payload); + await bootSlot(payload); } } catch (err) { sendToHost({ type: 'init-error', error: (err as Error).message ?? String(err) }); @@ -1259,7 +1288,8 @@ function handleHostMessage(ev: MessageEvent): void { break; case 'props-update': - slotPropsUpdater?.(msg.props ?? {}); + if (slotPropsUpdater) slotPropsUpdater(msg.props ?? {}); + else if (mode === 'slot') propsBeforeBoot = msg.props ?? {}; break; case 'stream-chunk': { @@ -1308,6 +1338,7 @@ export function startSandboxRuntime(): () => void { // nothing a window.open()-ing site could talk to. const host = resolveHost(); if (!host) return () => {}; + if (new URLSearchParams(window.location.search).get('frame') === 'slot') void loadRenderer(); parentWindow = host.window; parentOrigin = host.origin; initFloatingDropdownBridge( diff --git a/lib/plugin-sandbox/sandbox-document.ts b/lib/plugin-sandbox/sandbox-document.ts index 62bcc1cc9..2254ca17e 100644 --- a/lib/plugin-sandbox/sandbox-document.ts +++ b/lib/plugin-sandbox/sandbox-document.ts @@ -19,6 +19,8 @@ interface SandboxAssets { style: string; /** Chunks the script imports statically. */ preload: string[]; + /** Chunks of the renderer (React DOM and the UI kit), for slot frames. */ + slotPreload: string[]; } let cached: Promise | null = null; @@ -30,8 +32,8 @@ function loadAssets(): Promise { .then((text) => { const m = JSON.parse(text) as Partial; if (typeof m.script !== 'string' || typeof m.style !== 'string') throw new Error('bad manifest'); - const preload = Array.isArray(m.preload) ? m.preload.filter((p): p is string => typeof p === 'string') : []; - return { script: m.script, style: m.style, preload }; + const names = (v: unknown) => (Array.isArray(v) ? v.filter((p): p is string => typeof p === 'string') : []); + return { script: m.script, style: m.style, preload: names(m.preload), slotPreload: names(m.slotPreload) }; }); cached.catch(() => { cached = null; }); return cached; @@ -51,10 +53,12 @@ export async function sandboxDocument(request: Request): Promise { } const nonce = escapeAttr(request.headers.get('x-nonce') ?? ''); const base = `${process.env.NEXT_PUBLIC_BASE_PATH ?? ''}${SANDBOX_ASSETS_PATH}`; + const slot = new URL(request.url).searchParams.get('frame') === 'slot'; + const preload = slot ? [...assets.preload, ...assets.slotPreload] : assets.preload; const html = '' + 'Plugin sandbox' + `` - + assets.preload.map((p) => ``).join('') + + preload.map((p) => ``).join('') + `` + '
'; return new Response(html, { diff --git a/lib/plugin-sandbox/slot-renderer.ts b/lib/plugin-sandbox/slot-renderer.ts new file mode 100644 index 000000000..462891c5e --- /dev/null +++ b/lib/plugin-sandbox/slot-renderer.ts @@ -0,0 +1,9 @@ +// What only slot frames load (runtime.tsx loadRenderer): React DOM and the +// UI kit. Static imports here, one dynamic import of this module there: a +// dynamic import of react-dom/client itself left createRoot off the +// namespace once bundled (CommonJS interop). + +import * as ReactDOM from 'react-dom/client'; +import { pluginUiKit, SlotPropsContext } from './ui-kit'; + +export { ReactDOM, pluginUiKit, SlotPropsContext }; diff --git a/lib/plugin-sandbox/ui-kit/background-kit.ts b/lib/plugin-sandbox/ui-kit/background-kit.ts new file mode 100644 index 000000000..5f0319920 --- /dev/null +++ b/lib/plugin-sandbox/ui-kit/background-kit.ts @@ -0,0 +1,22 @@ +// What a plugin's background frame gets for `require('@plugin-host/ui')` +// and `require('react-dom')`. A background frame draws nothing, yet loading +// the real kit and React DOM made each one parse ~350 kB, a dozen times at +// start-up. Bundles still require them at the top (one bundle serves the +// background and the slots), so the names are all there; using one throws. + +import { KIT_NAMES, KIT_VERSION } from './names'; + +function unavailable(what: string): () => never { + return () => { + throw new Error(`${what} only works in a slot frame; the background frame draws nothing`); + }; +} + +export const backgroundUiKit: Readonly> = Object.freeze(Object.fromEntries( + KIT_NAMES.map((name) => [name, name === 'KIT_VERSION' ? KIT_VERSION : unavailable(`@plugin-host/ui ${name}`)]), +)); + +export const backgroundReactDom: Readonly> = new Proxy(Object.freeze({}), { + // Not a promise or an ES module namespace, for interop helpers that check. + get: (_target, key) => (typeof key === 'string' && key !== 'then' && key !== '__esModule' ? unavailable(`react-dom ${key}`) : undefined), +}); diff --git a/lib/plugin-sandbox/ui-kit/index.ts b/lib/plugin-sandbox/ui-kit/index.ts index 18dc6492a..bdac83a92 100644 --- a/lib/plugin-sandbox/ui-kit/index.ts +++ b/lib/plugin-sandbox/ui-kit/index.ts @@ -1,16 +1,17 @@ // `@plugin-host/ui`: the module plugins require for the app's controls. // See components.tsx. Adding an export is a plugin API change: list it in -// KIT_EXPORTS below (the plugins repo's docs and fake API read that list). +// KIT_EXPORTS below (the plugins repo's docs and fake API read that list) +// and in names.ts. import * as components from './components'; import { DialogButtons, useSlotProps } from './dialog-buttons'; +import { KIT_VERSION } from './names'; export * from './components'; export { DialogButtons, SlotPropsContext, useSlotProps } from './dialog-buttons'; export type { DialogButtonSpec } from './dialog-buttons'; -/** Bumped when a component is added or its props change in a way plugins can see. */ -export const KIT_VERSION = 2; +export { KIT_VERSION }; export const pluginUiKit = Object.freeze({ ...components, diff --git a/lib/plugin-sandbox/ui-kit/names.ts b/lib/plugin-sandbox/ui-kit/names.ts new file mode 100644 index 000000000..e350e9093 --- /dev/null +++ b/lib/plugin-sandbox/ui-kit/names.ts @@ -0,0 +1,16 @@ +// The names `require('@plugin-host/ui')` hands a plugin, and the kit's +// version. Kept apart from the components so a background frame +// (background-kit.ts) can offer the same names without loading them; +// plugin-ui-kit.test.ts checks this list against the kit. + +/** Bumped when a component is added or its props change in a way plugins can see. */ +export const KIT_VERSION = 2; + +export const KIT_NAMES: readonly string[] = Object.freeze([ + 'Alert', 'Badge', 'BarButton', 'Breadcrumbs', 'Button', 'Card', 'Checkbox', 'Chip', 'ColorDot', 'Combobox', + 'DetailHeading', 'DetailList', 'DetailRow', 'DialogButtons', 'DiffView', 'Divider', 'EmptyState', 'Field', + 'FileIcon', 'Heading', 'Icon', 'InfoBar', 'Input', 'KIT_VERSION', 'Link', 'LinkButton', 'List', 'ListRow', + 'Loading', 'Page', 'PageHeader', 'Panel', 'ProgressBar', 'Row', 'RowAction', 'SearchInput', 'Section', + 'Segmented', 'Select', 'SettingRow', 'SidebarEmpty', 'SidebarRow', 'Spinner', 'Stack', 'Switch', 'Tabs', + 'Text', 'Textarea', 'Toolbar', 'ToolbarButton', 'ToolbarSpacer', 'useSlotProps', +]); diff --git a/scripts/build-plugin-sandbox.mjs b/scripts/build-plugin-sandbox.mjs index a1a0f7a6b..714e40357 100644 --- a/scripts/build-plugin-sandbox.mjs +++ b/scripts/build-plugin-sandbox.mjs @@ -116,18 +116,27 @@ export async function buildPluginSandbox({ outdir = DEFAULT_OUTDIR, clean = true // The chunks the script imports statically, so the document can fetch them // with it instead of after it has been parsed. const outputs = new Map(Object.entries(js.metafile.outputs).map(([f, o]) => [path.basename(f), o])); - const preload = []; - const visit = (name) => { + const closure = (name, into) => { for (const imp of outputs.get(name)?.imports ?? []) { const dep = path.basename(imp.path); - if (imp.kind !== 'import-statement' || preload.includes(dep)) continue; - preload.push(dep); - visit(dep); + if (imp.kind !== 'import-statement' || into.includes(dep)) continue; + into.push(dep); + closure(dep, into); } + return into; }; - visit(path.basename(script)); + const preload = closure(path.basename(script), []); + // What the runtime imports on demand (React DOM and the UI kit), which a + // slot frame loads right away; the all-icons chunk is the kit's, not here. + const slotPreload = []; + for (const imp of outputs.get(path.basename(script))?.imports ?? []) { + if (imp.kind !== 'dynamic-import') continue; + for (const dep of [path.basename(imp.path), ...closure(path.basename(imp.path), [])]) { + if (!preload.includes(dep) && !slotPreload.includes(dep)) slotPreload.push(dep); + } + } - const manifest = { script: path.basename(script), style, preload }; + const manifest = { script: path.basename(script), style, preload, slotPreload }; await writeFile(path.join(outdir, 'manifest.json'), `${JSON.stringify(manifest)}\n`); const inputs = [...Object.keys(js.metafile.inputs).map((f) => path.resolve(root, f)), cssPath, path.join(root, 'app/theme-inline.css')]; return { ...manifest, outputs: js.metafile.outputs, css: css.css, inputs }; From 9c360694bfbdc0da1492b7c7feeec894c9a13b81 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:27:13 +0100 Subject: [PATCH 229/238] fix: send paragraphs with the spacing the composer shows #1340 --- .../rich-text-editor-empty-lines.test.tsx | 7 ++- ...ich-text-editor-paragraph-spacing.test.tsx | 63 +++++++++++++++++++ components/email/paragraph-breaks.ts | 33 ++++++++++ components/email/quoted-html.ts | 3 +- components/email/rich-text-editor.tsx | 3 +- 5 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 components/email/__tests__/rich-text-editor-paragraph-spacing.test.tsx diff --git a/components/email/__tests__/rich-text-editor-empty-lines.test.tsx b/components/email/__tests__/rich-text-editor-empty-lines.test.tsx index 5678f5788..2075c55ae 100644 --- a/components/email/__tests__/rich-text-editor-empty-lines.test.tsx +++ b/components/email/__tests__/rich-text-editor-empty-lines.test.tsx @@ -19,8 +19,11 @@ async function setup(content: string) { return editor as unknown as Editor; } -// The composer marks every block dir="auto"; that's not what these tests are about. -const serialize = (editor: Editor) => serializeEditorContent(editor).replace(/ dir="auto"/g, ''); +// The composer marks every block dir="auto" and inlines the paragraph margin +// (#1340); that's not what these tests are about. +const serialize = (editor: Editor) => serializeEditorContent(editor) + .replace(/ dir="auto"/g, '') + .replace(/ style="margin:4px 0;"/g, ''); // Re-open what was saved, the way a draft or a signature swap does. function reload(editor: Editor, html: string) { diff --git a/components/email/__tests__/rich-text-editor-paragraph-spacing.test.tsx b/components/email/__tests__/rich-text-editor-paragraph-spacing.test.tsx new file mode 100644 index 000000000..ccbe4020e --- /dev/null +++ b/components/email/__tests__/rich-text-editor-paragraph-spacing.test.tsx @@ -0,0 +1,63 @@ +import { act, render, waitFor } from '@testing-library/react'; +import { describe, expect, it } from 'vitest'; +import React from 'react'; +import type { Editor } from '@tiptap/core'; + +import { RichTextEditor } from '../rich-text-editor'; +import { serializeEditorContent } from '../quoted-html'; + +async function setup(content: string) { + let editor: Editor | null = null; + render( + {}} + onEditorReady={(ed) => { editor = ed as unknown as Editor; }} + /> + ); + await waitFor(() => expect(editor).not.toBeNull()); + return editor as unknown as Editor; +} + +const serialize = (editor: Editor) => serializeEditorContent(editor).replace(/ dir="auto"/g, ''); + +describe('RichTextEditor paragraph spacing (#1340)', () => { + it('sends each line with the 4px margin the composer shows, not the 1em default', async () => { + const editor = await setup('

one

two

'); + + expect(serialize(editor)).toBe('

one

two

'); + }); + + it('keeps the alignment next to the margin', async () => { + const editor = await setup('

mid

'); + + expect(serialize(editor)).toBe('

mid

'); + }); + + it('spaces paragraphs in lists too', async () => { + const editor = await setup('
  • a

'); + + expect(serialize(editor)).toContain('
  • a

  • '); + }); + + it('sends no margin inside a table, as the composer shows none there', async () => { + const editor = await setup('

    cell

    '); + + expect(serialize(editor)).toContain('

    cell

    '); + }); + + it('does not stack margins when a saved draft is opened again', async () => { + const editor = await setup('

    one

    two

    '); + const saved = serialize(editor); + + act(() => { editor.commands.setContent(saved, { emitUpdate: false }); }); + + expect(serialize(editor)).toBe(saved); + }); + + it('leaves the quoted original alone', async () => { + const editor = await setup('

    reply

    quoted

    '); + + expect(serialize(editor)).toContain('

    quoted

    '); + }); +}); diff --git a/components/email/paragraph-breaks.ts b/components/email/paragraph-breaks.ts index 38c6b39d5..9edf8dc08 100644 --- a/components/email/paragraph-breaks.ts +++ b/components/email/paragraph-breaks.ts @@ -39,6 +39,39 @@ export function addTrailingParagraphBreaks(root: ParentNode): void { }); } +/** + * Paragraph spacing (#1340). + * + * The composer shows paragraphs 4px apart (`.tiptap p` in globals.css, none + * inside a table), but a sent `

    ` carries no style, so the Sent folder and + * every recipient's client fall back to the browser's 1em margins and each + * Enter looks like a blank line. Inline the composer's margin on the way out. + * Paragraphs keep their `style` in the editor, so the parse side strips the + * margin again (paragraphStyleWithoutSpacing) and a re-opened draft doesn't + * stack one more margin per save. + */ +const PARAGRAPH_MARGIN = "margin:4px 0;"; +const TABLE_PARAGRAPH_MARGIN = "margin:0;"; + +export function addParagraphSpacing(root: ParentNode): void { + root.querySelectorAll("p").forEach((p) => { + if (p.hasAttribute(SIGNATURE_RANGE_MARKER)) return; + const margin = p.closest("table") ? TABLE_PARAGRAPH_MARGIN : PARAGRAPH_MARGIN; + // Ahead of any style the editor wrote, so an explicit margin still wins. + p.setAttribute("style", margin + (p.getAttribute("style") ?? "")); + }); +} + +/** A paragraph's `style` without the margin addParagraphSpacing put in front. */ +export function paragraphStyleWithoutSpacing(el: HTMLElement): string | null { + const style = el.getAttribute("style"); + if (style === null) return null; + for (const margin of [PARAGRAPH_MARGIN, TABLE_PARAGRAPH_MARGIN]) { + if (style.startsWith(margin)) return style.slice(margin.length).trim() || null; + } + return style; +} + /** Whether `el` is the
    a paragraph ends on, which a browser doesn't show. */ export function isTrailingParagraphBreak(el: HTMLElement): boolean { if (el.parentElement?.nodeName !== "P") return false; diff --git a/components/email/quoted-html.ts b/components/email/quoted-html.ts index 71ab1f72d..b983539b3 100644 --- a/components/email/quoted-html.ts +++ b/components/email/quoted-html.ts @@ -5,7 +5,7 @@ import { DOMSerializer } from "@tiptap/pm/model"; import { NodeSelection, Plugin, PluginKey, Selection, TextSelection } from "@tiptap/pm/state"; import type { Editor } from "@tiptap/react"; -import { addTrailingParagraphBreaks } from "@/components/email/paragraph-breaks"; +import { addParagraphSpacing, addTrailingParagraphBreaks } from "@/components/email/paragraph-breaks"; import { buildSignatureBlock } from "@/components/email/signature-block"; import { parkRemoteResources, restoreRemoteResources, sanitizeComposerIslandHtml } from "@/lib/email-sanitization"; import { useSettingsStore } from "@/stores/settings-store"; @@ -270,6 +270,7 @@ export function serializeEditorContent(editor: Editor): string { const tmp = document.createElement("div"); tmp.appendChild(fragment); if (index <= lastLine) addTrailingParagraphBreaks(tmp); + addParagraphSpacing(tmp); parts.push(tmp.innerHTML); }); return parts.join(""); diff --git a/components/email/rich-text-editor.tsx b/components/email/rich-text-editor.tsx index 85a81c5cb..5d45910a1 100644 --- a/components/email/rich-text-editor.tsx +++ b/components/email/rich-text-editor.tsx @@ -23,7 +23,7 @@ import { TableRow } from "@tiptap/extension-table-row"; import { TableHeader } from "@tiptap/extension-table-header"; import { TableCell } from "@tiptap/extension-table-cell"; import { QuotedHtml, serializeEditorContent } from "@/components/email/quoted-html"; -import { trailingParagraphBreakRule } from "@/components/email/paragraph-breaks"; +import { paragraphStyleWithoutSpacing, trailingParagraphBreakRule } from "@/components/email/paragraph-breaks"; import { SignatureBlock } from "@/components/email/signature-block"; import { styledBlockAttributes } from "@/components/email/styled-block-attributes"; import { RecipientMention, RecipientMentionList, type RecipientMentionListHandle } from "@/components/email/recipient-mention"; @@ -69,6 +69,7 @@ const StyledParagraph = Paragraph.extend({ return { ...this.parent?.(), ...styledBlockAttributes, + style: { ...styledBlockAttributes.style, parseHTML: paragraphStyleWithoutSpacing }, }; }, // The
    serializeEditorContent adds to empty lines isn't a hard break. From 07627b3a60bcdc8a182c34f8d7f091703d7dbe25 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:30:23 +0100 Subject: [PATCH 230/238] fix: give every app's sidebar header and toolbar the same height as mail --- components/calendar/calendar-sidebar-header.tsx | 5 +++-- components/calendar/calendar-toolbar.tsx | 2 +- components/calendar/task-toolbar.tsx | 2 +- components/contacts/contact-list.tsx | 4 ++-- components/contacts/contacts-sidebar.tsx | 2 +- components/files/files-header.tsx | 9 ++++----- components/files/files-sidebar.tsx | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/components/calendar/calendar-sidebar-header.tsx b/components/calendar/calendar-sidebar-header.tsx index f2c6f68b5..e9120d91a 100644 --- a/components/calendar/calendar-sidebar-header.tsx +++ b/components/calendar/calendar-sidebar-header.tsx @@ -18,8 +18,9 @@ export function CalendarSidebarHeader({ onCreateEvent, tourTarget = true }: Cale const t = useTranslations("calendar"); return ( - // Same h-14 box as the mail sidebar's account switcher, so the apps line up. -

    + // Same h-14 box as the mail sidebar's account switcher, so the apps line up; + // box-content keeps the border outside it, as in mail. +
    {t("title")} @@ -226,14 +225,14 @@ export function FilesHeader({ if (compact && searchOpen && !toolsHidden) { return ( -
    +
    {searchField}
    ); } return ( -
    +
    {onMenuClick && (
    - {!isStalwartAutoLogin &&
    {sessionLinks(true)}
    } + {showSessionLinks &&
    {sessionLinks(true)}
    }
    ) : ( @@ -424,7 +434,7 @@ export function AdminShell({ authenticated, isStalwartAutoLogin, configReadOnly,
    - {!isStalwartAutoLogin &&
    {sessionLinks(false)}
    } + {showSessionLinks &&
    {sessionLinks(false)}
    }
    From 0b1463b7d5ce40dbb83df5611ec7ca784ad9ffc8 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:48:49 +0100 Subject: [PATCH 233/238] feat: show attachment and code chips as Gmail pills in Mountain View --- .../email/__tests__/attachment-chips.test.tsx | 12 +++++ components/email/attachment-chips.tsx | 51 +++++++++++++------ components/email/thread-list-item.tsx | 21 +++++--- components/email/verification-code-chip.tsx | 17 +++++-- 4 files changed, 76 insertions(+), 25 deletions(-) diff --git a/components/email/__tests__/attachment-chips.test.tsx b/components/email/__tests__/attachment-chips.test.tsx index 1ed87c478..bdff69a81 100644 --- a/components/email/__tests__/attachment-chips.test.tsx +++ b/components/email/__tests__/attachment-chips.test.tsx @@ -54,6 +54,18 @@ describe("ListAttachmentChips", () => { expect(load).not.toHaveBeenCalled(); }); + it("draws Gmail's pill with a filled type badge in Mountain View", () => { + const attachments = [att({ name: "invoice.pdf" })]; + const { rerender } = render(); + const chip = screen.getByTitle("invoice.pdf"); + expect(chip.className).toContain("rounded-full"); + expect(chip.querySelector(".bg-red-600 svg")).toBeTruthy(); + + rerender(); + expect(screen.getByTitle("invoice.pdf").className).not.toContain("rounded-full"); + expect(screen.getByTitle("invoice.pdf").querySelector(".bg-red-600")).toBeNull(); + }); + it("does not load for a row without a paperclip", () => { const load = vi.fn(() => () => {}); render(); diff --git a/components/email/attachment-chips.tsx b/components/email/attachment-chips.tsx index 4ced28825..9a8118ea1 100644 --- a/components/email/attachment-chips.tsx +++ b/components/email/attachment-chips.tsx @@ -21,17 +21,18 @@ export function realAttachments(attachments?: Attachment[]): Attachment[] { ); } -const ICON_BY_TYPE: { match: RegExp; icon: typeof FileIcon; className: string }[] = [ - { match: /^image\//, icon: FileImage, className: "text-violet-600 dark:text-violet-400" }, - { match: /pdf/, icon: FileText, className: "text-red-600 dark:text-red-400" }, - { match: /sheet|excel|csv/, icon: FileSpreadsheet, className: "text-emerald-600 dark:text-emerald-400" }, - { match: /zip|compress|tar|rar|7z/, icon: FileArchive, className: "text-amber-600 dark:text-amber-400" }, - { match: /word|document|rtf|text\//, icon: FileText, className: "text-sky-600 dark:text-sky-400" }, +// `badge` fills the square Mountain View draws behind a white glyph, as Gmail does. +const ICON_BY_TYPE: { match: RegExp; icon: typeof FileIcon; className: string; badge: string }[] = [ + { match: /^image\//, icon: FileImage, className: "text-violet-600 dark:text-violet-400", badge: "bg-red-600" }, + { match: /pdf/, icon: FileText, className: "text-red-600 dark:text-red-400", badge: "bg-red-600" }, + { match: /sheet|excel|csv/, icon: FileSpreadsheet, className: "text-emerald-600 dark:text-emerald-400", badge: "bg-emerald-600" }, + { match: /zip|compress|tar|rar|7z/, icon: FileArchive, className: "text-amber-600 dark:text-amber-400", badge: "bg-zinc-500" }, + { match: /word|document|rtf|text\//, icon: FileText, className: "text-sky-600 dark:text-sky-400", badge: "bg-blue-600" }, ]; function iconFor(type: string, name: string) { const probe = `${type || ""} ${name || ""}`.toLowerCase(); - return ICON_BY_TYPE.find((e) => e.match.test(probe)) ?? { icon: FileIcon, className: "text-muted-foreground" }; + return ICON_BY_TYPE.find((e) => e.match.test(probe)) ?? { icon: FileIcon, className: "text-muted-foreground", badge: "bg-zinc-500" }; } /** Long names are unreadable truncated at the tail — the extension is the @@ -49,6 +50,13 @@ function shortName(name: string, max = 18): string { export const CHIP_BOX_CLASS = "inline-flex items-center gap-1.5 rounded-md border border-border px-2 py-0.5 text-xs"; export const CHIP_ICON_CLASS = "h-3.5 w-3.5 flex-shrink-0"; +// Mountain View's chips are Gmail's: a pill with a filled square in front. +export const MV_CHIP_BOX_CLASS = "inline-flex h-7 items-center gap-2 rounded-full border border-border ps-2 pe-3 text-sm"; +export const MV_CHIP_BADGE_CLASS = "inline-flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-[3px] text-white"; +export const MV_CHIP_BADGE_ICON_CLASS = "h-3 w-3"; + +export type ChipVariant = "default" | "mountain-view"; + interface AttachmentChipsProps { attachments?: Attachment[]; onOpen: (attachment: Attachment) => void; @@ -56,10 +64,12 @@ interface AttachmentChipsProps { max?: number; /** A chip drawn ahead of the attachments in the same row (the verification code). */ leading?: ReactNode; + variant?: ChipVariant; className?: string; } -export function AttachmentChips({ attachments, onOpen, max = 2, leading, className }: AttachmentChipsProps) { +export function AttachmentChips({ attachments, onOpen, max = 2, leading, variant = "default", className }: AttachmentChipsProps) { + const mv = variant === "mountain-view"; const real = realAttachments(attachments); if (!real.length && !leading) return null; @@ -68,10 +78,10 @@ export function AttachmentChips({ attachments, onOpen, max = 2, leading, classNa const overflow = real.length - shown.length; return ( -
    +
    {leading} {shown.map((a) => { - const { icon: Icon, className: iconClass } = iconFor(a.type, a.name ?? ""); + const { icon: Icon, className: iconClass, badge } = iconFor(a.type, a.name ?? ""); return ( ); })} {overflow > 0 && ( - + +{overflow} )} @@ -172,8 +193,8 @@ export function ListAttachmentChips({ email, load, ...chipProps }: ListAttachmen } return (
    - - + +  
    diff --git a/components/email/thread-list-item.tsx b/components/email/thread-list-item.tsx index eb04344a8..c320b133f 100644 --- a/components/email/thread-list-item.tsx +++ b/components/email/thread-list-item.tsx @@ -100,19 +100,26 @@ function UnreadDot({ besideAvatar }: { besideAvatar: boolean }) { } /** The chip row under a row's preview: the verification code, then the attachments. */ -function RowChips({ email, loadAttachments, onOpenAttachment }: { +function RowChips({ email, loadAttachments, onOpenAttachment, mountainView, mvRow }: { email: Email; loadAttachments?: LoadListAttachments; onOpenAttachment?: (attachment: Attachment) => void; + /** Gmail's pill chips. */ + mountainView?: boolean; + /** A one-line Mountain View row: the chips start under the subject, as in Gmail. */ + mvRow?: boolean; }) { + const variant = mountainView || mvRow ? "mountain-view" : "default"; const code = useListVerificationCode(email); - const leading = code ? : undefined; + const leading = code ? : undefined; + // The sender column is w-32 (lg:w-40) and the row line has gap-3 after it. + const className = cn("mt-1.5", mvRow && "mt-0 pb-2 ps-[8.75rem] lg:ps-[10.75rem]"); // Most rows have no attachment: no loader for them, nor an empty chip row. const mayHaveAttachments = email.hasAttachment || (email.attachments?.length ?? 0) > 0; if (onOpenAttachment && mayHaveAttachments) { - return ; + return ; } - return leading ?
    {leading}
    : null; + return leading ?
    {leading}
    : null; } /** @@ -740,7 +747,7 @@ const SingleEmailItem = React.forwardRef(
    {mvRow && ( - + )} ) : ( @@ -864,7 +871,7 @@ const SingleEmailItem = React.forwardRef( )}
    )} - + )}
    @@ -1394,6 +1401,7 @@ export const ThreadListItem = React.forwardRef onOpenAttachment(latestEmail, a) : undefined} + mvRow /> )} @@ -1525,6 +1533,7 @@ export const ThreadListItem = React.forwardRef onOpenAttachment(latestEmail, a) : undefined} + mountainView={mvMobileRow} /> )} diff --git a/components/email/verification-code-chip.tsx b/components/email/verification-code-chip.tsx index d3aab8ceb..42fbe108b 100644 --- a/components/email/verification-code-chip.tsx +++ b/components/email/verification-code-chip.tsx @@ -8,7 +8,7 @@ import type { Email } from "@/lib/jmap/types"; import { listVerificationCode } from "@/lib/verification-code"; import { useSettingsStore } from "@/stores/settings-store"; import { toast } from "@/stores/toast-store"; -import { CHIP_BOX_CLASS, CHIP_ICON_CLASS } from "./attachment-chips"; +import { CHIP_BOX_CLASS, CHIP_ICON_CLASS, MV_CHIP_BADGE_CLASS, MV_CHIP_BADGE_ICON_CLASS, MV_CHIP_BOX_CLASS, type ChipVariant } from "./attachment-chips"; /** The code a list row offers: found in the subject and preview of a fresh mail. */ export function useListVerificationCode(email: Email): string | null { @@ -22,11 +22,12 @@ export function useListVerificationCode(email: Email): string | null { interface VerificationCodeChipProps { code: string; + variant?: ChipVariant; className?: string; } /** The one-time code of a sign-in mail (lib/verification-code.ts); a click copies it. */ -export function VerificationCodeChip({ code, className }: VerificationCodeChipProps) { +export function VerificationCodeChip({ code, variant = "default", className }: VerificationCodeChipProps) { const t = useTranslations("email_viewer.verification_code"); const [copied, setCopied] = useState(false); @@ -56,9 +57,17 @@ export function VerificationCodeChip({ code, className }: VerificationCodeChipPr title={t("copy", { code })} aria-label={t("copy", { code })} data-testid="verification-code-chip" - className={cn(CHIP_BOX_CLASS, "flex-shrink-0 bg-background/60 font-medium text-foreground hover:bg-muted", className)} + className={variant === "mountain-view" + ? cn(MV_CHIP_BOX_CLASS, "flex-shrink-0 bg-transparent font-medium text-foreground/80 hover:bg-muted", className) + : cn(CHIP_BOX_CLASS, "flex-shrink-0 bg-background/60 font-medium text-foreground hover:bg-muted", className)} > - + {variant === "mountain-view" ? ( + + + + ) : ( + + )} {code} ); From cb663d22220caba1f4c18b6253ad98380b20739c Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:49:55 +0100 Subject: [PATCH 234/238] fix: keep settings switches full width next to long labels --- components/settings/settings-section.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings/settings-section.tsx b/components/settings/settings-section.tsx index 0b34b2969..a3e103c78 100644 --- a/components/settings/settings-section.tsx +++ b/components/settings/settings-section.tsx @@ -255,7 +255,7 @@ export function ToggleSwitch({ checked, onChange, disabled, ariaLabel, testId }: disabled={disabled} onClick={() => onChange(!checked)} className={cn( - 'relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-150', + 'relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors duration-150', checked ? 'bg-primary' : 'bg-muted', disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer' )} From e31f55064e64231de5cdee5c0695f3ed4db45dec Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:56:48 +0100 Subject: [PATCH 235/238] fix: use the current calendar and contacts icons in the Mountain View side panel --- components/layout/mv-side-panel.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/layout/mv-side-panel.tsx b/components/layout/mv-side-panel.tsx index c741db90d..0013fa190 100644 --- a/components/layout/mv-side-panel.tsx +++ b/components/layout/mv-side-panel.tsx @@ -4,14 +4,14 @@ import { useEffect, useMemo, useRef, useState } from "react"; import { useTranslations } from "next-intl"; import { addDays, endOfDay, format, isSameDay, startOfDay } from "date-fns"; import { - BookUser, - Calendar as CalendarIcon, + CalendarEvent as CalendarIcon, ChevronLeft, ChevronRight, ExternalLink, ListTodo, Plus, Search, + Users, X, } from "@/components/icons"; import { Link } from "@/i18n/navigation"; @@ -52,7 +52,7 @@ export function MvSidePanel() { const buttons: Array<{ id: MvSidePanelId; label: string; icon: typeof CalendarIcon; color: string }> = [ ...(showCalendar ? [{ id: "calendar" as const, label: t("calendar"), icon: CalendarIcon, color: "text-[#1a73e8]" }] : []), ...(showTasks ? [{ id: "tasks" as const, label: t("mv_tasks"), icon: ListTodo, color: "text-[#1a73e8]" }] : []), - ...(showContacts ? [{ id: "contacts" as const, label: t("contacts"), icon: BookUser, color: "text-[#1a73e8]" }] : []), + ...(showContacts ? [{ id: "contacts" as const, label: t("contacts"), icon: Users, color: "text-[#1a73e8]" }] : []), ]; if (buttons.length === 0) return null; From f7a4087c91f43acea576933162c14c31e30a4bc0 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 25 Oct 2026 13:13:46 +0100 Subject: [PATCH 236/238] feat: split the Mountain View inbox into Unread and Everything else, as Gmail's unread first --- .../email-list-unread-first.test.tsx | 108 +++++++++++ components/email/email-list.tsx | 128 ++++++++++++-- components/email/mv-list-section-header.tsx | 38 ++++ components/email/mv-list-toolbar.tsx | 5 +- components/settings/message-list-settings.tsx | 22 ++- hooks/use-unread-first-section.ts | 24 +++ lib/__tests__/unread-first.test.ts | 54 ++++++ lib/unread-first.ts | 111 ++++++++++++ locales/ar/common.json | 11 ++ locales/ca/common.json | 11 ++ locales/cs/common.json | 11 ++ locales/da/common.json | 11 ++ locales/de/common.json | 11 ++ locales/en/common.json | 11 ++ locales/es/common.json | 11 ++ locales/et/common.json | 11 ++ locales/fa/common.json | 11 ++ locales/fr/common.json | 11 ++ locales/he/common.json | 11 ++ locales/hu/common.json | 11 ++ locales/it/common.json | 11 ++ locales/ja/common.json | 11 ++ locales/ko/common.json | 11 ++ locales/lv/common.json | 11 ++ locales/mn/common.json | 11 ++ locales/nb/common.json | 11 ++ locales/nl/common.json | 11 ++ locales/pl/common.json | 11 ++ locales/pt/common.json | 11 ++ locales/ro/common.json | 11 ++ locales/ru/common.json | 11 ++ locales/sk/common.json | 11 ++ locales/tr/common.json | 11 ++ locales/uk/common.json | 11 ++ locales/zh-TW/common.json | 11 ++ locales/zh/common.json | 11 ++ .../email-store-unread-first.test.ts | 167 ++++++++++++++++++ stores/email-store.ts | 147 ++++++++++++--- stores/settings-store.ts | 10 ++ 39 files changed, 1083 insertions(+), 39 deletions(-) create mode 100644 components/email/__tests__/email-list-unread-first.test.tsx create mode 100644 components/email/mv-list-section-header.tsx create mode 100644 hooks/use-unread-first-section.ts create mode 100644 lib/__tests__/unread-first.test.ts create mode 100644 lib/unread-first.ts create mode 100644 stores/__tests__/email-store-unread-first.test.ts diff --git a/components/email/__tests__/email-list-unread-first.test.tsx b/components/email/__tests__/email-list-unread-first.test.tsx new file mode 100644 index 000000000..41c57dba0 --- /dev/null +++ b/components/email/__tests__/email-list-unread-first.test.tsx @@ -0,0 +1,108 @@ +import { act, render } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import React from 'react'; +import { EmailList } from '../email-list'; +import { useEmailStore } from '@/stores/email-store'; +import { useMessageListTabsStore } from '@/stores/message-list-tabs-store'; +import { useSettingsStore } from '@/stores/settings-store'; +import type { Email } from '@/lib/jmap/types'; + +// Mountain View's "Unread first" inbox: the Unread section's conversations +// first, each section under its header, and a folded section's rows gone. + +vi.mock('@/hooks/use-email-drag', () => ({ + useEmailDrag: () => ({ dragHandlers: {}, isDragging: false }), +})); +vi.mock('@/components/ui/avatar', () => ({ Avatar: () => null })); +vi.mock('@/stores/auth-store', async () => { + const { create } = await import('zustand'); + return { + useAuthStore: create(() => ({ client: null, identities: [], username: null, activeAccountId: 'acct-1' })), + }; +}); +vi.mock('@/stores/account-store', () => { + const state = { getAccountById: () => undefined }; + return { + useAccountStore: Object.assign( + (selector?: (s: typeof state) => unknown) => (selector ? selector(state) : state), + { getState: () => state }, + ), + }; +}); + +const mail = (id: string, time: string, read: boolean): Email => ({ + id, + threadId: `thread-${id}`, + mailboxIds: { inbox: true }, + keywords: read ? { $seen: true } : {}, + size: 1000, + receivedAt: `2026-09-30T${time}:00Z`, + from: [{ name: 'Alice', email: 'alice@example.com' }], + subject: `Mail ${id}`, + hasAttachment: false, +}); + +// The store's list: the section's rows first, then the read mail by date. +const EMAILS = [ + mail('U2', '12:00', false), + mail('U1', '09:00', false), + mail('R2', '16:00', true), + mail('R1', '10:00', true), +]; + +const initialEmailState = useEmailStore.getState(); +const initialTabsState = useMessageListTabsStore.getState(); +const initialSettings = useSettingsStore.getState(); + +beforeEach(() => { + // Room in the list for every item, or the virtual list draws none of them. + vi.spyOn(HTMLElement.prototype, 'offsetHeight', 'get').mockReturnValue(600); + vi.spyOn(HTMLElement.prototype, 'offsetWidth', 'get').mockReturnValue(600); + useEmailStore.setState(initialEmailState, true); + useEmailStore.setState({ + selectedMailbox: 'inbox', + mailboxes: [{ id: 'inbox', role: 'inbox' } as never], + emails: EMAILS, + totalEmails: 2, + unreadSection: { mailboxId: 'inbox', ids: new Set(['U2', 'U1']), total: 7 }, + }); + useMessageListTabsStore.setState(initialTabsState, true); + useSettingsStore.setState({ + ...initialSettings, + interfaceLayout: 'mountain-view', + mvInboxType: 'unread-first', + mvUnreadSectionCollapsed: false, + mvEverythingElseCollapsed: false, + }, true); +}); + +afterEach(() => { vi.restoreAllMocks(); }); + +const rowKeys = () => useEmailStore.getState().listRows?.map((row) => row.key); + +describe('the "Unread first" inbox list', () => { + it('puts the Unread section first, under its header, then everything else', () => { + const { container } = render(); + expect(rowKeys()).toEqual(['U2', 'U1', 'R2', 'R1']); + const headers = [...container.querySelectorAll('[data-mv-list-section]')].map((h) => h.textContent); + expect(headers).toHaveLength(2); + expect(headers[0]).toContain('sections.unread'); + expect(headers[1]).toContain('sections.everything_else'); + }); + + it('folds a section away from its header', () => { + const { container } = render(); + const unreadToggle = container.querySelector('[data-mv-list-section] button') as HTMLButtonElement; + act(() => unreadToggle.click()); + expect(useSettingsStore.getState().mvUnreadSectionCollapsed).toBe(true); + expect(rowKeys()).toEqual(['R2', 'R1']); + expect(container.querySelectorAll('[data-mv-list-section]')).toHaveLength(2); + }); + + it('is one list sorted by date in the default inbox', () => { + useSettingsStore.setState({ mvInboxType: 'default' }); + const { container } = render(); + expect(rowKeys()).toEqual(['R2', 'U2', 'R1', 'U1']); + expect(container.querySelector('[data-mv-list-section]')).toBeNull(); + }); +}); diff --git a/components/email/email-list.tsx b/components/email/email-list.tsx index 09b3f6705..e182206b3 100644 --- a/components/email/email-list.tsx +++ b/components/email/email-list.tsx @@ -39,6 +39,9 @@ import { emitThreadExpand } from "@/lib/plugin-thread-expand"; import { normalizeAddress } from "@/lib/filters/quick-rules"; import { PluginSlot } from "@/components/plugins/plugin-slot"; import { PluginActions } from "@/components/plugins/plugin-actions"; +import { useUnreadFirstSection } from "@/hooks/use-unread-first-section"; +import { unreadSectionRowCount } from "@/lib/unread-first"; +import { MvListSectionHeader } from "./mv-list-section-header"; interface EmailListProps { emails: Email[]; @@ -83,6 +86,15 @@ interface EmailListProps { hideBatchToolbar?: boolean; } +/** + * What the virtual list draws: a row, or in the "Unread first" inbox a + * section's header and the line an empty Unread section shows. + */ +type ListItem = + | { kind: 'row'; thread: ThreadGroup } + | { kind: 'header'; section: 'unread' | 'rest' } + | { kind: 'unread-empty' }; + /** Below this width the batch toolbar drops its labels (see batchNarrow). */ const BATCH_TOOLBAR_WIDE = 480; @@ -241,12 +253,59 @@ export function EmailList({ const activeAccountId = useAuthStore((state) => state.activeAccountId); const activeTabId = useMessageListTabsStore((state) => state.activeTabId); - const threadGroups = useMemo(() => { + const allThreadGroups = useMemo(() => { const listOrder = searchQuery || crossView || !isFilterEmpty(searchFilters) ? [] : fetchedListOrder; const groups = groupEmailsByThread(emails, disableThreading || isScheduledView, threadEmailCounts); return sortThreadGroups(groups, listOrder, listHold?.keywords); }, [emails, disableThreading, isScheduledView, threadEmailCounts, fetchedListOrder, searchQuery, crossView, searchFilters, listHold]); + // Mountain View's "Unread first" inbox: the Unread section's conversations + // go first, under a header each section has, and a folded section's rows + // leave the list. A conversation with a message in the section is the + // section's. + const unreadSection = useUnreadFirstSection(); + const unreadCollapsed = useSettingsStore((state) => state.mvUnreadSectionCollapsed); + const restCollapsed = useSettingsStore((state) => state.mvEverythingElseCollapsed); + const updateSetting = useSettingsStore((state) => state.updateSetting); + const sections = useMemo(() => { + if (!unreadSection) return null; + const unread: ThreadGroup[] = []; + const rest: ThreadGroup[] = []; + for (const group of allThreadGroups) { + (group.emails.some((email) => unreadSection.ids.has(email.id)) ? unread : rest).push(group); + } + return { unread, rest }; + }, [allThreadGroups, unreadSection]); + const threadGroups = useMemo(() => ( + sections + ? [...(unreadCollapsed ? [] : sections.unread), ...(restCollapsed ? [] : sections.rest)] + : allThreadGroups + ), [sections, unreadCollapsed, restCollapsed, allThreadGroups]); + const { items, itemOfThread } = useMemo(() => { + const items: ListItem[] = []; + const itemOfThread: number[] = []; + const addRows = (groups: ThreadGroup[]) => { + for (const thread of groups) { + itemOfThread.push(items.length); + items.push({ kind: 'row', thread }); + } + }; + if (!sections) { + addRows(threadGroups); + return { items, itemOfThread }; + } + items.push({ kind: 'header', section: 'unread' }); + if (!unreadCollapsed) { + if (sections.unread.length === 0) items.push({ kind: 'unread-empty' }); + addRows(sections.unread); + } + items.push({ kind: 'header', section: 'rest' }); + if (!restCollapsed) addRows(sections.rest); + return { items, itemOfThread }; + }, [sections, threadGroups, unreadCollapsed, restCollapsed]); + const sectionRowCount = useMemo(() => unreadSectionRowCount(emails, unreadSection), [emails, unreadSection]); + const totalEmails = useEmailStore((state) => state.totalEmails); + const { contextMenu, openContextMenu, closeContextMenu, menuRef } = useContextMenu(); /** * The row the menu was opened on, as the list currently has it. The menu holds @@ -388,13 +447,15 @@ export function EmailList({ // The virtualizer's guesses follow the rows' shape (see useListRowShape). const estimateSize = useCallback((index: number) => { + const item = items[index]; + if (item?.kind === 'header' || item?.kind === 'unread-empty') return 48; if (isFocusedMailLayout) { return { 'extra-compact': 28, compact: 40, regular: 56, comfortable: 64 }[density]; } // Rows the list has not measured yet are placed by this guess, and each // one it gets wrong shifts the list when it is measured on the way back // up after a jump down (scrollbar drag, End). So guess per row. - const latest = threadGroups[index]?.latestEmail; + const latest = item?.kind === 'row' ? item.thread.latestEmail : undefined; let size = { 'extra-compact': 32, compact: 60, regular: 84, comfortable: 104 }[density]; if (showPreview && density !== 'extra-compact') { // A mail without a preview draws a one-line "No preview available", @@ -406,17 +467,22 @@ export function EmailList({ const hasCode = !!latest && showVerificationCodes && !!listVerificationCode(latest); if (latest && (hasCode || (onOpenAttachment && listRowShowsChips(latest, loadAttachments)))) size += 28; return size; - }, [density, isFocusedMailLayout, showPreview, showVerificationCodes, threadGroups, onOpenAttachment, loadAttachments]); + }, [density, isFocusedMailLayout, showPreview, showVerificationCodes, items, onOpenAttachment, loadAttachments]); // Stable per list, so the virtualizer does not rebuild every row's // measurement on each scroll render. const getItemKey = useCallback( - (index: number) => threadGroups[index]?.threadKey ?? String(index), - [threadGroups], + (index: number) => { + const item = items[index]; + if (item?.kind === 'row') return item.thread.threadKey; + if (item?.kind === 'header') return `section:${item.section}`; + return item ? 'section:unread-empty' : String(index); + }, + [items], ); const virtualizer = useVirtualizer({ - count: threadGroups.length, + count: items.length, getScrollElement: () => parentRef.current, estimateSize, overscan: 5, @@ -677,9 +743,11 @@ export function EmailList({ const lastVirtualItemIndex = virtualItems[virtualItems.length - 1]?.index; const loadMoreTimerRef = useRef | null>(null); + // A folded "Everything else" has nothing below to load into. + const loadsMore = !(sections && restCollapsed); useEffect(() => { - if (lastVirtualItemIndex === undefined) return; - if (lastVirtualItemIndex >= threadGroups.length - 5) { + if (lastVirtualItemIndex === undefined || !loadsMore) return; + if (lastVirtualItemIndex >= items.length - 5) { // Clear any pending timer so we don't stack calls if (loadMoreTimerRef.current) clearTimeout(loadMoreTimerRef.current); loadMoreTimerRef.current = setTimeout(() => { @@ -690,7 +758,7 @@ export function EmailList({ return () => { if (loadMoreTimerRef.current) clearTimeout(loadMoreTimerRef.current); }; - }, [lastVirtualItemIndex, threadGroups.length, handleLoadMore]); + }, [lastVirtualItemIndex, items.length, handleLoadMore, loadsMore]); // Scroll to the thread group containing the selected email useEffect(() => { @@ -703,11 +771,12 @@ export function EmailList({ // A row clicked in the list is already on screen; scrollToIndex would // still measure and schedule a scroll. Judge from the virtualizer's own // numbers, which cost no layout read. - const item = virtualizer.measurementsCache[index]; + const itemIndex = itemOfThread[index]; + const item = virtualizer.measurementsCache[itemIndex]; const top = virtualizer.scrollOffset; const height = virtualizer.scrollRect?.height; if (item && top !== null && height !== undefined && item.start >= top && item.end <= top + height) return; - virtualizer.scrollToIndex(index, { align: 'auto' }); + virtualizer.scrollToIndex(itemIndex, { align: 'auto' }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedEmailId]); @@ -716,7 +785,7 @@ export function EmailList({ useEffect(() => { if (!selectionFocusKey) return; const index = threadGroups.findIndex((thread) => thread.emails.some((e) => emailKeyFor(e) === selectionFocusKey)); - if (index >= 0) virtualizer.scrollToIndex(index, { align: 'auto' }); + if (index >= 0) virtualizer.scrollToIndex(itemOfThread[index], { align: 'auto' }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectionFocusKey]); @@ -951,7 +1020,8 @@ export function EmailList({ }} > {virtualizer.getVirtualItems().map((virtualItem) => { - const thread = threadGroups[virtualItem.index]; + const listItem = items[virtualItem.index]; + const thread = listItem?.kind === 'row' ? listItem.thread : null; return (
    - updateSetting('mvUnreadSectionCollapsed', !unreadCollapsed)} + shown={sectionRowCount} + total={unreadSection.total} + /> + ) : ( + updateSetting('mvEverythingElseCollapsed', !restCollapsed)} + shown={emails.length - sectionRowCount} + total={totalEmails} + /> + ) + )} + {listItem?.kind === 'unread-empty' && ( +

    + {t('sections.unread_empty')} +

    + )} + {thread && + />}
    ); })}
    -
    + {loadsMore &&
    {footerIsLoadingMore && footerHasMore && (
    @@ -1006,7 +1100,7 @@ export function EmailList({ {t('no_more_emails')}
    )} -
    +
    } )}
    diff --git a/components/email/mv-list-section-header.tsx b/components/email/mv-list-section-header.tsx new file mode 100644 index 000000000..544b04541 --- /dev/null +++ b/components/email/mv-list-section-header.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { useTranslations } from "next-intl"; +import { ChevronDown, ChevronUp } from "@/components/icons"; + +interface MvListSectionHeaderProps { + title: string; + collapsed: boolean; + onToggle: () => void; + /** Rows the section shows and how many it has in all, for the range readout. */ + shown: number; + total: number; +} + +/** A section of Mountain View's "Unread first" inbox: "Unread" or "Everything else", folding as in Gmail. */ +export function MvListSectionHeader({ title, collapsed, onToggle, shown, total }: MvListSectionHeaderProps) { + const t = useTranslations("email_list"); + const Chevron = collapsed ? ChevronDown : ChevronUp; + return ( +
    + +
    + {shown > 0 && ( + + {t("conversations_range", { from: 1, to: shown, total: Math.max(total, shown) })} + + )} +
    + ); +} diff --git a/components/email/mv-list-toolbar.tsx b/components/email/mv-list-toolbar.tsx index 03cb89e6b..77cfc8b98 100644 --- a/components/email/mv-list-toolbar.tsx +++ b/components/email/mv-list-toolbar.tsx @@ -36,6 +36,7 @@ import { buildMoveTargets, resolveMoveOwnerAccountId } from "@/lib/move-targets" import { getEmailTagIds } from "@/lib/thread-utils"; import { cn, type MailboxNode } from "@/lib/utils"; import { PluginActions } from "@/components/plugins/plugin-actions"; +import { useUnreadFirstSection } from "@/hooks/use-unread-first-section"; interface MvListToolbarProps { /** Loaded conversation count, for the right-hand range readout. */ @@ -217,6 +218,8 @@ export function MvListToolbar({ // Optimistic updates and demo fixtures can briefly leave the server total // behind the rows already loaded. Never render an impossible "23 of 22". const displayedTotal = Math.max(totalCount ?? loadedCount, loadedCount); + // The "Unread first" inbox gives each section its own readout instead. + const sectioned = !!useUnreadFirstSection(); const currentRole = mailboxes.find((mb) => mb.id === selectedMailbox)?.role ?? (isUnifiedView ? (unifiedRole ?? undefined) : undefined); @@ -659,7 +662,7 @@ export function MvListToolbar({
    - {loadedCount > 0 && ( + {loadedCount > 0 && !sectioned && ( {/* The range readout. The list grows as it scrolls rather than paging, so there are no previous/next arrows to go with it. */} diff --git a/components/settings/message-list-settings.tsx b/components/settings/message-list-settings.tsx index 30f3e544a..2f730c958 100644 --- a/components/settings/message-list-settings.tsx +++ b/components/settings/message-list-settings.tsx @@ -5,7 +5,7 @@ import { useTranslations } from 'next-intl'; import { useSettingsStore } from '@/stores/settings-store'; import { useEffectiveMailLayout } from '@/hooks/use-effective-mail-layout'; import { useMediaQuery } from '@/hooks/use-media-query'; -import type { ArchiveMode, HoverAction, SwipeAction } from '@/stores/settings-store'; +import type { ArchiveMode, HoverAction, MvInboxType, SwipeAction } from '@/stores/settings-store'; import { ALL_HOVER_ACTIONS } from '@/stores/settings-store'; import { useAuthStore } from '@/stores/auth-store'; import { useEmailStore } from '@/stores/email-store'; @@ -68,6 +68,7 @@ export function MessageListSettings() { listColumns, mailLayout, interfaceLayout, + mvInboxType, tintListRowsByTag, senderFavicons, showAvatarsInJunk, @@ -177,6 +178,25 @@ export function MessageListSettings() { )} + {/* Gmail's inbox types; "Unread first" puts the newest unread mail in a section above the rest. */} + {mountainView && ( + +