v0.0.5
RustBox CI / rustbox (push) Waiting to run

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-30 12:06:44 +01:00
1 parent 96a32ea8fb
commit a643e7e3ab
106 files changed
+2223 -4669

No files matched your search

-107
View File
@@ -1,107 +0,0 @@
# RustBox 0.0.4 — remaining roadmap gaps
Snapshot after the OpenPGP/key-lifecycle and unbounded Sieve action/condition work in this iteration.
## OpenPGP status
OpenPGP is functionally complete for the scope defined in `RUSTBOX_PLAN.md` §9:
- generate/import/export/delete public and private keys;
- per-user protected keyring and identity assignment;
- passphrase validation and passphrase change (GnuPG is used only for secret-packet re-wrapping; passphrases are sent via stdin/status-fd, never argv or database);
- sign, encrypt, sign+encrypt, PGP/MIME and inline OpenPGP;
- verify/decrypt with signer fingerprint, trust and invalid-signature warning;
- recipient-key checks, public-key attachment, WKD and optional HTTPS HKP discovery;
- private-key filesystem isolation and export policy.
`RUSTBOX_PGP_GPG_BINARY` may override the `gpg` executable used by the passphrase-change operation. Other cryptographic operations use rPGP directly.
## Remaining functional items — 45
### Advanced IMAP / shared folders / ACL — 11
- [ ] Namespace/shared/global folder browser driven by NAMESPACE.
- [ ] GETACL read path.
- [ ] SETACL rights editor.
- [ ] DELETEACL entry removal.
- [ ] Inherited/default rights presentation where the server exposes it.
- [ ] Clear own/shared/global folder distinction in the folder tree.
- [ ] Full production QRESYNC resynchronization path.
- [ ] Server-side SORT when advertised.
- [ ] Server-side THREAD when advertised.
- [ ] LIST-EXTENDED production behavior when advertised.
- [ ] Complete UTF8/UTF8=ACCEPT behavior across mailbox/message edge cases.
### Contacts / calendars — 12
- [ ] CardDAV discovery.
- [ ] Multiple CardDAV address books.
- [ ] CardDAV sync-token + ETag synchronization.
- [ ] CardDAV conflict/retry/delete synchronization.
- [ ] LDAP address-book adapter (RO/RW policy-driven).
- [ ] CalDAV discovery.
- [ ] Multiple and shared CalDAV calendars.
- [ ] CalDAV sync-token + ETag synchronization.
- [ ] Recurrence expansion, exceptions and edit semantics.
- [ ] Full timezone correctness behavior.
- [ ] iTIP invitation parsing/delivery workflow.
- [ ] Accept / Decline / Tentative invitation responses.
### Core mail / composer / Sieve — 7
- [ ] Full SMTP DSN negotiation.
- [ ] TNEF / `winmail.dat` decoding.
- [ ] Complete identity/signature default policy for every new/reply/forward edge case.
- [ ] Persistent multi-step Undo history beyond the current safe single MOVE undo.
- [ ] Arbitrarily branching visual Sieve groups, e.g. `(A AND (B OR C))`; the builder now supports an unlimited left-nested AND/OR chain.
- [ ] Full capability-aware Sieve condition/action matrix for all advertised extensions.
- [ ] Visual editing of existing non-RustBox/raw Sieve rules without falling back to raw text.
### Spam / password / account integration — 11
- [ ] rspamd HTTP spam adapter.
- [ ] SpamAssassin adapter.
- [ ] Custom spam-command adapter.
- [ ] Password-change API adapter.
- [ ] Password-change LDAP adapter.
- [ ] Password-change SQL adapter.
- [ ] Password-change PAM/command adapter.
- [ ] Persistent session inventory/device metadata across process restarts.
- [ ] Administrator-facing autologout/remember-me policy controls.
- [ ] New-user/onboarding identity workflow.
- [ ] Optional login → mailbox/address mapping (virtuser equivalent).
### Search / notifications / diagnostics — 4
- [ ] Complete attachment content/metadata indexing policy and limits.
- [ ] Background/service-worker notifications while the page is inactive, if retained for 0.0.4.
- [ ] Richer per-account notification policy beyond global/per-folder controls.
- [ ] Background task/queue status plus recent-error/repair workflows.
## UI / i18n work still required (not counted as separate functional features)
- Final Settings information architecture: General, Message view, separate Signatures, Autoresponder, Contacts, Calendar, Encryption, Privacy, Security and Sessions.
- Complete keyboard-only/focus-order/accessibility audit.
- Remaining hard-coded EN/PL strings moved to locale files.
- Missing-key detection/fallback audit.
- Locale-aware date/time/number formatting audit.
- Documentation/structure for additional languages.
## Release/security/acceptance work (not counted in the 45 functional items)
- complete HTML/CSS/SVG sanitizer regression matrix;
- tracking-pixel/data-URI/CID matrix;
- malformed/nested MIME and huge-message tests;
- CRLF/header injection, CSRF, XSS and cross-account authorization matrix;
- session fixation/hijacking and secure-cookie verification;
- archive/ZIP-bomb and dangerous-filename tests;
- temporary-storage cleanup verification;
- OpenPGP key-isolation/passphrase/PGP-MIME regression matrix;
- `cargo fmt --check`, `cargo clippy --all-targets`, `cargo test`, release build;
- Dovecot/Postfix/ManageSieve real-server matrix;
- SMTPUTF8/IDN real-server compatibility;
- large mailbox/large attachment/performance tests;
- long-running IDLE/reconnect storm/UIDVALIDITY/index-consistency tests;
- memory stability and restart/resume tests.
OpenPGP is no longer a functional blocker. The largest remaining feature blockers are shared folders/ACL, CardDAV/CalDAV+iTIP and integration adapters. The release remains blocked by the real Rust/server/security/performance gate until those tests are executed successfully.
-20
View File
@@ -1,20 +0,0 @@
# Roundcube skin validation
This snapshot maps RustBox components onto the official Roundcube Classic and Elastic visual tokens and adds a Larry-compatible fixed interface style.
## Source mapping
- **Classic Light**: `skins/classic/common.css` and Classic mail styles: `#F6F6F6` page background, `#F2F2F2` box background, `#CC3333` selected message/accent, `#929292` selected folder, square controls, Lucida/Verdana/Arial stack.
- **Classic Dark**: upstream Classic has no official dark mode. RustBox preserves the Classic red/gray hierarchy, square controls and gradients while adapting surfaces/text for dark contrast.
- **Elastic Light**: `skins/elastic/styles/colors.less` and variables: `#37beff` main, `#00acff` link/accent, `#f4f4f4` header, `#ddd` borders, white list/content surfaces.
- **Elastic Dark**: upstream dark tokens: `#21292c` background, `#c5d1d3` text, `#4d6066` border, `#374549` selected row, `#2f3a3f` dark header/task surface.
## Automated checks
`python3 tests/roundcube_skin_contract.py`
The test verifies all migrations on a blank SQLite database, `interface_skin`, saved-response `format`, unique HTML ids, SVG back-arrow markup, both skin/theme selector pairs, upstream palette tokens, CSS parseability and frontend/backend registration.
`build.rs` consumes `src/web/js/manifest.txt` during Cargo builds. For a standalone syntax check, concatenate the manifest entries in order and run `node --check` on the resulting `.js` file.
The browser fixture in `tests/theme_fixture.html` is rendered with the real bundled CSS. Validation screenshots in `tests/theme-shots/` cover Classic Light/Dark, Elastic Light/Dark and both mobile drawer variants.
-1357
View File
File diff suppressed because it is too large. Load diff
-26
View File
@@ -1,26 +0,0 @@
# RustBox 0.0.1
Initial development release of RustBox based on Oxi.
## Repository/runtime
- One Cargo package at repository root.
- Application source in `src/`.
- RustBox-owned browser UI in `src/web/`, embedded into the executable.
- No TypeScript, React, Next.js, Node.js or Bun build step.
- Development starts with `./dev.sh` or ordinary `cargo run`.
## Mail and UI
- Existing Oxi-derived IMAP/SMTP, synchronization, search, contacts/calendar and related backend functionality retained as the starting base.
- New compact three-pane RustBox interface with dark/light/system appearance, density/preview/scale preferences, threaded reading, HTML compose formatting and SVG-only action icons.
- IMAP/SMTP endpoints are configured only by the administrator; login accepts user email and password.
- Mail operations use the resolved connection profile stored in the authenticated session, fixing the Inbox 503 path where Sieve could work while mail routes considered the server unconfigured.
- ManageSieve integration with STARTTLS, implicit TLS and explicitly opt-in insecure transport.
## Oxi follow-up
- `UPSTREAM_BASE` records the consumed Oxi revision.
- Oxi's `backend/...` changes can be mapped to RustBox's flat repository paths using `scripts/sync-upstream.sh`.
- Individual Oxi backend commits can be ported with `scripts/oxi-port-commit.sh`.
- Oxi frontend sources are excluded; useful UI behavior is reimplemented in `src/web/`.
-21
View File
@@ -1,21 +0,0 @@
# RustBox 0.0.2
RustBox 0.0.2 modularizes the browser JavaScript build and restructures appearance selection around fixed interface styles plus a fully customizable RustBox mode.
## UI build
- Source JavaScript lives in `src/web/js/` and is ordered by `src/web/js/manifest.txt`.
- Cargo `build.rs` concatenates the modules into `rustbox-ui.js`, fingerprints the combined CSS/JS asset set and embeds the generated bundle.
- `src/web/` is the single UI source; no duplicate `ui/` snapshot or standalone bundler script is kept in the repository.
## Interface styles
- RustBox (custom)
- Roundcube Classic
- Roundcube Larry
- Roundcube Elastic
- Clean
- Graphite
- High contrast
The removed Compact/Balanced/Comfortable/Reading preset cards are no longer part of Appearance. Fixed styles use their own geometry and palette without destroying the stored RustBox custom values.
-14
View File
@@ -1,14 +0,0 @@
# RustBox 0.0.3
RustBox 0.0.3 is a mobile UI and appearance-focused maintenance release.
## Highlights
- Mobile settings and dialogs no longer grow wider than the viewport; source, header and calendar cards fill their dialog without transparent side strips.
- Calendar controls wrap into a touch-friendly grid on narrow screens.
- The visual Sieve editor keeps checkboxes next to their labels and switches complex rule rows to one column on mobile.
- Message recipient details can be expanded by tap or keyboard to reveal full addresses.
- IMAP storage quota is visible in the main folder sidebar above the IMAP/version footer.
- `default_theme = "system" | "dark" | "light"` controls the global pre-login/login theme from TOML.
- New interface profiles: Gmail inspired, Proton inspired, Zoho inspired, Outlook inspired and Minimal.
- Polish localization now covers substantially more settings, dialogs, filters, calendar and contact UI.
-11
View File
@@ -1,11 +0,0 @@
# RustBox 0.0.4
RustBox 0.0.4 improves attachment interaction in the message reader.
## Highlights
- Left-click previews supported attachment types in the in-app viewer.
- Right-click exposes explicit **Preview** and **Download** actions.
- Unsupported attachment types still download directly on left-click.
- Attachments that exceed the preview limit now offer **Download** instead of only showing a warning.
- Known oversized attachments are rejected before fetching their full payload for preview.