# 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 | _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)_