docs: use sentence case for headings
This commit is contained in:
+10
-10
@@ -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__/<name>.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/
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
@@ -70,7 +70,7 @@ The wizard writes to `ADMIN_CONFIG_DIR` (`./data/admin` by default). Setting `JM
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## 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
|
||||
|
||||
</details>
|
||||
|
||||
## 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
|
||||
|
||||
| | |
|
||||
| ------------- | ------------------------------------------------- |
|
||||
|
||||
Reference in New Issue
Block a user