mirror of
https://github.com/root-fr/jmap-webmail.git
synced 2026-09-23 00:01:13 +00:00
Community PRs and targeted feature work. Highlights: Features - Archive now operates on the whole conversation, matching Gmail (#49) - Russian and Ukrainian locales, full translation sets (#59 @VsevolodSauta) - Custom favicon with unread badge painted over the base mail icon; also fixes stale sidebar counters on JMAP push (#63 @jabiinfante) - Optional domain-favicon avatars with a privacy-preserving proxy and a freemail denylist so the same provider logo isn't shown for every sender on a shared host (#22) Fixes - Print (Ctrl+P, button, menu) produces a clean single-column page for plain text and HTML emails alike, with actions/reply panels hidden, dark-mode overridden, and wide newsletters shrunk to fit A4 - Contacts now load past 500 entries by batching ContactCard/get to the server's maxObjectsInGet (#45 @capitanroy, #46) - Sieve filter destinations use the full Parent/Child folder path so Stalwart can resolve them (#62 @travier) - OIDC over plain HTTP shows a clear HTTPS-required banner instead of throwing crypto.subtle is undefined (#23 @jothoma1) - Missing contacts delete-confirm translation keys added to every locale (only Dutch had them before) - Favicon badge hook stopped tearing out Next.js's managed icon link, fixing a parentNode-is-null crash on route changes - Contact empty-state action buttons fit their container (#56) - Print layout excludes sidebar/list (#55 @prastowoagungwidodo) Docs - README example for OAUTH_ONLY=true to disable Basic Auth (#61 @travier) Infrastructure - Container images also published under jmap-webmail:1 for major-tag pinning (#57 @joelpurra, closes #54)
20 lines
485 B
TypeScript
20 lines
485 B
TypeScript
import { getRequestConfig } from 'next-intl/server';
|
|
import { routing, type Locale } from './routing';
|
|
|
|
export default getRequestConfig(async ({ requestLocale }) => {
|
|
let locale = await requestLocale;
|
|
|
|
if (!locale || !routing.locales.includes(locale as Locale)) {
|
|
locale = routing.defaultLocale;
|
|
}
|
|
|
|
const messages = (await import(`../locales/${locale}/common.json`)).default;
|
|
|
|
return {
|
|
locale,
|
|
messages,
|
|
timeZone: 'Europe/Paris',
|
|
now: new Date()
|
|
};
|
|
});
|