Skip to content

Merge production LUI extensions with upstream 0.8.3 - #20

Merged
tiensonqin merged 54 commits into
mainfrom
sync/upstream-20261107-production
Nov 7, 2026
Merged

tiensonqin merged 54 commits into
mainfrom
sync/upstream-20261107-production

Conversation

@tiensonqin

@tiensonqin tiensonqin commented Nov 7, 2026 •

Copy link
Copy Markdown

Summary

  • Merge production 006f3ca14660 with upstream 1db4e93bd48e, preserving both parents and the upstream Windows capture, raw-key, IME, layout and text-engine improvements.
  • Retain the existing LUI committed-frame/handle geometry, input capture/cancellation, controlled text input, native menu and cancellable-dialog contracts. Keep rune/window-DIP CommittedTextLine separate from upstream UTF-16/layout-local TextLine; preserve the actual three-value ScrollOffset API and single upstream z-order engine.
  • Reconcile content zoom, accessibility-role mapping, printable-key consumption, typed composition rollback, lazy menu icons and exactly-once release/menu/dialog completion. Logseq/LUI dependency pins and user data are unchanged.

Why the diff is this size

This brings the existing production patch line into fork main; it is not another upstream sync or 5,510 lines of newly authored application logic. The old production patch already changed 101 files (+4,904/−249). Of this PR's 54 commits, 49 are inherited production history, followed by the genuine merge and four additive fixes.

Relative to upstream/main at 1db4e93b, final 4e17292d changes 106 files (+5,510/−627):

Category Files Added Removed
SDK source/configuration 70 2,536 328
Tests and test-only support 30 2,161 18
Documentation 4 505 4
Generated API inventories/wrappers 2 308 277

28 changed files are byte-identical to the old production tree. Most migration-inventory churn is formatting: ignoring whitespace, internal/uimigrate/uiapi.go adds only 17 existing exported API entries. Post-merge fixes address synchronous-close duplicate pointer completion, generated PNG replacement/removal, zoomed handle/context-menu coordinates stale generated API inventory and Windows native-menu priority after capture. The final Windows repair changes five production files (+21/−10), with no test/helper/assertion changes. Existing assertions were not weakened; one minimal red/green pointer-close regression was retained.

Testing

Final source: 4e17292d1de81e74d34d10231a93dcc78af4f763.

  • Required UI compatibility selector plus ContextMenuBase/Zoom, complete UI/editor/richtext/text/platform/root coverage and regenerated internal/uimigrate checks pass. Focused UI race passed at e12a64d9; full platform/text/editor/richtext race passed at 1cbe160b. After the final Windows repair, complete UI/platform/uimigrate tests and full regular/production-tag vet were rerun successfully.
  • At e12a64d9, both unfiltered CGO_ENABLED=0 go test -timeout 20m ./... and the mygo_noinspector full suite exited: only internal/darwin.TestLocales fails (x-Test versus en-001). The identical assertion fails on clean detached upstream 1db4e93b on the same VM. No skips, weakened assertions or extended per-test waits.
  • Regular/production-tag vet; Darwin arm64, Linux/Windows amd64 builds/vet; Linux/Windows arm64 and 386 builds; JS/Wasm build/vet pass. Official Wasm executor tests pass for web, GL and Canvas/KeepWords text.
  • Bun 1.4.4 frozen install/build, all 251 Bun tests, typecheck and native-asset prefetch pass; this PR changes no JS source or dependency locks. Native Darwin menu pixel/removal unit passes, not interactive GUI acceptance.
  • On final source, an isolated workspace resolves MyGo to the actual candidate checkout: LUI and Logseq Go modules pass tests/vet; both macOS/Linux hosts build, and the LUI Windows host cross-builds. No tracked consumer files/pins changed. The Logseq Windows host has an existing OS-source-constraint gap (undefined platformTarget/platformServices/platformReply), reproduced with its original pinned SDK and workspace disabled; this PR does not repair consumer source.
  • Independent read-only input, geometry/zoom and menu/icon lifecycle reviews closed with no remaining supported finding. All five final PR checks pass: macOS, Linux, Windows x64, Windows ARM64 and WIP. The Windows x64 job ran the unmodified native MYGO_E2E=1 go test ./internal/e2e suite successfully, including TestNativeMenuShortcuts. Application accelerators run after CaptureInput but before ordinary content; edit-role keys remain content-first. Cross-compilation is not GUI validation. Product-level Logseq UI/IME acceptance is not claimed.

Release size

Same host, Go 1.27.3, Darwin arm64, CGO disabled, -trimpath -tags mygo_noinspector -ldflags '-s -w -X github.com/egoist/mygo.production=1':

Example Upstream bytes Final bytes Delta
counter-native 9,747,762 9,781,938 +34,176 (0.351%)
hello 9,680,578 9,680,738 +160 (0.00165%)

Pre-repair dumpdep/nm attributes retained code to fork measurement/capture and shared native/menu/composition lifecycle paths; total file deltas also include metadata/data/alignment. No new image/png.Decode, menuicon.Decode or ReflectMethod edges; the ImagePNG setter is not retained in either example. The final dispatch seam adds 16 bytes to each Darwin example and 512 bytes to each Windows example versus e12a64d9; Windows dumpdep attributes it to the small per-event callback/closure and field metadata, with no heavy feature linkage.

Tested on:

  • macOS — final CI passes; local SDK tests/build/vet with the upstream-reproduced locale exception above
  • Windows — final native x64/ARM64 CI passes; cross-build/vet pass
  • Linux — final CI and cross-build/vet pass
  • Web — Wasm build/vet and official executor unit tests; no browser GUI acceptance
  • Other: product-level Logseq native UI/IME acceptance not performed

AI disclosure

  • Tool and model: Devin by Cognition AI (underlying model/version is not exposed by this session).
  • Used for: source integration, compatibility fixes, tests, review and this description.
  • A human read every line of this change and can explain it.

Link to Devin session: https://app.devin.ai/sessions/949a417dd06241acb1e04361de5b162b
Open in Devin Desktop: https://app.devin.ai/desktop/session/949a417dd06241acb1e04361de5b162b?variant=devin
Requested by: @tiensonqin

tiensonqin and others added 30 commits October 26, 2026 00:00
Preserve requested virtual-list windows, active row pins, keyed lookups,
and weak handle ownership alongside committed input capture and inline
text geometry. Keep the upstream module identity and imports unchanged.

Validation: focused ui race regressions; complete ui/... tests without
race (including allocation checks); CGO_ENABLED=0 Linux and Windows
ui/... builds. Release hello is unchanged; counter-native grows 128 bytes
for the committed-state and input-capture guards.
Remove the LCD order from a copy of the matched font pattern for the grayscale pass. Keep the original Pango font for shaping and opaque subpixel rendering, and preserve color glyph detection.
Fix inherited pointer hit policy and delegated click capture
Publish editing operations without leaking marked text or echoing authoritative model replacements.
Combine the published table-pointer-contract and editor-committed-changes branches as one dependency baseline. Preserve both parent histories and their source blobs without conflict edits.
Merge the reviewed captured-input correction with its existing cancellation guards.
Merge the reviewed controlled-editor and native composition-phase contracts.
devin-ai-integration Bot and others added 20 commits October 28, 2026 05:31
Merge the reviewed shared input baseline while preserving both dependency histories.
Merge the reviewed synchronous per-window focus lifecycle revision and its capture-context documentation.
fix(ui): deliver capture-loss cancellation to input observers
Publish text-input caret geometry after frame callbacks while preserving input and lifecycle fences.
Remove fontconfig's global color preference in the Pango fontmap substitution hook so mixed family lists keep bare digits in text faces. Leave emoji itemization and explicit color=false unchanged. Require Pango 1.48 for the hook and document it.
…into fix/linux-pango-text-family-order-20261031
…20261031

fix(text): preserve text families before emoji fallback
Carry layout characters from NSEvent through surface key events to capture and focused handlers. Key text is metadata, distinct from committed InputText.
Preserve production extensions alongside upstream text layout, input, overlays and menus. Reconcile committed geometry, native cancellation, capture ownership and lazy icon linking with the upstream APIs.
@devin-ai-integration

Copy link
Copy Markdown

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

Prevent reentrant window close from completing a released pointer twice. Preserve explicit menu icons while replacing or removing repeated legacy PNG fallbacks, and keep retained bounds in window DIPs under zoom.
@tiensonqin
tiensonqin merged commit fca5c73 into main Nov 7, 2026
5 checks passed
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