Files
SRCmail/.env.dev.example
T
Bernd Rodler 61651b1ed1 docs: tomorrow-morning test basis (AI, S/MIME web+mobile, Theme); fix JMAP_SERVER_URL landmine in dev env example
Concrete, runnable test steps per area with explicit known-gaps sections
so nothing reads as more finished than it is. Also documents the mobile
S/MIME merge (vncmail-native main 7b89839) done this session.

.env.dev.example: the documented relative JMAP_SERVER_URL 400s
/api/auth/stalwart-context (resolveTrustedJmapUrl rejects relative URLs),
silently breaking the real session-cookie flow that S/MIME enrollment,
offline sync, and the AI server/retrieval routes all depend on. Switched
the example to an absolute URL with an explanatory comment.
2026-08-06 00:51:37 +02:00

71 lines
3.0 KiB
Bash

# Bulwark Webmail - Development Configuration
# Copy this file to .env.local to run with the built-in mock JMAP server.
# No external mail server required - great for UI development and testing.
#
# Usage:
# cp .env.dev.example .env.local
# npm run dev
# Open http://localhost:3000 - log in with any username/password.
# =============================================================================
# Mock JMAP Server
# =============================================================================
# Enable the built-in mock JMAP server (served at /api/dev-jmap)
DEV_MOCK_JMAP=true
# Point the app at its own mock endpoint.
# IMPORTANT: must be an ABSOLUTE URL matching the origin the app runs on
# (default: port 3000) - NOT a relative path. A relative path here makes
# /api/auth/stalwart-context 400 on every request (resolveTrustedJmapUrl
# rejects it), which silently breaks the real server-side session-cookie
# flow that S/MIME enrollment, offline sync, and the AI server/retrieval
# routes all depend on. The client-side mock fetch works either way, which
# is why this is easy to miss - it only bites features needing a real
# server-side session identity.
JMAP_SERVER_URL=http://localhost:3000/api/dev-jmap
# =============================================================================
# App
# =============================================================================
APP_NAME=Bulwark Webmail (Dev)
# =============================================================================
# Session & Settings Sync (optional for dev)
# =============================================================================
SESSION_SECRET=dev-secret-not-for-production
SETTINGS_SYNC_ENABLED=true
# =============================================================================
# Logging (verbose for development)
# =============================================================================
LOG_FORMAT=text
LOG_LEVEL=debug
# =============================================================================
# Plugin Development
# =============================================================================
# Load plugins from a directory on disk instead of installing them as ZIPs.
# Each immediate subfolder is one plugin and needs a manifest.json. When the
# manifest's entrypoint exists under src/, it's bundled on demand with esbuild,
# so you can edit sources and just refresh the browser.
# PLUGIN_DEV_DIR=../my-plugins
# =============================================================================
# Login Page Customization (optional)
# =============================================================================
# LOGIN_COMPANY_NAME=Dev Team
# LOGIN_IMPRINT_URL=https://example.com/imprint
# LOGIN_PRIVACY_POLICY_URL=https://example.com/privacy
# LOGIN_WEBSITE_URL=https://example.com
# Per-domain branding overrides. Each entry must have "host" (exact or
# "*.subdomain" wildcard) plus any subset of branding fields to override.
# Unset fields fall through to the global values above.
# DOMAIN_BRANDING=[{"host":"localhost","loginCompanyName":"Local Dev"}]