mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-29 04:28:20 -06:00
M3: a fresh install follows the desktop's appearance (#1248)
The theme preference defaults to System: dark on a dark desktop, light where the desktop says nothing. Saved settings and --theme still win. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
9526363152
commit
62c595ceba
@@ -343,6 +343,8 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md
|
||||
- **2026-10-15 (community, M14, Polish signature panel):** A Polish signature panel listed its details in English: the catalog lacked every signature wording, the changes after signing they name and 34 UI literals. All 101 are translated; `polish_covers_ui_literals` and `polish_says_what_a_signature_says` keep them so. Estimates unchanged.
|
||||
- **2026-10-14 (M14, Finnish localization):** Added Finnish as another interface and date language, with a 2,674-entry catalog covering every key of the other bundled catalogs and two-form plurals (partitive after numbers other than 1). Calendar dates use partitive month names (`14. lokakuuta 2026`). Coverage tests check commands/tools, scanned UI literals and bundled catalog keys. AI-assisted; native proofreading pending.
|
||||
- **2026-10-14 (M14, Catalan localization):** Added Catalan as another interface and date language, with a 2,592-entry clean-room catalog, one/other plurals and coverage tests for commands, tools, UI literals and every key in the other catalogs. A native Catalan speaker (the contributor) has reviewed the translation. Estimates unchanged.
|
||||
|
||||
- **2026-10-15 (M3, #1248):** A fresh install follows the desktop's appearance: the theme preference defaults to System (dark on a dark desktop, Light where the desktop says nothing); saved settings and `--theme` still win. Dark page rendering is Reading colours, and the page reading themes are #1732.
|
||||
- **2026-10-13 (M3, native-opening candidate):** Chosen tools survive preparation, conversion and password retries; startup intake waits for pending preparation. Regression tests cover completion, cancellation and document identity. Estimates unchanged.
|
||||
- **2026-10-13 (community, M3, #531 touchpad momentum):** On Wayland a two-finger swipe keeps gliding after the fingers lift and slows to a stop, measured from the gesture's last 0.1 s and decaying with a 0.35 s time constant through the #759 1:1 path. Any wheel input, click, key, zoom or edge ends it (fingers resting on the touchpad don't yet: the vendored winit binds no Wayland hold gestures); single-page paging, macOS (which sends its own momentum), the web, and Animation effects Off never glide. Unit tests for the physics and two headless view tests. Estimates unchanged.
|
||||
- **2026-10-13 (M3, native-open admission):** Later prepared replies stay queued while a modal or native picker owns the foreground. Picker completion, cancellation and abandonment wake retained opens. Regressions cover recipient ownership, exactly-once admission, source/history preservation and one-shot repaint requests. Estimates unchanged.
|
||||
|
||||
@@ -957,7 +957,8 @@ impl PdfCraftApp {
|
||||
full_screen_tool: None,
|
||||
comment_prefs: Default::default(),
|
||||
theme: ThemeKind::Light,
|
||||
theme_preference: ThemePreference::Light,
|
||||
// A fresh install follows the desktop's appearance (#1248); saved settings override.
|
||||
theme_preference: ThemePreference::System,
|
||||
reading_colors: Default::default(),
|
||||
#[cfg(target_os = "linux")]
|
||||
desktop_theme: None,
|
||||
|
||||
@@ -13,11 +13,12 @@ pub enum ThemeKind {
|
||||
Dark,
|
||||
}
|
||||
|
||||
/// The saved user choice, independent of the light/dark colours currently displayed.
|
||||
/// The saved user choice, independent of the light/dark colours currently displayed. A fresh
|
||||
/// install follows the system (#1248); a desktop that says nothing gets Light.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
|
||||
pub enum ThemePreference {
|
||||
System,
|
||||
#[default]
|
||||
System,
|
||||
Light,
|
||||
Dark,
|
||||
}
|
||||
|
||||
@@ -48,10 +48,31 @@ fn open_view_menu(h: &mut Harness<'static, PdfCraftApp>) {
|
||||
}
|
||||
}
|
||||
|
||||
/// A fresh install follows the desktop's appearance (#1248): dark on a dark desktop, light where
|
||||
/// the desktop says nothing; a saved choice still wins.
|
||||
#[test]
|
||||
fn a_fresh_install_follows_the_system_theme() {
|
||||
let h = harness();
|
||||
assert_theme(&h, ThemePreference::System, ThemeKind::Dark);
|
||||
let mut quiet = Harness::builder().with_size(egui::vec2(1200.0, 800.0)).build_eframe(|_cc| {
|
||||
let mut app = PdfCraftApp::new();
|
||||
app.set_option("language", "en").unwrap();
|
||||
app
|
||||
});
|
||||
quiet.run_steps(4);
|
||||
assert_theme(&quiet, ThemePreference::System, ThemeKind::Light);
|
||||
let mut app = PdfCraftApp::new();
|
||||
app.restore(r#"{"theme":"Light"}"#);
|
||||
assert_eq!(app.theme_preference, ThemePreference::Light, "a saved choice wins over the default");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn toolbar_and_view_menu_share_three_state_preferences() {
|
||||
let mut h = harness();
|
||||
// Explicit light wins even on a dark desktop, including egui's popup style.
|
||||
// Fresh, on a dark desktop: System, shown dark. One click on, explicit light wins even on a
|
||||
// dark desktop, including egui's popup style.
|
||||
assert_theme(&h, ThemePreference::System, ThemeKind::Dark);
|
||||
click_toolbar(&mut h, "Use system setting");
|
||||
assert_theme(&h, ThemePreference::Light, ThemeKind::Light);
|
||||
click_toolbar(&mut h, "Light gray");
|
||||
assert_theme(&h, ThemePreference::Dark, ThemeKind::Dark);
|
||||
|
||||
@@ -1670,8 +1670,8 @@ milestone = "M3"
|
||||
status = "shipped"
|
||||
commands = ["view.theme.system"]
|
||||
tools = []
|
||||
evidence = ["crates/ui-egui/tests/it/theme.rs::toolbar_and_view_menu_share_three_state_preferences", "crates/ui-egui/tests/it/theme.rs::saved_preferences_restore_with_legacy_light_dark_settings", "crates/ui-egui/tests/it/control.rs::theme_commands_and_options_report_preference_and_effective_colours"]
|
||||
notes = "Toolbar, Display theme and --theme system share a persisted System preference that follows OS changes without losing the selected mode; ui.state reports preference and resolved colours separately."
|
||||
evidence = ["crates/ui-egui/tests/it/theme.rs::a_fresh_install_follows_the_system_theme", "crates/ui-egui/tests/it/theme.rs::toolbar_and_view_menu_share_three_state_preferences", "crates/ui-egui/tests/it/theme.rs::saved_preferences_restore_with_legacy_light_dark_settings", "crates/ui-egui/tests/it/control.rs::theme_commands_and_options_report_preference_and_effective_colours"]
|
||||
notes = "Toolbar, Display theme and --theme system share a persisted System preference that follows OS changes without losing the selected mode; ui.state reports preference and resolved colours separately. System is the default on a fresh install (#1248), Light where the desktop says nothing; a saved choice wins."
|
||||
|
||||
[[feature]]
|
||||
id = "view.home-view"
|
||||
|
||||
Reference in New Issue
Block a user