diff --git a/.github/CONTRIBUTORS.svg b/.github/CONTRIBUTORS.svg
index 3d26782b831..bd27f9d7bb7 100644
--- a/.github/CONTRIBUTORS.svg
+++ b/.github/CONTRIBUTORS.svg
@@ -6,4 +6,4 @@
-
\ No newline at end of file
+
diff --git a/.github/actions/spelling/README.md b/.github/actions/spelling/README.md
index 71d377ce726..1f699f3de3d 100644
--- a/.github/actions/spelling/README.md
+++ b/.github/actions/spelling/README.md
@@ -8,8 +8,10 @@ File | Purpose | Format | Info
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
+[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
+[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
-[advice.txt](advice.txt) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
+[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
-Note: you can replace any of these files with a directory by the same name (minus the `.txt` extension) and
-then include multiple files (with a `.txt` extension) inside that directory to merge multiple files together.
+Note: you can replace any of these files with a directory by the same name (minus the suffix)
+and then include multiple files inside that directory (with that suffix) to merge multiple files together.
diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md
index 5cde8ef25cf..1004eeaa604 100644
--- a/.github/actions/spelling/advice.md
+++ b/.github/actions/spelling/advice.md
@@ -1,28 +1,25 @@
+If the flagged items are :exploding_head: false positives
-If you see a bunch of garbage
+If items relate to a ...
+* binary file (or some other file you wouldn't want to check at all).
-If it relates to a ...
-well-formed pattern
+ Please add a file path to the `excludes.txt` file matching the containing file.
-See if there's a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it.
-
-If not, try writing one and adding it to the `patterns.txt` file.
+ File paths are Perl 5 Regular Expressions - you can [test](
+https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
-Patterns are Perl 5 Regular Expressions - you can [test](
-https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
+ `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
+../tree/HEAD/README.md) (on whichever branch you're using).
-Note that patterns can't match multiline strings.
-
-binary-ish string
+* well-formed pattern.
-Please add a file path to the `excludes.txt` file instead of just accepting the garbage.
+ If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
+ try adding it to the `patterns.txt` file.
-File paths are Perl 5 Regular Expressions - you can [test](
-https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
+ Patterns are Perl 5 Regular Expressions - you can [test](
+https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
-`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
-../tree/HEAD/README.md) (on whichever branch you're using).
-
+ Note that patterns can't match multiline strings.
diff --git a/.github/actions/spelling/allow.txt b/.github/actions/spelling/allow.txt
index e69de29bb2d..c33a7597c43 100644
--- a/.github/actions/spelling/allow.txt
+++ b/.github/actions/spelling/allow.txt
@@ -0,0 +1,11 @@
+CODEOWNERS
+codeowners
+CORS
+cors
+github
+https
+ssh
+SUSE
+Suse
+ubuntu
+workarounds
diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns
new file mode 100644
index 00000000000..56a0c43249c
--- /dev/null
+++ b/.github/actions/spelling/candidate.patterns
@@ -0,0 +1,536 @@
+# marker to ignore all code on line
+^.*/\* #no-spell-check-line \*/.*$
+# marker to ignore all code on line
+^.*\bno-spell-check(?:-line|)(?:\s.*|)$
+
+# https://cspell.org/configuration/document-settings/
+# cspell inline
+^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b
+
+# patch hunk comments
+^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
+# git index header
+index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
+
+# cid urls
+(['"])cid:.*?\g{-1}
+
+# data url in parens
+\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
+# data url in quotes
+([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
+# data url
+data:[-a-zA-Z=;:/0-9+]*,\S*
+
+# https/http/file urls
+(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
+
+# mailto urls
+mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
+
+# magnet urls
+magnet:[?=:\w]+
+
+# magnet urls
+"magnet:[^"]+"
+
+# obs:
+"obs:[^"]*"
+
+# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
+# In this examples content, I'm using a number of different ways to match things to show various approaches
+# asciinema
+\basciinema\.org/a/[0-9a-zA-Z]+
+
+# apple
+\bdeveloper\.apple\.com/[-\w?=/]+
+# Apple music
+\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
+
+# appveyor api
+\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
+# appveyor project
+\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
+
+# Amazon
+
+# Amazon
+\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
+# AWS S3
+\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/%_?:=]*
+# AWS execute-api
+\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
+# AWS ELB
+\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
+# AWS SNS
+\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/%_?:=]*
+# AWS VPC
+vpc-\w+
+
+# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
+# YouTube url
+\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
+# YouTube music
+\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
+# YouTube tag
+<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
+# YouTube image
+\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
+# Google Accounts
+\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
+# Google Analytics
+\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
+# Google APIs
+\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
+# Google Storage
+\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
+# Google Calendar
+\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
+\w+\@group\.calendar\.google\.com\b
+# Google DataStudio
+\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
+# The leading `/` here is as opposed to the `\b` above
+# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
+# Google Docs
+/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
+# Google Drive
+\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
+# Google Groups
+\bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)*
+# Google Maps
+\bmaps\.google\.com/maps\?[\w&;=]*
+# Google themes
+themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
+# Google CDN
+\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
+# Goo.gl
+/goo\.gl/[a-zA-Z0-9]+
+# Google Chrome Store
+\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
+# Google Books
+\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=.]*
+# Google Fonts
+\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
+# Google Forms
+\bforms\.gle/\w+
+# Google Scholar
+\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
+# Google Colab Research Drive
+\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
+
+# GitHub SHAs (api)
+\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
+# GitHub SHAs (markdown)
+(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
+# GitHub SHAs
+\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
+# GitHub wiki
+\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
+# githubusercontent
+/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
+# githubassets
+\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
+# gist github
+\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
+# git.io
+\bgit\.io/[0-9a-zA-Z]+
+# GitHub JSON
+"node_id": "[-a-zA-Z=;:/0-9+]*"
+# Contributor
+\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
+# GHSA
+GHSA(?:-[0-9a-z]{4}){3}
+
+# GitLab commit
+\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
+# GitLab merge requests
+\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
+# GitLab uploads
+\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
+# GitLab commits
+\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
+
+# binanace
+accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
+
+# bitbucket diff
+\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
+# bitbucket repositories commits
+\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
+# bitbucket commits
+\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
+
+# bit.ly
+\bbit\.ly/\w+
+
+# bitrise
+\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
+
+# bootstrapcdn.com
+\bbootstrapcdn\.com/[-./\w]+
+
+# cdn.cloudflare.com
+\bcdnjs\.cloudflare\.com/[./\w]+
+
+# circleci
+\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
+
+# gitter
+\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
+
+# gravatar
+\bgravatar\.com/avatar/[0-9a-f]+
+
+# ibm
+[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
+
+# imgur
+\bimgur\.com/[^.]+
+
+# Internet Archive
+\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
+
+# discord
+/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
+
+# Disqus
+\bdisqus\.com/[-\w/%.()!?&=_]*
+
+# medium link
+\blink\.medium\.com/[a-zA-Z0-9]+
+# medium
+\bmedium\.com/\@?[^/\s"]+/[-\w]+
+
+# microsoft
+\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
+# powerbi
+\bapp\.powerbi\.com/reportEmbed/[^"' ]*
+# vs devops
+\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
+# microsoft store
+\bmicrosoft\.com/store/apps/\w+
+
+# mvnrepository.com
+\bmvnrepository\.com/[-0-9a-z./]+
+
+# now.sh
+/[0-9a-z-.]+\.now\.sh\b
+
+# oracle
+\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
+
+# chromatic.com
+/\S+.chromatic.com\S*[")]
+
+# codacy
+\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
+
+# compai
+\bcompai\.pub/v1/png/[0-9a-f]+
+
+# mailgun api
+\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
+# mailgun
+\b[0-9a-z]+.mailgun.org
+
+# /message-id/
+/message-id/[-\w@./%]+
+
+# Reddit
+\breddit\.com/r/[/\w_]*
+
+# requestb.in
+\brequestb\.in/[0-9a-z]+
+
+# sched
+\b[a-z0-9]+\.sched\.com\b
+
+# Slack url
+slack://[a-zA-Z0-9?&=]+
+# Slack
+\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
+# Slack edge
+\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
+# Slack images
+\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
+
+# shields.io
+\bshields\.io/[-\w/%?=&.:+;,]*
+
+# stackexchange -- https://stackexchange.com/feeds/sites
+\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
+
+# Sentry
+[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
+
+# Twitter markdown
+\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
+# Twitter hashtag
+\btwitter\.com/hashtag/[\w?_=&]*
+# Twitter status
+\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
+# Twitter profile images
+\btwimg\.com/profile_images/[_\w./]*
+# Twitter media
+\btwimg\.com/media/[-_\w./?=]*
+# Twitter link shortened
+\bt\.co/\w+
+
+# facebook
+\bfburl\.com/[0-9a-z_]+
+# facebook CDN
+\bfbcdn\.net/[\w/.,]*
+# facebook watch
+\bfb\.watch/[0-9A-Za-z]+
+
+# dropbox
+\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
+
+# ipfs protocol
+ipfs://[0-9a-zA-Z]{3,}
+# ipfs url
+/ipfs/[0-9a-zA-Z]{3,}
+
+# w3
+\bw3\.org/[-0-9a-zA-Z/#.]+
+
+# loom
+\bloom\.com/embed/[0-9a-f]+
+
+# regex101
+\bregex101\.com/r/[^/\s"]+/\d+
+
+# figma
+\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
+
+# freecodecamp.org
+\bfreecodecamp\.org/[-\w/.]+
+
+# image.tmdb.org
+\bimage\.tmdb\.org/[/\w.]+
+
+# mermaid
+\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
+
+# Wikipedia
+\ben\.wikipedia\.org/wiki/[-\w%.#]+
+
+# gitweb
+[^"\s]+/gitweb/\S+;h=[0-9a-f]+
+
+# HyperKitty lists
+/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
+
+# lists
+/thread\.html/[^"\s]+
+
+# list-management
+\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
+
+# kubectl.kubernetes.io/last-applied-configuration
+"kubectl.kubernetes.io/last-applied-configuration": ".*"
+
+# pgp
+\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
+
+# Spotify
+\bopen\.spotify\.com/embed/playlist/\w+
+
+# Mastodon
+\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
+
+# scastie
+\bscastie\.scala-lang\.org/[^/]+/\w+
+
+# images.unsplash.com
+\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
+
+# pastebin
+\bpastebin\.com/[\w/]+
+
+# heroku
+\b\w+\.heroku\.com/source/archive/\w+
+
+# quip
+\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
+
+# badgen.net
+\bbadgen\.net/badge/[^")\]'\s]+
+
+# statuspage.io
+\w+\.statuspage\.io\b
+
+# media.giphy.com
+\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
+
+# tinyurl
+\btinyurl\.com/\w+
+
+# codepen
+\bcodepen\.io/[\w/]+
+
+# getopts
+\bgetopts\s+(?:"[^"]+"|'[^']+')
+
+# ANSI color codes
+(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m
+
+# URL escaped characters
+\%[0-9A-F][A-F]
+# IPv6
+\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
+# c99 hex digits (not the full format, just one I've seen)
+0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
+# Punycode
+\bxn--[-0-9a-z]+
+# sha
+sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
+# sha-... -- uses a fancy capture
+(['"]|")[0-9a-f]{40,}\g{-1}
+# hex runs
+\b[0-9a-fA-F]{16,}\b
+# hex in url queries
+=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
+# ssh
+(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
+
+# PGP
+\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
+# GPG keys
+\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
+# Well known gpg keys
+.well-known/openpgpkey/[\w./]+
+
+# uuid:
+\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
+# hex digits including css/html color classes:
+(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
+# integrity
+integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
+
+# https://www.gnu.org/software/groff/manual/groff.html
+# man troff content
+\\f[BCIPR]
+# '
+\\\(aq
+
+# .desktop mime types
+^MimeTypes?=.*$
+# .desktop localized entries
+^[A-Z][a-z]+\[[a-z]+\]=.*$
+# Localized .desktop content
+Name\[[^\]]+\]=.*
+
+# IServiceProvider
+\bI(?=(?:[A-Z][a-z]{2,})+\b)
+
+# crypt
+"\$2[ayb]\$.{56}"
+
+# scrypt / argon
+\$(?:scrypt|argon\d+[di]*)\$\S+
+
+# Input to GitHub JSON
+content: "[-a-zA-Z=;:/0-9+]*="
+
+# printf
+%(?:(?:hh?|ll?|[jzt])?[diuoxXn]|l?[cs]|L?[fFeEgGaA]|p)(?=[a-zA-Z]{2,})
+
+# Python stringprefix / binaryprefix
+# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
+(?v#
+(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
+# Compiler flags (Scala)
+(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
+# Compiler flags
+(?:^|[\t ,>"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
+# Compiler flags (linker)
+,-B
+# curl arguments
+\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
+# set arguments
+\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
+# tar arguments
+\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
+# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
+\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
+# macOS temp folders
+/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt
index e5db6127cb7..f99a6e147a1 100644
--- a/.github/actions/spelling/excludes.txt
+++ b/.github/actions/spelling/excludes.txt
@@ -1,27 +1,66 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
-
(?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E
+(?:^|/)3rdparty/
+(?:^|/)go\.sum$
(?:^|/)package(?:-lock|)\.json$
+(?:^|/)Pipfile$
+(?:^|/)pyproject.toml
+(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$
(?:^|/)vendor/
-
/fonts/
ignore$
-
+\.a$
+\.ai$
+\.all-contributorsrc$
\.avi$
+\.bmp$
+\.bz2$
+\.class$
+\.coveragerc$
+\.crt$
+\.dll$
+\.docx?$
+\.drawio$
+\.DS_Store$
\.eot$
+\.exe$
+\.gif$
+\.git-blame-ignore-revs$
+\.gitattributes$
+\.graffle$
+\.gz$
+\.icns$
\.ico$
+\.jar$
+\.jks$
\.jpe?g$
+\.key$
+\.lib$
\.lock$
\.map$
-\.min\.
+\.min\..
\.mod$
\.mp[34]$
+\.o$
+\.ocf$
+\.otf$
+\.pdf$
+\.pem$
\.png$
-\.svg$
+\.psd$
+\.pyc$
+\.pylintrc$
+\.s$
+\.svgz?$
+\.tar$
+\.tiff?$
\.ttf$
\.wav$
-\.woff$
-\.woff2$
-
+\.webm$
+\.webp$
+\.woff2?$
+\.xlsx?$
+\.zip$
^\.github/
+^\Qdocs/CHANGELOG.md\E$
diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
index 83c5d112710..79868ddfcf4 100644
--- a/.github/actions/spelling/expect.txt
+++ b/.github/actions/spelling/expect.txt
@@ -1,760 +1,92 @@
-acl
-activesupport
-adaoraul
-addons
-aeiou
-AFile
-afterall
-Alexey
-alfredxing
-algolia
-allowfullscreen
-Anatoliy
-andreyvit
-Ankit
-Anning
-apps
-appveyor
-arengu
-args
-ariejan
-arounds
-asciinema
-asdf
-ashmaroli
-attr
-Autobuild
-autocompletion
-autogenerated
-Autolink
-autoload
-autoreconf
-autosave
-awood
-aws
-awscli
-backend
-backport
-backtick
-barcamp
-baseurl
-bashrc
-baz
-bbatsov
-bdimcheff
-bellvat
-benbalter
-Beney
-binstubs
-bip
-bitbucket
-blog
-Blogger
-blogging
-bonafide
-Bou
-breadcrumbs
-briandoll
-bridgetown
-bridgetownrb
-brightbox
-brighterplanet
-buddyworks
-Bugfix
-Burela
-byparker
-cachegrind
-calavera
-callgraphs
-cartera
-cavalle
-CDNs
-cgi
-changefreq
-changelog
-chango
-charset
-Chayoung
-chcp
-chdir
-Cheatsheet
-Checkoway
-chmod
-chown
-Chrononaut
-chruby
-cibuild
-cimg
-circleci
-CJK
-classname
-cloudcannon
-Cloudinary
-cloudsh
-CLT
-codebase
-codeclimate
-CODEOWNERS
-coderay
-codeslinger
-coffeescript
-colorator
-commandline
-commonmark
-compat
-compatibilize
-concat
-config
-configyml
-contentblocks
-CORS
-Cov
-CRLFs
-cron
-crontab
-cruft
-css
-csv
-Currin
-CVE
-CWD
-cygwin
-daringfireball
-Dassonville
-datafiles
-datetime
-DCEU
-Debian
-debuggability
-defunkt
-delegators
-deployer
-deps
-dest
-Devkit
-devops
-digitalocean
-dirs
-disqus
-ditaa
-dnf
-doclist
-doctype
-doeorg
-dommmel
-dotfile
-Dousse
-downcase
-downcased
-duckduckgo
-duritong
-Dusseau
-dysinger
-ecf
-editorconfig
-eduardoboucas
-Elasticsearch
-elsif
-Emacs
-emails
+adr
+arcver
+Assing
+BETTERCODE
+Bootcamp
+committers
+Debezium
+demystified
+devcases
+devfile
+dirtyreload
+DOI
+dreamix
+EAP
+embeddables
emoji
-endcapture
-endcomment
-endfor
-endhighlight
-endif
-endraw
-endrender
-endtablerow
-Enumerables
-EOL
-erb
-errordocument
-Espinaco
-eugenebolshakov
-evaled
-exe
-execjs
-extensionpack
-extname
-exts
-favicon
-Fengyun
-ffi
-figcaption
-filesystem
-Finazzo
-firstimage
-FIXME
-flakey
-flickr
-fnmatch
-fontello
-forloop
-formcake
-formcarry
-formester
-formingo
-formkeep
-formspark
-formspree
-formx
-Forwardable
-frameborder
-freenode
-frontmatter
-fsnotify
-ftp
-fullstory
-Gaudino
-gcc
-gcnovus
-gemfile
-gemset
-gemspec
-getform
-getset
-getsimpleform
-gettalong
-gfm
-ghp
-ghpages
-giraffeacademy
-github
-githubcom
-githubusercontent
-gitignore
-gitlab
-gjtorikian
-globbed
-globbing
-google
-gotcha
-Goulven
-gridism
-GSo
-gsub
-gsubbing
-Hakiri
-hardcode
-hashbang
-hashmap
-helaili
-henrik
-heredoc
-heroku
-highlighter
-hilighting
-Hoizey
-homepage
-hostman
-hostname
-href
-htaccess
-htm
-html
-htmlproofer
-http
-httpd
-httpdocs
-hyperlinks
-Iaa
-ial
-ico
-icomoon
-iconset
-ified
-iframe
-img
-Impl
-Inlining
-invokables
-irc
-ivey
-ize
-jalali
-jameshamann
-jamstackthemes
-jan
-javascript
-Jax
-jayferd
-jcon
-jdoe
-jeffreytse
-jeffrydegrande
-Jekpack
-jekyllbot
-jekyllconf
-Jekyllers
-Jekyllin
-Jekylling
-jekyllized
-jekylllayoutconcept
-jekyllrb
-jekyllthemes
-jemoji
-jmcglone
-jneen
-johnreilly
-jpg
-jqr
-jruby
-json
-jsonify
-juretta
-jwarby
-Kacper
-Kasberg
-kbd
-Kentico
-Kewin
-keycdn
-kickster
-Kinnula
-kiwifruit
-Kolesky
-konklone
-kontent
-Kotvinsky
-kramdown
-Kulig
-Kwokfu
-Lamprecht
-laquo
-lastmod
-launchctl
-launchy
-laurilehmijoki
-ldquo
-learnxinyminutes
-lexer
-LGTM
-libcurl
-libffi
-lifecycle
-lightgray
-limjh
-linenos
-linkify
-linux
-liufengyun
-livereload
-localheinz
-localhost
-localtime
-Locher
-loglevel
-Losslessly
-lovin
-lsi
-lsquo
-lstrip
-lyche
-macos
-macromates
-mademistakes
-mailto
-Manmeet
-markdownify
-Maroli
-Marsceill
-maruku
-mathjax
-mathml
-mattr
-Maximiliano
-mchung
-mdash
-memberspace
-Memoize
-memoized
-memoizing
-mentoring
-mergable
-Mertcan
-mertkahyaoglu
-metadata
-microdata
-microsoft
-mimetype
-mingw
-minibundle
-minifier
-minitest
-Mittal
-mixin
-mkasberg
-mkd
-mkdir
-mkdn
-mkdown
-mmistakes
-modernizr
-mojombo
-moncefbelyamani
-moz
-mreid
-msdn
-mswin
-MSYS
-mtime
-multiline
-munging
-Mvvm
-myblog
-mycontent
-mydata
-mydoc
-myimage
-mypage
-myposts
-myproject
-myrepo
-mysite
-myvalue
-myvar
-myvariable
-Nadjib
-nakanishi
-namespace
-namespaced
-navbar
-nbsp
-nearlyfreespeech
-nethack
-netlify
-netlifycms
-Neue
-nginx
-ngx
-nielsenramon
-nior
-nodejs
-noifniof
-nokogiri
-notextile
-onclick
-onebox
-oneclick
-onschedule
-opensource
-openssl
-Optim
-orderofinterpretation
-orgs
-OSVDB
-osx
-packagecontrol
-pacman
-paginator
-pandoc
-pantulis
-params
-parkr
-parseable
-paspagon
-passthrough
-pathawks
-Pathutil
-paywall
-pdf
-Pelykh
-permalink
-PHP
-pinboard
-Piwigo
-pjhyett
-pkill
-pkpass
-placeholders
-planetjekyll
-plantuml
-plugin
-png
+fastai
+fastpages
+forthebadge
+Freemarker
+FRP
+GIFs
+gitbook
+gitflow
+Gitpod
+Grunwald
+Hashids
+helloworld
+infoworld
+Instantiator
+Istio
+janssen
+javacodegeeks
+JAVAPROG
+Jcliff
+JDBC
+JDK
+jextract
+JPA
+JRE
+kubernetes
+LETSTALK
+Liskov
+logfile
+Matryoshka
+mcve
+MEGA
+microservices
+Mirrorring
+mkdocs
+Monix
+MTL
+Netflix
+nullables
+objectmappers
+openapi
+opengraph
+pastable
+PITMP
+plumbr
podcasts
-popen
-Porcel
-Posterous
-postfiles
-postlayout
-postmodern
-preinstalled
-prepends
-Prioritise
-Probot
-projectlist
-pubstorm
-pufuwozu
-pwa
-pwd
-pygments
-qrush
-Quaid
-quickstart
-rackup
-Rakefile
-raquo
-razorops
-rbenv
-rdiscount
-rdoc
-rdquo
-readme
-realz
-rebund
-redcarpet
-redcloth
-redgreen
+Quarkus
+Quicklens
+RANDOMTHOUGHTS
+RCE
+Reactify
+reddit
redhat
-refactor
-refactoring
-Refheap
-regen
-regex
-regexp
-remi
-reqs
-Responsify
-revertable
-rfc
-rfelix
-RHEL
-ridk
-roadmap
-rowspan
-rspec
-rsquo
-rss
-rstrip
-rsync
-rtomayko
-Rubo
-rubocop
-rubychan
-rubygem
-rubyinstaller
-rubyprof
-Ruparelia
-Rusiczki
-rvm
-ryanflorence
-saas
-samplelist
-samrayner
-sandboxed
-Sassc
-sassify
-schemastore
-Schroers
-Schwartzian
-scp
-screenshot
-scrollbar
-scroller
-scss
-scssify
-sdk
-SDKROOT
-sectore
-semver
-seo
-serverless
-setenv
-SFTP
-shingo
-shopify
-shortlog
-shoulda
-sieversii
-sigpipe
-simplecov
-Singhaniya
-siteleaf
-sitemap
-SITENAME
-Slicehost
-slugified
-slugify
-smartforms
-smartify
-snipcart
+Renovatebot
+RESTEASY
+Rogalskiy
+Runtimes
+Scalafmt
+Scalameta
+Scalaz
+screenshots
socio
-somedir
-sonnym
-Sonomy
-sourced
-sourcemaps
-spam
-spotify
-src
-ssg
-ssh
-SSL
-stackoverflow
+Sourcegraph
+spamming
+Squants
+SSCCE
+stakeholders
standalone
-staticfiles
-staticman
-statictastic
-STDERR
-stdout
-Stickyposts
-strftime
-stringified
-Stringify
+sttp
+stylegu
styleguide
-stylesheet
-subdir
-subdomain
-subfolder
-subfolderitems
-subnav
-subpages
-subpath
-subpiece
-subsubfolderitems
-subthing
-subvalues
-subwidget
-sudo
-superdirectories
-superdirs
-SUSE
-sverrirs
-svg
-svn
-swfobject
-swupd
-symlink
-symlinking
-tablerow
-tada
-Taillandier
-talkyard
-tbody
-technicalpickles
-templating
-templatize
-Termux
-textilize
-textpattern
-thead
-therubyracer
-Theunissen
-Thornquest
-thoughtbot
-throughs
-Tidelift
-timeago
-timezone
-titleize
-TLS
-tmm
-tmp
-toc
-tok
-tomjoht
-toml
-tomo
-toolset
-toshimaru
-triaged
-triaging
-truncatewords
-tsv
-ttf
-Tudou
-Tumblr
-Tweetsert
-txtpen
-Tyborska
-tzinfo
-ubuntu
-uby
-ujh
-ultron
-undumpable
-unencode
-Unescape
-unescaping
-unicode
-uniq
-upcase
-uppercasing
-uri
-url
-urlset
-username
-usr
-utf
-utils
-utime
-utm
-vanpelt
-Vasovi
-vendored
-vercel
-versioned
-versioning
-vertycal
-Veyor
-vilcans
-Vishesh
-visualstudio
-vnd
-vohedge
-vps
-vscode
-vwochnik
-Walkthroughs
-wdm
-We'd
-webfont
-webhook
-webhosting
-webmentions
-webrick
-website
-weekdate
-whitelist
-whitelisting
-wiki
-wikipedia
-wildcards
-willcodeforfoo
-woff
-wordpress
-Workaround
-workflow
-wsl
-www
-xcode
-xcrun
-xdg
-Xhmikos
-xhtml
-Xiaoiver
-XMinutes
-xml
-xmlns
-xmlschema
-yajl
-yaml
-Yarp
-Yashu
-Yastreb
-yml
-Youku
-youtube
-yunbox
-zeropadding
-Zlatan
-zlib
-zoneinfo
-zpinter
-Zsh
-zshrc
-zypper
-zzot
-frontend
-prefetching
+thorben
+Udash
+Vos
+Wildfly
+ZGC
+ZIO
diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns
new file mode 100644
index 00000000000..9133237cdfe
--- /dev/null
+++ b/.github/actions/spelling/line_forbidden.patterns
@@ -0,0 +1,68 @@
+# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
+# \bm_data\b
+
+# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
+# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
+# to use this:
+#\bfit\(
+
+# s.b. GitHub
+\bGithub\b
+
+# s.b. GitLab
+\bGitlab\b
+
+# s.b. JavaScript
+\bJavascript\b
+
+# s.b. Microsoft
+\bMicroSoft\b
+
+# s.b. another
+\ban[- ]other\b
+
+# s.b. greater than
+\bgreater then\b
+
+# s.b. into
+\sin to\s
+
+# s.b. opt-in
+\sopt in\s
+
+# s.b. less than
+\bless then\b
+
+# s.b. otherwise
+\bother[- ]wise\b
+
+# s.b. nonexistent
+\bnon existing\b
+\b[Nn]o[nt][- ]existent\b
+
+# s.b. preexisting
+[Pp]re[- ]existing
+
+# s.b. preempt
+[Pp]re[- ]empt\b
+
+# s.b. preemptively
+[Pp]re[- ]emptively
+
+# s.b. reentrancy
+[Rr]e[- ]entrancy
+
+# s.b. reentrant
+[Rr]e[- ]entrant
+
+# s.b. understand
+\bunder stand\b
+
+# s.b. workarounds
+\bwork[- ]arounds\b
+
+# s.b. workaround
+\bwork[- ]around\b
+
+# Reject duplicate words
+\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt
index 341825df898..227510d59c3 100644
--- a/.github/actions/spelling/patterns.txt
+++ b/.github/actions/spelling/patterns.txt
@@ -1,5 +1,10 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
+# Automatically suggested patterns
+# hit-count: 295 file-count: 9
+# https/http/file urls
+(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
+
# data urls
(['"])data:.*?\g{-1}
data:[-a-zA-Z=;:/0-9+]*,\S*
@@ -64,6 +69,39 @@ apiKey: '[a-f0-9]+'
# Lorem
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus|ultrices)\b(?:\w|\s|[,.])*
+# Automatically suggested patterns
+# hit-count: 44 file-count: 7
+# GitHub SHAs (markdown)
+(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
+
+# hit-count: 31 file-count: 1
+# shields.io
+\bshields\.io/[-\w/%?=&.:+;,]*
+
+# hit-count: 10 file-count: 1
+# Reddit
+\breddit\.com/r/[/\w_]*
+
+# hit-count: 7 file-count: 1
+# githubusercontent
+/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
+
+# hit-count: 5 file-count: 2
+# mailto urls
+mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
+
+# hit-count: 2 file-count: 2
+# hex runs
+\b[0-9a-fA-F]{16,}\b
+
+# hit-count: 2 file-count: 1
+# version suffix v#
+(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
+
+# hit-count: 1 file-count: 1
+# uuid:
+\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
+
# URL escaped characters
\%[0-9A-F]{2}
# c99 hex digits (not the full format, just one I've seen)
@@ -71,5 +109,30 @@ apiKey: '[a-f0-9]+'
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b
+# Questionably acceptable forms of `in to`
+# Personally, I prefer `log into`, but people object
+# https://www.tprteaching.com/log-into-log-in-to-login/
+\b[Ll]og in to\b
+
+# acceptable duplicates
+# ls directory listings
+[-bcdlpsw](?:[-r][-w][-Ssx]){3}\s+\d+\s+\S+\s+\S+\s+\d+\s+
+# mount
+\bmount\s+-t\s+(\w+)\s+\g{-1}\b
+# C types and repeated CSS values
+\s(center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
+# C struct
+\bstruct\s+(\w+)\s+\g{-1}\b
+# go templates
+\s(\w+)\s+\g{-1}\s+\`(?:graphql|json|yaml):
+# javadoc / .net
+(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
+
+# Commit message -- Signed-off-by and friends
+^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
+
+# Autogenerated revert commit message
+^This reverts commit [0-9a-f]{40}\.$
+
# ignore long runs of a single character:
\b([A-Za-z])\g{-1}{3,}\b
diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt
index a5ba6f6390e..b5a6d36809f 100644
--- a/.github/actions/spelling/reject.txt
+++ b/.github/actions/spelling/reject.txt
@@ -1,7 +1,10 @@
^attache$
benefitting
-occurence
+occurences?
+^dependan.*
+^oer$
Sorce
-^[Ss]pae
-^untill
-^wether
+^[Ss]pae.*
+^untill$
+^untilling$
+^wether.*
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
index c1281b47875..2dac844f47c 100644
--- a/.github/workflows/spelling.yml
+++ b/.github/workflows/spelling.yml
@@ -1,24 +1,96 @@
name: Spell Check
+# Comment management is handled through a secondary job, for details see:
+# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
+#
+# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
+# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
+# it needs `contents: write` in order to add a comment.
+#
+# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
+# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
+# it needs `pull-requests: write` in order to manipulate those comments.
+
on:
push:
branches:
- - master
- - "*-stable"
+ - "**"
+ tags-ignore:
+ - "**"
# Switch from `pull_request_target` event to reduce distraction from comments
# regarding errors reported in unmodified files.
pull_request:
branches:
- - master
- - "*-stable"
+ - "**"
+ tags-ignore:
+ - "**"
+ types:
+ - 'opened'
+ - 'reopened'
+ - 'synchronize'
jobs:
- build:
+ spelling:
name: Spell Check
+ permissions:
+ contents: read
+ pull-requests: read
+ actions: read
+ outputs:
+ followup: ${{ steps.spelling.outputs.followup }}
+ timeout-minutes: 10
runs-on: "ubuntu-latest"
+ if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
+ concurrency:
+ group: spelling-${{ github.event.pull_request.number || github.ref }}
+ # note: If you use only_check_changed_files, you do not want cancel-in-progress
+ cancel-in-progress: true
+ steps:
+ - name: check-spelling
+ id: spelling
+ uses: check-spelling/check-spelling@v0.0.21
+ with:
+ suppress_push_for_open_pull_request: 1
+ checkout: true
+ post_comment: 0
+ use_magic_file: 1
+ extra_dictionaries:
+ cspell:software-terms/src/software-terms.txt
+ cspell:aws/aws.txt
+ cspell:filetypes/filetypes.txt
+ cspell:html/html.txt
+ cspell:django/django.txt
+ cspell:fullstack/fullstack.txt
+ check_extra_dictionaries: ''
+
+ comment-push:
+ name: Report (Push)
timeout-minutes: 10
+ runs-on: "ubuntu-latest"
+ # If your workflow isn't running on push, you can remove this job
+ needs: spelling
+ permissions:
+ contents: write
+ if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
+ steps:
+ - name: comment
+ uses: check-spelling/check-spelling@v0.0.21
+ with:
+ checkout: true
+ task: ${{ needs.spelling.outputs.followup }}
+
+ comment-pr:
+ name: Report (PR)
+ timeout-minutes: 10
+ runs-on: "ubuntu-latest"
+ # If you workflow isn't running on pull_request*, you can remove this job
+ needs: spelling
+ permissions:
+ pull-requests: write
+ if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- - name: Checkout Repository
- uses: actions/checkout@v2
- - name: Check Spellings
- uses: check-spelling/check-spelling@v0.0.19
+ - name: comment
+ uses: check-spelling/check-spelling@v0.0.21
+ with:
+ checkout: true
+ task: ${{ needs.spelling.outputs.followup }}
diff --git a/docs/README.md b/docs/README.md
index 9a7a12894ff..467407e7092 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -81,7 +81,7 @@
* [Dreamix posts](#dreamix-posts)
* [Plumbr posts](#plumbr-posts)
* [Thorben Janssen posts](#thorben-janssen-posts)
- * [Redhat posts](#redhat-posts)
+ * [Red Hat posts](#redhat-posts)
* [JavaCodeGeeks posts](#javacodegeeks-posts)
* [DevCases posts](#devcases-posts)
@@ -265,7 +265,7 @@ specification. Contributions of any kind are welcome!
[](http://makeapullrequest.com)
-
+
See also the list of [contributors][contributors] who participated in this project.
@@ -521,7 +521,7 @@ and **_Java Patterns_** ? Consider buying me a coffee :)
-### _Redhat posts_
+### _Red Hat posts_
diff --git a/docs/adr/pages/0001-styled-java-patterns.md b/docs/adr/pages/0001-styled-java-patterns.md
index 895b916d3b3..cceef1f854f 100644
--- a/docs/adr/pages/0001-styled-java-patterns.md
+++ b/docs/adr/pages/0001-styled-java-patterns.md
@@ -30,7 +30,7 @@ articulate the problem in form of a question.]
## Decision Outcome
Chosen option: "\[option 1]", because \[justification. e.g., only option, which meets k.o. criterion decision
-driver | which resolves force force | … | comes out best (see below)].
+driver | which resolves force | … | comes out best (see below)].
### Positive Consequences
diff --git a/docs/contributing/pages/info.md b/docs/contributing/pages/info.md
index a96c629feaf..22cb293973b 100644
--- a/docs/contributing/pages/info.md
+++ b/docs/contributing/pages/info.md
@@ -26,7 +26,7 @@ The project development workflow and process uses
[Pull Requests](https://github.com/AlexRogalskiy/object-mappers-playground/pulls) management to track issues
and pull requests.
-Before you continue with this contribution guideslines we highly recommend to read the awesome GitHub
+Before you continue with this contribution guidelines we highly recommend to read the awesome GitHub
[Open source Guide](https://opensource.guide) on how to
[making open source contributions](https://opensource.guide/how-to-contribute).
@@ -61,7 +61,7 @@ the information it asks for helps maintainers to reproduce the problem and resol
- **Include screenshots and animated GIFs** which show you following the described steps and clearly
demonstrate the problem.
- **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or
- copy/pasteable snippets. If you are providing snippets in the issue, use
+ copy/pastable snippets. If you are providing snippets in the issue, use
[Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or
[attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests).
@@ -107,7 +107,7 @@ detail and context as possible using a structured layout like the
- **Use a clear and descriptive title** for the issue to identify the suggestion.
- **Provide a step-by-step description of the suggested enhancement** in as many details as possible and
provide use-cases.
-- **Provide examples to demonstrate the need of an enhancement**. Include copy/pasteable snippets which you
+- **Provide examples to demonstrate the need of an enhancement**. Include copy/pastable snippets which you
use in those examples, use
[Markdown code blocks](https://help.github.com/articles/basic-writing-and-formatting-syntax) or
[attach files to the issue](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests).
@@ -199,7 +199,7 @@ project community. It ensures consistency and enforces best practice in usage an
### _Java Code Style_
-IceCore Hasids adheres to the \[Nullables Studio Java Style Guide]\[styleguide-java-github].
+IceCore Hashids adheres to the \[Nullables Studio Java Style Guide]\[styleguide-java-github].
\[!\[]\[styleguide-java-badge]]\[styleguide-java-github]
@@ -210,7 +210,7 @@ The code will tell what changed, but only the commit message can properly tell w
context of a piece of code is wasteful. We can't avoid it completely, so our efforts should go to reducing it
as much as possible.
-IceCore Hasids adheres to the \[Nullables Studio Git Style Guide]\[styleguide-git-github].
+IceCore Hashids adheres to the \[Nullables Studio Git Style Guide]\[styleguide-git-github].
\[!\[]\[styleguide-git-badge]]\[styleguide-git-github]
@@ -222,7 +222,7 @@ The style guide assumes that you are familiar with the
A Minimal, Complete, and Verifiable Example.
When [reporting a bug](info.md#bug-reports), sometimes even when
-[suggestig a enhancement](info.md#enhancement-suggestions), the issue can be processed faster if you provide
+[suggesting a enhancement](info.md#enhancement-suggestions), the issue can be processed faster if you provide
code for reproduction. That code should be…
- …Minimal – Use as little code as possible that still produces the same behavior
diff --git a/docs/reporting/pages/custom_template.md b/docs/reporting/pages/custom_template.md
index 238a68de622..c7a1a6c0644 100644
--- a/docs/reporting/pages/custom_template.md
+++ b/docs/reporting/pages/custom_template.md
@@ -8,7 +8,7 @@
**Describe information of issue** A clear and concise description of a possible solution
-**Describe steps to reproduce issue** A clear and concise ussue title of any alternative solutions or features
+**Describe steps to reproduce issue** A clear and concise issue title of any alternative solutions or features
you've considered.
**Additional labels** Add any other context labels about the issue.
diff --git a/docs/user-guide/pages/troubleshooting.md b/docs/user-guide/pages/troubleshooting.md
index 7ef026061f6..df6d5822fed 100644
--- a/docs/user-guide/pages/troubleshooting.md
+++ b/docs/user-guide/pages/troubleshooting.md
@@ -70,8 +70,8 @@ commands from the root of your repo:
See this [tutorial on YAML](https://rollout.io/blog/yaml-tutorial-everything-you-need-get-started/) for
more information.
- **Colons, tilda, asterisk and other characters may cause your front matter to break and for your posts to
- not render.** If you violoate these conventions you often get an error that looks something like this:
+ **Colons, tilde, asterisk and other characters may cause your front matter to break and for your posts to
+ not render.** If you violate these conventions you often get an error that looks something like this:
```bash
Error: YAML Exception reading ... (): mapping values are not allowed
diff --git a/docs/user-guide/pages/upgrade.md b/docs/user-guide/pages/upgrade.md
index 2808bab2326..4868bfaae2e 100644
--- a/docs/user-guide/pages/upgrade.md
+++ b/docs/user-guide/pages/upgrade.md
@@ -45,7 +45,7 @@ accept or reject. For most people we recommend upgrading fastpages automatically
### Step 4: Review and Merge PR
- Ensure that you read the instructions in the PR carefully. Furthermore, carefully review which files will
- be changed to determine if this interferes with any customizations you have mades to your site. When
+ be changed to determine if this interferes with any customizations you have made to your site. When
ready, select `Merge pull request`.
- If the PR is making undesired changes to files you can use the manual upgrade approach instead.