RustBox 0.2.9 - final source validation

0.2.9 scope:
- startup synchronization does not emit new-mail toasts; realtime mail notifications are armed after application startup
- bulk move/copy/archive/junk/delete actions suppress self-generated destination-folder new-mail notifications and retain one summary toast
- authenticated startup/login shows a success toast
- browser/system Ctrl/Cmd shortcuts are not intercepted by RustBox single-key mail shortcuts
- mailbox pages default to 300 messages and accept up to 300 per page
- no runtime schema migration is added; V049 remains next
- version metadata updated to 0.2.9

Completed in this environment:
- offline release validator: scripts/validate-release-static.py (340/340 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.9
- V048 migration files/catalog registration and SQLite upgrade execution 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.
