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