Skip to content

fix(linux): retry transient uinput open errors - #66

Merged
SYMBaiEX merged 1 commit into
mainfrom
feat/cycle8-issue58-uinput-retry
Oct 5, 2026
Merged

SYMBaiEX merged 1 commit into
mainfrom
feat/cycle8-issue58-uinput-retry

Conversation

@SYMBaiEX

@SYMBaiEX SYMBaiEX commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Summary

Retry Linux /dev/uinput opens only for ENOENT and EACCES, with five total attempts and deterministic 10/20/40/40 ms backoff. Persistent failures exit nonzero with the device path, final error, and opencontroller-linux-uinput-doctor --check guidance. No permissions or system configuration are changed.

Source evidence

Issue #58 documents the transient startup race in Asahi-map #6 and the distinct persistent ownership case in Omarchy #8373. The change addresses the transient case and leaves persistent access configuration to existing guidance.

Acceptance covered

  • Retries only ENOENT and EACCES from the initial open.
  • Stops after five opens and preserves the final errno.
  • Deterministic native tests cover success after transient failures, persistent failure at the retry bound, and non-retryable errors.
  • No sudo, chown, chmod, or permission mutation was added.

Validation

  • bun test packages/native-linux-uinput/src/__tests__ — 20 passed.
  • bun run typecheck — passed.
  • bun run build — passed.
  • bun run pack:check — all seven packages passed; Linux helper header included.
  • bun x biome check on changed TypeScript, package manifest, and pack-check script — passed.
  • Strict C compilation of the helper and native test harness — passed.
  • Compiled-helper missing-node run — exited 1 after five attempts with the final ENOENT and doctor guidance.

Closes #58

Copilot AI balanced review requested due to automatic review settings October 5, 2026 01:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Oct 5, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 5 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f656f370-b9ff-41f6-b421-265d0fc5545d
📥 Commits

Reviewing files that changed from the base of the PR and between d5c5723 and 507c999.

📒 Files selected for processing (7)
  • packages/native-linux-uinput/package.json
  • packages/native-linux-uinput/src/__tests__/linux-uinput.test.ts
  • packages/native-linux-uinput/src/__tests__/uinput-open.test.ts
  • packages/native-linux-uinput/src/helper/opencontroller-uinput-bridge.c
  • packages/native-linux-uinput/src/helper/uinput-open-test.c
  • packages/native-linux-uinput/src/helper/uinput-open.h
  • scripts/check-npm-packages.mjs
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@SYMBaiEX
SYMBaiEX merged commit ff40ca2 into main Oct 5, 2026
2 checks passed
@SYMBaiEX SYMBaiEX mentioned this pull request Oct 5, 2026
3 of 4 tasks
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.

Retry transient Linux uinput first-open failures within a fixed bound

3 participants