1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! Public community website (ยง12.1, Phase 5 M5.4).
//!
//! Filesystem-backed static hosting at
//! [`crate::config::WebsiteConfig::root_dir`]. No template engine,
//! no opinions about site structure โ operators populate the
//! directory via `scp` / `rsync` / `git` or via the management API
//! shipping in M5.5.
//!
//! ## Deploy modes
//!
//! - **`live`** (default): files served as-is from `root_dir`.
//! Bundle deploys (M5.5) extract via a staging directory +
//! atomic rename to avoid partial reads under concurrent
//! serving.
//! - **`managed`**: `root_dir/gen-N/` directories with a
//! `root_dir/current` symlink. Bundle deploys extract to a fresh
//! generation; rollback flips the symlink. Older generations
//! beyond `managed_generations_keep` are pruned by the management
//! API.
//!
//! ## Path safety
//!
//! Everything in [`paths`] runs in front of the filesystem open.
//! Path safety failures surface as `WebsitePathRejected` /
//! `WebsiteBlockedExtension` from [`crate::error`] โ never bare
//! 404s โ so the audit trail records the rejection rationale.
pub use ;
pub use WebsiteRoot;