Skip to content

feat(client): add optional shared UI chat pilot - #641

Merged
zoeyrose merged 3 commits into
mainfrom
feat/classic-shared-chat-pilot-20261031
Oct 31, 2026
Merged

zoeyrose merged 3 commits into
mainfrom
feat/classic-shared-chat-pilot-20261031

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

Summary

Add an experimental Tilewright UI chat panel to the maintained Classic client. Both the build option and runtime switch default to off, so normal Classic builds require no new SDK or font assets.

Implementation / behavior

The opt-in panel uses the shared embedded C ABI and CPU text renderer inside an existing Classic widget. Classic keeps its SDL window, event loop, GPU renderer and presenter. The existing chat remains available; the pilot accepts only local echo and sends no command or packet, including slash-prefixed text.

Input ownership, held-key cancellation, IME/Enter handling and exact presentation acknowledgements follow the host lifecycle. Popup precedence and capture privacy remain active. Explicit SDK/header/font inputs are verified locally; CMake does not fetch them. The panel and its bounded history are temporary and are not persisted.

Validation

  • Fresh independent review of the full diff and follow-up fixes through 16e3c21b51c42e0c4ad158fdb38f2367517b2f78.
  • Production-adapter C17 fixture, ASan/UBSan, focused LLVM coverage and privacy tests pass.
  • Full pinned Linux wrapper builds pass with the pilot enabled (78 tests) and disabled (77 tests), with 23 hardware GPU tests skipped in each isolated CPU worker. The disabled build has no SDK/font inputs or mounts.
  • Full-client LLVM 23.1.3 coverage run and LCOV export pass: 131 fresh profiles, all 62 measured objects, with 445/584 pilot lines covered. The external Rust SDK is outside native Clang coverage.
  • Isolated Classic gameplay on Vulkan/NVIDIA RTX 3090 verifies one visible SDL window, pilot focus and one accepted local batch, held-key cancellation, popup precedence and retained privacy with no screenshot files after /screenshot command inputs. Client/server exit cleanly and all topology leases are released. Independent evidence review checked the exact source/build binding and these limits.
  • Import-history verification and diff checks pass.

Limitations / follow-up

Readiness is controlled by the live PR delivery gate, including required hosted CI and the validation above. The current SDK is an explicitly supplied, reviewed source candidate; no Tilewright UI package publication or platform distribution qualification is claimed. Real OS IME, renderer recovery, other platforms, visual quality, performance and audio require their own evidence. PrintScreen was not exercised; the runtime check used /screenshot command inputs, the retained-privacy state and absence of output files. The pilot is not a network-chat cutover, and active pilot state remains excluded from captures. The owner merges.

@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

None

@zoeyrose

Copy link
Copy Markdown
Member Author

Independent review covered the complete base a30056c to head 71fd77b diff and affected Classic event routing, widget lifecycle, renderer composition, input ownership, privacy and CMake code, cross-checked against the reviewed shared ABI. Separate delta reviews cover c1f5695 and final 16e3c21. No actionable findings remain at this head.

  • P2 ordinary committed text incorrectly suppressed unrelated editing keys in one event drain: fixed in c1f5695 by separating Enter batch fencing from active composition, with regression cases.
  • P2 widget recreation dropped held-key quarantine before release: fixed in c1f5695 by retaining host retirement state through destruction and draining matching releases, with regression cases.
  • Full-client compilation found an undeclared xstrdup call masked by the small fake host: fixed and independently delta-reviewed in 16e3c21 using the owning production memory header.

The final head passes the production-adapter C17 fixture, ASan/UBSan, focused LLVM coverage, privacy tests, import-history and whitespace checks. Pinned full Linux wrapper builds pass enabled (78 passed, 23 hardware tests skipped) and disabled (77 passed, 23 skipped); the disabled worker had no optional SDK/font mounts or cache entries. Source and dependency identities are retained in private task evidence. These are CPU build/fixture results, not hardware gameplay qualification. Native isolated gameplay acceptance and current-head required hosted CI are still pending, so the PR remains draft. No package publication, deployment or merge is authorized by this receipt.

@codecov

codecov Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

@zoeyrose

Copy link
Copy Markdown
Member Author

Independent review covered the complete base a30056c to head 71fd77b diff and affected Classic event routing, widget lifecycle, renderer composition, input ownership, privacy and CMake code, cross-checked against the reviewed shared ABI. Separate delta reviews cover c1f5695 and final 16e3c21. No actionable findings remain at this head.

  • P2 ordinary committed text incorrectly suppressed unrelated editing keys in one event drain: fixed in c1f5695 by separating Enter batch fencing from active composition, with regression cases.
  • P2 widget recreation dropped held-key quarantine before release: fixed in c1f5695 by retaining host retirement state through destruction and draining matching releases, with regression cases.
  • Full-client compilation found an undeclared xstrdup call masked by the small fake host: fixed and independently delta-reviewed in 16e3c21 using the owning production memory header.

The final head passes the production-adapter C17 fixture, ASan/UBSan, privacy tests, import-history and whitespace checks. Pinned full Linux wrapper builds pass enabled (78 passed, 23 hardware tests skipped) and disabled (77 passed, 23 skipped); the disabled worker had no optional SDK/font mounts or cache entries. The documented full-module LLVM 23.1.3 coverage procedure and native LCOV export also pass: 131 fresh profiles, all 62 measured objects, 445/584 pilot lines covered. External Rust SDK coverage is not claimed.

Separate isolated Classic gameplay on Vulkan/NVIDIA RTX 3090 verifies one visible SDL window, pilot focus and a single accepted local batch, held-key cancellation, popup precedence, retained privacy and no screenshot files after /screenshot command inputs. Client/server exit 0 and topology leases are released. Independent evidence review verifies the exact source/build receipt, numeric observations and cleanup, while preserving limits: no active-pilot pixels captured, no separately instrumented screenshot invocation, no packet/server-motion trace, and no IME/audio/performance qualification. Current-head required hosted CI remains pending, so the PR remains draft. No package publication, deployment or merge is authorized by this receipt.

@zoeyrose
zoeyrose marked this pull request as ready for review October 31, 2026 11:43
@zoeyrose zoeyrose self-assigned this Oct 31, 2026
@zoeyrose
zoeyrose requested a review from a team October 31, 2026 11:43
@zoeyrose
zoeyrose merged commit c074356 into main Oct 31, 2026
33 checks passed
@zoeyrose
zoeyrose deleted the feat/classic-shared-chat-pilot-20261031 branch October 31, 2026 11:46
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