Add configurable mouse and wheel bindings, window move and resize, tab drops, cross-output dragging, and device settings. Adjust display scaling in 0.05 increments.
Preserve opposite-edge positioning during scrolling resizes and show rows for edge drops into tabbed columns.
Add workspace selection to the screen-sharing picker with pinned capture, privacy filtering and bounded capture resources. Refresh captured tab labels when title or app-ID metadata changes.
Request modest negative nice priority through RTKit off the event loop. Set reset-on-fork before requesting priority so workers and launched clients retain normal scheduling. Respect explicit scheduling choices and continue when priority cannot be confirmed.
Include observed timer dispatch delay in the render budget, capped at one refresh and decayed by elapsed time. Preserve the scheduled presentation target and output-local state. Existing scheduling assertions remain intact; a negative control verifies the new deadline regression.
Use persistent privacy-filtered capture targets and client-owned GPU buffers with fence completion, backpressure, negotiated frame rates and shared-memory fallback.
Invalidate output views on scene changes while preserving inactive-window callbacks and capture revocation. Include OBS memory-mask negotiation and native pixel, transport and recording regressions.
Verify outside contacts and additional fingers cannot reach the underlying window, and that up/cancel restore normal input. Covers the existing fix for #43.
Carry output identity through floating placement and restore, and retain the owning output when saved geometry overlaps multiple monitors equally.
Fixes#59.
Run descriptor-count assertions in private processes so concurrent display and process-monitor tests cannot change their baseline. Keep the existing leak, timing and socket-recovery assertions unchanged.
Pin 8a270232f1bfc416c781273c98a3f52a812a0bba and adapt protocol dispatch, input timestamps, configure state and rendering APIs. Preserve custom lock and toplevel validation, compositor-owned key repeats, and valid layer remapping sequences.
Add native icon-buffer lifecycle regressions for the GoLand and Spotify launch failure.
Remember and consume the opening interaction instead of depending on pointer focus. Revoke pending focus after another interaction, focus change, cancellation or unmapping, and retain lock and grab safeguards.
Fixes#54
Clear the old exception when a dialog is unparented or reparented, and remove child references when a parent is destroyed. Preserve floating placement while rebuilding the stacking order.
Fixes#55
Add configurable work and break intervals, pause/resume, CLI and activity-popup controls, and silent completion alerts. Use CLOCK_BOOTTIME deadlines so running timers include suspend without consuming paused time.
Refs #31
Add configurable night light, smooth gamma transitions, and shell controls. Update documentation and panel tests, and fix portal test startup synchronization.
Add named keyboard shortcut maps with an Escape exit and a panel indicator. Keep press/release ownership across transitions, validate remapped Escape keys, and cancel stale repeats and focus previews.
Give the indicator ownership of the panel while a mode is active. Close popovers, collapse Morph, and keep Live Activities data current without resizing the hidden panel. Document configuration and transition behavior.
Validation: 1,519 workspace Rust tests passed; 70 Python tests passed. Workspace build, formatting, Clippy, and Settings configuration validation passed. Opt-in native desktop checks were not rerun because Weston is absent.
Related: #5.
* Add Live Activities as configurable bar items
* Fix activity owner monitoring and Morph list interactions
* Keep activity rows stable during updates and tighten their layout
* Use subtle theme tint for activity cards
* Tighten activity title and progress spacing
* Use theme accent for active progress rings
* Fit compact activities to measured titles and badge
* Expose Live Activities display controls in Settings
* Open activity terminals and streamline the Morph header
* Give Morph continuous icons and prioritize workspace navigation
* Show activity progress inside its ring
* Inset activity progress rings and strengthen their stroke
* Fix activity lifecycle, command output handling and list navigation
* Reduce activity update work and harden publisher lifetimes
* Set up Live Activities for the detected user shell during installation
* Document Activities setup, daily use and troubleshooting
* Preserve Morph idle width across empty activity updates
* Fix dimming flicker, hide inactive music tab and consolidate Activities docs
* Fix panel clearance across styles and match previews to theme settings
* Prevent panel blur from repainting neighboring islands
---------
Co-authored-by: Samuel Onoja <[email protected]>
Invalid configuration currently prevents login. Ferese now starts with built-in defaults and shows a notification when the shell is ready, leaving the file untouched. Loading and validation belong to the config module, while the theme module resolves appearance. Validation remains strict, and failed live reloads keep the active settings.
The native Morph regression checks the animated input region and idle frame scheduling while its backing surface stays allocated.
Validation: workspace and Python tests, formatting, Clippy, release build, and isolated Wayland startup/reload and panel-motion tests. Native CI includes the startup regression.
Related: #28.