normalize_hyprland() dual-emits each of its 10 flat event names (bread.workspace.changed, bread.monitor.connected, bread.window.opened, etc.) alongside a bread.hyprland.<rest> equivalent, so portable automation can subscribe to bread.hyprland.* and be guaranteed compositor-specific coverage without also matching genuinely cross-backend events like bread.power.*. The bread.hyprland.event fallback was already namespaced and is unaffected. Gated behind [compat] legacy_hyprland_event_names (default true during the deprecation window) so the old names keep firing until modules migrate; set to false to emit only the namespaced names. EventNormalizer::with_legacy_hyprland_event_names(bool) is a builder on top of the existing ::new(dedup_window_ms), threaded through from config in main.rs. Bumps API_VERSION to 1.5.0 (additive), updates Documentation.md's Hyprland event reference with Deprecated/Since markers and the new [compat] option, refreshes the README config example and the dock-workflow/git-branch-widget examples to the namespaced names, and adds DEPRECATIONS.md tracking the deferred full removal once the window closes.
1.9 KiB
Deprecations
Tracks API surface currently in its deprecation window per
Documentation.md's API Stability & Versioning
policy — marked Deprecated and still functioning, pending removal in a
future major version.
Hyprland legacy flat event names (since v1.5)
What's deprecated: the 10 pre-namespace Hyprland event names emitted by
normalize_hyprland() in breadd/src/core/normalizer.rs:
bread.workspace.changed,bread.workspace.created,bread.workspace.destroyedbread.monitor.connected,bread.monitor.disconnectedbread.window.focus.changed,bread.window.focused,bread.window.opened,bread.window.closed,bread.window.moved
Recommended form going forward: their bread.hyprland.<rest> equivalents
(e.g. bread.hyprland.workspace.changed), which make explicit that these
events are Hyprland-specific rather than portable across a future second
compositor backend — see Documentation.md's
Hyprland event reference for the full mapping.
Current behavior: both names fire by default ([compat] legacy_hyprland_event_names = true). Setting that flag to false suppresses
the legacy names; only bread.hyprland.* fires.
Deferred follow-up (not yet scheduled):
- Flip
[compat] legacy_hyprland_event_names's default tofalsein a later minor release, once downstream modules have had a full deprecation window to migrate. - Remove the legacy flat names and the
[compat]flag entirely in the next major version (v2) — at that pointnormalize_hyprland()only ever producesbread.hyprland.*names and the dual-emit machinery (emit_hyprland_dualinnormalizer.rs) can be deleted.
Neither step is scheduled yet; this file exists so the removal isn't forgotten once the window closes. No issue tracker is wired up to this repo, so this note is the tracking mechanism until one exists.