Files
SRCmail/vnc/VNC-CHANGES.md
T
Bernd RodlerandClaude Opus 4.8 88670d4bcf feat(theme): per-theme brand logos (VNClagoon wordmark ↔ SRC mark)
Add optional logoLightUrl/logoDarkUrl to InstalledTheme + resolveThemeLogo()
helper; set logos on vnclagoon + src themes; login page and nav-rail prefer the
active theme's logo, falling back to the global config logo. So switching theme
switches the whole brand. 0 type errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 18:23:42 +02:00

3.4 KiB

VNC-CHANGES — VNCmail+ divergence log

VNCmail+ is a fork of bulwarkmail/webmail (AGPL-3.0). This file records every intentional divergence from upstream so that merging new upstream releases stays a triage exercise, not an archaeology dig.

Rules of the fork

  1. Keep upstream files unmodified whenever possible. Prefer env vars (branding), the vnc/overrides/ layer, and additive files over editing files inside app/, components/, lib/, stores/.
  2. Every edit to an upstream file gets a one-line entry below — path, what, why. No silent edits.
  3. Branches: main tracks upstream releases (kept clean); dev is the VNC integration + Vercel deploy branch; vnc/* are feature branches.
  4. Syncing upstream: git fetch upstream && git merge upstream/main onto main, then merge main into dev. Resolve using this log.

Divergences

Date File / area Change Why
2026-08-03 vnc/ (new) Added VNC customization dir + this log Fork bootstrap
2026-08-03 VNCMAIL-SETUP.md (new) Vercel deploy runbook Deploy on Vercel as project "VNCmail+"

| 2026-08-03 | deploy/k8s/ (new) | k8s manifests + runbook for microk8s deploy | Bulwark is stateful → runs as a container w/ persistent volumes, not Vercel serverless | | 2026-08-03 | .gitignore | ignore deploy/k8s/secret.yaml | keep the real env secret out of git | | 2026-08-03 | public/branding/*.svg (new) | VNCmail wordmark (on-dark + on-light) | VNC logo (placeholder — swap official SVG) | | 2026-08-03 | public/fonts/*.woff2 (new) | DM Sans 400/500/700 + Syne 700/800 (OFL, self-hosted) | VNClagoon typography | | 2026-08-03 | lib/builtin-themes.ts | add builtin-vnclagoon theme (navy+cyan, DM Sans/Syne, @font-face) | VNClagoon brand theme | | 2026-08-03 | lib/admin/types.ts | DEFAULT_THEME_POLICY.defaultThemeIdbuiltin-vnclagoon | make VNClagoon the default theme | | 2026-08-03 | stores/theme-store.ts | default theme/resolvedThemedark | dark-first per VNClagoon styleguide | | 2026-08-03 | lib/builtin-themes.ts | add builtin-src theme (Swiss red on white, light-first) | 2nd brand theme (SRC Advisory); VNClagoon stays default | | 2026-08-03 | public/branding/src-logo.svg (new) | SRC mountain mark | SRC brand (placeholder — swap official) | | 2026-08-03 | lib/plugin-types.ts | add optional logoLightUrl/logoDarkUrl to InstalledTheme | per-theme brand logos | | 2026-08-03 | lib/theme-logo.ts (new) | resolveThemeLogo() helper | pick active theme's logo, fall back to global | | 2026-08-03 | lib/builtin-themes.ts | set logos on vnclagoon (wordmark) + src (mark) | logo switches with the brand theme | | 2026-08-03 | app/(main)/[locale]/login/page.tsx | login logo uses active theme's logo | brand-switch on login | | 2026-08-03 | components/layout/navigation-rail.tsx | nav-rail logo uses active theme's logo | brand-switch in app |

Note: Vercel was tried and abandoned on 2026-08-03. Bulwark writes to a local data dir (/app/data/*); Vercel serverless has a read-only filesystem → crash (ENOENT /var/task/data). VNCmail+ now deploys as a Docker image (ghcr.io/brvncde-dotcom/vncmail-plus-*) on Kubernetes (microk8s) at vncmail.sandbox.vnc.de, with 4 persistent volumes — see deploy/k8s/. A microfrontends integration was also added and reverted the same day.

(append new rows as you diverge)