Commit Graph
22 Commits
Author SHA1 Message Date
Samuel Onoja e22f0ebef9 Add panel-wide styles and the Morph hub (#26)
Panel appearance now applies to the whole panel, with seven styles: Floating, Capsules, Notch, Edge to edge, Fused islands, Adaptive and Morph.

- Share composition, geometry, and motion through the renderer-independent `ferese-panel` crate, including native materials, input regions, and Settings previews.
- Add the Morph hub with media, calendar, notifications, controls, workspace previews, hover feedback, and attached mode. Keep recording and low-battery status visible and respect window clearance.
- Cache workspace preview geometry, draw thumbnails directly, centralize Morph transitions, and keep rendering settings local to each shell instance.
- Put Record Screen in the Morph header and show the display control only when an external monitor is connected. Update panel documentation, the desktop screenshot, and native check style names.

Local validation included 660 compositor tests, 191 shell tests, isolated preview-cache checks, GPU Morph captures at 1×/1.25×/1.5×, formatting, and Clippy with warnings denied. The final header change passed all 23 Morph tests. Release workflow jobs are skipped for this PR.
2026-10-12 01:31:34 +01:00
Samuel Onoja 91e2f227d2 Fix config upgrade failures, save races, lock confirmation and release validation (#23)
* Coordinate config writes and gate releases on desktop validation

* Use toolkit rc.2 with painting and session lock fixes

* Ignore retired desktop widget settings in existing configs
2026-10-11 12:15:28 +01:00
Samuel Onoja d4c8c10b39 Replace Ferese logos with shared Fe mark 2026-10-07 12:50:05 +01:00
Samuel Onoja cfdd2a148a Fix lock-screen input and wallpaper handling 2026-10-07 07:19:06 +01:00
Samuel Onoja 831ac3a77f Derive theme gradients and add solid paint controls 2026-10-04 09:03:28 +01:00
Samuel Onoja d75c93db85 Match shell squircle outlines with compositor masks
Use shared corner geometry for shell controls, window clipping, materials and blur masks. Preserve circular pills and controls where appropriate, track contour changes in damage, and use tagged ferese-shape and libcosmic dependencies.
2026-10-04 07:39:54 +01:00
Samuel Onoja cc0bddbec1 Separate theme rendering from client subscriptions and materials 2026-10-03 00:12:59 +01:00
Samuel Onoja ccf7497b6f Publish theme snapshots through IPC from explicit live state 2026-10-03 00:05:29 +01:00
Samuel Onoja bfec60848d Use Rust 1.95 consistently throughout the workspace 2026-10-02 10:20:52 +01:00
Samuel Onoja b45917c41d Harden lock UI inputs and decoding and reduce idle clock updates 2026-10-02 08:51:35 +01:00
Samuel Onoja bdc3ba435f fix clippy warnings 2026-10-01 13:24:21 +01:00
Samuel Onoja 7a9fd5c864 Respect motion settings and improve accessible theme transitions 2026-10-01 11:54:57 +01:00
Samuel Onoja 4137f787bf styling fix and clippy fixes 2026-10-01 08:59:00 +01:00
Samuel Onoja e05aa31ce3 Decode portal wallpapers by content and simplify status bar
Detect wallpaper image formats from their contents so extensionless portal copies render on the desktop and lock screen. Preserve decode limits and cover extensionless files with regression tests.

Remove the Bluetooth icon from the status bar.
2026-09-30 14:56:43 +01:00
Samuel Onoja 3d950a0411 Add resolved appearance engine and paired theme settings
Resolve light, dark and automatic appearance centrally and publish live theme snapshots to native surfaces and the appearance portal. Add paired preset families, custom theme imports, accessibility transforms and contrast-safe transitions.

Refine the Settings gallery and Auto controls, move overrides under advanced customization, and share palette-aware switches and circular slider thumbs. Document configuration and include theme licenses and integration coverage.
2026-09-30 12:51:49 +01:00
Samuel Onoja 46509f880a Fix compositor output routing and pointer hints; format imports 2026-09-30 06:39:58 +01:00
Samuel Onoja 35537b32c8 Dim and sleep locked displays after inactivity
Add adjustable lock-only inactivity delays, a smooth dimming fade and DRM display sleep without changing output layout. Input, session resume and policy changes wake displays. Pending flips retire before power-off, and protected fallback frames preserve the policy after an early locker crash while unlock ownership checks remain strict.

Reduce the password field and avatar, expose delays in Settings, document the practical swaylock comparison and remove the completed backlog.

Validation: independent review cleared; 255 compositor tests, 7 locker tests and 15 Settings tests pass; affected debug binaries rebuilt. Isolated visual smoke remains blocked by an unlocked nested screenshot timeout, matching the previously established baseline presentation limitation. Real DRM display sleep requires a live session check.
2026-09-30 05:10:04 +01:00
Samuel Onoja 915bc8afd6 Add native appearance, screenshot and wallpaper portals 2026-09-29 22:42:27 +01:00
Samuel Onoja b2363a18b0 Share native theme components and fix dialog backdrop blur
Centralize native palettes, presets, typography, controls, menus, calendar rendering, and icon assets in ferese-theme. Reuse the shared components across the shell, settings, lock screen, authentication prompt, and screen-sharing chooser.

Attach themed dialogs to compositor-owned materials, correct backdrop capture and sampling across output transforms, smooth patterned backgrounds, and prevent clipped picker buttons with the configured shell font.
2026-09-29 21:19:19 +01:00
Samuel Onoja 67192c0c04 Speed up per-frame layout, hit testing, and stacking paths
Split ScrollingLayout validation so the per-frame geometry solve only
checks scalars and keeps the full tree validation behind debug_assert,
removing a HashSet build from every frame. Replace the per-region Vec
in decode_regions with a stack array via as_chunks, and skip the window
hit test in PointerMotion when Overview is not presenting, where
visual_scale_for_window returns 1.0 regardless.

Guard sync_window_stacking behind a check that the space already matches
the target order with uniform z_index, avoiding an O(n^2) raise_element
loop on every redraw. Narrow window_under_visual to the space iterator
outside Overview, keeping the collected and sorted candidate list for
the Overview branch where front-to-back order is load-bearing.

Raise rust-version to 1.98 and clear the resulting Clippy findings
across the workspace: let-chain collapses, clamp, and while-let loops.
2026-09-29 09:49:04 +01:00
Samuel Onoja 24e15f76cb Centralize accent foreground contrast across Ferese UI 2026-09-28 08:58:51 +01:00
Samuel Onoja f8b8704f8b Add native themed session locker and Settings integration 2026-09-27 12:15:55 +01:00