chore: update version to 1.4.8
This commit is contained in:
@@ -1,5 +1,22 @@
|
||||
# Changelog
|
||||
|
||||
## 1.4.8 (2026-03-23)
|
||||
|
||||
### Features
|
||||
|
||||
- **Email**: Add support for marking emails as answered or forwarded and display status icons in email list and thread views
|
||||
- **Email**: Enhance identity selection by supporting sub-addressing (plus addressing) in email composer
|
||||
- **Settings**: Add notification settings with sound picker, preview playback, and configurable alert sounds
|
||||
- **Settings**: Add default mail program settings with localization support across all locales
|
||||
- **Auth**: Implement path prefix handling for OAuth callbacks and login redirects, enabling reverse proxy deployments
|
||||
- **Validation**: Add all multi-part TLDs for domain validation in favicon API (#81)
|
||||
|
||||
### Fixes
|
||||
|
||||
- **Calendar**: Fix bugs in duration parsing, RFC compliance, and event handling across calendar components
|
||||
- **Calendar**: Detect tasks created by external CalDAV clients such as Thunderbird
|
||||
- **Settings**: Enhance account settings with username and authentication method display (#90)
|
||||
|
||||
## 1.4.7 (2026-03-21)
|
||||
|
||||
### Features
|
||||
|
||||
@@ -15,7 +15,6 @@ import { Mail, AlertCircle, Loader2, X, Info, Eye, EyeOff, LogIn, Sun, Moon, Mon
|
||||
import { discoverOAuth, type OAuthMetadata } from "@/lib/oauth/discovery";
|
||||
import { generateCodeVerifier, generateCodeChallenge, generateState } from "@/lib/oauth/pkce";
|
||||
import { OAUTH_SCOPES } from "@/lib/oauth/tokens";
|
||||
import { getPathPrefix } from "@/lib/browser-navigation";
|
||||
|
||||
const APP_VERSION = "1.4.7";
|
||||
|
||||
@@ -149,7 +148,7 @@ export default function LoginPage() {
|
||||
if (!serverUrl) return;
|
||||
const handleClickOutside = (event: MouseEvent) => {
|
||||
if (suggestionsRef.current && !suggestionsRef.current.contains(event.target as Node) &&
|
||||
inputRef.current && !inputRef.current.contains(event.target as Node)) {
|
||||
inputRef.current && !inputRef.current.contains(event.target as Node)) {
|
||||
setShowSuggestions(false);
|
||||
}
|
||||
if (themeMenuRef.current && !themeMenuRef.current.contains(event.target as Node)) {
|
||||
@@ -181,8 +180,7 @@ export default function LoginPage() {
|
||||
const startServerSideSso = useCallback(async () => {
|
||||
setOauthLoading(true);
|
||||
try {
|
||||
const prefix = getPathPrefix(params.locale as string);
|
||||
const redirectUri = `${window.location.origin}${prefix}/${params.locale}/auth/callback`;
|
||||
const redirectUri = `${window.location.origin}/${params.locale}/auth/callback`;
|
||||
const res = await fetch('/api/auth/sso/start', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -360,8 +358,7 @@ export default function LoginPage() {
|
||||
const verifier = generateCodeVerifier();
|
||||
const challenge = await generateCodeChallenge(verifier);
|
||||
const state = generateState();
|
||||
const prefix = getPathPrefix(params.locale as string);
|
||||
const redirectUri = `${window.location.origin}${prefix}/${params.locale}/auth/callback`;
|
||||
const redirectUri = `${window.location.origin}/${params.locale}/auth/callback`;
|
||||
|
||||
sessionStorage.setItem("oauth_code_verifier", verifier);
|
||||
sessionStorage.setItem("oauth_state", state);
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bulwark-webmail",
|
||||
"version": "1.4.7",
|
||||
"version": "1.4.8",
|
||||
"description": "Bulwark Webmail — a modern webmail client built for Stalwart Mail Server",
|
||||
"author": "Bulwark Webmail <bulwark@rbm.systems>",
|
||||
"license": "AGPL-3.0-only",
|
||||
|
||||
Reference in New Issue
Block a user