Commits

f4c24c9a46c351100c42957365b06248c52de735
Switch branches/tags
All users
All time
March 2026
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

Commits on March 29, 2026

  1. mfwolffe committed
  2. detect monitor edge before BSP adjacency for cross-monitor nav
    both focus_direction and swap_direction now check if the focused
    window's edge touches the monitor boundary before consulting
    find_adjacent. prevents the BSP spiral from trapping navigation
    at the edge — if a window is flush with the right edge of the
    monitor, pressing right crosses to the next monitor instead of
    spiraling deeper into the BSP tree.
    mfwolffe committed

Commits on March 23, 2026

  1. revert all session changes to restore stable baseline
    reverts tarmac and ers to pre-session state (d422773 / 6acfaa6).
    all sprint 14/15 features (IPC enrichment, Lua callbacks, tray,
    settings window, floating window z-order changes) removed to
    restore stability. these features destabilized tiling layout,
    border rendering, and multi-monitor workspace management.
    mfwolffe committed
  2. revert floating window z-order changes to restore stability
    reverts all floating window level/ordering changes from the
    debugging session: K_CG_MODAL_WINDOW_LEVEL usage in state.rs,
    enforce_floating_if_needed polling, stripped activate_app paths,
    and ers layer filter changes. restores state.rs and ers to the
    last stable versions (post CI-fix, pre floating-window experiments).
    
    keeps: sprint 14/15 features (IPC enrichment, Lua callbacks, tray,
    settings window, config write-back), CI fix, ers click-through fix,
    ers binary path resolution, border.rs to_hex pub.
    mfwolffe committed
  3. restore activate_app for tiled FFM with floating, skip only AXRaise
    - keyboard input now follows mouse focus (activate_app routes input)
    - ers gets EVENT_FRONT_CHANGE for border color updates
    - AXRaise still skipped to prevent tiled window z-order change
    - enforce_floating_levels called immediately after activation and
      again after recording focus (double reassertion)
    - 50ms poll provides continuous third layer of enforcement
    - floating windows at level 8 + SLSOrderWindow should survive
      the async reordering from activate_app
    mfwolffe committed
  4. fix ers binary resolution and border level queries
    - tarmac now finds ers next to its own binary before falling back to
      PATH, ensuring cargo run uses the matching debug/release build
    - ers queries target window level via main connection (not per-border
      connection) for reliable cross-process level detection
    - border overlays placed at target_level + 1 offset
    mfwolffe committed
  5. force floating windows to front with SLSOrderWindow on every tick
    activate_app reorders windows asynchronously, overriding the CGS
    level we set. fix by:
    - adding SLSOrderWindow binding to force z-order after level set
    - enforce_floating_levels now calls order_window_front on every
      floating window, not just set_window_level
    - polling timer calls enforce_floating_if_needed every 50ms to
      counter async macOS reordering
    - lightweight guard skips enforcement when no floating windows exist
    mfwolffe committed
  6. keep floating windows above tiled windows during FFM focus
    when focusing a tiled window while floating windows exist on the
    workspace, skip AXRaise so the tiled window stays visually behind
    floating windows. activate_app is still called for keyboard input
    routing, but the visual z-order is preserved. floating windows get
    full activation (AXRaise + activate_app) as before.
    
    also expand enforce_floating_levels to cover all visible workspaces
    across monitors and active special/scratchpad workspaces.
    mfwolffe committed

Commits on March 22, 2026

  1. fix CI: add submodule checkout, scope lint/fmt to tarmac crates
    - add submodules: true to actions/checkout (fixes ers not found)
    - scope clippy to -p tarmac -p tarmacctl (avoids ers pre-existing warnings)
    - scope fmt check to tarmac + tarmacctl (ers has own formatting)
    - allow wrong_self_convention and too_many_arguments in CI clippy
    - cargo fmt all tarmac/tarmacctl source files
    mfwolffe committed
  2. mfwolffe committed
  3. mfwolffe committed
  4. persist settings changes to init.lua via regex write-back
    - update_lua_setting: regex-replace gar.set("key", ...) lines in config
    - preserves all comments, bindings, rules, and custom Lua code
    - all General tab controls write to config on change: gaps, bar height,
      border width/radius/colors, FFM, mouse-follows-focus, mod key
    - lua_number/lua_string helpers for formatting Lua literals
    - 3 unit tests for write-back (number, string, preservation)
    mfwolffe committed
  5. add tabbed settings window with keybindings, rules, about tabs
    - NSSegmentedControl tab bar: General, Keybindings, Rules, About
    - content view swaps on tab selection via SettingsHandler
    - Keybindings tab: scrollable monospaced text view of all bindings
    - Rules tab: scrollable text view of window rules (match -> action)
    - About tab: version, description, GitHub link, config path
    - populate keybinds/rules from LuaConfig in snapshot builder
    - enable NSSegmentedControl, NSScrollView, NSTextView features
    mfwolffe committed
  6. add settings window with General tab controls
    - NSWindow with sliders for gaps, bar height, border width/radius
    - NSColorWell for focused/unfocused border colors
    - NSButton checkboxes for FFM and mouse-follows-focus
    - NSPopUpButton dropdown for modifier key selection
    - SettingsHandler ObjC class dispatches control actions via mpsc
    - changes apply immediately (apply_layout + update_borders)
    - "Settings..." menu item in tray dropdown
    - value labels update in real-time as sliders move
    - enable NSSlider, NSSwitch, NSTextField, NSColorWell, NSPopUpButton
      features in objc2-app-kit
    mfwolffe committed
  7. add system tray with workspace menu and landing airplane icon
    - NSStatusItem with template image (airplane landing on runway)
    - button title shows active workspace ID
    - dropdown menu lists non-empty workspaces with window counts
    - checkmark on active workspace, click to switch
    - Reload Config and Quit actions in menu
    - TrayHandler ObjC class dispatches menu actions via mpsc channel
    - polling timer updates tray state and processes menu actions
    - enable NSStatusBar, NSMenu, NSMenuItem, NSImage in objc2-app-kit
    mfwolffe committed
  8. add rich Lua event callbacks for bar integration
    - fire_event_with_data: converts serde_json::Value to Lua tables for
      structured callback args (window_focused, window_created, window_closed,
      layout_changed, monitor_changed)
    - workspace_changed keeps (old, new) string args for sketchybar compat
    - json_to_lua recursive converter handles all JSON types
    - Lua data builders on WmState: window_focus_data, window_created_data,
      layout_changed_data, monitor_changed_data
    - all event sites (hotkeys, IPC commands, FFM, click-to-focus, window
      create/close) now fire both IPC publish and Lua callback
    mfwolffe committed
  9. enrich IPC event payloads for bar integration protocol
    - WorkspaceChanged: full workspace list with window counts and monitor assignments
    - WindowFocused: add title, app_bundle, workspace fields
    - WindowCreated: add title, app_bundle, workspace fields
    - WindowClosed: add app_name
    - MonitorChanged: add monitor_count, focused_workspace
    - LayoutChanged: add window_count, layout_type
    - Publish events from all code paths: FFM, click-to-focus, IPC commands,
      hotkey-driven swap/resize/equalize/toggle-float/move operations
    - Add workspace_snapshot, window_focused_event, workspace_changed_event,
      layout_changed_event builders to WmState
    - Add serde rename for consistent snake_case event names in JSON
    mfwolffe committed
  10. mfwolffe committed
  11. mfwolffe committed