RustBox 0.2.16 - final source validation 0.2.16 scope: - signature HTML formatting preserves selected text across toolbar clicks, including formatting removal, while collapsed-caret clicks cannot enable sticky bold/italic/underline typing modes - the HTML signature editor is no longer wrapped in a label, preventing whitespace/outside clicks from implicitly activating the Bold toolbar button - new messages with visible signatures provide an editable body area above a more subtle, better-spaced separator - wide message panes use compact one-line rows by default, with a persisted Mailbox preference to disable them - signatures support per-identity silent append-on-send (default) or visible/editable composer insertion - durable blob deletion outbox covers filesystem/shared POSIX/NFS and S3, pairing metadata deletion with cleanup enqueue in one SQL transaction and retrying storage failures without permanent dead-lettering - failed finalized uploads and failed storage-migration destination objects are queued for cleanup - saving/updating a draft stays silent in realtime: Drafts still refreshes, but no “new message” toast/system notification is emitted - composer `Delete draft` removes the current verified IMAP draft and cascades local draft attachment metadata/blob cleanup - explicit Save draft action before Cancel forces a real IMAP Drafts snapshot while background autosave behavior remains unchanged - manual IMAP save reports APPEND/snapshot failures instead of showing false success - draft recovery restores attachment metadata and the attachment strip keeps inline plus regular files visible together - new uploads merge against the full server-side draft attachment list so adding another file cannot replace an existing visible entry - composer UX regression fixed: image actions are contextual/floating instead of a dedicated layout row - multiple inline images/attachments append independently and do not replace the active selection - same-name/same-size files are no longer silently de-duplicated - recipient list collapsing, mailbox pagination, progressive loading, full-folder loading, and reader Details label - composer fields can collapse to maximize the message editor, and invalid recipient input expands them again - inline attachment embedding/re-embedding, clipboard/file drop insertion, image drag repositioning, and pointer resize handles - message-body links without an explicit target open outside the sandboxed preview in a new tab/window, while explicit targets are preserved - page refresh/session restoration does not emit a false “Successfully logged in” toast - real login still emits the success toast - message preview documents explicitly use UTF-8 and RFC 2047 headers support UTF-8, ISO-8859-2 and Windows-1250 decoding - PDF attachment preview uses the authenticated inline URL for Safari/iPhone compatibility - Composing shows only compact attachment/message size-limit values on one line - 0.2.9 realtime notification gating, browser shortcut preservation and 300-message defaults remain intact - V047-V050 are consolidated into compatibility baseline V050; V051 migrates existing tenants with adaptive HTML-mail colors and mailbox loading mode; V052 is next - version metadata updated to 0.2.16 Completed in this environment: - offline release validator: scripts/validate-release-static.py (421/421 checks passed) - browser JavaScript assembled in manifest order passes `node --check` - all JSON files parse successfully - Python helper scripts compile successfully - shell scripts pass `bash -n` - release metadata consistently identifies 0.2.16 - V050 baseline consolidation plus the V051 adaptive-colors/mailbox-loading migration are validated offline Not executable in this packaging environment: - cargo fmt/test/clippy/build with Rust 1.99.1, because Rust/Cargo is not installed - live PostgreSQL/MySQL/S3/NFS/OpenSearch/IMAP integration tests The final release gate on a Rust host is: bash scripts/build-release.sh This file intentionally does not claim blocked runtime/integration checks as passed.