feat(ink-compat): fresh-start mainstream compatibility delivery#41
feat(ink-compat): fresh-start mainstream compatibility delivery#41RtlZeroMemory wants to merge 3 commits into
Conversation
…007,008,009 mainstream adapter + deterministic tests Coordinator-approval: required workspace wiring outside allowed dirs for integration/build validation (package.json, tsconfig.json, packages/bench/tsconfig.json).
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d7dc844ade
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const inkOptions: InkRenderOptions = {}; | ||
|
|
||
| if (options.stdout) { | ||
| inkOptions.stdout = options.stdout as NodeJS.WriteStream; | ||
| } |
There was a problem hiding this comment.
Preserve or reject internal backend render option
This option filtering drops any non-Ink fields, so render(..., {internal_backend: backend}) is treated like no backend was provided. I checked the benchmark paths that use this mode (packages/bench/src/scenarios/startup.ts:115, memory.ts:210, and other internal_backend call sites), and they all block on backend.waitForFrame(); with this adapter those frame callbacks are never triggered, so ink-compat benchmark runs can hang indefinitely or write to process stdout instead of the bench backend.
Useful? React with 👍 / 👎.
|
|
||
| export function normalizeKey(key: InkCompatKeyInput | null | undefined): InkCompatKey { | ||
| const safe = key ?? {}; | ||
| const isReturn = isTrue(safe.return); |
There was a problem hiding this comment.
Normalize legacy enter flag when return is absent
InkCompatKeyInput accepts a legacy enter field, but normalization only reads safe.return and then mirrors that into enter. That means normalizeKey({enter: true}) returns enter: false, dropping Enter presses for callers that provide legacy key payloads with only enter populated.
Useful? React with 👍 / 👎.
|
Second autonomous loop complete on same branch/PR. New commit: 51bc552 Closed in-scope gaps from docs/ink-compat/missing-capabilities.md:
Validation rerun status:
Remaining items are out-of-scope backlog entries (MCAP-004/005/006). |
Fresh-Start Ink-Compat Mainstream Delivery Pass
Baseline lock summary
b2f357aa981270a2ae3528c3224bdfc0d0569fca(fresh worktree fromorigin/main).ink@6.7.0.135cb23ae3b7ca94918b1cd913682f6356f12c5c.2026-02-12T16:03:32Z.docs/ink-compat/source-lock.md.Audit consensus per subsystem
docs/ink-compat/audit-consensus.md.Master confirmed issue list (fixed in this pass)
packages/ink-compat/src/__tests__/input.normalization.test.tsx,packages/ink-compat/src/keyNormalization.ts.input.normalization.test.tsx.packages/ink-compat/src/render.ts,packages/ink-compat/src/__tests__/lifecycle.behavior.test.tsx,packages/ink-compat/src/__tests__/non-tty-and-negative.test.tsx.packages/ink-compat/package.json,packages/ink-compat/src/index.ts, root workspace refs.Implemented fix clusters
render, components, hooks, key normalization).Reviewer outcomes
Validation command results
All required commands executed successfully on this branch:
npm run lint✅npm run typecheck✅npm run build✅npm test✅npm run test:e2e✅npm run test:e2e:reduced✅npm run test:native:smoke✅ (command passes; smoke reportsSKIP engineCreate() deep checksin current non-TTY CI context)npm -w @rezi-ui/ink-compat run build✅npm -w @rezi-ui/ink-compat run test✅Added tests list
packages/ink-compat/src/__tests__/render.golden.test.tsxpackages/ink-compat/src/__tests__/lifecycle.behavior.test.tsxpackages/ink-compat/src/__tests__/input.normalization.test.tsxpackages/ink-compat/src/__tests__/non-tty-and-negative.test.tsxpackages/ink-compat/src/__tests__/helpers.tsParity coverage count
Residual risks
@rezi-ui/ink-compat/testingentrypoint is deferred and tracked as out-of-scope.Top 5 missing capabilities by priority
(See
docs/ink-compat/missing-capabilities.mdfor full details)useFocus/useFocusManagerparity suite.@rezi-ui/ink-compat/testingcompatibility entrypoint.useStdout/useStderrstream contract coverage.Required docs
docs/ink-compat/source-lock.mddocs/ink-compat/invariants.mddocs/ink-compat/architecture.mddocs/ink-compat/design-plan.mddocs/ink-compat/parity-matrix.mddocs/ink-compat/missing-capabilities.md