v0.1.0
This commit is contained in:
1 parent
cdca612a59
commit
eb25f8de4a
56 files changed
+7848
-4345
No files matched your search
+22
-87
@@ -1,90 +1,25 @@
|
||||
PostfixAdmin-RS 0.0.3
|
||||
PostfixAdmin-RS 0.1.0 – validation of this release
|
||||
|
||||
Validated in the current workspace:
|
||||
- TOML parsing: PASS
|
||||
- JSON i18n parsing: PASS
|
||||
- English is the default UI language: PASS
|
||||
- EN/PL catalog and interface language switch markers: PASS
|
||||
- API/backend messages remain English (no backend localization layer added): PASS
|
||||
- CSS/JS manifest completeness: PASS
|
||||
- JavaScript syntax with Node: PASS
|
||||
- shell syntax (bash -n): PASS
|
||||
- dev.sh mock-mode smoke test with command shims: PASS
|
||||
- dev.sh SSH-tunnel mode smoke test with command shims: PASS
|
||||
- SSH DB mode defaults to READ-ONLY: PASS
|
||||
- SSH DB writes require POSTFIXADMIN_RS_DEV_DB_WRITES=1: PASS
|
||||
- SSH host-key verification is not disabled: PASS
|
||||
- no PHP files in project: PASS
|
||||
- obsolete UI branding "· bez PHP" / "Panel poczty bez PHP": REMOVED
|
||||
- no native browser prompt/confirm/alert dialogs: PASS
|
||||
- modal/theme SVG integration markers: PASS
|
||||
- no shell-based hook execution markers: PASS
|
||||
- Rspamd DKIM route/config/static integration markers: PASS
|
||||
- Rspamd selector_map/path_map config present in dev/example/user configs: PASS
|
||||
- CSP static policy gate: PASS
|
||||
- dev mock safety markers: PASS
|
||||
- production DB read-only mutation guard: PASS (static source check)
|
||||
- PostfixAdmin password compatibility markers/tests: PASS (static source check)
|
||||
- config.from-user.toml contains no database password: PASS
|
||||
- PostfixAdmin 4.0.1 entry points/handlers reviewed against PORT-PARITY.md: PASS (manual source audit)
|
||||
Compiler gate (rustc 1.97 offline with vendored crates, edition 2024):
|
||||
- cargo build: PASS
|
||||
- cargo clippy --all-targets -- -D warnings: PASS
|
||||
- cargo test: PASS (unit tests incl. quota/limit rules, CIDR/proxy resolution,
|
||||
recipient delimiter, vacation dates, fetchmail base64, password vectors)
|
||||
- scripts/validate-release-static.py: PASS
|
||||
- scripts/i18n/build.py: PASS (no missing Polish strings)
|
||||
|
||||
Not validated in the current workspace:
|
||||
- cargo check / cargo test / cargo clippy / cargo build
|
||||
Reason: Rust/Cargo toolchain is not installed in the execution environment.
|
||||
Database:
|
||||
- PostgreSQL 16: --init-schema on an empty database, second run idempotent,
|
||||
--create-superadmin, --check-config, --integrity-check: PASS
|
||||
- SQLite (development mock built by the same schema code): PASS
|
||||
- MySQL/MariaDB: not available in the build environment; queries use the same
|
||||
portable layer (flag/sum casts, LIKE ... ESCAPE '!', LIMIT/OFFSET binds).
|
||||
Run scripts/api-smoke.py against a MySQL staging copy before going live.
|
||||
|
||||
Readiness conclusion:
|
||||
- READY FOR DEVELOPMENT TESTING with the SQLite mock.
|
||||
- READY FOR READ-ONLY production-schema testing through the guarded SSH tunnel.
|
||||
- NOT YET PRODUCTION-READY until the Rust compiler/test/clippy gate declared by Cargo.toml and the regression checklist in TESTING.md pass.
|
||||
|
||||
Developer gate on a machine with the Rust toolchain declared by Cargo.toml/rust-toolchain.toml:
|
||||
POSTFIXADMIN_RS_DEV_RESET=1 bash dev.sh
|
||||
|
||||
Read-only production DB test through SSH:
|
||||
POSTFIXADMIN_RS_DEV_DB_MODE=ssh bash dev.sh
|
||||
|
||||
Full release gate:
|
||||
./scripts/build-release.sh
|
||||
|
||||
Current iteration additions:
|
||||
- content-hashed SVG sprite (fixes stale cached theme icons): PASS (static)
|
||||
- domain-switch loading bar/spinner: PASS (JS/CSS static)
|
||||
- domain-scoped mailbox/alias API loading: PASS (static)
|
||||
- per-mailbox quota progress with PA 55/90 thresholds: PASS (static)
|
||||
- PA generate_password/show_password helpers: PASS (static)
|
||||
- PA MOTD and domain-list hide flags: PASS (static)
|
||||
- Docker Debian package builder syntax/static markers: PASS
|
||||
- Docker .deb build itself: NOT RUN (Docker is unavailable in this execution environment)
|
||||
|
||||
Current mailbox-user iteration:
|
||||
- user navigation hides administrative modules: PASS (static)
|
||||
- user Overview shows only own mailbox/self-alias/quota data: PASS (backend scope + static UI)
|
||||
- password page opens directly on the change-password form; no cookie/CSRF prose: PASS (static)
|
||||
- user Aliases domain is read-only: PASS (static UI + backend scope)
|
||||
- PostfixAdmin-compatible Vacation user form: PASS (static; requires features.vacation + existing mail-server vacation setup)
|
||||
- optional ManageSieve API/client/UI, no IMAP dependency: PASS (static)
|
||||
- ManageSieve login credential held only in in-memory mailbox session when enabled: PASS (static)
|
||||
- dev ManageSieve SSH tunnel defaults to READ-ONLY and has separate write opt-in: PASS (shell/static)
|
||||
- quota progress uses CSP-safe native <progress>, no inline style mutations: PASS (static)
|
||||
- Rust compiler gate: NOT RUN; the required toolchain is absent in this execution environment.
|
||||
|
||||
Compatibility regression checks:
|
||||
- mailbox/alias local-part-only create UX with read-only selected domain: PASS (static)
|
||||
- admin Vacation mailbox picker/editor: PASS (JS syntax/static)
|
||||
- Vacation alias transport synchronization: PASS (source review + unit-test markers; Rust test gate not runnable here)
|
||||
- mailbox-user alias field restriction in UI and backend: PASS (static)
|
||||
- technical alias separation: PASS (static)
|
||||
- Rspamd contextual filesystem errors + packaged permission helper: PASS (static + helper smoke test with isolated paths)
|
||||
|
||||
Domain alias UI regression checks:
|
||||
- domain workspace separates user aliases from technical/default aliases: PASS (static)
|
||||
- mailbox self-aliases are excluded from the domain alias sections: PASS (static)
|
||||
- alias tables retain PostfixAdmin-RS fields (address, destination, description, status, active, actions): PASS (static)
|
||||
- technical alias actions honor special_alias_control/global-admin permissions: PASS (static)
|
||||
- domain mailbox/alias sections use the full content width for readability: PASS (static)
|
||||
|
||||
Current corrections:
|
||||
- version-agnostic release validation (semantic package version + Cargo/toolchain consistency): PASS
|
||||
- MySQL/MariaDB TEXT/LONGTEXT fallback decoding in row_string(): PASS (static)
|
||||
- alias `goto` reads the real PostfixAdmin database value and uses the Blob fallback when required: PASS (static)
|
||||
- frontend accepts alias destinations as array or comma-separated text and renders an explicit dash only when empty: PASS (static)
|
||||
End-to-end:
|
||||
- scripts/api-smoke.py against PostgreSQL and SQLite: 0 failures
|
||||
- DKIM keys/signing, fetchmail, TOTP setup + TOTP login, TOTP exceptions,
|
||||
application passwords against PostgreSQL: PASS
|
||||
- Browser run (Chromium/Playwright) as global admin, domain admin and mailbox
|
||||
user, English and Polish, desktop and phone width: no JavaScript errors,
|
||||
no horizontal page overflow on phones.
|
||||
Reference in new issue
Block a user