Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
286 commits
Select commit Hold shift + click to select a range
93f67de
renderer/dx11: add shared DXGI texture surface mode (no HWND, no comp…
deblasis Mar 31, 2026
b110066
renderer/dx11: use DirectComposition for HWND surfaces (#97)
deblasis Apr 1, 2026
3df39b5
chore: update progress bars (MVWT 68%, MVT 0%)
deblasis Apr 1, 2026
067fbff
fix(directx11): add D3D11_BIND_SHADER_RESOURCE to shared texture (#103)
deblasis Apr 2, 2026
1e418f4
font: add DirectWrite font discovery backend for Windows (#101)
deblasis Apr 2, 2026
9bd265c
font: document light hinting as intentional default on Windows (#104)
deblasis Apr 2, 2026
6fae657
font: add Segoe UI Emoji as Windows fallback font (#102)
deblasis Apr 2, 2026
d5f99b1
font: verify variable font variations through DirectWrite (#105)
deblasis Apr 2, 2026
12bb571
font: fix review findings in DirectWrite backend (#106)
deblasis Apr 2, 2026
3c58e2c
DX12 pivot: rename directx11/ to directx12/, extract shared files (#107)
deblasis Apr 3, 2026
2c15733
readme: update for DX12 pivot, reset MVWT to 54%
deblasis Apr 3, 2026
921e3e3
DX12 pivot: backend enum + stub DirectX12.zig (#108)
deblasis Apr 3, 2026
f56b667
DX12 pivot: switch HLSL to dxc.exe / SM 6.0 (#109)
deblasis Apr 3, 2026
322f7e2
DX12 pivot: D3D12 COM interface bindings (#110)
deblasis Apr 3, 2026
aebe30e
fix: update stale DX11 references in HLSL shader comments (#125)
deblasis Apr 3, 2026
e7df99b
renderer: DX12 device creation with command queue and fence (#113)
deblasis Apr 3, 2026
4feeb33
renderer: DX12 descriptor heap management (#114)
deblasis Apr 3, 2026
abf6722
renderer: DX12 Frame with command allocator and command list (#116)
deblasis Apr 3, 2026
a828d06
renderer: DX12 Target (RTV + barriers) and RenderPass (command record…
deblasis Apr 3, 2026
56a7962
renderer: DX12 clear-to-color through real device + command list (#118)
deblasis Apr 3, 2026
e53bb47
renderer: DX12 Buffer with upload heap and persistent mapping (#119)
deblasis Apr 3, 2026
c880d4d
renderer: DX12 Texture (DEFAULT heap + staging) and Sampler (descript…
deblasis Apr 3, 2026
ad318e0
renderer: DX12 Pipeline with root signature and PSO (#121)
deblasis Apr 3, 2026
3464d67
renderer: DX12 shader loading from embedded DXIL bytecode (#122)
deblasis Apr 4, 2026
c8f09b3
renderer: DX12 wire all 5 render pipelines end-to-end (#123)
deblasis Apr 4, 2026
ab1af5c
renderer: DX12 GPU integration tests (#124)
deblasis Apr 4, 2026
8dc7dd5
renderer: DX12 fix surface creation crash (#134)
deblasis Apr 4, 2026
ff581a1
renderer: DX12 frame pool fence wait wiring (#135)
deblasis Apr 4, 2026
177f2dd
renderer: DX12 cache surfaceSize dimensions (#136)
deblasis Apr 4, 2026
5dcd2b9
renderer: DX12 upgrade root signature to v1.1 (#137)
deblasis Apr 4, 2026
884641a
renderer: DX12 TDR detection (DXGI_ERROR_DEVICE_REMOVED) (#138)
deblasis Apr 4, 2026
185637b
renderer: DX12 custom shader support (.hlsl shadertoy target) (#139)
deblasis Apr 4, 2026
018ea19
renderer: DX12 multi-buffer binding for cell_text pipeline (#140)
deblasis Apr 4, 2026
05ccc15
renderer: remove dead DX11 renderer module (#141)
deblasis Apr 4, 2026
331856d
renderer: fix COM ABI for descriptor heap handle methods (#142)
deblasis Apr 4, 2026
c2fcce2
renderer: fix COM ABI for descriptor handle parameters and SRV desc s…
deblasis Apr 4, 2026
dfa8d52
renderer: add deinit poisoning to DX12 types (#150)
deblasis Apr 5, 2026
ad8ab33
renderer: DX12 init command list and staging buffer lifetime fix (#149)
deblasis Apr 5, 2026
6f3d651
fix: D3D12 SRV desc struct size test and SPIRV-Cross HLSL backend (#151)
deblasis Apr 5, 2026
19fb57c
fix: Win32 example keyboard input by combining key events with text (…
deblasis Apr 5, 2026
018f6e3
fix: Win32 Ctrl+C does not interrupt child process via ConPTY (#154)
deblasis Apr 6, 2026
9f5b789
feat(windows): scaffold WinUI 3 app shell consuming libghostty (#156)
deblasis Apr 6, 2026
28d8db2
fix(windows): WinUI 3 shell focus, input topology, and action plumbin…
deblasis Apr 6, 2026
78423bc
feat(windows): DX12 swap chain resize + Target double-free fix (#158)
deblasis Apr 6, 2026
280a13c
fix(windows): WinUI 3 shell DX12 reliability and input fixes (#159)
deblasis Apr 7, 2026
1ad8d90
build(justfile): pin pwsh as windows-shell, mark winui3 recipes (#162)
deblasis Apr 8, 2026
b02f4b2
refactor(windows): hoist libghostty config/app ownership to MainWindo…
deblasis Apr 8, 2026
b5284c7
chore: update progress bars (MVWT 85%, MVT 0%) (#164)
deblasis Apr 8, 2026
1f1d71d
feat(windows): multi-pane splits for the WinUI 3 shell (#163)
deblasis Apr 8, 2026
c86f257
feat(windows): vertical tab strip with sidebar layout (#167)
deblasis Apr 9, 2026
849b177
feat(windows): jump list + AUMID for taskbar right-click menu (#168)
deblasis Apr 9, 2026
888662f
feat(windows): taskbar progress coordinator with per-tab cycling (#169)
deblasis Apr 9, 2026
6560f69
feat(windows): runtime switch between horizontal and vertical tabs (#…
deblasis Apr 9, 2026
ef3aa9a
chore: update progress bars (MVWT 88%, MVT 0%) (#171)
deblasis Apr 9, 2026
a020188
feat(windows): clipboard via libghostty callbacks (#173)
deblasis Apr 9, 2026
766f34d
feat(windows): detect precision touchpad scroll and set ScrollMods bi…
deblasis Apr 9, 2026
c82968d
feat(windows): native ScrollBar overlay with auto-fade (#174)
deblasis Apr 9, 2026
312883f
refactor(windows): move ghostty_action layout types to Ghostty.Core +…
deblasis Apr 9, 2026
eacfda9
refactor(windows): rename DX11 libghostty exports to DX12 (#177)
deblasis Apr 9, 2026
57da88d
feat(windows): DX12 shared texture surface mode (#178)
deblasis Apr 10, 2026
54d3d3e
fix(windows): tab layout toggle crash, pane shortcuts, and focus (#180)
deblasis Apr 10, 2026
ade1676
fix(windows): detect TDR in Signal failure path to prevent deadlock (…
deblasis Apr 10, 2026
12e8196
build: add libghostty pkg-config modules (shared + static) (#182)
deblasis Apr 10, 2026
17d641e
refactor(windows): migrate all P/Invoke to LibraryImport (#183)
deblasis Apr 10, 2026
fb448ef
build: add libghostty pkg-config modules (shared + static)
deblasis Apr 10, 2026
7294976
build: fix ghostty.dll linking on Windows MSVC
deblasis Mar 25, 2026
ce5b61f
renderer: add DX11/DXGI COM interface definitions for Windows
deblasis Mar 26, 2026
e73d525
renderer: add DX11 device and swap chain creation
deblasis Mar 26, 2026
8d638d1
renderer: add cell grid instanced rendering pipeline
deblasis Mar 26, 2026
0c211a2
renderer: add tests for DX11 COM interfaces and cell grid
deblasis Mar 27, 2026
0600a0f
renderer: fix DX11 COM bindings and improve error handling
deblasis Mar 27, 2026
2ae75e8
renderer: improve DX11 module structure from code review
deblasis Mar 27, 2026
ef61a5f
windows: address review feedback on DLL CRT init PR
deblasis Mar 27, 2026
5bee540
windows: simplify DLL init test and improve README
deblasis Mar 27, 2026
73f1a69
renderer: add DX11 COM bindings, device lifecycle, and cell pipeline …
deblasis Mar 28, 2026
0fdad45
fix: restore accidentally modified files to upstream state
deblasis Mar 28, 2026
0173293
fix: restore main_c.zig DllMain to upstream location
deblasis Mar 28, 2026
b5d4bd9
fix: restore test/windows files to upstream state
deblasis Mar 28, 2026
f7195a7
renderer: add DX11 GraphicsAPI contract stubs for GenericRenderer (#33)
deblasis Mar 28, 2026
0fb9780
build: add HLSL compile step for DX11 shaders (#43)
deblasis Mar 28, 2026
8c90527
renderer: DX11 clear-to-color with dual surface support (#50)
deblasis Mar 28, 2026
465e02d
renderer/dx11: implement Buffer, Texture, Sampler GPU primitives (#60)
deblasis Mar 28, 2026
59904ad
renderer/dx11: remove duplicate RawBuffer definition from buffer.zig …
deblasis Mar 29, 2026
ebaef8d
renderer/dx11: RenderPass and Pipeline wiring (#61)
deblasis Mar 29, 2026
2d36fca
renderer/dx11: HLSL shaders + pipeline loading for all 5 pipelines (#66)
deblasis Mar 29, 2026
e44d8ef
chore: update progress bars (MVWT 45%, MVT 0%) (#68)
deblasis Mar 29, 2026
8af9eac
renderer/dx11: wire render loop end-to-end through real pipeline path…
deblasis Mar 29, 2026
6610b61
example: C Win32 terminal - integration fixes (#72)
deblasis Mar 29, 2026
8c68999
libghostty: add GHOSTTY_EXPORT for shared library symbol visibility (…
deblasis Mar 30, 2026
f805a70
renderer/dx11: fix padding background color after resize (#75)
deblasis Mar 30, 2026
dc024cd
renderer/dx11: smooth window resize with DXGI_SCALING_NONE and timer …
deblasis Mar 30, 2026
6e699b4
libghostty: expose composition swap chain path through C API (#86)
deblasis Mar 31, 2026
4bd22c2
dx11: fix composition swap chain resize detection and alpha (#90)
deblasis Mar 31, 2026
ace8c16
renderer/dx11: add shared DXGI texture surface mode (no HWND, no comp…
deblasis Mar 31, 2026
0527644
renderer/dx11: use DirectComposition for HWND surfaces (#97)
deblasis Apr 1, 2026
ada3af0
lib: rename GHOSTTY_EXPORT back to GHOSTTY_API in headers (#99)
deblasis Apr 2, 2026
fbbcbc2
lib: restore ghostty_type_json() in vt/types.h (#100)
deblasis Apr 2, 2026
7856090
fix(directx11): add D3D11_BIND_SHADER_RESOURCE to shared texture (#103)
deblasis Apr 2, 2026
e1e8ad3
font: add DirectWrite font discovery backend for Windows (#101)
deblasis Apr 2, 2026
1c420ad
font: add Segoe UI Emoji as Windows fallback font (#102)
deblasis Apr 2, 2026
52d95ce
DX12 pivot: rename directx11/ to directx12/, extract shared files (#107)
deblasis Apr 3, 2026
ac757aa
DX12 pivot: switch HLSL to dxc.exe / SM 6.0 (#109)
deblasis Apr 3, 2026
8287c32
DX12 pivot: D3D12 COM interface bindings (#110)
deblasis Apr 3, 2026
7e3724f
renderer: DX12 descriptor heap management (#114)
deblasis Apr 3, 2026
a7cbbc3
renderer: DX12 Frame with command allocator and command list (#116)
deblasis Apr 3, 2026
b02a37f
renderer: DX12 fix surface creation crash (#134)
deblasis Apr 4, 2026
e1aa69c
renderer: DX12 TDR detection (DXGI_ERROR_DEVICE_REMOVED) (#138)
deblasis Apr 4, 2026
c103967
renderer: remove dead DX11 renderer module (#141)
deblasis Apr 4, 2026
2b21434
fix(windows): WinUI 3 shell DX12 reliability and input fixes (#159)
deblasis Apr 7, 2026
654fc3c
build(justfile): pin pwsh as windows-shell, mark winui3 recipes (#162)
deblasis Apr 8, 2026
8efe5f1
feat(windows): multi-pane splits for the WinUI 3 shell (#163)
deblasis Apr 8, 2026
588a5e0
feat(windows): vertical tab strip with sidebar layout (#167)
deblasis Apr 9, 2026
8da050c
feat(windows): taskbar progress coordinator with per-tab cycling (#169)
deblasis Apr 9, 2026
21b370c
feat(windows): runtime switch between horizontal and vertical tabs (#…
deblasis Apr 9, 2026
d2bc84d
feat(windows): clipboard via libghostty callbacks (#173)
deblasis Apr 9, 2026
0438b71
refactor(windows): rename DX11 libghostty exports to DX12 (#177)
deblasis Apr 9, 2026
7c7b638
feat(windows): DX12 shared texture surface mode (#178)
deblasis Apr 10, 2026
2214fd7
fix(windows): tab layout toggle crash, pane shortcuts, and focus (#180)
deblasis Apr 10, 2026
adfb4b4
fix(windows): detect TDR in Signal failure path to prevent deadlock (…
deblasis Apr 10, 2026
ac4f938
refactor(windows): migrate NativeMethods to LibraryImport
deblasis Apr 10, 2026
ee80870
experiment(windows): enable NativeAOT with static libghostty linking
deblasis Apr 10, 2026
73a1ddc
fix(windows): NativeAOT startup crash from missing partial and XAML r…
deblasis Apr 10, 2026
4d1d8b9
fix(windows): AOT-safe data binding and theme resource fallbacks
deblasis Apr 10, 2026
bd47bf1
fix(windows): theme resources resolve to wrong values under NativeAOT
deblasis Apr 10, 2026
0eebc44
Command palette (Ctrl+Shift+P) (#186)
deblasis Apr 10, 2026
b62be90
fix: ghost visual after pane close, add equalize/zoom/fullscreen (#189)
deblasis Apr 11, 2026
93cbb4f
feat(windows): configuration management with live reload (#188)
deblasis Apr 11, 2026
2b86bf7
feat(windows): background-opacity config plumbing, DX12 blend fix, da…
deblasis Apr 11, 2026
351dfd4
fix(windows): mark WindowThemeManager partial for LibraryImport
deblasis Apr 11, 2026
213fda0
feat(windows): brand the shell and add strip context menus (#206)
deblasis Apr 11, 2026
d088d20
feat(windows): background opacity, gradient tints, shell theme, CLI a…
deblasis Apr 13, 2026
ee115e0
feat(windows): bump Microsoft.WindowsAppSDK to 1.8.6 (#210)
deblasis Apr 13, 2026
38b6744
refactor(windows): audit libghostty marshalling and ship MarshalCompl…
deblasis Apr 13, 2026
3ba8a4e
feat(windows): enable AOT/trim/single-file analyzer triad (#212)
deblasis Apr 13, 2026
457f5c2
feat(windows): add tab color palette (#222)
deblasis Apr 13, 2026
bd02781
refactor(windows): migrate Win32 P/Invoke to CsWin32 0.3.269 (#215)
deblasis Apr 13, 2026
fc46169
feat(windows): tab detach to new window and snap layout zone picker (…
deblasis Apr 13, 2026
50c16b9
fix(windows): wire ToggleFullscreen through PaneActionRouter (#224)
deblasis Apr 13, 2026
59e35c9
fix(windows): settings window and config reload not working (#226)
deblasis Apr 13, 2026
e25e78a
fix(windows): always copy ghostty.dll in Debug builds (#227)
deblasis Apr 13, 2026
c30bde6
fix(windows): backdrop style switching not applying visually (#230)
deblasis Apr 13, 2026
8bc7663
feat(windows): light/dark conditional theming parity (#232)
deblasis Apr 14, 2026
8e255a1
refactor(windows): cache config + theme file reads, clean up review n…
deblasis Apr 14, 2026
41de866
fix(windows): opacity scroll flashes black on frosted backdrop (#240)
deblasis Apr 14, 2026
c36187e
refactor(windows): split chrome application and gate gradient rebuild…
deblasis Apr 14, 2026
bc373b8
fix(windows): stop leaking HBRUSH on class brush replacement (#243)
deblasis Apr 14, 2026
b8f3de4
refactor(windows): settings reorganization phase 1 (foundation) (#245)
deblasis Apr 15, 2026
9ee5024
feat(windows): settings reorganization phase 2 (color picker) (#246)
deblasis Apr 15, 2026
139701a
feat(windows): settings reorganization phase 3 (search overlay) (#247)
deblasis Apr 15, 2026
9715070
feat(windows): visual gradient points editor (phase 4) (#251)
deblasis Apr 15, 2026
dbc82a4
feat(windows): merge Diagnostics into Raw Editor + windows-only key r…
deblasis Apr 15, 2026
b3b25a0
Fix duplicate entry in README for MVWT
deblasis Apr 15, 2026
64e567c
Update README with completed tasks for DX12 features
deblasis Apr 15, 2026
57fc568
feat(windows): migrate UI preferences from ui-settings.json to real c…
deblasis Apr 16, 2026
0f14c91
refactor(windows): drop CommunityToolkit.Mvvm dependency (#256)
deblasis Apr 16, 2026
b1dfe03
chore(windows): migrate C# tree to .NET 10 (#257)
deblasis Apr 16, 2026
883e912
refactor(windows): adopt C# 14 features enabled by .NET 10 (#260)
deblasis Apr 16, 2026
e262f89
chore(windows): treeshake NativeAOT publish (#261)
deblasis Apr 16, 2026
23380b2
chore(windows): gitignore msbuild.binlog and stray root ghostty.sln
deblasis Apr 16, 2026
0be2812
fix(windows): skip simdutf no_libcxx mode on MSVC ABI (#264)
deblasis Apr 16, 2026
532a3ac
refactor(windows): harden exit-code and unhandled-exception hygiene (…
deblasis Apr 16, 2026
99db68f
chore(windows): move solution layout up to shared scope (#262)
deblasis Apr 16, 2026
27e686c
feat(windows): add ShellDetector for VT-awareness classification (#266)
deblasis Apr 17, 2026
27f0475
refactor(windows): adopt Microsoft.Extensions.Logging with [LoggerMes…
deblasis Apr 17, 2026
c7d570e
refactor(windows): ctor-inject ILogger<T> for components that have a …
deblasis Apr 17, 2026
b02884b
feat(windows): ConPTY round-trip and throughput bench (# 40)
deblasis Apr 18, 2026
6e30541
fix(bench): audit and fix ConPtyTransport UpdateProcThreadAttribute m…
deblasis Apr 18, 2026
17e947b
fix(bench): ConPTY round-trip probe protocol (#272)
deblasis Apr 18, 2026
a472d0c
fix(bench): honest conpty-throughput probes with paired ingest+emit r…
deblasis Apr 18, 2026
63ed127
feat(windows/sponsor): Plan D.1 — client-side update UI (simulator dr…
deblasis Apr 18, 2026
1be9358
feat(windows/sponsor): Plan D.2 Velopack update driver (#275)
deblasis Apr 18, 2026
d752fbc
fix(windows): incremental close to avoid ghost visuals on deep pane t…
deblasis Apr 18, 2026
0e9e4e9
fix(termio): spawn configured shell directly on Windows (#285)
deblasis Apr 18, 2026
62e354a
feat(windows): conpty-mode config + ConPTY bypass for VT-aware shells…
deblasis Apr 19, 2026
34d72bf
feat(windows): libghostty to C# log callback bridge (#288)
deblasis Apr 19, 2026
4270c44
fix(windows): set CREATE_NO_WINDOW on bypass CreateProcessW (#295)
deblasis Apr 19, 2026
a7efb73
test(windows): conpty-mode end-to-end validation smoke tier (#289)
deblasis Apr 19, 2026
0ad005a
fix(os/path): honor PATHEXT when resolving bare command names on Wind…
deblasis Apr 19, 2026
624df9e
fix(termio): wait for ConPTY child exit via dedicated thread (#297)
deblasis Apr 19, 2026
7911d2d
chore(scripts): drop smoke-runner timeout-kill workaround after # 297…
deblasis Apr 19, 2026
55ad04f
feat(windows/sponsor): Plan D.2.5 OAuth activation + DPAPI JWT cache …
deblasis Apr 19, 2026
e200c98
fix(windows): force UTF-8 console CP for spawned shells (#301)
deblasis Apr 19, 2026
4fbd5c3
windows/sponsor: align oauth loopback path and query shape (#303)
deblasis Apr 19, 2026
592a87f
fix(windows/sponsor): order Error state write ahead of download cance…
deblasis Apr 19, 2026
f1e3f40
fix(scripts): refresh verify-sponsor-gate for net10 and portable meta…
deblasis Apr 19, 2026
952c1c3
fix(termio): inject UTF-8 preamble for ConPTY-spawned shells (# 302)
deblasis Apr 19, 2026
203bc99
fix(termio): wrap user -Command and /C scripts with UTF-8 preamble (#…
deblasis Apr 20, 2026
afca08c
chore: untrack .superpowers/ artifacts
deblasis Apr 20, 2026
9610e77
windows: rename output binary to Wintty.exe (#310)
deblasis Apr 20, 2026
067b2a5
refactor: sponsor (#311)
deblasis Apr 20, 2026
c9b7b4f
ci(windows): add release-bump dispatcher (#312)
deblasis Apr 20, 2026
1e94575
ci: gate inherited workflows on fork (#313)
deblasis Apr 21, 2026
5673dc5
ci: gate test.yml required job on fork (#314)
deblasis Apr 21, 2026
ccbc514
feat(dx12): custom shader pipeline (GLSL->SPIR-V->HLSL->DXIL) (#315)
deblasis Apr 23, 2026
84159a1
chore: remove tracked build artifacts and add missing .gitignore files
deblasis Apr 23, 2026
764904c
feat(settings): find-in-file for raw config editor (#316)
deblasis Apr 24, 2026
03a6eb9
feat(brand): Wintty blue mark app icons (#317)
deblasis Apr 24, 2026
386fa54
ci(windows): add release-trigger workflow (#318)
deblasis Apr 24, 2026
9d6ff83
feat(font): add +list-fonts support on Windows via DirectWrite enumer…
deblasis Apr 24, 2026
d0dc8b0
feat(profiles): add 5 platform interfaces with own enums for AOT/cros…
deblasis Apr 24, 2026
6399eec
fix(glslang): quote %CL% in build_msvc.bat (#320)
deblasis Apr 24, 2026
0a2d7e0
fix(glslang): add glslang source + override to build_msvc.bat INCLUDE…
deblasis Apr 24, 2026
fe80607
feat(settings): add clear button to acrylic tint color picker (#321)
deblasis Apr 24, 2026
d94b85c
fix(glslang): write dummy.c in build_msvc.bat (#323)
deblasis Apr 24, 2026
3d7935e
Revert "feat(profiles): add 5 platform interfaces with own enums for …
deblasis Apr 24, 2026
1dc11d8
feat(profiles): pure-logic foundation (PR 1/6) (#328)
deblasis Apr 24, 2026
e7a6bb4
fix(settings): light-mode contrast + gear icon + wintty rename (#329)
deblasis Apr 24, 2026
575ec6d
build(justfile): add prepare-worktree recipe
deblasis Apr 24, 2026
14f67ed
fix(shell): acrylic tint inherits theme background when unset (#331)
deblasis Apr 24, 2026
468ed9c
fix(command-palette): react to theme changes via WindowThemeManager (…
deblasis Apr 24, 2026
8108485
fix(settings): suppress stray Ctrl+F tooltip in settings window (#332)
deblasis Apr 24, 2026
bf02355
profiles pr 2/6: discovery probes and production wrappers (#333)
deblasis Apr 24, 2026
91db961
fix(tabs): keep tab title when window-theme=ghostty is active (#334)
deblasis Apr 24, 2026
fa53499
feat(power): Windows power saving mode detection and effect flattenin…
deblasis Apr 24, 2026
c7483cd
feat(profiles): ProfileRegistry + ConfigService profile parse (#337)
deblasis Apr 24, 2026
79c41b3
fix(glslang): use absolute path to sort.exe in build_msvc.bat (#338)
deblasis Apr 25, 2026
103a538
build(glslang): run build_msvc.bat from zig for native-msvc target (#…
deblasis Apr 25, 2026
141b5c2
fix(sln): Tests.Windows Any CPU should resolve to x64, not x86 (#340)
deblasis Apr 25, 2026
22c7ef2
profiles pr 4/6: split-button new-tab control (#345)
deblasis Apr 26, 2026
5ae41af
profiles pr 5/6: command palette + Ctrl+Shift+1..9 chords (#346)
deblasis Apr 26, 2026
9722ebe
windows: delete orphan Mvvm helpers (#348)
deblasis Apr 26, 2026
fe06e93
profiles pr 6/6: settings page (read-only inspector + hide toggle) (#…
deblasis Apr 26, 2026
9c555ce
config: suppress unknown-field diagnostic for internal.* keys (#350)
deblasis Apr 26, 2026
f926b58
tests: reframe WinUI smoke stubs as manual-smoke specs (#353)
deblasis Apr 26, 2026
080c009
tabs: port new-tab split button to vertical strip (#354)
deblasis Apr 26, 2026
59a6f92
tabs: stack new-tab chevron below primary in vertical mode (#355)
deblasis Apr 26, 2026
c2ee0c8
tabs: unified chrome + orientation-aware chevron on new-tab button (#…
deblasis Apr 26, 2026
00275e7
tabs: theme resources + VSM for new-tab split button orientation (#357)
deblasis Apr 27, 2026
aeaf0f3
termio: utf-8 console handling + force conpty for pwsh ( # 341)
deblasis Apr 27, 2026
5b82180
font: take Library in DirectWrite.init for Discover.init parity
deblasis Apr 27, 2026
9746931
fix: remove stale root ghostty.sln with worktree-prefixed paths (#359)
deblasis Apr 28, 2026
d02a3f6
windows(csproj): fail loud when ghostty.dll missing (#360)
deblasis Apr 28, 2026
0783376
windows(csproj): replace AppIcon scale wildcard with explicit list (#…
deblasis Apr 28, 2026
37047a7
nit: toning down comments verbosity and slop (#363)
deblasis Apr 28, 2026
283032d
feat(libghostty): add ghostty_build_info FFI export (#362)
deblasis Apr 28, 2026
d92dbad
feat(core): add VersionRenderer and BuildInfo for wintty +version (#364)
deblasis Apr 28, 2026
e0e604b
feat(host): wintty +version action and Version palette dialog (#365)
deblasis Apr 28, 2026
ce39631
feat(host): polish Version dialog (app icon + inline URL hyperlink) (…
deblasis Apr 28, 2026
65b5338
termio: document canonical CSI 6 n reply shape (#368)
deblasis May 1, 2026
d49d7f3
Update logo and project name in README
deblasis May 6, 2026
e8ad325
fix(settings): defensive lookup for AttentionValueInfoBadgeStyle (#369)
deblasis May 8, 2026
f418fb3
feat: use glslpp for GLSL→HLSL shadertoy compilation
deblasis May 9, 2026
c5eb2da
docs: update shader comments to reference glslpp instead of shader_wr…
deblasis May 9, 2026
c78a7df
cleanup: remove shader_wrapper.dll infrastructure, update comments
deblasis May 10, 2026
3362e47
justfile: add ci recipe, remove shader_wrapper references, fix deploy…
deblasis May 10, 2026
bf4a6a9
tool: add HLSL comparison tool (spirv-cross vs glslpp)
deblasis May 10, 2026
2d806ed
refactor: use glslpp for all shader target paths (HLSL/MSL/GLSL)
deblasis May 11, 2026
7cb573a
Remove glslang+spirv-cross dependencies, use glslpp exclusively
deblasis May 11, 2026
cf84572
Remove pkg/glslang and pkg/spirv-cross directories
deblasis May 11, 2026
f133b29
Fix pre-existing test failures
deblasis May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These are supported funding model platforms

github: [deblasis]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: deblasis
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: deblasis.eth
1 change: 1 addition & 0 deletions .github/workflows/clean-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
workflow_dispatch:
jobs:
remove-old-artifacts:
if: github.repository == 'ghostty-org/ghostty'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/dispatch-release-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Fires a repository_dispatch at deblasis/wintty-release on windows-branch pushes.

name: dispatch-release-bump

on:
push:
branches: [windows]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

permissions: {}

jobs:
dispatch:
if: vars.ENABLE_WINTTY_RELEASE_DISPATCH == 'true'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Dispatch wintty-windows-head to deblasis/wintty-release
env:
GH_TOKEN: ${{ secrets.WINTTY_RELEASE_DISPATCH_PAT }}
COMMIT_SUBJECT: ${{ github.event.head_commit.message }}
run: |
gh api /repos/deblasis/wintty-release/dispatches \
-f event_type=wintty-windows-head \
-f "client_payload[sha]=${{ github.sha }}" \
-f "client_payload[source_repo]=deblasis/wintty" \
-f "client_payload[ref]=${{ github.ref }}" \
-f "client_payload[subject]=$COMMIT_SUBJECT"
2 changes: 1 addition & 1 deletion .github/workflows/milestone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
update-milestone:
# Ignore bot-authored pull requests (dependabot, app bots, etc)
# and CI-only PRs.
if: github.event_name == 'issues' || (github.event.pull_request.user.type != 'Bot' && !startsWith(github.event.pull_request.title, 'ci:'))
if: github.repository == 'ghostty-org/ghostty' && (github.event_name == 'issues' || (github.event.pull_request.user.type != 'Bot' && !startsWith(github.event.pull_request.title, 'ci:')))
runs-on: namespace-profile-ghostty-sm
name: Milestone Update
steps:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/publish-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ concurrency:

jobs:
setup:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-sm
outputs:
version: ${{ steps.extract_version.outputs.version }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ concurrency:

jobs:
setup:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-sm
outputs:
version: ${{ steps.extract_version.outputs.version }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/snap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ name: Snap

jobs:
build:
if: github.repository == 'ghostty-org/ghostty'
strategy:
fail-fast: false
matrix:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ jobs:

required:
name: "Required Checks: Test"
if: always()
if: always() && github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
needs:
- skip
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/trigger-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# On tag push (v*), fires a repository_dispatch at deblasis/wintty-release so
# the private release repo can build, pack, and upload without R2 or signing
# credentials living in this public repo.
#
# Dormant until vars.ENABLE_WINTTY_RELEASE_DISPATCH == 'true', so it stays
# quiet before the private repo + dispatch PAT are provisioned.

name: trigger-release

on:
push:
tags:
- 'v*'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

jobs:
dispatch:
if: vars.ENABLE_WINTTY_RELEASE_DISPATCH == 'true'
runs-on: ubuntu-latest
steps:
- name: Derive channel from ref
id: chan
shell: bash
run: |
case "${{ github.ref }}" in
refs/tags/v*) echo "channel=stable" >> "$GITHUB_OUTPUT" ;;
*) echo "channel=tip" >> "$GITHUB_OUTPUT" ;;
esac

- name: Dispatch release event to deblasis/wintty-release
env:
GH_TOKEN: ${{ secrets.WINTTY_RELEASE_DISPATCH_PAT }}
run: |
gh api /repos/deblasis/wintty-release/dispatches \
-f event_type=release \
-f "client_payload[channel]=${{ steps.chan.outputs.channel }}" \
-f "client_payload[ref]=${{ github.ref }}"
1 change: 1 addition & 0 deletions .github/workflows/vouch-check-issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ name: "Vouch - Check Issue"

jobs:
check:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
steps:
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vouch-check-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ name: "Vouch - Check PR"

jobs:
check:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
steps:
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vouch-manage-by-discussion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ concurrency:

jobs:
manage:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
steps:
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vouch-manage-by-issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ concurrency:

jobs:
manage:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
steps:
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vouch-sync-codeowners.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ concurrency:

jobs:
sync:
if: github.repository == 'ghostty-org/ghostty'
runs-on: namespace-profile-ghostty-xsm
steps:
- uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
Expand Down
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@
*.log
.DS_Store
.vscode/
.vs/

# .NET build output (scoped to known .NET project roots to avoid
# masking Zig build paths). windows/ is the WinUI 3 shell; dist/windows/
# is the IconGen build tool and its tests.
windows/**/bin/
windows/**/obj/
dist/windows/**/bin/
dist/windows/**/obj/
# MSBuild binary log, created by `dotnet build -bl` and some Visual
# Studio workflows. Never something we want committed.
*.binlog
.direnv/
.envrc.local
.flatpak-builder/
Expand All @@ -29,3 +41,12 @@ glad.zip

vgcore.*

# MSVC build outputs for glslang shader wrapper (regenerated by build_msvc.bat)
pkg/glslang/glslang_dll/
pkg/glslang/msvc_build/
pkg/glslang/msvc_build_md/

# IconGen preview output from `just branding-preview`
/dist/windows/preview/

zig-pkg/
1 change: 1 addition & 0 deletions .zig-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.15.2
120 changes: 118 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<!-- LOGO -->
<h1>
<p align="center">
<img src="https://github.com/user-attachments/assets/fe853809-ba8b-400b-83ab-a9a0da25be8a" alt="Logo" width="128">
<br>Ghostty
<img src="https://github.com/user-attachments/assets/eed9e6f8-dfc5-4e29-b3bb-53ca39cf6aeb" alt="Logo" width="128" />
<br><a href="https://wintty.io?utm_source=gh_readme">Wintty</a>
</p>
</h1>
<p align="center">
Fast, native, feature-rich terminal emulator pushing modern features.
Expand All @@ -21,6 +22,121 @@
</p>
</p>

> [!IMPORTANT]
> ## Wintty (Ghostty R&D Soft Fork)
>
> <p align="center">🍬🍴</p>
>
> This is a soft fork focused on bringing Ghostty to Windows.
> The `windows` branch is the default and contains all Windows-specific work
> rebased on top of upstream `main`, which is synced daily.
>
> **Status:** DX12 renderer in progress, WinUI 3 shell with tabs, splits, jump list, taskbar progress, and runtime layout switch landed
>
> **MVWT** Minimum Viewable Windows Terminal
> `[█████████████████▌░░] 88%`
>
> **MVT** Moonshot Viable Terminal ([#26](https://github.com/deblasis/ghostty/issues/26))
> `[░░░░░░░░░░░░░░░░░░░░] 0%`
>
> The Windows app is a native C# GUI wrapping `libghostty.dll`, same architecture
> as macOS where Swift wraps `libghostty`. All terminal emulation stays in Zig.
> The C# layer handles windowing, input, and platform integration via P/Invoke.
> The renderer uses DirectX 12 with DXGI swap chains and DirectComposition.
>
> ### Building
>
> Prerequisites: [Zig](https://ziglang.org/) (version in `build.zig.zon`), [Just](https://github.com/casey/just)
>
> ```bash
> just # Run tests + build DLL
> just test # Run all Zig tests
> just test-lib-vt # Fast: test libghostty-vt only
> just build-dll # Build libghostty.dll
> just sync # Rebase on latest upstream
> ```
>
> See [docs/windows/tooling.md](docs/windows/tooling.md) for why Just and how CI (I should call it DisContinous Integration) works.
>
> ### Branching Model
>
> - `main` - mirror of upstream `ghostty-org/ghostty`, synced daily, if it's a good day
> - `windows` (default) - all Windows work rebased on upstream
> - Feature branches - branch off `windows`, PR back into `windows`
>
> ### What is done
>
> **Build infrastructure** (17 PRs merged upstream)
>
> - [x] `zig build test` passing on Windows (2604 tests, 53 skipped)
> - [x] All shared dependencies building (FreeType, HarfBuzz, zlib, oniguruma, glslang, etc.)
> - [x] `zig build test-lib-vt` passing on all platforms
> - [x] Windows CI running without `continue-on-error`
> - [x] Backslash path handling in config parsing
> - [x] CRLF line ending fix for comptime parsing + `.gitattributes` normalization
> - [x] `ghostty.dll` building on Windows (CRT init fix for MSVC DLL mode)
> - [x] DLL init regression test and build instructions
> - [x] Full Windows CI test suite
>
> **DX12 renderer infrastructure** (in fork, in progress)
>
> - [x] DXGI bindings (adapters, factories, swap chains -- carried from DX11)
> - [x] DirectComposition bindings (DWM composition -- carried from DX11)
> - [x] COM helpers and test infrastructure (carried from DX11)
> - [x] HLSL shaders (5 pipelines, SM 6.0 via dxc.exe)
> - [x] D3D12 COM interface bindings
> - [x] DX12 device lifecycle (command queue, fence, descriptor heaps)
> - [x] DX12 render pipeline (PSOs, root signatures, command lists)
> - [x] DX12 GPU primitives (upload heap buffers, textures, samplers)
> - [x] Backend enum with `directx12` variant
>
> **SwapChainPanel spike** (in fork, [demo video](https://www.youtube.com/watch?v=-Cn9mlxX_GA))
>
> - [x] DX11 swap chain created from Zig, bound to WinUI 3 SwapChainPanel
> - [x] Instanced cell grid rendering, bitmap font, animated demo scenes, resize, DPI
>
> **App scaffold** (in fork)
>
> - [x] C# WinUI 3 project scaffold (`windows/Ghostty/`)
> - [x] P/Invoke bindings for libghostty C API
> - [x] `--version` flag working from command line
> - [x] Interop test suite (7 tests against the real DLL)
>
> ### Architecture: Surface Modes
>
> The DX12 renderer supports three surface modes at the library level so that
> libghostty consumers can pick whichever model fits their host:
> - **HWND** -- `CreateSwapChainForHwnd` via DXGI, for standalone windows, test harnesses, and third-party embedders
> - **SwapChainPanel** (composition) -- `CreateSwapChainForComposition` via DXGI, for WinUI 3 / XAML hosts
> - **Shared texture** -- renders to a standalone `ID3D12Resource` (texture) with a DXGI shared handle, for game engines, custom renderers, and offscreen scenarios
>
> The device picks the path based on what the caller provides. No compile-time flags.
>
> ### What is next
>
> **Feature parity** (later)
>
> - [ ] Multi-window, tabs, splits
> - [ ] Native settings UI, desktop notifications
> - [ ] Quick terminal, command palette, global keybinds
> - [ ] Installer packages (MSI, MSIX, winget), auto-update
>
> ### .NET Examples
>
> .NET-specific examples live in [deblasis/libghostty-dotnet](https://github.com/deblasis/libghostty-dotnet),
> separate from the `example/` directory in this repo which is for C and Zig.
> These examples help surface friction points, bugs, and integration gaps
> from the perspective of a .NET consumer of libghostty.
>
> ### History
>
> This fork started as an upstream contribution effort. 17 PRs were merged
> into ghostty-org/ghostty covering build fixes, CI, and DLL infrastructure.
> The project continues as a soft fork - upstream doesn't have capacity to
> maintain Windows-specific changes right now, so here we are.
> GitHub Actions are disabled for this fork because we are poor and just.
> I mean, we use `just` for insanity checks.

## About

Ghostty is a terminal emulator that differentiates itself by being
Expand Down
10 changes: 8 additions & 2 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,14 @@ pub fn build(b: *std.Build) !void {
if (!config.target.result.os.tag.isDarwin()) {
lib_shared.installHeader(); // Only need one header
if (config.target.result.os.tag == .windows) {
lib_shared.install("ghostty-internal.dll");
lib_static.install("ghostty-internal-static.lib");
lib_shared.install("ghostty.dll");
if (lib_shared.implib) |implib| {
b.getInstallStep().dependOn(&b.addInstallLibFile(
implib,
"ghostty.lib",
).step);
}
lib_static.install("ghostty-static.lib");
} else {
lib_shared.install("ghostty-internal.so");
lib_static.install("ghostty-internal.a");
Expand Down
3 changes: 1 addition & 2 deletions build.zig.zon
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@
.zlib = .{ .path = "./pkg/zlib", .lazy = true },

// Shader translation
.glslang = .{ .path = "./pkg/glslang", .lazy = true },
.spirv_cross = .{ .path = "./pkg/spirv-cross", .lazy = true },
.glslpp = .{ .path = "../glslpp" },

// Wayland
.wayland = .{
Expand Down
Loading