File ghostty_1.0.0-1_source.changes of Package ghostty

Format: 1.8
Date: Thu, 02 Jan 2025 23:06:57 +0300
Source: ghostty
Architecture: source
Version: 1.0.0-1
Distribution: unstable
Urgency: medium
Maintainer: Clay Risser <clay@clayrisser.com>
Changed-By: Clay Risser <clay@clayrisser.com>
Closes: 2572
Changes:
 ghostty (1.0.0-1) unstable; urgency=medium
 .
   [ Mitchell Hashimoto ]
   * Initial
   * remove mach-glfw
   * add glfw vendor
   * nix: add libX11
   * initial glfw stuff working
   * rendering a window
   * Remove glfw gitmodule
   * build mach-glfw
   * nix
   * build gpu-dawn
   * basics of setting up webgpu are up
   * add raylib
   * minimal raylib window
   * use waiting rather than polling on window
   * setup opengl
   * draw a triangle with opengl
   * abstract shaders
   * opengl: programs
   * opengl: extract into folder
   * opengl: VertexArray
   * opengl: buffers
   * opengl: more generic setData for buffer
   * opengl: bound buffers
   * opengl: more bindings
   * opengl: uniforms
   * add stb
   * comments
   * stb
   * textures
   * opengl: draw functions
   * opengl: more funcs
   * submodule: freetype
   * build freetype from source
   * fontconfig example
   * clean up the main App
   * don't build stb
   * move stuff we aren't using
   * getting closer to dumb font rendering
   * busted text rendering
   * vendor: cglm
   * cglm
   * gb_math
   * awful text rendering
   * less dumb
   * opengl: adding pixelStorei
   * opengl: a lot more enums
   * opengl: for an array, size is just the size of the type
   * remove raylib
   * vendor: freetype-gl
   * build freetype-gl
   * move from epoxy to glad
   * freetype uses glad
   * freetype-gl doesn't link gl
   * Makefile with task for updating glad
   * output loaded OpenGL version
   * opengl: glad helpers
   * readme
   * Update README.md
   * gitattributes to ignore vendor
   * update README
   * Update README.md
   * use a font atlas!
   * opengl: simplify vertex attribute setting
   * draw text using ebo, some work to be done to clean that up
   * remove old text renderer
   * zig native atlas implementation
   * starting FontAtlas
   * atlas: use saturating arithmetic
   * font atlas creates glyph records
   * switch to pure Zig font atlas
   * remove ftgl build
   * remove freetype-gl
   * note perf todo
   * opengl: unbind programs
   * addGlyph returns glyph
   * calculate cell widt/height, cross verified with kitty
   * grid render a few cells
   * render a rainbow grid
   * new Window abstraction
   * fix memory leaks
   * calculate grid size in dedicated struct, tests
   * setup a single vao, ebo, vbo for grid rendering
   * model direct gpu cell
   * grid keeps track of cells
   * make colors more distinct for demo cells
   * basic pty opening
   * working on subprocessing
   * TempDir implementation
   * improve commnts
   * remove freetype-gl
   * terminal stuff
   * initial VT emulation table
   * comment
   * implement basic VT parser -- only print/execute handled
   * terminal: writing strings and multiline strings starting to work
   * terminal: C0.BS
   * attach a terminal to the window, start hinting at renderer hookup
   * setup our GPU cells based on terminal state
   * render text from our terminal!
   * render multiple lines
   * add background pass
   * update some comments
   * cell: convert atlas x/y to NDC in shader
   * update zig
   * update mach
   * set character callback and update the terminal
   * remove old shaders
   * shader modes, draw a jank cursor
   * fix the baseline for font rendering
   * calculate the cell width/height using the font size scale factor
   * accept enter to make a newline
   * starting libuv bindings
   * libuv: Sem
   * libuv: Threads
   * libuv: thread self, no deinit
   * libuv: Timers
   * libuv: timer start
   * libuv: backend fd/timeout
   * embedded libuv loop. still some issues:
   * libuv: Async
   * fully integrate libuv, no crash on close
   * clean up some of the libuv interations
   * libuv: fix self-dependent zig error
   * pass around the event loop, setup a timer to prove it works
   * blinking cursor
   * use async handles to more immediately exit the event loop
   * don't blink cursor when losing focus
   * update cells to hide cursor on non-focus
   * when losing focus, show hollow box
   * style
   * don't blink the cursor while typing
   * libuv: implement kqueue
   * update zig
   * expandPath for looking in PATH
   * Command: set custom env vars
   * improve building on darwin
   * compilation for macos works?
   * define gl_FragColor for macos
   * use OpenGL on Mac
   * fix pty resizing on darwin
   * various fixes for macos
   * kevent properly blocks
   * disable retina framebuffer on mac, see comment
   * redraw window during resize
   * execute the child command
   * libuv: starting Tty impl
   * libuv: start shared stream functions
   * libuv: beginning Pipes so we can more easily test streaming
   * libuv: stream writes
   * libuv: pipe reading
   * libuv: stream try_write
   * libuv: Errno, build up errors at comptime
   * hook up pty master to libuv
   * pty: use libc ioctl for compat
   * Command: setup fd properly on mac
   * update command comments
   * libuv: expose WriteReq
   * SegmentedPool
   * hook up the real subprocess reader/writer to the UI!
   * don't ignore fcntl return for macos
   * enter sends '\n' to child process
   * handle backspace
   * add some TODOs
   * update TODO
   * catch errors in ttyRead
   * bell doesn't crash
   * don't crash on htab, but its not implemented yet
   * horizontal tab, implement tabstops using a default value
   * fix some miscalculations with tabstops, add test
   * ctrl-l is form feed
   * horizontal tab off by one, add unit tests
   * send tab to process
   * terminal: scrolling
   * send control characters
   * jank wrap handling (by not wrapping at all)
   * unused comment
   * remove old unused files
   * remove vendor/cglm
   * vendor: remove stb
   * add tracy and update Zig
   * vendor: add tracy v0.7.8
   * initial tracy support
   * integrate tracy more deeply
   * tracy: support allocation wrapping
   * libuv: Loop.now
   * libuv: add Cond, Mutex
   * libuv: add more APIs
   * libuv: Embed now uses a mutex + cond var
   * Move the render to a timer that slows down under load
   * have to use an async handle to wake up event loop for max timer
   * max_timer: don't call callback in the same tick anymore
   * Update comments
   * only update cells in the render call
   * fix release mode builds by building parse table
   * slow it down a bit more under load
   * Add task to initialize repo
   * tracy: not enabled if root doesn't export tracy_enabled
   * use nix-direnv
   * update zig
   * set refresh callback for redraw
   * envrc: use nix, nix flakes messes up env in a way that breaks shells
   * implement basic CSI dispatch action
   * terminal: pass intermediates through to CSI, ignore NUL
   * terminal implement clear screen and set cursor, needs tests
   * CUP full implementation with tests
   * code tweak to avoid crash
   * implement erase line (EL) CSI
   * rename some funcs
   * DCH delete chars
   * cursor right
   * esc dispatch is handled in parser
   * parse SGR really poorly
   * terminal: collect intermediates properly
   * implement (untested) more codes
   * forgot a letter on ctrl characters
   * Add conformance apps
   * implement reverse index and erase display below
   * implement scroll behavior for reverse index, add conformance
   * fix a couple memory leaks
   * fix VPA/HPA offsets
   * implement ECH
   * enter is CR
   * terminal: OSC parser
   * OSC parses prompt_start
   * osc: end of command
   * osc: prompt_end
   * osc parser temporary state changed to union
   * osc: reset_cursor_color
   * parse DCS sequences (but do nothing)
   * osc: change window title with code 2
   * send esc
   * terminal: move tests into main
   * terminal: start pulling out stream processing into dedicated type
   * modify terminal tests to avoid append
   * move stream handling into the Window
   * terminal doesn't need parser anymore
   * implement CUD, CUU
   * terminal: setScrollingRegion
   * terminal stream set mode and reset mode
   * hook up setMode
   * set top and bottom margins full hookup
   * implement delete line
   * hook up delete lines
   * quiet
   * terminal parser allows colons for SGR
   * terminal sgr attribute parsing
   * sgr parsing can parse multiple
   * connect setAttribute
   * connect fg/bg of cell to renderer
   * always draw cell bg if it has one even if no char
   * eraseline sets SGR on all cells
   * typo on the rgb...
   * eraseDisplay honors sgr
   * eraseChars respects pen
   * terminal: insertLines
   * hook up insertLines
   * panic on unimplemented
   * respond to ESC [ c for primary attributes
   * use queueWrite helper
   * insertLines with scroll region support
   * conformance for insert lines with scroll region
   * terminal: utf-8 decoding
   * invalid utf8 turns into �
   * unknown glyph renders a space
   * terminal: implement resizing in a basic way
   * update comments clarifying changes to state table from vt100.net
   * update zig
   * lock to a release branch of nixpkgs
   * pin tracy to latest
   * update tracy
   * CLI parsing, can set default foreground/background color
   * change default font size
   * cli args support optional types
   * properly copy string cli flags
   * cursor left
   * update the font atlas if there are changes
   * implement device status request
   * sgr parse bold and 256 fg/bg
   * terminal: color palette structure and generation
   * support 256 color palette setting
   * implement named 8 colors sgr
   * mistake calculated background
   * implement bright fg/bg
   * plumb CSI to set cursor style, but haven't implemented any styles
   * render: bar cursor style
   * update cursor on request from shell
   * set the window cursor to the ibeam
   * update TODO
   * misparsing colors
   * super+v to paste
   * bracketed paste
   * update TODO
   * update deps
   * starting new screen
   * scrolling in the screen (no scrollback yet)
   * screen: row copy
   * fix some bugs
   * Terminal: switch to new screen, passing tests (not full coverage)
   * switch to new screen, bugs!
   * screen: fix negative scrolling from zero
   * various fixes
   * scroll can be a multiple of row count
   * make erase a bit more efficient
   * more efficient eraseLines
   * clear the last line when we scroll up
   * fixing more bugs
   * fix bugs
   * only slow down to 15 fps
   * screen resize
   * scren resize
   * add todo for reflow
   * on resize, set the terminal cursor to max
   * update deps and fixes for NixOS 22.05
   * update dependencies
   * update zig
   * use c allocator in release modes if available
   * OSC 133;C
   * origin mode set cursor pos
   * support set top/bottom margin with zero params
   * decaln
   * erase display above
   * erase line complete
   * f CSI alias for set cursor pos
   * basic "index" implementation
   * hook up IND index
   * NEL next line
   * implement VT
   * setting and clearing tab stops
   * handle SO/SI but don't do anything yet (just don't crash)
   * save and restore cursor
   * enq and cursor report with origin mode
   * fix tabstops off by one
   * update zig
   * Build in CI
   * update CI
   * fix test
   * agree to macos sdk
   * update CI
   * only compile tracy on linux
   * reverse colors
   * fix paste outputting "v"
   * parse more SGR attrs
   * update mach
   * move towards font family management to prep for bold/italic
   * add bold font, doesn't work yet
   * bold font rendering
   * font
   * initial underline support, can be improved
   * invert attribute
   * handle inversion with screen inversion properly
   * update deps
   * update README
   * implement auto-wrap, always enabled for now (ignores mode 7)
   * disable action debug
   * enable/disable autowrap
   * add constants for 132 col mode but don't implement
   * update TODO
   * start building in "scrolling" of sorts
   * better tests around scrollback
   * scroll down behaves correctly
   * fix build
   * scroll with delta no grow
   * can scroll to bottom
   * hook up scrolling, kind of works, kind of broke
   * scroll down with no scrollback fixes
   * update TODO
   * disable debug
   * defining some terms, prepare to have helpers for active vs history
   * update zig
   * typing jumps scroll to bottom
   * don't draw cursor on scroll
   * update TODO
   * update README
   * docs
   * Update enq.md
   * seqs
   * update README
   * fix tab behavior, should not print
   * add more sequences
   * update seqs
   * more sequences
   * update README
   * update README
   * update README
   * update README
   * delete old unused shaders
   * lots more sequences
   * dup
   * use packed struct for modes
   * KIND OF handle mode 3 (132 col mode)
   * index (IND) handles scroll up properly with a scrolling region set
   * update zig
   * comment to be clear
   * support building with musl, although it doesn't run currently
   * update to latest zig
   * start dockerfile and script for running a terminal and screenshotting it
   * Build vttest, improve runner
   * test: run from host
   * test: run.sh also does compare
   * test: compare the results and error
   * test: vttest-1-1
   * test: fix vttest/1_1
   * image outputs now contain the terminal name
   * remove unused
   * test: start preparing to run ourselfs in the harness
   * test: switch to Ubuntu for now
   * test: run-all.sh, hide i3bar for compare
   * add --font-size flag for font size in pixels
   * CSI: Insert Blanks (ESC [ n @)
   * add all vttest screen 1s
   * update alacritty test cases
   * xterm test cases
   * update TODO
   * cursor belongs to screen (prep for alternate screen)
   * alternate screen buffer (mode 1049) now supported
   * test: colorize output
   * quiet noisy log
   * update zig
   * clean up unreachables with log statements
   * test: sort tests prior to running
   * test: use larger dimensions to avoid some crash
   * on resize, make sure we resize the alt screen too
   * move test log up so it shows up on fail
   * add a formatter for CSI logs so that they're more easy to read
   * big improvements in action logging
   * count = 0 implies 1 for all cursor movement, fixes one line of vttest
   * erase line left should include cursor position
   * support DECCOLM
   * fix crash we can get with horizontal tabs off the end of the screen
   * test cases update since deccolm implemented
   * test: run-all runs in parallel
   * index should return after handling bottom-most line in scroll region
   * nix: add wraptest
   * test: add wraptest
   * fix an off by one in set cursor pos
   * test: update test cases from the setCursorPosition off-by-one fix
   * reset inverse attribute
   * don't install conformance tests
   * vendor: update mach for glfw
   * Add sdk submodule
   * first attempt at a derivation
   * nix: we have a package that builds, but doesn't run
   * log glfw errors globally
   * nix: update the package to set proper rpath
   * update to nixpkgs 22.05
   * nix: add other X11 deps
   * make dev/install to add a dev install
   * Update makefile to only patchelf on NixOS
   * cli parsing supports modification, add "RepeatableString" as example
   * cli: support multiple calls into parse without clobbering arena
   * --config-file to load a config file
   * detect config file load in config file
   * update Zig nightly
   * cursor position absolute needs to ignore all the offset stuff
   * implement DECSASD by just blackholing the output for now
   * releast-fast for dev/install otherwise renders are slow
   * remove unused line
   * add a lot more tracing as I hunt down some performance things
   * update nixpkgs
   * some logging improvements
   * refactor cursor implementation, implement cursor visible (mode 25)
   * opengl: support extension iteration, list in debug mode
   * terminal: add Selection struct
   * introducing dedicated point types
   * fix build error
   * track mouse state, setup selection state on cursor move with click
   * color selection!
   * fix some selection contains logic on single lines
   * fix selection of a single character
   * update TODO
   * terminal.selectionString to grab the string value of a selection
   * selectionString unwraps properly
   * selectionString: more accurate buf allocation
   * selectionString: test wraparound case, fix bugs
   * way easier way to slice to end of storage duh
   * copy!
   * update TODO
   * note that selectionSlices is tested
   * cursor should be a hollow rect on unfocus, regression from e163e4962baad09cd2c36be1529dee4fcf1220b0
   * HPA does nothing when status display is active
   * update zig
   * update mach vendor
   * update TODO
   * memset zero values when resizing a screen
   * selectionString: realloc so free gets the correct length
   * mouse xpos/ypos can be negative or larger than window size
   * update TODO with a bunch of select tasks
   * more TODO
   * start changing getRow and rowIndex to use tagged indexes
   * screen operations operate on the active area
   * rowIterator takes the tag type to iterate over
   * Screen.region to get a region of contiguous memory for a tag
   * start working on new resize with reflow, can grow rows
   * resize increasing column width without reflow
   * reflow when cols grow
   * resize less rows, but currently not 100% working (see commented tests)
   * rowIterator(.screen) now ignores unused lines, fixes shrinking rows
   * rowIndex uses tag max so we have max in just one place
   * reflow when columns get smaller
   * replace old resize with new reflow resize
   * update TODO
   * when cols grow, move cursor if it unwraps the line it is on
   * more cursor reflow
   * reflow cursor when shrinking cols
   * assertions to save our bacon
   * handle case where cursor is past where content is on col shrink
   * fix a crash when reflowing to smaller cols but still buggy
   * when shrinking rows, clear empty space from the end (see test case)
   * when less cols, cursor needs to be in screen space, not viewport
   * when growing rows, offset cursor by added rows
   * when growing cols, adjust viewport and cursor if we shorten
   * resize alt screen without reflow
   * set a minimum window size
   * update TODO
   * add screen `.history` tag to fetch scrollback region
   * implement erase display scrollback ("clear" command)
   * update zig
   * enable retina on Mac, set OpenGL to pixel size properly
   * don't scale up OpenGL projection in Retina, use true values
   * fix ttyWrite calculation to avoid truncating data
   * update zig
   * move libuv into pkg
   * move freetype into pkg
   * update libuv tests
   * Revert "update libuv tests"
   * src/terminal can build into a minimal wasm library, I think
   * test wasm of the term package
   * turn tracy into proper package
   * pkg/tracy
   * Fix libuv tests
   * Fix some stage2 compilation errors
   * add system SDK to build to enable cross compilation
   * only build tracy if enabled
   * skip a test on stage2, with this the main package tests pass!
   * update zig
   * Typing a character clears selection, scrolls to bottom
   * erase display complete should scroll to bottom
   * get rid of gb_math and create matrices from scratch
   * clean up ortho2d to do less things
   * math style
   * update Zig, fixed new invalid octal error
   * rename font/font.zig to font/main.zig
   * Enable depth buffer, add depth to shader
   * Only reallocate the GPU buffer if our CPU capacity changes
   * Grid supports sending partial cell updates to GPU
   * updateCell sets the proper Z value and bumps it
   * get rid of Z buffer stuff
   * Texture atlas supports variable color depth, not just greyscale
   * avoid an alloc and buffer copy in the common case on font loading
   * zlib
   * build libpng and link freetype to it
   * vendor
   * freetype builds in png support, uses our own zlib
   * temp: add libpng to nix
   * font face supports loading color fonts (emoji!)
   * really hacked in emoji support, time to clean it up
   * font FallbackSet for looking up in fallback TTFs (emoji)
   * only downsample size if its an emoji
   * remove the font style fallback for the fallback set
   * fix crash that could happen looking up fallback
   * nix: remove libpng
   * add utf8proc so we can detect unicode char width
   * font: move codepoint into a public API
   * support dynamic linking (not default) test in GH actions
   * terminal: print wide characters
   * render wide chars
   * selection of wide chars and copy/paste works
   * don't render wide char trailers
   * get rid of assertions because its possible they're false
   * update TODO
   * remove done shader TODO
   * fix stage2 compiler error
   * update mach
   * pin new zig-overlay repo
   * remove unused zig file
   * key.Binding and basic parsing
   * binding parse action with parameter
   * move input stuff to src/input
   * keybind parsing in CLI args
   * look up keybindings on keypress, clean up how non-printables are handled
   * only handle non-printables on press/release, and BS is 0x7F
   * unify non-printables up by bindings
   * hook up keybindings for copy/paste and arrow keys
   * hook up more control keys: home, end, page up, page down
   * move input test to qualified
   * update TODO
   * fix data corruption on growing the Atlas
   * atlas tracks modified/resize state, reallocate on GPU if resized
   * update TODO, we fixed atlas resizing
   * ignore zero-width characters for now
   * font size is now in font points, determine size based on window DPI
   * code for getting physical DPI
   * scale the cursor position from screen coords to pixels
   * missed comment
   * update TODO
   * note charsets are TODO
   * SGR 39/49 (reset fg/bg, respectively)
   * bind function keys (F1 to F12)
   * make cell attrs bools instead of u1s
   * implement faint colors (SGR 2)
   * define mouse events, all TODO
   * change u1 in mode to bool
   * X10 click-only mouse reporting
   * mouse normal events in x10 format
   * normal events can now track scroll
   * Track/cache button state and mods state
   * normal event (motion) mouse tracking
   * any event mouse tracking
   * UTF-8 mouse reporting
   * SGR reporting
   * urxvt reporting format
   * sgr pixels mouse report format
   * fix miscompilation around sgr mode
   * update TODO
   * starting charset tables
   * british charset
   * basic charset mapping, support configuration, print tests
   * Shift Out/Shift In (invoke charset into GL)
   * single shift 2/3
   * implement locking shift
   * update TODO
   * hook up scroll down and up CSI codes (SD/SU)
   * sgr parsing bright colors now sets color properly
   * Add harfbuzz build (not used yet)
   * pkg/harfbuzz: some functions and tests
   * output harfbuzz version on startup
   * pkg/harfbuzz: some blob APIs
   * pkg/harfbuzz: face, font, freetype
   * pkg/harfbuzz: buffer init, add
   * pkg/harfbuzz: buffer set direction, script, and language
   * pkg/harfbuzz: buffer get glyph positions and info
   * pkg/harfbuzz: shape
   * pkg/harfbuzz: use extern funcs for freetype interop
   * clean up some imports
   * shader: only downsample glyph if its bigger than width plus padding
   * pkg/freetype: Library and Face
   * pkg/freetype: more face APIs
   * pkg/freetype: loading glyphs
   * pkg/freetype: finish APIs we need
   * allow non-printables even if modifiers are pressed
   * convert src/font to use new pkg/freetype
   * src/font: change Face to require font to init
   * font: introduce Group which will eventually replace FallbackSet
   * font: GroupCache is like Group, but with caching...
   * use new font.GroupCache, remove unused font structs
   * move cell metrics calculation out into src/font
   * pkg/harfbuzz: add guessSegmentProperties
   * Line segmentation into text runs
   * font: Face initializes a hb_font alongside every face
   * utf8proc: add grapheme break API
   * font: shape API, calls shape and outputs some debug
   * TODO
   * pkg/harfbuzz: fixing some APIs
   * dedicated circular buffer
   * starting the new screen implementation
   * big API surface for screen2, can test write/read now
   * screen2: scrolling (to a certain extent), copying in tests
   * screen2: selection
   * add cursor to new screen
   * circbuf doesn't use zeroes, it takes a default value
   * use non-extern unions so we get safety checks
   * fix some circbuf bugs (add tests) and add rotation
   * circbuf resize operation
   * circbuf rotateToZero does nothing if its already at zero
   * screen2: dynamically allow scrollback when its needed
   * update overlay but we still can't use master
   * new screen supports resize without reflow
   * our new resize without reflow supports scrollback so test that
   * resize without reflow preserves cursor better
   * the big screen switchover
   * resize should maintain minimum of screen rows
   * grow our scrollback much faster
   * process ASCII events manually to avoid function call overhead
   * small optimizations
   * screen: cache history offset
   * cache row iterator max value
   * asserts not being optimized away, use comptime gate
   * use an arena allocator for tty allocs
   * clean up some assertions
   * fix scrolling and new row calculation
   * fix y pos on resize
   * resize with reflow more cols
   * maybe clean up resize more cols
   * resize less rows
   * resize with shrinking cols
   * remove dirty for now
   * comment on screen struct
   * clearHistory
   * bump render to 144hz, slowest 120hz
   * on resize, if rows increasing, handle that first
   * fix some resize crashes
   * update TODO
   * setup flags, storage for graphemes
   * detect and attach grapheme to grapheme data
   * various methods on Row are grapheme-aware and tested
   * test writing graphemes
   * handle graphemes with more than 1 joiner
   * Disable
   * attach zero-width joiners to cells
   * Ligatures
   * Calculate grid_width properly, use that instead of wide mask in shader
   * Rebase
   * Font face handles zero-width glyphs (weird but happens)
   * font don't include convert
   * fonts are presentation format aware (text vs emoji)
   * kind of handle VS15/16 better, its not blank anymore, but its wrong
   * test very long emoji
   * test shaping a long emoji
   * only test presentation VS15/16 if directly adjacent to codepoint
   * much more accurate run splits and cell widths in runs
   * fix some emoji sizing
   * only scale fonts to height
   * add tracing
   * update TODO
   * update TODO
   * remove font conversion stuff
   * better handling of combination characters
   * avoid large shaper buffer allocation on every frame
   * update to stage3 zig with -fstage1
   * Screen dirty tracking
   * rows are dirty when initialized
   * add LRU
   * lru resize
   * implement LRU row GPU cell caching
   * update TODO
   * fix potential crash
   * a cell is empty only if it also has no styling
   * Cell GPU cache must also key by screen type (primary/alternate)
   * pkg/fontconfig: starting, not working
   * build fontconfig
   * don't build fontconfig on mac
   * pkg/fontconfig: disable ubsan (reported upstream)
   * fontconfig: object sets and patterns
   * fontconfig: font sets
   * fontconfig: font list
   * fontconfig: fc-match
   * fontconfig: fc-match
   * fontconfig: more APIs
   * update to latest Zig nightly
   * Revert "update to latest Zig nightly"
   * Make selection part of the cache key for GPU cells
   * pkg/fontconfig: pattern.add
   * pkg/fontconfig: add weights/slants enum
   * fontconfig: charset and langset apis
   * pkg/fontconfig: add some error handling
   * pkg/fontconfig: pattern get
   * pkg/fontconfig: const pointers
   * update to the latest stage2 compiler we can
   * Fix a couple bugs in memory access (tests only)
   * RGB should not be packed, so that it has align = 1
   * Fix invalid c types with fontconfig
   * use meta.FnPtr to prep for stage2
   * reproduced issue for upgrade comment
   * start adding fontconfig conditional compilation
   * deferred face hasCodepoint
   * font discovery builds up a set of deferred faces
   * font group works with deferred faces exclusively
   * store requested size alongside deferred font for loading
   * src/font: working on initiaizing deferred fonts from fc
   * font: test loading deferred face for fontconfig
   * update flake
   * font Group has Lib, loads deferred faces when needed
   * pkg/freetype: disable ubsan
   * search for fonts on startup
   * only discover if it is enabled
   * cli args fix stage1 miscompilation, add font families
   * cli args can parse null-terminated strings
   * --font-family CLI config
   * update TODO
   * -Dtest-exe flag to build and install test executables
   * fix tests so they pass on mac
   * pkg/macos: start core foundation bindings
   * macos: add another string API to test it really works
   * pkg/macos: add CoreText
   * macos: CFArray
   * macos/text: matching font descriptors
   * pkg/macos: dictionary create
   * macos/foundation: more string funcs
   * macos/text: font descriptors
   * macos: test listing fonts
   * pkg/macos: CFURL
   * macos/text: more APIs
   * pkg/macos: import headers instead of doing externs manually
   * macos/foundation: number, dict get value
   * macos/text: FontTraits
   * macos/text: create collection from descriptors
   * pkg/macos: add mutable dictionaries, flesh out font descriptor
   * pkg/macos: fix invalid constant
   * pkg/macos: fix crash when no fonts are found
   * pkg/macos: font initializes, get glyphs
   * Mac Font Discovery with CoreText (#17)
   * font: set "backend" enum vs booleans
   * pkg/harfbuzz: add coretext compilation on macOS
   * Use Apple Emoji font on Mac
   * update TODO
   * calculate font metrics per face
   * redoing some of the baseline calcs, remove from shader
   * underline is derived from the primary font
   * more accurately compute font metrics
   * font: calculate correct offset for non-scalable emoji fonts
   * Strikethrough (#19)
   * Fix underline/strikeout position with larger fonts
   * Add some padding to emoji
   * TODO for colored and styled underlines
   * pkg/macos: CGColorSpace
   * pkg/macos: CGContext
   * pkg/macos: font draw glyphs
   * pkg/macos: RGB color space
   * pkg/macos: bounding rects for text
   * Make font face a compile time interface, stub for coretext
   * font: begin coretext Face
   * font: coretext face presentation
   * font: coretext glyphIndex
   * font: lower interface requirement for face
   * macos: url from path
   * macos: create descriptors from URL
   * macos: data
   * pkg/macos: create fonts from data
   * font: coretext initialize face from memory
   * fix compilation
   * pkg/macos: some font metrics functions
   * font: coretext cell width calculation
   * font: start working on core text cell height calcs
   * macos: AttributedString
   * pkg/macos: text framesetter
   * pkg/macos: path
   * pkg/macos: starting frames
   * macos: frames, attributed strings, stylized strings
   * font: calculate cell height
   * font: coretext calculate cell metrics
   * font: coretext initial render glyph
   * font: deferred face can load core text backend
   * font: fix some coretext rendering issues
   * pkg/macos: bitmap info arg
   * update to API
   * pkg/macos: more stuff
   * pkg/macos: fix zig C ABI issue
   * fix some issues that fail nightly stage2 compiler
   * update mach
   * update mach to fix stage2 issue
   * I think this gets us on master zig...
   * move shaders into src/ tree for stage2
   * new opengl function calls for stage2
   * fix invalid ptrcast
   * pkg/libuv: fix stage2 compilation issues
   * workaround stage2 translate-c issue with link to issue
   * Workaround stage2 compile issue with issue link
   * pkg/libuv: workaround stage2 issue
   * fix more stage2 build errors
   * update zig
   * run tests against both stage1 and stage2
   * get rid of stage2 workaround for now
   * use old version of mach
   * opengl: setting buffer data with array must get proper pointer
   * update zig which fixes test on wide terminals
   * pkg/libpng: name the lib png, so its not "liblibpng"
   * Switch to stage2 primarily for builds
   * Imgui (#20)
   * update zig
   * Bring back freetype font bitmap conversion
   * Use scalable check rather than fixed size check for setting char size
   * pkg/freetype: remove unused API
   * disable inputs when they're captured by dev mode
   * enable freetype with imgui
   * use our built-in font for dev mode
   * render font info in dev mode
   * freetype: resize glyphs that are too tall prior to storing in texture
   * face: coretext zero the bitmap before render
   * coretext: we do want to smooth and anti-alias glyphs
   * coretext: render glyph on its own bounding box, calculate bearings
   * coretext: rasterize glyph with a padding to prevent artifacting
   * cell under cursor always remains visible by inverting fg colors
   * update to latest zig which renames @min/@max
   * update zig to latest, fix todos
   * workaround for https://github.com/ziglang/zig/issues/13277
   * pkg/libuv: get rid of sleep state, it did nothing
   * rename grid to a renderer, extract to subfolder
   * make opengl loader context-aware
   * introduce renderer thread logic (not starting it yet)
   * prepare our render state on the window
   * move to new renderstate, new render method
   * pkg/libuv: Idle handles
   * run rendering on another real thread (still bugs)
   * renderer: extract the size structs to a shared file
   * no longer store grid size on the renderer
   * support screen size, rip out shared state
   * bring back out of focus no blink
   * set proper opengl background
   * remove render timer from window
   * remove the max timer
   * pkg/libuv: generate cimport.zig for specific platforms
   * update zig
   * use the c allocator when running under valgrind
   * Fix memory leak forgetting to clean up fontconfig
   * free memory in cells LRU
   * fix a couple more memory leaks
   * fixing more memory leaks
   * Fix the primary leak with config
   * propertly deinit the GPA so we can detect leaks in debug
   * pkg/objc starting
   * pkg/objc: selectors
   * pkg/objc: message send
   * don't need fstage1
   * pkg/objc: more message send stuff
   * pkg/objc: properties
   * update zig
   * window no longer makes any OpenGL calls
   * pkg/objc: more methods
   * Comment to show native access
   * pkg/objc: shortcut for set/get property
   * fixed bugs
   * update README about release builds
   * update zig
   * mac: load emoji font last so it is not preferred for text
   * Initial metal abstraction (noop)
   * metal: setup the render loop, draw the background color
   * don't test stage1
   * boilerplate for rendering
   * add first pass metal shader
   * draw a triangle
   * draw a square, handle resize
   * projection matrix, render cell
   * metal: use content scale when resizing
   * metal: setup vertex data
   * metal: populate the greyscale texture, prep ubershader
   * metal: pass colors in
   * metal: handle HiDPI scaling
   * metal: glyphs show up (poorly)
   * metal: blending
   * metal: cursor and underline
   * metal: color textures
   * metal: devmode
   * metal: set contentsScale and handle screen scale factor for retina
   * log the renderer on startup
   * metal: fix double wide cell width
   * metal: disable v-sync
   * metal: hollow rect cursor works
   * metal: reallocate textures if they grow
   * fix mouse scroll direction
   * Mac bundle, icons
   * Update README.md
   * pkg/macos: OS Log support
   * macos: send logs to unified logging
   * update zig
   * remove stage1 hack
   * update zig
   * look up default shell in user passwd entry
   * source default shell from SHELL if set
   * get rid of stage1 compat
   * extract passwd to its own file so its easier to test
   * Command supports setting cwd
   * macos: Default working directory to home dir if launched from app
   * properly handle "inherit" working directory value
   * change defaults to be more aesthetically pleasing
   * Load `$XDG_CONFIG_HOME/ghostty/config` if it exists (#25)
   * re-enable hot path optimization
   * Blocking queue implementation for thread message passing
   * Start pulling out IO thread and IO implementation
   * IO thread has more state setup
   * IO thread stream handler is in, lots of commented TODOs
   * IO thread can trigger render and write data
   * termio: start the thread mailbox, hook up resize
   * fully hook up resize
   * termio: clear selection
   * More IO events
   * Actually, we'll manage selection and viewports on the windowing thread
   * Switch over to the IO thread. A messy commit!
   * remove unused fields on Window
   * move bracketed paste to terminal state
   * field rename
   * fix deadlock with mouse reports
   * allocate data for paste data if its too large
   * bug: assume focused on launch
   * renderer mailbox, focus message
   * Move cursor timer to renderer
   * implement cursor reset when data comes in pty
   * Window thread is now single event loop!
   * rename termio thread message struct
   * delete unused comment
   * App prepare for multi-window
   * Hook up new window, modify renderers
   * Do not block on app mailbox
   * close window action
   * termio: on deinit, send SIGHUP to child process to exit it
   * support app quitting to close all windows
   * termio: clean up error handling for kill
   * pkg/imgui: support context current
   * DevMode only renders on first window
   * clean up some resources better on error
   * raise max file descriptors on launch
   * Deinit devmode more cleanly
   * Set proper keybinds
   * update TODO
   * update zig
   * throttle cursor reset, under heavy IO this would slow things down
   * implement `ESC c` -- full reset
   * libuv: Prepare handles
   * tracy: support naming threads
   * name threads and add more tracing
   * add more traces
   * sgr: parse italic (render not implemented)
   * missing trace
   * update TODO
   * implement region scrolling directly in screen to use memcpy
   * drop a couple function calls and optimize scrolling a bit
   * use libc memcpy/memmove instead of std.mem if available
   * add more tracing, unroll a loop
   * update zig
   * cli args without arena
   * Add a benchmark exe for testing parser throughput
   * opengl: copy screen data instead of sharing state
   * opengl: handle screen resize outside of critical area
   * fix outdated test
   * metal: copy screen data (see opengl commit for why)
   * The cursor should be reset on entering the alt screen
   * implement many more reset sgr attributes
   * implement CSI ESC [ <n> b for repeating previously printed char
   * update TODO
   * pkg/objc: autorelease pools
   * set system locale on startup, read Mac locale from OS preferences
   * set COLORTERM -- macOS uses this for emoji
   * locale always requires libc
   * better commenting
   * OSC handling, handle OSC change window title command
   * opengl: automatically pad render area to balance non-grid space
   * metal: implement auto padding
   * extract auto-padding code to shared logic
   * opengl: padding is done via ortho matrix rather than viewport
   * initial padding options
   * explicit padding works
   * padding needs to be sent to termio
   * metal: understand explicit padding
   * Don't crash on huge padding, warn users if padding is absurd
   * Move shaders into the renderer dir
   * move opengl to renderer dir
   * remove stage1 workarounds
   * No need to use a mach fork anymore
   * extract out message data from termio
   * font: freetype eliminate some duplicated work on init
   * font: freetype face supports resize
   * font: Group supports resize
   * font: GroupCache supports resize
   * window caches all sizing so it doesn't depend on renderer state
   * renderer: font size changed event, OpenGL impl
   * window cell size event for changing cell size
   * hook up all the keyboard actions
   * metal: implement font size changing
   * coretext: implement resizing
   * screen: support scroll region scrolling with circular buffer wraparound
   * Option (def true) to inherit font size on new window
   * update status
   * make goal explicit to support windows
   * waitpid should specify WNOHANG
   * fix tests for WNOHANG commit
   * enable Mac native tabbing
   * hide tab bar if last window is destroyed
   * new_tab action
   * update some docs
   * app: deinit darwin info
   * update TODO
   * Create dependabot.yml
 .
   [ dependabot[bot] ]
   * Bump actions/checkout from 2 to 3
 .
   [ dependabot[bot] ]
   * Bump cachix/install-nix-action from 17 to 18
   * release-tip workflow (wip)
   * release-tip can be dispatched
   * release-tip manual
   * try again (noise)
   * fix skip on tip release
   * Update README.md
   * release-tip should update the SHA
   * move screen resize to a renderer mailbox message
   * Embed nerd fonts into our default font
   * pkg/fontconfig: charset can add chars
   * pkg/macos: support CFCharacterSet
   * pkg/macos: character set in range
   * font: specific codepoint lookup in internals
   * search for unknown codepoints in any available font face
   * Always send mouse events
 .
   [ Anubhav Mishra ]
   * Update README.md
   * Update README.md
 .
   [ Mitchell Hashimoto ]
   * opengl: culling is not necessary
   * opengl: render bg in a separate pass
   * metal: implement two-pass render for bg
   * fix memory leak when grapheme clusters of >4 codepoints are present
   * fix memory leaks with metal resources and multi-window/tab
   * OSC parsing for get/set clipboard (OSC 52) -- not hooked up yet
   * fix test name
   * pkg/objc: correct objc_msgSend call on x86_64 depending on return type
   * workaround for x86_64 ABI issue: https://github.com/ziglang/zig/issues/13598
   * pkg/objc: make ptrcast var so that LLVM backend sees sig
   * don't change cursor to ibeam on macOS prior to Ventura
   * manually focus next window on macOS <= 12
   * Configurable 256 Color Palette (#50)
   * config file allows and ignores empty lines, supports comments
   * test that quoting config values is okay
   * fix selection regression caused by screen copy optimization
   * do not block channel send while draining channel
   * change config write to be debug
   * ability to set selection fg/bg colors
   * ability to customize cursor color
   * update TODO
   * config files allow spaces around "="
   * put some config in the devmode UI
   * ci: release should update tip tag
   * sign release bundle
   * ci: release will always do unsigned first
   * ci: release into zig-out
   * ci: try macos 12
   * ci: macos 12
   * ci: set executable bit for binary
   * ci: notarize
   * update README
   * OSC 52: Clipboard Control (#52)
   * macOS should launch shell as a login shell
   * window detects double and triple clicks
   * screen selectWord starting functionality, not done at all
   * selectWord goes across soft-wrapped lines
   * Don't crash when fn key pressed on mac (workaround upstream issue)
   * double-click drag selects word by word
   * fix regression around selecting word at end of screen
   * screen selectLine and tests
   * hook up triple-click in UI to select lines
   * update TODO
   * hide imgui demo window
   * configurable click interval with `click-repeat-interval`
   * mac: get default click repeat interval from NSEvent
   * moving the mouse too far between clicks will reset the click count
   * copying selection trims trailing whitespace
   * set IUTF8 on the pty
   * vendor/pixman and basic building
   * pkg/pixman: starting API
   * pkg/pixman: some drawing
   * build: support for dynamic linking pixman
   * pkg/pixman: fix math for bpp calculation
   * pkg/pixman: add more types
   * add pixman package
   * font: detect box glyphs, start littering stuff to denote special fonts
   * font: skeleton for box drawing and hook up to Group
   * test rendering box glyphs, looks OKAY
   * font: shaper handles special fonts
   * fix offset for box glyphs
   * remove test code
   * font: more box glyphs
   * more... more...
   * more glyphs for the glyph god
   * metal: support for box glyphs
   * more
   * 16 more
   * 16 more
   * 16 more
   * 16 more
   * many more boxes
   * pkg/pixman: more image APIs
   * arc glyphs
   * opengl: continue rendering if single cell has error
   * pkg/pixman: rasterize trapezoids
   * more box fonts
   * lot more boxes
   * pkg/pixman: fill rects
   * more glyphs
   * braille
   * sextants
   * wedge triangles
   * more wedges
   * more wedges
   * more
   * more glyphs
   * metal: continue to render if single cell fails
   * fix comment
   * terminal: copy grapheme map when resizing and ensure proper cleanup
   * terminal: fix possible crash when increasing columns in resize
   * rearrange box rendering to prepare for more sprite drawing
   * pkg/pixman: more getters
   * font: introduce Canvas, start converting Box
   * font: use Canvas more, Canvas rect
   * use enum for underline styles
   * font: draw single and double underlines as sprites
   * opengl: render underlines using sprite system, not shaders
   * fix sgr parsing for underline styles
   * unknown underline styles render a single underline
   * terminal: parse all underline styles
   * font: render dotted underlines
   * dashed underlines
   * curly underlines
   * metal: underline styles
   * remove underline support from shaders since we now use sprites
   * update TODO
   * font: Shaper should replace 0 with 0x20 (space)
   * respect application cursor keys for arrow (DECCKM)
   * fix crash with cursor going off screen on resize
   * revert
   * font: when resizing a glyph, scale metrics by same ratio
   * move Atlas to font
   * update mach for macOS Ventura
   * update zig version
   * update zig again
   * update nixpkgs to 22.11
   * update zig
   * update zig
   * move wasm main to src/, export an Atlas API
   * wasm allocator, consider "host-owned" pointers
   * support unit testing wasm via wasmtime
   * Start scaffolding web_canvas backend
   * blank out web canvas impl
   * add node for web stuff
   * update zig
   * add zig-js
   * font: web canvas creates a canvas element
   * logging works for wasm
   * hook up logging to wasm, example uses new zig-js package
   * don't export coretext/freetype
   * calculate font metrics via canvas
   * fix zig-js so wasm-test works
   * font: working on rendering glyphs in canvas
   * face: web canvas glyph rendering appears to work!
   * font: add method for drawing atlas to canvas
   * font: fix glyph offset calculations for render
   * font: add 1 to the canvas glyph to avoid clipping
   * font: fix some JS memory leaks
   * font: begin making Group work with wasm
   * font: DeferredFace is wasm-compatible
   * font: web canvas doesn't support discovery
   * font: Group is now wasm-compatible
   * font: GroupCache is wasm compatible
   * wasm: export terminal core API
   * wasm: show color atlas in example web app
   * font: web canvas can render emoji
   * font: move shaper into comptime interface
   * font: extract common shaper elements out
   * renderer: use new shaper structs
   * font: shapers init with allocator since web canvas needs to init buffer
   * font: web canvas shaper yields runs
   * wasm: build.zig uses addDeps for wasm
   * font: web canvas face has to render to check presentation for cp
   * font: shaper test should decode unicode codepoints
   * font: start web canvas shaping, we perform grapheme clustering
   * font: web canvas tracks glyph indexes for grapheme clusters
   * font: faceFromIndex returns a pointer to the face
   * face: web canvas can render grapheme clusters
   * update example to show multi-codepoint grapheme
   * update zig version
   * font: mac should use freetype rasterizer by default
   * wasm: disable stack protector
   * font: start converting Box font to our abstract canvas interface
   * font: Box font uses canvas abstraction
   * font: remove getData from canvas
   * font: mostly empty web canvas sprite renderer, but compiles
   * font: web canvas rect sprite func
   * font: web canvas sprite font can write to atlas
   * font: web canvas sprite font can composite
   * font: web canvas sprite trapezoid
   * zero-width chars are ignored if they're at col 0
   * terminal: ignore invalid C0 escape codes
   * terminal: parse table needs to have room for all chars
   * terminal: don't crash if cell claims to have grapheme but doesn't
   * terminal: osc parser gracefully handles input data larger than buffer
   * terminal: insertLines with count 0 no longer crashes
   * terminal: only clear wide spacer head if wide char is not on first line
   * terminal: scrollRegionUp outside of range does nothing
   * terminal: printing char outside of ASCII with non-UTF8 charset is space
   * font: clear up some logging
   * mac: in debug, set locale to en_US if not manually set
   * update zig version, update @call for newer zig version
   * update to latest zig
   * update zig again
   * update zig -- should fix codesign issue
   * Test wasm builds in CI
   * wasm: use shared, imported memory
   * wasm: use wasm allocator, rather than page allocator
   * wasm: log should use stack allocated memory first
   * update zig
   * window: start abstracting a window implementation
   * window: abstract more, it starts
   * rename window package to apprt
   * renderer: make Metal apprt-aware
   * move the size callback into apprt
   * apprt: key/charCallback, input supports all glfw keys
   * apprt: couple more easy callbacks
   * apprt: all mouse callbacks
   * core window doesn't have reference to glfw window anymore!
   * window should reach into glfw for addWindow for now
   * comments
   * apprt: clipboard
   * rename windowing_system to just window
   * apprt: window size limits
   * initialize glfw in app
   * app: make apprt agnostic
   * config: API for wasm
   * config: enable passwd isn't compiled for wasm
   * can specify a wasm target in build
   * start making the src more wasm target aware
   * move wasm target struct around to avoid analyzing wasm file on non-wasm
   * remove unused import
   * vendor: update tracy to 0.8.2 to match latest nix version
   * pkg/objc: extract to zig-objc repo
   * terminal: check OSC parser for tmux 112 sequences from HN
   * update zig
   * window (mac): recalculate sizes on new tab
   * Fix new log function options for zig
   * vendor/libxev
   * update libxev
   * renderer uses libxev
   * vendor/libxev update
   * vendor update
   * termio: use libxev (with TODOs)
   * remove libuv from build
   * update libxev
   * termio: use a dedicated io reader thread?
   * pkg/libuv: delete
   * termio: reader thread is thread-safe for writing to writer
   * termio: IO reader thread cleanup works
   * termio: better commenting on what is going on
   * termio: fix TODO around cursor reset
   * termio: fix pty close error so close doesn't hang on macOS
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 18 to 19
   * build: add comptime check to verify Zig version
   * build conformance into dedicated directory
   * nix: fix darwin devshell
   * update zig version
   * new build system
   * delete libuv
   * fix tests, wasm build works again
   * ci: use -Doptimize
   * macos: starting boilerplate
   * build: can build the app using Swift (noop)
   * add TODO notes about arch
   * build: add SwiftBuildStep to run "swift build"
   * macos: empty window
   * build: ghostty lib, framework, build into app
   * macos: use xcodeproj
   * macos: xcodeproj
   * build: just copy xcframework
   * build: remove SwiftBuildStep
   * build: LipoStep
   * ci: trying to build macos
   * ci: build macos app
   * ci: try to xcodebuild
   * include: comment the modulemap
   * ci: revert back to scripting xcodebuild (broken)
   * macos: disable code signing for now
   * lots of broken stuff
   * macos: add missing Preview Content folder
   * libtoolstep
   * macos: need to link to libstdc++
   * build: update libtool step docs
   * macos: config API
   * macos: add ErrorView
   * build: bundle compiler rt
   * update to latest build API, rebase
   * build: must set run condition to always now
   * build: use caching for Libtool and Lipo steps
   * move allocator to global state
   * app: only create first window in exe mode
   * apprt: start embedded implement, make App API available to C
   * lots of stubbing so window will kind of compile for embedded
   * apprt: can pass options through to Windows
   * macos: terminal surface view
   * c: create/destroy surface API
   * lots of progress running a surface but still crashes
   * it draws!
   * update size
   * macos: disable sandbox
   * macos: correct scale factor propagated
   * start input, its broken but we're getting there
   * termio: remove xcode-injected env vars
   * c: fix enums for input
   * macos: hook up text input
   * embedded wakeup calls callback
   * macos: clean up surface on close
   * macos: track surface focus state
   * macos: hook up change title events
   * set title callback needs to use surface userdata
   * macos: set correct title for surface title
   * macos: new tab implementation
   * macos: mouse button and mouse move events
   * macos: mouse scroll events
   * ci: release updated to work with new xcodebuild
   * main: fix tracy allocator in GlobalState
   * Makefile update for new Zig build flags
   * ci: use shell to git push tag for release
   * macos: stdbool missing so we can use bool in ghostty.h
   * ci: fix path to release app
   * window charCallback accepts doesn't assume ASCII, accepts any Unicode CP
   * macos: emoji keyboard works
   * macos: hook up clipboards
   * macos: set ibeam cursor within terminal view
   * macos: don't set cursor in mouseMoved
   * macos: add settings view with a coming soon to help some people
   * macos: disable ApplePressAndHoldEnabled so that repeated key events work
   * update zig
   * update README with latest macos building instructions
   * macos: remove unused vstack
   * macos: update minimum deployment target to macOS 12
   * macos: use GeometryReader for terminal size for macOS 12
   * Update README.md
   * opengl: use premult alpha on fg color to avoid dark edges
   * add app runtime option, add gtk backend
   * init gtk app
   * setup app, run works but crashes in OpenGL
   * opengl: support loading global gl functions
   * apprt refactor in progress, launches glfw no window
   * Integrating new surface
   * rename more stuff
   * fix crashes on close
   * more crap
   * remove memory pool usage for mac
   * inherit font size works again
   * surface no longer has reference to app
   * apprt: C API for embedded updated to new style
   * main update to new runtime API
   * apprt/gtk: compiles again -- does nothing
   * apprt newWindow/newTab do not have to return a surface
   * apprt/glfw: fix macos build
   * gtk: hook up GL area and render a color
   * opengl: move screen size GL context changes into draw path
   * opengl: enable single-threaded draw
   * gtk: render!
   * gtk: get proper content scaling
   * gtk: proper surface cleanup
   * gtk: listen to should quit from app
   * gtk: start hooking up event callbacks
   * gtk: char input
   * gtk: key press/release
   * gtk: mouse input
   * gtk: mouse cursor pos and scroll
   * gtk: set cursor to ibeam over terminal surface
   * embedded: fix build
   * gtk: receive key press for all keys
   * opengl: make setting font size thread safe
   * gtk: make clear opengl requirements
   * don't log config its too noisy
   * metal: premult alpha for fg color
   * gtk: clipboard
   * gtk: set title stub
   * gtk: put gl area in notebook
   * gtk: add tab works
   * gtk: close tab button
   * gtk: new tab keyboard shortcut works
   * gtk: tab reordering, hide tab bar with one tab, etc.
   * gtk: close surface works
   * gtk: re-enable closing on no windows
   * gtk: convert keyvals back into unmodified keyvals for shifted ops
   * gtk: previous/next tab bindings
   * don't require runtimes to implement all callbacks
   * apprt: move newTab to a surface callback rather than app
   * "goto_tab" key binding to jump to a specific tab, defaults to Super+N
   * gtk: previous/next tab wraps
   * gtk: handle <tab> so it doesn't move focus
   * build: don't build bench by default
   * build: add freedesktop file and icon
   * fpm build deb
   * output runtime at startup
   * nix: remove dpkg
   * dist/linux: add freedesktop desktop spec file
   * nix: add flatpak-builder
   * vendor: update linux aarch64 sdk
   * build: omit icon that is too large for freedesktop
   * nix: need debugedit for flatpak-builder
   * Command/Pty work better with Flatpak but not 100% yet
   * add flatpak builder yml
   * os: add flatpak detection
   * ignore flatpak builder files
   * flatpak: use host-spawn to find default shell
   * passwd entry in flatpak needs to trim newlines
   * termio: use host-spawn for pty
   * flatpak: build GTK version
   * nix: flatpak stuff should go into linux section
   * flatpak.HostCommand wip
   * macos: on resize do not use the view frame
   * metal: use the screen size reported in the callback to resize
   * apprt/embedded: ignore size callbacks that change nothing
   * os: FlatpakHostCommand uses thread with its own event loop
   * passwd uses new FlatpakHostCommand
   * termio: exec uses new flatpak command, no more host-spawn
   * flatpak: disable strip -- causes crashes
   * termio: implement kill command for flatpak
   * termio: env should not freed because arena gets it
   * flatpak: enable ReleaseSafe
   * github: trying to add flatpak builds
   * ci: add flatpak builder
   * ci: try multiarch flatpak builder
   * ci: clean artifacts, move flatpak to release tip
   * remove gtk build from test, doesn't work in CI
   * build: install the proper linux desktop file depending on flatpak or not
   * flatpak: remove zig from final build
   * Update README.md
 .
   [ dependabot[bot] ]
   * build(deps): bump docker/setup-qemu-action from 1 to 2
 .
   [ dependabot[bot] ]
   * build(deps): bump flatpak/flatpak-github-actions from 4 to 5
   * update zig, src for loops
   * pkg: fmt
   * iterating on the new for loop syntax
   * update mach to fork for now
   * update flatpak to use latest zig
   * update zig-js for latest zig changes
   * update zig-objc for new for syntax
   * termio/exec: don't pass pointer to stack var
   * screen clone should not make full requested height "written"
   * screen: when resizing and trimming scrollback, have to offset cursor Y
   * screen: fix issue with resizing w/ more cols, reflow, and scrollback
   * screen: resize more rows preserves soft wrapped flag
   * screen: trim trailing no-character cells when rows is changing
   * screen: don't trim blank lines if rows aren't changing
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 19 to 20
   * screen: when expanding cols, broadcast empty styled cells
   * screen: don't wrap empty-char stylized cells on shrinking cols
   * screen: only trim if we're not wrapping on col growing
   * screen: grow cols before rows to handle reflow (tested)
   * screen: redo resizing to less columns
   * screen: correct cursor position with scrollback and less cols
   * terminal: erase display below should unwrap soft wrapped state
   * screen: shrinking cols trims trailing blank lines
   * screen: adding cols doesn't mess with the viewport
   * disable the auto balance config by default, add some padding
   * terminal: erase display complete needs to reset row wrap state
   * screen: resize rows should use old cols value
   * add log when config file is successfully read
   * config: add functions to load from home and load configured
   * macos: load config file default file locations
   * build_config sets runtime to "none" if embedded
   * clear_history binding, default Cmd+K
   * renderer: reset font shaper buffer size on font size change
   * can now use -Dfont-backend to choose the font backend to use
   * fix mouse position recording for x10 format
   * disable double/tripclick highlighting if mouse reporting is enabled
   * fix wasm build
   * don't need to set all sprite values in enum
   * Use procedurally generated sprites for cursors rather than shaders
   * build: generate a version number, show in log on startup
   * ci: automatically set macos app build number
   * ci: release tag after builds are done
   * build.zig handles tagged releases
   * metal: do not use setPurgeableState on MTLTexture/Buffer
   * ci: set git committer for release tag
   * macos: rename TerminalSurfaceView to TerminalSurface
   * macos: making the surface state get passed down...
   * macos: get rid of delegates on our surface view
   * macos: working on splits
   * macos: window tracking cleans up observers properly
   * macos: fix state handling of terminal surface in split
   * macos: massive reorg
   * macos: change key window detection
   * macos: working on custom split view
   * macos: SplitView dragging
   * macos: use my new split view
   * macos: comment my split view
   * macos: fix focus on split change
   * macos: little tweaks
   * termio: coalesce resize events
   * input: new_split binding, can parse enums
   * apprt/embedded: newSplit callback
   * apprt/embedded: close surface callback
   * macos: nil bottomright when we close it
   * macos: set proper window title for focused split
   * macos: redo all the split views
   * macos: terminal split views handle nested close properly
   * macos: fix bug where like... 5 terminals were being launched in the background
   * macos: take over menu bar, separate close and close window
   * macos: close surface works
   * macos: menu bar to split
   * macos: properly lose focus on previous split when new split
   * update Zig version
   * update README
   * macos: hook up all the bindings so we're ready to handle focus event
   * macos: hook up previous/next split focus
   * macos: put next/prev split focus into menu
   * macos: change focus callback to use an enum so we can get other dirs
   * macos: navigate splits directionally
   * apprt/glfw: add logging with error information when glfw init fails
   * clean up some of the nix package building
   * build.zig: automatically patchelf the rpath when in a nix shell
   * build.zig: detect build outside of Nix environment and provide warning
   * macos: set default window size on macOS 13+
   * update libxev
   * ghostty.h: fix type usage before declaration
   * macos: explicitly free surface resource on split/tab close
   * macos: reliable window focus tracking for surface
   * Update README.md
   * apprt/gtk: make compatible with GTK < 2.74
   * Use proper Linux default keybindings
   * font/freetype: add a 1px border to each glyph in the texture atlas
   * linux copy/paste defaults to ctrl+shift+c/v
   * terminal: selectLine can select last line with scrollback
   * apprt/gtk: add more debug logs about scale factors
   * apprt/gtk: copy the app id because we need to own it according to docs
   * terminal: add missing anywhere states to ground, get rid of real state
   * terminal: clean up duplicate states in parse table
   * fix regression where BEL is accepted to end OSC sequences
   * linux: proper split shortcuts
   * support mouse alt scroll (mode 1007)
   * handle horizontal scrolling for mouse reports
   * termio: detect child process exit
   * pty: deinit should close child end
   * termio: close surface on process exit
   * apprt: all implement close surface
   * termio: no need to close pty primary when process exits
   * remove unused function, make apprt surface close mandatory
   * apprt/gtk: do not use unique app mode (do not set ID for GApplication)
   * apprt/embedded: incorrect function call for new close surface
   * update TODO!
   * config supports clone() operation for a deep copy
   * config: implement change iterator (one todo)
   * config: changed() to test if a specific key has changed
   * config: implement comparison for keybinding change
   * config: dedicated load func so we can reload
   * surface doesn't store a pointer to Config anymore
   * make it claer the config pointer is not stable after renderer/IO init
   * move config loading into apprt to prep for reloading
   * implement reload_config app message
   * reload_config keybinding (defaults to ctrl+alt+super+space)
   * apprt/embedded: reload config support
   * ghostty.h: add missing reload callback
   * macos: implement config reloading callback
   * renderer: use a DerivedConfig to avoid the main Config pointer
   * surface propagates new config to renderer
   * termio: use DerivedConfig
   * termio/exec: comment about what we're updating
   * surface mouse_interval is dynamically update-able
   * termio: allow write req pool to grow if needed
   * update config messages use pointers now to make messages small again
   * don't look up default shell from SHELL env if shell is set
   * update zig-objc
   * terminal: implement focus event mode 1004
   * if no argv, then don't load CLI args
   * scroll viewport to bottom on certain character write events
   * ci: add timeout to release
   * move selection to screen
   * terminal: screen scroll with full scrollback modifies selection
   * terminal: selection within logic is more correct, better tested
   * core: scroll the surface when mouse is pulled above or below surface
   * update TODO
   * shift-click extends selection
   * renderer/metal: fix color bug on macOS 13 Intel.
   * selection: containedRow for getting the row that contains a screen point
   * font/shaper: split runs at selection boundaries
   * renderer/Metal: split runs on selection
   * font/shaper/web_canvas: needs to add null selection for shaper test
   * terminal: selectWord stops at single/double quote boundaries
   * terminal: parser must reset intermediate storage for utf8
   * build compiles at least
   * build: run tests
   * use new build struct
   * don't prefix warning
   * update zig bins for flatpak
   * copy mac binary must depend on binary
   * macos: translate ASCII keys
   * core: input bindings support unmapped bindings
   * apprt/glfw: new keycallback for unmapped
   * apprt/embedded: support unmapped keys
   * apprt/gtk: fix key callback
   * apprt/gtk: always confirm when surface is closed
   * apprt/gtk: only show exit confirmation if process is alive
   * apprt/embedded: support new process alive callback on close
   * apprt/gtk: set proper defaults to confirmation dialog
   * macos: show close confirmation if running process exists
   * macos: Cmd+W closes settings window if focused
 .
   [ Jakub Konka ]
   * macos: force macOS 12 SDK for latest macOS 13 as Mach does not support it
 .
   [ Mitchell Hashimoto ]
   * macos: confirm on quit
   * macos: only show confirm quit on focused window
   * macos: quit if we have no visible windows
   * core: quit flag is reset after tick
   * apprt/gtk: close keybind doesn't leak memory
   * apprt/gtk: close tab button will show confirmation properly
   * apprt/gtk: window close confirmation
   * apprt/gtk: quit confirmation window
   * apprt/glfw: quit cleans up resources properly
   * selection toViewport point should extend to end of last row
   * vendor/mach: go back to mainline
   * vendor/zig-objc update
   * update zig
 .
   [ dependabot[bot] ]
   * build(deps): bump flatpak/flatpak-github-actions from 5 to 6
 .
   [ Jack Pearkes ]
   * config: add confirm-close-surface
   * pass through confirm close config in surface
 .
   [ Mitchell Hashimoto ]
   * remove mach, specialize to mach-glfw
   * update build
   * vendor/zig-objc
   * update zig version
   * update zig version
   * macos: don't block shutdown/restart on confirmation
   * fix some issues for future Zig update
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 20 to 21
   * renderer: do not draw cursor cell inversion if we don't draw the cursor
   * update zig
   * update flatpak zig binary URLs
   * update required zig version in build.zig
   * linux: fit gtk/flatpak builds
   * mac: fix split initial focus
   * terminal: track semantic prompt metadata per row
   * termio/exec: handle semantic prompt events
   * core: surface confirm close logic updated to handle semantic prompts
   * terminal: don't log semantic prompt marks
   * Update README.md
   * apprt/embedded: clipboard value can be null
   * update zig version
 .
   [ Thorsten Ball ]
   * Handle non-printable characters when ctrl is pressed
 .
   [ Mitchell Hashimoto ]
   * update zig
   * terminal: parse OSC 133 A redraw like kitty
   * terminal: semantic prompt aware resize
   * terminal: tests for semantic prompt on resize
   * terminal: osc 7 parsing
   * terminal: track pwd reported via OSC 7
   * app keeps track of last focused surface
   * apprt/embedded: new surfaces inherit last focused
   * termio/exec: check cwd validity
   * apprt/glfw: inherit working dir
   * apprt: clean up how apprt initializes surfaces
   * update README
   * font: if CoreText needs to allocate, stack allocate and log
   * update zig version
   * update cachix action for macos 12
   * various tests to ensure we parse curly underlines correctly
   * terminal: parse underline color sequences (but do not handle yet)
   * terminal: track underline color on cell
   * renderer: render underline color if set
   * finalize comments
   * font: curly underline has a minimum wave height
   * font: fix double underline drawing with very low underline positions
   * font: remove old logging
   * font: underline sprites should never go out of bounds for canvas
   * log emoji font as info, log that fonts are using default
   * config file quoted strings are accepted now
   * font: run splitting needs to detect italics
   * terminal: correct assertion for scrollUp
   * terminfo: basic Source structure and can encode
   * terminfo: working on Ghostty's terminfo
   * build: build.zig encodes and writes the terminfo source
   * build: use tic to compile terminfo into database format
   * nix: add ncurses so we have access to tic, infocmp, etc.
   * terminfo: a bunch more capabilities
   * terminfo: more capabilties, I think this is all of them
   * ghostty encoding test needs more buffer
   * os: exePath to get path to running executable
   * build: copy terminfo data into Mac app bundle
   * ci: during release builds, copy terminfo db into mac app bundle
   * termio: sets TERMINFO if we can find the terminfo dir
   * use stdlib selfExePath
   * build: copy the terminfo db using cp so we get symlinks
   * build: fix race conditions, use actual filesource
   * terminfo: fix 0 => O
   * terminfo: switch to semicolon SGR 48 to prevent render issues
   * terminal: reset CSI param separator in parser on clear
   * build: fix race condition in build on creating 'share' dir
   * build: Copy terminfo resources from xcodeproj
   * terminal: SGR parse invisible (attr 8, 28)
   * renderer: support invisible attribute
   * ci: release process must preserve symlinks
   * terminal: horizontalTabBack function
   * terminal: CHT/CBT
   * CSI W - cursor tabulation control
   * CSI ? W
   * CSI f
   * CSI aliases
   * Update zig, mach, fmt
   * update libxev
   * fix min usage in src/os
   * build.zig update min version
   * update flatpak build
   * update zig-js for wasm
   * mouse shift-click only continues previous event if selection is active
   * shift+click to override "grabbed" mouse events and select
   * mouse button codes for right/middle were swapped!
   * define precision scrolling and momentum structs, C API
   * apprt: plumb through scroll mods to core, don't handle them yet
   * macos: build scroll mods value
   * core: do high precision scrolling Y calculations
   * scale x, speed up scrolling
   * Update Zig (#164)
   * build: update min required zig version
 .
   [ Thorsten Ball ]
   * macOS: change quit dialog to handle return by removing role
 .
   [ Evan Phoenix ]
   * Use the precision calculation to determine when to send mouse events
 .
   [ Thorsten Ball ]
   * macOS: implement cmd+[0-9] to goto tab
 .
   [ Mitchell Hashimoto ]
   * macos: attach gotoTab listener to contentView and filter on focused win
   * log if a configured font is not found
   * coretext: calculate units per em/point
   * coretext: initially fill grey
   * fix up for new zig
   * font: remove the old comment about not doing the grey stroke
   * coretext: the size needs to be in pixels! (see comment)
   * coretext: rasterization looking cleaner
   * cleaning up rasterization, comments
   * coretext: colored glyph rendering
   * coretext: validate atlas depth matches color depth
   * coretext: fix emoji placement
   * coretext: handle glyph padding in region reservation
   * coretext: layout rect must fit all chars
   * coretext: improved baseline calculation
   * coretext: do not treat color diffs special for offset
   * sprite: all rasterized sprites should have a 1px padding
   * coretext: remove the old renderGlyph impl
   * font: comment out debug logs
   * font: update comment
   * font: turn rasterization options into a struct, add thicken
   * renderer: hook up font thickening setting
   * font: default rasterizer on macOS is now coretext
   * coretext: tweak underline position
   * coretext: address TODO
   * pkg/macos: do not use bitCast through a function
   * font: do not use Noto on macOS for tests, it doesn't work
   * renderer: remove metal workaround, this caused crashes on x86_64
   * fix failing test on non-Mac
   * remove metal workaround completely
 .
   [ Thorsten Ball ]
   * Toggle fullscreen on super/ctrl+return, only macOS for now
   * README: show how to set color palette in config
 .
   [ Mitchell Hashimoto ]
   * macos: make close the terminal button non-destructive
   * adjust mouse selection calculation for window-padding settings
 .
   [ Thorsten Ball ]
   * gtk: handle ctrl+return to toggle fullscreen
 .
   [ Mitchell Hashimoto ]
   * fix old zig fmt in blocks.zig
   * Change font metrics to all be integers, not floats.
   * coretext: switch up positive/negative y axis values
   * coretext: use alternate approach to calcaulate cell height and ascent
   * update nix to 23.05
   * Revert "update nix to 23.05"
   * font: support skew transform for auto-italics
   * font: don't fallback styles when searching for a codepoint
   * font: share skew matrix for core text
   * nix: update to python3
   * config: add background-opacity and float parsing for config
   * metal: start setting up background transparency
   * metal: apply background opacity
   * apprt: add C API for detecting background transparency per surface
   * config: clarify reload
   * opengl: support background opacity
   * apprt/gtk: honor background opacity
   * background-blur-radius for macOS
   * update zig
   * bar cursor was short by a couple pixels
   * font-feature config to enable/disable OpenType Font Features
   * clear_screen keybinding works even when not at shell prompt
   * clear_screen uses FF (0x0C) if cursor is at prompt
   * terminal: jump to prompt core methods
   * keybinding jump_to_prompt for semantic prompts
   * terminal: scroll to row always tries to get it to the top
   * start shell-integration folder, copy into zig-out
   * termio/exec: refactor resources dir lookup to prep for shell integ
   * termio: fish shell integration injection
   * fish shell integration
   * fish: pwd reporting
   * zsh files starting
   * zsh integration
   * config: support parsing enums
   * allow configuring shell integration injection
   * change "auto" to "detect" for shell integration
   * config: support enum cloning
   * update README
   * renderer: double line widths for sprite fonts when font-thicken is true
   * terminal: do not scroll viewport if new lines are added while scrolled
   * terminal: rename scroll "delta/delta_no_grow" to screen/viewport
   * update zig
   * update freetype to 2.13.1
   * vendor: update harfbuzz
   * vendor: update pixman
   * vendor: update libpng
   * vendor: update utf8proc
   * terminal: add screen.dumpString
   * terminal: don't export plainString, its only for testing
   * add os.tmpDir to get the recommended temp dir base path
   * move TempDir to src/os and use the real tmpDir
   * write_scrollback_file binding
   * do not write scrollback file for alternate screens
   * renderer: do not blink explicit steady cursor styles
   * font: block cursor was not taking full cell width
   * move a bunch of files to src/os
   * validate locale prior to setting, fallback to en_US.UTF-8
 .
   [ Thorsten Ball ]
   * gtk: change default window size to 1000x600
   * Fix blurry fonts by flooring padding of surface
 .
   [ Mitchell Hashimoto ]
   * renderer: change padding to integers
   * reset LANG env var if we set it and it is invalid
   * update zig version
   * font/shaper: text runs should split around block cursors
   * font/shaper: do not break on merged emoji if cursor is directly on it
 .
   [ Thorsten Ball ]
   * locale: set LANG to the fallback value if we have invalid locale
   * locale: remove default value for local dev env
 .
   [ Mitchell Hashimoto ]
   * update zig
   * Revert "update zig"
   * update zig
   * update libxev
   * CSI for SGR only if there are no intermediates
 .
   [ Thorsten Ball ]
   * gtk: remove thin, white border
   * config: change default keybind for goto-split on non-Darwin
 .
   [ Mitchell Hashimoto ]
   * update zig
 .
   [ Thorsten Ball ]
   * gtk: add missing space in close dialog and add newline
 .
   [ Mitchell Hashimoto ]
   * update zig
   * fix various build scripts
   * switch back to mach-glfw fork
   * update flatpak builder to correct zig version
   * update build.zig required zig version
   * add README for testers
   * HTML tweak
   * termio/exec: default window title to the pwd if not reported
   * default the title to the ghostty emoji
   * shell-integration/zsh: enable title changes
 .
   [ Thorsten Ball ]
   * macos: add support for non-native fullscreen mode
   * Add config setting to turn non-native fullscreen on or off
 .
   [ Mitchell Hashimoto ]
   * macos: merge AppController and AppDelegate, organize groups
   * macos: reorganize, rename, put files in groups
   * set the title of the window
   * macos: implement newWindowForTab for "+" button
   * macos: "+" button ensures tab is added to same window group
   * macos: new tab menu/shortcut works even if no windows are present
   * apprt/gtk: fix build for macos non-native fullscreen changes
   * only send resize messages to renderer/io thread if changes happen
   * update tester readme info
   * macos: Cmd-Q without any window focus works
 .
   [ Thorsten Ball ]
   * macos: re-add Edit submenu to main menu
 .
   [ Mitchell Hashimoto ]
   * macos: remove unimplemented menu items
   * macos: quit menu should say "Ghostty"
   * C API for invoking bindings
   * macos: enable copy/paste menu items in "Edit"
   * macos: help menu goes to the github repo
   * input: support assigning integer binding action values
   * bind shift+<page-up/down> to jump_to_prompt back/forward, respectively
   * termio: respect GHOSTTY_RESOURCES_DIR
   * update README with shell integration instructions
   * renderer/opengl: need to release OpenGL context with glfw
   * fix keybind example in README
 .
   [ Thorsten Ball ]
   * flatpak: install icon files to `/apps` path
 .
   [ Mitchell Hashimoto ]
   * renderer: hide cursor is state explicit asks for invisible cursor
   * terminal: implement insert mode (mode = 4)
   * tests for insert mode (4)
   * CSI r for top/bot margin must have no intermediates
   * build: always add /usr/lib/{triple} to search path for Linux
   * build: add libxml2/libbuid for fontconfig dynamic link for CI
 .
   [ Thorsten Ball ]
   * macOS: explicitly name the NSMainNibFile in plist
 .
   [ Mitchell Hashimoto ]
   * build: dynamic link first (mode_first)
   * nix: remove unused libs
   * build: update flatpak to point to correct zig version
   * make keyboard modifiers left/right-aware throughout core
   * apprt/gtk: new input mods format
   * bindings can contain directional modifiers: left_shift+a
   * non-macos doesn't support directional bindings
   * key: fix wrong comment
   * search for resources dir relative to executing binary on Linux (#245)
   * change sentinel value for resources dir, its different on Linux
   * Revert "Merge pull request #244 from mitchellh/alt-as-esc"
   * apprt/gtk: enable single instance mode
   * apprt/glfw: launch window on startup
   * termio: use a pipe to notify the reader thread to quit
   * termio/exec: set pty fd to non-blocking, try to read as long as possible
   * termio/exec: if read thread gets 0 bytes then break the tight loop
   * termio/exec: make sure that process is dead before killing read thread
   * apprt/gtk: remove useless calls
 .
   [ Kevin Hovsäter ]
   * Fix typos
 .
   [ Mitchell Hashimoto ]
   * update nix to 23.05 (#250)
   * termio/exec: poll() needs a negative timeout to block 🤡
   * os: add resourcesDir function to find app resource dir
   * core: App looks up resources dir on startup
   * plumb through the resources dir to termio
   * apprt/gtk: set icon name
   * apprt/embedded: new resources dir api
   * revert back to nix 22.11, see comment
   * keyboard bindings should never take caps/num lock into account
   * bind sequences for PC style function keys from xterm
   * scroll top, bot, page up, page down binding actions
   * scroll_page_fractional keybinding
   * linux default keybindings for scroll top, bot, page up, down
   * update libxev to fix split writes on large writes (i.e. big paste)
   * fix error set for libxev cross-platform
   * ctrl+backspace should send 0x08
 .
   [ Thorsten Ball ]
   * gtk: fix arrow-up stealing focus
 .
   [ moderation ]
   * gtk: apply background opacity
 .
   [ Mitchell Hashimoto ]
   * apprt: primary clipboard awareness (selection clipboard)
   * selection copies to the selection clipboard
   * apprt/gtk: use glfw for reading primary clipboard (see comment)
   * apprt/glfw: support primary clipboard
   * apprt/embedded: support selection clipboard
   * "copy-on-select" configuation to disable
   * apprt/embedded: allow noting that selection clipboard is not supported
   * apprt/glfw: warn that the macos version has bugs
   * warn if the binary is a debug build
   * do not process charCallback if control character was processed
 .
   [ cryptocode ]
   * Don't show hollow cursor in inactive windows when cursor is hidden.
 .
   [ Mitchell Hashimoto ]
   * input, macos: initial work on keymapper and macos usage of it
   * macos: detect keyboard layout change and reload the keymap
   * apprt/embedded: keymap state is per surface, not per app
   * input: associate input.Key with keycodes from Chrome
   * keymap had incorrect bitfield for modifiers
   * macos: use the new self-hosted translation
   * apprt/embedded: remove old _key api, new only!
   * apprt/embedded: handle repeat events
   * core: note when keyCallback processed the input
   * apprt/embedded: fix char callback ignore when key is consumed
   * input: only load Keymap on darwin
   * input: printable, comment on what magic indexes mean
   * apprt/gtk: use manual translation, handle dead key states
   * core: get rid of ignore_char, apprt must handle this now
   * input: rename Keymap to KeymapDarwin since its macos only for now
   * input: rename "unmapped" to "physical"
   * support preedit text rendering in core and metal
   * apprt/gtk, opengl: render preedit
   * terminal: allow selections outside of written area and clamp
   * terminal: delete wide char if it wraps and we delete the row above
   * terminal: resize more cols with wide spacer head deletes the spacer
   * terminal: resize more cols with wide spacer head across multiple lines
   * terminal: introduce wide spacer head if reflowing wide char w/ more cols
   * terminal: less col resizing with wide char needs to insert head spacer
   * terminal: resizing to 1 col wide with wide chars
   * terminal: print wide char with 1-col width
   * terminal: avoid underflow on resize, tests added
   * ci: use custom token for release so it isn't rate limited
   * input: carbon modifier bits were not correct for some modifiers
   * only initialize font discovery mechanism once, cache on App
   * only the app should own the font discovery instance
   * update to nix 23.05
   * build: remove hardcoded glibc, I don't think this error is happening
   * apprt/gtk: inherit font size on new windows and tabs
   * add more ctrl key sequencs for legacy ascii
   * core: translate alt- prefix to an esc (0x1B) prefix
   * macos-option-as-alt config, handle alt-prefix for charCallback
   * input: add all the mappings for pc style function keys
   * core: match and emit function keys
   * terminal: handle set application keypad mode (both ESC and modes)
   * terminal: parse and handle set modify key format (ESC[>{a};{b}m)
   * terminal: support disable modify key format sequence ESC[>n
   * config: remove pc style function keys, handled separately now
   * parse and respect mode 1036
   * apprt/glfw: send mods to charcallback
   * terminal: parse mode 1039
   * input: various more helpers
   * terminal: ignore ESC \ which enables ST mode since we're always in it
   * apprt/gtk: convert keyval to unicode if input method doesn't process
   * input: unify binding-sensitive mods to a single func
   * input: expand Mods size, convert everything to use it
   * macos: send the left/right status of modifier keys
   * config: macos-option-as-alt now accepts "left", "right"
   * modifyOtherKeys state 2 should send sequences for all chars
   * modify keys state 2 depends on some scenarios
   * termio: send VT220 device attributes on request, add secondary
   * terminal: working on new modes storage abstraction
   * terminal: ModeState can save/restore one set of modes
   * apprt/embedded: keycallback should use nomod text to determine key
   * terminal: move to new modes struct
   * terminal: parse and handle save/restore mode (CSI ? s, CSI ? r)
   * termio: on restore mode we need to call setMode no matter what
   * renderer/opengl: fix compilation for new modes style
   * terminal: add a test to verify our grapheme state is what we expect
   * terminal: do not crash if selecting a wide spacer on a soft-wrapped line
   * terminal: selection string must include grapheme data
   * font: shaper doesn't split run on selection if selection splits grapheme
   * apprt/gtk: translate keyval if there is no utf8
   * macos: do not send ctrl or super into UCKeyTranslate
   * core: process fixterms sequences for modified unicode characters
   * core: add KeyEvent
   * input: starting to work on KeyEncoder, got ctrl sequences
   * input: KeyEncoder legacy encoding handles old keyCallback logic
   * input: KeyEncoder handles the charCallback stuff now too
   * input: legacy key encoding handles alt-as-esc for general utf8
   * core: start on key2Callback for the new callback that uses KeyEncoder
   * input: legacy encoding never emits sequence during dead key state
   * input: encoding should always write to the buf
   * apprt/gtk: call new key2callback using the all-in-one key event
   * apprt/gtk: clean up keyval_unicode usage
   * apprt/gtk: only use key2callback
   * apprt/embedded: only call new key2callback
   * apprt/glfw: convert to new key2callback
   * remove charCallback/keyCallback
   * rename key2callback to keycallback
   * input: CSI u encoding for modified unicode chars
   * input: clarify why we use all mods for unicode CSI u
   * input: do not send ctrl-sequences for ctrl-i,m,[
   * bindings should not use consumed modifiers
   * terminal: add Kitty key flags, stack
   * terminal: parse kitty query, push, pop keyboard flags
   * terminal: implement CSI = u for setting kitty keyboard flags
   * terminfo: add fullkbd for kitty keyboard protocol
 .
   [ Thorsten Ball ]
   * macOS: remove dead code from PrimaryWindowController
 .
   [ Mitchell Hashimoto ]
   * input: add kitty keymap data
   * input: begin kitty key encoding logic (not working yet)
   * input: KittySequence for encoding sequences
   * input: lot more Kitty encoding logic
   * core: use Kitty encoding if enabled
   * input: key must provide unshifted codepoint
   * input: Kitty encodes alternate keys
   * input: proper optional entry handling
   * input: repeat events need to be handled for Kitty w/o report events
 .
   [ Thorsten Ball ]
   * macOS: inherit font size when creating new tab
   * macOS: move newTab code to PrimaryWindowManager
 .
   [ Mitchell Hashimoto ]
   * apprt/glfw: always say alt is consumed on macos
   * input: remove old TODO. This is handled now in the app runtimes
   * shell-integration: add bash script (no auto-inject yet)
   * terminal: ignore SOH/STX, bash sends this for some reason
   * Note bash shell integration in README
   * Update README.md
   * termio: disable kitty keyboard protocol for glfw
   * build: make glfw opt-in on all platforms, default to GTK on Linux
   * update README
 .
   [ Thorsten Ball ]
   * macOS: simplify code for new tab
 .
   [ Mitchell Hashimoto ]
   * Simplify Bash Integration (#299)
 .
   [ Thorsten Ball ]
   * embedded: use separate struct to pass options to new_tab_cb
 .
   [ Mitchell Hashimoto ]
   * Fix rendering issues with bash shell integration (#301)
   * build: fix linking bugs for macos test
   * build: imgui should not be linked without an apprt
   * build: gtk needs imgui
   * terminal: proper reverseIndex behavior with scroll region set
   * mouse scroll events were flipped for non-cursor key events
   * macos: pass around a base surface_config_s rather than a new tab
   * apprt/embedded: use setfontsize so that the original font size is retained
   * c include: u8 => u16
   * macos: can always set base config on new tab
 .
   [ Jack Pearkes ]
   * Tweak testing README
 .
   [ Mitchell Hashimoto ]
   * config: repeatablestring must copy values it parses into arena
   * renderer/{metal,opengl}: need to premult our cell alpha to have effect
 .
   [ Thorsten Ball ]
   * macOS: new window can inherit font size
   * macOS: new split can inherit font size
   * macOS: reduce mechanism to create windows back to one
   * macOS: fix cascading windows when using tabs and closing windows
 .
   [ Mitchell Hashimoto ]
   * Update TODO.md
   * remove imgui and devmode
   * update to 0.12.0-dev.141+ddf5859c2
   * terminal: CSI < u defaults param to "1" if not set (pop kitty keyboard)
   * core: send pixel-level surface sizing to the pty
   * terminal: parse APC strings
   * termio/exec: process APC callbacks
   * termio/exec: limit max apc string length
   * terminal: move kitty keyboard protocol to its own file
   * terminal: kitty graphics command/control structs
   * terminal: initial kitty graphics command parsing
   * terminal: a lot more kitty command parsing
   * terminal: all commands parsed, need tests
   * terminal: tests for kitty command parsing
   * terminal: more comments for kitty command parsing
   * terminal: kitty parser get a little clever, keys are always a char
   * terminal/kitty-gfx: optimize some of our kv parsing
   * terminal/kitty-gfx: clean up a lot more memory management
   * terminal: generalized APC handler
   * move stb to src/stb, add stb_image for png decoding
   * terminal/kitty-gfx: support "query", loading images, tests
   * terminal/kitty-gfx: handle quiet settings for response
   * terminal/kitty-gfx: add some validation from Kitty
   * terminal/kitty-gfx: better memory ownership semantics around func calls
   * terminal/kitty-gfx: start terminal state, can load and add images
   * terminal/kitty-gfx: start working on placements
   * terminal/kitty-gfx: placement now works properly
   * terminal/kitty-gfx: assign an internal image id
   * terminal/kitty-gfx: huge progress on chunked transfers, lots of issues
   * terminal/kitty-gfx: fix big chunked load memory leak
   * terminal/kitty-gfx: zlib decompression for data validation
   * terminal/kitty-gfx: loading non-chunked image takes data slice ownership
   * terminal/kitty-gfx: fix broken tests
   * terminal/kitty-gfx: the data is base64 encoded!
   * input: pc style function keys should use all mods, not effective
   * terminal/kitty-gfx: add debug function to dump image data
   * terminal/kitty-gfx: decompress as part of image completion, tests
   * terminal/kitty-gfx: test for non-compressed rgb image
   * terminal/kitty-gfx: base64 decode data as it comes in
   * terminal/kitty-gfx: centralize all image loading on LoadingImage
   * terminal/kitty-gfx: move all image decompression to loadingimage
   * terminal/kitty-gfx: test chunked loads
   * terminal/kitty-gfx: temporary file medium
   * terminal/kitty-gfx: file medium
   * terminal/kitty-gfx: png decoding
   * terminal: clear screen, alt screen, etc. clear all kitty graphics
   * terminal/kitty-gfx: make some args const
   * renderer/metal: images required by placements become textures
   * renderer/metal: deallocate unused image textures
 .
   [ Kevin Hovsäter ]
   * Allow optional OSC 52 parameter
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: extract helpers for shaders/buffers
   * renderer/metal: first pass at an image shader
   * renderer/metal: emit draw calls for images
   * renderer/metal: set correct x/y for image
   * renderer/metal: clip image if necessary off top of viewport (scrolling)
   * terminal/kitty-gfx: move cursor after image placement
   * terminal/kitty-gfx: cursor pos x/y were flipped
   * terminal/kitty-gfx: down movement off by one
   * renderer/metal: image should always be rendered at desired x
   * terminal/kitty-gfx: add placement function get selection
   * renderer/metal: honor cell offset graphics command
   * terminal/kitty-gfx: process source rectangle display params
   * terminal/kitty-gfx: respect display c/r params
   * terminal: mark kitty images as dirty on resize
   * input: kitty encoding should only output unmodified utf8 if printable
   * terminal: delete lines (CSI M) should clamp count to remaining lines
   * terminal/kitty-gfx: honor "z" setting
   * terminal/kitty-gfx: delete by id
   * terminal/kitty-gfx: delete intersecting cursor
   * terminal/kitty-gfx: delete intersection
   * terminal/kitty-gfx: we need to use rect, not sel
   * terminal/kitty-gfx: delete by column, row, z
   * terminal/kitty-gfx: images store transmit time
   * terminal/kitty-gfx: delete newest
   * terminal/kitty-gfx: hook up delete
   * terminal/kitty-gfx: get rid of selection
   * ci: disable wasm build for now
   * terminal/kitty-gfx: add file loading safety checks from Kitty
   * terminal/kitty-gfx: add per-screen storage limit
   * terminal/kitty-gfx: update todo
   * config: image-storage-limit to set maximum image memory per terminal
   * terminal/kitty-gfx: only enable on Metal for now
   * terminal/kitty-gfx: chunked transmit and display
   * terminal/kitty-gfx: data chunk can be zero size
   * terminal/kitty-gfx: ignore extra base64 padding
   * terminal/kitty-gfx: transmission only sends response when no more chunks
   * terminal/kitty-gfx: do not send response on transmit/display unless I
   * terminal/kitty-gfx: add error if both image id and num is set
   * termio/exec: initial subprocess screen size should be sub padding
   * terminal/kitty-gfx: todo notes
   * remove kitty graphics from TODO
   * update zig
   * renderer/opengl: glyphs that are too wide should be scaled down
   * apprt/embedded: do not translate control characters
   * Revert "Merge pull request #322 from mitchellh/big-glyphs"
   * input: kitty should not encode modifier-only key unless "report all"
   * build: can select renderer with -Drenderer
   * quirks: Menlo/Monaco should disable ligatures by default (#331)
   * font: Group maintains face ownership
   * font: move auto-italicization to Group
   * font: DeferredFace can no longer represent a loaded face
   * font: DeferredFace.name takes a buffer
   * font: determine quirks modes on font face load
   * font: fontconfig adaptations to new api
   * core: set focused surface pointer to null if matches on delete
 .
   [ Kevin Hovsäter ]
   * Implement cursor text in addition to color
 .
   [ Mitchell Hashimoto ]
   * input: keypad enter should act as normal "\r" if no other seq matches
   * font: grapheme clusters need to find a single font for all codepoints
   * config: add doc comment for cursor-text
 .
   [ Seth Rider ]
   * Set gtk window title on change and tab swap (by key command)
 .
   [ Mitchell Hashimoto ]
   * font/shaper: on macos load apple color emoji for tests
 .
   [ Will Pragnell ]
   * macos: fix non-native fullscreen dock/menubar bugs
 .
   [ Mitchell Hashimoto ]
   * remove pixman submodule
   * add pixman vendor without submodule
   * macos: add necessary functions for variation axes querying
   * font/coretext: ability to set variation axes
   * font/coretext: log the variation axes in debug mode
   * config: new "font-variation" set of configurations to set variable font
   * font: freetype supports font variation settings
 .
   [ Seth Rider ]
   * use Gtk.Notebook::switch-page callback for setting window title
 .
   [ Mitchell Hashimoto ]
   * terminal: screen test dumpString function should add graphemes
   * terminal: resize with less cols preserves zero width codepoints
   * terminal: test to ensure that DECRQM can parse
   * terminal: implement DECRQM (request mode)
 .
   [ SoraTenshi ]
   * config: Add option for custom cursor style
   * Add Caveat information for shell integration
 .
   [ cryptocode ]
   * Set TERM_PROGRAM and TERM_PROGRAM_VERSION environment variables.
   * Add comment explaining the purpose of the env variables
 .
   [ Mitchell Hashimoto ]
   * termio: handle all the synchronized output setting, timer
   * renderer: do not render if synchronized output is on
   * termio/exec: disable synchronized output mode on resize
 .
   [ moderation ]
   * vendor: update zlib
 .
   [ Mitchell Hashimoto ]
   * font/sprite: fix horizontal dash drawing math for cells too small
   * renderer: split ligature around cursor even if cursor is flashing
   * font/shaper: split ligature around cell style change
   * terminal: tabstops were off by one
   * surface should default to default cursor, blinking should check selected
   * terminal: get rid of duplicate RGB struct
   * terminal: add w3c luminance formula
   * terminal: add contrast function based on w3c
   * terminal: sgr parsing doesn't parse 4-form 48, allows unstyled underline
   * terminal: resize more cols no longer preserves trailing stylized cells
 .
   [ Will Pragnell ]
   * termio/exec: don't leak zombie subprocesses
 .
   [ Mitchell Hashimoto ]
   * input: move action parsing to dedicating Action.parse
   * apprt/embedded: ghostty_surface_binding_action can now run any action
   * add ghostty_config_trigger C API to find a trigger for an action
   * macos: begin syncing menuitem key equivalents
 .
   [ Will Pragnell ]
   * command: only spin on waitpid if it's non-blocking
 .
   [ Mitchell Hashimoto ]
   * macos: complete lookup table for key equivalents
   * macos: sync many more menu items
   * macos: sync File menu
   * macos: sync all remaining menu items
   * macos: setup delegate for app state, config reload callback
   * input: maintain a reverse mapping to quickly look up trigger by action
   * input: when overwriting a binding, we must update the reverse map
   * input: kitty keymap was missing page up/down
   * remove some unreachables, log errors to avoid crashes
   * terminal: CSI S allows for count greater than scroll region height
   * terminal: delete chars (CSI P) tested, fixes many issues
   * terminal: add more assertions
   * terminal: delete lines outside of scroll region should do nothing
   * terminal: charset table should be len 256, not 255
   * font: don't use intCast on index
   * update libxev to fix CPU issue on macos
   * terminal: fix unimplemented origin mode check
   * macos: break reference cycle to window to allow window to free memory
 .
   [ Karol Bakunowski ]
   * macos: default to sRGB color space
 .
   [ Mitchell Hashimoto ]
   * update README to hide glfw
   * macos: hacks to grab surface focus on macOS 12
 .
   [ Will Pragnell ]
   * macos: add visible-menu non-native-fullscreen option
   * macos: fix non-native-fullscreen menu & dock visibility bugs
 .
   [ Mitchell Hashimoto ]
   * macos: hacks for split focus to work correctly on macos 12
 .
   [ Mat ]
   * Update font DPI when the content scale is updated
   * use a const scoped block for font size
 .
   [ Mitchell Hashimoto ]
   * content scale change events should also impact viewport padding
   * terminal: CSI P must shift all remaining columns to right of cursor
   * update README with additional shell integration notes
   * core: add zoom keybinding for splits
   * core: add unzoom_split binding
   * macos: support zoomed splits
   * turn zoom into a toggle rather than an explicit zoom/unzoom
   * macos: zoomed splits put an emoji in the title bar
   * macos: new split on zoomed split unzooms
   * macos: close and refocus split work while zoomed
 .
   [ SoraTenshi ]
   * config: clean up cursor style configuration
 .
   [ Mitchell Hashimoto ]
   * update vendor/libxev to retry on EINTR for io_uring
   * update zig
 .
   [ Thorsten Ball ]
   * gtk: allow hiding window decoration in configuration
   * README: add notice about gtk single instance application
 .
   [ Mitchell Hashimoto ]
   * terminal: parse semantic prompt "k" (kind) parameter
   * terminal: mark prompt continuation lines, end prompt clear at first prompt
   * terminal: disable noisy logs
 .
   [ Will Pragnell ]
   * macos: fix split focus when toggling fullscreen
 .
   [ dependabot[bot] ]
   * build(deps): bump actions/checkout from 3 to 4
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 22 to 23
 .
   [ Thorsten Ball ]
   * gtk: add gtk-single-instance setting to allow disabling of it
 .
   [ Mitchell Hashimoto ]
   * renderer: always show cursor if window is not focused
   * macos: handle reopen event and open a window if none are visible
   * macos: dock menu
 .
   [ Thorsten Ball ]
   * gtk: add new-window action to .desktop files
   * nix: add latest version of `zls` to flake.nix
 .
   [ Mitchell Hashimoto ]
   * macos: key events for modifier-only keys
   * macos: add prev/next tab custom binding support
   * Big Cursor State Refactor
   * renderer/opengl: new cursor apis
   * termio/exec: ensure initial cursor blink mode is set to config
   * termio/exec: changing default cursor config updates at runtime
   * renderer: cursor style unit tests
   * macos: split traversal uses direction to determine proper focus target
   * macos: new window assertion is unnecessary
   * macos: fade unfocused splits
   * macos: add split zoom to menu
   * renderer: update some code comments
   * macos: disable hit testing for unfocused split rectangle
   * config: extract into dedicated dir, split into files
   * config: add C API ghostty_config_get to read configuration values
   * macos: use the configured unfocused split opacity
   * terminal: CSI q requires a space intermediate
   * renderer: implement underline cursor
 .
   [ tom speak ]
   * Update README.md Config location
 .
   [ Mitchell Hashimoto ]
   * config: cannot set underscore-prefixed fields
   * config: store some basic errors on parse
   * config: arg parser supports custom types with error tracking
   * config: store unknown errors in list too
   * apprt/glfw: log configuration errors
   * config: add ErrorList file
   * apprt/gtk: log configuration errors
   * macos: log configuration errors
   * config: turn invalid config-file values into errors in the list
   * README: note where config errors are logged
   * macos: UI for configuration errors
   * macos: fix some error window styling
   * macos: don't clear contentview for configuration on close
   * macos: add reload configuration to the Ghostty menu bar
   * macos: hook up proper data events
   * config: unify some error types for now
   * macos: don't steal focus for config errors
   * macos: add a reload configuration button
   * macos: reload config MUST go through Zig core
   * core: app needsConfirmQuit to streamline quitting if no active sessions
   * macos: integrate needsConfirmQuit to quit if all windows are at prompt
   * apprt/gtk: integrate app needsConfirmQuit
   * apprt/gtk: do not ask for confirm window close if all surfaces idle
   * ci: upload tip releases to blob storage
 .
   [ dependabot[bot] ]
   * build(deps): bump docker/setup-qemu-action from 2 to 3
   * macos: add button to ignore configuration errors
   * macos: use appearance-sensitive bg color for error window
   * core: surface should not use app mailbox
 .
   [ Gonzalo Diethelm ]
   * README: fix typos
 .
   [ Mitchell Hashimoto ]
   * remove flatpak
   * font: fallback search must verify presentation
   * core: do not do emoji font fallback on Linux
   * font: remove excess debugging code
   * core: do not preload Apple Emoji, our fallback search can find it
   * macos: AppState config must be published and observed
   * bring back built-in emoji font for Linux
   * typo in loading emoji font for linux
   * apprt/embedded: call core app reload config so changes go to all threads
   * config: default cursor style has to be block
 .
   [ Jonathan Marler ]
   * windows: initial support for zig build test
 .
   [ Mitchell Hashimoto ]
   * terminal: parse OSC 22
   * terminal: cursor shape parsing, hook up to apprt callback
   * apprt/glfw: support setting cursor shape
   * macos: support cursor style
   * apprt/gtk: support set cursor shape
   * rename cursor shape to mouse shape for OSC 22
 .
   [ Thorsten Ball ]
   * Fix compilation issues with GTK cursor support
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: cursor state should be on surface
   * apprt/gtk: apply GDK scale factor to mouse coordinates
 .
   [ cryptocode ]
   * Implement OSC 10 and OSC 11 default color queries
   * Review updates:
 .
   [ Mitchell Hashimoto ]
   * terminal: stylistic changes for OSC terminators, 10/11 params
   * config: change osc-color-report-format enum
   * mouse-hide-while-typing config and glfw implementation
   * macos: implement setCursorVisibility
   * apprt/gtk: implement hide cursor
   * if mouse hide setting changes to false, show mouse immediately
   * update config docs around mouse-hide-while-typing
   * core: resiliency to invalid base64 data for OSC 52
 .
   [ Will Pragnell ]
   * windows: implement tmpDir
   * windows: implement expandPath
   * fix references to jump_to_prompt binding
 .
   [ Tim Culverhouse ]
   * linux: don't presume install location in desktop file
   * gtk: handle all close-requests
 .
   [ Mitchell Hashimoto ]
   * Add --version for outputting version, framework for more actions
   * do not write logs to stderr for cli actions
   * can enable logging for CLI actions with GHOSTTY_LOG env var
   * cli actions can be "+<name>"
   * output more information for version
   * c api: add ghostty_info to get metadata about the build
   * macos: show warning in debug mode
   * apprt/gtk: show warning when running debug version
   * macos: consistent text
 .
   [ Will Pragnell ]
   * windows: use cross platform consts where available
 .
   [ Mitchell Hashimoto ]
   * main: only check for CLI actions on non-lib builds
   * gtk: set Name for new-window action
   * apprt/gtk: refactor into separate files
   * apprt/gtk: Window css styling is no longer used
   * apprt/gtk: shuffle some lines around in Window
   * renderer/opengl: OpenGL state may be nil to disable rendering
   * renderer/opengl: support reloading the Opengl state
   * apprt/gtk: handle scenario where OpenGL area becomes unrealized
   * renderer/opengl: gl state init needs to set blending, realization
   * gtk: tabs are draggable to the desktop to extract a window
   * apprt/gtk: listen to page-removed to hide tab bar if only one
   * apprt/gtk: don't use userdata for pages, can request on demand
   * terminal/kitty-gfx: erase all should preserve storage limit size
   * terminal: ignore CSI S with intermediates
   * core: do not emit mouse report events if position is outside surface
   * core: all SGR mouse report modes can tell button differences
   * core: send mouse motion events if motion tracking and button pressed
   * core: do not send repeat mouse events if cell didn't change
 .
   [ SoraTenshi ]
   * macos: allow to hide decorations
   * fixup! macos: allow to hide decorations
   * Store and restore style mask on fullscreen
   * Remove custom CAPI function
 .
   [ Will Pragnell ]
   * macos: always use latest window decoration config from runtime
 .
   [ Mitchell Hashimoto ]
   * c: remove unused struct field
   * macos: stylistic changes
 .
   [ SoraTenshi ]
   * Spawn alert box on new tab if decorations disabled
 .
   [ Mitchell Hashimoto ]
   * macos: remove unnecessary call
   * core: mouse reports should always send on release even if outside
   * core: don't send release events for key bindings
   * apprt/gtk: working on config errors window
   * apprt/gtk: add View to help with auto-layout views
   * apprt/gtk: extract config errors window into views
   * apprt/gtk: hook up buttons
   * apprt/gtk: grab focus of config window when reloading
   * apprt/gtk: update config error contents on reload
   * apprt/gtk: if errors fixed, hide window
 .
   [ Jonathan Marler ]
   * windows: fix fontconfig into libxml runtime crash from implicit func decl
 .
   [ Mitchell Hashimoto ]
   * core: only prevent repeat mouse events for motion
   * apprt/gtk: config errors is not an application window
   * apprt/gtk: initial app menu
   * apprt/gtk: key file for logic related to keys
   * apprt/gtk: window actions
   * apprt/gtk: new window, tab
   * apprt/gtk: add new tab button in header
   * apprt/gtk: add reload config
   * apprt/gtk: reset accelerators initially
   * apprt/gtk: about window
   * apprt/gtk: window actions should use currently active surface
   * ci: don't run gtk tests in CI
   * terminal: allow mixed semicolon/colon CSI m commands
   * terminal: CSI G must reset pending wrap state
   * update README for Linux installation notes
   * update README
   * update README
   * core: move clipboard to async process
   * macos: async style clipboard reading
   * apprt/gtk: async clipboard
   * input: kitty alternates and text should not include control characters
   * macos: send caps lock state to UCKeyTranslate
   * apprt/gtk: use gtk_keyval_to_lower to get unshifted
   * macos: prevent mouseEntered/Exited processing if already in that state
   * macos: change executale name to "ghostty" (lowercase)
   * macos: set env var for app bundle to detect app launch vs CLI
   * apprt/embedded: ghostty_cli_main
   * main: disable stderr logging by default for lib
   * macos: set the proper env var
   * os: appendEnv
   * termio/exec: remove GHOSTTY_MAC_APP on Mac
   * input: correct xterm encoding for modified F1-F4
 .
   [ Tim Culverhouse ]
   * terminal: respond to XTVERSION query
 .
   [ Mitchell Hashimoto ]
   * config: window-theme, enum support for get
   * macos: sync NSAppearance for app based on window-theme setting
   * macos: background-opacity getter
 .
   [ Tim Culverhouse ]
   * terminal: use larger buffer for xtversion response
   * osc: allow 0x20-0xFF in osc_put
 .
   [ Mitchell Hashimoto ]
   * terminal: CSI E and F
   * core: send proper reporting code for alt not super
   * macos: mouse tracking area should always send
   * macos: detect mouseEntered/Exit on frame change
   * apprt/gtk: always set app ID, use G_APPLICATION_NON_UNIQUE instead
   * update zig to 0.12.0-dev.464+a63a1c5cb
 .
   [ Tim Culverhouse ]
   * terminfo: add Smulx (underline styles) entry
 .
   [ Mitchell Hashimoto ]
   * apprt/embedded: initialize unmodified keystate prior to use
   * renderer/opengl: only skip drawing cells if they're empty, not clear
   * renderer/opengl: remove gpucell lru cache
   * apprt/embedded: if a physical key input is a keypad key, keep it
   * macos: more robust cursor visibility handling
   * macos: enum does not need to be a string
 .
   [ Tim Culverhouse ]
   * terminal: reset cursor state before eraseDisplay in fullReset
   * terminal: erase pen, except bg, in eraseDisplay
   * terminal: ensure 'has_bg' is set in eraseDisplay
 .
   [ Mitchell Hashimoto ]
   * terminal: make switch true/false more idiomatic zig
   * cli: dedicated directory
   * cli: move cli_args.zig to cli
   * cli/list-fonts: dumb implementation
   * font: CoreText discovery searches monospace only by default
   * cli/list-fonts
   * cli/list-fonts: don't use arrayhashmap
   * font: fontconfig should not omit earlier fonts
   * cli/list-fonts: flags, help
   * font/core-text: discovery supports style search
   * font/fontconfig: support style descriptor
   * font: fallback should not restrict to only monospace
   * config: add font-style configurations
   * config: update docs
   * config: update some docs to clarify how to disable ligatures
   * font/shaper: fix failing test on macos
   * font: CodepointMap
   * font: discovery descriptor can be hashed
   * font: add CodepointMap with tests
   * font: add codepoint map and descriptor cache to Group, not used yet
   * font: change FontIndex to a u16 since we can expect more fonts with maps
 .
   [ Tim Culverhouse ]
   * terminal: make deleteChars insert blank cells
 .
   [ Mitchell Hashimoto ]
   * font: Group will use the codepoint map for codepoint overrides
 .
   [ Tim Culverhouse ]
   * terminal: insert a blank cell in insertBlanks
   * terminal: save charset state and DECOM mode when saving cursor
 .
   [ Mitchell Hashimoto ]
   * config: add font-codepoint-map
   * config: unicode range parser is more lenient about whitespace
   * core: hook up the codepoint map to the loaded font group
   * config: codepoint override font descriptors should not require monospace
   * font: debug log for overide
   * config: remove unused test, make parse test more intense
 .
   [ Tim Culverhouse ]
   * terminal: move charset to screen
   * terminal: retain cursor and charset when entering alt screen
   * terminal: don't modify pen state when erasing eraseDisplay
 .
   [ Mitchell Hashimoto ]
   * terminal: add protected mode flag to cursor pen
   * terminal: CSI Ps " q for setting DEC protected mode
   * terminal: DECSED, DECSEL parsing, tests
   * terminal: eraseLine protected, tests
 .
   [ Tim Culverhouse ]
   * terminal: use ST instead of BEL terminator for XTVERSION
 .
   [ Mitchell Hashimoto ]
   * terminal: eraseDisplay protected
 .
   [ Tim Culverhouse ]
   * terminfo: add Setulc string for colored underlines
   * terminal: only use bg attr when erasing line
   * screen: only use bg attr for inserted rows
 .
   [ Mitchell Hashimoto ]
   * terminal: DL should reset wrap
   * terminal: insertLines resets wrap
   * terminal: deleteChars resets pending wrap state
   * terminal: eraseChars resets wrap
   * macos: read from clipboard uses UTF-8 encoded string, proper byte count
   * terminal: eraseLine resets wrap
   * terminal: cursors must set pending wrap
 .
   [ Isabella Basso ]
   * quirks: CodeNewRoman should disable ligatures by default
 .
   [ Mitchell Hashimoto ]
   * core: shift does not send mouse events
   * config: font style is a union
   * renderer: always reset font group on config change
   * font: Group can enable/disable styles
   * core: disable styles
   * cli: args can parse unions
   * renderer: support font style changing at runtime
   * config: update docs
 .
   [ Tim Culverhouse ]
   * config: add term config option
   * terminfo: add cursor styles to terminfo
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: detect keyboard modifier state for mouse events
   * core: normalize newlines in non-bracketed pastes
   * Simplify setlocale logic to rely on libc to fail if invalid
   * font: shaper dynamically allocates cell buffer
 .
   [ Tim Culverhouse ]
   * terminal: rows created from IND should inherit the current bg attr
 .
   [ Mitchell Hashimoto ]
   * terminfo: OSC 52 support
   * terminfo: add a few more missing entries from tmux(1)
 .
   [ Tim Culverhouse ]
   * terminfo: add bracketed paste entries BD, BE, PS, PE
 .
   [ Mitchell Hashimoto ]
   * input: 0x7F is a control character, use helper
   * update zig
   * terminal: DCS handler, XTGETTCAP parsing
   * termio: hook up dcs callbacks
   * terminfo: comptime map for xtgettcap results
   * termio/exec: hook up xtgettcap
   * terminfo: xtgettcap map name should use the source name
   * terminfo: numeric comptime buffer only needs to be 10 bytes
   * termio/exec: need to defer deinit for DCS command
   * macos: on Sonoma, manually add menu height padding for visible-menu
   * macos: custom fullscreen menu item to respect non-native fullscreen
   * macos: change text to "toggle full screen"
 .
   [ Tim Culverhouse ]
   * termio: reset mouse shape on terminal reset
   * terminfo: add mouse entries, correct kmouse
 .
   [ Nathan Fisher ]
   * (Gtk) Set tab labels to fill the available space, so that they will divide up the avialable horizontal area instead of leaving a large empty space in the tab bar.
 .
   [ Mitchell Hashimoto ]
   * terminfo: increase buffer size for test
   * Revert "macos: on Sonoma, manually add menu height padding for visible-menu"
 .
   [ Tim Culverhouse ]
   * terminfo: add additional entries, fix smkx/rmkx
   * config: default TERM to xterm-ghostty
   * terminfo: use 'xterm-ghostty' as primary name
 .
   [ Gregory Anders ]
   * macos: add tab index labels
   * macos: rename indexTabs() to relabelTabs()
   * macos: create modifier flags as OptionSet instead of from array
   * macos: add keyEquivalent overload to also return modifier string
   * macos: display keybinding instead of index in tab label
 .
   [ Mitchell Hashimoto ]
   * macos: stylistic changes
   * macos: relable tabs when config is reloaded
   * apprt/gtk: make wide-style gtk tabs configurable
   * core: do not scroll viewport if mouse reporting is requested
 .
   [ Patrick Fong ]
   * lint all Md files
   * lint all Yaml files
   * add Prettier step to check formatting
   * lint JSON and Typescript as well
   * ignore some other stuff
   * add linting doc
   * update linting doc
   * update linting doc
   * undo changes to vendor
   * don't lint macos/, undo macos/ changes
 .
   [ Mitchell Hashimoto ]
   * nix: install prettier, also ignore zig-cache/out
 .
   [ Nathan Youngman ]
   * fabs builtin was renamed
 .
   [ Mitchell Hashimoto ]
   * update zig
   * terminal: scroll region scroll up copied the wrong length of data
 .
   [ Curt Bushko ]
   * inital windows build support
   * run prettier
 .
   [ Tim Culverhouse ]
   * gtk(input): fix value used for lowercase lower_unicode
   * input(kitty): fix reporting of alternate keys
 .
   [ Curt Bushko ]
   * create script and dump logs
 .
   [ Tim Culverhouse ]
   * input: don't ESC prefix non-ascii characters
 .
   [ Patrick Fong ]
   * improve docs on font config
   * fix grammar
 .
   [ Mitchell Hashimoto ]
   * input: make Key ascii functions comptime-generated
 .
   [ Michael Dusan ]
   * macos: adjust fullscreen frame height for notch
 .
   [ Mitchell Hashimoto ]
   * macos: safeAreaInsets.top includes menu
   * os: we need to copy the old lang pointer before we unsetenv
   * os: unset lang completely setlocale fails
 .
   [ moderation ]
   * vendor: update harfbuzz.
 .
   [ Tim Culverhouse ]
   * selection: only clear when keypress has utf8
 .
   [ Nathan Fisher ]
   * Add Categories entry to .desktop file so Linux desktops have a better chance of placing the menu entry into an appropriate category
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: default working-directory to home if launched from desktop
   * input: fix regression with ascii mapping to a keypad key
   * recomment line
   * input: binding set can track unconsumed triggers
   * input: Binding string can be unconsumed with "unconsumed:" prefix
   * core: handle unconsumed bindings in key callbacks
   * termio: clear screen always sends form feed (0x0C)
   * config: keybinding clone must clone all members
   * apprt/gtk: add ctrl+page-up/down as prev/next tab
   * apprt/gtk: previous_tab/next_tab action do not consume if there are no tabs
   * apprt/embedded: adapt to new binding API
   * apprt/gtk: gtk-single-instance defaults to true only if desktop env
 .
   [ Nathan Fisher ]
   * Set the mouse pointer to "text" (an I-beam) when it is over the gl_area which the terminal embeds into for the Gtk interface. Addresses https://github.com/mitchellh/ghostty/issues/596
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: change default cursor to text
   * os: launchFromDesktop works even if the artifact is a lib
   * apprt/glfw: support window-width, window-height configurations
   * config: increase eval branches for new configs
   * macos: support initial window size
   * initial window size needs to take into account window chrome
   * apprt/gtk: implement default window size
   * config: note gtk bug
   * update zig
   * pkg/libpng, pkg/zlib use package manager
   * pkg/freetype
   * pkg/harfbuzz
   * use package manager for font stack
   * pkg/fontconfig
   * add build.zig.zon
   * add fontconfig
   * pkg/libxml2
   * pkg/fontconfig: depend on libxml2
   * pkg/pixman
   * pkg/harfbuzz needs to use apple sdk for coretext
   * pkg/apple-sdk: set sysroot
   * pkg/utf8proc
   * libxev, zig-js, zig-objc
   * pkg/fontconfig module
   * pkg/freetype, harfbuzz modules
   * pkg/pixman, utf8proc
   * pkg/macos
   * macos: fix missing symbols in archive
   * remove unused deps
   * pkg/tracy
   * pkg/tracy
   * progress on glfw
   * fix build on linux
   * no more system_sdk
   * fix dynamic build
   * remove a great many submodules
   * remove mach-sdk submodules
   * fix failing test, freetype needs libpng
   * don't run dependency tests anymore
   * pkg: remove all old build.zig files
   * pkg: add test targets
   * ci: remove tests for macos cross-compile
   * prettier
   * update zig
   * terminal: mode 2027
   * pkg/macos: MutableArray, sorting
   * font/coretext: score discovered fonts
   * font/fontconfig: adhere to correct function signature
   * macos: change close confirmations to NSAlert
   * apprt/embedded: supporting setting working directory in config
   * macos: use SurfaceConfiguration everywhere instead of bare c struct
   * macos: support drag and drop with no windows
   * macos: support dropping folder with window
   * apprt/embedded: validate directory for wd
   * macos: validation of dropped directory
   * macos: surfaceview supports dropping file URLs, just logs for now
   * core: textCallback to send text directly to the terminal
   * apprt/embedded: ghostty_surface_text function, remove _char
   * macos: support dropping file urls onto surfaces
   * macos: escape shell-sensitive characters on filepath drop
   * macos: localize the permission strings
   * macos: implement service provider
   * font: Metrics.Modifier for applying a percentage/absolute change
   * font: Metrics ModifierSet
   * font: rework font init to use a struct with modifiersets everywhere
   * font: wire up all the metric modifiers
   * font: modify font compiles for freetype
   * config: add remaining font modifiers
   * config: update some docs
   * font: fix failing macos tests
   * font/coretext: allow setting a non-monospace font explicitly
   * website: create-next-app boilerplate
   * prettier
   * website: noop homepage
   * prettier
   * config: add option to disable working directory inheritance
   * terminal: cursor back should reduce count if pending wrap is one
   * terminal: cursor back handles reverse wrap (mode 45)
   * terminal: CUB extended reverse wrap mode
   * terminal: extended reverse wrap takes priority over reverse wrap
   * terminal: add todo for CUB for left/right margins
   * prettier: ignore generated website files
   * website: add mdx, typography styling
   * website: rehype slug
   * wip vt sequence
   * website: fix type error
   * website: BEL
   * website: types
   * website: handle CSI sequences
   * website: wip cub
   * website: parameters have no hex value
   * website: cub
   * website: put ghostty icon in top
   * website: update reverse wrap details and test
   * website: cub extended reverse wrap test case
   * website: cub top/bottom scroll with extended wrap
   * website: tweak cub
   * website: start cr
   * terminal: have left/right scrolling region data but can't be set yet
   * terminal: implement origin mode and left margin handling for CR
   * website: update carriage return tests
   * terminal: FF (0x0D) also invokes LF
   * website: cud
   * terminal: cursor down respects bottom margins
   * website: ind
   * terminal: a lot more index tests
   * terminal: IND supports left/right margins
   * website
   * terminal: CBT respects left margin in origin mode
   * website: cbt
   * terminal: CHT
   * terminal: ICH handles left/right margins, clears bg
   * website: ich
   * website: ich split multi-cell
   * terminal: cursor up respects scroll margins
   * update zig
   * terminal: CUF handles right margin
   * website: cup
   * terminal: CUP respects left/right scroll region
   * terminal: HPA, VPA
   * website: HPA, VPA
   * terminal: HPR, VPR
   * Revert "termio: clear screen always sends form feed (0x0C)"
   * terminal: alternate scroll (mode 1007) should not be enabled by default
   * core: alternate scroll only sends up/down arrows, not left/right
   * pkg/libxml2: download using zig package manager
   * remove libxml2 submodule
   * pkg/harfbuzz: download source using zig package manager
   * remove harfbuzz submodule
   * ci: do not checkout submodules, because none exist
   * Makefile doesn't need to init submodules anymore
   * README: remove `make`
   * pkg/apple-sdk: do not git clone anymore
   * website: ech
   * terminal: ECH tests with bg and multi-cell fix
   * terminal: ECH handles protection attributes properly
   * terminal: EL (erase line) xterm audit
   * terminal: ED xterm audit
   * website: IL
   * terminal: IL preserves bg sgr, partial left/right margin support
   * terminal: insert lines (IL) handles left/right scroll regions
   * terminal: DL
   * terminal: test IND preserves background sgr
   * terminal: dch xterm audit
 .
   [ Gregory Anders ]
   * macos: force new window for "New Window" action
 .
   [ Mitchell Hashimoto ]
   * terminal: enable alternate scroll mode by default
   * terminal: scroll down tests
   * terminal: implement DECID (ESC Z)
   * terminal: TBC tests
   * terminal: SD should also work if cursor outside of left/right region
   * website: add validation for sd
   * terminal: handle ansi vs dec mode
   * pkg/harfbuzz: remove accidentally committed archive file
   * terminal: set top and bottom margin tests
   * terminal: decaln
   * terminal: set left and right margins, left and right margin mode 69
   * website: left/right margins
   * website: RIS
   * terminal: RIS should reset tabstops, ESC ? W should reset every 8
   * core: mouse selection when moving left before half-way point
   * core: mouse selection to right should include first cell if past boundary
   * update prettier ignore to ignore website dev compiled
   * termio: unescape OSC 7 pwd since it is URL encoded
   * website: deckpam, deckpnam
   * terminal: decscusr
   * terminal: SU, fix DL bug
   * terminal: scroll down test
   * website: CNL CPL
   * termio: NEL is index then CR
 .
   [ Paul Hinze ]
   * Document terminfo & SSH details
 .
   [ Mitchell Hashimoto ]
   * terminal: reverse index xterm audit
   * prettier
   * Enable left/right margin support
   * terminal: CUL handles left/right margins
   * terminal: print handles left/right margins
   * terminfo: add left/right margin entries
   * terminal: default for right scroll margin was incorrect
   * terminal: test REP
   * config: add mouse-shift-capture configuration
   * terminal: XTSHIFTESCAPE
   * website
   * terminal: index handles left/right regions
   * input: legacy encoding pc style keys should ignore directional modifiers
   * terminal: KAM (mode 2)
   * terminal: insert mode tests, fix insertBlanks multi-cell char split
   * website: document srm mode
   * terminal: linefeed mode
   * font: fallback search should search full discovery chain
   * font: render sprites with a configurable grid cell width
   * renderer: render cursor over wide character if on tail part
   * terminal: printing over wide spacer tail should clear wide char
   * terminal: when clearing previous wide character, preserve SGR state
   * terminal: VS16 should make a narrow char take up two cells in mode 2027
   * core: allow arrow key on scroll to fail write to IO
   * renderer: default cursor color to foreground
   * config: add cursor-opacity
   * renderer: unfocused cursor should always be fully opaque
   * macos: insertText should not include null char
   * terminal: OSC parser takes optional allocator
   * termio: configure OSC parser with an allocator
   * core: scroll viewport back to bottom on any key input that isn't a mod
   * terminal: save cursor and restore cursor xterm audit
   * renderer: handle error.NotFound for timer cancellation
   * terminal: cursor position report respects left scroll region with origin
   * terminal: scroll up full top/bottom region was off by one
   * terminal: with mode 2027, vs16 must move cursor one more right
   * renderer/metal: need to set proper alpha for fg mode in shader
   * renderer: render cursor behind colored emoji
 .
   [ Gregory Anders ]
   * macos: add menu items to modify font size
 .
   [ Mitchell Hashimoto ]
   * macos: make xcode 14 compatible, do not use switch expr
   * renderer: do not downsample oversized glyphs
   * update zig
   * ci: don't specify -gnu on test triple
   * pkg/apple-sdk: update to not have any broken symlinks
 .
   [ James Tucker ]
   * pkg/fontconfig: move defines to fix x86_64-windows targets
 .
   [ Jon Parise ]
   * config: add quit-after-last-window-closed
 .
   [ Krzysztof Wolicki ]
   * Disable iconv on Windows by default (enabled via cli flag). Skip various tests not implemented on windows.
   * Fix option name passed to fontconfig dep
   * Don't enable iconv for fontconfig dep on windows
   * pkg/fontconfig: windows check more readable
   * os/xdg: Avoid allocations on non-Windows systems. os/desktop: Add TODO
 .
   [ Mitchell Hashimoto ]
   * fix build with no font discovery
   * build: disable Tracy by default even for debug builds
   * config: update doc comment
   * pkg/harfbuzz: update to 8.2.2
 .
   [ Jon Parise ]
   * macos: always apply initial size to new windows
 .
   [ Matthew Winter ]
   * fix: adjust for window padding when calculating whether selection has started
 .
   [ Brandon Ferguson ]
   * If the locale isn't supported and falls back to the POSIX/C locale, use en_US.UTF8
 .
   [ Mitchell Hashimoto ]
   * update zig
   * update zig
 .
   [ Erlend Lind Madsen ]
   * config: comment regarding font-family config reload
 .
   [ Gregory Anders ]
   * macos: use commit hash in version info instead of build number
 .
   [ Mitchell Hashimoto ]
   * pkg/fontconfig: make iconv build param non-windows specific
   * os: remove some duplication in the env var check for xdg config
   * os: update todo about subsystem for windows
   * terminal: horizontal tab back should handle cursor already left margin
   * terminal: cub with reverse mode on left margin
   * terminal: insert blanks (ICH) with left/right and large count
   * terminal: ICH should only run with no intermediates
   * website: prettier
   * terminal: deleteCharacters should clear wide spacer tails if split
   * terminal: do not attach grapheme to empty cell
   * terminal: deleteLines has to reset wrap state on blank lines
   * update zig
   * pkg/cimgui
   * build: add cimgui to build
   * add empty Inspector file
   * apprt/gtk: empty inspector window
   * apprt/gtk: can render imgui
   * apprt/gtk: complete imgui backend
   * apprt/gtk: imgui widget calls callback to populate imgui frame
   * pkg/cimgui: add metal backend
   * pkg/cimgui: add osx backend
   * macos: MetalView, render an MTKView
   * macos: use a MTKView subclass for the inspector
   * apprt/gtk: use new imgui opengl API
   * macos: rendering basic imgui
   * macos: complete cimgui events
   * macos: only re-render the inspector when requested
   * apprt/gtk: use shared key => imgui key helper
   * macos: proper title when focusing the inspector
   * macos: don't do full surface-style key translation for imgui
   * core: add input binding to control terminal inspector
   * macos: terminal inspector control
   * pkg/cimgui: requires libcpp
   * apprt/gtk: surface has inspector state
   * apprt/gtk: button to toggle inspector
   * apprt/gtk: destory the inspector properly on close
   * apprt/gtk: different bg color for imgui widget
   * core: hook up all the inspector activation state and such
   * apprt/gtk: initialize and run the inspector
   * apprt/embedded: render inspector
   * pkg/cimgui: use freetype for font rendering
   * inspector is scaled to native dpi
   * apprt/embedded: render in native dpi
   * note font size todo
   * inspector: setup basic modes window (empty), dock
   * apprt/embedded: also must render imgui multiple times
   * initial work on basic inspector information
   * all threads are notified of inspector state, trigger render
   * apprt: none has app/surface so tests pass
   * inspector: show modes
   * inspector: show imgui demo window only in debug
   * apprt/embedded: do not lock render state for inspector render
   * macos: update inspector size in draw call
   * apprt/glfw: does not implement inspector
   * inspector: screen window
   * inspector: cursor style information
   * inspector: add keyboard info
   * inspector: track mouse state
   * inspector: cell inspector
   * inspector: give cell picker modal a reasonable title
   * terminal: circular buffer has append, clear, iterator
   * move circular buffer to src/
   * inspector: keep track of keyboard events (not rendered yet)
   * circbuf: iterator yields pointers
   * inspector: render basic key inspector
   * inspector: move inspector to dedicated folder
   * inspector: render key events
   * inspector: add clear keyboard events button
   * inspector: note memory leak
   * inspector: remove unused next id system
   * inspector: fix key memory leak
   * inspector: show kitty graphics metadata
   * inspector: start termio log
   * inspector: format termio a little better, incomplete
   * inspector: filter terminal io events by kind
   * inspector: add basic termio seq filter
   * inspector: termio pause/resume
   * inspector: add sequence number to termio
   * termio: inspector forces byte-at-a-time processing
   * inspector: track lots of metadata for vt events
   * inspector: forgot a file
   * inspector: reversed a checkbox
   * inspector: always increment seq number for vt events
   * inspector: add OSC command metadata to inspector
   * inspector: minor style tweak
   * inspector: termio filter also checks metadata values
   * macos: free inspector when it is hidden
   * inspector: reset vt seq number on clear
 .
   [ Nameless ]
   * fuzz: src/terminal/stream.zig
   * add tests for fuzzed results, clean up unimplemented osc warning
   * fuzz: termio.MessageData small_size is max of 255, not 256
 .
   [ Mitchell Hashimoto ]
   * command: allow relative paths in PATH
   * termio: MessageData should pick appropriately sized int for len
   * terminal: addWithOverflow to detect max int
   * terminal: bring back unimplemented logs
   * update zig
   * core: check for inspector activity before recording event
   * config: default inspector keybind to same as chromium
   * macos: fix warning from xcode
 .
   [ Gregory Anders ]
   * macos: set window resizeIncrements when cell size changes
 .
   [ Mitchell Hashimoto ]
   * terminal: clamp cursor left above scroll region with XTREVWRAP2
   * terminal: assertion should check x is on left margin
   * terminal: CUB with reverse wrap on first row should not crash
 .
   [ Gregory Anders ]
   * macos: document SurfaceView.cellSize property
   * config: add window-step-resize option
   * maacos: update doc comment for PrimaryView.window
 .
   [ Mitchell Hashimoto ]
   * config: slighty copy editing
   * config: make step resize opt-in for macos
   * terminal: in mode 2027, do not attach any width=0 char unless grapheme
   * terminal: ECH minimum count is 1
   * terminal: improve some debug logging
   * terminal: only clear spacer tail if exists
   * terminal: sgr direct color fg missing color doesn't crash
   * terminal: sgr direct bg also had wrong slice len
   * terminal: restore cursor should clamp x/y
   * apprt/gtk: only create window header bar with window decorations
 .
   [ Vlad Pănăzan ]
   * apprt/gtk: handle surface scale changes
 .
   [ Mitchell Hashimoto ]
   * macos: set proper cascade point when closing tab in window
   * apprt/gtk: use gtk widget scale to get content scale
   * apprt/gtk: comment about future API
   * build: do not build glfw for gtk anymore
   * config: command-arg to specify arguments to the executed command
   * cli: handle "-e" as the command to execute
 .
   [ Gregory Anders ]
   * terminfo: remove focus reporting mode from XM entry (#748)
 .
   [ Mitchell Hashimoto ]
   * config: tests for -e parsing
   * config: -e replaces previous args
 .
   [ Thorsten Ball ]
   * nix: update ZLS to newest version
 .
   [ Vlad Pănăzan ]
   * apprt/gtk: handle non-unicode keyvals
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: comment on what is going on with keyval mapping
 .
   [ Matthew Winter ]
   * feat: update undercurl with antialiasing
   * feat: add x_facter comment and remove old code
 .
   [ Mitchell Hashimoto ]
   * font/underline: some additional type annotations
   * renderer/metal: reclaim cell buffer memory when resizing
   * renderer/opengl: reclaim cell buffer memory when resizing
 .
   [ Mathew Polzin ]
   * Fix typo in Config.zig
   * Fix typo in README
 .
   [ Matthew Winter ]
   * feat: cleanup types and reduce casting
 .
   [ Mitchell Hashimoto ]
   * config: update some comments around pwd inheritance
   * terminfo: add E3 for clear scrollback
 .
   [ Chinmay Dalal ]
   * implement selecting output a `ScreenPoint` is in
 .
   [ Mitchell Hashimoto ]
   * macos: SplitNode must be hashable to detect change
 .
   [ Chinmay Dalal ]
   * add tests
   * handle cursor on a prompt line
   * exit early when cursor is on a prompt line
 .
   [ Lukáš Dvořák ]
   * fix window-padding-balance in combination with explicit padding
   * balanced padding cleanup
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: if no parent is set on new window, do not inherit wd
   * font: box sprite use saturated subtraction
   * apprt/embedded: add API to detect if a single surface needs quit confirm
   * macos: add HostingWindow helper
   * macos: add needsConfirmQuit helper to surface and split structs
   * macos: update xib version
   * macos: wip
   * macos: working on the new terminalmanager
   * macos: new terminal view new tab/window
 .
   [ Chinmay Dalal ]
   * expose selectOutput via ctrl+triple click
 .
   [ Mitchell Hashimoto ]
   * macos: toggle fullscreen
   * macos: goto tab works
   * macos: tab labels, detect window close
   * macos: implement last surface close to close window
   * macos: base config plumbed through
   * macos: clear content view on window close
   * macos: move debug view
   * update README
   * macos: terminal controller owns split data
   * macos: remove old primary window stuff
   * macos: delete Ghostty.SplitView
   * macos: rename all the 2-suffix
   * macos: detect when surface tree becomes empty
   * macos: confirm quit with splits, tab
   * macos: only show alert once
   * macos: do not need base config
   * macos: improved comments
   * macos: fix cascade points
   * Update macos/Sources/Features/Terminal/TerminalController.swift
   * macos: regressed #761
   * macos: attach various menu items to first responder, terminal
   * macos: forgot the toggle fullscreen binding
   * macos: simpler mechanism to detect no more config errors
   * macos: fix some split focus issues
   * macos: new tab while a window is focused inherits
   * macos: new window on existing terminal inherits properly
 .
   [ Matthew Winter ]
   * feat: update undercurl thickness and wave height
   * feat: update undercurl thickness and wave height
 .
   [ Mitchell Hashimoto ]
   * macos: if alert is already showing, don't check if need confirm
   * update zig
   * apprt/gtk: create new tab after current tab
 .
   [ Chinmay Dalal ]
   * disable zig fmt for aligned comments
 .
   [ Matthew Winter ]
   * feat: change minimum height to 2
   * feat: improve variable naming
 .
   [ Mitchell Hashimoto ]
   * core: if a font-style is specified, do not restrict style category
   * macos: clear keyboard shortcut if unbound on reload
 .
   [ xdBronch ]
   * add support for file dropping to glfw runtime
 .
   [ Raiden1411 ]
   * feat(actions): add new list-keybinds action
 .
   [ Leo Razoumov ]
   * feat: keybind escape sequence action "esc:text" similar to "csi:text"
 .
   [ Hanna ]
   * Integrate libadwaita for the gtk backend (#792)
 .
   [ Mitchell Hashimoto ]
   * apprt/glfw: small line length fixes
   * font: if a codepoint is emoji presentation, prefer that for shaping
 .
   [ hanna ]
   * remove hard dependency on libadwaita
   * Update gtk build test to use libadwaita
 .
   [ Mitchell Hashimoto ]
   * macos: terminal window must subclass nswindow to receive events
 .
   [ hanna ]
   * change option name and default value
   * Correct the option on the ci workflow
 .
   [ Mitchell Hashimoto ]
   * macos: only modify style mask, don't overwrite
 .
   [ xdBronch ]
   * fix build with libadwaita disabled
 .
   [ Gregory Anders ]
   * macos: always create new window on New Window action
   * macos: fix tab labeling
   * terminfo: add missing % character after conditional
 .
   [ Mitchell Hashimoto ]
   * macos: do not set window initial size if fullscreen
   * macos: modify tabbing mode when entering/exiting fullscreen
   * macos: deminiaturize on new tab
 .
   [ Lukáš Dvořák ]
   * fix: posToViewPort when using balanced padding enabled
   * update comment
 .
   [ David Rubin ]
   * add basic functionality
   * configs added
 .
   [ xdBronch ]
   * remove deps that were already provided by other packages (#797)
 .
   [ David Rubin ]
   * forgot to update other backends
 .
   [ Mitchell Hashimoto ]
   * input: add Binding.Action.format to convert action to string
   * input: Binding.Trigger format
   * cli/list-keybindings: stylistic changes
   * font/coretext: discovery scoring should take into account symb. traits
 .
   [ David Rubin ]
   * add todos + make sure non-implimented platforms still work.
 .
   [ Mitchell Hashimoto ]
   * terminal: move sanitization check to this package, unit test
   * apprt/gtk: copy change for unsafe paste window
   * terminal: add sanitize.zig
   * apprt/gtk: tweak unsafe paste window
   * core: do not consider bracketed pastes unsafe
   * apprt/gtk: correct new tab button click function signature
   * update zig
   * macos: paste protection boilerplate
   * macos: hook up paste protection delegate, cancel button
   * macos: paste protection text should be selectable
 .
   [ Raiden1411 ]
   * feat: add support for fullscreen, title and class values
   * fix: match main
   * more match fixes
   * chore: add log to setTitle
   * chore: add targets
   * fix: glfw build
   * glfw: send warning for fullscreen
 .
   [ Mitchell Hashimoto ]
   * apprt/embedded: hook up paste confirmation
   * core: not unsafe on bracketed
   * config: add clipboard-paste-bracketed-safe
   * macos: comment the new views
   * termio: initialize pwd before subprocess starts
   * config: on macOS cmd+ctrl+f toggles fullscreen by default
 .
   [ kcbanner ]
   * windows: add support for the glfw backend on Windows
   * - Update libxev dependency - Fixup macos compile error
 .
   [ Mitchell Hashimoto ]
   * shuffle some source around
   * os: rename env to be posix-like, do not allocate on posix
   * rename Pty.zig to pty.zig
   * os: macos lang check should include lang null
   * shuffle some code
   * os: more comments
   * os: add internal_os.pipe for cross-platfor pipe
 .
   [ Gregory Anders ]
   * macos: set id on nested terminal splits
 .
   [ Mitchell Hashimoto ]
   * termio: cleanup
   * pty: stylistic changes
   * command: stylistic changes
   * ci: enable windows cross-compile build
   * ci: style
   * apprt: default runtime for windows is glfw
   * update README with windows notes
 .
   [ Gregory Anders ]
   * macos: refactor SplitNode
   * core: add support for bindings with multiple parameters
   * core: add resize_split binding with default keys
   * macos: support resizing splits
   * macos: use Ghostty.AppState as @EnvironmentObject
 .
   [ Nawaf ]
   * fix macos font being drawn thicker when updating font size
 .
   [ Mitchell Hashimoto ]
   * inspector: add cursor style to inspector panel
 .
   [ Raiden1411 ]
   * fix: begin implementation of suggested changes
   * chore: update comment
   * chore: more comment changes
   * fix: fullscreen on new windows
   * chore: update fullscreen implementation
   * chore: cleanup
   * chore: cleanup
 .
   [ Mitchell Hashimoto ]
   * stylistic changes
   * macos: honor fullscreen setting
   * apprt/gtk: fix valid id check
   * apprt/gtk: move default id into scope
   * macos: use normal swiftui parameters for resizable publisher/inc
   * macos: remove focused cell size resize increment setter
   * input: add format support for tuple args
   * input: unit tests for pasing tuples
 .
   [ Gregory Anders ]
   * macos: complete clipboard request even when clipboard is empty
 .
   [ Mitchell Hashimoto ]
   * input: allow modifier aliases
 .
   [ Gregory Anders ]
   * terminfo: fixup Sync terminfo string
 .
   [ Mitchell Hashimoto ]
   * termio: cursor-style-blink being set disables DEC mode 12
 .
   [ Tim Culverhouse ]
   * gtk(mouse): use "text" enum as default value
   * mouse: set mouse as text only when not reporting mouse events
   * mouse: set mouse to text when bypassing mouse reporting
 .
   [ Mitchell Hashimoto ]
   * some comments, make switch exaustive
 .
   [ Gregory Anders ]
   * macos: pass split as a binding to SplitView
 .
   [ Raiden1411 ]
   * feat: fullscreen and toggleFullscreen support
   * chore: add video mode
 .
   [ Patrick Fong ]
   * update config section
   * explain Nix is golden setup in devel section
   * consistently sytlize as Ghostty
 .
   [ Raiden1411 ]
   * re-add dimensions
 .
   [ Patrick Fong ]
   * rewrite about
   * link to roadmap and status
   * list terminal inspector as key feature
   * shorten text that is hyperlinked
   * pushes boundaries, not can push boundaries
 .
   [ Mitchell Hashimoto ]
   * replace utf8proc with ziglyph
 .
   [ Patrick Fong ]
   * Prettier version should match Nix's
 .
   [ Gregory Anders ]
   * macos: add key binding for equalizing split sizes
 .
   [ Tim Culverhouse ]
   * shell-integration: implement "no-cursor" option
 .
   [ Mitchell Hashimoto ]
   * simplify some swift
   * config: packed struct of bools supported as config field
   * config: switch shell-integration-features
   * config: packed struct fields can clone directly via copy
   * macos: update xib version from xcode
 .
   [ Paul Jimenez ]
   * config: make config-file names resolve relative to the config dir
 .
   [ Severus ]
   * Add keymap for KP_*
 .
   [ Gregory Anders ]
   * macos: ensure tab labels are always visible
 .
   [ Paul Jimenez ]
   * config: support nested/recursive config-file keys
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: add comment about key aliases
 .
   [ Patrick Fong ]
   * reorder goals by order of importance
 .
   [ Gregory Anders ]
   * terminfo: add entries for focus reporting
 .
   [ Mitchell Hashimoto ]
   * font: if VS15/16 not specified, prefer any presentation in explicit font
 .
   [ Gregory Anders ]
   * core: implement querying with OSC 4
   * termio: update foreground and background color on config change
   * core: implement setting colors with OSC 4, 10, and 11
 .
   [ Mitchell Hashimoto ]
   * font: load valid union field for loaded deferred fonts
   * apprt/gtk: ensure equal tab width, truncate with ellipses
 .
   [ Gregory Anders ]
   * core: move color parsing functions into RGB namespace
   * core: separate default colors from modifiable colors
   * core: implement OSC 104, 110, and 111 to reset colors
   * core: implement OSC 12 and OSC 112 to query/set/reset cursor color
 .
   [ Mitchell Hashimoto ]
   * apprt/glfw: minor stylistic things
   * terminal: change mask from u256 to StaticBitSet
   * config: resolve file paths relative to their loaded file
   * config: comments
 .
   [ Gregory Anders ]
   * core: update active palette on config reload
 .
   [ Tim Culverhouse ]
   * terminal: initialize active palette with configured palette
 .
   [ Mitchell Hashimoto ]
   * macos: handle preedit in AppKit, enables Korean input
   * core, renderer: handle wide preedit chars
   * renderer/opengl: handle wide preedit
   * config: default goto_tab bindings on darwin based on physical key
 .
   [ Gregory Anders ]
   * macos: add option to prompt user for confirmation on OSC 52 commands
   * gtk: implement OSC 52 prompts
   * gtk: fix memory leak in GTK clipboard confirmation window
   * config: rename ClipboardRequest to ClipboardAccess
   * core: use ClipboardRequestType instead of ClipboardPromptReason
 .
   [ Mitchell Hashimoto ]
   * font/coretext: split typographic leading equally when calculating cell height
   * termio: wake up writer thread if the writer mailbox is full
 .
   [ Thorsten Ball ]
   * macOS: only unhide manu in non-native FS if focus lost to Ghostty
 .
   [ Gregory Anders ]
   * glfw: fix compile error
   * config: export ClipboardAccess
   * Prefer explicit type syntax over @as
 .
   [ Mitchell Hashimoto ]
   * stylistic tweaks
   * core: Fix various double-click word selection bugs
   * termio: Fix deadlock when writer mailbox is full
   * macos-option-as-alt works again
 .
   [ Krzysztof Wolicki ]
   * os/xdg: Add `LOCALAPPDATA` as a fallback for `XDG_CONFIG_HOME` on Windows
 .
   [ Mitchell Hashimoto ]
   * xterm audit: DECCOLM and 132COLS
   * xterm audit: slow scroll (DECSCLM)
   * xterm audit: reverse video (DECSCNM)
   * terminal: our mode size changed
   * macos: filter option in AppKit when option-as-alt set
   * input: process alt-prefix even if utf8 text doesn't exist
   * input: fix failing test on Linux
   * macos: ignore alt key with other modifiers set
   * macos: reuse original event if translation mods changes nothing
   * apprt/gtk: gtk-adwaita runtime config to configure libadwaita
   * ci: release-tip only works on this repository
   * update zig
   * slight edits
   * termio/exec: fall back to default command if specified command not found
   * config: clarify that command can only be a single binary
 .
   [ Gregory Anders ]
   * core: support OSC 9 and OSC 777 for showing desktop notifications
   * macos: remove optional from Ghostty.AppState.surfaceUserdata
 .
   [ Mitchell Hashimoto ]
   * input: do not encode enter with utf8 as pc style key
 .
   [ Gregory Anders ]
   * macos: implement desktop notifications
   * core: use arrays instead of WriteReq for desktop notifications
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: support multi-codepoint preedit text
   * renderer/metal: handle preedit wider than our screen
   * renderer/opengl: use new preedit format
   * core: comment out log statements
   * renderer: faint should not be applied to bg alpha
 .
   [ Gregory Anders ]
   * clipboard: add Clipboard variant for primary clipboard
 .
   [ Krzysztof Wolicki ]
   * change unmodified `var`s to `const`s in anticipation of zig changes
 .
   [ Raiden1411 ]
   * core: implement select all binding
 .
   [ Tim Culverhouse ]
   * gtk: implement desktop notifications
 .
   [ Raiden1411 ]
   * core: add config option to invert fg and bg of cell when selected
   * renderer: add support for metal
 .
   [ Mitchell Hashimoto ]
   * comments
   * renderer: address issue with inverted cells
   * update zig-objc
   * pkg/macos: add CoreVide for DisplayLink
   * renderer: separate update frame data from draw
   * renderer/opengl: switch to new update vs draw
   * renderer/metal: wip for loading custom shader pipelines
   * renderer/metal: release some of our shader initialization objects
   * renderer/metal: CRT effect, ugly hacky code
   * pkg/glslang: can build
   * pkg/glslang: shader api
   * pkg/glslang: complete the API
   * pkg/glslang: build SPIRV lib
   * build: add glslang
   * pkg/spirv-cross
   * pkg/spirv-cross
   * build: add spirv-cross
   * pkg/spirv-cross: correct c header
   * renderer: shadertoy functions
   * renderer: shadertoy convert to MSL
   * renderer: turn assertion into error
   * config: introduce RepeatablePath to automatically expand
   * renderer/metal: load custom shaders
   * renderer/metal: setup sampler state
   * renderer/metal: set valid sampler properties
   * renderer/metal: reuse an intermediate texture for custom shaders
   * renderer/metal: don't recreate custom shader resources per frame
   * prettier: ignore shaders
   * renderer: log shadertoy compile errors
   * renderer: animation timer if we have custom shaders
   * renderer: spirv binary must be aligned to u32
   * renderer/opengl: move opengl API to pkg/opengl
   * pkg/opengl: add Framebuffer APIs
   * renderer/opengl: wip
   * renderer/opengl: extract cell program state to dedicated struct
   * renderer/opengl: only one GPUCell
   * renderer/opengl: start custom program work
   * renderer/opengl: create ubos
   * renderer/opengl: simplifying the custom shader to get things working
   * renderer/opengl: pull out cell program drawing to dedicated func
   * renderer/opengl: draw custom shaders, simplified
   * renderer/opengl: setup uniform buffer objects for custom shaders
   * renderer/opengl: better organization of custom shader state
   * renderer/opengl: increment time uniform
   * renderer/opengl: set resolution uniform on screen size change
   * config: note custom-shader requires opengl 4.2 on linux
   * renderer/opengl: create the screen texture
   * renderer/opengl: resize the screen texture
   * renderer/opengl: enable animations
   * quiet tests
   * renderer/metal: clean up some memory management
   * renderer: animations should stop if config changes them
   * renderer/opengl: some comments
   * renderer/opengl: shaders only need one color input
   * renderer/opengl: new gpucell
   * config: custom-shader-animation
   * config: clarify runtime reloading of shader stuff
 .
   [ Gregory Anders ]
   * macos: ensure all surfaces are closed when a window is closed
 .
   [ Mitchell Hashimoto ]
   * config: select all should default to ctrl+shift+a on linux
   * macos: alternate solution to ignoring "always" userTabbingPreference
 .
   [ Chris Marchesi ]
   * nix: fix package build
 .
   [ Mitchell Hashimoto ]
   * terminal: add explicit errorset to scroll screen
   * terminal: add "clear" screen scroll mode
   * terminal: add ESC [ 22 J (scroll and clear)
   * terminal: ED handles invalid values
   * terminal: ESC [ 2 J does a scroll and clear if viewport is at a prompt
   * terminal: remove invalid test
   * terminal: enable kitty graphics commands on OpenGL
   * renderer/opengl: upload kitty image textures
   * renderer/opengl: setup image uniforms
   * renderer/opengl: draw images
   * renderer/opengl: do not need to convert
   * renderer/opengl: correct shader params
   * renderr/opengl: stylistic
   * update zig
   * terminal: resize less cols attempts to preserve cursor y
   * apprt/gtk: disable GTK capturing F10
   * apprt/gtk: support IME popups such as Asian language input
   * font: shaper should not look up U+200D for consistent fonts
   * update libxev
   * update zig-objc
   * terminal: handle width==3 glyphs by just pretending they're width 2
 .
   [ Chris Marchesi ]
   * apprt/gtk: let GTK titlebar be toggleable
 .
   [ Mitchell Hashimoto ]
   * font: fallback fonts need to deinit their unused deferred faces
 .
   [ Chris Marchesi ]
   * nix: use -Doptimize=ReleaseFast
 .
   [ Mitchell Hashimoto ]
   * renderer: handle Kitty images where z < 0 for all placements
 .
   [ Chris Marchesi ]
   * nix: update zigCacheHash
 .
   [ Tim Culverhouse ]
   * osc: fix OSC4 response
 .
   [ Mitchell Hashimoto ]
   * update ziglyph
   * terminal: switching alt/primary screen invalidates Kitty image state
   * terminal: fix cursor pos when resizing more rows not at bottom
 .
   [ Chris Marchesi ]
   * nix: update zigCacheHash, mention that building pkg requires src
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: convert Kitty images from RGB to RGBA
   * apprt/gtk: set default cursor to be "text" (ibeam)
   * xterm audit: DECOM (origin mode)
   * terminal: know about autorepeat mode
   * macos: relabel tabs when they're reordered with the mouse
   * build: add iterm2 themes repository, install into resources dir
   * config: add "theme" config, track inputs
   * core: move resources dir to main global state
   * config: load themes
   * macos: copy themes
   * config: update themes docs
   * cli: +list-themes
   * don't use package manager for iterm2 themes yet
   * apprt/gtk: use new resources dir
   * update README to cover themes
   * update README
 .
   [ Chris Marchesi ]
   * font/sprite: add Powerline face
 .
   [ Mitchell Hashimoto ]
   * core: do not send repeat/release events if the press consumed a binding
   * macos: add entitlements for basically everything so macos asks
   * core: clear selection on mouse cursor keys
   * terminal: implement OSC 1 (change icon) and ignore it
   * input: kitty encoding should ignore committed preedit state
 .
   [ Guillaume Wenzek ]
   * add "text" action
   * parse string literal at load time
 .
   [ Mitchell Hashimoto ]
   * Revert "parse string literal at load time"
   * config: add string parse, tests
   * input: allocate for text bindings
 .
   [ Tim Culverhouse ]
   * key-encode: only set associated text when there is printable text
 .
   [ Chris Marchesi ]
   * nix: add GitHub Actions workflow
   * workflows: disable nix build job
 .
   [ Burak Yildiz ]
   * fix selection clearing after a key press
 .
   [ Mitchell Hashimoto ]
   * move back to zig pm
   * nix: update zig cache hash
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 23 to 24
   * pkg/oniguruma: basic build
   * pkg/oniguruma: init regex object
   * pkg/oniguruma: search
   * pkg/oniguruma: better regex api
   * build: add oniguruma
   * build: dynamically link oniguruma
   * terminal: basic lineIterator on screen
   * terminal: selectionString uses arraylist to build results
   * terminal: stringmaps
   * terminal: Screen.getLine
   * renderer/metal: underline urls
   * input: add Link
   * terminal: move line searching here, unit test
   * core: detect link click
   * core: change mouse cursor over link
   * renderer: link set for more efficient matching
   * renderer: matchset tests
   * renderer: link sets handle hover links
   * core: send mouse hover point
   * core: only update mouse hover point when no other mouse action
   * os: open
   * core: don't crash if link processing fails
   * core: handle URL clicking properly with shift-escaping mouse events
   * input: better docs on links
   * renderer/opengl: urls
   * nix: update cache hash
   * core: only process link detection on cursor pos if cell changes
   * config: ability to disable URL matching
   * core: on mod change, rerun cursor pos callback
   * apprt/gtk: translate modifier-only presses to proper modifier state
   * input: Kitty encoding suppress associated text on macOS with alt
   * input: update preventsText comment
   * termio: clear_screen binding does not trigger scrollback preservation
 .
   [ Chris Marchesi ]
   * Add rectangle select
 .
   [ Krzysztof Wolicki ]
   * Update to latest master
   * Update to latest master, update libxev dependency, change mach_glfw to an updated fork until upstream updates
   * Update required zig version to `0.12.0-dev.1767+1e42a3de8`
   * Fix src/Surface.zig Change fastmem.copy to use memcpy builtin
   * Fix forgotten openIterableDir
 .
   [ Mitchell Hashimoto ]
   * update Zig version in Nix
   * nix: update cache hash
 .
   [ Chris Marchesi ]
   * gtk: make sure WM_CLASS is being set on X11
 .
   [ Nathan Fisher ]
   * Begin working on a skeleton for splits in Linux/Gtk
   * Add to Tab.init and fix compilation errors
   * Fill out the rest of `Tab.init()`
   * Add `Parent` and `Child` types for tracking splits; Add methods for adding start and end children in `Paned` widget;
 .
   [ Thorsten Ball ]
   * gtk: get 1st version of GTK splits working
   * gtk: cleanup code in *Paned
   * gtk: remove code comments and dead code
   * gtk: simplify code when creating new split
   * gtk: wire up close-tab button
   * gtk: use `unreachable` in switch statements
   * gtk: take direction into account when creating a new split
   * gtk: allow splitting when already split
   * gtk: allow closing split panes that have been split
   * gtk: move Child/Parent/Position into same file
   * gtk: refactor how Paned is created
   * gtk: handle closing of surfaces with sibling being a Paned
   * gtk: refactor replacing child of Paned
   * gtk: Refactor how a new split is created
   * gtk: refator Parent/Tab/Paned and how they interact
   * gtk: fix tab settings after introducing *Tab
   * WIP: gtk: handle split surfaces when closing tab/window
   * gtk: introduce helper method on Paned
   * gtk: move helper function around
   * gtk: use deinit method on Paned consistently
   * gtk: fix warning when replacing children of Paned
   * gtk: refactor the Paned deinit method
   * gtk: rename and refactor Tab.deinit
   * gtk: refactor code and add comments to Paned
   * gtk: remove duplication of new surface creation
   * gtk: move logic of splitting surface in a tab to Tab
   * gtk: port new-tab behavior over after rebase and refactor
   * gtk: rework naming conflict after rebase
   * gtk: always remember focused surface before grabbing focus
   * gtk: find first surface to focus on if sibling is Paned
   * gtk: keep buffer of surface title, update if focused
   * gtk: restore "inherit working directory" behavior
   * gtk: use destructuring syntax
   * gtk: comment out detach-tab feature after breaking it
   * gtk: remove fields on Paned we don't need
   * gtk: rework surface title buffer handling
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: working on some reorg
   * apprt/gtk: remove Window from Surface, use container only
   * apprt/gtk: get rid of title label option, we can infer it on container
   * apprt/gtk: remove tab option from surface
   * apprt/gtk: new surface options down to just a couple
   * apprt/gtk: get rid of one newsurface call
   * apprt/gtk: working on new Split
   * apprt/gkt: a lot of things are broken
   * apprt/gtk: nested splits are good
   * apprt/gtk: alternate approach to setting pane children
   * apprt/gtk: closing tabs works again
   * apprt/gtk: maintain container pointers
 .
   [ Thorsten Ball ]
   * gtk: fix compilation error after rebase
   * gtk: fix closing of surfaces by releasing the ref to gl_area
   * gtk: fix replacing of splits, remove dead code
   * gtk: get closing of tabs working again (closing windows still broken)
   * gtk: fix closing of windows that contains splits
   * gtk: restore focus-grabbing after closing one side in split
   * gtk: move surface destroy through deref
   * gtk: restore detachable-tabs feature after adding splits
   * gtk: (temp) fix splitting top_left side in split
   * gtk: switch to long-held reference for GtkPaned
   * gtk: remove unneeded method setContainer on Surface
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: rename parent2 to parent
 .
   [ Gregory Anders ]
   * Preserve cursor shape when over a link
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: code aesthetic changes
   * apprt/gtk: we don't need to keep track of Tabs
   * apprt/gtk: do not deinit tab in closeTab
   * apprt/gtk: add comments, rename some funcs
   * apprt/gtk: comments
   * apprt/gtk: just heap allocate the title text
   * apprt/gtk: rename parentSurface
   * apprt/gtk: gotoSplit, has some bugs
 .
   [ Chris Marchesi ]
   * nix: update flake.lock for nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: gotoSplit gets proper previous/next direction
   * apprt/gtk: fix next split issue
   * macos: do not open an initial window if opening from URL
   * termio: only change mouse shape if it is changing
   * termio: set configured default cursor style on startup
   * renderer/metal: minimum contrast experiment
   * renderer/metal: minimum contrast ratio is configurable
   * renderer/metal: only apply min contrast if set and only on non-color fg
   * renderer/opengl: implement min contrast
   * config: improve docs for minimum-contrast
   * font: faces use primary grid metrics to better line up glyphs
   * update zig version
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * core: remove size limit on preedit length by heap allocating
   * renderer: handle scenarios the preedit text is wider than our screen
   * renderer: default codepoints for preedit
   * ci: use Cirrus macOS VMs (#985)
   * Revert "ci: use Cirrus macOS VMs (#985)"
   * Revert "Revert "ci: use Cirrus macOS VMs (#985)""
 .
   [ Tim Culverhouse ]
   * terminal: implement mode 1047 (alternate screen)
 .
   [ Mitchell Hashimoto ]
   * core: alternate scroll encoding should respect DECCKM
 .
   [ Thorsten Ball ]
   * gtk: add support for resizing splits via keybinds
 .
   [ Mitchell Hashimoto ]
   * change default embedded font to JetBrains Mono
 .
   [ Carlos Alexandro Becker ]
   * Remove FiraCode leftovers
 .
   [ Mitchell Hashimoto ]
   * macos: if a preedit state is cleared, don't send key event
   * font: use nerd font patched jetbrains font
   * core: mods change doesn't unhide mouse
 .
   [ RGBCube ]
   * Quote URLs in NixOS example
   * Add packages.default property
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes
 .
   [ Thorsten Ball ]
   * nix: update ZLS
 .
   [ Mitchell Hashimoto ]
   * update zig
   * core: detect inputs that result in surface close and avoid segfault
   * macos: new tab button creates new tab after short delay
   * macos: handle the "+" button automatically adding the window to the tabs
   * terminal: support `58;5` for setting underline color via 256 palette
   * remove new-window action from desktop file
 .
   [ Wataru Nishimoto ]
   * use images/icons for mac app icons
 .
   [ Chris Marchesi ]
   * Powerline: Add half-circle rendering
 .
   [ Mitchell Hashimoto ]
   * macos: manually show window to handle mission control behavior
 .
   [ Matt Robenolt ]
   * meta: add make clean task
 .
   [ Chris Marchesi ]
   * Selection: fix bottom-right/top-left rectangle selections
 .
   [ Mitchell Hashimoto ]
   * remove new-window action from desktop file
 .
   [ RGBCube ]
   * Add garnix cache and clean up all nix code
   * Compile wraptest with O3, run hooks
   * Use camelCase for all nix files
 .
   [ Mitchell Hashimoto ]
   * nix: make devshell platform-specific
   * nix: add back shell.nix
   * ci: remove garnix for now, we may add it back later
   * macos: newTab needs to call Controller.showWindow
 .
   [ Chris Marchesi ]
   * nix: Update nixpkgs-zig-0-12 source
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: use map_keycode to get the proper unshifted key for a layout
 .
   [ Nick Reilingh ]
   * README.md: Fix broken link to devShell.nix
 .
   [ Mitchell Hashimoto ]
   * terminal: resize to less rows with empty lines should trim lines
 .
   [ Caio Oliveira ]
   * Remove redundant `inline` key
 .
   [ Kai Norman Clasen ]
   * doc: Update `gtk-titlebar` documentation
 .
   [ Mitchell Hashimoto ]
   * renderer/metal,opengl: replace matching image IDs if transmit time differs
   * config: keybind = clear clears unmaps all keybinds
   * macos: previous_tab/next_tab wraps
   * font/coretext: calculate advance_x properly
   * renderer/metal: offset zero-advance glyphs by the cell width
   * renderer/opengl: apply extra offset for zero-advance glyphs
   * pkg/macos: implement CTRun
   * font/shaper: if char is 0, should send space to shaper
   * pkg/macos: add many more text APIs
   * font/shape: add coretext shaper
 .
   [ RGBCube ]
   * input: add scroll_page_lines
 .
   [ Mitchell Hashimoto ]
   * font/coretext: coretext shaper is cleaner
   * pkg/macos: more APIs
 .
   [ Chris Marchesi ]
   * Powerline: Change half-circle algorithm to ellipse
 .
   [ Mitchell Hashimoto ]
   * font/coretext: shaper applies x/y offsets
   * font/harfbuzz: track x/y offsets
   * font/coretext: clarify buggy coretext shaper
   * renderer/opengl: use new glyph offsets
   * font: note why shaper is not enabled
 .
   [ Chris Marchesi ]
   * Powerline: add references for the ellipse algorithm
 .
   [ Jeffrey C. Ollie ]
   * Add "terminfo" and "shell_integration" subpackages to the Nix package so that the Ghostty terminfo and shell integration files can be installed on a headless server without copying all of Ghostty to the server. Implementation liberally cribbed from the Kitty Nix package.
 .
   [ Gregory Anders ]
   * term: parse hex color string for OSC commands
 .
   [ Jeffrey C. Ollie ]
   * Use Alejandra to format Nix modules.
   * Add formatter output to flake so that 'nix fmt' does the right thing.
 .
   [ Thorsten Ball ]
   * gtk: implement equalize_splits
 .
   [ Jeffrey C. Ollie ]
   * Fix spelling error.
   * Fix another spelling error.
 .
   [ Matt Robenolt ]
   * Configurable unfocused dimming color
   * Apply feedback
   * Use packed struct
   * typos
 .
   [ Mitchell Hashimoto ]
   * font/coretext: ceil the cell height and ascent metrics
   * font: adjust cell baseline to center after modification, fix styles
 .
   [ Thorsten Ball ]
   * gtk: use f64 everywhere instead of i16/f16/c_int
 .
   [ Mitchell Hashimoto ]
   * font: cursor size remains original cell height if height adjusted
 .
   [ Matt Robenolt ]
   * unpack rgb correctly
 .
   [ Tim Culverhouse ]
   * gtk: get num_lock state for key events
   * key: add additional keypad keys
   * key: add TODO's for media keys
 .
   [ Denys Pavlov ]
   * gtk: close tabs with middle-click
 .
   [ Mitchell Hashimoto ]
   * font/sprite: manually determine which box codepoints are unadjusted
   * confirmance: fix unused var warnings
   * apprt/gtk: do not encode control characters into utf8 event field
 .
   [ Chris Marchesi ]
   * Surface: fix some rectangle select behaviors
 .
   [ Mitchell Hashimoto ]
   * input/kitty: do not encode event+mods if they're both default
 .
   [ Gregory Anders ]
   * macos: special case handling of some control keys
 .
   [ Mitchell Hashimoto ]
   * input/kitty: do not encode event with mods if press
   * macos: style changes, make equivalent not an optional
   * os: passwd also gets username
   * core: quit-after-last-window-closed works properly with "exit"
   * apprt/gtk: slight stylistic change
   * include: add new keycodes
   * config: docs
   * config: C API read allows any packed struct that fits in c int
   * config: make unfocused-split-fill default to bg
   * macos: proper event when sided mod released with other side pressed
 .
   [ Kyaw ]
   * font/coretext: use `CTFontCopyFamilyName`
 .
   [ Gregory Anders ]
   * termio: implement DECRQSS
 .
   [ Chris Marchesi ]
   * build: use dedicated strings for conformance test keys
 .
   [ Gregory Anders ]
   * termio: use u2 for length
   * termio: remove some code duplication in DECRQSS handler
 .
   [ Mitchell Hashimoto ]
   * termio/exec: use login(1) on macOS
   * config: remove command-arg
   * termio/exec: only use sh login flag in flatpak
 .
   [ Brian Cain ]
   * apprt: Fix key callback input key assignments
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: acquire lock to prep kitty images
 .
   [ Chris Marchesi ]
   * Surface: set crosshair, change event processing logic for mouse tracking
 .
   [ Mitchell Hashimoto ]
   * macos: do not load zsh config on the outer zsh launch
 .
   [ Denys Pavlov ]
   * nix: teach direnv about flake.nix imports
   * nix: use wrapGAppsHook4 to package ghostty
   * nix: fix GTK icons for debug builds
 .
   [ Mitchell Hashimoto ]
   * termio: allocate initial capacity more accurately
   * nix: only add shellhook on linux
 .
   [ Caleb Spare ]
   * config: improve link matching for URLs ending in . or )
   * update README with Linux dependency tips
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: constrain PUA glyphs if they aren't next to space
   * renderer/opengl: implement fg_constrained
   * renderer: also constrain PUA chars if preceded by PUA
   * font: center text when adjust-cell-width is used
 .
   [ Chris Marchesi ]
   * Surface: ensure keyToMouseShape respects hidden state
   * renderer: don't constrain Powerline glyphs
 .
   [ Borja Clemente ]
   * Add settings shortcut on MacOS
 .
   [ Mitchell Hashimoto ]
   * macos: custom about window so we can be a first responder
   * input: translate '\t' to Key.tab
   * macos: close_window binding works properly again
   * macos: close all windows
   * fix callback struct ordering, use internal_os.open
   * apprt/gtk: hook up open config
   * input: clarify some limitations of opening config
   * apprt/glfw: implement openconfig
 .
   [ Tim Culverhouse ]
   * cli: invert special case arg parsing logic
   * cli: parse args as command when launched as 'xdg-terminal-exec'
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: error if OpenGL version is too old
   * renderer/opengl: allow OpenGL 4.1/4.2
   * macos: put build numbers back into info.plist, other metadata
   * macos: add Sparkle via Swift PM
   * macos: boilerplate to setup updater menu item
   * macos: add update delegate so we can configure some behavior
   * ci: setup sparkle binaries in release
   * ci: generate appcast, upload it
   * ci: disable releases temporarily
   * ci: correct filename for appcast
   * ci: codesign nested frameworks
 .
   [ Borja Clemente ]
   * Remove unused imports from config/edit
   * Remove log from imports as it is unused
 .
   [ Tim Culverhouse ]
   * cli: add xdg-terminal-exec parsing tests
   * cli: store manually parsed args for config replays
 .
   [ Mitchell Hashimoto ]
   * dist/macos: appcast needs namespace, better formatting
   * ci: manually codesign since --deep is deprecated
   * macos: set the update URL
   * macos: update the release notes with link to GH project
   * ci: uncomment the release-to-github code
 .
   [ Chris Marchesi ]
   * Powerline: add trapezoid rendering
 .
   [ Mitchell Hashimoto ]
   * config: handle xdg-terminal-exec detection higher up
   * update zig
 .
   [ David Eger ]
   * README: nvidia + ubuntu + x11 requires recent gtk
 .
   [ Thorsten Ball ]
   * nix: update ZLS
 .
   [ Mitchell Hashimoto ]
   * prettier
   * apprt/gtk: only reset IME state if key consuming while IME composing
   * update README about mac builds
 .
   [ Leo Razoumov ]
   * fix(macos): ReleaseLocal build configuration with "Library Validation" disabled
   * doc: minor fix to README.md
 .
   [ Mitchell Hashimoto ]
   * update README
   * macos: make default config ReleaseLocal
   * terminal: Screen.selectPrompt to get the selection of the prompt
 .
   [ David Eger ]
   * doc: Linux tip on zig btrfs hash mismatch issue.
 .
   [ Mitchell Hashimoto ]
   * terminal: Screen.promptPath
   * core: click to move cursor
   * core: click to move cursor only works on primary screen
   * core: fast path out of click to move if no semantic prompts
   * core: if click-to-move is done, stop mouse processing
   * core: cursor click to move can be disabled
   * dist/macos: remove any existing matching builds in appcast
   * dist/macos: put the date in the short version string
 .
   [ Tim Culverhouse ]
   * terminfo: fix `xr` and `rv`
 .
   [ Gregory Anders ]
   * core: look for resources in "ghostty" subdirectory for "share" paths
   * macos: include ghostty subdirectory under Resources
 .
   [ Mitchell Hashimoto ]
   * macos: reordering some files
 .
   [ Gregory Anders ]
   * build: build Vim plugin files for Ghostty config file
   * macos: add generated Vim plugin files to app bundle
   * build: move Vim plugin file generation into a separate Step
 .
   [ Mitchell Hashimoto ]
   * input: kitty encoding should only report alt key if not equal to utf8
 .
   [ Vivek Roy ]
   * macos: Implement context menu functionality to open tabs and windows.
 .
   [ Chris Marchesi ]
   * macos: handle middle click
 .
   [ Mitchell Hashimoto ]
   * config: generate vim configs at comptime
   * macos: do not change nofile rlimit max
 .
   [ Jeffrey C. Ollie ]
   * fix nix package and add ci test for nix package build
   * enable magic nix cache to improve build times
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * dist/macos: prune appcast to the most recent 15 items
   * ci: move nix build to dedicated job
   * ci: build-nix depends on test like other package builds
   * ci: swap magic-nix-cache with cachix
   * prettier
   * ci: build-nix and test are not matrix tests
   * apprt/gtk: correct icon path now that our resources dir is in a subdir
 .
   [ Chris Marchesi ]
   * macos: middle click always pastes from clipboard
 .
   [ Mitchell Hashimoto ]
   * macos: initial window save/restore is working for frames only
   * config: window-save-state
   * config: if window-save-state is never, never restore state
   * macos: encode surface tree in state restore
   * apprt/embedded: ghostty_surface_pwd
   * macos: store pwd with save/restore state
   * macos: use securecoding for codablebridge to prevent warning
   * config: change window-save-state to default
   * macos: reset state version to 1
   * input: kitty keyboard modifier event changes from Kitty 0.32
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/cachix-action from 12 to 13
   * config: grapheme-width-method, default to "unicode"
   * terminal: resize cols should treat old cursor pos as active point
   * macos: assign unique UUID per surface, store in app state
   * macos: restore focused split on app restore
   * macos: increment restorable state version
   * macos: text in about window is selectable
   * input: only send keypad events for keypad application mode
   * macos: notifications use surface UUID for lookups
   * macos: set surface tree on init in restore
   * termio: ensure we kill all the children without killing ourselves
   * ci: remove macos unsigned releases
 .
   [ Tim Culverhouse ]
   * termio: delay repeated `waitpid` syscalls when killing children
 .
   [ Mitchell Hashimoto ]
   * config: not that cursor-style with shell integration overwrites
   * ci: explicitly sign our release entitlements on build
 .
   [ Burak Yildiz ]
   * Reorder menu items (File, Edit, View ...) like most of the other apps
 .
   [ Mitchell Hashimoto ]
   * macos: invalid restorable state when surface is closed
 .
   [ Tristan Partin ]
   * Use adw_application_new() instead of adw_init()
 .
   [ Mitchell Hashimoto ]
   * macos: verify inspector is not nil before sending it to draw
 .
   [ Matthew Winter ]
   * Modify the way the login shell is launched on macOS to reduce nesting
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes to adwaita init
 .
   [ Matthew Winter ]
   * Ensure the shell environment passes the Login Shell test
   * Ensure the cwd is not changed, whilst remaining a logon shell
 .
   [ Mitchell Hashimoto ]
   * config: validate that `command` can be found on the path
   * update tester README to note friend invites, MIT, etc.
   * readme: misordered headers
   * terminal: cursor back should not reduce by one with pending wrap
   * terminal: cub with reverse wrap consumes pending wrap state as one
 .
   [ Tim Culverhouse ]
   * website: fix `cub` test script
   * website(el): clarify cursor position in test script
   * website(ich): fix test script v1
   * website(il): fix test script
 .
   [ Mitchell Hashimoto ]
   * termio/exec: use bash instead of zsh for shell launching
   * termio: remove old warning log statement used for debugging
   * macos: wait for window to become visible to set blur
   * config: skip command validation if it has a space
   * termio/exec: detect exec failure and show an error message
   * termio/exec: detect abnormally short runtime and show an error message
   * config: remove command validation
   * termio/exec: abnormal exit can use exit code on linux
   * termio/exec: use arraylist to build up message for error
   * termio/exec: use message to writer thread so we can output failed cmd
   * termio/exec: style the exec failure error better
   * termio/exec: pass code and runtime to error but don't show it yet
 .
   [ Jeffrey C. Ollie ]
   * Add exit code and runtime to abnormal exit error message.
   * Make the abnormal runtime threshold configurable.
 .
   [ Mitchell Hashimoto ]
   * config: make abnormal runtime threshold a u32
   * termio/exec: reorder member since we like alloc on top
   * termio/exec: stylistic change on abnormal exit
 .
   [ Chris Marchesi ]
   * apprt/gtk: ensure modifier state matches current keypress under X11
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes
   * apprt/gtk: use some comptime to load X11 functions
 .
   [ Chris Marchesi ]
   * apprt/gtk: Move Xkb state to App, remove un-needed fields, style changes
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes
 .
   [ Chris Marchesi ]
   * nix: add libX11 to RUNPATH
 .
   [ Gregory Anders ]
   * macos: use ReleaseLocal build configuration for Profile action
 .
   [ Mitchell Hashimoto ]
   * pkg/fontconfig: move some dependencies to our own mirror
   * termio/exec: avoid potential deadlock with surface message
 .
   [ Gregory Anders ]
   * terminal: track palette color in cell state
 .
   [ Jeffrey C. Ollie ]
   * replace deprecated std.mem.tokenize with std.mem.tokenizeScalar
 .
   [ Mitchell Hashimoto ]
   * config: RepeatableString is null-terminated now
   * font-family settings are repeatable to specify fallback
   * config: empty value for RepeatableString resets the list
   * config: clarify docs on resetting font-family
   * macos: try to save window state before sparkle restart
   * macos: prevent super hot loop to restore focus state
   * macos: order main window front on restore
 .
   [ Krzysztof Wolicki ]
   * WIP: Update to new build module API after Zig PR #18160 Temporarily change dependency sources to forks until they update
 .
   [ Troels Thomsen ]
   * Resolve path relative to base
 .
   [ Krzysztof Wolicki ]
   * build.zig: Make use of resolveTargetQuery for wasm_freestanding target
   * Update usage of testing.expectEqual
 .
   [ EdenEast ]
   * feat(nix): add cachix binary cache to flake
 .
   [ Collin Dickert ]
   * add CodeNewRoman Nerd Font to quirks
 .
   [ widberg ]
   * Don't build with LTO on Windows
   * Use `cmd.exe` instead of `sh` on Windows
 .
   [ Mitchell Hashimoto ]
   * termio/exec: small change
 .
   [ Jeffrey C. Ollie ]
   * Add 'Open Config' menu to the GTK runtime and synchronize config-related keybindings across platforms.
 .
   [ Mitchell Hashimoto ]
   * renderer: reload background, foreground, cursor-color at runtime
   * update README about zig version
 .
   [ Evan Boehs ]
   * Fix #1213 (create dir if needed for settings)
 .
   [ Gregory Anders ]
   * cli: strip CR in line iterator
 .
   [ Mitchell Hashimoto ]
   * config: use dirname so we don't have to alloc a new dir for edit
   * config: create the config dir recursively for edit
   * macos: set initial window size in controller window init
 .
   [ Vivek Roy ]
   * macos: Address window spawning and ordering issues from service.
 .
   [ Mitchell Hashimoto ]
   * macos: move active state to delegate
   * termio: support XDG data dirs greater than 4k for fish shell integration
   * core: add Apple Color Emoji on macOS if its available
   * pkg/freetype: unknown errors should be reported, not unreachable
 .
   [ Jeffrey C. Ollie ]
   * Include the git commit hash in the Nix package.
   * Include '-nix' in the version string to distinguish Nix builds.
 .
   [ Mitchell Hashimoto ]
   * os: mac app launched with bundle env var is treated as desktop launch
   * config: do not load command from SHELL when launched from desktop
 .
   [ Jeffrey C. Ollie ]
   * In some cases, 'self' would not be passed to the package. It's not necessary so remove it.
 .
   [ Mitchell Hashimoto ]
   * font: insert blank cells for multi-cell ligatures for styling
 .
   [ Krzysztof Wolicki ]
   * Update changed build.zig
   * Update source for libxev
 .
   [ Riccardo Binetti ]
   * linux: add a function to check if we're running on X11
 .
   [ Mitchell Hashimoto ]
   * core: clear_screen binding doesn't consume on alt screen
 .
   [ Riccardo Binetti ]
   * linux: consider Xft.dpi to scale the content
 .
   [ Krzysztof Wolicki ]
   * Update sources for zig-objc and zig-js
   * Add include paths to modules in pkg/
   * Add include paths to freetype module
   * Add include paths to more modules in pkg/
   * Change source of mach_glfw to experimental branch in fork
   * Update required zig version to 0.12.0-dev.2063+804cee3b9
   * Update source for zig-build-macos-sdk for pkg/apple-sdk
   * Clean pkg/fontconfig/build.zig
 .
   [ Mitchell Hashimoto ]
   * update flake
   * fix macos `zig build test` failures
 .
   [ Krzysztof Wolicki ]
   * Attempt to fix building on macos
 .
   [ Mitchell Hashimoto ]
   * nix: update hash
 .
   [ Krzysztof Wolicki ]
   * Link frameworks to macos module conditionally
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes
   * ci: release should only run with a main main ref
 .
   [ Krzysztof Wolicki ]
   * Maybe this will help macos
   * Update mach-glfw dependency
   * Update mach-glfw dependency
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12 input, also cache hash
 .
   [ Krzysztof Wolicki ]
   * Update mach-glfw dependency
 .
   [ Mitchell Hashimoto ]
   * renderer: constrain dingbats category to cell size
   * renderer: for constrained cells, offset was being doubled
   * nix: update hash
 .
   [ KNnut ]
   * readme: fix a typo
 .
   [ Jeffrey C. Ollie ]
   * implement enquiry
 .
   [ Mitchell Hashimoto ]
   * font/shaper: prevent underflow in multi-cell lig detection
 .
   [ Tim Culverhouse ]
   * input: never report associated text on key release
 .
   [ Mitchell Hashimoto ]
   * font: autoitalic should only apply to text presentation
   * core: add emoji fallback on macOS after built-in font
   * input: add unit test for no associated text on release
 .
   [ Tristan Partin ]
   * fix: update code to compile with 0.12.0-dev.2075+f5978181e
 .
   [ Mitchell Hashimoto ]
   * update zig
   * update zig 0.12 nxpkgs
 .
   [ Jeffrey C. Ollie ]
   * change name of config entry and variables, add lock for safety during config update
   * add some more documentation about enquiry
   * add some more documentation about enquiry on iterm2
 .
   [ Mitchell Hashimoto ]
   * Update README.md
   * update README
   * custom shader animation can be set to "always" to always remain active
   * input: missing kp_begin encoding entry
   * input: manage application keypad state with mode 1035
   * macos: support Display P3 colorspace through configuration
   * macos: add Edit => Select All menu item
   * renderer: do not free new configuration on change
   * build: only build embedded lib when targeting macos specifically
   * build: use Xcode for the macOS SDK
   * pkg/macos: only link apple paths on darwin target
 .
   [ Thorsten Ball ]
   * macos: allow submitting clipboard confirmation with return
 .
   [ Mitchell Hashimoto ]
   * pkg/apple-sdk: always require a module
   * pkg/apple-sdk: detect apple sdk based on target
   * nix: update package hash
   * pkg/apple-sdk add comment
 .
   [ Gregory Anders ]
   * x11: fix modifier mask for Super key
 .
   [ Mitchell Hashimoto ]
   * termio/exec: remove a bunch of state that is duplicated on StreamHandler
   * termio/exec: assign arena last so we capture allocations
 .
   [ Thorsten Ball ]
   * macos: stop windows glitching when cascading
 .
   [ Mitchell Hashimoto ]
   * pkg/apple-sdk: depend on macOS 14 SDK
   * pkg/apple-sdk: only exec to get xcode path once per build
   * macos: minor style changes
 .
   [ Gregory Anders ]
   * gtk: use modifier state from GTK key event on X11
 .
   [ Mitchell Hashimoto ]
   * pkg/harfbuzz: get zig build test working on macOS
 .
   [ Jeffrey C. Ollie ]
   * add ability to specify RGB colors as names from the X11 rgb name list
 .
   [ Mitchell Hashimoto ]
   * terminal: use comptime generated X11 lookup table from rgb.txt
   * build: remove generate_rgb_names
   * cli: list-colors uses new generated rgb
   * mark rgb.txt as vendored
   * macos: invalid restorable state whenever surface tree changes
   * macos: invalidate restorable state whenever a terminal window is closed
 .
   [ Jeffrey C. Ollie ]
   * sort output from +list-colors
 .
   [ Mitchell Hashimoto ]
   * cli/list-colors: use unstable sort, sort in-place on arraylist
 .
   [ widberg ]
   * Use WINDIR instead of hardcoding C:\Windows
 .
   [ Ryota ]
   * Add helper functions for finding root
   * Add helper func for first and last leaf
   * Add firstOrLast search based on next and previous
   * Wrap around split focus with next and previous
   * Fix comment
 .
   [ Qwerasd ]
   * Added use of shift+arrow keys to expand current selection
   * Shift+keys selection: Fixed up/down logic, added page up/down, home, & end.
   * Fixed accidentally consuming ALL shift+<key> releases 😅
 .
   [ Mitchell Hashimoto ]
   * build: do not depend on codeberg for dependencies
   * Selection: add adjust method, unit test it, swap for adjustments
   * update zig
 .
   [ Thorsten Ball ]
   * gtk: append new tabs at the end if config is set
 .
   [ Mitchell Hashimoto ]
   * ci: do not cross-compile windows
   * config: rename window-append-new-tab to window-new-tab-position
   * ci: only output build.log once for windows build
 .
   [ Thorsten Ball ]
   * macos: respect window-new-tab-position configuration
   * macos: use switch statement instead of if-let
 .
   [ Atanas Pepechkov ]
   * add sudo wrapper as optional shell integration feature
 .
   [ Mitchell Hashimoto ]
   * update README about terminfo and sudo
   * build: remove tracy completely
   * remove tracy usage from all files
   * build: use BuildConfig struct
   * build: move more options to BuildConfig
   * build: move our configuration out of globals
   * build: update our macOS checks to check for macOS specifically
   * nix: update build hash
   * build: remove non-existent tracy dep
 .
   [ Krzysztof Wolicki ]
   * Update mach-glfw dependency
 .
   [ Mitchell Hashimoto ]
   * nix: update hash
   * build: build produces a broken object file for iOS
   * build: build iOS lib into XCFramework
   * nix: update hash
   * build: add iOS simulator target
   * macos: add iOS target
   * macos: show ghostty icon on main app loading
   * apprt/embedded: do not depend on macOS APIs on non-macOS
   * macos: iOS app can initialize Ghostty
   * use Apple logging subsystem on all Darwin targets
   * os: no mouse interval on ios
   * macos: only load config files on macos target
   * macos: disable iOS file in macOS build
   * macos: Ghostty.Config to store all config-related operations
   * macos: iOS Ghostty.App converted to use Ghostty.Config
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/cachix-action from 13 to 14
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 24 to 25
   * ci: specifically target the main Ghostty target
   * ci: try building iOS target in CI
   * macos: remove AppState and unify onto Ghostty.App cross-platform
   * build: fix mistaken dependency for iOS simulator lib
   * Revert "Merge pull request #1299 from mitchellh/dependabot/github_actions/cachix/cachix-action-14"
   * Revert "Merge pull request #1300 from mitchellh/dependabot/github_actions/cachix/install-nix-action-25"
   * ci: ios build does not use code signing
 .
   [ Paul Berg ]
   * gtk: update tab title even when the tab is unfocused
 .
   [ Mitchell Hashimoto ]
   * update zig
 .
   [ Gregory Anders ]
   * macos: respect minimum split size when using resize keys
 .
   [ Krzysztof Wolicki ]
   * Make addDeps cleaner
 .
   [ LordMZTE ]
   * docs: correct note in readme about splits on linux
 .
   [ Krzysztof Wolicki ]
   * Use addCSourceFiles with dependency instead of manually adding files in a loop
 .
   [ Mitchell Hashimoto ]
   * build: set os_version_min on default target so tests work
   * build: no more resolved target hack
   * renderer/opengl: set texture size for constrained glyphs
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/cachix-action from 13 to 14
   * termio: handle termio thread failure by showing a message in window
   * apprt/gtk: xft-dpi can be fractional, do not expect exact division
   * update zig-objc so enum types work for msgSend on x86_64
   * renderer/metal: detect frame commit failures and notify surface
   * macos: detect renderer health failures and show error view
   * renderer/metal: do not be unhealthy by default :)
   * nix: update hash
   * macos: use UIColor for iOS
   * renderer/metal: use a semaphore to protect deinit while waiting for GPU
 .
   [ Qwerasd ]
   * Added macOS file open handler
 .
   [ Mitchell Hashimoto ]
   * macos: detect error during surface initialization and render
   * readme: remove outdated sequences docs, more up to date are in web
   * update README
   * update README
   * update README styling
   * macos: terminals with custom commands are not restorable
   * config: introduce wait-after-command
   * apprt/embedded: set wait-after-command when command is set
   * macos: allow first click when non-focused to shift focus
 .
   [ Thorsten Ball ]
   * gtk: respect minimum split size when using resize keys
 .
   [ Mitchell Hashimoto ]
   * apprt/embedded: compile for Linux
   * apprt/embedded: fix initialization on macOS
   * build: copy header files, build static lib too
   * ci: libghostty on Linux build
 .
   [ Krzysztof Wolicki ]
   * cimgui metal impl available only when target is Darwin
 .
   [ Mitchell Hashimoto ]
   * core: Apple Emoji should be loaded on any darwin, not just macos
   * apprt/embedded: add iOS platform with uivew
   * renderer/metal: only set wantsLayer for AppKit
   * renderer/metal: initialize layer in init, handle iOS layer
   * macos: make SurfaceView cross-platform!
   * macos: set proper content size for UIView views
   * macos: iOS bg color extends to unsafe areas
   * terminal: erase line right should reset soft wrap state
   * terminal: ECH resets line wrap state in any scenario
   * terminal: select line considers semantic prompt change a boundary
   * terminal: soft-wrap inherits semantic prompt status of previous line
   * update zig
   * macos: select split above/below should go to correct split when nested
 .
   [ Jeffrey C. Ollie ]
   * Generate help strings from doc comments
 .
   [ Mitchell Hashimoto ]
   * rewrite generate_help for personal style
   * cli: support --help and -h for actions
   * cli: add help command
   * re-add helpgen
   * config: file formatter
   * cli: empty field resets optionals to null
   * nix: only linux is supported for the package
   * config: ability to format all field types except tagged unions
   * config: tests for all custom formatEntry calls
   * config: tests for formatEntry
   * config: support only formatting changed fields
   * config: union type formatters
   * config: formatter can output docs
 .
   [ Jeffrey C. Ollie ]
   * add +show-config action to print out the config from the cli
 .
   [ Mitchell Hashimoto ]
   * cli/show-config: add the changes-only and docs options
 .
   [ Jeffrey C. Ollie ]
   * use keybind struct's built-in capabity to format itself in +list-keybinds action
 .
   [ Mitchell Hashimoto ]
   * cli: list-keybinds uses new config formatting API
   * cli/show-config: enable --help
   * update README for show-config
 .
   [ Tim Culverhouse ]
   * reflow: respect wraparound mode when reflowing text
   * reflow: add unit tests for wraparound mode
 .
   [ Mitchell Hashimoto ]
   * terminal: handle wide character print at edge with wraparound disabled
 .
   [ Jeffrey C. Ollie ]
   * Generate documenation (manpages, etc.) from help strings.
   * markdown-ify help strings
 .
   [ Mitchell Hashimoto ]
   * renderer/metal,opengl: premult alpha for fragment shaders for images
   * build: use emit-docs for docs, don't need it on build config
   * build: shuffle files around for mdgen
   * build: only default emit-docs to true if pandoc is on PATH
   * ci: make sure to explicitly always test docgen
   * mdgen stylistic changes
   * macos: register a services menu
   * macos: register that we accept/send text types for services
   * apprt/embedded: support asking for selection text, existence
   * macos: support reading service result text into terminal
 .
   [ Jeffrey C. Ollie ]
   * Generate help strings for keybind actions.
   * Use keybind actions help strings in +list-keybinds.
   * add keybind actions docs to manpages
   * markdown-ify keybind actions help strings
 .
   [ Chris Marchesi ]
   * Selection: don't alter x position when rectangle select is off viewport
 .
   [ Mitchell Hashimoto ]
   * cli: remove list-keybinds changes
   * core: only dump scrollback contents if there is scrollback
 .
   [ Aurélien Cibrario ]
   * Added plus `+` key
 .
   [ LordMZTE ]
   * add increase_font_size keybind with plus
 .
   [ Mitchell Hashimoto ]
   * kitty images: support pngs with greyscale/alpha (bpp=2)
   * kitty graphics: assign automatic placement ID if p==0
 .
   [ gabydd ]
   * don't write ":" when printing keybinding action with no argument
 .
   [ jcalabro ]
   * set the atlas texture memory storage mode to shared
 .
   [ Jeffrey C. Ollie ]
   * Add option to include docs when listing keybinds.
 .
   [ Mitchell Hashimoto ]
   * terminal: ignore change window title requests with invalid UTF-8
   * renderer/metal: only set shared texture mode on aarch64
   * empty cli or config args reset the value to the default
   * config: re-expand relative paths correctly when reloading config
   * update zig
   * kitty graphics: use internal ID for placements with ID 0
   * terminal: preserve multi-point grapheme clusters on scrollback deletion
 .
   [ Armin Ronacher ]
   * Document that window padding changes need a restart
 .
   [ Mitchell Hashimoto ]
   * input: handle more ctrl+<key> sequences, namely ctrl+_
   * renderer: consider powerline box glyphs whitespace for PUA scaling
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Jakub Konka ]
   * apple-sdk: use zig's libstd getSdk to get active Apple SDK
 .
   [ Mitchell Hashimoto ]
   * pkg/apple-sdk: use std.zig.system.darwin.getSdk
   * update zig
   * very small style change
   * forgot commit to get #1363 building to new API
   * ci: temporarily disable windows builds while Zig regression is fixed
 .
   [ Matt Robenolt ]
   * Open links with Super+click
   * Only detect links when Super is held down
   * Update Config docs to suggest Super + hover is required for link activation
 .
   [ Mitchell Hashimoto ]
   * core: send key release events on focus loss
   * macos: do not trust AppKit's text translation with ctrl only
   * macos: make global macOS fullscreen keybind work
 .
   [ Selman Kayrancioglu ]
   * config/url: exclude trailing single quotes
 .
   [ Mitchell Hashimoto ]
   * apprt/embedded: ctrl-only should use binding-mods only
 .
   [ em-dash ]
   * Add mouse-scroll-multiplier config option
 .
   [ Lin Xianyi ]
   * nix: Add meta.mainProgram
 .
   [ Mitchell Hashimoto ]
   * add a new highlight state that requires modifiers
   * input: add link highlight always/hover w/ mods
   * config: update docs
   * renderer/link: fix test
   * core: be explicit about float rounding for mouse scroll multiplier
 .
   [ Leaf Garland ]
   * Default to background color for cursor-text
 .
   [ Mitchell Hashimoto ]
   * terminal: handle SCOSC/SCORC
   * terminal: avoid reading reset memory for preserving prompt
   * renderer: constrain emoji to cell width
   * apprt/embedded: do not allow NaN or small content scales
 .
   [ Pete Schaffner ]
   * Tint split view divider based on theme background
 .
   [ Mitchell Hashimoto ]
   * macos: plumb through the split divider color
   * macos: remove headers
   * macos: fix uikit build, NSColor is not available
 .
   [ Pete Schaffner ]
   * Add ability to color the split divider on iOS
   * Move color extensions into OSColor
 .
   [ Qwerasd ]
   * macOS: Added titlebar tabs
   * fix(macOS): set titlebar background color to support transparent windows with titlebar tabs
 .
   [ Mitchell Hashimoto ]
   * macos: titlebar tab logic shuffling
   * config: clarify some limitations
   * macos: do not hardcode true for titlebar tabs
   * macos: fix tabs vs spaces
 .
   [ Qwerasd ]
   * macOS: center window title when titlebar tabs enabled
 .
   [ Mitchell Hashimoto ]
   * macos: minor edits
   * macos: whitespace
 .
   [ Allan Calix ]
   * Automatically inject ghostty cli to end of $PATH
 .
   [ Qwerasd ]
   * fix(macOS): restoring tabbed windows with titlebar tabs enabled
 .
   [ Mitchell Hashimoto ]
   * termio/exec: always put ghostty bin dir in GHOSTTY_BIN_DIR env var
   * termio/exec: only add ghostty path if it isn't already in path
   * font/freetype: disallow bitmap strikes in scalable fonts
   * font/freetype: enable bitmap loading for colored faces
   * core: add "reset" keybinding to reset the terminal
 .
   [ Jeffrey C. Ollie ]
   * fix typo in CSI n handling
 .
   [ Mitchell Hashimoto ]
   * core: handle mouse capture events with link highlighting
   * renderer: only highlight link directly under mouse on line
 .
   [ Erlend Lind Madsen ]
   * url/Link: simplify regex, remove 'find_longest' param and add new tests
 .
   [ Mitchell Hashimoto ]
   * macos: titlebar tabs set window appearance based on bg luminance
 .
   [ Erlend Lind Madsen ]
   * url: support dash '-' in urls
   * url: sort url schemes by most-used
   * url: add missing url-scheme tests
   * url: add missing rarer (all) characters allowed in URL
 .
   [ Mitchell Hashimoto ]
   * config: add window-theme = auto for automatic choosing based on bg color
   * macos: set window button backdrop color based on appearance
 .
   [ Qwerasd ]
   * fix(macOS): Use better hardcoded colors for light titlebar tabs window button backdrop
   * fix(macOS): Prevent squash/stretch during resize
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: apply layerContentsPlacement on macOS to fix stretching
   * config: grapheme-width-method sets mode 2027
   * terminal: distinguish between DSRs with "?" and not
   * core: colorSchemeCallback on surface, can report
   * apprt/embedded: add API for reporting color scheme
   * terminal: support mode 2031
   * macos: report color scheme for surface to libghostty
   * terminal: rename theme to color_scheme for dsr
   * terminal: remove unused const
 .
   [ Jeffrey C. Ollie ]
   * Implement mode 2031 and DSR 996 for GTK
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: small stylistic edits
 .
   [ Krzysztof Wolicki ]
   * Surface: fix reportColorScheme on Windows
 .
   [ Qwerasd ]
   * fix(macOS): Restore titlebar tabs when exiting non-native fullscreen
   * fix(macOS): Hide titlebar separator line in native fullscreen.
 .
   [ Mitchell Hashimoto ]
   * update zig
 .
   [ Qwerasd ]
   * fix(macOS): Adjust custom toolbar title to fix clipping problems.
   * macOS: Simplify native title hiding logic for titlebar tabs.
   * macOS: Improve custom title label centering and overflow appearance.
 .
   [ Mitchell Hashimoto ]
   * ci: re-enable windows builds
   * macos: make label fileprivate
 .
   [ Krzysztof Wolicki ]
   * Update mach-glfw dependency
 .
   [ Mitchell Hashimoto ]
   * nix: update cache
 .
   [ Tim Culverhouse ]
   * split: add `auto` as split option
 .
   [ Mitchell Hashimoto ]
   * build: create new build options per compile step
   * move mdgen main to build dir
   * add helpgen entrypoint
   * build: get benchmarks building again
   * move SplitDirection to apprt
 .
   [ Jeffrey C. Ollie ]
   * Fix shader time uniforms (#1462)
 .
   [ Mitchell Hashimoto ]
   * update zig
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Qwerasd ]
   * fix(macOS): Prevent incorrect scaling of the Metal layer after DPI change
   * macOS: Add URL to documentation in comment
   * fix(macOS): Prevent janky transition animation on DPI change
   * fix(macOS): Restore custom titlebar background
   * fix(macOS): Improve updating of transparent titlebar tabs backgrounds
 .
   [ Andrew Kelley ]
   * make mach_glfw a lazy dependency
 .
   [ Mitchell Hashimoto ]
   * macos: small stylistic edits
 .
   [ Qwerasd ]
   * Add fast DFA utf-8 decoder implementation
   * terminal: replace utf8 decoding with custom decoder in stream.zig
   * remove commented out test
 .
   [ Mitchell Hashimoto ]
   * terminal: small stylistic tweaks
   * simd: basic ISA detection, boilerplate
   * simd: indexOf implementation using NEON
   * src/simd: improve isa detection
   * simd: utf8 validation
   * simd/utf8: document neon better
   * simd: only ref buildable decls
   * simd: utf8 count
   * simd: isa.funcMap to ensure only possible ISAs are analyzed
   * simd: simplify isa.funcMap, find Zig compiler bug
   * simd: utf8 decode
   * simd: utf decode using simdutf
   * simd: convert indexOf, mess around with simdvt
   * simd/aarch64: additional intrinsics
   * terminal: use SIMD w/ Neon to find ESC in VT streams
   * terminal: fix import issue
   * pkg/highway
   * terminal: use highway-based indexOf to support all targets
   * simd: implement utf8 decode until esc in C++
   * terminal: use new VT simd to process slices
   * terminal: split input to fit output chunks
   * simd: remove old attempts
   * build: missing simdutf
   * add clang-format for C++
   * move simdutf to a pkg
   * pkg/utfcpp
   * bench/stream: benchmark for stream processing
   * bench/stream: add terminal option
 .
   [ David Rubin ]
   * make benchmarks more accurate
 .
   [ Mitchell Hashimoto ]
   * bench/stream: add utf8
   * build: update build and comments
   * move bench script
   * nix: update cache hash
   * pkg: remove unused files, add highway API to get targets
   * terminal: do not have the UTF8Decoder overhead if SIMD
 .
   [ Jeffrey C. Ollie ]
   * Generate fish command completions for Ghostty.
   * Do the fish completion generation with comptime during the build rather than building a standalone executable.
 .
   [ Qwerasd ]
   * fix(terminal): Fix boundary utf-8 decoding crash
   * terminal: remove unused properties
 .
   [ Mitchell Hashimoto ]
   * terminal: add tests for incomplete utf-8, fix one bug
   * fish: make generators non-pub
 .
   [ Qwerasd ]
   * bench/stream: only generate benchmark input once, improve utf8 gen
   * bench/stream: add gen-rand (arbitrary random bytes)
   * bench/stream: script adjustments
 .
   [ Mitchell Hashimoto ]
   * build: if emit-bench is on, do not emit exes
   * bench/codepoint-width
 .
   [ Qwerasd ]
   * fix(terminal): send SI to execute instead of print
 .
   [ Mitchell Hashimoto ]
   * simd/codepoint-width: wip
 .
   [ Pete Schaffner ]
   * Add extensions to help finding private subviews
   * Hide tab bar shadows which improves light themes
 .
   [ Mitchell Hashimoto ]
   * simd/codepoint-width: match ziglyph
   * bench/codepoint-width: add wcwidth
   * simd/codepoint-width: reinclude correct file
   * simd: remove ziglyph fallback
   * simd: minor tweaks
   * terminal: swap codepointwidth implementations
 .
   [ Jeffrey C. Ollie ]
   * add hyperfine to the nix development environment
 .
   [ Pete Schaffner ]
   * Use shallow search to improve performance
   * Add comments/docs and make method name clearer
 .
   [ Mitchell Hashimoto ]
   * simd/codepoint-width: split by 16-bit
   * simd: use less vector ops for 16-bit
   * simd: increase padding for avx
   * simd/codepoint-width: assertions for avx512 padding
 .
   [ Qwerasd ]
   * terminal: stream/parser changes
 .
   [ Pete Schaffner ]
   * Add CALayer subclass for use in titlebar tabs
   * Make unselected tabs blend better with background color
   * Use draw rect to do the "plus darker" blending
   * Color the new tab button image appropriately
   * Move separator hiding back into `updateConstraintsIfNeeded`
 .
   [ Mitchell Hashimoto ]
   * add utf8proc back for bench
 .
   [ Pete Schaffner ]
   * Cache new tab button image to improve performance
 .
   [ Qwerasd ]
   * terminal/stream: Added ESC parsing fast tracks
   * fix(terminal/stream): fix OOB read and integer overflow
 .
   [ Mitchell Hashimoto ]
   * unicode: generate our own lookup tables
   * bench: update codepoint-width
   * remove utf8proc
   * terminal: swap to table implementatino
   * terminal: fast-path ASCII on char width
   * build: unigen needs libc
   * bench/grapheme-break
 .
   [ Jeffrey C. Ollie ]
   * bump eval branch quota for newer Zig versions
 .
   [ Erlend Lind Madsen ]
   * replace ziglyph codePointWidth -> table.get
   * remove unused ziglyph import
 .
   [ Mitchell Hashimoto ]
   * unicode: get grapheme boundary class
 .
   [ Erlend Lind Madsen ]
   * preeditCallback(self): remove fast path codepoint width
 .
   [ Pete Schaffner ]
   * Improve window buttons backdrop with window opacity
 .
   [ Gregory Anders ]
   * Reset status display after a full reset
 .
   [ Troels Thomsen ]
   * Keep shadows for native tab bar
 .
   [ Mitchell Hashimoto ]
   * macos: comment why we guard
   * macos: copy fish resources into app bundle
   * unicode: direct port of ziglyph to start
   * unicode: remove unused
   * unicode: use packed struct for break state
   * terminal: use new grapheme break algo
   * unicode: precompute grapheme break data
   * macos: nitpicks
   * ci: test self-hosted x86 runners
   * ci: try small instances
   * ci: no, build on mediums
   * ci: try namespace
   * ci: switch linux to namespace
   * ci: nix job should use namespace
 .
   [ Pete Schaffner ]
   * Make special blending mode class more generic
   * Make new tab button images vibrant
 .
   [ Mitchell Hashimoto ]
   * update zig
   * update req version in build.zig
 .
   [ Jakub Konka ]
   * fix for latest breaking libstd changes to Options
 .
   [ Mitchell Hashimoto ]
   * update zig
   * logfn doesn't need to be pub
   * update min zig version
   * command: io_mode removed for windows
   * ci: prettier/alejandra do not push to cachix
   * ci: nix job should also not push to cachix
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * terminal: only apply VS15/16 to emoji
 .
   [ Qwerasd ]
   * fix(bench): update std options format
 .
   [ Mitchell Hashimoto ]
   * ci: build benchmarks
   * ci: build bench on larger instance
   * ci: add timeouts to prettier and alejandra
 .
   [ Jonathan Marler ]
   * os: remove UB, tmpDir is returning stack memory on Windows
 .
   [ Pete Schaffner ]
   * Remove vibrant layer before re-adding it
   * Make new tab icon respond to window's key status
 .
   [ Jonathan Marler ]
   * image: center 16x16 icon
   * windows: add rc file
 .
   [ Mitchell Hashimoto ]
   * macos: more robust surface focus state detection
   * input: ctrl ASCII uppercase behaves the same as ctrl lowercase
 .
   [ Hugo Santos ]
   * Use Namespace cache volumes to cache /nix.
   * Switch to nscloud-cache-action v1.1.0 which handles the permissions required to create /nix.
 .
   [ Krzysztof Wolicki ]
   * Update usage of std.os.O
 .
   [ Mitchell Hashimoto ]
   * ci: add namespace cache to more places
   * apprt/embedded: add occlusion state callback
   * macos: call occlusion callback for state change
   * ci: try Namespace macOS
   * ci: macos doesn't support caches
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.0 to 1.1.1
   * update nix
   * terminal: OSC parses 4 with empty string param without crashing
 .
   [ Nameless ]
   * bug: std.os.realpath on non-windows asserts no nulls, make an error
 .
   [ Mitchell Hashimoto ]
   * style nit
   * terminal/kitty-gfx: mistaken logic
   * core: fallback to heap allocation for long preedit inputs
   * config: note that tab restore with titlebar tabs on macos 13 is broken
   * renderer: handle renderer pause/redraw on occlusion
   * renderer/metal: start extracting "visible" resources
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: cache buf cells
   * renderer/metal: move shaders to cached state
   * renderer/metal: free resources when occluded
   * Revert "renderer/metal: free resources when occluded"
   * Revert "renderer/metal: move shaders to cached state"
   * Revert "renderer/metal: cache buf cells"
   * Revert "renderer/metal: start extracting "visible" resources"
   * pkg/apple-sdk: more descriptive error when SDK not found
   * update README to note macOS SDKs needed
 .
   [ Troels Thomsen ]
   * Remove trailing whitespace
 .
   [ Ryan Cao ]
   * docs: document the `text` action for `keybind`
 .
   [ Troels Thomsen ]
   * Correct grammatical mistake
   * Set background color in title bar tab mode only
 .
   [ Mitchell Hashimoto ]
   * macos: minor reordering
 .
   [ Troels Thomsen ]
   * Avoid repainting new tab button for native tab bar
 .
   [ Mitchell Hashimoto ]
   * build: fix issue for long branch names
 .
   [ Felipe Coury ]
   * docs: correct MacOS location for themes on config docs
 .
   [ Mitchell Hashimoto ]
   * input: send shifted uppercase ASCII letters as CSIu
   * input: encode ctrl+shift+<ascii letter> in CSIu as lowercase + shift
 .
   [ Gregory Anders ]
   * Omit release events for backspace, enter, and tab if report_all is unset
   * Update minimum Zig version in build.zig
 .
   [ Mitchell Hashimoto ]
   * kitty-gfx: deletion should mark image state dirty to force redraw
   * ci: add aarch64 nix builds
 .
   [ Krzysztof Wolicki ]
   * Update to new compress.zlib API
 .
   [ Mitchell Hashimoto ]
   * update zig version
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ ProfOak ]
   * Add keybind support for shift+insert selection paste
 .
   [ Tim Culverhouse ]
   * terminfo: remove completed todo
 .
   [ ProfOak ]
   * Move selection paste to linux config section
 .
   [ Pete Schaffner ]
   * Move un-zoom button into the tab/toolbar
   * Hide zoom button in toolbar when not zoomed
   * Get unzoom button working with standard title/tab bar
   * Move unzoom button logic into TerminalWindow
   * Reorganize a bit
 .
   [ em-dash ]
   * fix crash in underline drawing math
 .
   [ Mitchell Hashimoto ]
   * font/sprite: test for thick underline, assertion on x/y for rect
 .
   [ Pete Schaffner ]
   * Fix wrong tint color and improve tab labeling
 .
   [ Mitchell Hashimoto ]
   * font/sprite: rect must be smaller than canvas dims
   * update zig version
 .
   [ Pete Schaffner ]
   * Rename "Un-zoom" to "Reset Zoom" and add tooltips
   * Don't use a toolbar for the traditional title/tab bar
 .
   [ Jack N ]
   * add gtk-tabs-location
 .
   [ Pete Schaffner ]
   * Select and uzoom when clicking button in unselected tab
 .
   [ Krzysztof Wolicki ]
   * build API change: update usage of addCSourceFiles
   * Windows Utf8 -> Wtf8
 .
   [ Mitchell Hashimoto ]
   * update zig version
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.1 to 1.1.2
 .
   [ Mitchell Hashimoto ]
   * ci: cache zig local/global cache
 .
   [ Adam Stephens ]
   * screen/selectword: add more boundary characters
 .
   [ Qwerasd ]
   * fix(renderer): allocate enough room for fg cells
 .
   [ Mitchell Hashimoto ]
   * terminal: fix tests for brackets on selectWord
   * ci: try to use namespace for macos to see if that fixes builds
   * Revert "ci: try to use namespace for macos to see if that fixes builds"
   * ci: try new gha for r2 upload
   * ci: rename github release jobs for r2
   * ci: test aws for release
   * ci: test
   * ci: revert back to using r2 action
 .
   [ Jon Parise ]
   * dist/macos: link the commit to GitHub's history view
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.2 to 1.1.3
 .
   [ Qwerasd ]
   * feat(macOS): Paste copied files as absolute paths.
   * style
 .
   [ Mitchell Hashimoto ]
   * update zig
   * update zig
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 24 to 26
 .
   [ dependabot[bot] ]
   * build(deps): bump softprops/action-gh-release from 1 to 2
 .
   [ Mitchell Hashimoto ]
   * core: remove undefined access on variable
   * build.zig update required zig version
   * update zig
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * fix some issues
   * nix: update cache hash
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.3 to 1.1.4
   * macos: only process key equivalents if we're focused
 .
   [ Qwerasd ]
   * fix(terminal/stream): correct invalid assertion
 .
   [ Jeffrey C. Ollie ]
   * log more information about the build
 .
   [ Kyungrok Chung ]
   * apprt/gtk: commit buffer before preeditchanged resets
 .
   [ Tim Culverhouse ]
   * mouse: handle switch case '0' for left_click_count
 .
   [ Mitchell Hashimoto ]
   * core: reset left click count if mouse reporting goes on
   * update zig
   * nix: update hash
   * update libxev for windows stuff
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * build.zig update min zig version
   * terminal: bunch of junk for paged terminal
   * terminal: copy stdlib hash_map
   * terminal/new: forked hash map works with fixed buffers
   * terminal/new: hash map remove old functions
   * terminal/new: remove more functions
   * terminal/new: slapped together offset map
   * terminal/new: hash map has no load factor
   * terminal/new: hash map doesn't need available
   * terminal/new: comment, remove some pubs
   * terminal/new: getOffset
   * terminal/new: nothing works but everything looks right
   * terminal/new: hash map size is part of buffer
   * terminal/new: style tests
   * terminal/new: style set removal
   * terminal/new: everything is OffsetBuf based
   * terminal/new: clean up comments
   * terminal/new: page init
   * terminal/new
   * terminal/new: initialize all rows to point to proper cell offsets
   * terminal/new: Screen beginnings
   * terminal/new: print some characters (test string)
   * terminal/new: PageList
   * terminal/new: lots of code thrown at the wall
   * terminal/new: detect empty rows
   * terminal/new: print single lines of ascii chars lol
   * terminal/new: add bench
   * terminal/new: store full style id
   * terminal/new: todos
   * terminal/new: add BitmapAllocator
   * terminal/new: page has graphemes attached
   * terminal/new: page has grapheme metadata
   * terminal/new: handle zero-width at beginning of line
   * terminal/new: wraparound beginnings
   * terminal/new: pages have a size
   * terminal/new: scrollDown
   * terminal/new: scrollactive
   * terminal/new
   * terminal/new: pages must use mmap directly
   * bench/page-init
   * bench/page-init: page count
   * terminal/new: fix allocation
   * terminal/new: using arena + pool is faster for page init
   * terminal/new: page capacity can be adjusted while retaining byte size
   * terminal/new: create in proper sizes
   * terminal/new: clean up
   * terminal/new: pagelist doesn't actively maintain active offset
   * terminal/new: wide char support
   * terminal/new: port many more tests
   * terminal/new: CR and LF
   * terminal/new: backspace, cursor left
   * terminal/new: setcursorpos tests
   * terminal/new: hashmap k/v offsets were off the wrong base
   * terminal/new: append/lookup graphemes and tests
   * terminal/new: non-grapheme zwjs
   * terminal/new: graphemes
   * terminal/new: adjust grapheme bytes default up
   * terminal/new: clear graphemes on overwrite
   * terminal/new: PageList scrolling
   * terminal/new: scroll by delta
   * terminal/new: scrolling viewport
   * terminal/new: insertLines
   * vt-insert-lines bench
   * terminal/new: introduce content tags and bg color cells
   * terminal/new: delete graphemes on insertLines
   * terminal/new: scrollDown, top/bot margin tests, fix insertLines bug
   * terminal/new: eraseChars
   * terminal/new: one left/right margin test
   * terminal/new: cursorUp and reverseIndex
   * terminal/new: index tests
   * terminal/new: deleteLines
   * terminal/new: scrollUp
   * terminal/new: couple missing tests
   * terminal/new: cursorLeft
   * terminal/new: cursorDown
   * terminal/new: cursorRight
   * terminal/new: start laying some groundwork for styles
   * terminal/new: print handles previous styles
   * terminal/new: erase according to bg sgr
   * terminal/new: left/right margins insertLines
   * terminal/new: insert and delete lines handle style dec
   * terminal/new: more robust cell blanking in row
   * terminal/new: lots more scroll region tests
   * terminal/new: decaln
   * terminal/new: insertBlanks, insert mode
   * terminal/new: grapheme tests
   * terminal/new: deleteChars
   * terminal/new: saved cursor
   * terminal/new: save cursor, protected modes
   * terminal/new: clear out some TODOs
   * terminal/new: eraseLine
   * terminal/new: bring in a bunch more tests
   * terminal/new: PageList respects max size, prunes scrollback
   * terminal/new: use new pagelist grow mechanism that prunes
   * terminal/new: pagelist rowChunkIterator
   * terminal/new: screen has more logic, eraseActive
   * terminal/new: pagelist can iterate over history
   * terminal/new: eraseRows
   * terminal/new: erasedisplay wip
   * terminal/new: erase display complete
   * terminal/new: scroll clear
   * terminal/new: PageList.erase
   * terminal/new: erase => clear when the data isn't physically erased
   * terminal/new: eraseDisplay history
   * terminal/new: decaln manages memory
   * terminal/new: charsets
   * terminal/new: semantic prompts
   * terminal/new: primary/alt screen
   * terminal/new: fullreset
   * terminal/new: properly handle zero scrollback configs
   * terminal/new: Screen new scrolldown should inherit bg color
   * terminal/new: scrolling viewport into active area pins to active
   * terminal/new: screen scrolling tests
   * terminal/new: screen scrollClear tests
   * terminal: noting uncopied tests
   * terminal/new: page clone, screen/pagelist clone wip
   * terminal/new: Screen.clone
   * bench/screen-copy
   * cli: arg parsing supports more int types
   * terminal/new: clone can take a shared pool
   * terminal: remove old logs
   * terminal/new: screen clone tests
   * terminal/new: eraseRows viewport behavior
   * terminal/new: more screen tests
   * terminal: mark off test
   * terminal/new: screen resize stubs (don't work)
   * terminal/new: page resizebuf boilerplate
   * terminal/new: pagelist resize rows only no reflow
   * terminal/new: resize no reflow pagelist less columns
   * terminal/new: pagelist more resize fixes
   * terminal/new: page.cloneFrom
   * terminal/new: pagelist more cols
   * terminal/new: pagelist resize rows and cols
   * terminal/new: screen resize no reflow less rows
   * terminal/new: resize less rows trims blank lines first
   * terminal/new: port lots of no reflow screen resizes
   * terminal/new: more no reflow tests
   * terminal/new: more no reflow tests
   * terminal/new: non-passing resize tests
   * bench/resize
   * terminal/new: pagelist resize no reflow more cols handles cap change
   * terminal/new: pagelist resize with reflow more cols with no wrapped rows
   * terminal/new: first grow cols reflow work, not done
   * terminal/new: start porting resize tests, bugs
   * terminal/new: resize without reflow updates cursor
   * terminal/new: port more screen resize tests
   * terminal/new: more resize more cols tests
   * terminal/new: recalculate cursor on more cols reflow
   * terminal/new: resize more cols ignores trailing empty cells
   * terminal/new: lots more tests ported
   * terminal/new: fix up cursor on grow cols
   * terminal/new: start reflow of less cols
   * terminal/new: less cols cursor tests
   * terminal/new: handle blank lines in reflow
   * terminal/new: more reflow less cols tests
   * terminal/new: more less cols tests
   * terminal/new: clean up redundancies
   * terminal/new: fix issue with resizing when cursor is in blank trailing cell
   * terminal/new: semantic prompt saving tests
   * terminal/new: copy graphemes for reflow
   * terminal/new: reflow copies styles
   * terminal/new: pagelist resize preserves semantic prompt
   * terminal/new: pagelist resize to 1 col deletes wide chars
   * terminal/new: wrap wide chars in resize reflow
   * terminal/new: handle unwrapping wide spacer heads
   * terminal/new: unwrapping requiring wrapping with spacer head
   * terminal/new: more reflow tests with wide chars
   * terminal/new: screen passes all resize tests
   * terminal/new: resize tests
   * terminal/new: deccolm
   * terminal/new: add scrollViewport
   * terminal/new: set/gwd pwd
   * terminal/new: some missing APIs
   * terminal/new => terminal2 so we can figure out what depends on what
   * terminal2: working on pins and tracked pins
   * terminal2: viewport exact is gone, now pin
   * terminal2: pointFromPin
   * terminal2: start testing pins with reflow
   * terminal2: lots more tracked pin logic
   * terminal2: screen uses pins
   * terminal2: remove rowoffset
   * terminal2: starting to port kitty graphics
   * terminal2: delete kitty by intersecting cursor
   * terminal2/kitty: tests pass
   * terminal2: use new kitty stack
   * terminal2: most imports
   * terminal2: more imports
   * terminal2: more imports
   * terminal2: start Selection
   * terminal2: pagelist cellIterator
   * terminal2: PageList pageIterator reverse
   * terminal2: PageList iterators all support reverse
   * terminal2: selection adjust right
   * terminal2: sel adjust left
   * terminal2: adjust down
   * terminal2: adjust down edges
   * terminal2: sel adjust home/end
   * terminal2: selection adjust done
   * terminal2: promote Selection
   * terminal2: a selection can be tracked or untracked
   * terminal2: Pin iterators
   * terminal2: selectLine
   * terminal2: selectAll
   * terminal2: more selectLine tests
   * terminal2: selectLine fixes
   * terminal2: selectWord starts
   * terminal2: selectWord more tests
   * terminal2: selectWord done
   * terminal2: selectOutput
   * terminal2: selectPrompt
   * terminal2: selection start/endPTr
   * terminal2: selection topLeft/bottomRight
   * terminal2: Selection.ordered
   * terminal2: contains selection
   * terminal2: promptPath
   * terminal2: selectionString beginning
   * terminal2: selectionString more tests
   * terminal2: selectionString with wide spacer head
   * terminal2: zwjs in selectionString
   * terminal2: selectionString with rect
   * terminal2: better blank line handling
   * terminal2: resize cols blank row preservation
   * terminal: todo for paged-terminal
   * terminal: remove new import
   * Revert "terminal: remove new import"
   * terminal2: add Pin.cells
   * font/shaper: start converting run to new terminal
   * font/shaper: more tests passing
   * font/shaper: test with bg only cells
   * font/shaper: new API
   * terminal2: export CursorStyle
   * zig build test with renamed terminal package
   * terminal: Screen can hold selection
   * terminal: more selection tests
   * terminal-old: note test we skipped
   * termio/exec: get compiler errors gone
   * terminal/kitty: graphics exec ported
   * core: surface compiles
   * renderer/metal: port
   * inspector: todo on render
   * terminal: correct cols/rows order
   * terminal: proper cursor copy for alt screen
   * terminal: PageList resize should set styled on row if style copy
   * terminal: test to ensure grapheme flag is set on row when resizing
   * terminal: pagelist verify erasing history resets to one page
   * terminal: erase complete deletes kitty images again
   * terminal: PageList updates page size accounting when erasing page
   * terminal: do not set selection manually
   * terminal: clone uses opts struct
   * terminal: PageList.Clone can remap tracked pins
   * terminal: Screen clone preserves cursor
   * terminal: Screen.clone preserves selection
   * renderer/metal: re-enable the cursor, it works
   * font/shaper: fix style for runs
   * remove point.Viewport
   * terminal: page size should be accounted every creation
   * terminal: pagelist resize handles soft-wrap across pages
   * terminal: Pagelist reflow cursor in blank cell wrapped properly
   * terminal: bring back clearPromptForResize, with tests!
   * terminal: resize create new pages as necessary
   * terminal: PageList more resize tests
   * terminal: PageList resize fix spacer issues with tests
   * terminal: don't insert newline across page boundaries
   * terminal: PageList resize blank lines at start of page
   * core: surface now tracks left click pin
   * renderer/metal: show selections
   * core: single click selection is on the way
   * core: checkResetSelSwitch converted
   * core: double-click drag
   * core: drag triple click
   * core: remove completed todos
   * update TODO.md
   * terminal: PageSize adjustCapacity for non-standard pages
   * terminal: PageList adjustCapacity should return new node and fix pins
   * terminal: resize page on unique style per cell
   * terminal: handle style ID overflow
   * terminal: PageList.clone must use createPageExt for non-std pages
   * terminal: PageList adjustCap should start from original cap
   * terminal: resize cols without reflow handles higher caps
   * terminal: resize handles increased styles/graphemes
   * core: configurable scrollback limit
   * terminal: page.cloneFrom graphemes
   * terminal: commented log line to see active style count
   * fix bench compilation
   * core: re-enable click to move cursor
   * terminal: fix page size calculations on Linux
   * terminal: jump to prompt
   * core: remove incorrect std.meta.eql on selection
   * terminal: dumpString options
   * terminal: dumpScreen handles wrap
   * core: write scrollback file works again
   * core: mouse untracks pin in right screen
   * terminal: Selection.containedRow
   * renderer/metal: re-enable selection awareness for shaping
   * renderer/metal: almost bring back kitty images, some bugs
   * terminal/kitty: calculate cell height more efficiently
   * renderer/metal: fix kitty image offset on screen
   * core: only adjust selection on keypress
   * terminal: selectionString should use proper ordered
   * terminal: selection should use pin iterators
   * terminal: Screen clone should preserve selection order
   * terminal: screen clone that doesn't have sel should set null sel
   * update TODO
   * terminal: remove TODO
   * core: scroll to selection working
   * renderer/opengl: convert
   * prettier
   * terminal: bitmap allocator had off by one on extra bitmaps
   * terminal: pagelist can adjust grapheme byte capacity
   * terminal: adjust page capacity for graphemes if necessary
   * inspector: support cell pinning again
   * inspector: cell selection works again
   * inspector: get mouse points working
   * inspector: forgot the new file
   * inspector: add page system details
   * config: increase default max scrollback to 10MB
   * inspector: forgot another new file
   * terminal: selectLine can disable whitespace/sem prompt splitting
   * terminal: screen lineIterator
   * core: converting more to new screen state
   * terminal: selectionString takes a struct for opts
   * terminal: add StringMap back
   * core: enable link hovering
   * renderer: convert link to new state
   * renderer: re-enable URL underlining
 .
   [ Qwerasd ]
   * terminal/page: improved capacity adjust logic
   * terminal/page: improve capacity adjust cols tests
 .
   [ Mitchell Hashimoto ]
   * ci: create PR releases
   * ci: PR builds for macOS should be ReleaseSafe
   * ci: release PR on sync
   * terminal: pruned pages should keep tracked pins in top-left
 .
   [ Jeffrey C. Ollie ]
   * build ghostty nix package with ReleaseSafe
 .
   [ Mitchell Hashimoto ]
   * terminal: fix off-by-one tracked pin issues when page is pruned
 .
   [ Jeffrey C. Ollie ]
   * allow building nix package with different optimizations
 .
   [ Mitchell Hashimoto ]
   * terminal: resizing to lt rows should not trim blanks with tracked pin
   * terminal: resizing greater cols without reflow should preserve cols
   * terminal: cleaner impl of getTopLeft(.active)
   * terminal: handle resizing into increased implicit max size
   * terminal: resize no reflow must do cols before rows
   * inspector: needs to call new PageList.maxSize func
   * terminal: PageList rowIterator respects limit row
   * terminal: insertLines uses iterators to handle pages
   * terminal: deleteLines assertion for same page
   * terminal: insertLines/deleteLines handle split across pages
   * terminal: delete/insertLines uses correct page for clearing
 .
   [ Gregory Anders ]
   * terminal: set PageList viewport to active area when cloned
 .
   [ Mitchell Hashimoto ]
   * terminal: cloneFrom clears destination
   * termio/exec: only clear above cursor if cursor is not on y=0
   * termio/exec: clear screen should erase rows and shift up
   * terminal: fullReset should reset cursor style
   * terminal: deleteLines with zero count should do nothing
   * terminal: style needs to be copied to new page on scroll
   * terminal: only reload style if we're on a new page on scroll
   * terminal: resize should preserve cursor style ref
   * terminal: in all cursor move cases, we need to account for page changes
   * terminal: all cursorReload scenarios should check style data
   * terminal: when overwriting wide spacer tail, clear graphemes
   * terminal: handles eraseRows that erases our full pagelist
   * terminal: Screen scroll test and handle single row screens
   * terminal: add assertion for trackPin as commented
   * terminal: remove completed todo
   * terminal: eraseDisplay complete needs to delete kitty images
   * terminal: remove unnecessary todo
   * terminal: deleteChars should not split wide char cursor x
   * terminal: pagelist handle scenario where reflow erases all pages
   * terminal: bitmap allocator handles 64-chunk sized allocs
   * terminal: BitmapAllocator supports allocations across bitmaps
   * terminal: properly clear style in error scenario
   * terminal: clear styles properly for clearing wide spacers
   * terminal: moveCell handles graphemes, clears source
   * terminal: add page.verifyIntegrity function
   * terminal: add some integrity assertions
   * terminal: add integrity checks throughout PageList
   * terminal: add Screen integrity checks, pepper them through cursors
   * terminal: add more integrity assertions
   * terminal: get rid of some verifications, comment why
   * terminal: insertChars/deleteChars needs to account properly
   * terminal: clearcells only decs cursor ref if same page
   * terminal: fix cursor style on deleteLines
   * terminal: handle row wrap integrity issues on reflow
   * terminal: relax grapheme integrity check for fast paths
   * terminal: prevent false positive integrity check
   * terminal: no scrollback eraseRows needs to fix style
   * terminal: bitmapallocator handles perfectly divisble chunk size
   * terminal: spacer heads should only exist w/o l/r margin
   * terminal: clear unprotected row should preserve row attrs
   * terminal: undo accidental debug logs
   * terminal: more accidental logging
   * address latest zig changes
   * terminal: use std.meta.eql for equality checks
   * terminal: avoid memory fragmentation if possible on col grow
   * terminal: remove problematic test on 4k pages, still working on it
   * terminal: allow growing beyond max size for active area to fit
   * terminal: add assertion to page integrity that row/col count > 0
   * terminal: decaln accounts for styles across pages
   * terminal: when reflowing, set style to default to prevent integrity fail
   * terminal: add a test for resize less cols across pages with cursor
   * terminal: many more assertions around spacer state
   * terminal: deleteChars must not shift a spacer head
   * terminal: pause page integrity can be nested
   * terminal: insertBlanks doesn't split spacer tail
   * terminal: fix release builds
   * terminal: clear spacer heads on growing cols w/o reflow
   * terminal: deleteChars resets row wrap state
   * terminal: insertLines clears row wrap state
   * terminal: deleteLines resets line wrap
   * terminal: PageList trim blanks erases empty pages
   * ci: try PR builds on Namespace
   * terminal: PageList support initialization of multi-page viewports
   * Revert "ci: try PR builds on Namespace"
   * terminal: address todo to re-resolve 905
 .
   [ Gregory Anders ]
   * input: fix associated text on macOS
 .
   [ Mitchell Hashimoto ]
   * terminal: add clonePartialRowFrom
   * terminal: insert/deleteLines with L/R region across pages
   * terminal: explicit error set for page clone
   * terminal: turn unreachable into todo
 .
   [ Gregory Anders ]
   * terminal: reset alt screen kitty keyboard state on full reset
 .
   [ Mitchell Hashimoto ]
   * only show optimization
 .
   [ Qwerasd ]
   * wip(terminal): Fast path for scroll regions
   * fix(terminal): clear erased rows
   * comments
   * fastmem: rotateOnce
   * perf(terminal): fast-paths for scrolling regions
   * fix(terminal): correctly use slow path for left/right scroll margin
   * fix(terminal): don't reset x when indexing in scroll region
   * terminal: clean up some code and comments
   * fastmem: fix doc comment
   * perf(terminal/page): @memset micro-optimization
 .
   [ Mitchell Hashimoto ]
   * macos: only set titlebar color with enough luminance to avoid #1549
   * macos: remove some slight duplication
   * macos: usingColorSpace is only available with AppKit
   * Revert "Merge pull request #1550 from peteschaffner/titlebar-unzoom-button"
   * remove old terminal implementation
   * ci: try namespace again
 .
   [ Jon Parise ]
   * macos: configurable titlebar fonts
 .
   [ Mitchell Hashimoto ]
   * ci: release tip moves to namespace
 .
   [ Kevin Hovsäter ]
   * Add final newline to CLI output
 .
   [ Mitchell Hashimoto ]
   * ci: add debug build to release-tip for macos
   * macos: show build in about window
   * ci: put debug build in release
   * terminal: when growing rows, need to set rows before grow()
 .
   [ Igor Anić ]
   * gtk: use symbolic icon for tab close
 .
   [ Mitchell Hashimoto ]
   * terminal: add integrity assertion that cursor pin matches x/y
 .
   [ Jeffrey C. Ollie ]
   * GTK: Add compiled-in GTK resources and use them for icons.
   * generate gresource xml and dependencies at comptime rather than hardcoding
 .
   [ Mitchell Hashimoto ]
   * terminal: test eraseRowBounded, fix off by ones
   * font sizes are limited to u8 (max size = 255 points)
   * font/freetype: avoid overflows with u8 font size
   * macos,libghostty: font size is a u8
 .
   [ Pete Schaffner ]
   * Revert "Revert "Merge pull request #1550 from peteschaffner/titlebar-unzoom-button""
   * Revert luminance check from commit f7129880f5c4
 .
   [ Mitchell Hashimoto ]
   * minor style changes
   * apprt/gtk: handle gtk realize error more gracefully
 .
   [ Qwerasd ]
   * fix(terminal/stream): add SPA and EPA handlers
 .
   [ Tristan Partin ]
   * fix: remove deprecated to-pixdata gresource preprocessor
 .
   [ Qwerasd ]
   * perf(terminal): clear unprotected cells in spans
   * fix(terminal): correct wrap logic in insert/deleteLines
   * fix(termio/exec): avoid overflow in setCursorRow/ColRelative
 .
   [ Angelo Tata ]
   * Clarify macOS build requirements
 .
   [ RGBCube ]
   * nix: make ReleaseFast the default package
   * nix: use packages = instead of (native)buildInputs as that is recommended
 .
   [ Qwerasd ]
   * fix(terminal): insert/deleteLines boundary cond.s
   * test(terminal/Screen): clearRows with protected cells
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12 (security, ff to staging-next)
 .
   [ Jon Parise ]
   * os/homedir: use NSFileManager on macOS
   * os/homedir: remove now unnecessary fba.reset()
 .
   [ Qwerasd ]
   * terminal/kitty_graphics: update outdated comments
   * terminal/kitty_graphics: ignore base64 padding
   * fix(kitty_graphics): set dirty state on various scroll operations
   * terminal/kitty_graphics: update tests
 .
   [ Gordon Cassie ]
   * fix(build): solve issue with building tests on certain apple cpus.
 .
   [ Qwerasd ]
   * font/sprite: improve rendering of dashed lines
 .
   [ Mitchell Hashimoto ]
   * font/sprite: remove comptime arg for box drawing
   * fmt
 .
   [ Pete Schaffner ]
   * Make things work with really dark backgrounds
   * Fix conflicting constraints issue
   * Put titlebar font code where it was intended
 .
   [ Mitchell Hashimoto ]
   * font/shaper: fix CoreText shaper to compile with latest terminal changes
 .
   [ Marius Svechla ]
   * shell-integration: implement no-title option
 .
   [ Qwerasd ]
   * test(terminal/Screen): selectionString across page boundaries
   * fix(terminal/Sreen): selectionString across pages
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12 (re-follow nixos-unstable)
 .
   [ rok ]
   * input: escape can be used to clear dead key state
 .
   [ Mitchell Hashimoto ]
   * pkg/macos: add missing functions to macos/foundation
   * font/coretext: shaper supports user-defined font features
   * font: enable the coretext shaper by default for CoreText faces
   * font/coretext: remove todo for font features
   * font/coretext: respect quirks fonts for shaper
   * font/coretext: better comment coretext shaper
   * font/coretext: face doesn't need harfbuzz font if we're not using it
   * build: do not build/link harfbuzz on macOS
   * ci: build debug build for pr builds
   * Update src/font/shape.zig
 .
   [ Qwerasd ]
   * flake: update ZLS
   * terminal/Screen: improve selectionString page test
 .
   [ Mitchell Hashimoto ]
   * font/coretext: unit tests pass on macOS
 .
   [ Qwerasd ]
   * fix(terminal/Screen): selectionString multi-page
   * fix(inspector): cell picker in scrollback
 .
   [ Mitchell Hashimoto ]
   * font/coretext: handle two-byte utf16 followed by more chars
   * ci: test macOS
   * input: add test for esc clearing dead key state
 .
   [ Severus ]
   * Add note about GTK 4.14
 .
   [ rok ]
   * input: do not emit sequence on <BS> when their's UTF-8 text
 .
   [ Pete Schaffner ]
   * Update standard title/tab bar when config changes
   * Update titlebar tabs when config changes
 .
   [ Mitchell Hashimoto ]
   * update README
   * input: add test for backspace change
   * font: remove unused struct
   * font: descritor can hash using a hasher
   * font: introduce GroupCacheSet, use it for descriptors to start
   * font: CodepointMap hashable, use for groupcacheset
   * font: GroupCacheSet.Key has metric modifiers
   * font: GroupCacheSet can initialize a group
   * core: convert surface/app to use GroupCacheSet
   * core: deref the font group when not used
   * font: improve log statements a bit
   * font: [broken] working on extracting Collection from Group
   * font: a mess
   * font: Collection has load options
   * font: Collection.getIndex
   * font: Collection deinit
   * font: Collection autoItalicize
   * font: Collection setSize
   * font: CodepointResolver beginnings
   * font: CodepointResolver style disabling test
   * font: CodepointResolver test box glyph
   * font: start SharedGrid
   * macos: wrap syncAppearance in async call
 .
   [ Pete Schaffner ]
   * Fix new tab icon color not updating sometimes
 .
   [ Mitchell Hashimoto ]
   * font: SharedGrid setup test infra
   * font: SharedGridSet starts
   * font: SharedGridSet clarify memory ownership
   * core: begin converting to SharedGridSet, renderers still broken
   * renderer/metal: picking away at font group => grid changes
   * renderer/metal: convert more
   * font: SharedGrid.getIndex
   * font: SharedGrid hasCodepoint
   * font/shaper: work on new grid APIs
   * font: implement many rendering, caching functions for SharedGrid
   * font: Atlas updated to use monotonic ID
   * renderer/metal: use new atlas APIs
   * core: App asserts the font grid set is empty on close
   * renderer/metal: re-enable preedit rendering
   * font/harfbuzz: work with new font structures
   * renderer/opengl: convert to SharedGrid, new windows/tabs are frozen
   * renderer/opengl: clean up texture sync
   * font: SharedGridSet locks and is thread-safe
   * config: RepeatableString.clone should clone all the strings too
   * config: FontStyle.clone
   * font: SharedGridSet uses DerivedConfig
   * font: SharedGridSet DerivedConfig does not take font size
   * renderer/Metal: change font size works again
   * core: add todo for next time
   * core: font size changes work
   * renderer/opengl: support font size change
   * apprt/gtk: setFontsize should have error
   * apprt/embedded: setfontsize
   * font: fix hashing of descriptor strings
   * renderer/opengl: set the font grid
   * address many fontmem todos
   * font: remove old files
   * font: CodepointMap supports clone
 .
   [ rok ]
   * input: fix bs emitting sequence when it should not
 .
   [ Mitchell Hashimoto ]
   * font/coretext: shaper may return multiple runs and that's okay
   * font/coretext: fix merge issue from #1662
 .
   [ Qwerasd ]
   * font: fix discovery of styles
   * font/sprite: Fix U+255D
 .
   [ Mitchell Hashimoto ]
   * font: SharedGridSet must hash diff for font size change
   * macos: add the debug menu item to the xcode run scheme
   * nix: do not build ZLS on linux aarch64, see comment
   * font: SharedGridSet.Key needs to clone the DerivedConfig
 .
   [ Nick Jones ]
   * Mention Debian in compilation notes
 .
   [ Jon Parise ]
   * macos: fall back to the system titlebar font
 .
   [ Mitchell Hashimoto ]
   * terminal: handle case where eraseRowBounded happens at top of page
   * terminal: index (LF) that scrolls scroll region preserves SGR
   * config: update docs that fullscreen is incompatible with win-deco
   * macos: show alert when creating new tab in non-native fs
 .
   [ Jon Parise ]
   * apprt/embedded: store userdata directly on Surface
 .
   [ Mitchell Hashimoto ]
   * update zig
   * fix more comptime var leaks
   * update zig again
   * working on more zig breaking changes
   * update libxev
   * update zig and zig-objc
   * update mach-glfw dep to work with latest zig
   * input: Key.Side needs a specific backing int for use in packed
   * build: fix broken install header call for Linux
   * terminal: another enum in a packed struct needs backing int
   * fix breaking changes with latest zig
   * update zig
 .
   [ Max Guppy ]
   * apprt/gtk: Fix background-opacity
 .
   [ Mitchell Hashimoto ]
   * update zig, fix linux build
   * update mach to avoid vulkan
   * terminal: relax cell zero value default test
   * update mach-glfw to use b.path for relative includes
   * nix: update cache hash
   * update deps
   * update zig
   * fix windows build
   * build: use b.path everywhere
   * build: absolute path should not use b.path
 .
   [ Chris Marchesi ]
   * nix: update nixpkgs-zig-0-12
 .
   [ Mitchell Hashimoto ]
   * inspector: show cell codepoints and wide property
   * config: rename "wcswidth" to "legacy" for "grapheme-width-method"
 .
   [ Jon Parise ]
   * termio: fix "forced" shell integration
 .
   [ Mitchell Hashimoto ]
   * terminfo: for XTGETTCAP, non-parameterized string values return encoded
 .
   [ Jon Parise ]
   * termio: pass full command to shell integration
 .
   [ Mitchell Hashimoto ]
   * terminfo: reset kbs back to ^?, clear high bit for encoding
   * Revert "Merge pull request #1690 from TheOnlyMrCat/gtk_opacity"
   * update to zig 0.12
   * try to use official zig 0.12 for nix package
   * remove nixpkgs fork for zig 0.12
   * build.zig: change required zig version
   * update README
   * font: strikethrough uses sprite rendering
   * renderer/metal: remove strikethrough support from GPU
   * renderer/opengl: strikethrough as sprite
   * renderer/opengl: remove strikethrough fg mode
   * renderer/metal: start setting up per-frame state
   * renderer/metal: move more frame state to the frame
   * renderer/metal: implement triple-buffering
   * renderer/metal: move more metal objects into GPUState
   * renderer/metal: don't draw with zero instances
   * renderer/metal: dedicated cell bg shader
   * renderer/metal: dedicated cell fg shader
   * renderer/metal: rename drawcells
   * renderer/metal: update comment
 .
   [ Jack N ]
   * sprites: dont thicken via font-thicken, + add cursor thickness adjustment
   * fix macos build
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: prepare cell contents mapping data (not implemented yet)
   * terminal: export Coordinate
   * renderer/metal: grid pos for bg/text should be ushort2
   * renderer/metal: working on cell contents map
   * terminal: Coordinate uses CellCountInt
   * renderer/metal: swap to new cell contents map
   * renderer/metal: clear cell contents bottom-up
 .
   [ Jared Widberg ]
   * Revert cc29f0686379187733fe8824a2bea3ec63d93448
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: use index() for all cell settings
   * renderer/metal: render the cursor
   * renderer/metal: invert text under cursor again
   * renderer/metal: only invert if block
   * renderer/metal: preedit works again
   * renderer/opengl: fix compilation
   * renderer/metal: remove old functions
   * renderer/metal: improved comments
   * renderer/metal: go back to single buffering for now
   * renderer/metal: frame index must fit up to buffer count
   * renderer/metal: font changes needs to reset cell contents
   * renderer/metal: only delete values from the same array
   * renderer/metal: skip frame update if our cell buffer is too small
   * font/coretext: shaping ligatures adds padding cells for replaced cells
 .
   [ Gordon Cassie ]
   * Fix typo.
   * Remove unnecessary allocation.
   * More log statements.
   * revert on comment removal
 .
   [ Mitchell Hashimoto ]
   * font: runs do not split on bg color change
   * font/coretext: tests for #1721
   * build: add -Dfont-backend=coretext_harfbuzz to force Harfbuzz w/ CT
   * font/shaper: add hash to text runs
   * font/shaper: add Cache
   * renderer/metal: integrate shaping cache
   * renderer/opengl: use shaper cache
   * renderer/metal: log some cache info
   * renderer/metal: don't log
   * font/shaper: run hash should include font index
   * font/coretext: only pad shaped text ltr
   * terminal: add dirty bits to the page structure
   * terminal: dirty tracking on `print` with tests
   * terminal: remove unused debug log
   * terminal: dirty tests on t/b/l/r margins
   * terminal: dirty tests for insertLines
   * terminal: scrollDown dirty tests
   * terminal: scrollDown dirty tests
   * terminal: index dirty tests one todo
   * terminal: eraseRowBounded dirty tracking
   * terminal: more dirty tests
   * terminal: deleteChars dirty
   * terminal: many more dirty checks
   * terminal: more dirty tests
   * renderer/metal: docs
   * terminal: new coordinate type
   * terminal: track dirty state of palette and reverse colors
   * terminal: dirty tracking on screen clone
   * terminal: on clone, only mark rows dirty that were previously dirty
   * renderer/Metal: only rebuild rows that are dirty
   * terminal: set dirty bit for screen swap
   * terminal: resize causes full screen redraw
   * renderer/metal: re-enable triple buffer
   * font: noop shaper
   * terminal: Screen selection marks dirty
   * renderer: add draw now async wakeup
   * renderer: move our constant draw timer up to 120fps
   * apprt/embedded: add draw now API
   * pkg/macos: add CVDisplayLinkSetCurrentCGDisplay
   * pkg/macos: display link callback slightly more typesafe
   * renderer/metal: setup display link
   * renderer/metal: stop display link when we lose focus
   * renderer/metal: stop/start display link on occlusion
   * renderer/metal: remove unnecessary logs
   * renderer/metal: do not update frames if cells don't change
   * renderer: remove 10ms delay on repaint
   * renderer: add comment why we have dead code
   * renderer/metal: clean up some unnecessary state around rebuilds
   * renderer/metal: API to handle macOS display ID changing
   * renderer: add window-vsync option (defaults to false)
 .
   [ Jon Parise ]
   * shell-integration: automatic bash integration
   * shell-integration: revise ShellIntegration.command comment
 .
   [ Mitchell Hashimoto ]
   * pkg/macos: add more CoreText APIs
   * pkg/macos: CTFontCreateForString
   * renderer/metal: reset screen dirty flags
   * terminal: only set selection dirty to true on clear if previously set
   * renderer/metal: rebuild all cells on resize
   * renderer/metal: disable dirty tracking temporarily
   * renderer/metal: disable bandaid
   * terminal: dirty tracking in more places, tests coverage
   * terminal: more dirty tracking
   * renderer/metal: rebuild full screen when viewport changes
   * terminal: maintain dirty bits when rotating rows on clone
   * terminal: eraseRows sets dirty bits
   * font: use CoreText API for CJK unified ideographs
   * font: fontconfig has proper function
   * font/coretext: choose proper original font for CJK search
 .
   [ Qwerasd ]
   * renderer/Metal: improve cell contents tracking
   * renderer/Metal: ArrayList cell Contents rows
   * renderer/Metal: cell Contents cleanup
   * renderer/Metal: cell Contents tests
   * renderer/Metal: cell Contents asserts
 .
   [ Mitchell Hashimoto ]
   * core: preedit modification sets full screen dirty
   * termio: shell integration uses arena
   * update README
 .
   [ Jon Parise ]
   * shell-integration: expand bash HISTFILE value
 .
   [ Mitchell Hashimoto ]
   * font/coretext: do not assume capacity on arraylist append
   * pkg/macos: add more text APIs
 .
   [ Severus ]
   * Add GDK_DEBUG as default environment variable for linux
   * Add upstream's issue
 .
   [ Mitchell Hashimoto ]
   * font/coretext: force LTR shaping
   * font: disable CJK unification fallback with freetype rasterizer
   * ci: add renderer, font engine macOS build+test matrix
   * font: SharedGridSet works without font discovery
   * font: fix coretext test issues with harfbuzz shaper
 .
   [ Qwerasd ]
   * feat(font): Non-integer point sizes
   * fix a couple test failures
   * fix freetype face size calculation
   * fix point size type
   * revert dpi type to u16
   * keep font size in sane range
   * Enable libpng in harfbuzz freetype dep
   * cast dpi to int again
   * update font_size to f32 in libghostty
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: set GDK_DEBUG
   * ci: collapse renderer/font matrix into single job
   * renderer/metal: reset cells when font size changes to avoid blank
   * pkg/simdutf: update to 5.2.8
   * pkg/highway: update
   * pkg/harfbuzz: update
   * pkg/glslang update
   * pkg/libpng: update
   * pkg/libxml2: udpate
   * pkg/zlib: update
   * nix: update cache hash
   * Revert "pkg/libxml2: udpate"
   * nix: update hash again
 .
   [ cryptocode ]
   * Rename Split Horizontally/Vertically to Split Right/Down
   * Rename menu item variable name accordingly
 .
   [ Qwerasd ]
   * fix(renderer): rebuild font grid and reset shaper cache on hot reload
 .
   [ Jon Parise ]
   * shell-integration: update bash-preexec.sh
 .
   [ Mitchell Hashimoto ]
   * update Dear Imgui to 1.90.6
   * macos: ime coordinate needs to be converted from view to window coords
 .
   [ Jeffrey C. Ollie ]
   * Add split right & split down menu entries for the GTK apprt.
   * suppress identical desktop notifications
   * add strict rate limit
   * adjust log message
 .
   [ Qwerasd ]
   * fix(renderer/Metal): dirty track link highlights
 .
   [ Mitchell Hashimoto ]
   * config: default window-vsync to true
 .
   [ Jon Parise ]
   * shell-integration: suppress shellcheck issues
   * shell-integration: handle 'bash -c command'
   * shell-integration: update Bash integration details
 .
   [ Pete Schaffner ]
   * Make title/tab bar respect `window-theme` setting
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 26 to 27
 .
   [ ilk ]
   * feat(shell-integration): add integration for Elvish
   * refactor(shell-integration:elvish): refactor to improve readability
 .
   [ Mitchell Hashimoto ]
   * macos: use enum for window theme
   * small comment changes
   * macos: only set bg color and titlebar color if opaque
 .
   [ Jeffrey C. Ollie ]
   * Address review comments
 .
   [ Mitchell Hashimoto ]
   * macos: titlebar styling always applies to titlebar tabs
   * font/shaper: periodically reset LRU in cache to avoid slowdown
 .
   [ Gregory Anders ]
   * os: log stderr from open command
 .
   [ Troels Thomsen ]
   * Recognize system theme
 .
   [ Mitchell Hashimoto ]
   * os: some stylistic changes, comments for stderr logging
 .
   [ dependabot[bot] ]
   * --- updated-dependencies: - dependency-name: cachix/cachix-action   dependency-type: direct:production   update-type: version-update:semver-major ...
 .
   [ Troels Thomsen ]
   * Color after setting window theme and tab mode
 .
   [ Mitchell Hashimoto ]
   * Extract guard statement
 .
   [ Troels Thomsen ]
   * Avoid coloring when using native tabs
 .
   [ Matt Robenolt ]
   * macos: Declare Ghostty as a Shell
 .
   [ Mitchell Hashimoto ]
   * renderer: kitty image with y offset should stretch image
   * update README
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.4 to 1.1.5
 .
   [ Jan200101 ]
   * terminal: support using the bright palette for bold text
 .
   [ Mitchell Hashimoto ]
   * update libxev
   * nix: update hash
   * very minor nitpicks
   * font/coretext: adjust strikethrough position for fonts with leading
 .
   [ Peter Cardenas ]
   * 🧹 make strikethrough calculation slightly clearer
 .
   [ Jan200101 ]
   * build: prevent breakage with relative paths `root()` returns `@src().file` which isn't guaranteed to be an absolute path
 .
   [ Mitchell Hashimoto ]
   * modify var name
   * font: treated fonts with mixed color/non-color glyphs as text
   * core: nitpick some var names
   * shell-integration: add README about Elvish
 .
   [ ilk ]
   * feat(shell-integration): add automatic integration for Elvish
   * refactor(shell-integration): refactor to make cases alphabetical
   * refactor(shell-integration): refactor to make cases alphabetical
 .
   [ Mitchell Hashimoto ]
   * prettier
   * rename env var
   * font/coretext: can read font tables
   * font/opentype: add SVG table parser, membership check
   * font/freetype: API to load font table
   * font/coretext: determine glyph colorization
   * font/coretext: hasColor/isColored
   * font: handle presentation at glyph layer
   * font/freetype: update to new presentation APIs
   * font/freetype: CBDT/CBLC tables imply color
   * pkg/freetype: use c_ulong which isn't 64-bit on windows
   * font: remove deferred face todo, note why
   * font: remove unused structs
   * font/coretext: cleanup unused comments
   * font/coretext: glyphIndex must return u32 for noop shaper
 .
   [ cryptocode ]
   * scrollback: Include active area when writing scrollback to file
 .
   [ Mitchell Hashimoto ]
   * font: when presentation isn't found, always fallback to any
 .
   [ ilk ]
   * fix(elvish-integration): fix mistakes
 .
   [ Gregory Anders ]
   * os/open: do not wait for commands which do not terminate
 .
   [ Mitchell Hashimoto ]
   * update READMEs to new repo URL
   * update release job
   * update README
 .
   [ Jon Parise ]
   * Update functional URLs for ghostty-org
 .
   [ Mitchell Hashimoto ]
   * Allow keybinding arbitrary unicode codepoints (#1814)
   * input: Kitty alternate should be reported even if no shifted text (#1817)
   * input: CSIu should send full codepoint
   * terminal: point coord y needs to be a larger int
   * apprt/gtk: when dragging tab out, grab focus
   * core: do not toggle mouse hidden on keyCallback with mods
   * core: only hide mouse on key press events
   * apprt/gtk: only set cursor on shape change if its visible
   * gtk: note setting title unhides the cursor
   * gtk: goto_split:previous/next wrap
   * gtk: set tab group so that tabs can be dropped onto other windows
 .
   [ Jon Parise ]
   * shell-integration: bash must be explicitly enabled
 .
   [ Mitchell Hashimoto ]
   * inspector: fix encoding of pty-encoded key event
   * update color themes to a34aeb1f505707a35102fe95984d4bea4a85eb3e
   * renderer/opengl: don't append assume capacity
 .
   [ Paul Berg ]
   * gtk: update tab's window upon switching notebook
 .
   [ Mitchell Hashimoto ]
   * os: add linux API for getting cgroup by pid
   * apprt/gtk: cgroup initialization
   * os: API for listing cgroup controllers
   * os: rename linux => cgroup
   * os: API to configure cgroup controllers
   * os: cgroup create/move
   * os: cgroup can set memory limits
   * apprt/gtk: store transient cgroup
   * plumb the linux cgroup through to termio
 .
   [ Jan200101 ]
   * inspector: fallback to unicode when key event is invalid This prevents non-ascii characters like Ö from being displayed as invalid
 .
   [ Mitchell Hashimoto ]
   * bikeshed style
   * termio: plumb a lot more to get ready to move into cgroup
   * termio/exec: move subprocess into cgroup
   * config: control cgroup isolation
   * apprt/gtk: config to hard fail on cgroup init
   * config: add cgroup memory limit config
   * config: clarify some config
   * apprt/gtk: cgroup hierarchy only affects surfaces
   * xdg-terminal-exec invocations set title based on command
   * config: xdg-terminal-exec parsing should ignore the initial "-e"
 .
   [ Tim Culverhouse ]
   * stream: remove redundant alias handling in csiDispatch
 .
   [ Jon Parise ]
   * os: std.ChildProcess -> std.process.Child
 .
   [ Mitchell Hashimoto ]
   * config: macos-titlebar-style, remove titlebar-tabs option
   * macos: set background opacity/blur on window controller not surface
   * macos: set background color on transparency that matches Terminal.app
   * config: introduce macos-window-shadow
   * terminal: mark old/new rows as dirty when moving the cursor absolute
   * terminal: all cursor movement needs to mark the old and new page dirty
   * font: preload deferred faces in SharedGrid to avoid data races
 .
   [ Danny Lin ]
   * scrollback: buffer writes to scrollback file
 .
   [ Jeffrey C. Ollie ]
   * Use clone3 / CLONE_INTO_CGROUP on Linux
   * use consistent type for pid
 .
   [ Mitchell Hashimoto ]
   * core: consider any paste with bracketed paste closer unsafe
   * small stylistic tweaks
   * remove unused var
   * migrate termio.Options.LinuxCgroup to Command
   * terminal: add easy debug mode for stream debugging
   * terminal: reject invalid DECSASD status code
 .
   [ Qwerasd ]
   * misc: improve rebuildCells time logging
   * perf: introduce CacheTable strcture, use it for shaper cache
 .
   [ Cameron Dart ]
   * feat: focus-follows-mouse
   * macos: add to config
   * macos: surface focus follow mouse
   * update config in TerminalController.windowDidLoad and TerminalController.configDidReload
   * no early return
   * feat(gtk): focus follows mouse
 .
   [ Robbie Vanbrabant ]
   * Nix dev env to not depend on deleted Zig release
 .
   [ Qwerasd ]
   * perf: introduce RefCountedSet structure, use it for Style.Set
   * perf(shaper/coretext): cache fonts between shape calls
   * perf: introduce CFReleaseThread for running CoreFoundation releases
   * shaper/coretext: update tests
   * add CFReleasePool handling to OpenGL renderer
 .
   [ Robbie Vanbrabant ]
   * macos: regain window focus on inspector toggle
 .
   [ Mitchell Hashimoto ]
   * minor comment changes
   * renderer/opengl: invert cursor cell text when glyph is constrained
 .
   [ isabel ]
   * refactor(nix): specify source
   * build(nix): include more into source; ignore flake comapct
 .
   [ Mitchell Hashimoto ]
   * nix: revert back to 23.05 for now
   * CacheTable tests, style changes
   * Move CFReleaseThread to os package
   * font: coretext shaper owns the cf release pool
   * coretext shaper owns CFReleaseThread, works on both Metal and OpenGL now
   * cache_table and ref_counted_set work on 32-bit machines
   * font: add noop endFrame calls to all other shapers
   * font/coretext: cached fonts uses unmanaged arraylist
 .
   [ isabel ]
   * nix: inherit lib from unstable
 .
   [ Mitchell Hashimoto ]
   * small stylistic changes
 .
   [ Peter Cardenas ]
   * 🔧 more lenient file matching for ghostty config
 .
   [ Mitchell Hashimoto ]
   * Update libxev
   * update to zig 0.12.1
   * terminal: RefCountedSize should use usize for byte math
   * begin 0.13 update process -- very broken
   * update ziglyph
   * update a couple more deps
   * update mach
   * update deps
   * 0.13 conversions
 .
   [ Gordon Cassie ]
   * Fix some basic build errors.
 .
   [ Mitchell Hashimoto ]
   * pkg/oniguruma: call new functions
   * nix: update package to zig 0.13
   * fix linux builds
   * update libxev
   * nix: update to zig 0.13
   * disable AVX512 until Zig issue is resolved
 .
   [ Seth Vargo ]
   * Clarify shell integration installation
 .
   [ Mitchell Hashimoto ]
   * update README for Zig 0.13
   * prettier
 .
   [ Qwerasd ]
   * fix(terminal/PageList): clear cells in truncated rows during clone
   * RefCountedSet: use usize for cap to allow up to max `Id`+1
   * page integrity checks: detect zombie styles
   * fix(RefCountedSet): add NeedsRehash error and fix PSL counting bug
 .
   [ Mitchell Hashimoto ]
   * terminal: ref counted set count is const
   * use +% for overflow
   * terminal: add test for pagelist to clear styles
   * terminal: if cloned screen is subset of selection, select full screen
 .
   [ Justin Restivo ]
   * docs: fix nix wiki 404 in README
 .
   [ Mitchell Hashimoto ]
   * macos: titlebar tabs should do nothing if no titlebar
   * config: reorder increase font size so it works on macOS menu
 .
   [ Justin Su ]
   * fix a typo in Config.zig
 .
   [ Mitchell Hashimoto ]
   * pkg/oniguruma: add additional header configs for build
 .
   [ Severus ]
   * Fix issue 1667
 .
   [ Mitchell Hashimoto ]
   * core: mouse within top/bottom 1 pixel should scroll selection
   * macos: update Sparkle to 2.6.3
   * macos: initialize some pressure click boilerplate
   * core: mouse pressure state and callbacks
   * macos: release pressure on mouseUp
   * macos: I don't need any custom quicklook stuff
   * macos: hacky API to get a CTFont for QuickLook
   * macos: return valid selection range
   * macos: add API to get selection top-left for quicklook
   * apprt: convert selection info to a single struct and C API
   * add TODO for branch
   * macos: offset quicklook box a bit to look better (imo)
   * apprt: scale coretext font size for quicklook properly
 .
   [ Codey Oxley ]
   * docs: Convert 'unfocused-split-fill' comments into doc block
 .
   [ Mitchell Hashimoto ]
   * macos: remove log statement
   * mouse button callbacks returns bool for consumption
   * macos: start context-menu
   * core: right-click press selects word
   * core: on right click, only create selection if point isn't in prev sel
   * apprt/gtk: conform to new mouse button API
 .
   [ Ben Linsay ]
   * Add a line to the README about config reload
 .
   [ Mitchell Hashimoto ]
   * macos: add string extension
   * macos: add windowing commands to context menu
   * macos: i don't like windowing in the context menu
   * macos: disable macOS-only API on iOS
   * ctrl+click is handled as right-click (with various details)
   * prettier
 .
   [ Anton Kastritskii ]
   * docs: add valid values for enum config options
 .
   [ Mitchell Hashimoto ]
   * macos: add man pages to app bundle
 .
   [ Jeffrey C. Ollie ]
   * Don't leak env vars in GTK apprt.
 .
   [ Mitchell Hashimoto ]
   * config: note blank valid value
   * macos: implement ctrl+command+d for quicklook under cursor
 .
   [ Jon Parise ]
   * build: update repository URLs in mdgen documents
 .
   [ Mitchell Hashimoto ]
   * core: mouse shift escape applies to all buttons, not just left
   * command: if chdir fails for subprocess, ignore the error
   * build: if emit-docs is not set, still create share/man
   * macos: relabel tabs when mergeAllWindows is called
 .
   [ Jon Parise ]
   * termio: add man pages to MANPATH on macOS
   * termio: remove unnecessary resources_key const
 .
   [ Mitchell Hashimoto ]
   * termio: allow failing to build manpath string
 .
   [ Anton Kastritskii ]
   * docs: warn about `window-decoration` disables tabs functionality
 .
   [ Mitchell Hashimoto ]
   * terminal/kitty: image dimensions off by one fix
   * terminal/kitty: delete by column/row is one-indexed
   * terminal: Pin.isBetween incorrect if same y and same page
   * terminal/kitty: intersect cell deletion is 1-based
   * terminal: when adjusting page capacity, account for cursor ref counts
   * terminal: parse osc 8 hyperlink_start
   * terminal: parse osc8 end
   * terminal: additional parse test cases
   * terminal: page memory layout for uri/hyperlink data
   * terminal: change default hyperlink count to zero
   * terminal: remove the hyperlink stuff i'm starting over
   * terminal: add strings table to page
   * terminal: hyperlink data structures beginning, alloc into page
   * terminal: refcountedset passes base memory to all context funcs
   * terminal: RefCountedSet has Context variant methods
   * terminal: RefCountedSet doesn't need to pass base anymore
   * terminal: hyperlink start/end on screen
   * terminal: RefCountedSet should call deleted on upsert
   * terminal: test hyperlink reuse shares ID
   * terminal: hyperlink deleted callback frees string memory
   * terminal: print sets hyperlink state, tests
   * terminal: row needs hyperlink state, test clearing hyperlink
   * terminal: handle moving/swapping/clearing cells with hyperlinks
   * terminal: save/restore cursor doesn't modify hyperlink state
   * terminal: index hyperlink tests
   * terminal: scrollDown with hyperlinks
   * terminal: scrollUp hyperlink tests
   * terminal: full reset clears OSC8 state
   * termio: hook up OSC8
   * terminal: increase std cap for now until we implement resize
   * terminal: simplify hyperlink capacity
   * terminal: support page oom with hyperlinks
   * core: clicking OSC8 links work
   * terminal: page clone needs to clone strings
   * renderer: matchSet matches OSC8
   * renderer: match multiple lines for osc8
   * terminal: copy hyperlinks on reflow
   * terminal: end hyperlink state when switching screens
   * core: when over a link we must set the whole screen dirty on move
   * terminal: pause integrity checks in clone row until done
   * renderer: match no-ID OSC8 in contiguous chunks
   * terminal: RefCountedSet checks for existence prior to cap check
   * terminal: pause integrity checks on resize for hyperlink set
   * terminal: set hyperlink state on clone
   * terminal: disable zombie styles integrity check
   * terminal: on print, adjust page size if we need to grow for hyperlinks
   * terminal: adjustCapacity handles hyperlink state
 .
   [ Anton Kastritskii ]
   * docs: specify that window-decoration disables tabs on macos only
 .
   [ Mitchell Hashimoto ]
   * terminal: hyperlink capacity adjustment needs to call safe variant
   * macos: some disabled swiftui code that makes link tooltips show
   * macos: show URL on OSC8 hover
   * core: helper to get osc8 URI
   * apprt: stubs for mouseOverLink
   * macos: fix iOS build
 .
   [ Okan Esen ]
   * document unfocused split option only working on macOS
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: convert surface to overlay so we can support the url overlay
   * apprt/gtk: style the overlay
   * macos: move OSC8 URL view to right if mouse is over it
   * core: show URL even for non-OSC8 hyperlnks
   * apprt/gtk: move url hover bar when its under the mouse
   * apprt/gtk: forgot to remove debug code to hide overlay
   * apprt/gtk: add deinit for url widget
   * apprt/gtk: add all event handlers to the overlay so both receive
   * apprt/gtk: committed the forever status bar again
   * core: when mouse reporting, clear link state
   * macOS select output is cmd+tripleclick not control anymore
 .
   [ Qwerasd ]
   * RefCountedSet: add some missing context delete callbacks
   * Disable mouse scroll logging since it floods logs when trackpad scrolling
   * BitmapAllocator: slightly improve findFreeChunks mask calculation
   * terminal/page: add methods to get hyperlink and grapheme map capacities
   * terminal/page: use addWithIdContext when cloning hyperlink data
   * terminal: spacer heads and tails should be codepoint 0, not ' '
   * terminal/Screen: fix trailing blank cell handling for wrapped rows in dumpString
   * terminal/PageList: add method for logging debug diagrams
   * terminal/PageList: fix some incorrect test expectations
   * terminal/PageList: rework reflow logic to fix issues
 .
   [ Anton Kastritskii ]
   * docs: fix typo
 .
   [ Jon Parise ]
   * cli: boolean value support for packed structs
   * config: document true/false for shell-integration-features
 .
   [ Mitchell Hashimoto ]
   * terminal: remove errdefer deleted call for refcountedset
   * macos: limit URL preview to a single line, ellipses in middle
   * macos: left hover needs to be higher Z so it takes mouse priority
   * apprt/gtk: ellipsize URLs in middle to show end
 .
   [ Gregory Anders ]
   * macos: add split menu items to context menu
 .
   [ Tim Culverhouse ]
   * gtk: implement unfocused-split opacity and fill
   * gtk: prevent CSS collision on notebook stack
   * gtk: improve readability of runtime css fmt
   * gtk: use GtkDrawingArea to dim unfocused split
   * gtk: remove unused css class on GtkNotebook
   * gtk: add unfocused_widget when split created from menu
 .
   [ Alexey Shekhirin ]
   * docs(surface): `keyCallback` return value is self-descriptive
 .
   [ Kainoa Kanter ]
   * docs: AUR package
 .
   [ Mitchell Hashimoto ]
   * terminal: DCS parses params correctly
   * terminal: test DCS to make sure we don't regress
   * terminal: dcs put can return a command
   * terminal: all DCS events can produce a command
   * terminal: boilerplate for tmux control mode parsing
   * terminal: tmux enter/exit
   * terminal: dcs state cleanup in deinit
   * terminal: tmux parsing handles begin/end blocks
   * terminal: move tmux control mode parsing out to dedicated file
   * terminal/tmux: parse session-changed notification
   * terminal/tmux: many more notifications
   * terminal/tmux: block output notifications
   * termio: rename Exec to Termio throughout
   * termio: wip but it builds
   * termio: remove data field
   * termio: changeConfig on reader data
   * termio: move stream handler to dedicated file, remove dep on EventData
   * termio: queueWrite no longer uses EventData
   * termio: cleanup more state
   * termio: move subprocess out to its own file
   * termio: delete old impl
   * termio: fix up rebase
   * termio: rename
   * termio: move all subprocess logic to termio.Exec
   * termio: remove more unused things
   * termio: ReadData doesn't need a loop
   * termio: Thread doesn't need to hold termio pointer
   * termio: writer abstraction
   * termio: remove a ton of state
   * termio: writer needs a mut pointer
   * termio: excessive cursor reset
   * termio: ReadData is gone!
   * termio: fix windows build
   * termio: more windows fixes
   * termio: more windows fixes
   * termio: trying to get Exec to not have access to full Opts
   * termio: take reader as option
   * termio: remove more state
   * termio: reader => backend
   * termio: writer => mailbox
   * termio: update docs
   * termio: get rid of manual backend
   * remove unused derived config values
   * termio: remove unused data
   * apprt/gtk: toggle_window_decorations keybinding
 .
   [ karei ]
   * gtk: fix terminal inspector menu button
 .
   [ Mitchell Hashimoto ]
   * simd: add base64 functions from simdutf
   * terminal/kitty: change graphics base64 decode to use simdutf
 .
   [ Remi Gelinas ]
   * feat(cli): add initial validate-config action
 .
   [ Mitchell Hashimoto ]
   * terminal: implement in-band size reports (Mode 2048)
   * config: `-e` CLI flag automatically implies `gtk-single-instance=false`
   * config: font-family CLI flags will clear font families set in files
 .
   [ Remi Gelinas ]
   * refactor: move config file loading into loadFile
 .
   [ omar ]
   * fix: remove dollar sign from code snippets
 .
   [ Remi Gelinas ]
   * fix: handle relative paths in CLI
   * feat: print every config error message
   * fix: handle recursive config files
 .
   [ Jon Parise ]
   * terminal: test clearPrompt with a continuation
   * terminal: differentiate OSC 133 continuation and secondary kinds
   * editorconfig: indent styles for shell scripts
   * bash: always send "end of command" prompt sequence
 .
   [ Remi Gelinas ]
   * docs: add docstrings
 .
   [ Chris Marchesi ]
   * apprt/gtk: set mouse shape on GL area widget instead of overlay
 .
   [ Qwerasd ]
   * shaper/coretext: reset font cache on grid change
 .
   [ Łukasz Niemier ]
   * fix: instead of overriding MANPATHs set by OS, append to them
 .
   [ Mitchell Hashimoto ]
   * tweaks
   * shaper/coretext: use pointer address for cache comparison
 .
   [ Jon Parise ]
   * bash: add primary and secondary marks to PS1 and PS2
 .
   [ Cameron Dart ]
   * feat: keybinds for text selection on copy mode
 .
   [ Mitchell Hashimoto ]
   * rename to expand_selection
   * adjust selection
 .
   [ karei ]
   * core: support opening scrollback file in default text editor
   * apprt/gtk: add menu button for opening scrollback file
   * macos: add button and menu item for opening scrollback file
 .
   [ Mitchell Hashimoto ]
   * Revert "apprt/gtk: add menu button for opening scrollback file"
   * Revert "macos: add button and menu item for opening scrollback file"
   * some bikeshedding
   * core: make the write scrollback file logic more generic
   * add write_selection_file
   * core: add binding to write screen to file
 .
   [ Justin Su ]
   * Fix build on Xcode 16
 .
   [ Mitchell Hashimoto ]
   * terminal: Pin.isBetween broken logic
 .
   [ Justin Su ]
   * Fix some words
   * Add `adjust_selection` actions for `beginning_of_line` and `end_of_line`
   * Update comment
   * Relabel all tabs and clear labels for tabs with no key equivalent
   * Use 1-indexed values when dealing with tabs
 .
   [ karei ]
   * apprt/gtk: implement context menu
   * apprt/gtk: disable copy in context menu while without selection
 .
   [ Remi Gelinas ]
   * feat: add absolute path assertion
   * docs: specify path must be absolute
 .
   [ Mitchell Hashimoto ]
   * font: fontconfig always prefer monospace in pattern
   * macos: comment on clearing tab
 .
   [ multifred ]
   * Fix multiple deprecated names for zig lib/std
 .
   [ Justin Su ]
   * Add unit tests
 .
   [ Tim Culverhouse ]
   * inspector: fix mode prefix by prepending '?' only to private modes
 .
   [ Gregory Anders ]
   * config: add cursor-invert-fg-bg option
 .
   [ Jon Parise ]
   * bash: ghostty doesn't support OSC 133;P
 .
   [ Mitchell Hashimoto ]
   * config: clarify reload font-size behavior
   * some tweaks
   * apprt/gtk: get rid of forcing context menu for now
   * apprt/gtk: some stylistic changes
 .
   [ karei ]
   * apprt/gtk: don't dim surface when opening context menu
 .
   [ Gregory Anders ]
   * renderer/opengl: implement cursor-invert-fg-bg
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: fix custom shader animations with display link
   * terminal: page clone handles case where hyperlink can't dupe
   * renderer/metal: zig fmt
   * terminal: printing over a cell with the same hyperlink keeps flag
 .
   [ Edmund Miller ]
   * zsh: Generalize shebang
 .
   [ Qwerasd ]
   * renderer/metal: use swap chain for custom shader passes
 .
   [ Mitchell Hashimoto ]
   * terminal: isBetween needs to fall through for matching y on top page
   * terminal/kitty: add graphics diacritics file
   * terminal/kitty: placements support location enum (only pin for now)
   * terminal/kitty: add virtual placeholders placements
   * renderer: skip virtual placements
   * terminal: cell returns empty for Kitty placeholder
   * terminal/kitty: parse relative placement fields
   * terminal/kitty: diacritic small tests
   * terminal/kitty: rename diacritics to unicode
   * terminal: print must use codepoint() now to work with placeholders
   * terminal/kitty: starting virtual placement iterator
   * temrinal/kitty: really basic row/col diacritic decoding
   * terminal/kitty: parse image/placement id from style
   * terminal/kitty: implement high bit image id parsing
   * terminal/kitty: preparing to build runs of placements
   * terminal/kitty: working runs
   * terminal/kitty: extra placement tests
   * terminal: introduce row bit for kitty virtual placeholders
   * terminal/kitty: support cells with no diacritics
   * renderer/metal: extract out some image placement logic
   * renderer/metal: virtual placements are kind of rendering
   * renderer/metal: calculate proper grid offsets for image
   * terminal: appendGrapheme should text for codepoint, not text
 .
   [ Justin Su ]
   * Update docs for `window-padding-x/y`
 .
   [ Mitchell Hashimoto ]
   * adjust_selection keybind should not be consumed if no selection
   * terminal: cursorChangePin needs to migrate hyperlink state
 .
   [ Justin Su ]
   * Use `Surface.hasSelection()`
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: rewrite kitty placeholder handling
 .
   [ Jeffrey C. Ollie ]
   * Additions to GTK context menu
 .
   [ Mitchell Hashimoto ]
   * terminal/kitty: working on moving placement math here for testing
   * terminal/kitty: switch to new placement math
   * renderer/metal: address some todos
   * terminal/kitty: unit tests for unicode placements
   * terminal: hasText no longer special cases kitty placeholders
   * terminal/kitty: handle width-stretched
   * terminal/kitty: do not render blank virtual placement cells
   * terminal/kitty: adjust middle rows for image offsets
   * terminal/kitty: handle case where both offsets are in one grid cell
   * renderer/opengl: unicode placeholder support
   * terminal/kitty: delete all images ignores virtual placements
 .
   [ bri ]
   * its → it's
 .
   [ Mitchell Hashimoto ]
   * terminal: reflow tests for kitty virtual placeholder flag
   * terminal: more tests
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.5 to 1.1.6
   * update comments
   * config: introduce config-default-files to skip loading default files
   * core: avoid mouse report when mods change without mouse event
 .
   [ Jeffrey C. Ollie ]
   * gtk: allow running in the background
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: ignore mouse movement if no actual movement occurs
 .
   [ Jeffrey C. Ollie ]
   * make quit-after-last-window-closed-delay an optional
 .
   [ Mitchell Hashimoto ]
   * core: surface needs to free link regex on config reload
   * update libxev
   * nix: update hash
   * update libxev to fix mach port leakage
   * nix: update hash
 .
   [ Jeffrey C. Ollie ]
   * Improve quit timers.
 .
   [ Mitchell Hashimoto ]
   * reset only
   * macos: add "Reset Terminal" context menu option
 .
   [ Jeffrey C. Ollie ]
   * Add +list-actions CLI action to list keybind actions.
   * fix typo
 .
   [ Mitchell Hashimoto ]
   * comment
 .
   [ Jeffrey C. Ollie ]
   * re-use code to cancel old timer
   * make Duration units a struct field to reduce duplication and enable table-driven unit tests
   * fix off-by-one error
   * add a standard zig formatter to Duration and more testing
   * add a warning if quit delay too short
   * document behavior when no initial window is created and a quit delay is set
 .
   [ Mitchell Hashimoto ]
   * config: duration prevents overflow, added tests
   * config: clarify comment
   * apprt/gtk: use tagged union for quit timer
 .
   [ Jeffrey C. Ollie ]
   * Implement asymmetric window padding.
 .
   [ Mitchell Hashimoto ]
   * terminal: eraseDisplay should allow kitty erase through
   * renderer/metal: extend background color of grid border into padding
   * renderer/metal: handle top/left
   * config: add window-padding-color
   * renderer/opengl: support window-padding-color=extend
   * renderer/metal: font grid change should run all screen size logic
   * renderer/metal: can access grid metrics directly on font grid
   * Revert "renderer/metal: can access grid metrics directly on font grid"
   * renderer: disable window-padding-color=extend in certain scenarios
   * config: typo in window-padding-color docs
   * change window padding color to background by default
 .
   [ Jeffrey C. Ollie ]
   * Fix quit-after-last-window-closed=true, quit-after-last-window-closed-delay=null
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: can manually expire our quit timer instead of 0 second timer
 .
   [ Łukasz Niemier ]
   * chore: clean up typos
 .
   [ Nihaal Sangha ]
   * Use standard GitHub Actions committer info
   * Document not every font-family needs to be set
 .
   [ Mitchell Hashimoto ]
   * config: update docs
   * config: window-padding-x/y take two values for uneven padding
 .
   [ Eleanor Bartle ]
   * Remove Erroneous Config Note
 .
   [ Leah Amelia Chen ]
   * renderer: exempt Powerline cells from minimum contrast requirements
 .
   [ Paul ]
   * gtk: One's complement the opacity of overlay for unfocused splits
 .
   [ Mitchell Hashimoto ]
   * comment
   * renderer/opengl: comptime assertion to verify
 .
   [ Tim Culverhouse ]
   * cli/list-keybinds: add pretty printing
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: powerline enum value used wrong value
 .
   [ Tim Culverhouse ]
   * cli/list-keybinds: prevent ios, tvos, and watchos from pretty printing
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: fix warnings compiling metal shader
 .
   [ Tim Culverhouse ]
   * cli/list-keybinds: restore terminal after exit
   * cli/list-keybinds: set vaxis measurement state
   * cli/list-keybinds: set default winsize for windows
 .
   [ karei ]
   * cli/list-keybinds: align actions at the same column
 .
   [ Mitchell Hashimoto ]
   * cli: note --plain
   * nix: update hash
   * cli/list-keybinds: fix windows build
   * renderer/metal: load shaders from precompiled lib
   * build: build metal lib
   * build: build proper metallib for iOS builds
 .
   [ Jeffrey C. Ollie ]
   * Implement the XTWINOPS (CSI t) control sequences that "make sense".
   * fix url
 .
   [ x123 ]
   * fix: vaxis recursive deps issue
 .
   [ Qwerasd ]
   * renderer: metal shaders rework
   * fix tests
   * fix: use single triangle for metal post shader vertex
   * renderer/Metal: remove extraneous len arg from drawCellBgs
 .
   [ hanna ]
   * update iterm2-color-schemes to latest commit
   * update the zig cache hash for nix
 .
   [ Jeffrey C. Ollie ]
   * kitty graphics: add support for shared memory transfer medium
 .
   [ Mitchell Hashimoto ]
   * terminal/kitty: minor stylistic changes to shm
 .
   [ Qwerasd ]
   * renderer/metal: properly support padding color = background (not extend)
   * renderer/metal: use memset to clear bg cell rows
   * comment
   * remove superfluous slicing syntax
   * fix: promote dimensions to usize so cell_count doesn't overflow
   * fix: add `Contents.bgCell` to avoid accidentally indexing with undersized ints
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: reset screen uniforms on font change
   * metal: cell bg pipeline no longer has vertex data, needs no vertex desc
   * terminal/kitty: shared memory size may be larger than expected for pages
 .
   [ Jeffrey C. Ollie ]
   * gtk: add resize overlay
 .
   [ Mitchell Hashimoto ]
   * do not extend background for window-padding-color if powerline
   * config: clarify padding color default
   * config: add window-padding-color=extend-always to force always
   * renderer: remove alt-screen extend-always
   * config: make window-padding-color=extend default again
   * stylistic nitpicks
   * apprt/embedded: store title directly instead of get_title cb
 .
   [ Jeffrey C. Ollie ]
   * resize-overlay: change default and delay → duration
   * resize overlay: move all resize overlay code and data into a struct
   * move resize overlay code to a new file to keep the file size down
 .
   [ Mitchell Hashimoto ]
   * config: quit-after-last-window-closed should be true on Linux
 .
   [ cryptocode ]
   * Improve resize performance by switching to AutoArrayHashMapUnmanaged
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: small style tweaks for resize overlay
   * macos: implement resize overlay
   * macos: use dedicated overlay view for resize overlay
   * renderer: fix underflow possibility in padding calculation
   * macos: truncate tail of resize view
   * macos: add iOS field necessary
 .
   [ Jeffrey C. Ollie ]
   * gtk: resize overlay improvements
 .
   [ Mitchell Hashimoto ]
   * macos: pause resize overlay until 500ms passes
   * macos: avoid showing overlay if gained focus recently
   * ios: add focusInstant field to surface
 .
   [ Christian Kugler ]
   * Add Config Option to Limit Number of Processes
 .
   [ Mitchell Hashimoto ]
   * font: add test for fl lig
   * font/shaper: split text runs on common bad ligature pairs
 .
   [ Qwerasd ]
   * spelling: normalize grey -> gray
 .
   [ Mitchell Hashimoto ]
   * os: unify memory/processes cgroup limiting func
   * font: remove broken test (on purpose) due to improvements in shaping
 .
   [ Tim Culverhouse ]
   * fix(surface): account for padding in mouse pixel reports
 .
   [ Gregory Anders ]
   * config: fix typo
 .
   [ Jeffrey C. Ollie ]
   * gtk: prettify the url overlays
 .
   [ Qwerasd ]
   * fix: prevent flicker while shrinking screen by eliminating thread race
   * renderer: don't update frame if renderer grid size != terminal size
   * termio: wake renderer outside of critical area in resize
   * macos/opengl: lock context while rendering to stop resize crashes
 .
   [ Łukasz Niemier ]
   * chore: add mailmap to unify duplicated authors
 .
   [ Qwerasd ]
   * fix(renderer/Metal): bail out of drawFrame if we haven't sized screen yet
   * RefCountedSet: use usize for living count to avoid overflow
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: add comment explaning ogl lock on darwin
 .
   [ Qwerasd ]
   * test(terminal/Screen): add failing unit test for cursorCopy
   * fix(terminal): proper style cleanup in `cursorCopy`
   * kitty graphics: support loading 1 channel grayscale images
 .
   [ Uzair Aftab ]
   * docs: Update how to vouch for friends in README_TESTERS.md
 .
   [ Mitchell Hashimoto ]
   * input: yeet usingnamespace
   * apprt: yeet usingnamespace
   * terminal: yeet usingnamespace
   * termio: yeet usingns
   * pty: remove usingns
   * renderer: yeet usingns
   * font: yeet usingns
   * config: yeet usingns
   * os: start yeeting
 .
   [ Eduardo Dominguez ]
   * Config: cursor-style can bet set to block_hollow
 .
   [ Mitchell Hashimoto ]
   * os: yeet usingns
   * lots more yeeting
   * almost yeeted it all!
   * move global state to dedicated file
   * apprt/gtk: remove usingnamespace
   * apprt/embedded: fix usingnamespace usage
   * pkg/opengl: yeet usingns
   * pkg/oni: yeet usingnamespace
   * pkg/freetype: remove usingns
   * pkg/glslang: yeet usingns
   * pkg/harfbuzz: fix c.zig
   * pkg/pixman: remove usingns
   * pkg/utf8proc: yeet usingns
   * pkg/macos: foundation yeet usingns
   * pkg/macos: animation yeet usingns
   * pkg/macos: graphics usingns yeet
   * pkg/macos: more
   * pkg/macos: yeet more usingns
   * pkg: yeet more usingns
   * apprt/gtk: fix imgui calls
   * pkg/fontconfig: yeet usingns
   * pkg/harfbuzz: yeet usingns
 .
   [ Jeffrey C. Ollie ]
   * Implement Kitty Color Protocol (OSC 21)
 .
   [ Mitchell Hashimoto ]
   * terminal: index from bottom row of scroll region always makes scrollback
 .
   [ Jeffrey C. Ollie ]
   * fix test error and improve error logging
 .
   [ Mitchell Hashimoto ]
   * terminal: add more tests for index, verified that l/r margin handling is good
   * terminal: add Screen.cursorScrollAbove and tests
   * terminal: call new method for scroll operation
   * terminal: only call new method
   * terminal: cursorScrollAbove handles case of no new page, prev page
   * terminal: handle case grow allocates but cursor is multiple pages back
   * renderer: use fg as extension color for covering glyphs (U+2588)
   * Minor changes, mainly commenting to clarify some behaviors
   * readme: clarify that comments are only allowed on a dedicated line
 .
   [ Jeffrey C. Ollie ]
   * themes: allow loading from absolute paths and from user config dir
   * themes: add a switch that shows a small preview of each theme
 .
   [ Mitchell Hashimoto ]
   * config: move theme loading to dedicated file
   * config: use else to catch all errors since there are many
 .
   [ Jeffrey C. Ollie ]
   * themes: finish refactor
   * themes: fix comment
   * themes: don't use arena directly and cleanup debug code
 .
   [ Mitchell Hashimoto ]
   * config: remove unused types and function
   * Fix broken import from rebase
   * config: fix build on iOS for error set
   * typos
   * input: Trigger.parse
   * input: SequenceIterator to parse sequences of triggers
   * input: binding parser of sequences
   * input: add Set.parseAndPut
   * input: converting set entries to Entry from Action
   * input: binding.set can parse sequences... lots TODO
   * input: more parseAndPut tests
   * input: unwind properly on unbind
   * input: remove todo
   * fix compilation but logic broken
   * input: binding set needs to clean up leader memory on manual put
   * input: Binding.Set.clone handles leaders
   * config: support equality checking keybinds with sequences
   * core: log when we see a leader
   * config: write the docs now for sequences
   * input: remove the old parse method for bindings
   * input: remove unused struct
 .
   [ Jeffrey C. Ollie ]
   * Address review comments.
 .
   [ Bruno Schaatsbergen ]
   * docs: add deps install
   * chore: rm `run`
 .
   [ Mitchell Hashimoto ]
   * core: rework binding handling to prepare for nested binding sets
   * core: move key handling (w/o bindings) out to a separate func
 .
   [ Eduardo Dominguez ]
   * macos: jump to last_tab
 .
   [ Mitchell Hashimoto ]
   * core: release events should never trigger bindings
   * core: encodeKey should return a write request
   * core: enable key sequence handling, including dumping invalid
   * core: handle unconsumed key sequences
   * core: clear pending keyboard sequence when config reloads
   * core: centralize key sequence ending in one function
   * config: warn the hazards of '>' for sequences
   * font/coretext: font-thicken renders with additional padding on context
 .
   [ Tim Culverhouse ]
   * cli(list-keybinds): format key sequences
 .
   [ Mitchell Hashimoto ]
   * terminal: make kitty color tests a bit more readable
   * terminal: stylistic tweaks to kitty color protocol parsing
   * terminal: formatter for kitty color protocol kinds
   * termio: use new formatter, palette helper for kitty color protocol
   * termio: move renderer message sending out to separate func
   * terminal: move kitty color structs out to kitty package
   * typos
 .
   [ Jeffrey C. Ollie ]
   * Clean up Kitty color protocol by using a union
   * Use `switch` and not `if` to format Kind
 .
   [ pnodet ]
   * style(macos): cleanup trailing spaces
 .
   [ Jeffrey C. Ollie ]
   * Make the `Kind` parsing simpler
 .
   [ Mitchell Hashimoto ]
   * terminal: hyperlink state for cursor needs to be preserved on resize
   * renderer: do not extend padding color if any cell has default bg color
   * macos: do not open a window on reopen if terminal manager has any
   * config: note that styles that aren't found will use regular
 .
   [ Jon Parise ]
   * editorconfig: add swift style
 .
   [ Mitchell Hashimoto ]
   * font: support aliased entries in the font collection style table
   * font: Collection uses SegmentedList for styles for pointer stability
   * font: completeStyles
   * font/harfbuzz: work with new collection API
   * font: Collection can't use segmentedlist prealloc
   * font: use proper variation axes for non-default
   * font: if variation is set for a style and style isn't found, retry reg
   * typos
   * font: bold italic fallback has to avoid nested alias entry
   * font: rename auto-italicize to synthetic italic
   * font/coretext: support synthetic bold
   * font: synthesize bold italic
   * typos
   * small stylistic changes
   * pkg/macos: copyAttribute should return optional
   * font: support variations for coretext_freetype backend
   * apprt/embedded: use new copyAttribute API for CoreText
   * font/freetype: synthetic italic
   * font/freetype: synthetic bold
   * font/coretext: tweak synthetic bold amount to be slightly lighter
   * Clamp initial window size configurations to screen size
   * config: clarify window-width/height behavior
 .
   [ Nihaal Sangha ]
   * Add space to `commentstring` in Vim plugin
 .
   [ Mitchell Hashimoto ]
   * renderer/metal: cursor should be drawn on top of fg cells
   * config: remove the super+0 binding for last_tab
   * apprt: make gotoTab handle all tab movements
   * apprt/gtk: support last_tab
   * apprt/gtk: fix int cast
   * macos: remove unused gotolasttab
   * config: font-synthetic-style to enable/disable synthetic styles
 .
   [ Qwerasd ]
   * terminal: move refcount responsibility out of setHyperlink
   * fix(terminal): don't MOVE hyperlinks in clonePartialRowFrom
   * fix(terminal): avoid trying to clone bad managed memory in reflow
   * test(Screen): add failing tests for `cursorCopy` hyperlink handling
   * Screen: update `cursorCopy` to handle hyperlink state
   * Terminal: release hyperlink before copying cursor when switching screen
   * PageList: refactor `clone` to avoid excess work
   * renderer: add `updateFrame` critical region timings for dev benchmark
   * this should be a doc comment
 .
   [ Mitchell Hashimoto ]
   * Revert "Merge pull request #2153 from ghostty-org/metal-cursor"
 .
   [ Justin Su ]
   * config: document left/right values for `macos-option-as-alt`
 .
   [ cryptocode ]
   * Inspector: change color picker to use hex values
 .
   [ Mitchell Hashimoto ]
   * terminal: cursorCopy has option to not copy hyperlink
   * terminal: tests for same page clone with hyperlinks
 .
   [ Erlend Lind Madsen ]
   * avoid escape characters by using a multiline string
 .
   [ Mitchell Hashimoto ]
   * macOS: save dSYM files
   * pkg/sentry: initial builds
   * pkg/sentry: add more Zig APIs
   * pkg/sentry: custom transports
   * initialize sentry on startup
   * pkg/sentry: fix Linux builds
   * build: always compile sentry
   * os: add xdg cache dir function
   * sentry init uses proper cache dir, sets tags
   * implement sentry transport to write crash reports to XDG_STATE_HOME
   * pkg/sentry: fix darwin lib builds
   * update nix hash
   * don't send empty envelopes
   * build: don't include sentry on windows
   * sentry: set tags after init
   * pkg/sentry: build in unwinder
   * add pkg/breakpad, configure sentry to use breakpad
   * nix: update cache
   * pkg/breakpad: add linux_syscall_support.h to the vendored files
   * build: include breakpad in static lib bundle for lib
   * macos: get updated surface size metrics immediately on resize
   * timers for start times for later
   * crash: sentry envelope parsing
 .
   [ Qwerasd ]
   * RefCountedSet: make `lookup` public
   * terminal/page: discriminate cloneFrom errors
   * terminal: handle clonePartialRowFrom errors in insert/deleteLines
 .
   [ Mitchell Hashimoto ]
   * build: build without Git, tag version as dev with 0 SHA
   * terminal: make error sets more explicit, capture explicit errors
   * cli/version: don't parse any args
   * move crash init to crash package
   * crash: discard envelopes that do not contain a crash
   * pkg/sentry: uuid string is null-terminated
   * crash: initialize sentry off-thread
   * pty: reset all signals after fork
 .
   [ Jeffrey C. Ollie ]
   * Conditional compilation against different GTK versions
   * rename gtkVersionMinimum->gtkVersionAtLeast for consistency
 .
   [ Mitchell Hashimoto ]
   * input: add crash binding action, remove key input crash
   * terminal: disable slow safety tests in releasesafe
   * ci: build releasesafe builds for macOS
   * ci: release-pr only on dispatch
   * macos: show debug build warning even with releasesafe for now
   * apprt/gtk: show debug warning whenever runtime safety is on
 .
   [ Qwerasd ]
   * fix(terminal/PageList): update self.cols at start of resizeCols
 .
   [ Mitchell Hashimoto ]
   * crash: add build mode to sentry tags
   * crash: try to attach dimensions to the crash report
   * renderer/termio attach thread local state for crash capture
   * terminal: do not run page integrity checks unless slow runtime safety
 .
   [ Jeffrey C. Ollie ]
   * kitty graphics: fix usage of "m" key for local-only transmission mediums
 .
   [ Justin Su ]
   * Don't run GitHub workflows on forks
 .
   [ Mitchell Hashimoto ]
   * input: crash binding can configure which thread to crash
   * crash: beforeSend needs to add contexts to the event directly
   * crash: tag the thread type
   * update README about crashes
   * core: set crash state in surface in various places
 .
   [ xdBronch ]
   * make +version hyperlink to the github commit
 .
   [ Jeffrey C. Ollie ]
   * kitty graphics: performance enhancements
   * fix typos
 .
   [ Mitchell Hashimoto ]
   * update zig cache hash
 .
   [ Jeffrey C. Ollie ]
   * kitty graphics: address review comments
   * remove unnecessary @constCast
 .
   [ Mitchell Hashimoto ]
   * pkg/wuffs: define build defines separately, not in defs.zig
   * some tweaks for wuffs
   * renderer/metal: use wuffs for format conversion
   * pkg/wuffs: fix builds for 32-bit systems
   * pkg/wuffs: use proper apple include paths on darwin targets
   * update README to warn about crash report env vars
   * update README again
   * kitty: ENOENT when image ID not found for placement
   * kitty: respond OK with metadata on display transmissions
   * kitty kbd: progressive enhancement `=` mode off by one
   * termio: set crash threadlocal data for exec reader thread
   * nix: remove ZLS
   * config: note that emoji font requires explicit override
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.6 to 1.1.7
   * kitty gfx: handle `q` with chunked transmissions properly
   * apprt/gtk: do not remove unfocused widget from overlay
 .
   [ Jeffrey C. Ollie ]
   * wuffs: fix blend mode
 .
   [ Gregory Anders ]
   * termio: send initial focus reports
 .
   [ Mitchell Hashimoto ]
   * Revert "Merge pull request #2060 from jcollie/gtk-compatibility"
   * terminal: add integrity check for unmarked grapheme cell
   * terminal: DECALN must use clearRows to clear protected memory
   * terminal: can't assert page integrity on screen
   * readme: update vouch help
   * update vouch instructions
   * terminal: do not reset OSC parser if its already empty
 .
   [ Tristan Partin ]
   * gtk: silence bad accelerator warnings
 .
   [ Mitchell Hashimoto ]
   * font/sprite: avoid invalid glyph if unsupported codepoint is attempted
   * crash: envelope encoder
   * crash: data model for encoded vs decoded items
   * crash: parse attachments from sentry envelope
   * typos
 .
   [ Qwerasd ]
   * test(Terminal): test DCH wide char boundary conditions
   * test(Terminal): test ECH wide char boundary conditions
   * Terminal: fix ECH & DCH wide char boundary cond. behavior
 .
   [ Mitchell Hashimoto ]
   * crash: envelope parsing handles multiple payloads with length properly
 .
   [ Qwerasd ]
   * perf(terminal): specialize `splitCellBoundary` to cursor row
 .
   [ Mitchell Hashimoto ]
   * terminal: fix uninitialized memory access when kitty color protocol
   * terminal: add test for wide character on right margin boundary
 .
   [ Qwerasd ]
   * terminal: cursorResetWrap should not reset wrap_continuation
   * comment
 .
   [ Mohammad H. AlShami ]
   * Add package names for Fedora variants
   * Fix copied mistake
 .
   [ Mitchell Hashimoto ]
   * update README
 .
   [ Leah Amelia Chen ]
   * README: document common issues on NixOS
 .
   [ Tim Culverhouse ]
   * graphics: set default transmission format as .rgba
 .
   [ Mitchell Hashimoto ]
   * prettier
 .
   [ Jeffrey C. Ollie ]
   * fix: Surface.selectionString should return sentinel slice
   * feat: basic +crash-report cli action
   * remove unnecessary imports
   * update README
 .
   [ Mitchell Hashimoto ]
   * crash: add directory listing, allocation free
   * cli/crash-report: make it simpler (uglier, honestly)
 .
   [ hanna ]
   * refactor: attempted autoupdate configuration
 .
   [ Mitchell Hashimoto ]
   * macos: start Sparkle after loading config
   * macos: update comment on why we don't start updater
 .
   [ Paul ]
   * gtk: use adwaita tab view when possible
   * adw: move notebook to its own file
 .
   [ Paul Berg ]
   * adw: respect gtk-wide-tabs
   * adw: implement next/previous
   * gtk: respect wide-tabs option
   * gtk: add devel class to window in debug builds
   * adw: update window title on selected page change
 .
   [ Paul ]
   * gtk: adw toolbar view
 .
   [ Paul Berg ]
   * gtk: add adwaita banner
   * adw: add support for gtk-tabs-location = bottom
 .
   [ Jeffrey C. Ollie ]
   * delete unused vendor/fontconfig-2.14.0 directory
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: move adw enabling and version checks into shared file
   * apprt/gtk: use adwaita helpers, move out some complicated logic
   * apprt/gtk: the comptimeEnabled check is redundant
   * apprt/gtk: scope comptime to only one
   * apprt/gtk: log the libadwaita version at startup if we use it
   * apprt/gtk: cleaup final notebook page on libadw 1.3.x
   * ci: test can be workflow dispatched
   * flake: update to Nixpkgs 24.05
   * prettier
   * flake: remove unnecessary unstable lib
 .
   [ Paul ]
   * adw: add option to choose toolbar style
   * adw: show performance warning banner
 .
   [ Mitchell Hashimoto ]
   * config: update docs, caps
 .
   [ Max Guppy ]
   * Reapply "Merge pull request #1690 from TheOnlyMrCat/gtk_opacity"
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: hide header bar when window decorations are disabled
   * apprt/gtk: inline adwaita checks so comptime disables conditional paths
   * build: support building without .git directory
 .
   [ Tristan Partin ]
   * apprt/gtk: use AdwHeaderBar if available
   * apprt/gtk: use AdwAboutDialog if available
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: use GtkWidget so there is a common ancestor
 .
   [ Tristan Partin ]
   * apprt/gtk: use AdwTabOverview
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: some tweaks, avoid uninitialized memory access, use optionals
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from V27 to 28
 .
   [ Jeffrey C. Ollie ]
   * adw: allow creating new tabs in a tab overview with no open tabs
 .
   [ Paul ]
   * apprt/gtk: add theme variant in window-theme
 .
   [ Paul Berg ]
   * apprt/gtk: respect window-new-tab-position again
   * config: remove note that window-new-tab-position is gtk only
   * apprt/gtk: remove adw_tab_page from tab
 .
   [ Jeffrey C. Ollie ]
   * gtk: prevent split separator from becoming transparent
 .
   [ Paul Berg ]
   * apprt/gtk: make Notebook.create not depend on parent box
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: style tweaks
   * config: copy
 .
   [ Jeffrey C. Ollie ]
   * GTK: Fix clicking on desktop notifications
 .
   [ Mitchell Hashimoto ]
   * pkg: add README and license
   * apprt/gtk: small comments
   * apprt/gtk: rename the other underscore actions to match naming rules
   * config: make window-padding-color default to "background"
   * config: "-e" implies quit after last window closed
 .
   [ Gregory Anders ]
   * config: interpret leading ? in config-file as an optional file
 .
   [ Paul Berg ]
   * gtk: prevent invalid call to adw_tab_view_get_page_position
 .
   [ Tristan Partin ]
   * apprt/gtk: use toast UX from Adwaita if available
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: tweaks
   * apprt/gtk: only setup the toast overlay if we have it enabled
 .
   [ Tristan Partin ]
   * apprt/gtk: add notebook widget to the main box
   * apprt/gtk: use adwaita toasts regardless of gtk-titlebar
   * apprt/gtk: remove redundant adwaita check
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: fix non-libadw builds
   * cli: config structure supports tagged unions
 .
   [ Qwerasd ]
   * macos: fix various titlebar tabs problems in macOS 15.0
 .
   [ Mitchell Hashimoto ]
   * terminal: avoid double free by resetting command to non-managed
   * README: note how to send crash reports to the project
   * config: fix regression for recursive config-files from 5ff0841ee65
 .
   [ Gregory Anders ]
   * config: move optional path parsing into RepeatablePath
 .
   [ Paul Berg ]
   * gtk: respect window-theme=ghostty when gtk-titlebar=false
 .
   [ Mitchell Hashimoto ]
   * config: return OOM instead of NoSpaceLeft for Linux fmt
   * apprt/gtk: make focusCurrentTab safe to call at any time
   * apprt/gtk: refocus the current tab after adw tab overview closes
   * renderer/metal: fix compilation issues
 .
   [ Paul Berg ]
   * adw: clear stored tab overview timer
 .
   [ Mitchell Hashimoto ]
   * termio: poll termios for changes
   * termio: set pw input state on terminal and wake up renderer
   * renderer: render lock for password input
   * termio: stop the termios poller when not focused
   * termio: increase termios poller to 200ms
   * macos: right-click actions on surface should target surface under click
   * termio: always set termios timer running bool to true on focus
   * termio: typos
   * termio: use surface messages to trigger password input state
 .
   [ Yi Ming ]
   * adw: disable all of the default shortcuts
   * refactor: remove the unnecessary `./` in imports
 .
   [ Mitchell Hashimoto ]
   * pkg/macos: expose carbon API
   * macos: secure input manager, global option in app
   * core: add toggle_secure_input keybinding
   * macos: show secure input overlay when it is enabled
   * macos: enable secure input on password input
   * macos: fix deployment target back to 12.0
   * ios: disable secure input
   * macos: copy changes
   * config: config to disable auto secure input and secure input overlay
 .
   [ Severus ]
   * Fix 2271 issue
 .
   [ Mitchell Hashimoto ]
   * macos: persist secure input state across restarts
   * macos: copy
   * macos: rename overlay config to indication
 .
   [ Severus ]
   * Fix typo
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: add version helpers
 .
   [ FineFindus ]
   * termio: correct comment about windows support
 .
   [ Mitchell Hashimoto ]
   * macos: show clickable mouse pointer when hovering over secure input
   * ci: use xcode 16
 .
   [ Qwerasd ]
   * macOS: add `macos-titlebar-style = hidden`
   * mention `macos-titlebar-style = hidden` in `window-decoration` docs
 .
   [ Mitchell Hashimoto ]
   * termio: killpg expected to fail on darwin, still go into waitpid loop
   * macos: remove nstitlecontainerview hidden
   * macos: DraggableWindowView helper (unused currently)
   * macos: EventSinkHostingView must not override mouse events
   * macos: remove EventSinkHostingView
   * macos: use macOS 15 pointerVisibility to show/hide cursor
   * macos: pointer style uses macOS 15 helpers
   * macos: use pointerStyle for SplitView Divider
 .
   [ Khang Nguyen Duy ]
   * fix(terminal/PageList): ensure enough pages before first page reuse
 .
   [ Mitchell Hashimoto ]
   * macos: unhide cursor on clipboard confirmation
   * typos
   * config: note that mouse hide while typing on macos requires 15+
   * macos: fix non-AppKit builds
   * apprt/macos,gtk: unfocused splits now highlight hovered links
   * terminal: test for scenario where grow() has to prune with a single page
   * terminal: clarify comment
   * macos: cannot call mouseEntered/Exited with blank NSEvent
   * macos: enable dead code stripping
   * crash/minidump: header parsing
   * crash/minidump: read the streams from the minidump file
   * crash/minidump: split out into multiple files
   * crash/minidump: reader that streams data from a source
   * crash/minidump: StreamReader
   * crash/minidump: streamIterator
   * crash/minidump: typos
   * crash/minidump: working on rich stream type decoding, ThreadList
   * crash/minidump: handle padding in the ThreadList stream
   * crash/minidump: locationReader to read locations in a minidump
 .
   [ Paul Berg ]
   * apprt/gtk: set tabs reorderable/detachable on GtkNotebook
 .
   [ Jeffrey C. Ollie ]
   * gtk/adw: conditional tab keybindings
 .
   [ Mitchell Hashimoto ]
   * update libxev
 .
   [ Jeffrey C. Ollie ]
   * gtk/adw: perform version check at both comptime and runtime
 .
   [ Mitchell Hashimoto ]
   * input: parse global keys, document them
   * input: move flags to a packed struct
   * input: global/all bindings can't be sequenced
 .
   [ Tristan Partin ]
   * apprt/gtk: override the top bar colors in libadwaita correctly
 .
   [ Qwerasd ]
   * macOS: prevent ctrl-return key equivalent
   * font/sprite: fix 1px gap at right edge of dotted and dashed underlines
   * font/sprite: rework underline rendering, adjust positioning
   * renderer: draw underlines below text to improve legibility
   * renderer/OpenGL: use better logic for whether to render glyph
   * coretext: improve strikethrough position calculation
   * freetype: improve strikethrough position guess by using ex height
 .
   [ Mitchell Hashimoto ]
   * core: handle app bindings in the App struct
 .
   [ Qwerasd ]
   * font/sprite: reduce uneven gaps in dotted underline
 .
   [ Mitchell Hashimoto ]
   * core: "all" bindings work
   * input: fix tests
   * apprt/embedded: API for checking if there are global keybinds
 .
   [ Qwerasd ]
   * font: further improve ul/st position calculations
   * freetype: fix underline position calculation
 .
   [ Paul ]
   * apprt/gtk: support window-theme != ghostty
 .
   [ Mitchell Hashimoto ]
   * Tap events, core API to handle global keybinds
   * macos: better enable timing depending on process launch time
   * typos
   * config: clarify docs
   * apprt/embedded: new_window can be called without a parent
   * small comment changes
 .
   [ Chris Marchesi ]
   * terminal/kitty: increase value buffer, make 'H' and 'V' i32
 .
   [ Qwerasd ]
   * correct diagram/description (+Y is down not up)
   * font/sprite: correct underline placement calculation
   * font: remove fudge factors in ul and st position calculations
 .
   [ Mitchell Hashimoto ]
   * apprt: begin transition to making actions an enum and not use hasDecl
 .
   [ Qwerasd ]
   * freetype: update expected ul pos in tests to account for removed fudge factor
 .
   [ Mitchell Hashimoto ]
   * apprt: transition all hasDecls in App.zig to use the new action dispatch
   * apprt/embedded: support new performAction API
   * core: move password input into action enum
   * core: no need for hasTabs apprt function
   * core: more actions
   * core: many more actions
   * core: more actions
   * apprt/gtk
   * core: remove more hasdecls
   * apprt/gtk: handle zero value notification pointers
 .
   [ Jeffrey C. Ollie ]
   * nix: fix up zig hook in package.nix
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.7 to 1.1.8
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from V28 to 29
 .
   [ Mitchell Hashimoto ]
   * libghostty: unified action dispatch
 .
   [ Paul Berg ]
   * apprt/gtk: fix build with -Dgtk-libadwaita=false
   * apprt/gtk: remove Window.hasAdwToolbar
   * apprt/gtk: store tab_overview in Window struct
   * bind: add toggle_tab_overview binding
 .
   [ Mitchell Hashimoto ]
   * apprt/embedded: add the tab overview to the enum
   * macos: add unhandled action
   * Forward std_options from entrypoint in main.zig
 .
   [ Jeffrey C. Ollie ]
   * cli: "fancy" theme preview
   * cli: list-themes should list symlinks
   * cli: update +list-themes --help text
   * cli/list-themes: add ability to search theme names
 .
   [ Mitchell Hashimoto ]
   * typos: ignore lorem
   * macos: fix previous/next tab bindings, improve action logging
   * core: fix invalid action call that wasn't setting our metrics properly
 .
   [ Jeffrey C. Ollie ]
   * nix: work around ziglang/zig#20976 and fix nix package builds
 .
   [ Mitchell Hashimoto ]
   * core: only extend selection on mouse if click interval is exceeded
 .
   [ Jeffrey C. Ollie ]
   * nix: don't require the ZIG_LOCAL_CACHE_DIR to be set
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: set null url if url is empty
   * macos: start work on SlideTerminal, slides in window from top
   * macos: render a terminal in the slide window
   * macos: make sliding logic a bit more extensible
   * macos: restrict resizing based on sliding terminal position
   * core: slide terminal keybinding action
   * macos: when sliding out the terminal, cycle focus
   * core: fix up toggle_slide_terminal action for rebase
   * macos: hook up the action for the slide terminal
 .
   [ Jeffrey C. Ollie ]
   * nix: move fetch-zig-cache script into nix/build-support
 .
   [ Tim Culverhouse ]
   * sgr: add support for legacy double underline
 .
   [ Jeffrey C. Ollie ]
   * nix: remove tracy from the devshell
   * cli: fix integer overflow in `+list-themes` if window is too narrow
 .
   [ Mitchell Hashimoto ]
   * macos: base class for terminal controller
   * macos: slide terminal exit and close window don't kill the window
 .
   [ Jeffrey C. Ollie ]
   * nix: remove tracy from flake.nix
 .
   [ Mitchell Hashimoto ]
   * macos: set initial terminal dimensions
   * rename slide to quick terminal
   * macos: ability to interrupt animation, track it in menu
 .
   [ Jeffrey C. Ollie ]
   * nix: use stdenv from unstable to build the package
 .
   [ Mitchell Hashimoto ]
   * config: support quick terminal position
   * macos: show alert if new tab is attempted from quick term
   * input: note fullscreen isn't supported by quick terminal
   * macos: if initializing new surface tree, move focus to it
   * macos: make quick terminal animation 0.2 instead of 0.3
   * macos: only define quick terminal configs for AppKit
   * macos: handle multiple monitors properly
 .
   [ Christian Kugler ]
   * Use helper function to set correct env variables
 .
   [ Mitchell Hashimoto ]
   * macos: quick terminal always brings Ghostty to the front
   * font/sprite: bounds checking for pixel writes on Pixman
   * font/sprite: fix out of bounds right on curly underline
   * macos: ensure quick terminal becomes key and focused after animation in
   * macos: quick terminal close focuses next window on same screen/space
   * macos: use orderOut which handles all of our focus logic for us
   * macos: quick terminal restores focus to previous application
   * macos: use a different bundle identifier for debug builds
   * macos: new FullscreenMode/Style architecture for fullscreen impls
 .
   [ Paul Berg ]
   * cli: handle mouse scroll before setting window
 .
   [ Mitchell Hashimoto ]
   * macos: new fullscreen implementation
   * macos: fullscreen=true with non-native fullscreen works
   * macos: fullscreen mode can be changed at runtime
   * macos: only get fullscreen mode on AppKit
   * macos: non-native fs sets frame async to account for style changes
   * macos: handle non-native fullscreen changing screens
   * macos: only hide dock on the screen with the dock
   * macos: only exit on screen change if the screen really changed
   * macos: exit native fullscreen if we try to enter non-native
   * macos: clarify comments, clean up notifications for fullscreen
 .
   [ Tim Culverhouse ]
   * fix(list-keybinds): reset SGR after pretty printing
 .
   [ Mitchell Hashimoto ]
   * ci: only run macos build matrix on main or demand
   * ci: fix invalid dependency on test
   * macos: quick terminal app activation tweaks to avoid bringing up other windows
   * ci: re-enable the build matrix, not happy with this yet
   * macos: quick terminal supports fullscreen
   * macos: apply background opacity to quick terminal
   * Change copy-on-select behavior to be more idiomatic for Linux
 .
   [ Roland Peelen ]
   * Add action on Zig side
   * Add hiding toggle, hook up to menu / shortcut
   * Fix typo
   * Refactor to hide only BaseTerminalController windows
   * Review Feedback - formatting / docs
 .
   [ Mitchell Hashimoto ]
   * docs updates
 .
   [ Qwerasd ]
   * fix(renderer): use 1-wide ul/st chars, ignore null shaper cells
   * fix(renderer): make all decorations and combining marks visible under cursor
 .
   [ Mitchell Hashimoto ]
   * font: add stylistic variants for built-in font, fix naming convention
   * renderer: some tweaks
   * Mouse movement events are sent with shift until a button is pressed
 .
   [ dependabot[bot] ]
   * build(deps): bump namespacelabs/nscloud-cache-action from 1.1.8 to 1.2.0
   * fix xtshiftescape docs
 .
   [ Jon Parise ]
   * config: update project URL
 .
   [ theprimeagen ]
   * fix: scrolling with fraction produces different lines count due to @floor vs @trunc (-1 vs 1)
 .
   [ Lucy Davinhart ]
   * Implements initial-window=false for macOS
 .
   [ dependabot[bot] ]
   * build(deps): bump cachix/install-nix-action from 29 to 30
 .
   [ Mitchell Hashimoto ]
   * macos: move show/hide all terminal windows
   * renderer: fg/bg/cursor change must mark the screen as dirty
   * macos: toggle_visibility needs to sync to the correct menu item
   * macos: non-native fs keeps track of screen number for change screen comp
   * Bind ctrl+tab and ctrl+shift+tab by default
   * Make the function/globe key available as a modifier on macOS
   * macos: forward key events to the app when no windows exist
   * config: more caveats for fn
   * cli/list-keybinds: output function modifier
   * macos: use local event listener to propagate modifier changes to all
   * core: refresh hyperlink state without hacky cursorPosCallback
 .
   [ Qwerasd ]
   * font/sprite: fix undercurl rendering
   * font/sprite: improve double underline legibility with min 2px gap
   * fix(font/sprite): avoid underflow
   * font/sprite: use offset curve approximation for undercurl
 .
   [ Mitchell Hashimoto ]
   * core: ghostty_app_key only handles global keybinds for now
   * core: add app focused state, make App.keyEvent focus aware
   * apprt/embedded: add ghostty_app_set_focus
   * macos: set the proper app focus state
   * apprt/gtk: report proper app focus state
   * core: negative x/y for cursor position indicates mouse exited viewport
   * macos: notify core of mouse exit
   * gtk: notify core of cursor leave
   * macos: global keybind event tap only handles events when app is inactive
   * input: function is part of the binding mods
   * gtk: only set initial window size if its the first terminal in a window
   * apprt/gtk: setup window key event infrastructure
   * apprt/gtk: forward window key events to the focused surface
   * apprt/gtk: only run window key events with tab overview shown
   * macos: send mouse cursor position events for right mouse dragged
   * macos: remove the ability to bind fn/globe
   * macos: quick terminal window blur settings take effect properly
 .
   [ Leah Amelia Chen ]
   * gtk: implement splitting leftwards and upwards
 .
   [ Mitchell Hashimoto ]
   * macos: become aware of new split directions left and up
 .
   [ Jeffrey C. Ollie ]
   * gtk: load css when libadwaita is not being used
   * gtk: fix window-theme=ghostty
   * gtk: add `adw` or `gtk` class to top level windows
 .
   [ Mitchell Hashimoto ]
   * input: return a K/V entry for the binding set `get`
 .
   [ Qwerasd ]
   * renderer, shaper: don't use null cells, handle bg and decorations separately
   * coretext: don't emit 0 codepoints for special fonts
 .
   [ Mitchell Hashimoto ]
   * apprt: implement key_sequence action
   * macos: implement key sequence UI
   * core: modifier-only keys do not reset pending key sequences
   * macos: don't swallow flagsChanged events, breaks system bindings
   * core: support mouse button 6/7 for mouse reports
 .
   [ Qwerasd ]
   * test(coretext): add test for high plane padding sprite font behavior
   * renderer: cleanup, reduce nesting, more comments
   * coretext: fix tests to account for removal of null cells
   * harfbuzz: fix tests to account for removal of null cells
 .
   [ Lucy Davinhart || Strawb System ]
   * Include command to run a subset of tests in README
 .
   [ Mitchell Hashimoto ]
   * build: use the native target for generic macos target by default
   * macos: change our minimum version to macOS 13
   * macos: retry focusing the quick terminal to handle focus on other screen
   * core: simplify scroll math, fix horizontal scroll direction on macOS
   * config: add accidentally removed keybinding
   * font/noop: conform to new run struct type
 .
   [ Qwerasd ]
   * font/shaper: explicitly skip invisible cells while shaping
 .
   [ Yi Ming ]
   * renderer: generalize the definition of "space"
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: adw about dialog introduces in libadw 1.5.0
 .
   [ isabel ]
   * refactor(nix): stdenv.isX -> stdenv.hostPlatform.isX
 .
   [ Mitchell Hashimoto ]
   * input: make clear the open keybinding uses xdg-open
 .
   [ Qwerasd ]
   * font/sprite(underline): add thickness correction to undercurl
   * font/sprite(underline): make undercurl segment symmetrical
   * font/Atlas: add dump method to dump to ppm
   * test(font/sprite): add regression test for box drawing sprites
   * font/sprite: refactor lines and fractional blocks, add ground truth for regression test
   * test(font/sprite): generate diff image on failed regression check
   * font/sprite: refactor box drawing quads/sextants
   * font/sprite: replace pixman with z2d, extend Box coverage
   * font/sprite(Box): refactor smooth mosaic rendering
 .
   [ Jeffrey C. Ollie ]
   * gtk: use CSS variables and color calcs introduced in 4.16
 .
   [ Mitchell Hashimoto ]
   * macos: NSProcessInfo-based arg iterator
 .
   [ Qwerasd ]
   * test(font/sprite): add second size to box regression test
   * font/sprite: fix light arc character for odd thicknesses
   * font/sprite: fix weird code
   * font/sprite: address PR review feedback
 .
   [ Mitchell Hashimoto ]
   * nix hash
   * font/sprite: clarify log
   * font: use explicit error sets where we can
   * build: strip symbols from release builds
   * update file sizes in README.md
 .
   [ Qwerasd ]
   * macOS: fix quicklook position
 .
   [ Jeffrey C. Ollie ]
   * cli: add GTK & libadwaita version info
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: use stackfallback for runtime CSS, explicit errors
 .
   [ Rick Calixte ]
   * list_fonts and list_keybinds: Fix typos in documentation
 .
   [ Justin Su ]
   * Fix "external affects" typo in documentation
 .
   [ Qwerasd ]
   * font/sprite: undercurl minimum thickness improvement
 .
   [ Mitchell Hashimoto ]
   * expand explicit error set usage
   * config: richer diagnostics for errors
   * config: show filepath and line numbers for config errors
   * config: track the location of CLI argument errors
   * c: remove the config load string API
   * apprt/gtk: support new config diagnostics API
   * cli: positional arguments are invalid when parsing configuration
   * apprt/glfw: exit with invalid CLI args
   * apprt/gtk: exit if there are CLI errors
   * cli: skip argv0 and actions when parsing CLI flags
   * config: change macos-option-as-alt default to left
 .
   [ Tim Culverhouse ]
   * fix: report correct screen pixel size
 .
   [ johnseth97 ]
   * Modified `window-decorations = none` option on macos
 .
   [ Charly Delay ]
   * Tentative fix for unexpected `font-codepoint-map` behavior
 .
   [ Josh ]
   * feat: Update about menu design to match macOS.
 .
   [ Mitchell Hashimoto ]
   * macos: clamp window size to screen size on screen parameter changes
   * cli: +help needs to use the proper args iterator
 .
   [ Josh ]
   * refactor: hide buttons when URLs are invalid and change variable mutability and visibility.
   * style: add line break in the caption of the about dialog.
   * fix: add text-selection back in the about dialoge.
 .
   [ Mitchell Hashimoto ]
   * macos: personal nitpicks and improvements
 .
   [ johnseth97 ]
   * Fixing deprecation warnings, experiencing new errors.
 .
   [ Marijn Besseling ]
   * implement overline decoration (SGR 53/55)
 .
   [ Mitchell Hashimoto ]
   * Revert "config: change macos-option-as-alt default to left"
 .
   [ johnseth97 ]
   * Basic proxy icons showing
 .
   [ Jon Parise ]
   * bash: stop modifying HISTCONTROL in bash-preexec.sh
 .
   [ Mitchell Hashimoto ]
   * macos: use notification to detect when quick terminal shows/hides
 .
   [ Max ]
   * feat: make too big tab indices go to last tab
 .
   [ axdank ]
   * gui: add move_current_tab action
   * removing unnecessary enum
 .
   [ Mohammad Al-Ahdal ]
   * Fix: aerospace no longer resizes quick terminal and instead treats it as float
 .
   [ Mitchell Hashimoto ]
   * build: use Zig system packaging options
   * PACKAGING.md
   * ci: test system package build
   * nix: oniguruma needed for dynamic linking
   * remove -Dstatic
   * build: only default system libs to false on macOS
   * ci: add signing and tarball generation to release-tip workflow
 .
   [ johnseth97 ]
   * added macos-titlebar-proxy-icon to config
   * Reworked proxy icon, added config options.
   * Removed uneeded code
   * Fixed formatting
 .
   [ Mitchell Hashimoto ]
   * macos: fix goto last tab
   * gtk: make goto_tab go to last tab if too large
 .
   [ johnseth97 ]
   * refactored proxyIconURLDidChange to pwdDidChange
   * Converted config declaration to an enum
   * Fixed conversion error between string and enum
 .
   [ Mitchell Hashimoto ]
   * ci: minisign must be run in the nix env
   * ci: install nix for sign tarball action
   * ci: trying to fix signing
   * ci: don't use -Dstatic for releasing
   * ci: try another signing method
   * ci: fix signing
   * ci: sign debugging
   * ci: the fix for signing was to use the secrets directly
   * ci: concurrency control for releases
 .
   [ johnseth97 ]
   * Fixed type conversion garbage
 .
   [ Mitchell Hashimoto ]
   * config: make the proxy icon documentation more detailed
   * macos: nuke the titlebar from orbit when hidden
 .
   [ Mohammad Al-Ahdal ]
   * Suggestion to use window identifier instead of trying to appease heuristics
 .
   [ axdank ]
   * apply review changes
 .
   [ Mohammad Al-Ahdal ]
   * default AXSubrole to .floatingWindow
 .
   [ Mitchell Hashimoto ]
   * input: note that toggle_split_zoom is macOS only
   * macos: make move_tab work
 .
   [ axdank ]
   * fix type mismatch in `moveTab` function parameter
 .
   [ Paul Miller ]
   * add quick-terminal-animate-duration option
 .
   [ Mitchell Hashimoto ]
   * small rename
   * font/coretext: use CTFontCreateForString for final codepoint fallback
 .
   [ Rithul Kamesh ]
   * build: require exact major/minor Zig version
 .
   [ Anmol Wadhwani ]
   * Add an out of bounds check for mouse-selected themes in +list-themes
   * make selection a const
 .
   [ Jeffrey C. Ollie ]
   * core: add a .txt extenstion to scrollback file
 .
   [ Kristófer R ]
   * Make sure a potential port component is considered during hostname validation
 .
   [ Mitchell Hashimoto ]
   * terminal: refactor hyperlink memory management
 .
   [ Qwerasd ]
   * fix(PageList, Page): fix off-by-1 in map capacity checks
 .
   [ CJ van den Berg ]
   * apprt: propagate OSC10/11 (set term fore/background color) through to apprt
 .
   [ Mitchell Hashimoto ]
   * PACKAGING: recommend -Dtarget
 .
   [ Marvin A. Ruder ]
   * fix(macOS): Fix visual glitch when switching between full-screen apps
 .
   [ Mitchell Hashimoto ]
   * apprt: rename set_bg/fg to "color_change" to report all color changes
 .
   [ Marvin A. Ruder ]
   * Replace check
 .
   [ Nyaa97 ]
   * Fix linking freetype and glslang
 .
   [ Mitchell Hashimoto ]
   * comment
 .
   [ Rick Calixte ]
   * Terminal: Reinitialize screens on scrollback reset
 .
   [ Mitchell Hashimoto ]
   * core: show mouse whenever focus state changes on surface
   * macos: setup colorspace in base terminal controller
   * macos: rectangle select only requires option + drag
   * cli: do not parse actions (+command) after -e
   * Revert "macos: setup colorspace in base terminal controller"
   * macos: quick terminal set colorspace
   * core: only do cursor click to move without a mouse selection
 .
   [ CJ van den Berg ]
   * apprt: also send color_change notifications when colors are reset
 .
   [ Mitchell Hashimoto ]
   * CONTRIBUTING.md
 .
   [ Kristófer R ]
   * Update explanation for number of digits in port number
   * Extract OSC 7 hostname parsing into helper functions
 .
   [ Jeffrey C. Ollie ]
   * gtk: use correct function to destroy window
 .
   [ Mitchell Hashimoto ]
   * macos: restore window frame on cascadeTopLeft since macOS 15 moves it
   * font/harfbuzz: force LTR font shaping
 .
   [ FineFindus ]
   * apprt/adw: reapply headerbar colors
 .
   [ Mitchell Hashimoto ]
   * update zig-objc
 .
   [ Emily ]
   * renderer/metal: use `release()` consistently
   * renderer/metal: release device on `deinit()`
   * renderer/metal: prefer low‐power GPUs (Closes: #2572)
 .
   [ Sam Atman ]
   * ECMA 48 is de jure: as stated by law
 .
   [ Mitchell Hashimoto ]
   * README: syntax highlight the config
   * update zig-objc
 .
   [ Kristófer R ]
   * Move hostname helpers to src/os/hostname.zig
   * os/hostname: test isLocalHostname
   * os/hostname: test bufPrintHostnameFromFileUri
   * os/hostname: add better validation for mac-address hostnames
   * os/hostname: add and use explicit error structs
 .
   [ Tristan Partin ]
   * feat: install neovim plugin
 .
   [ Mitchell Hashimoto ]
   * stylistic changes
   * remove refalldecls test
 .
   [ Nico Elbers ]
   * docs: fix the nixos install instructions
 .
   [ Mitchell Hashimoto ]
   * coretext: set variations on deferred face load
   * update iterm2 themes
   * config: add "initial-command" config, "-e" sets that
 .
   [ Paul Berg ]
   * gtk: implement toggle_split_zoom
 .
   [ Mitchell Hashimoto ]
   * font/coretext: always score based on style string length
   * font/coretext: do not set variation axes in discovery
 .
   [ phillip-hirsch ]
   * feat: Add syntax highlighting for bat
 .
   [ Meili C ]
   * font feature: add git branch characters
 .
   [ Qwerasd ]
   * font/sprite: cleanup branch drawing character impl, implement fade-out lines
 .
   [ phillip-hirsch ]
   * feat: Add bat syntax highlighting to macOS package contents
 .
   [ Mitchell Hashimoto ]
   * terminal: PageList rename "page" to "node" everywhere
   * move datastructures to dedicated "datastruct" package
   * datastruct: add intrusive doubly linked list
   * terminal: change pagelist linked list to an intrusive linked list
 .
   [ Kristófer R ]
   * os/hostname: fix mac address handling when last section starts with '0'
 .
   [ Nadir Fejzic ]
   * feat: implement configurable freetype load flags
   * refactor: handle freetype load flags in face instead of renderer
   * chore: remove unused import
   * refactor: make freetype flags void for non-freetype backend
   * docs: describe `load_flags` field in `Face` struct
 .
   [ Jeffrey C. Ollie ]
   * core/gtk: unify libadwaita/adwaita options in the code
   * core: list valid options if an invalid value is detected parsing an enum
 .
   [ Pepper Lebeck-Jobe ]
   * Fix copying the theme name
 .
   [ Nadir Fejzic ]
   * refactor: define `FreetypeLoadFlags` struct and default in `font.face`
   * docs: write documentation for `freetype_load_flags` field
   * chore: fix typo
   * refactor: remove unused imports
   * fix: use ternary if expression and correct types
   * refactor: add default value for `freetype_load_flags'
   * refactor: use if expression instead of switch
 .
   [ Jeffrey C. Ollie ]
   * ci: fix adwaita build
   * core: address review comments
 .
   [ Mitchell Hashimoto ]
   * some tweaks
   * macos: allow additional modifiers through for ctrl+enter
   * build.zig: add -Dpie option for position independent executables
 .
   [ Tim Culverhouse ]
   * deps: update libvaxis to v0.5.1
 .
   [ Mitchell Hashimoto ]
   * deps: update zf and nix hash
   * update zf api
   * deps: update iterm2 color themes
   * termio: handle empty titles (OSC 0/2)
   * apprt: support a pwd change action
   * termio: fix some mild memory corruption
   * libghostty: remove the pwd function
   * macos: use the pwd apprt action to set the proxy icon URL
   * ios surface view needs pwd field
   * terminal: OSC7 with empty URL resets the pwd to nil
   * terminal: parse CSI 22/23 for push/pop title
 .
   [ Anthony ]
   * Update shebangs in installed shellscripts to meet `rpmlint` and match provided paths at [pkgs.org](https://fedora.pkgs.org/41/fedora-x86_64/elvish-0.21.0-4.fc41.x86_64.rpm.html)
   * Revert "Update shebangs in installed shellscripts to meet `rpmlint` and match provided paths at [pkgs.org](https://fedora.pkgs.org/41/fedora-x86_64/elvish-0.21.0-4.fc41.x86_64.rpm.html)"
   * Remove shebangs from non-executable configuration source scripts
 .
   [ Mitchell Hashimoto ]
   * Make all shell integration scripts non-executable
   * build: -Dpie default to true in system package mode
   * renderer: dedicated size struct, defined coordinate spaces
   * core: make surface use only renderer.Size
   * termio: change resize message to use new size struct
   * termio: change all sizes to the new size type
   * renderer: message uses new size struct
   * renderer/metal: use new size struct
   * renderer/opengl: update to new size struct
   * apprt/embedded: fix new size struct
   * apprt/gtk: use new size structs
   * remove some unused structs
 .
   [ AnthonyZhOon ]
   * Remove shebang from non-executable script
 .
   [ Jon Parise ]
   * macos: add rounded corners to the URL hover view
   * macos: reduce the corner radius to 3 pixels
   * macos: only round the opposing corner
   * macos: use a constant for the corner radius
 .
   [ Kevin ]
   * add OFL.txt
   * add accompanying README with license details
 .
   [ Mitchell Hashimoto ]
   * termio: need to update cached size on resize
 .
   [ Mark Peek ]
   * Include font copyright information into OFL.txt and add MIT license
 .
   [ Mitchell Hashimoto ]
   * Balance padding uses the explicit padding value for grid calculations
 .
   [ Jon Parise ]
   * macos: support linkable AboutView properties
 .
   [ Mitchell Hashimoto ]
   * macos: swap out pointerVisible with NSCursor.setHiddenUntilMouseMoves
 .
   [ Jon Parise ]
   * macos: prefer private View structs to functions
   * macos: formatting
   * macos: further simplify using a @ViewBuilder
   * macos: struct attributes can be private
 .
   [ furtidev ]
   * dep: add latest libvaxis and zf
   * port +list-keybinds to latest libvaxis
   * port +list-themes to latest libvaxis
   * fix: +list-themes crashing when there's search result is empty
   * fix: theme search ranking is now case insensitive
   * update nix cache
 .
   [ Tristan Partin ]
   * apprt/gtk: handle pwd action
 .
   [ notcancername ]
   * Append the default value of XDG_DATA_DIRS when setting up shell integration
 .
   [ Mitchell Hashimoto ]
   * termio: tweaks to xdg data dir handling (no logic changes)
 .
   [ Ayman Bagabas ]
   * website: vt/cht: correct v-2 results
 .
   [ Mitchell Hashimoto ]
   * build: always emit-docs in system packaging mode
 .
   [ Gregory Anders ]
   * vim: fix comment syntax pattern
 .
   [ Mitchell Hashimoto ]
   * config: clarify config-file behavior
 .
   [ Jon Parise ]
   * os: replace PATH_SEP with std.fs.path.delimiter
 .
   [ Mitchell Hashimoto ]
   * config: add basic conditional system core logic (no syntax yet)
   * config: Replay.Step supports a conditional arg
   * config: function to change conditional state
   * config: some docs updates
   * config: theme loading unit tests
   * cli: parse auto structs
   * cli: parseCLI form works with optionals
   * config: theme parses light/dark but only loads light for now
   * config: load dark/light theme based on conditional state
   * apprt: action to change conditional state, implement for embedded
   * config: disable window-theme=auto if light/dark mode theme is configured
   * config: macos-titlebar-style transparent disabled with light/dark mode
   * config: update some docs
   * apprt/gtk: support light/dark mode change on the fly
   * macos: enable Metal shader logging
 .
   [ Anthony ]
   * Change oniguruma link target from `oniguruma` to `onig`
 .
   [ Mitchell Hashimoto ]
   * renderer/opengl: fix memory leak when copying font features
   * ci: release job should set xcode version earlier
   * apprt/gtk: set inherited working directory manually
   * Revert "macos: enable Metal shader logging"
   * ci: set xcode 16 on zig builds or macOS
   * cli: parseCLI for optionals should not be null in release modes
   * input: Binding set clone must deep clone actions
   * apprt: add `config_change` action
   * macos: listen for config change and post a notification
   * config: C API ghostty_config_clone
   * macos: change config access to evented, derived config like libghostty
   * macos: terminal controller reacts to surface config changes
   * macos: listen for color change property to update window appearance
   * macos: only color the titlebar of surfaces that border the top
   * macos: use correct title background if top surface
   * macos: OSColor.hexString must be able to compile with UIKit
 .
   [ trag1c ]
   * docs: include valid values for `macos-titlebar-proxy-icon`
 .
   [ Vincent Prigent ]
   * Add two edge cases to the url regex
 .
   [ Mitchell Hashimoto ]
   * config: fix invalid memory access on theme loading
   * macos: add NSAppearance.isDark
   * config: need to apply window-theme for light/dark after loading theme
   * apprt: switch to reload_config action that calls update_config API
   * apprt/glfw: update to new reload config action
   * apprt/gtk: update for new reload config API
   * apprt: remove change conditional state action
   * apprt/gtk: fix build
   * macos: use Ghostty logger not AppDelegate
   * macos: update recommended Xcode settings
   * mode 2031 should send updates on any color palette change
 .
   [ Jon Parise ]
   * doc: remove sixels from the TODO list
 .
   [ Mitchell Hashimoto ]
   * App applies conditional state, supports theme setting
   * config: clone() should run the replay steps
   * config: clone must preserve conditional state
   * termio: copy input command to avoid memory corruption
   * surface needs to preserve original config working-directory
   * apprt/embedded: update our cached config on config_change action
   * config: clone() needs to preserve conditionals of replay steps
 .
   [ Gregory Anders ]
   * termio: track whether fg/bg color is explicitly set
 .
   [ Anmol Wadhwani ]
   * Strip theme location in fish completions
 .
   [ Kyaw ]
   * config: support loading from "Application Support" directory on macOS
 .
   [ Mitchell Hashimoto ]
   * config: only change conditional state if there are relevant changes
   * apprt/gtk: only show config reload toast if app config changes
   * os: more error handling on reading the app support dir
   * try to abstract bundle ID to a zig file
 .
   [ Gregory Anders ]
   * termio: fixes to kitty color reporting
 .
   [ Isaac Mills ]
   * Prevent GTK from initializing Vulkan. This improves startup time
 .
   [ Mitchell Hashimoto ]
   * config: implement `clone` for RepeatableLink
   * apprt/gtk: use proper env var for vulkan disable on <= 4.14
   * terminal: eraseChars was checking wide char split boundary on wrong cell
   * config: clone should copy diagnostics
   * renderer: set QoS class of the renderer thread on macOS
   * README: clarify config docs location
   * apprt/gtk: update app color scheme state
   * macos: disable background opacity/blur in native fullscreen
   * config: need to dupe filepath for diagnostics
 .
   [ Andrej Daskalov ]
   * added right click action for plasma
   * update readme
   * rename file to match package
   * updated permissions and build process
   * Revert "update readme"
   * use cli argument instead of cd
 .
   [ Mitchell Hashimoto ]
   * macos: titlebar tabs can find titlebar container in fullscreen
 .
   [ Mike Hartington ]
   * font/sprite: add missing chevron powerline fonts
 .
   [ Mitchell Hashimoto ]
   * macos: unicode keybindings must convert to string properly
   * terminal: reset should preserve desired default mode values
 .
   [ Andrej Daskalov ]
   * added gtk-single-instance argument
 .
   [ Mitchell Hashimoto ]
   * macos: trigger fullscreenDidChange on any fullscreen event
 .
   [ Valentin Shinkarev ]
   * fix slow scroll in mouseReport
 .
   [ Mitchell Hashimoto ]
   * terminal: failing tracked pin test on fullReset
   * terminal: PageList.reset
   * terminal: fullReset uses the new screen reset methods
   * terminal: PageList.reset has to zero arena memory to avoid reuse
   * terminal: move UTF8 encoding to Page and wrap around it
   * terminal: support cell_map for encodeUtf8
   * terminal: single pagelist node search
   * datastruct: CircBuf can be initialized empty
   * CircBuf: add ensureUnusedCapacity, appendSlice
   * terminal: working on a pagelist sliding window for search
   * terminal: sliding window search starts working
   * terminal: sliding window search can move the cursor
   * terminal: search across two pages and pruning appears to be working
   * terminal: remove unused pagesearch
   * terminal: test no match pruning
   * terminal: search match across page boundary
   * terminal: test for match in second slice of circ buf
   * terminal: search match on overlap case
   * terminal: update comments/docs on sliding window search
   * terminal: PageListSearch works!
   * comments
   * remove unused file
   * apprt/gtk: force X11 backend on GTK 4.14
   * flake: update to Nix 24.11
 .
   [ Dmitry Zhlobo ]
   * fix unwanted resize of non-native fullscreen window
   * found a better explanation for the reason to hide dock before menu
   * doc: remove outdated statement for fullscreen option
 .
   [ moni ]
   * termio: clear kitty images when deleting above the cursor
 .
   [ Mitchell Hashimoto ]
   * macos: prevent moveFocus from being an infinite loop
   * config: title can reload at runtime
 .
   [ Dmitry Zhlobo ]
   * macos: make non-native fullscreen windows not resizeable
 .
   [ Mitchell Hashimoto ]
   * update libxev
   * New Ghostty icon
   * config: "-e" arguments must stay at the end of replay steps
 .
   [ Zerebos ]
   * Add information about community config tool
 .
   [ Qwerasd ]
   * fix(kittygfx): don't respond to T commands with no i or I
   * font/opentype: add table parsing for head, hhea, post, and OS/2
 .
   [ Abhinav Gupta ]
   * keybind: format leader bindings into multiple entries
 .
   [ Khang Nguyen Duy ]
   * command: fix hostname test compatibility
 .
   [ Anund ]
   * zsh: add completions generation
   * fish: reuse Action options iteration code
 .
   [ Abhinav Gupta ]
   * fix: NoSpaceLeft => OutOfMemory
 .
   [ Khang Nguyen Duy ]
   * gtk: pass surface to clipboard window by reference instead of by value
 .
   [ Mitchell Hashimoto ]
   * macOS: "option-as-alt" defaults to "true" for US keyboard layouts
   * apprt/glfw: add noop keyboardLayout func to satisfy tests and builds
 .
   [ Gregory Anders ]
   * mdgen: use bold face for option and action names
 .
   [ Qwerasd ]
   * font: unify metrics calculations & separate sprite metrics
 .
   [ Toby Jaffey ]
   * Add '$' to select boundaries, for same behaviour as iTerm
 .
   [ Qwerasd ]
   * font(coretext): add metrics test case for CT, fix variable font init
 .
   [ Anthony ]
   * Remove executable permission from readonly config file
 .
   [ Mitchell Hashimoto ]
   * Back out "apprt/gtk: force X11 backend on GTK 4.14"
 .
   [ Anthony ]
   * Revert "Change oniguruma link target from `oniguruma` to `onig`"
 .
   [ Josh Mills ]
   * Fix typo in config documentation
 .
   [ Pranav Mangal ]
   * Add delay before a title change to avoid flicker on macOS
   * Move title change timer to SurfaceView and call it from Ghostty.App instead of terminal controllers
 .
   [ Anmol Wadhwani ]
   * Add weekly iterm2-colorschemes update workflow
 .
   [ Toby Jaffey ]
   * Added "selectWord with character boundary" test for dollar sign.
 .
   [ Anmol Wadhwani ]
   * Use git diff --exit-code in conditional
 .
   [ Qwerasd ]
   * font(metrics): always apply minimum values after calculating
 .
   [ Borys Lykah ]
   * Preserve ZSH options in the shell integration
 .
   [ Qwerasd ]
   * fix(kittygfx): load & display command shouldn't respond to i=0,I=0
 .
   [ Mitchell Hashimoto ]
   * unicode: emoji modifier requires emoji modifier base preceding to not break
   * ci: iTerm2 job should run on Namespace and use cache
   * prettier
 .
   [ mitchellh ]
   * deps: Update iTerm2 color schemes
 .
   [ Mitchell Hashimoto ]
   * ci: colorscheme update should verify nix hash and build
 .
   [ Qwerasd ]
   * test: big perf win by pausing integ checks while growing pages
 .
   [ Borys Lykah ]
   * Fix style warning
 .
   [ Mitchell Hashimoto ]
   * macos: move title setting into a function to better encapsulate
 .
   [ Qwerasd ]
   * clarify naming convention
   * font(Box/cursors): properly account for un-adjusted height
   * font(freetype): actually take max ascii width instead of first
 .
   [ Mitchell Hashimoto ]
   * face: add more RLS types and explicit error sets
   * ci: on release, only upload appcast after binaries
 .
   [ Qwerasd ]
   * font/sprite: separate out cursor rendering from Box
   * font: more robust extraction of vertical metrics from tables
   * font: fix sign of usWinDescent interpretation
   * config: add adjust keys for new font metrics
   * build: increase zsh completion gen eval branch quota
 .
   [ Anund ]
   * fish: raise eval quota inline with other completions, add -e
   * zsh: add -e completion, fix incorrectly copied sed expression
   * bash: add bash completion generation
 .
   [ Tristan Partin ]
   * apprt/gtk: add gtk-tabs-location=hidden
   * apprt/gtk: unify tooltip text with AdwTabButton
 .
   [ Jon Parise ]
   * bash: re-enable automatic bash shell detection
 .
   [ mitchellh ]
   * deps: Update iTerm2 color schemes
 .
   [ Anund ]
   * bash: fix incorrect completion for '--key '
   * bash: formatting changes, change to reference binary name via variable
   * bash: add _files and _dirs to correctly add spaces to only the final result
 .
   [ Jeffrey C. Ollie ]
   * font: add sprites for the separated block quadrants
 .
   [ Anund ]
   * bash: remove quoted completions while sorting possible portability issue
   * bash: support short form boolean options
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: slight style feedback
 .
   [ Tristan Partin ]
   * apprt/gtk: abstract AdwHeaderBar and GtkHeaderBar
 .
   [ Mitchell Hashimoto ]
   * apprt/gtk: stylistic changes
 .
   [ Jeffrey C. Ollie ]
   * simplify the code for separated block quadrants
   * fix sprite drawing test
   * add Box_test*.ppm to .gitignore
 .
   [ Jon Parise ]
   * macos: add our application bundle to XDG_DATA_DIRS
 .
   [ thyttan ]
   * Harmonize README_TESTERS.md and CONTRIBUTING.md
 .
   [ Jon Parise ]
   * macos: add bash-completion to the application bundle
   * os: add prependEnv(), like appendEnv()
 .
   [ Aaron Bull Schaefer ]
   * docs: fix typo
 .
   [ Qwerasd ]
   * font(coretext): tolerate fonts without OS/2 tables
   * font(freetype): tolerate fonts without OS/2 tables
   * fix: sCapHeight and sxHeight only exist when OS/2 version >= 2
 .
   [ Mitchell Hashimoto ]
   * font: style edits for #2985
 .
   [ Jeffrey C. Ollie ]
   * build: allow CLI actions to have enum option values
 .
   [ Jon Parise ]
   * macos: add zsh to the application bundle
 .
   [ Anund ]
   * nix: address warning to use toplevel adwaita-icon-theme
 .
   [ Jon Parise ]
   * terminal: handle consecutive .input's in clearPrompt
 .
   [ Anund ]
   * shell-integration: add bashrc location lookup in Nixos
 .
   [ Jeffrey C. Ollie ]
   * core: allow cli actions to use arg parsing diagnostics
   * core: allow u21 as a cli argument type
   * cli: add +show-face CLI action
 .
   [ Jon Parise ]
   * config: disable forced shell integration for -e
   * bash: improve clearing of multiline prompts
 .
   [ Mitchell Hashimoto ]
   * build: generate reference page for config for website
   * remove website dir
 .
   [ Anund ]
   * nix: support `programs.vim.plugins = [ ghostty.vim ]`
 .
   [ Qwerasd ]
   * renderer: do not constrain color glyphs
 .
   [ Niclas van Eyk ]
   * docs: fix referenced toggle window decorations action name
 .
   [ Qwerasd ]
   * font(coretext): improve atlas padding calculations
 .
   [ Sam Atman ]
   * Docfix: correct comment for modifyOtherKeys sequence
   * Change to F3 legacy encoding with modifiers
 .
   [ Mitchell Hashimoto ]
   * webgen: update config to support callouts, emit keybind actions
 .
   [ Khang Nguyen Duy ]
   * avoid asserting working directory is absolute
 .
   [ Mitchell Hashimoto ]
   * build: change object story domain to ghostty.org
   * macos: add "Docs" button to the About window
   * ci: tagged release workflow
 .
   [ moni ]
   * surface: don't early return when clearing hyperlinks
 .
   [ Mitchell Hashimoto ]
   * ci: release tag workflow
   * Make Ghostty release channel aware
   * ci: generate a correct sparkle version string for tagged releases
 .
   [ Anthony ]
   * Add --prefix option to `git archive` to extract with a top-level directory
 .
   [ Anund ]
   * Revert "bash: remove quoted completions while sorting possible portability issue"
   * bash: document COMP_WORDBREAKS interaction
 .
   [ Mitchell Hashimoto ]
   * ci: release workflows build a dmg for macOS
   * config: blank title docs
 .
   [ Jon Parise ]
   * bash: standardize on shorthand escape sequences
 .
   [ Mitchell Hashimoto ]
   * update README for release
   * update README
 .
   [ Damien MEHALA ]
   * config: quick terminal auto hide
 .
   [ Anund ]
   * bash: move functions and variables out of global scope
 .
   [ mitchellh ]
   * deps: Update iTerm2 color schemes
 .
   [ Qwerasd ]
   * font: add `cursor-height` metric, and `adjust-` config for it.
 .
   [ Mitchell Hashimoto ]
   * macos: colorized Ghostty icon begins!
   * macos: custom app icon goes into About window
   * config: change color to a defined C struct for libghostty
   * config: macos-icon configurations
   * macos: support the macos-icon configurations
   * config: ensure formatting can only return OOM
   * config: additional macos-icon docs
   * macos: add macos-icon-frame and some custom frame styles
   * config: mark as experimental
 .
   [ Troels Thomsen ]
   * Divide red component of unfocused split fill color
 .
   [ Nico Weber ]
   * macos: Make "Settings…" menu item open config file in Application Support
   * comment
 .
   [ Qwerasd ]
   * fix tests for freetype to include cursor_height metric
   * test(metrics): fix to initialize cursor height + add comment
   * fix tests for coretext to include cursor_height
 .
   [ Nico Weber ]
   * add a comment
 .
   [ Jeffrey C. Ollie ]
   * nix: move vimfiles instead of copying
   * core: don't read config files that are not files
 .
   [ Qwerasd ]
   * deps: update z2d to v0.4.0
 .
   [ Mitchell Hashimoto ]
   * macos: set NSAppearance on windowDidLoad
   * macOS: change default keybinds for equalize splits, jump to prompt -1/+1
   * apprt/gtk: prevent a new split from being smaller than 2x2
 .
   [ Qwerasd ]
   * fmt
   * font/sprite: fix z2d StaticPath accounting + undefined use
 .
   [ Iain H ]
   * apprt/gtk: move new tab button to start of header bar
 .
   [ Qwerasd ]
   * RefCountedSet: simplify `insert` logic, cleanup, improve comments
   * Fix a scenario that could cause issues under some conditions
 .
   [ Mitchell Hashimoto ]
   * kittygfx: z-index handling fixes
   * macos: update content scale whenever the screen changes
 .
   [ Qwerasd ]
   * fix(RefCountedSet): Gracefully handle pathological cases
 .
   [ Mitchell Hashimoto ]
   * terminal: PageList.pin doesn't allow out of bounds x values
   * kittygfx: placement with rows (r) param scrolls properly out of viewport
   * terminal: selectionString only applies x offset on first/last page
 .
   [ Iain H ]
   * apprt/gtk: support dark window decorations with GtkWindow
 .
   [ Qwerasd ]
   * perf(RefCountedSet): make swap metric prioritize high refcount items
   * perf(styles): greatly improve style.hash performance
 .
   [ Damien Mehala ]
   * feat: add support for middle position in quick terminal
 .
   [ Mitchell Hashimoto ]
   * Fix UB in style hashing by using autoHash, but keep XxHash3
 .
   [ David Rubin ]
   * optimize `Style` hashing to be single-shot
   * add some comments
 .
   [ Mitchell Hashimoto ]
   * terminal: address typos in style struct
   * config: revert cmd/alt+left/right to legacy encoding on macOS by default
 .
   [ Damien Mehala ]
   * code review
 .
   [ David Rubin ]
   * optimize `Style.eql` using `PackedStyle`
 .
   [ Mitchell Hashimoto ]
   * config: use escaped encoding for macOS cmd+left/right
 .
   [ Ayman Bagabas ]
   * fix: correct handling of CTC and DECST8C
 .
   [ Jan200101 ]
   * terminal: parse ConEmu progress OSC 9
   * terminal: support progress for ConEmu pause and error state
 .
   [ Qwerasd ]
   * test: add failing test for `Screen.cursorAbsolute` memory corruption
   * fix: memory corruption in `Screen.cursorAbsolute`
   * test: add additional checks to scroll above cross-page test
   * fix: memory corruption in `Screen.cursorScrollAboveRotate`
   * improve comments
   * test: correct scroll above dirty assertions
   * fix: unconditionally mark cursor row dirty in `cursorScrollAbove`
 .
   [ Tristan Partin ]
   * apprt/gtk: handle nullable event from event controller
 .
   [ Mitchell Hashimoto ]
   * macos: send a cursor position event on mouseEnter
   * Create LICENSE
   * set version metadata to 1.0.0
   * build.zig: v1.0.0
 .
   [ Clay Risser ]
   * Fixed missing build dep
   * Added prebuilt
   * Fixed debian prebuilt
   * Added build depends
Checksums-Sha1:
 3f851ffe472a115dcb7b0a490fd16f3077205298 1085 ghostty_1.0.0-1.dsc
 cd94442533eac565c639eab6bf6ba09821055579 24151143 ghostty_1.0.0.orig.tar.gz
 800115647c6dbc6522e68030ddc9047d61309fbe 15981920 ghostty_1.0.0-1.debian.tar.xz
 44e66196148d31d86bff1ff40648b166e79187b9 5072 ghostty_1.0.0-1_source.buildinfo
Checksums-Sha256:
 4805c54d13a49e13dee23b939d0270f5ff85c87810b14432e82831b050176c0c 1085 ghostty_1.0.0-1.dsc
 bd12953c8bbe7149e2f94e7e578a88e981932a69aa483f5ce9a2cfba726e0015 24151143 ghostty_1.0.0.orig.tar.gz
 7c8f386445a47af36fc58895ef32e35a1da65f503847418b41284c5e53cfddbf 15981920 ghostty_1.0.0-1.debian.tar.xz
 a0bed0d27baf8ddb0e4e0b85d6d425bfd75ba19a580a2062db1dc67c692e2d31 5072 ghostty_1.0.0-1_source.buildinfo
Files:
 6b10c34c8153c381543b24a6beeb8ea1 1085 utils optional ghostty_1.0.0-1.dsc
 60f83184842b5064ac4d5c2d9b89057e 24151143 utils optional ghostty_1.0.0.orig.tar.gz
 a14c85d725584d95521b10bb5d1a9146 15981920 utils optional ghostty_1.0.0-1.debian.tar.xz
 464c1d28db527c1913f04bf16a5c27f5 5072 utils optional ghostty_1.0.0-1_source.buildinfo
openSUSE Build Service is sponsored by