Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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" + '
docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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('^' + ".*" + ' docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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('^' + ".*" + ' docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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" + ' docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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('^' + ".*" + ' docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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('^' + ".*" + ' docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass
, '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); } })(); })(); docs: stop instructing shfmt -w, and scope make sa correctly by Chemaclass · Pull Request #863 · TypedDevs/bashunit · GitHub
Skip to content

docs: stop instructing shfmt -w, and scope make sa correctly - #863

Merged
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope
Jul 25, 2026
Merged

docs: stop instructing shfmt -w, and scope make sa correctly#863
Chemaclass merged 1 commit into
mainfrom
fix/shfmt-guidance-and-sa-scope

Conversation

@Chemaclass

Copy link
Copy Markdown
Member

🤔 Background

Eight places in the contributor docs and skills told contributors to run shfmt -w .. On this repo that command reformats 146 tracked files and breaks make lint, because shfmt and .editorconfig disagree: indent_size = unset is read as tabs for tests/acceptance/**, and \-continued strings get collapsed past max_line_length = 120. Separately, make sa never linted three of the repo's own scripts.

💡 Changes

  • Replaces every shfmt -w . instruction with make lint as the formatting authority, and documents how to check for new shfmt drift instead of expecting none.
  • Scopes make sa's file list to git rather than find ., which descended into .claude/worktrees/ and re-linted the whole tree once per linked worktree.
  • make sa now also covers the extensionless bashunit, bin/pre-commit and bin/create-pr — 274 files, up from 271. All pass.

Eight places told contributors to run `shfmt -w .`. shfmt disagrees with
.editorconfig on this repo two ways -- indent_size = unset is read as tabs for
tests/acceptance/**, and `-continued strings get collapsed past the 120-char
limit -- so following that instruction reformats 146 tracked files and breaks
make lint. make lint is the formatting authority; record how to check for new
drift instead.
make sa built its file list with `find .`, which descends into
.claude/worktrees/ (linting the whole tree once per linked worktree) and whose
*.sh glob never covered the extensionless entrypoint, bin/pre-commit or
bin/create-pr. Take the list from git instead, keeping find as the non-git
fallback: 274 files now, including the three that were never checked.
@ChemaclassChemaclass added the documentation Improvements or additions to documentation label Jul 25, 2026
@ChemaclassChemaclass self-assigned this Jul 25, 2026
@Chemaclass
Chemaclass merged commit f0e7cff into mainJul 25, 2026
37 checks passed
@Chemaclass
Chemaclass deleted the fix/shfmt-guidance-and-sa-scope branch July 25, 2026 08:49
Chemaclass added a commit that referenced this pull request Jul 25, 2026
…new test
CI caught SC2164/SC1007 in the new test file that 'make sa' had passed.
Cause: since #863 the file list comes from 'git ls-files', which only
lists TRACKED files, so a brand-new script was invisible locally and
first failed in CI -- exactly backwards. Add --others
--exclude-standard.
Verified by dropping an untracked offending script in the tree: make sa
now fails on it.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Chemaclass