Skip to content

chore(deps): replace dgageot/ultraviolet fork with upstream - #4006

Open
Sayt-0 wants to merge 2 commits into
mainfrom
chore/3984-upstream-ultraviolet
Open

chore(deps): replace dgageot/ultraviolet fork with upstream#4006
Sayt-0 wants to merge 2 commits into
mainfrom
chore/3984-upstream-ultraviolet

Conversation

@Sayt-0

@Sayt-0 Sayt-0 commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the frozen dgageot/ultraviolet fork with the already-required official upstream revision
  • add regression coverage for width-ambiguous emoji rendering on truecolor backgrounds across successive TUI frames
  • pin the upstream wcwidth fallback used before Bubble Tea negotiates DEC mode 2027
  • remove the obsolete gomoddirectives replacement exception and refresh module checksums

Issue expectations

Expectation Implementation
Regression coverage before switching TestRendererWideEmojiBackground passes against both the former fork and the upstream revision
macOS and iTerm2 visual check Not run locally because iTerm2 is unavailable; retained as a required pre-merge manual gate
Use official Ultraviolet revision Removed the fork replacement and retained v0.0.0-20260811164956-006e29f97886
Update module metadata Ran go mod tidy; fork checksums were replaced with official upstream checksums
Remove obsolete lint exception Removed Ultraviolet from gomoddirectives.replace-allow-list
Validate Windows behavior Windows test binaries compile locally; native execution remains covered by the blocking Windows CI job
Validate licensing The exact CI go-licenses check command passes in a clean Linux container

Validation

  • task lint
  • task test
  • task build
  • task check-plan-cross
  • GOOS=windows GOARCH=amd64 go test -exec=true ./pkg/tui/...
  • go-licenses check . --allowed_licenses=Apache-2.0,MIT,BSD-3-Clause,BSD-2-Clause --ignore modernc.org/mathutil --ignore github.com/hashicorp/hcl/v2

Closes #3984

@Sayt-0
Sayt-0 requested a review from a team as a code owner August 20, 2026 09:07
@aheritier aheritier added area/deps Dependency updates and version bumps area/tui For features/issues/fixes related to the TUI kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix) labels Aug 20, 2026

@aheritier aheritier left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI is green across all checks (lint, build-and-test, windows-tests, CodeQL, license-check, build-image). No blocking correctness defect found in this change.

Two should-fix points for follow-up (non-blocking):

  • [should-fix] pkg/tui/renderer_wide_emoji_test.go:70-83: the test constructs uv.NewTerminalRenderer directly with hardcoded env (TERM=xterm-256color, COLORTERM=truecolor, CLICOLOR_FORCE=1) and forces truecolor on a bytes.Buffer. That setup doesn't reflect docker-agent's actual production rendering path, so it can pass even if the real integration diverges.
  • [should-fix] The test suite covers ultraviolet's TerminalRenderer/ScreenBuffer directly rather than docker-agent's TUI integration (the bubbletea layer that actually negotiates DEC mode 2027 and drives rendering at runtime). It pins ultraviolet's contract, not docker-agent's use of it.

Optional: ANSI scanner robustness in the same file could use a bit more hardening, but that's a minor/optional nit.

Given this PR changes rendering behavior around wide-emoji/cursor handling, please complete the mandated manual visual validation on macOS + iTerm2 before merging — the automated coverage above doesn't substitute for it.

@Sayt-0
Sayt-0 requested a review from aheritier August 20, 2026 12:43

@aheritier aheritier left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correction to my earlier review here: my statement that "CI is green across all checks (lint, build-and-test, windows-tests, CodeQL, license-check, build-image)" was only accurate for the earlier head 0603228. It is no longer true — please disregard it.

windows-tests is currently red on head e87b70d (run 32370277571 / job 96429008797):

--- FAIL: TestBackgroundAgent_InspectorShowsWorkerContext (2.23s)
    testing.go:1464: TempDir RemoveAll cleanup: unlinkat C:\Users\RUNNER~1\AppData\Local\Temp\TestBackgroundAgent_InspectorShowsWorkerContext975820743\001\data\tui_state.db: The process cannot access the file because it is being used by another process.
FAIL	github.com/docker/docker-agent/e2e/tui	42.183s

One-line summary: the e2e TUI test leaves the tui_state.db SQLite handle open, so t.TempDir cleanup cannot unlink it on Windows.

Attribution — this does not look caused by your diff: newBackgroundAgentTUI (e2e/tui/background_agent_test.go:125-172) calls tui.New(...), which opens the state store at pkg/tui/service/tuistate/store.go:21 under the isolated t.TempDir() data dir, and never closes it. pkg/tui/session_load_click_test.go:100-105 already registers t.Cleanup(m.cleanupManagedResources) for exactly this reason (added in 24fa4d7, "fix: close Windows test resources"); the e2e helper never got the same treatment, and that file predates this PR (18637507, present in base ed11732). Your diff only touches .golangci.yml, go.mod, go.sum and the new pkg/tui/renderer_wide_emoji_test.go, and the same code passed windows-tests on 0603228 — so this reads as a pre-existing latent flake, not a regression from this change.

That said, merge must still wait for a green windows-tests on the head SHA: please rerun the job, and if it reproduces, the missing store close should be fixed first (a separate PR is fine).

Also still outstanding from my earlier review: the manual visual validation on macOS + iTerm2 is required before merge — the automated coverage in this PR does not substitute for it.

@aheritier aheritier added the status/needs-signed-commits Some commits in the PR are signed with a valid SSH/GPG key label Aug 21, 2026
@aheritier

Copy link
Copy Markdown
Collaborator

👋 Some commits in this PR are not signed and verified by GitHub. Please sign your commits with a GPG or SSH key registered in your GitHub account, then force-push.

Commits that are not verified: 0603228, e87b70d

See GitHub's guide on signing commits for setup instructions. I've added status/needs-signed-commits; it will be removed automatically once every commit in this PR carries a valid GitHub-verified signature.

@aheritier aheritier removed the status/needs-signed-commits Some commits in the PR are signed with a valid SSH/GPG key label Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/deps Dependency updates and version bumps area/tui For features/issues/fixes related to the TUI kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(deps): replace dgageot/ultraviolet fork with upstream

2 participants