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>
49 lines
3.4 KiB
Markdown
49 lines
3.4 KiB
Markdown
# VNC-CHANGES — VNCmail+ divergence log
|
|
|
|
VNCmail+ is a fork of [bulwarkmail/webmail](https://github.com/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.defaultThemeId` → `builtin-vnclagoon` | make VNClagoon the default theme |
|
|
| 2026-08-03 | `stores/theme-store.ts` | default `theme`/`resolvedTheme` → `dark` | 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)_
|