Repeated panel updates rebuilt unchanged controls and SVG artwork, cloned composition data, and kept unused workspace icon resources. This reuses controls when their layout stays the same, bounds the SVG cache, removes temporary layout allocations, and releases icon resources when apps close or the workspace style changes.
Rapidly closing a modal could also leave a native surface behind when its asynchronous creation finished after the close. Late openings now get destroyed when their owner is gone. Ferese uses the published `ferese-v0.1.2` Iced/libcosmic fixes so a temporary software buffer/viewport size mismatch retries the frame instead of crashing.
Two runs per version of the same workspace/overview/reload workload measured **26% fewer allocated bytes and 23% fewer allocation calls**. A separate 1,800-cycle notification/modal stress run retained about **40 MiB less shell memory**, including shared-buffer retention falling from 28.2 MiB to 272 KiB. These are measured workload results, not an overall desktop speedup claim.
Validation:
- 1,350 workspace tests passed, including GPU Settings text rendering (50 optional tests ignored); formatting and Clippy passed.
- Native continuous/island panel tests passed rapid notification resizing, modal cancellation, and live material/input-region changes.
- A Wayland lifetime trace confirmed all 280 created modal surfaces were destroyed; longer DHAT traces and Intel GPU memory measurements were checked separately.
- All installation binaries rebuilt and the installation bundle passed inventory and checksum verification.
* Integrate panel composition, adaptive sizing, and overflow
* Add instance editing controls to panel settings
* Add panel group editing and measured composition preview
* Reorganize panel settings and add drag-and-drop item editing
* Simplify panel settings and place inspectors beside the editor
* Refine Panel & Shell settings, previews, and panel rendering
* Organize settings navigation and modernize packaged panel config
* Support top and bottom panels and refine shell surfaces
Add edge-aware settings, previews, popup placement, notifications, margins, and corner rendering. Preserve translucency in notification and dialog controls, and tighten spacing around the clock and display-mode icon.
* Add workspace styles and fix Settings text rendering
* Make panel allocation independent of measurement order
* Normalize panel item settings and visibility
* Move shell geometry into each panel
* Add independent group surfaces and finalize panel configuration
* Keep panel fit checks and restoration consistent with allocation
* Reject unknown panel item options and namespace metadata
* Reject invalid shell startup configuration and remove old radius fields
* Discover workspace application icons in a background task
* Remove the panel architecture document and improve reference prose
* Let panel media fill available space and improve Settings scrolling
* Preserve panel labels across clipped GPU rendering
* Use matching alpine lake wallpapers for light and dark modes
* Fix panel accessibility and popup lifecycle
Apply Reduce Transparency to panel opacity in the shell, compositor, and
Settings preview. Reject unknown theme tokens before snapshot substitution
and validate the current geometry fields in both consumers.
Dismiss popovers and workspace tooltips after panel layout changes. Handle
bar pointer exits directly and recover workspace hover after reentry without
repeated motion updates. Cover the transitions with regression tests and
update the wallpaper dimensions check for the bundled lake defaults.
* Use tagged Ferese toolkit fixes
* Fix center-only panel spacing and headless text rendering
* Bundle native 4K abstract wallpapers for both appearances
* Dismiss workspace tooltips before captured pointer dispatch
* Verify installed JPEG wallpapers when replacing a release
Retain window IDs, urgency and floating state in shell snapshots. Decode known flags from raw bitfields so future bits do not erase existing state.
Add exact-ID activation, close and overview selection helpers, with snapshot and wire-level regression coverage.
Bound IPC transport deadlines while preserving portal leases, supervise desktop helper and agent recovery, and reserve final floating window geometry during placement.
Stabilize CLI output and isolated tests, expand workspace CI, resolve formatting and lint failures, and bundle the MIT license with installer compatibility.
* save dev state
* fix xwayland-satellite supervisor lifecycle, readiness and cleanup
* remove wayland scanner protocol generated files
* default xwayland enabled with path
* remove jargons
* address x11 review: park unconfirmed cleanup, never signal a reaped group, fix storm test and notify dir mode
* fix resize tests: never build Size values from negative dimensions
* add min-width/min-height window rules that replace client minimum sizes
* rename effective_size_constraints to effective_minimum_size and minor cleanups
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Cancel callback-only timers when a frame is submitted and defer callback delivery until retirement. Cover a delayed timer and missed presentation deadline in the scheduler tests.
Clean up shader argument borrows and shell region decoding to pass Clippy.