Skip to content

i18n: update pt_BR translations#10635

Merged
00-kat merged 6 commits intoghostty-org:mainfrom
guilhermetk:i18n-pt-br
Mar 2, 2026
Merged

i18n: update pt_BR translations#10635
00-kat merged 6 commits intoghostty-org:mainfrom
guilhermetk:i18n-pt-br

Conversation

@guilhermetk
Copy link
Contributor

Add missing pt_BR translations reported in #10632 for version 1.3

@trag1c trag1c added the translations Translations of the Ghostty app label Feb 9, 2026
@trag1c trag1c requested a review from a team February 9, 2026 19:38
@00-kat
Copy link
Contributor

00-kat commented Feb 18, 2026

Three new strings have been merged since you opened this PR:

  • "Change Tab Title…" (used in the context menu)
  • "Change Tab Title" (used as the title of the dialog box that opens when the action is triggered)
  • "Open in Ghostty" (shown in GNOME Files' context menu)

Please merge/rebase this PR and also translate them, thank you! I've written up more information at #10632 (comment).

@00-kat
Copy link
Contributor

00-kat commented Feb 24, 2026

cc @silveirapf: not sure if you missed it, but this PR is currently awaiting a review from you.

@00-kat
Copy link
Contributor

00-kat commented Feb 28, 2026

P.S.: there's a new conflict via #10976 and #11073: po/pt_BR.UTF-8.po was renamed to po/pt_BR.po.

@00-kat 00-kat merged commit 533ad9e into ghostty-org:main Mar 2, 2026
63 checks passed
@github-actions github-actions bot added this to the 1.3.0 milestone Mar 2, 2026
@guilhermetk guilhermetk deleted the i18n-pt-br branch March 2, 2026 14:21
lawrencecchen added a commit to manaflow-ai/ghostty that referenced this pull request Mar 4, 2026
* macOS: remove dead tab title edit helper

* macos: extract inline title editing to standalone file

* macos: rename to TabTitleEditor

* Update VOUCHED list (ghostty-org#10968)

Triggered by
[comment](ghostty-org#9932 (comment))
from @mitchellh.

Vouch: @MrMage

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: add AGENTS.md

* ci: enable macOS caching (Zig, Xcode)

Namespace now supports cache volumes on macOS. 

This enables caching for Zig and Xcode artifacts. We can't do Nix yet because 
we can't create `/nix` and there's a chicken/egg with how Nix installation 
works on macOS. I'm emailing Namespace support about it... But still, a big 
win for Zig and Xcode!

* Update VOUCHED list (ghostty-org#10970)

Triggered by
[comment](ghostty-org#10767 (comment))
from @mitchellh.

Unvouch: @prsweet

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Make top visual space for surface drag handles

* Only show drag handle on hovered surface

* Refine spacing and header usage

This is 4pt header space, 12pt clickable frame height

* Remove the top padding for macOS grab bar

* renderer: added cursor style and visibility uniforms

Specifically:
iCurrentCursorStyle
iPreviousCursorStyle
iCurrentCursorVisible
iPreviousCursorVisible

Visibility calculated and updated independently from the typical cursor
unifrom updates to preserve cursor style even when not in the viewport
or set to be hidden

* Update VOUCHED list (ghostty-org#10971)

Triggered by [discussion
comment](ghostty-org#10942) from
@mitchellh.

Vouch: @aalhendi

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#10972)

Triggered by [discussion
comment](ghostty-org#10801) from
@mitchellh.

Vouch: @curtismoncoq

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* build(deps): bump namespacelabs/nscloud-setup from 0.0.10 to 0.0.11

Bumps [namespacelabs/nscloud-setup](https://github.com/namespacelabs/nscloud-setup) from 0.0.10 to 0.0.11.
- [Release notes](https://github.com/namespacelabs/nscloud-setup/releases)
- [Commits](namespacelabs/nscloud-setup@d1c6257...f378676)

---
updated-dependencies:
- dependency-name: namespacelabs/nscloud-setup
  dependency-version: 0.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* ci: update vouch to 1.4.1

* ci: point xcode to the mounted cache path by Namespace

* macOS: use `NSDockTilePlugIn` to update app icons

* macOS: stop cycling icons when AboutWindow is closed

and start cycling with current icon

* moving lots of files, removing unused stuff

* macos: rename a bunch of files

* i18n: Updated mk translations with new strings

* macOS: update AppIcon encoding

- make `ColorizedGhosttyIcon` codable
- remove deprecated string encoding introduced in tip

* ci: fix linting and delete non-useful tests

* gtk: clean up title renaming and fix a small leak

* update vouch to 1.4.2

* Update VOUCHED list (ghostty-org#10996)

Triggered by [discussion
comment](ghostty-org#10981 (comment))
from @mitchellh.

Vouch: @Koranir

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: move icon codable/equatable to extension

* macos: icon tests

* macos: various dock tile cleanups

* ci: codesign DockTilePlugin

* macOS: fix crash when adding tab from tab overview

* Update VOUCHED list (ghostty-org#11007)

Triggered by [discussion
comment](ghostty-org#11006 (comment))
from @jcollie.

Vouch: @nmggithub

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#11012)

Triggered by
[comment](ghostty-org#11010 (comment))
from @jcollie.

Vouch: @douglance

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: just some textual cleanup

* Remove ObjCExceptionCatcher from iOS target

* update comments

* Update VOUCHED list (ghostty-org#11021)

Triggered by [discussion
comment](ghostty-org#11014 (comment))
from @mitchellh.

Vouch: @amadeus

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: pass last focused surface as env, use for focus detection 

Fixes ghostty-org#10935

This is a more robust way to detect "is my surface focused" because that
question usually means "is my surface the last focused surface" if a
_different_ surface is not focused. We already have used this pattern
all over but we should extend it to SwiftUI too.

* apprt/gtk: fix SIGSEGV on ImGui GLArea re-realize

Fixes ghostty-org#10406

ImGui_ImplOpenGL3_Shutdown() calls imgl3wShutdown() which dlcloses the
GL library handles but does not zero out the imgl3w function pointer
table (imgl3wProcs). When a GLArea is re-realized (e.g. during
reparenting), ImGui_ImplOpenGL3_Init() calls ImGui_ImplOpenGL3_InitLoader()
which checks "if (glGetIntegerv == nullptr)". Since the stale pointers
are non-null, it skips re-initialization. The next GL call through a
dangling function pointer causes a SIGSEGV.

Fix this by introducing ImGui_ImplOpenGL3_ShutdownWithLoaderCleanup()
which calls the normal shutdown and then zeroes the imgl3wProcs table,
forcing the next Init to reload GL function pointers via imgl3wInit().

Also properly destroy the ImGui context and reset widget state in
glAreaUnrealize so re-realize starts clean. This was extra but was
probably leaking memory.

* macos: add Weak to iOS build

* Fix Palette.C array size typo: [265] → [256]

The C struct Palette.C declared colors as [265]Color.C, but the
terminal palette is 256 colors (terminal.color.Palette = [256]RGB)
and the C header ghostty_config_palette_s correctly uses colors[256].

The mismatch causes ghostty_config_get to write 265×3 = 795 bytes
through a pointer sized for 256×3 = 768 bytes, producing a 27-byte
buffer overflow. On macOS Release builds with stack protector enabled,
this triggers __stack_chk_fail → SIGABRT on launch.

* Update VOUCHED list (ghostty-org#11028)

Triggered by
[comment](ghostty-org#11027 (comment))
from @jcollie.

Vouch: @markhuot

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: fix glass tinting when theme changes

* zsh: fix ssh-terminfo shell integration to not interpret escape characters

* pkg/dcimgui: only add the OpenGL3 shutdown helper if backend enabled

* Update VOUCHED list (ghostty-org#11032)

Triggered by [discussion
comment](ghostty-org#11031 (comment))
from @mitchellh.

Vouch: @mihi314

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macos: style changes

* apprt: show title override in command palette jump commands

* Update macos/Sources/Features/Command Palette/TerminalCommandPalette.swift

Co-authored-by: Lukas <134181853+bo2themax@users.noreply.github.com>

* fix: restore terminalTitle variable removed in previous edit

* apprt/gtk: use new get effective title

* macos: update to Sparkle 2.9

* macos: update AGENTS.md

* macos: use combine to coalesce bell values

* macos: try to clean up Appdelegate combine mess

* macos: further simplication of AppDelegate bell state

* macos: clean up badge request state

* macos: lint

* macos: show the notification count number in the badge

* build: don't build OpenGL support into imgui on iOS

* i18n: add missing nb_NO strings

* i18n: rename `.po` files

This seems to be the defacto standard for naming `.po` files. See the
GTK source code [1] as an example. I was unable to find any definitive
documentation on the naming.

Replaces: ghostty-org#10905

[1] https://gitlab.gnome.org/GNOME/gtk/-/tree/main/po?ref_type=heads

* macos: implement notify on command finish

* macos: refactor command finish notification duration handling

* macos: command finished notifications always show up

* core: parse cmdline and cmdline_url semantic prompt options

* Update `language` config option's documentation.

Follow-up to ghostty-org#10976.

* build(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v6...bbbca2d)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/download-artifact from 7.0.0 to 8.0.0

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@37930b1...70fc10c)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Correct “i.e. de, es, and fr” to use “e.g”.

That isn't a rephrasing of “language codes”, but rather lists examples.

* Document common mistakes in translations.

trag1c or I point these out manually whenever we see them, but they're
extremely common and probably deserve being explicitly documented.

“Style Guide” was made sentence case because no other title is in title
case.

Before anyone comments: I use “full stop” instead of “period” because
the Unicode Character Database uses “full stop” instead of “period”, and
I avoid “dot” because Unicode has a plethora of dots.

* Elaborate on viewing translations.

Documenting `--language` was suggested by @Filip7 in
ghostty-org#10976 (comment)

* Prefer present over future tense in translators' guide.

* Document localization teams.

* macos: DockTilePlugin finds app bundle via `.app` suffix

Fixes ghostty-org#11029 (probably)

If you renamed the app bundle, the prior check would infinite loop due
to the combination of two bugs: invalid termination checks and
hardcoding "Ghostty.app"

* macos: workaround for TabTitleEditor alignment issue

* Update VOUCHED list (ghostty-org#11055)

Triggered by [discussion
comment](ghostty-org#11053 (comment))
from @jcollie.

Vouch: @icodesign

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* build: test that `ghostty.h` compiles during a normal `zig build test`

* core: add tests for `ghostty.h`

* ensure that `ghostty.h` compiles during basic Zig tests
* ensure that non-exhaustive enums are kept synchronized between
  `ghostty.h` and their respective Zig counterpart.
* adjust some enums that varied from established conventions

* feat(vt): Parse UAPI OSC 3008 hierarchical context signalling

Implements parsing for OSC 3008, which allows terminal emulators to keep track of the stack of processes that have current control over the tty. The implementation mirrors existing `semantic_prompt.zig` architecture and natively maps UAPI definitions to Zig structures with lazy evaluation for optional metadata.

Fixes ghostty-org#10900

* Update VOUCHED list (ghostty-org#11058)

Triggered by
[comment](ghostty-org#11057 (comment))
from @mitchellh.

Vouch: @Prakhar54-byte

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* testing: use std.Build.TranslateC instead of @cImport

* minor moving stuff

* refactor: apply PR feedback

- Use `std.meta.stringToEnum` in ContextType and ExitStatus
- Ensure `parseInt` only accepts digits for pids
- Use `@tagName` for string representation in Field
- Rename `fields_raw` to `metadata`
- Rename `readField` to `readOption`

* Update VOUCHED list (ghostty-org#11062)

Triggered by [discussion
comment](ghostty-org#11061 (comment))
from @mitchellh.

Vouch: @adrum

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(macOS): filter phantom mouse events that defeat mouse-hide-while-typing

On macOS, TUI apps like Zellij that frequently update the window title
cause phantom mouse-move events to be generated at the same coordinates.
These phantom events reach cursorPosCallback in the core, which calls
showMouse() and explicitly unhides the cursor via
NSCursor.setHiddenUntilMouseMoves(false), defeating the
mouse-hide-while-typing feature.

This ports the same position-equality check already present in the GTK
runtime (added in PR ghostty-org#4973 for issue ghostty-org#3345) to the embedded runtime used
by macOS. If the cursor position hasn't changed by more than 1px, the
event is discarded.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: simplify Enum parse call and loop parsing logic

* Update VOUCHED list (ghostty-org#11065)

Triggered by
[comment](ghostty-org#11064 (comment))
from @mitchellh.

Vouch: @linustalacko

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* macOS: refine window tint for liquid glass (ghostty-org#11018)

Depends on ghostty-org#11030

- Update constraints of `TerminalGlassView`
- Use `TerminalViewContainer.DerivedConfig` to map styling properties
- Add TerminalViewContainerTests
- Instead of using delay, now the view updates are explicitly called by
window controllers

* config: disable palette-generate by default

Following the discussion at ghostty-org#10852, I believe this is the right default.
I'm willing to continue to revisit this decisions, but Ghostty 1.3 is
around the corner and I don't think such a change like this should be
pushed into it.

I think palette generation is best left as a _theme author_ tool. A
Ghostty color theme could include `palette-generate=true` if it wants
to customize the 256-color palette more easily. Of course, end users can
as well anytime.

Another part of my reasoning is that TUI programs who want this behavior
can already achieve it themselves by mixing dark/light theme detection
via CSI 996 (https://contour-terminal.org/vt-extensions/color-palette-update-notifications/)
with OSC 4/10/11 color query and change sequences, both of which are
decently supported in the terminal ecosystem and fully supported in
Ghostty.

I'm also open to considering some kind of new sequence to make this
easier for TUIs (probably a mode) where they can opt-in to palette
generation plus "harmonius" palettes (see `palette-harmonius`) and
Ghostty does it on demand then. I think that'd solve the legacy vs new
TUI argument where legacy programs can continue to make assumptions
about the palette and new programs can opt-in to a more dynamic palette
without having to do a lot of work themselves.

* Remove duplicate word in README_TRANSLATORS § CODEOWNERS.

* Improve word grouping w.r.t. localization team names.

“always include a language and a country code” reads as “always include
a language, and also always include a country code”, while the intended
meaning was that it includes both a language *code* and a country code.

* Elaborate on X-Generator removal.

That line was intended to guide those who do not normally edit po files
with a plain text editor, but ended up sounding like it states the
obvious (“to do X, do X”) before this change.

* macos: fix window size/position restoration on Cmd+W close

This fixes two overlapping issues regarding window positioning and Cmd+W window closures on macOS:

1. `window-position-x` and `window-position-y` coordinates were being ignored on initial launch because `TerminalWindow.setInitialWindowPosition` depended on the `TerminalController`, which isn't fully attached during `awakeFromNib`. This logic was moved so explicit coordinates are correctly enforced.
2. When closing a window via Cmd+W (leaving the app active), reopening the window would continuously cascade down and to the right rather than restoring to the previous position. It now checks if there are other windows open before cascading.
3. `LastWindowPosition` was updated to save both the frame origin and size (width/height), ensuring that restoring a closed window correctly mimics native AppKit State Restoration size behaviors while honoring explicit configurations.

* fix(macos): extract window cascade logic into helper function

* Update VOUCHED list (ghostty-org#11071)

Triggered by
[comment](ghostty-org#11070 (comment))
from @mitchellh.

Vouch: @abdurrahmanski

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Rename pt.po back to pt_BR.po.

Portugal exists! Wikipedia notes [1] it to be the main other dialect.
There's already a PR for pt_PT support too:
ghostty-org#9078.

It was renamed from pt_BR.UTF-8.po to pt.po in ghostty-org#10976.

[1]: https://en.wikipedia.org/wiki/Portuguese_dialects

* Rename ko.po back to ko_KR.po.

While it was renamed from ko_KR.UTF-8.po to ko.po in ghostty-org#10976, @uhojin,
a Korean locale maintainer, notes [1] that “ko_KR [*South* Korean] makes
more sense in locale context just to avoid any potential confusion
between 한국어 vs 조선어”.

Despite ko_KP (North Korean) not being present in glibc (as of version
2.43), and the ISO639 maintainers expressing disapproval of ko_KP [2],
it is possible opinions may change in the future, and individual
opinions may be contested—disambiguating doesn't hurt.

[1]: ghostty-org#10976 (comment)
[2]: ghostty-org#10976 (comment)

* Update VOUCHED list (ghostty-org#11078)

Triggered by [discussion
comment](ghostty-org#11076 (comment))
from @jcollie.

Vouch: @DiaaEddin

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update macos/Sources/Features/Terminal/TerminalController.swift

apply reviewer suggestion for cascading

Co-authored-by: Lukas <134181853+bo2themax@users.noreply.github.com>

* Remove old "acceptance tests" 

We haven't used or run these in forever (literally like 3+ years).
They're just wasting cognitive space and confuse some users as to what
they're for. Remove them.

* fix(terminal): bounds check params in DCS passthrough entry

When a DCS sequence has more than MAX_PARAMS parameters, entering
dcs_passthrough would write to params[params_idx] without a bounds
check, causing an out-of-bounds access. Drop the entire DCS hook
when params overflow, consistent with how csi_dispatch handles it.

Found by AFL fuzzing.

* test/fuzz-libghostty: basic afl++-based fuzzer for libghostty

* pkg/afl++

* switch to pkg/afl++ for fuzz

* test/fuzz-libghostty: gitignore and initial corpus

* test/fuzz-libghostty: add zig build run

* pkg/afl++: clean up, comments

* pkg/afl++: extract runner

* test/fuzz-libghostty: add README

* Corpus management update

* pkg/afl++: use usize for len

* pkg/afl++: fuzzer takes a file argument

* typos

* pkg/afl++: remove file arg

* Clear key state overlay on "ignore" action

* Update VOUCHED list (ghostty-org#11093)

Triggered by
[comment](ghostty-org#5036 (comment))
from @jcollie.

Vouch: @AlexJuca

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* 🐛 Prevent git log output with signature information

When users have something like

[log]
        showSignature = true

in their .gitconfig files, invocations of the log or show git sub-command
emit additional information about signatures.  This additional output
disturbs the generation of short_hash in GitVersion.zig, the additional text
is copied verbatim into the string and then shown in the CSI >q output.

To fix it always suppress the output of the signature information.  This
has no effects when the setting is disabled anyway.

* docs: clarify if pre-vouching contributors are also required to apply to get vouched before contributing to Ghostty

* chore: add improvements

* fix: format with prettier

* Update VOUCHED list (ghostty-org#11098)

Triggered by
[comment](ghostty-org#11094 (comment))
from @jcollie.

Vouch: @drepper

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#11099)

Triggered by [discussion
comment](ghostty-org#11090 (comment))
from @jcollie.

Vouch: @cespare

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* ci: fix windows CI checkouts with afl-min filenames

* fuzz: replace : with _ for Windows

* ci: test libghostty fuzzer build

* shellcheck

* fuzz: update corpus

* typos: ignore fuzz corpus

* Update CONTRIBUTING.md

Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>

* Update CONTRIBUTING.md

Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>

* Update CONTRIBUTING.md

Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>

* Update CONTRIBUTING.md

Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>

* chore: improve grammer

* Update CONTRIBUTING.md

Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>

* Update VOUCHED list (ghostty-org#11107)

Triggered by [discussion
comment](ghostty-org#11102 (comment))
from @mitchellh.

Vouch: @mischief

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* terminal: fix out-of-bounds access in CSI W handler with no params

CSI ? W (cursor tabulation control) accessed input.params[0] without
first checking that params.len > 0, causing an index out-of-bounds
panic when the sequence had an intermediate but no parameters.

Add a params.len == 1 guard before accessing params[0].

Found by AFL++ fuzzing.

* terminal: insertBlanks should not crash with count 0 and CSI @ clamps [1,)

CSI @ (ICH) with an explicit parameter of 0 should be clamped to 1,
matching xterm behavior. Previously, a zero count reached
Terminal.insertBlanks which called clearCells with an empty slice,
triggering an out-of-bounds panic.

Fix the stream dispatch to clamp 0 to 1 via @max, and add a defensive
guard in insertBlanks for count == 0. Found by AFL++ stream fuzzer.

* fuzz/vt-stream

* Clean up how fuzzers are laid out

* fuzz/stream: clean up

* prettier should ignore various fuzz files

* fix up gitattributes

* fuzz: stream cmin

* terminal: fix panic on CSI g (TBC) with overflowing param

A fuzz crash found that CSI g with a parameter that saturates to
u16 max (65535) causes @enumFromInt to panic when narrowing to
TabClear (enum(u8)). Use std.meta.intToEnum instead, which safely
returns an error for out-of-range values.

* terminal: handle trailing colon in SGR underline parsing

A trailing colon with no following sub-parameter (e.g. "ESC[58:4:m")
leaves the colon separator bit set on the last param without adding
another entry to the params array. When the SGR parser later iterates
to that param (4 = underline) and sees the colon bit, it entered the
colon path which asserted slice.len >= 2, but the slice only had one
element.

Replace the assert with a bounds check that treats the malformed
sequence as a default single underline.

Add a regression test reproducing the crash from AFL++ fuzzing
(afl-out/stream/default/crashes/id:000021).

* Sync CODEOWNERS vouch list (ghostty-org#11114)

Sync CODEOWNERS owners with vouch list.

## Added Users

- @derVedro

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* i18n: update pt_BR translations (ghostty-org#10635)

Add missing pt_BR translations reported in
ghostty-org#10632 for version 1.3

* Update VOUCHED list (ghostty-org#11116)

Triggered by
[comment](ghostty-org#11115 (comment))
from @mitchellh.

Vouch: @markdorison

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* terminal: fix integrity violation printing wide char with hyperlink at right edge

Printing a wide character at the right edge of the screen with an active
hyperlink triggered a page integrity violation (UnwrappedSpacerHead).
printCell wrote the spacer_head to the cell and then called
cursorSetHyperlink, whose internal integrity check observed the
spacer_head before printWrap had a chance to set the row wrap flag.

Fix by setting row.wrap = true before calling printCell for the
spacer_head case, so all integrity checks see a consistent state.
printWrap sets wrap again afterward, which is harmless. Found by AFL++
stream fuzzer.

* fuzz: add replay-crashes.nu to help find crash repros

* fuzz: new stream corpus from 2 hour run

* pin python depds to latest tag

* Update VOUCHED list (ghostty-org#11122)

Triggered by
[comment](ghostty-org#11121 (comment))
from @jcollie.

Vouch: @rhodes-b

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#11123)

Triggered by [discussion
comment](ghostty-org#11118 (comment))
from @pluiedev.

Vouch: @jguthmiller

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* terminal: fix insertBlanks integrity violation with wide char at right margin

insertBlanks checks whether the last source cell being shifted is wide
and clears it to avoid splitting, but it did not check the destination
cells at the right edge of the scroll region. When a wide character
straddles the right scroll margin (head at the margin, spacer_tail just
beyond it), the swap loop displaced the wide head without clearing the
orphaned spacer_tail, causing a page integrity violation
(InvalidSpacerTailLocation).

Fix by checking the cell at the right margin (last destination cell)
before the swap loop and clearing it along with its spacer_tail when it
is wide. 

Found by AFL++ stream fuzzer. ghostty-org#11109

* terminal: fix printCell corrupting previous row when overwriting wide char

printCell, when overwriting a wide cell with a narrow cell at x<=1 and
y>0, unconditionally sets the last cell of the previous row to .narrow.
This is intended to clear a spacer_head left by a wrapped wide char, but
the cell could be a spacer_tail if a wide char fit entirely on the
previous row. Setting a spacer_tail to .narrow orphans the preceding
.wide cell, which later causes an integrity violation in insertBlanks
(assert that the cell after a .wide is .spacer_tail).

Fix by guarding the assignment so it only fires when the previous row's
last cell is actually a .spacer_head. The same fix is applied in both
the .wide and .spacer_tail branches of printCell.

Found by AFL++ stream fuzzer.

* terminal: fix no-reflow resize leaving stale spacer heads

resizeWithoutReflowGrowCols has a fast path that reuses existing page
capacity when growing columns: it simply bumps page.size.cols without
touching cell data. If any row has a spacer_head at the old last column
(from a wide char that did not fit), that cell is no longer at the end
of the now-wider row, causing a page integrity violation.

Fix by checking for spacer_head cells at the old last column before
taking the fast path. If any are found, fall through to the slow path
which handles spacer heads correctly via cloneRowFrom.

Found by AFL++ stream fuzzer. ghostty-org#11109

* terminal: fix insertLines/deleteLines orphaned cells on full clear

When deleteLines or insertLines count >= scroll region height, all rows
go through the clear-only path (no shifting). This path did not call
rowWillBeShifted, leaving orphaned spacer_tail cells when wide characters
straddled the right margin boundary, causing a "spacer tail not following
wide" page integrity violation.

Add rowWillBeShifted before clearCells in the else branch of both
functions.

Found via AFL++ fuzzing. ghostty-org#11109

* terminal: fix insertBlanks orphaned spacer_tail beyond right margin

When insertBlanks clears the entire region from cursor to the right
margin (scroll_amount == 0), a wide character whose head is at the right
margin gets cleared but its spacer_tail just beyond the margin is left
behind, causing a "spacer tail not following wide" page integrity
violation.

Move the right-margin wide-char cleanup from inside the scroll_amount >
0 block to before it, so it runs unconditionally — matching the
rowWillBeShifted pattern of cleaning up boundary-straddling wide chars
up front.

Found via AFL++ fuzzing. ghostty-org#11109

* Update VOUCHED list (ghostty-org#11139)

Triggered by [discussion
comment](ghostty-org#11128 (comment))
from @mitchellh.

Vouch: @noib3

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* address comments

* pkg/afl++: remove @@ from run target since we use in-memory targets

* config: respect cursor-click-to-move for OSC133 click to move

When cursor-click-to-move is set to false, disable all prompt
click-to-move mechanisms including shell-native methods such as OSC 133
cl= (arrow key synthesis) and click_events. 

I forgot to port this config over when we did the OSC133 stuff.

Also update the config documentation to accurately describe the current
behavior.

Fixes ghostty-org#11138

* terminfo: add support for SGR dim

This PR implements the fix discussed in
ghostty-org#11128

* macos: finish editing tab title when the window resigns as key window

* macos: passthrough mouse down event to TabTitleEditor if needed

* macos: passthrough right mouse down event to TabTitleEditor if needed

* macos: hide close button when editing tab title

* fuzz: add OSC parser fuzzer

* macos: use a separated struct to hide and restore tab states

* input: send composed text in kitty keyboard protocol

When the kitty keyboard protocol "report all keys as escape codes" mode
was active, composed/IME text (e.g. from dead keys or compose sequences)
was silently dropped. 

This happened because the composed text is sent within our GTK apprt
with key=unidentified and no unshifted_codepoint, so no kitty entry was
found and the encoder returned without producing any output. The
plain-text fallback was also skipped because report_all bypasses it.

Send composed text as raw UTF-8 when no kitty entry is found, matching
the behavior of Kitty on Linux for me.

Fixes ghostty-org#10049

* build: link to the system FontConfig by default on non-macOS systems

Because of the global shared state that FontConfig maintains, FontConfig
must be linked dynamically to the same system FontConfig shared library
that GTK uses. Ghostty's default has been changed to always link to the
system FontConfig library on non-macOS systems. If that is overridden
(by specifying `-fno-sys=fontconfig` during the build) Ghostty may crash
when trying to locate glyphs that are not available in the default font.

Fixes ghostty-org#10432

* Update VOUCHED list (ghostty-org#11155)

Triggered by
[comment](ghostty-org#11154 (comment))
from @mitchellh.

Vouch: @alaasdk

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update VOUCHED list (ghostty-org#11156)

Triggered by [discussion
comment](ghostty-org#10982 (reply in thread))
from @jcollie.

Vouch: @cmwetherell

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Add OSC 99 notification parser

* macos: reduce transient blank/scaled frames during resize

* macos: keep top-left gravity for stale-frame replay

* macos: restart display link after display ID change

* Add manual termio backend and surface IO API

* Disable terminal reflow on resize for cmux stability

* Add C API for keyboard copy mode selection

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: MiUPa <66132846+MiUPa@users.noreply.github.com>
Co-authored-by: Mitchell Hashimoto <m@mitchellh.com>
Co-authored-by: ghostty-vouch[bot] <262049992+ghostty-vouch[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Martin Emde <me@martinemde.com>
Co-authored-by: ClearAspect <roanmason@live.ca>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jeffrey C. Ollie <jeff@ocjtech.us>
Co-authored-by: Lukas <134181853+bo2themax@users.noreply.github.com>
Co-authored-by: Kat <65649991+00-kat@users.noreply.github.com>
Co-authored-by: Andrej Daskalov <andrej.daskalov@magix.ai>
Co-authored-by: Noah Gregory <noah@wts.dev>
Co-authored-by: Noah Gregory <noahmgregory@gmail.com>
Co-authored-by: markhuot <mark@markhuot.com>
Co-authored-by: Michael Engelhard <engelhard.michael+git@gmail.com>
Co-authored-by: Noah Bernsohn <bernsno@gmail.com>
Co-authored-by: Uzair Aftab <git@uzaaft.me>
Co-authored-by: trag1c <dev@jakubr.me>
Co-authored-by: Joseph Martinsen <joseph@martinsen.com>
Co-authored-by: Prakhar54-byte <162185166+Prakhar54-byte@users.noreply.github.com>
Co-authored-by: linustalacko <83816641+linustalacko@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: A-AKB <abdurrahmanakb@icloud.com>
Co-authored-by: Abdurrahman <96236378+abdurrahmanski@users.noreply.github.com>
Co-authored-by: Caleb Spare <cespare@gmail.com>
Co-authored-by: Ulrich Drepper <github@akkadia.org>
Co-authored-by: Alexandre Antonio Juca <corextechnologies@gmail.com>
Co-authored-by: Guilherme Nandi Tiscoski <github@guilhermetiscoski.com>
Co-authored-by: rhodes-b <59537185+rhodes-b@users.noreply.github.com>
Co-authored-by: Leah Amelia Chen <hi@pluie.me>
Co-authored-by: Riccardo Mazzarini <me@noib3.dev>
kirtangajjar pushed a commit to kirtangajjar/ghostty that referenced this pull request Mar 5, 2026
Add missing pt_BR translations reported in
ghostty-org#10632 for version 1.3

Executed-By: ghostty/polecats/fury
Rig: ghostty
Role: polecats
kirtangajjar pushed a commit to kirtangajjar/ghostty that referenced this pull request Mar 5, 2026
Add missing pt_BR translations reported in
ghostty-org#10632 for version 1.3

Executed-By: ghostty/polecats/radrat
Rig: ghostty
Role: polecats
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

translations Translations of the Ghostty app

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants