BlueGit

golden-age paperdoll-renderer

design: desktop notification when a render finishes unfocused (Tim t1025u)

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 6 days ago

Hash
b88c1641b3e4f7d96fbfda329e0694f2c0312994
Parent
cb4e0071
Pipeline
Obsolete
1 file changed +4 −0
design.md +4 −0
@@ -565,3 +565,7 @@ The removed hair becomes a bundled equipment preset `female-hair` (`.ppe`, femal
565 565 ## Decision 2026-11-07 (Tim t1022u): new-project defaults and pre-fitted framing
566 566
567 567 New projects default to target 92 × 128 pixels at 8 fps (depth stays 8-bit `gray`). Existing `.ppd` files keep their stored values (width, height and fps are required fields, so the default never rewrites them). A **Nieuw project** with the bundled default bodies already has **Fit animations** applied for both sexes when it is created: the same one-shot envelope as the button (all clips × frames at the project fps × 60 views, 5% margin, project aspect, pivot unchanged), computed from the copied bodies and stored as each sex's `height_milli`/`center_y_milli`. It is computed at creation (not shipped as constants) so it always matches the bundled assets and defaults; afterwards the frame is fixed as before.
568
569 ## Decision 2026-11-07 (Tim t1025u): desktop notification when a render finishes unfocused
570
571 When a single render or **Render Alles** reaches its end (done, failed or cancelled) while the app window does not have focus, the app shows one desktop notification: title "Paperdoll Renderer", a one-line summary (saved batch / Render Alles counts / error). Nothing is shown when the window is focused, and only one toast per run (one for the whole Render Alles queue, not per item). Linux/BSD use freedesktop notifications via `notify-rust` (D-Bus, pure Rust `zbus` backend), with application name "Paperdoll Renderer", icon name and `desktop-entry` hint equal to the app id `paperdoll-renderer`, so the desktop shows the installed icon. Windows uses a toast via the same crate (WinRT backend). A failure to deliver (no notification daemon) is ignored and never affects the render. The decision whether and what to notify is a pure function, unit-tested; delivery runs on a short-lived thread so the UI never blocks.
@@ -565,3 +565,7 @@ The removed hair becomes a bundled equipment preset `female-hair` (`.ppe`, femal
565## Decision 2026-11-07 (Tim t1022u): new-project defaults and pre-fitted framing
565## Decision 2026-11-07 (Tim t1022u): new-project defaults and pre-fitted framing
566
566
567New projects default to target 92 × 128 pixels at 8 fps (depth stays 8-bit `gray`). Existing `.ppd` files keep their stored values (width, height and fps are required fields, so the default never rewrites them). A **Nieuw project** with the bundled default bodies already has **Fit animations** applied for both sexes when it is created: the same one-shot envelope as the button (all clips × frames at the project fps × 60 views, 5% margin, project aspect, pivot unchanged), computed from the copied bodies and stored as each sex's `height_milli`/`center_y_milli`. It is computed at creation (not shipped as constants) so it always matches the bundled assets and defaults; afterwards the frame is fixed as before.
567New projects default to target 92 × 128 pixels at 8 fps (depth stays 8-bit `gray`). Existing `.ppd` files keep their stored values (width, height and fps are required fields, so the default never rewrites them). A **Nieuw project** with the bundled default bodies already has **Fit animations** applied for both sexes when it is created: the same one-shot envelope as the button (all clips × frames at the project fps × 60 views, 5% margin, project aspect, pivot unchanged), computed from the copied bodies and stored as each sex's `height_milli`/`center_y_milli`. It is computed at creation (not shipped as constants) so it always matches the bundled assets and defaults; afterwards the frame is fixed as before.
568
569## Decision 2026-11-07 (Tim t1025u): desktop notification when a render finishes unfocused
570
571When a single render or **Render Alles** reaches its end (done, failed or cancelled) while the app window does not have focus, the app shows one desktop notification: title "Paperdoll Renderer", a one-line summary (saved batch / Render Alles counts / error). Nothing is shown when the window is focused, and only one toast per run (one for the whole Render Alles queue, not per item). Linux/BSD use freedesktop notifications via `notify-rust` (D-Bus, pure Rust `zbus` backend), with application name "Paperdoll Renderer", icon name and `desktop-entry` hint equal to the app id `paperdoll-renderer`, so the desktop shows the installed icon. Windows uses a toast via the same crate (WinRT backend). A failure to deliver (no notification daemon) is ignored and never affects the render. The decision whether and what to notify is a pure function, unit-tested; delivery runs on a short-lived thread so the UI never blocks.