Skip to content

Migrate Tribute to Corepack-pinned Yarn 4 - #19

Merged
pkaminski merged 4 commits into
reviewable-masterfrom
codex/migrate-to-yarn
Oct 27, 2026
Merged

pkaminski merged 4 commits into
reviewable-masterfrom
codex/migrate-to-yarn

Conversation

@pkaminski

@pkaminski pkaminski commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

Use Corepack-pinned Yarn 4.13.0 with the node-modules linker and a five-day resolution cooldown. Convert the Classic lockfile, ignore local Yarn state, and replace the inherited Travis configuration with a GitHub Actions build/test job. CI uses Node 24, Corepack, immutable installation, and the runner's installed Chrome; Karma honors CHROME_BIN with Puppeteer as its local fallback. The library's runtime requirements, dependency specifications, and version remain unchanged.

This migration is based on reviewable-master and precedes security PR #18. All 877 original lockfile descriptors retain their resolved versions. Yarn adds 73 npm descriptors for metadata and native-build dependencies absent from the Classic lockfile; compatible existing versions are reused where possible. Their 67 distinct versions and the Yarn executable passed a publication-date check against the five-day cooldown. Body Parser remains at the original 1.20.1 here; #18 applies its verified 1.20.9 security backport afterward. Yarn's added node-gyp tree already uses Undici 8.12.3, above the requested 8.12.2 minimum and beyond cooldown.

The browser-test helper now explicitly marks its contenteditable div fixtures editable. Without that attribute, the fixtures could not receive input as intended, causing the previously reported browser-test failures. This changes only test setup; all 32 tests and their assertions remain enabled, and published library code is unchanged.

Validation on Node 24.21.0:

  • GitHub Actions passes: Corepack setup, hardened immutable installation, Rollup build, and all 32 browser tests on Linux.
  • Local immutable installation and build passed; generated dist/example files remain byte-for-byte unchanged.
  • All 32 browser tests also pass locally in headless Chrome.
  • Explicit CHROME_BIN selection and the Puppeteer fallback were both checked.
  • Existing rollup-plugin-sass peer metadata warning remains.

Security PR #18 is restacked on this migration and its lockfile reconstruction proof has been reverified. This package-manager/CI migration is outside lockfile-only automatic merging.

Follow-up validation: Linux CI passes, including all 32 browser tests. The workflow caches Yarn downloads, and the README badge points to this fork's build workflow. The separate isContentEditable fix is #21, with Jacob requested for review.


This change is Reviewable

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski reviewed 7 files and all commit messages, and made 1 comment.
Reviewable status: 0 of 7 files reviewed, 1 unresolved discussion (waiting on pkaminski).


.travis.yml at r1 (raw file):
Remove the Travis setup inherited from the fork and switch to a GitHub actions build / test job instead.

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski+CODX made 1 comment and resolved 1 discussion.
Reviewable status: 0 of 7 files reviewed, all discussions resolved (waiting on pkaminski).


.travis.yml at r1 (raw file):

Previously, pkaminski (Piotr Kaminski) wrote…

Remove the Travis setup inherited from the fork and switch to a GitHub actions build / test job instead.

Removed .travis.yml and added .github/workflows/build.yaml. It runs on pull requests and pushes to reviewable-master/release, selects Node from .nvmrc, installs the Corepack-pinned Yarn, then runs yarn install --immutable, yarn build, and yarn test-single-run.

The job uses the runner's installed Chrome and skips the obsolete Puppeteer Chromium download. Karma now honors an explicit CHROME_BIN, retaining Puppeteer as the local fallback; both paths were checked. Immutable installation and build pass, with generated library files unchanged. Running the actual browser-test script locally gives the same 20 passes and 12 pre-existing failures as before. The workflow leaves those failures visible.

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski+CODX made 1 comment.
Reviewable status: 0 of 9 files reviewed, all discussions resolved (waiting on pkaminski).


.travis.yml at r1 (raw file):

Previously, pkaminski+CODX (Agent CODX for Piotr Kaminski) wrote…

Removed .travis.yml and added .github/workflows/build.yaml. It runs on pull requests and pushes to reviewable-master/release, selects Node from .nvmrc, installs the Corepack-pinned Yarn, then runs yarn install --immutable, yarn build, and yarn test-single-run.

The job uses the runner's installed Chrome and skips the obsolete Puppeteer Chromium download. Karma now honors an explicit CHROME_BIN, retaining Puppeteer as the local fallback; both paths were checked. Immutable installation and build pass, with generated library files unchanged. Running the actual browser-test script locally gives the same 20 passes and 12 pre-existing failures as before. The workflow leaves those failures visible.

The first GitHub Actions run has now completed. Corepack setup, hardened immutable installation, and build all pass; Chrome starts and executes all 32 tests. Linux reports 19 passes and 13 failures: the same 12 failures reproduced locally, plus the input-menu positioning test (Expected 224 to equal 504). The PR description records this additional runner result; CI remains red and no failures are suppressed.

Security PR #18 is restacked on this commit and still changes only yarn.lock. Its reconstruction proof passes against the updated migration baseline.

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski+CODX made 1 comment.
Reviewable status: 0 of 10 files reviewed, all discussions resolved (waiting on pkaminski).


.travis.yml at r1 (raw file):

Previously, pkaminski+CODX (Agent CODX for Piotr Kaminski) wrote…

The first GitHub Actions run has now completed. Corepack setup, hardened immutable installation, and build all pass; Chrome starts and executes all 32 tests. Linux reports 19 passes and 13 failures: the same 12 failures reproduced locally, plus the input-menu positioning test (Expected 224 to equal 504). The PR description records this additional runner result; CI remains red and no failures are suppressed.

Security PR #18 is restacked on this commit and still changes only yarn.lock. Its reconstruction proof passes against the updated migration baseline.

The GitHub Actions build is now green, including all 32 browser tests. The failures came from the test helper creating plain divs for its contenteditable fixtures without setting contentEditable. Adding that attribute fixes all failures locally and on Linux, including the extra positioning failure. No assertions were removed and published library code is unchanged.

Security PR #18 is restacked on the fix and its lockfile replay has been reverified.

@pkaminski
pkaminski requested a review from snoack October 26, 2026 00:26

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This makes our fork incompatible even more with upstream, but it had already diverged markedly so any pull from upstream will need to resolve a bunch of conflicts anyway.

+r:@snoack

@pkaminski reviewed 5 files and all commit messages, and made 1 comment.
Reviewable status: 0 of 10 files reviewed, all discussions resolved (waiting on snoack).

@pkaminski
pkaminski added this pull request to stack #20 October 26, 2026 00:26

@snoack snoack 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.

@snoack reviewed 10 files and all commit messages, and made 3 comments.
Reviewable status: all files reviewed, 3 unresolved discussions (waiting on pkaminski).


.travis.yml at r3 (raw file):
With .travis.yml gone, the build status badge in README.md is now stale.


.github/workflows/build.yaml line 23 at r3 (raw file):

        with:
          node-version-file: .nvmrc
          package-manager-cache: false

Nit: Without a replacement actions/cache step (like home's deploy workflow has), every run downloads all packages again. Add one keyed on yarn.lock?


test/spec/utils/dom-helpers.js line 10 at r3 (raw file):

  let input = document.createElement(elementToCreate);
  if (element === 'contenteditable') {
    input.contentEditable = 'true';

Fine for this PR, but the failures point at a library bug: ensureEditable (src/Tribute.js:257) checks !element.contentEditable, which is "inherit" (truthy) for a plain div, so the "not contentEditable" guard never fires. Worth a follow-up switching it to !element.isContentEditable, with a test that attaching to a non-editable div throws?

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski+CODX made 3 comments and resolved 2 discussions.
Reviewable status: 9 of 11 files reviewed, 1 unresolved discussion (waiting on snoack).


.github/workflows/build.yaml line 23 at r3 (raw file):

Previously, snoack (Sebastian Noack) wrote…

Nit: Without a replacement actions/cache step (like home's deploy workflow has), every run downloads all packages again. Add one keyed on yarn.lock?

Added an actions/cache@v5 step using Yarn's actual cacheFolder, keyed on the lockfile and Yarn configuration, with an OS-specific restore prefix for partial hits.


test/spec/utils/dom-helpers.js line 10 at r3 (raw file):

Previously, snoack (Sebastian Noack) wrote…

Fine for this PR, but the failures point at a library bug: ensureEditable (src/Tribute.js:257) checks !element.contentEditable, which is "inherit" (truthy) for a plain div, so the "not contentEditable" guard never fires. Worth a follow-up switching it to !element.isContentEditable, with a test that attaching to a non-editable div throws?

Confirmed. The separate follow-up is now #21, with Jacob requested for review. It uses isContentEditable, fixes the README examples, bumps the library to 5.1.4, and regenerates the distributed bundles.

The six added browser cases cover plain and explicitly non-editable divs, explicit and inherited editability, inputs, and textareas. The two rejection cases fail before the fix; all 38 tests pass afterward. The fix is stacked above security PR #18, keeping this migration's runtime code unchanged.


.travis.yml at r3 (raw file):

Previously, snoack (Sebastian Noack) wrote…

With .travis.yml gone, the build status badge in README.md is now stale.

Replaced the Travis badge with the fork's GitHub Actions build.yaml badge and workflow link, targeting reviewable-master.

@pkaminski pkaminski left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@pkaminski reviewed 2 files and all commit messages.
Reviewable status: 9 of 11 files reviewed, 1 unresolved discussion (waiting on snoack).

@snoack snoack 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.

:lgtm:

@snoack reviewed 2 files and all commit messages, made 1 comment, and resolved 1 discussion.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on pkaminski).

@pkaminski
pkaminski marked this pull request as ready for review October 27, 2026 00:40
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T00:42:43.261283Z 1bf2704 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@devin-ai-integration devin-ai-integration Bot 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.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@pkaminski
pkaminski merged commit 0045204 into reviewable-master Oct 27, 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.

2 participants