fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: lint:changes command to only lint changed files - #2665

Merged
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix
Aug 31, 2026
Merged

fix: lint:changes command to only lint changed files#2665
joyenjoyer merged 2 commits into
masterfrom
lint_changes_fix

Conversation

@joyenjoyer

Copy link
Copy Markdown
Contributor

Summary

  • Replace broken --since HEAD^ flag with git merge-base to properly target changed files
  • Pass changed files directly to oxlint instead of routing through workspace runner
  • Fixes lint:changes to skip unchanged portions of the codebase

Test Plan

  • pnpm run lint:changes now only lints files in the diff since merge-base

Fixes INSTUI-5090

@joyenjoyer
joyenjoyer changed the base branch from master to instui-5035-oxlint-migrationJuly 29, 2026 11:24
@joyenjoyerjoyenjoyer self-assigned this Jul 29, 2026
@joyenjoyer
joyenjoyer requested a review from balzssJuly 29, 2026 11:24
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 10:29 UTC

@joyenjoyer
joyenjoyerforce-pushed the lint_changes_fix branch 2 times, most recently from f69eb89 to b60b30aCompareJuly 29, 2026 11:34
github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
@github-actions

github-actionsBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Visual regression report

Cypress suite: ✅ Passing

Visual diff:⚠️Changes detected.

StatusCount
Unchanged95
Changed1
New0
Removed0

Accessibility (axe): ✅ No violations.

📊 View full report — click a screenshot's ⚠ badge to see each violation boxed on the image, with the offending element named and contrast failures shown as color swatches.

Diff images (1)

table-canvas.png — 3338 pixels differ

Baselines come from the visual-baselines branch. They refresh on every merge to master. The Cypress suite line covers the a11y and console-error assertions — a ❌ there means the suite found real issues even if the visual diff is clean.

github-actionsBot pushed a commit that referenced this pull request Jul 29, 2026
Base automatically changed from instui-5035-oxlint-migration to masterAugust 3, 2026 11:21
@joyenjoyer
joyenjoyer changed the base branch from master to fix-regression-a11y-screenshot-decoupleAugust 3, 2026 11:23
@joyenjoyer
joyenjoyer changed the base branch from fix-regression-a11y-screenshot-decouple to masterAugust 3, 2026 11:23
github-actionsBot pushed a commit that referenced this pull request Aug 3, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this command breaks workflows without js/ts changes since oxlint exits with 1. ironically this very PR is a good example

Comment threadpackage.json Outdated
"test:browser-ui": "pnpm run playwright:install && vitest --project browser --browser.headless=false --ui",
"lint": "pnpm -r --stream lint",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | xargs -r oxlint --format=unix",
"lint:changes": "git diff --name-only $(git merge-base HEAD origin/master)..HEAD | { grep -E '\\.(js|jsx|ts|tsx|mjs|cjs)$' || true; } | xargs -r oxlint --format=unix",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@balzss

  • git diff: list files changed since branching from master
  • grep (+ || true): keep only lintable extensions; don't fail if none match
  • xargs -r oxlint: only run oxlint if files remain, so no-match no longer exits 123

@joyenjoyer
joyenjoyer requested a review from balzssAugust 12, 2026 13:03
github-actionsBot pushed a commit that referenced this pull request Aug 12, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Issue with the current solution:git diff --name-only also lists deleted files, and oxlint exits 1 (No files found to lint) when every path it gets no longer exists — so a PR whose only lintable change is a deletion (e.g. removing an obsolete test) will fail the lint job. The pre-commit hook won't catch it either, since lint-staged skips deleted files.

Suggested fix: add --diff-filter=ACMR to the git diff call so deleted paths never reach oxlint.

please note that the fix was suggested by claude and needs a double check

Replace the broken --since flag with proper merge-base diff logic. The command
now gets files changed since merge-base with master and passes them directly to
oxlint instead of routing through the workspace runner which would lint the
entire codebase.
…anged
Filter the changed-file list to lintable extensions before handing it to
oxlint, so it's only invoked when there's actually something to lint.
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026
github-actionsBot pushed a commit that referenced this pull request Aug 26, 2026

@balzssbalzss left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good, i'll aprove but i'll also mention 2 nitpicks:

  • docs/contributing/contributing-getting-started.md:54 mentions this command linting since the last commit but actually it lints since branching off from master
  • maybe scripts like this could live in ui-scrips and only be referenced here for better readability

@joyenjoyer
joyenjoyer merged commit d4a507b into masterAug 31, 2026
10 of 11 checks passed
@joyenjoyer
joyenjoyer deleted the lint_changes_fix branch August 31, 2026 10:29
Sign up for freeto 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.

3 participants

@joyenjoyer@balzss@git-nandor