Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

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

Latest commit

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Programming Arcana

The Programming Arcana is an open source programming text book that focuses on teaching introductory programming concepts.

The guiding principles are:

  • Transferable concepts are more important than language specifics
  • Build concepts on top of known concepts as much as possible
  • Focus on procedural programming initially, with a view to transitioning to objects
  • Build programs that make it easy to see what is happening in the code

Code formatter

We use clang-format as our code format for this project.

Installation

Linux

clang-format can be installed by:

sudo apt install clang-format

macOS

clang-format can be installed by:

brew install clang-format

Windows

The executable file can be downloaded from llvm org.

Other

The clang-format can also be installed with python and nodejs:

# python
python3 -m pip install clang-format
# nodejs
npm install -g clang-format

The VS code extension. (optional, clang-format required)

The format style

The base format style used is google.

Usage

Validate code

A python script from Sarcasm is used to validate the code.

For example, you can use check if the file ./code/c/array/array-copy.c needs to be formatted.

# use python instead of python3 if python version is 2
./script/run-clang-format.py ./code/c/array/array-copy.c

The output would be

--- ./code/c/array/array-copy.c (original)+++ ./code/c/array/array-copy.c (reformatted)@@ -2,14 +2,13 @@
#include <string.h>
-int main()-{- int data[3] = {1, 2, 3};- int other_data[3];- int more_data[3];-- memcpy(other_data, data, 3 * sizeof(int));- memcpy(more_data, data, sizeof(data));-- return 0;+int main() {+ int data[3] = {1, 2, 3};+ int other_data[3];+ int more_data[3];++ memcpy(other_data, data, 3 * sizeof(int));+ memcpy(more_data, data, sizeof(data));++ return 0;
}%

*Python3 is normally installed as a default package in most operating systems. However, if you are using Windows and do not want to install Python, you can use clang-format .\code\c\array\array-copy.c . However, it would not have the feature in the wrapper script, for example, coloured output.

Format code

For a single file you can use command:

clang-format -i <file name>

Or if you have VS code extension installed you can use right click -> Format Document With ... option.

In order to recursively format all files, you can use:

# windows user# using powershellGet-ChildItem-recurse -path .\*-include *.c,*.cpp|ForEach-Object{clang-format -style=file -i $_}
# need python3 installed# using wrapped script
./script/run-clang-format.py -ri .

Branch prefixes

When branching, try to prefix your branch with one of the following:

PrefixDescriptionExample
feature/New feature was addedfeature/add-learning-outcome-alignment
fix/A bug was fixedfix/crash-when-code-submission-finished
enhance/Improvement to existing feature, but not visual enhancement (See LOOKS)enhance/allow-code-files-to-be-submitted
looks/UI Refinement, but not functional change (See ENHANCE)looks/rebrand-ui-for-version-2-marketing
quality/Refactoring of existing codequality/make-code-convention-consistent
doc/Documentation-related changesdoc/add-new-api-documentation
config/Project configuration changesconfig/add-framework-x-to-project
speed/Performance-related improvementsspeed/new-algorithm-to-process-foo
test/Test addition or enhancementtest/unit-tests-for-new-feature-x

Commit message format

We have precise rules over how our Git commit messages must be formatted. This format makes it easier to read the commit history.

Each commit message consists of a header, a body, and a footer.

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

The header is mandatory and must conform to the Commit Message Header format.

The body is recommended for all commits. When the body is present, it must be at least 20 characters long and conform to the Commit Message Body format.

The footer is optional. The Commit Message Footer format describes the purpose and structure of the footer.

Any line of the commit message should be 100 characters or fewer.

Commit Message Header
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope (optional): animations|common|style|forms|http|router|service-worker|
│ upgrade|changelog|dev-infra|docs-infra|migrations|
│
└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

The <type> and <summary> fields are mandatory, the (<scope>) field is optional.

The <type> must be one of the following:

  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
  • docs: Documentation only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that neither fixes a bug nor adds a feature
  • test: Adding missing tests or correcting existing tests

We recommend reading Chris Beam's post on How to Write Good Commit Messages.

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages