nx-webmail: fix login viewport overflow and initial sync behavior
Some checks failed
Publish nx-webmail Image (Gitea) / publish (push) Has been cancelled

This commit is contained in:
2026-02-23 14:15:52 +01:00
parent ceed81eb15
commit 1626984faf
6 changed files with 20 additions and 21 deletions

View File

@@ -30,7 +30,7 @@ Umbrel installation is most reliable when your app uses a prebuilt image from a
- `git.weektab.org/nexus/nx-webmail:latest` - `git.weektab.org/nexus/nx-webmail:latest`
3. The workflow then pins `nx-webmail/docker-compose.yml` to `tag@sha256:digest` automatically. 3. The workflow then pins `nx-webmail/docker-compose.yml` to `tag@sha256:digest` automatically.
4. Manual fallback: 4. Manual fallback:
docker buildx build --platform linux/amd64,linux/arm64 -t git.weektab.org/nexus/nx-webmail:1.0.5 --push . docker buildx build --platform linux/amd64,linux/arm64 -t git.weektab.org/nexus/nx-webmail:1.0.6 --push .
## Umbrel app packaging ## Umbrel app packaging
@@ -55,7 +55,7 @@ This repository is prepared for Umbrel app-store usage.
Notes: Notes:
- Umbrel uses the `app_proxy` service in `docker-compose.yml`. - Umbrel uses the `app_proxy` service in `docker-compose.yml`.
- Internal app port is `3001`. - Internal app port is `3001`.
- `server` uses a prebuilt registry image (`git.weektab.org/nexus/nx-webmail:1.0.5`). - `server` uses a prebuilt registry image (`git.weektab.org/nexus/nx-webmail:1.0.6`).
- If your store prefix changes, update `id` in `umbrel-app.yml` and `APP_HOST` in `docker-compose.yml`. - If your store prefix changes, update `id` in `umbrel-app.yml` and `APP_HOST` in `docker-compose.yml`.
## Notes ## Notes

View File

@@ -7,7 +7,7 @@ services:
APP_PORT: 3001 APP_PORT: 3001
server: server:
image: git.weektab.org/nexus/nx-webmail:1.0.5@sha256:5bd160a20d844a2b4a74607423b951859eccee38cb6b47c2f4264640ac23f3eb image: git.weektab.org/nexus/nx-webmail:1.0.6@sha256:7967020f4c24b5d8ba61d069bcb3fb951db7e65568f71782d44e54c8d230fc5b
init: true init: true
restart: on-failure restart: on-failure
stop_grace_period: 1m stop_grace_period: 1m

View File

@@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
<title id="title">Webmail</title>
<desc id="desc">Envelope icon for Webmail app</desc>
<rect x="16" y="32" width="224" height="192" rx="24" fill="#0f172a"/>
<rect x="32" y="64" width="192" height="128" rx="14" fill="#1e293b"/>
<path d="M32 78l96 70 96-70" fill="none" stroke="#e2e8f0" stroke-width="14" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M32 178l70-54m122 54l-70-54" fill="none" stroke="#94a3b8" stroke-width="10" stroke-linecap="round"/>
</svg>

View File

@@ -503,7 +503,8 @@ export default function Webmail() {
direction: requestDirection, direction: requestDirection,
updatedAt: Date.now() updatedAt: Date.now()
}; };
const visibleState = shouldResetWindow const shouldPageWindow = shouldResetWindow && !fetchAll;
const visibleState = shouldPageWindow
? buildFirstPageView(nextEmails, safeTotal, requestDirection) ? buildFirstPageView(nextEmails, safeTotal, requestDirection)
: { emails: nextEmails, paging }; : { emails: nextEmails, paging };
@@ -573,7 +574,7 @@ export default function Webmail() {
keepSelection: true, keepSelection: true,
silent: Boolean(cachedDefaultEmails) || skipInitialFetchIfCached, silent: Boolean(cachedDefaultEmails) || skipInitialFetchIfCached,
fetchAll: true, fetchAll: true,
resetToFirstPage: true resetToFirstPage: false
}); });
saveSession(credOverride, defaultFolder); saveSession(credOverride, defaultFolder);
upsertAccount(credOverride, defaultFolder); upsertAccount(credOverride, defaultFolder);

View File

@@ -1383,10 +1383,12 @@ body.webmail-active {
} }
.webmail-login-page { .webmail-login-page {
min-height: calc(100vh - 24px); box-sizing: border-box;
width: 100%; min-height: calc(100dvh - 16px);
margin: 12px; width: calc(100% - 16px);
border-radius: 22px; max-width: calc(100vw - 16px);
margin: 8px auto;
border-radius: 14px;
overflow: hidden; overflow: hidden;
display: flex; display: flex;
align-items: center; align-items: center;
@@ -1402,6 +1404,7 @@ body.webmail-active {
} }
.webmail-login-panel { .webmail-login-panel {
box-sizing: border-box;
width: min(100%, 520px); width: min(100%, 520px);
color: #f8fafc; color: #f8fafc;
} }
@@ -1432,6 +1435,7 @@ body.webmail-active {
} }
.webmail-login-form-wrap { .webmail-login-form-wrap {
box-sizing: border-box;
width: min(100%, 460px); width: min(100%, 460px);
} }
@@ -1477,9 +1481,11 @@ body.webmail-active {
@media (max-width: 900px) { @media (max-width: 900px) {
.webmail-login-page { .webmail-login-page {
align-items: flex-start; align-items: flex-start;
min-height: calc(100vh - 16px); min-height: calc(100dvh - 8px);
margin: 8px; margin: 8px;
border-radius: 16px; width: calc(100% - 16px);
max-width: calc(100vw - 16px);
border-radius: 10px;
padding: 24px 18px; padding: 24px 18px;
background-position: 58% center; background-position: 58% center;
} }

View File

@@ -4,7 +4,7 @@ name: Webmail
tagline: Self-hosted IMAP/SMTP webmail client tagline: Self-hosted IMAP/SMTP webmail client
icon: https://git.weektab.org/nexus/umbrel-apps/raw/branch/main/gallery/webmail/icon.png icon: https://git.weektab.org/nexus/umbrel-apps/raw/branch/main/gallery/webmail/icon.png
category: utilities category: utilities
version: "1.0.5" version: "1.0.6"
port: 3001 port: 3001
description: >- description: >-
Webmail is a lightweight, self-hosted webmail app for connecting to external Webmail is a lightweight, self-hosted webmail app for connecting to external
@@ -17,7 +17,7 @@ repo: https://git.weektab.org/nexus/webmail
support: https://git.weektab.org/nexus/webmail/issues support: https://git.weektab.org/nexus/webmail/issues
gallery: [] gallery: []
releaseNotes: >- releaseNotes: >-
Improved inbox synchronization to load complete mailbox data right after login. Fixed login background overflow and improved initial mailbox synchronization behavior.
dependencies: [] dependencies: []
path: "" path: ""
defaultUsername: "" defaultUsername: ""