Releases: warpcli/hexe
Releases · warpcli/hexe
0.0.14
0.0.12
🐛 Bug Fixes
- Stabilize terminal query routing for float panes
- Route CSI query replies back to panes
- Improve terminal query handling and OSC parsing
- Restore terminal key forwarding in mux
- Add minimal CPR query handling for pane apps
- Harvest pending OSC query targets before stdin routing
- Reliably route OSC color query replies per pane
0.0.11
0.0.10
0.0.9
0.0.8
0.0.6
⛰️ Features
- Map virtual kitty placements with clip offsets
- Prefer unicode width method with explicit-width support
- Render pinned kitty graphics placements
- Bridge kitty image placements into vaxis cells
- Reset mouse shape on mux teardown
- Map OSC8 hyperlinks into vaxis cell links
- Reset mouse shape on mouse-leave events
- Add vaxis-backed clipboard copy action
- Add vaxis-backed system notification action
- Add vaxis-backed system clipboard request action
- Handle in-band winsize and color-scheme updates
- Use vaxis OSC52 clipboard for mux selections
- Integrate vaxis mouse shape transitions
- Add terminal capability diagnostics action
- Apply capability-gated terminal feature modes
- Wire vaxis terminal capability detection cycle
- Parse key events through vaxis parser
- Start vaxis parser integration for input events
- Replace renderer output with libvaxis render engine
- Add ghostty-to-vaxis cell bridge (vt_bridge.zig)
🐛 Bug Fixes
- Always reset in-band resize mode on exit
- Detect kitty image content changes by hash
- Preserve grapheme text and links across wide cells
- Free cached kitty images on pane teardown
- Hide kitty graphics placeholder glyphs
- Queue OSC query replies per pane
- Forward bracketed paste boundary sequences
- Harden bracketed paste handling across modal paths
- Forward bracketed paste payloads to focused pane
- Keep terminal caps notification message owned
- Expose terminal caps action in Lua API
- Consume unmapped parser events in input dispatch
- Consume parser release/report events before forwarding
- Swallow mid-stream terminal probe replies
- Clamp float and segment numeric fields from lua
- Encode enter and control keys via ghostty mapping
- Parse spinner options in mux add_segment API
- Swallow title clicks during float rename mode
- Unify float title geometry for draw and hit-test
- Sanitize float labels and unstick spinner fallback
- Strip ansi escape payloads from float labels
- Preserve shifted parser text in pane forwarding
- Forward parser text codepoints for char keys
- Filter terminal probe replies from pane input
- Restore float label fallback and generic spinner modules
- Strengthen spinner output and float title rendering
- Restore float exit key, spinner fallback, and title clipping
- Restore float binds, spinner fallback, and tab display mapping
- Swallow modifier-only kitty key transport events
- Swallow parser control sequences before pane forwarding
- Filter terminal capability reply noise on startup
- Enable kitty key timing only after release observed
- Add ctrl-alt fallback for parser key events
- Request full kitty keyboard reporting flags
- Gate parser keybind mode on kitty capability
- Normalize vaxis key events for bind matching
- Restore legacy key dispatch for keybind compatibility
- Restore legacy sgr mouse parser semantics
- Restore legacy mouse mode for float interactions
- Make float title editor unicode-aware
- Make overlay text rendering unicode-aware
- Render popup text with unicode-aware widths
- Preserve utf-8 literals in status formats
- Render float border titles with unicode width
- Use unicode width for statusbar layout and draw
- Add frame arena for non-ASCII grapheme encoding in vaxis bridge
🚜 Refactor
- Unify terminal resize handling for winsize events
- Track and log detected terminal capabilities
- Add deterministic terminal capability query lifecycle
- Remove OSC compatibility interception path
- Forward OSC queries to terminal without synthetic replies
- Remove pane-side CSI/DCS query emulation
- Simplify parser-only input and feature setup
- Move terminal mode setup fully to vaxis
- Remove remaining raw input fallbacks
- Simplify raw keycast fallback parser
- Prefer parser events for keycast formatting
- Unify raw query-reply stripping helpers
- Return first parsed non-query event directly
- Cache first parsed event after query stripping
- Extract parser-driven input subloops
- Fold parser flag updates into event dispatch
- Reuse first parsed event in input loop
- Prefer parser events for query-reply stripping
- Drop unused key event consumed metadata
- Unify parser-driven pane select and popup dispatch
- Split key event state machine handlers
- Extract popup and rename handlers from input loop
- Clarify osc copy terminator comment
- Reuse parser head helper in input loop
- Remove dead loop input imports
- Avoid reparsing encoded key forwarding bytes
- Simplify blocked popup helper signature
- Thread parsed events into pane forwarding
- Simplify parser-event popup blocking helpers
- Remove debug trace logging from api bridge
- Remove raw-byte float exit key matching
- Remove raw popup byte parser path
- Require parsed events for blocked popup handling
- Remove compatibility key mode and always use full events
- Rename key event mode away from legacy wording
- Route mux popup blocking through parsed event helper
- Replace legacy key encoding with ghostty encoder
- Extract unified parsed event dispatcher
- Centralize parsed non-key event consumption
- Centralize parsed key dispatch in input loop
- Simplify tab popup parsed-event gating
- Unify focused pane popup and forwarding path
- Avoid reparsing popup bytes when event already parsed
- Reuse parser events across blocked popup handlers
- Reuse parsed events for pane popup input
- Reuse parsed popup events in tab popup mode
- Handle mouse input directly as vaxis events
- Simplify parser mouse event conversion
- Dispatch mux input from single parser pass
- Remove obsolete scroll parse wrapper
- Derive scroll actions from parsed vaxis events
- Expose vaxis event helpers for key and scroll
- Remove pooled surface layer from borders
- Trim unused vaxis surface helpers
- Draw split borders directly on renderer
- Move surface threadlocal cleanup into main
- Print statusbar text directly with vaxis window
- Remove remaining float title draw shim
- Drop draw shim in borders and statusbar clear
- Remove popup vaxis draw shim usage
- Move popup overlay and notifications to direct vaxis draws
- Draw statusbar text directly on vaxis row
- Route parser transport and mouse handling through loop input
- Inline frame and pane render orchestration
- Parse mux input in single vaxis pass
- Route parser transport and mouse handling through loop input
- Inline frame and pane render orchestration
- Remove vaxis surface shims and fix parser text forwarding
- Remove vaxis color adapter and use core style colors
- Remove remaining render type bridges and style adapters
- Drop unused style-color conversion in render types
- Remove legacy render Cell compatibility types
- Remove render cell bridge and legacy setCell API
- Route remaining ui primitives through vaxis cell writes
- Render sprite overlay using vaxis cells
- Operate overlay and selection on vaxis cells
- Blit vaxis cells directly into renderer
- Remove CellBuffer path and render directly with vaxis
- Remove render facade module and stale references
- Remove render facade imports across mux modules
- Migrate ui modules to shared render color type
- Hide direct next-buffer access behind renderer api
- Turn render module into facade
- Decouple style and cell helpers from render module
- Extract vaxis frame lifecycle helpers
- Extract render-state blit from renderer core
- Extract render cell and buffer types
- Extract render-to-vaxis bridge helpers
- Split sprite rendering out of render core
- Add core style conversions for vaxis
- Remove legacy pane-input sanitization layer
- Handle ctrl-q quit through parser key path
- Use parser key events for tab-popup tab switching
- Parse popup keys through vaxis parser
- Remove legacy escape-sequence key compatibility path
- Decode mouse events through vaxis parser
- Route statusbar text through pooled vaxis window
- Share render-to-shp style conversion helpers
- Pool temporary vaxis surfaces across modules
- Add shared unicode screen initialization helper
- Share temporary vaxis screen blit helpers
- Centralize grapheme width clipping helper
- Dedupe vaxis cell conversion helpers
- Route split border cells through vaxis window
- Switch mux mouse mode setup to vaxis api
- Render floating border frame via vaxis
- Draw popup frames using vaxis window borders
- Preserve colors in overlay dim effect
- Render notifications via vaxis print
- Render statusbar text via vaxis print
- Remove legacy csi-u input module
- Route paste and mouse parsing through vaxis
- Use vaxis helpers for terminal mode setup
- Remove winpulse feature entirely
📚 Documentation
- Update keybinding documentation
- Update and expand documentation for Hexa
⚙️ Miscellaneous Tasks
- Refactor release workflow to use dedicated jobs
- Remove stale input migration comment
Build
- Require libvaxis and drop caps diagnostics action
- Add libvaxis dependency to mux module
0.0.3
⛰️ Features
- Enhance Lua API for extended configuration
- Implement 'when' condition parsing for keybindings
- Implement new config setup and keymap API
- Use ConfigBuilder for module config
- Wire popup/overlay APIs to Lua hexe.pop module
- Add notification/dialog/widget parsing and C API functions
- Wire prompt APIs to Lua hexe.shp.prompt module
- Add segment parsing helpers and prompt C API functions
- Wire SES C API functions to Lua module
- Implement hexe.ses.session.setup() C API
- Implement hexe.ses.layout.define() C API
- Add recursive layout parsing helpers for panes and splits
- Wire all MUX C API functions to Lua module
- Implement tabs.add_segment, tabs.set_status, splits.setup C APIs
- Implement hexe.mux.float.define() C API
- Implement hexe.mux.float.set_defaults() C API
- Implement hexe.mux.keymap.set() C API
- Add action parsing helpers for simple and parametric actions
- Add key parsing helpers for unified key format
- Implement hexe.mux.config.setup() C API
- Implement hexe.mux.config.set() C API
- Inject hexe.mux/ses/shp/pop/autocmd/api/plugin module structure
- Integrate ConfigBuilder into LuaRuntime
- Add api_bridge skeleton with builder registry helpers
- Add PopConfigBuilder with notification/dialog/widgets config
- Add ShpConfigBuilder with left/right segments
- Add SesConfigBuilder with layouts list
- Add MuxConfigBuilder with full field set
- Add ConfigBuilder skeleton with section builders
- Enable
config validateandses exportcommands - Introduce config validation, SES stats, and resource limits
- Implement session recovery and robust reattach
- Optimize wide character rendering
- Render non-space characters in tmux cells
- Improve CSI-u handling and scrollback
- Introduce widgets module for interactive overlays
- Implement Winpulse animation for focused panes
- Introduce support for Pokemon sprites
- Pokemon sprites
- Remove blocking read for backlog replay
- Implement layout saving and loading
- Support floating panes within a session
- Enhance keybinds with modes and improve float handling
- Enhance float pane usability and input experience
- Refactor mux input handling and IPC
- Refactor keybinding timing and introduce robust tap/repeat logic
- Improve session management and reattach reliability
- Improve cursor handling and CWD resolution
- Enhance float navigation and CWD handling
- Improve time segment and mux focus navigation
- Enhance keybind configuration and behavior
- Implement configurable exit key for floating panes
- Improve keybind handling with tap/hold and deferral
- Refactor keybind handling for Kitty keyboard protocol
- Support default float attributes
- Add float sizing, positioning, and focus mode
- Add
ses killandses clearcommands - Add
envandenv_notconditions - Add pod_name segment
- Improve float handling and layout updates
- Allow local config files and new keybind actions
- Implement local .hexe.lua config merging
- Customize mouse selection color
- Implement session layouts and float definitions
- Enhance mouse click behavior and session management
- Update ghostty dependency and optimize pane swap
- Add pane swapping functionality to pane select mode
- Implement overlay system for UI feedback
- Add JSON output for
ses listandpod list - Refactor mouse events to forward raw SGR to applications
- Optimize mux loop dead pane tracking
- Reimplement state persistence and reattach logic
- Implement versioned handshakes
- Implement SES client heartbeat
- Refactor CLI and core for improved efficiency
- Improve robustness by adding error logging
- Extract string sanitization into separate module
- Implement a centralized logging system
- Centralize and refactor UUID and float utilities
- Implement Unix socket credential verification
- Refactor config and query for unified 'when' conditions
- Relocate spinner rendering to core animations
- Refactor shared components into core module
- Improve floating pane lifecycle management
- Non-blocking CTL channel and rewrite architecture docs
- Skip polling panes without file descriptors
- Improve pane lifecycle management
- Improve pane info request handling
- Refactor Pod and client communication
- Implement binary wire protocol for MUX-SES communication
- Implement new binary communication protocols
- Send and receive pod metadata from the pod
- Implement SHP to POD direct communication
- Improve detached session persistence and reattach
- Add pod cli commands for management
- Always refresh VT render state on output
- Refactor config loading and improve performance
- Add mouse-driven float pane management
- Add
randomdomodule for dynamic status text - Add randomdo segment
- Add explicit
whenconfiguration for status modules - Document conditional
whenfor modules - Add configurable "when" conditions for status modules
- Implement multi-click selection for mouse
- Trim mouse selection to exclude trailing whitespace
- Add mouse selection auto-scroll and improve copy
- Update mouse selection to use buffer coordinates
- Refactor animated status bar checks
- Implement mux-side mouse selection with copy
- Configure Ghostty scrollback size
- Refactor shell init scripts into separate modules
- Introduce multi-instance support and Lua config improvements
- Add programmatic focus movement and program-specific keybindings
- Move
infocommand fromsestomux - Refactor
comsubcommand intosesandshp - Add Lua configuration for mux, pop, and shp
- Refactor key input handling for cleanliness and robustness
- Sanitize and translate kitty keyboard input
- Add sandboxing and resource isolation for panes
- Add support for resizing split panes
- Improve keybind arbitration logic
- Improve and unify focus navigation
- Implement advanced keybinding infrastructure
- Add initial support for Kitty Keyboard Protocol
- Refactor keybinding configuration
- Enhance float configuration and styling
- Improve
com listoutput with tree view and colors - Enhance shell integration with command info and exit intent
- Remove built-in floating window title rendering
- Add support for custom float pane titles
- BIGGGGGGGER FIX
- Improve mouse event handling to respect alt-screen
- Improve tab switching and mouse support
- SUPER FIXXXXXX
- Improve PTY child process reaping and client handling
- Introduce float attributes and new config structure
- Refactor mux into modular files
- Remove unnecessary stdout capture
- Add option to redirect float pane selection to a file
- Streamline and enhance float pane functionality
- Implement blocking float panes
- Enhance pane info with layout, size, and TTY
- Add base and active process info to
com info - Implement ad-hoc floating panes via CLI
- Add timeout for handshake during pod spawn
- Optimize pod protocol reader memory allocation
- Increase maximum frame length and add frame skipping
- Use spawn-safe CWD for pod panes
- Allow respawning remote panes
- Add logging capabilities to core components
- Rename project from Hexa to Hexe
- Add initial configuration files for Hexa
- Enable sending input to panes via CLI
- Improve ses daemon allocator handling and logging
- Enhance CWD tracking for pod panes
- README
- REINIT
🐛 Bug Fixes
- Parse mode as string not number in array format keybindings
- Support passthrough_only bindings without action in array format
- Migrate SesConfig to ConfigBuilder API, ensure all modules use defaults on error
- Migrate PopConfig to ConfigBuilder API, resolve IOT abort
- Prevent segfault by storing stable ConfigBuilder pointer
- Handle wide characters during rendering
- Update selectWord call for ghostty
- Update ghostty dependency hash
📚 Documentation
- Fix architecture diagrams with box-drawing characters
- Update float pane documentation and add build info
🧪 Testing
- Add Phase 5 POP API integration test
- Add Phase 4 SHP API integration test
- Add Phase 3 SES API integration test
- Add Phase 2 MUX API integration test
- Add Phase 1 infrastructure verification test
⚙️ Miscellaneous Tasks
- Remove double pokemon sprites
- Remove double pokemon sprites
- Improve keycast and mux new behavior
- Update project version and dependencies
- VERSION RESET
- Update release workflow and dependencies
- Pass GITHUB_REF for release builds
- Update project version
- Bump version to 0.1.4
- Add manual workflow_dispatch trigger
- Fetch full history for release tags
- Bump version to 0.1.3
- Bump version to 0.1.2
- Bump version to 0.1.1
- Add GitHub Release workflow for binaries
- Remove Kitty Keyboard Protocol documentation
◀️ Revert
- Disable perf caches causing freeze