mirror of
https://github.com/stablyai/orca.git
synced 2026-10-29 08:07:18 +00:00
Merge the IME composition-handler removal onto current main
Collapses a 13-PR stack (#12289 -> ... -> #12553, plus #12560) onto `main`, which had moved 253 commits ahead of the stack's base. The stack could not land in order: its base was CONFLICTING/DIRTY and every PR above it was blocked. 21 conflicts. Seven were modify/delete — `main` editing files this work removes — and each was checked for a fix worth carrying rather than resolved by reflex: - #12462 (ConPTY Ctrl+Enter) is a real fix; `main`'s version now stands here, and it is FULLER than the port made on the branch, which had to omit `hasCtrlEnterCsiUAuthority` because that helper did not exist there - #12442 (candidate-anchor layout perf) is moot: the anchor is removed entirely - #12357, #12763 target machinery this work replaces `main`'s deleted `onKeyUp` also held non-IME behaviour — the `optionKeyLocation` reset — which this branch preserves via `installTerminalNativeInputListeners`. Four stale fixtures, all this work's tests meeting changes `main` made while the stack waited: the chat message shape moved from `text` to `blocks`, a button was renamed to "Submit", `createBrowserSessionProfile` gained a third parameter, and `updateWorktreeMeta` began returning a result the dialog reads `.ok` from. Two files exceeded `max-lines` after the merge. Suppressions are forbidden here, so both were reduced by extraction: the ConPTY Ctrl+Enter cases move to their own spec, and the dialog's Enter handling moves to `worktree-meta-enter-handlers.ts` — the two fields need different IME tiers, which is a second responsibility. Full suite: 4538 files / 48145 tests pass. Four files fail and none is caused by this merge — all are untouched by this branch, two pass in isolation (parallelism), one is a known local-environment failure, and one is the cross-version harness needing a checkout it cannot fetch here.
This commit is contained in:
@@ -173,6 +173,34 @@ jobs:
|
||||
done
|
||||
exit "$status"
|
||||
|
||||
xterm_patch_sync:
|
||||
name: xterm patch sync
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: ./.github/actions/install-node-dependencies
|
||||
|
||||
# Why: the check rebuilds xterm.js from a pinned upstream commit. Caching the
|
||||
# npm metadata and the shallow clone turns a ~4 min cold run into well under a
|
||||
# minute; the key is the manifest, so a commit or toolchain bump invalidates it.
|
||||
- name: Restore upstream xterm build inputs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.npm
|
||||
${{ runner.temp }}/xterm-patch-build/upstream/.git
|
||||
key: xterm-upstream-${{ hashFiles('config/patches/xterm-upstream.json') }}
|
||||
|
||||
- name: Verify xterm patches match the pinned upstream build
|
||||
env:
|
||||
WORK_DIR: ${{ runner.temp }}/xterm-patch-build
|
||||
run: node config/scripts/regenerate-xterm-patches.mjs --check --work-dir="$WORK_DIR"
|
||||
|
||||
shell_contracts:
|
||||
name: shell contracts
|
||||
runs-on: ubuntu-latest
|
||||
@@ -392,7 +420,8 @@ jobs:
|
||||
BASE="${{ github.event.pull_request.base.sha }}"
|
||||
HEAD="${{ github.event.pull_request.head.sha }}"
|
||||
CHANGED="$(git diff --name-only --diff-filter=AMCR --merge-base "$BASE" "$HEAD")"
|
||||
TEST_FILES="$(printf '%s\n' "$CHANGED" | grep -E '^tests/e2e/.*\.spec\.ts$' || true)"
|
||||
# Native specs require their dedicated platform harnesses.
|
||||
TEST_FILES="$(printf '%s\n' "$CHANGED" | grep -E '^tests/e2e/.*\.spec\.ts$' | grep -Ev -- '-native\.spec\.ts$' || true)"
|
||||
TEST_FILES_JSON="$(printf '%s\n' "$TEST_FILES" | jq --raw-input --slurp --compact-output 'split("\n") | map(select(length > 0))')"
|
||||
echo "test_files=$TEST_FILES_JSON" >> "$GITHUB_OUTPUT"
|
||||
if [ "$TEST_FILES_JSON" != '[]' ]; then
|
||||
@@ -421,6 +450,7 @@ jobs:
|
||||
- root_directory_guard
|
||||
- typecheck
|
||||
- git_compatibility
|
||||
- xterm_patch_sync
|
||||
- shell_contracts
|
||||
- test
|
||||
- package
|
||||
@@ -442,6 +472,7 @@ jobs:
|
||||
ROOT_DIRECTORY_GUARD: ${{ needs.root_directory_guard.result }}
|
||||
TYPECHECK: ${{ needs.typecheck.result }}
|
||||
GIT_COMPATIBILITY: ${{ needs.git_compatibility.result }}
|
||||
XTERM_PATCH_SYNC: ${{ needs.xterm_patch_sync.result }}
|
||||
SHELL_CONTRACTS: ${{ needs.shell_contracts.result }}
|
||||
TEST: ${{ needs.test.result }}
|
||||
PACKAGE: ${{ needs.package.result }}
|
||||
@@ -452,6 +483,7 @@ jobs:
|
||||
"$ROOT_DIRECTORY_GUARD" \
|
||||
"$TYPECHECK" \
|
||||
"$GIT_COMPATIBILITY" \
|
||||
"$XTERM_PATCH_SYNC" \
|
||||
"$SHELL_CONTRACTS" \
|
||||
"$TEST" \
|
||||
"$PACKAGE" \
|
||||
|
||||
@@ -9,10 +9,20 @@ permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
linux-x11:
|
||||
name: Linux X11 terminal IME
|
||||
runs-on: ubuntu-22.04
|
||||
linux:
|
||||
name: Linux ${{ matrix.label }} terminal IME
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 25
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- label: X11
|
||||
os: ubuntu-22.04
|
||||
display_server: x11
|
||||
- label: Wayland
|
||||
os: ubuntu-24.04
|
||||
display_server: wayland
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -27,10 +37,17 @@ jobs:
|
||||
build-essential
|
||||
dbus-x11
|
||||
dconf-gsettings-backend
|
||||
fcitx5
|
||||
fcitx5-chinese-addons
|
||||
fcitx5-frontend-gtk3
|
||||
fcitx5-hangul
|
||||
ibus
|
||||
ibus-hangul
|
||||
ibus-libpinyin
|
||||
libglib2.0-bin
|
||||
python3
|
||||
sway
|
||||
wtype
|
||||
xdotool
|
||||
xfwm4
|
||||
xvfb
|
||||
@@ -56,7 +73,57 @@ jobs:
|
||||
- name: Build Electron app for E2E
|
||||
run: pnpm exec electron-vite build --mode e2e
|
||||
|
||||
- name: Run native IBus exact-byte tests
|
||||
if: matrix.display_server == 'x11'
|
||||
env:
|
||||
ORCA_E2E_NATIVE_IME: ibus
|
||||
SKIP_BUILD: '1'
|
||||
run: pnpm run test:e2e:terminal-ime-native
|
||||
|
||||
- name: Upload native IBus evidence
|
||||
if: ${{ always() && matrix.display_server == 'x11' }}
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: terminal-ime-native-evidence
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Run native Fcitx5 exact-byte tests
|
||||
if: matrix.display_server == 'x11'
|
||||
env:
|
||||
ORCA_E2E_NATIVE_IME: fcitx5
|
||||
SKIP_BUILD: '1'
|
||||
run: pnpm run test:e2e:terminal-ime-native
|
||||
|
||||
- name: Upload native Fcitx5 evidence
|
||||
if: ${{ always() && matrix.display_server == 'x11' }}
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: terminal-ime-native-fcitx5-evidence
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Run native Fcitx5 Wayland exact-byte tests
|
||||
if: matrix.display_server == 'wayland'
|
||||
env:
|
||||
ORCA_E2E_NATIVE_DISPLAY_SERVER: wayland
|
||||
ORCA_E2E_NATIVE_IME: fcitx5
|
||||
SKIP_BUILD: '1'
|
||||
run: pnpm run test:e2e:terminal-ime-native
|
||||
|
||||
- name: Upload native Fcitx5 Wayland evidence
|
||||
if: ${{ always() && matrix.display_server == 'wayland' }}
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: terminal-ime-native-fcitx5-wayland-evidence
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Run deterministic terminal IME boundary tests
|
||||
if: matrix.display_server == 'x11'
|
||||
run: >-
|
||||
xvfb-run --auto-servernum
|
||||
env SKIP_BUILD=1 ORCA_E2E_FORWARD_APP_LOGS=1
|
||||
@@ -64,13 +131,8 @@ jobs:
|
||||
tests/e2e/terminal-ime-exact-byte.spec.ts
|
||||
--workers=1
|
||||
|
||||
- name: Run native IBus Hangul exact-byte tests
|
||||
env:
|
||||
SKIP_BUILD: '1'
|
||||
run: pnpm run test:e2e:terminal-ime-native
|
||||
|
||||
- name: Upload terminal IME evidence
|
||||
if: always()
|
||||
if: ${{ always() && matrix.display_server == 'x11' }}
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: terminal-ime-evidence
|
||||
|
||||
Reference in New Issue
Block a user