Match both legacy and namespaced Hyprland events so flipping legacy_hyprland_event_names no longer freezes monitors/workspace/window. On event-socket connect, query socket1 and emit bread.hyprland.snapshot to populate RuntimeState (including workspaces). API 1.7.1. Track AGENTS.md instead of gitignored CLAUDE.md.
2.1 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. The state engine applies
both names (since v1.7.1), so disabling the legacy emit no longer freezes
bread.state monitors / active workspace / active window.
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.