Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} 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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } 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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

conventional-pre-commit

A pre-commit hook to check commit messages for Conventional Commits formatting.

Usage

Make sure pre-commit is installed.

Create a blank configuration file at the root of your repo, if needed:

touch .pre-commit-config.yaml

Add a new repo entry to your configuration file:

repos:
# - repo: ...
- repo: https://github.com/compilerla/conventional-pre-commitrev: <git sha or tag>hooks:
- id: conventional-pre-commitstages: [commit-msg]args: [] # optional: list of Conventional Commits types to allow e.g. [feat, fix, ci, chore, test]

Install the pre-commit script:

pre-commit install --hook-type commit-msg

Make a (normal) commit ❌:

$ git commit -m "add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Failed- hook id: conventional-pre-commit- duration: 0.07s- exit code: 1[Bad Commit message] >> add a new featureYour commit message does not follow Conventional Commits formattinghttps://www.conventionalcommits.org/Conventional Commits start with one of the below types, followed by a colon,followed by the commit message: build chore ci docs feat fix perf refactor revert style testExample commit message adding a feature: feat: implement new APIExample commit message fixing an issue: fix: remove infinite loopOptionally, include a scope in parentheses after the type for more context: fix(account): remove infinite loop

Make a (conventional) commit ✔️:

$ git commit -m "feat: add a new feature"[INFO] Initializing environment for ....Conventional Commit......................................................Passed- hook id: conventional-pre-commit- duration: 0.05s

Install with pip

conventional-pre-commit can also be installed and used from the command line:

pip install conventional-pre-commit

Then run the command line script:

conventional-pre-commit [types] input
  • [types] is an optional list of Conventional Commit types to allow (e.g. feat fix chore)

  • input is a file containing the commit message to check:

conventional-pre-commit feat fix chore ci test .git/COMMIT_MSG

Or from a Python program:

fromconventional_pre_commit.formatimportis_conventional# prints Trueprint(is_conventional("feat: this is a conventional commit"))
# prints Falseprint(is_conventional("nope: this is not a conventional commit"))
# prints Trueprint(is_conventional("custom: this is a conventional commit", types=["custom"]))

Development

conventional-pre-commit comes with a VS Code devcontainer configuration to provide a consistent development environment.

With the Remote - Containers extension enabled, open the folder containing this repository inside Visual Studio Code.

You should receive a prompt in the Visual Studio Code window; click Reopen in Container to run the development environment inside the devcontainer.

If you do not receive a prompt, or when you feel like starting from a fresh environment:

  1. Ctrl/Cmd+Shift+P to bring up the command palette in Visual Studio Code
  2. Type Remote-Containers to filter the commands
  3. Select Rebuild and Reopen in Container to completely rebuild the devcontainer
  4. Select Reopen in Container to reopen the most recent devcontainer build

Versioning

Versioning generally follows Semantic Versioning.

Making a release

Releases to PyPI are triggered by publishing a release on GitHub.

  1. Create a branch chore/release

  2. Bump the version in pyproject.toml

  3. PR, merge chore/release into main

  4. Tag main with the new version (prefixed by v):

    git fetch
    git reset --hard origin/main
    git tag vX.Y.Z
    git push origin vX.Y.Z
  5. Publish a pre-release to push the new package to TestPyPI

  6. Publish a regular Release to push the new package to PyPI

License

Apache 2.0

Inspired by matthorgan's pre-commit-conventional-commits.

About

A pre-commit hook that checks commit messages for Conventional Commits formatting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages