Skip to content

fix(native): unfold dropped and attached file paths - #829

Merged
omartelo merged 1 commit into
mainfrom
fix/native-paste-unfold-gaps
Oct 19, 2026
Merged

omartelo merged 1 commit into
mainfrom
fix/native-paste-unfold-gaps

Conversation

@omartelo

Copy link
Copy Markdown
Collaborator

Follow-up to #827.

Problem

Paths dropped on a session or attached from its footer were the two native pastes left out of #827: they were written straight into the PTY, so a drop of enough files for Claude Code (over 800 characters) or Kiro CLI to fold still landed as a chip with Unfold long pastes on.

Change

  • dropFiles and attachFile write through terminals.writePaste. The footer gets it as a field set in main.go, and attachFile takes the write instead of calling Client.Write itself (its two tests pass c.Write, a signature change only).
  • docs/ceilings.md: drops and attachments leave the "never unfolded" list. The remaining ceiling (a session whose terminal the window never opened has no height to measure) stays, with why no caller reaches it today: each writes into the session on screen, or waits for a session it just opened to reach its prompt, which only happens after the window started its terminal.
  • CHANGELOG.md: folded into the fix(native): unfold long pastes for Claude Code and Kiro CLI #827 entry, still unreleased.

Verification

  • New TestDropOfManyFilesUnfoldsInClaudeCode fails before the fix (drop written once) and passes after.
  • native/: gofmt -l ., go vet ./..., go test ./... clean.
  • Not checked in a real window.

Paths dropped on a session or attached from its footer were written
straight into the PTY, so a drop long enough for Claude Code or Kiro CLI
to fold still landed as a chip with Unfold long pastes on. Both now go
through terminals.writePaste like every other paste the window writes.
@omartelo
omartelo merged commit 88aac13 into main Oct 19, 2026
8 of 9 checks passed
@omartelo
omartelo deleted the fix/native-paste-unfold-gaps branch October 19, 2026 13:36
omartelo added a commit that referenced this pull request Oct 19, 2026
TestSubprocessBudgetOutlivesAGrandchild left its grandchild, a re-run of
project.test, asleep for ten seconds past the test. A package that finished
sooner left it running the binary go test then deletes, which Windows refuses:
"go: unlinkat ...\\project.test.exe: Access is denied" (os-tests on #829,
run 39256549322). The grandchild now holds the pipe until the test's cleanup
releases it, and the cleanup waits for it to exit.

Measured by running the two TestSubprocess tests 20 times and checking for a
project.test process right after each run: 20/20 left one before, 0/20 after.
omartelo added a commit that referenced this pull request Oct 19, 2026
…ws and macOS (#828)

* fix(native): open the code and diff views without fontconfig on Windows and macOS

godemirror resolves a family name only through fc-match, which Windows and
macOS do not ship, so the native window exited at startup there. Build the
views from the files fonts.Locate picks on those systems instead.

native.yml now runs the native tests on a real Windows runner and opens the
window once against a backend, as the macOS job does.

* fix(native): draw COLR emoji in color on Windows

Segoe UI Emoji stores its glyphs as COLR layers, not the PNG bitmaps
(CBDT, sbix) the terminal's rasterizer drew, so emoji came out as plain
outlines on Windows. Draw COLR version 0 layers and version 1 paint graphs:
solid and gradient fills, transforms, glyph clips and composite modes.

The Windows smoke now runs even when the native tests fail.

* test(native): read the monospace face as a collection in the COLR painter test

macOS's Menlo is a .ttc, which ParseTTF refuses.

* test(project): keep git's detached maintenance out of the repository template

Since git 2.46 a commit starts `git maintenance run --auto --detach`, which
outlives it holding objects/maintenance.lock. initRepo copying the template
right after listed the lock and failed to open it once it was gone:
"copy repository template: open .git/objects/maintenance.lock: no such file
or directory". Measured with the template's build-then-copy under two CPUs
of contention: 3 failures in 4800 before, 0 in 4800 with maintenance.auto
off, and the commit no longer spawns maintenance at all.

* test(project): release the waitdelay grandchild before the test ends

TestSubprocessBudgetOutlivesAGrandchild left its grandchild, a re-run of
project.test, asleep for ten seconds past the test. A package that finished
sooner left it running the binary go test then deletes, which Windows refuses:
"go: unlinkat ...\\project.test.exe: Access is denied" (os-tests on #829,
run 39256549322). The grandchild now holds the pipe until the test's cleanup
releases it, and the cleanup waits for it to exit.

Measured by running the two TestSubprocess tests 20 times and checking for a
project.test process right after each run: 20/20 left one before, 0/20 after.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant