diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67f38b82..921cf0f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ We're writing the webmail we wanted in 2026 and didn't find: a JMAP-native clien If that sounds like your kind of project, we'd love the help. -## Join the Community +## Join the community You don't need to be an expert to contribute. A dev environment that won't start, a bug you're not sure how to report, a translation you're stuck on: Discord is the fastest way to get unstuck and to meet the people working on this. @@ -26,9 +26,9 @@ You don't need to be an expert to contribute. A dev environment that won't start --- -## Getting Started +## Getting started -### Development Setup +### Development setup 1. **Fork and clone** the repository: @@ -61,7 +61,7 @@ You don't need to be an expert to contribute. A dev environment that won't start Then open http://localhost:3000. -### Code Quality +### Code quality Before submitting a pull request, ensure your code passes all checks: @@ -91,7 +91,7 @@ Run a single unit test file with `npx vitest run lib/__tests__/.test.ts`, The integration suite needs Docker and takes several minutes; it has its own setup notes and findings log in [integration/README.md](integration/README.md). New behavior that touches mail/folder synchronization or multi-account handling belongs there. -## Code Style Guidelines +## Code style guidelines ### TypeScript @@ -100,7 +100,7 @@ The integration suite needs Docker and takes several minutes; it has its own set - Avoid `any` types when possible - Use meaningful variable and function names -### React Components +### React components - Use functional components with hooks - Keep components focused and single-purpose @@ -160,9 +160,9 @@ For a right-to-left language, also add the code to `rtlLocales` in `i18n/directi Run `npm run test:translations` afterwards - it checks the locale files for structural drift against English. -## Pull Request Process +## Pull request process -### Before Submitting +### Before submitting 1. **Create a feature branch**: @@ -191,7 +191,7 @@ Run `npm run test:translations` afterwards - it checks the locale files for stru - Screenshots for UI changes - Reference to any related issues -### Commit Message Convention +### Commit message convention Follow the conventional commits format: @@ -211,7 +211,7 @@ fix: resolve attachment download issue docs: update README with keyboard shortcuts ``` -## Project Structure +## Project structure ``` webmail/ diff --git a/FEATURES.md b/FEATURES.md index c2cd4c08..f561981a 100644 --- a/FEATURES.md +++ b/FEATURES.md @@ -54,7 +54,7 @@ - Trusted senders live in their own JMAP address book - Autocomplete on To, Cc, and Bcc -## Filters & Templates +## Filters & templates - Server-side filters as JMAP Sieve Scripts (RFC 9661) - A visual rule builder: conditions on From, To, Subject, Size, Body, Attachment and more, each matching multiple values, with actions to move, forward, star, or discard @@ -73,7 +73,7 @@ - Cut, copy, paste, duplicate; favorites; recent files - JMAP sharing (RFC 9670) for files and folders. Pick a user or group from the principal picker and grant read, read/write, or manager. Shared items get an indicator, and anything other principals share with you appears under "Shared with me". -## Security & Privacy +## Security & privacy - External content stays blocked until you say otherwise, and trusted senders are remembered - HTML sanitized through DOMPurify @@ -111,7 +111,7 @@ - The browser's `Accept-Language` picks the first language, and the choice persists per user - `NEXT_PUBLIC_DEFAULT_LOCALE` sets the fallback, `NEXT_PUBLIC_LOCALE_PREFIX` the URL prefix -## Identity & Multi-Account +## Identity & multi-account - Run several accounts at once and switch instantly, each keeping its own session. The 5-account cap lifts on HTTP/2 servers; on HTTP/1.1, browser connection pooling still sets the limit. - An account switcher showing connection status, and a default account @@ -123,7 +123,7 @@ - Several JMAP servers per deployment, optionally auto-picked by email domain - Custom JMAP endpoints on the login form, when `ALLOW_CUSTOM_JMAP_ENDPOINT` permits it -## Admin & Extensibility +## Admin & extensibility - A setup wizard runs on first launch and walks through JMAP servers, OAuth/OIDC, the session secret, logging, branding (uploads included), and the admin password. It writes to the admin config dir, so `.env.local` stays untouched. - The Stalwart admin dashboard, its policy sections collapsed into one tabbed page diff --git a/README.md b/README.md index 63a4d73a..e7175763 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ The wizard writes to `ADMIN_CONFIG_DIR` (`./data/admin` by default). Setting `JM -## Overview +## What Bulwark includes Bulwark is a full webmail suite. It bundles the four apps most self-hosters end up wanting: @@ -85,7 +85,7 @@ Full feature list: **[FEATURES.md](FEATURES.md)**. --- -## Quick Start +## Quick start ### Docker @@ -101,7 +101,7 @@ docker compose up -d On first launch, open `http://localhost:3000` and the setup wizard takes over. Installs that already define `JMAP_SERVER_URL` skip it and keep the env-managed flow under [Configuration](#configuration). -### From Source +### From source ```bash git clone https://github.com/bulwarkmail/webmail.git @@ -308,7 +308,7 @@ Then point your reverse proxy at the container without stripping the prefix. The -## Keyboard Shortcuts +## Keyboard shortcuts | Key | Action | | -------------------- | ----------------------- | @@ -331,7 +331,7 @@ Then point your reverse proxy at the container without stripping the prefix. The In the composer: `Ctrl/Cmd`+`Enter` sends, `Ctrl/Cmd`+`Shift`+`Enter` opens scheduled send, and `t` opens the template picker. -## Tech Stack +## Tech stack | | | | ------------- | ------------------------------------------------- |