Commit Graph
426 Commits
Author SHA1 Message Date
Samuel Onoja ed23949a95 style MPRIS bar border and background
Assign the result back to bar_style.border instead of mutating in place, and tint the media bar background with the palette border color.
2026-10-05 21:54:54 +01:00
Samuel Onoja 8a0dd7615e mpris and bar control impl
gitignore

fix import error
2026-10-05 16:12:24 +01:00
Samuel Onoja 73f21e20ce general improvement and bug fixes, cursor scaling, DMA-BUF routing and nested backend recovery
ignore performance-baseline.md

more improvement and code quality fixes
2026-10-04 18:33:05 +01:00
Samuel Onoja 405c74af9f fix compositor edge cases, process handing and other cool improvements 2026-10-04 17:11:40 +01:00
Samuel Onoja 5706a71941 Simplify compositor and shell conditionals
Flatten nested guards in swipe cleanup, recording updates and popup dismissal. Use an eager optional fallback for workspace layouts and an array in the malformed-opacity test.
2026-10-04 14:43:43 +01:00
Samuel Onoja 3ba1f3522d Release wallpaper pixel memory after image changes
Store decoded pixels and RGB conversion scratch in anonymous mappings so dropping an image releases its pages. Reclaim decoder scratch on the worker thread after each load.

Verify PNG, JPEG and WebP pixels against the existing decoder and cover decode limits and corrupt files. Add an isolated release memory regression for repeated 4K wallpaper loads.
2026-10-04 14:41:53 +01:00
Samuel Onoja 004a5cdefe Add island bar layout and Settings controls
Group workspaces with Overview and status controls with the clock. Keep themed backgrounds and borders around each island, with click-through gaps and configurable side padding defaulting to 4 px.

Capture blur within each panel region and update material and input regions when island bounds change. Cover layout reloads and padding changes with widget and native shell tests.
2026-10-04 14:18:03 +01:00
Samuel Onoja 90e5c3543d Avoid idle clock and screenshot polling
Update visible shell clocks at their displayed time boundaries and receive recorder state through events, with elapsed updates only while recording. Arm screenshot expiry at the earliest pending deadline and cancel abandoned requests when their IPC client disconnects.

Cache desktop clock formats across shell updates. Transfer owned screenshot readback pixels to the encoder and borrow the canvas for PNG encoding; both paths previously copied a full image. Close the recorder's stdout reader before waiting for its child when a status line is rejected.

Validation: 910 Rust tests passed in the release workspace suite, with 44 ignored. The six screenshot-script tests passed. A private nested release test passed with a visible desktop clock, notification and modal animations, and three real PNG captures. The recorder shutdown and readback ownership regressions failed before their fixes and pass afterwards.

The isolated clock settings check dropped from 30,000 allocations to zero over 10,000 rebuilds. Borrowing the PNG canvas removed 33,177,600 allocated bytes for a 3840x2160 capture while producing identical PNG bytes.

Direct DRM and laptop power checks remain pending.
2026-10-04 13:01:52 +01:00
Samuel Onoja 49e54f9a63 Fix Settings rendering, theme accents and wallpaper loading 2026-10-04 12:30:54 +01:00
Samuel Onoja 950ba723ab docs: restore screenshots to Why Ferese 2026-10-04 12:13:18 +01:00
Samuel Onoja 643fd5fef1 docs: explain why Ferese integrates the desktop 2026-10-04 12:10:26 +01:00
Samuel Onoja 4cdce60d62 Update desktop screenshots 2026-10-04 12:04:44 +01:00
Samuel Onoja 4dd425f1f1 Fix wallpaper upgrade compatibility and Settings icon clipping
Allow installed releases to omit the two newer appearance wallpapers while keeping new bundle verification strict. Fit the Settings header symbol within its square slot without clipping.

Verified 30 installer tests, the real upgrade dry-run, and release rendering previews on GPU and software backends.
2026-10-04 11:18:08 +01:00
Samuel Onoja 3533fac521 Update branding
Update the Ferese symbols, appearance-specific wallpapers, and rounded wallpaper and theme previews. Bundle Figtree and add the Ferese name to the website header.

Verified configuration, theme, Settings, wallpaper and installer tests, both UI renderers, the static site build, and browser layouts.
2026-10-04 11:11:14 +01:00
Samuel Onoja f81d8d50ea Group imported themes in a custom gallery 2026-10-04 09:39:53 +01:00
Samuel Onoja 5c321addec Inset panel highlights and align bar content 2026-10-04 09:18:18 +01:00
Samuel Onoja 831ac3a77f Derive theme gradients and add solid paint controls 2026-10-04 09:03:28 +01:00
Samuel Onoja 20395007a5 Use the orbit symbol in Settings and the shell 2026-10-04 08:25:28 +01:00
Samuel Onoja 3c40854077 add animation model doc 2026-10-04 08:23:05 +01:00
Samuel Onoja a2f5a7ffba Fix collective resize waits and fullscreen ownership 2026-10-04 08:16:03 +01:00
Samuel Onoja d5a829eb16 Decouple scrolling translation from resize readiness
Track configure-owned presentation dependencies so independent viewport translation can continue while clients resize. Preserve linked reflow waits, native snapshots, handoff deadlines and shared rendering/input coordinates.

Closes #10.
2026-10-04 08:05:44 +01:00
Samuel Onoja c1801e1f07 fix overview entrance animation 2026-10-04 07:53:34 +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 03a265b97f Add automatic idle inhibition for fullscreen playback and selected apps 2026-10-03 11:20:55 +01:00
Samuel Onoja 453ec16583 Protect selected windows from screen capture
Add capture privacy rules for windows, transient children, overview previews and client cursors, with separate capture rendering and deferred-frame invalidation. Keep detached close snapshots out of captures after clients leave the registry.

Validated with release workspace tests, private compositor/EGL regressions, and an isolated release PipeWire capture test.
2026-10-03 10:49:01 +01:00
Samuel Onoja bffd538dd4 Synchronize shell material presentation with surface commits
Queue popup, modal and notification material geometry and opacity until the matching content buffer commits. Remove event-handler opacity writes that could present material state ahead of content, while preserving compositor dismissal ownership.

Add pending-presentation regression coverage and update the nested shell lifecycle check.
2026-10-03 04:45:12 +01:00
Samuel Onoja e6e1a2a8cf Restore inactive workspace previews in overview 2026-10-03 04:43:26 +01:00
Samuel Onoja 1d7a472847 make button focus ring conditional on tab press 2026-10-03 04:29:06 +01:00
Samuel Onoja 64a80dc069 Unify window presentation and frame-driven shell motion
Share window geometry across overview, resize snapshots and retained closes. Advance close handoffs and group retained rendering by stacking position.

Drive shell motion from surface frames, reuse settled widget content, and synchronize notification materials with each card's fade. Replace physical config keys with duration and bounce, and update documentation and regression coverage.
2026-10-03 04:22:36 +01:00
Samuel Onoja f8bc17e913 Implement Continuum compositor and shell motion 2026-10-03 03:19:11 +01:00
Samuel Onoja 259f7e93b6 Document animation configuration and desktop comparisons 2026-10-03 01:01:44 +01:00
Samuel Onoja 934380d095 Remove component boundary script and dependent CI workflow 2026-10-03 00:14:09 +01:00
Samuel Onoja ee686507c5 Check component dependency boundaries in CI 2026-10-03 00:13:42 +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 8195b82073 Separate resolved theme values from configuration resolution 2026-10-02 23:57:02 +01:00
Samuel Onoja 4c3e884438 Pin theme snapshot defaults and offline preview behavior 2026-10-02 23:55:26 +01:00
Samuel Onoja c3acb5af5a Move shell configuration out of desktop core 2026-10-02 23:54:27 +01:00
Samuel Onoja f5de30d037 Publish output topology through a desktop reconciliation boundary 2026-10-02 23:46:08 +01:00
Samuel Onoja 647eaf4ad9 Reduce Settings page and config reload overhead
Mount nearby shortcut and theme rows, preserve gallery keyboard navigation, reset page scrolling, and reuse native themes during palette transitions. Prepare and deduplicate live config reloads on a worker and apply only changed runtime sections.

Align pointer focus and overview selection on overlapping outputs, add regression coverage, and clean up workspace Clippy warnings.
2026-10-02 23:10:01 +01:00
Samuel Onoja 629414e0fb Fix workspace preview cards intercepting pointer input 2026-10-02 22:59:38 +01:00
Samuel Onoja 4166c1ea29 Slow overview transitions to sixty percent speed 2026-10-02 18:47:18 +01:00
Samuel Onoja 3a79121308 fix installer killed process mask 2026-10-02 14:48:59 +01:00
Samuel Onoja 96f5ee442e Add display mode chooser and align screen-sharing styles
Open the four display modes from XF86Display or the external-monitor bar icon. Reuse output reconciliation and confirmation for manual layout changes, and notify the shell when monitor state changes.

Release backdrop locks before render-element queries to prevent blurred popups from freezing the compositor. Cover popup open, update and close with regression tests.

Share translucent card styles between display modes and capture sources, show focus rings during keyboard navigation, and align picker buttons, label sizing and footer spacing with system modals.
2026-10-02 13:25:39 +01:00
Samuel Onoja 5100d533fb Confirm pending locks after output reconciliation 2026-10-02 12:14:08 +01:00
Samuel Onoja d14cd3cbd2 Extend output profiles with monitor reconciliation and mirroring 2026-10-02 12:08:19 +01:00
Samuel Onoja ac184576f6 Document bundle installation and normalize release directory permissions 2026-10-02 10:20:52 +01:00
Samuel Onoja bfec60848d Use Rust 1.95 consistently throughout the workspace 2026-10-02 10:20:52 +01:00
Samuel Onoja 50c5f94007 Assign launcher permissions when preparing release bundles 2026-10-02 10:17:54 +01:00
Samuel Onoja f770147c6d Install verified release bundles with recoverable activation 2026-10-02 10:13:54 +01:00