Repository: the-draupnir-project/draupnir-documentation
Pull request #70: Spelling clean-up
Author: login: davidjharder
Created: 2025-05-17T22:27:27Z | Merged: 2025-05-19T20:13:02Z

I've split this into two commits: 

* The first adds a basic config for cpsell, and the accompanying allowed-word-list. I'm unsure if you are interested in using this tool; it can be installed by yarn, integrated into PR checks, etc. This is the bare minimum config.
* The second commit has the actual spelling corrections

Signed-off-by: David Harder <david@davidjharder.ca>


Diff:
diff --git a/.cspell-allowed-words b/.cspell-allowed-words
new file mode 100644
index 0000000..9d8c12e
--- /dev/null
+++ b/.cspell-allowed-words
@@ -0,0 +1,42 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+precalculated
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+takedown
+trusteduser
+unbannable
+useraccount
diff --git a/.cspell.json b/.cspell.json
new file mode 100644
index 0000000..57bc18e
--- /dev/null
+++ b/.cspell.json
@@ -0,0 +1,17 @@
+{
+
+  "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json",
+  "version": "0.2",
+  "language": "en_GB",
+  "words": ["add", "to", ".cspell-allowed-words", "instead"],
+  "flagWords": ["flaggedword", "hte"],
+  "dictionaries": ["cspell-allowed-words"],
+
+  "dictionaryDefinitions": [
+    {
+      "name": "cspell-allowed-words",
+      "path": "./.cspell-allowed-words",
+      "addWords": true
+    }
+  ]
+}
diff --git a/docs/bot/encryption.md b/docs/bot/encryption.md
index a65a32f..28995ae 100644
--- a/docs/bot/encryption.md
+++ b/docs/bot/encryption.md
@@ -31,7 +31,7 @@ device to Draupnir: Pantalaimon and the matrix-bot-sdk's
 experimental rust crypto. Neither of these options are of a high
 enough quality.
 
-While we have previously permitted the use of Pantaliamon, it has
+While we have previously permitted the use of Pantalaimon, it has
 consistently confused beginners that are setting it up with Draupnir,
 and we do not use it ourselves. Experienced system admins are welcome
 to attempt to set up Pantalaimon, but must be aware that any issues
@@ -41,5 +41,5 @@ Additionally, there are a couple of known bugs that inhibit the use of
 reactions in the management room when using Pantalaimon. Which are
 a core part of Draupnir's UX rework.
 
-You can find indiviual keys in Draupnir's configuration relating to
+You can find individual keys in Draupnir's configuration relating to
 both the matrix-bot-sdk and Pantalaimon.
diff --git a/docs/bot/homeserver-administration.md b/docs/bot/homeserver-administration.md
index 25139a2..1a27059 100644
--- a/docs/bot/homeserver-administration.md
+++ b/docs/bot/homeserver-administration.md
@@ -5,23 +5,23 @@ particularly relevant when registration on a homeserver is open or
 public:
 
 * Room management: Draupnir can provide insight into the Matrix rooms
-  your server is participaiting in and allow them to be blocked and
-  takendown.
+  your server is participating in and allow them to be blocked and
+  taken down.
   + See the [Room takedown protection](../protections/room-takedown-protection).
 
 * Invitation management: Draupnir can block invitations from users,
   servers, or rooms. And reject invitations sent on behalf of your users
-  that were sent from takendown rooms.
+  that were sent from taken down rooms.
   + See the  [Block invitations on server protection](../protections/block-invitations-on-server-protection).
 
 * Report forwarding and review: Draupnir can be used to view
-  reports submitted by users on your homserver.
+  reports submitted by users on your homeserver.
 
 * User management: Accounts can be deactivated using the `!draupnir
   deactivate` command.
 
 These features may require either a [synapse admin
-acount](./setup_draupnir_account#making-draupnir-a-synapse-admin) or
+account](./setup_draupnir_account#making-draupnir-a-synapse-admin) or
 [synapse-http-antispam](./synapse-http-antispam) to be available to
 Draupnir.
 
diff --git a/docs/bot/setup_debian.md b/docs/bot/setup_debian.md
index 9a462b0..3c5dd5b 100644
--- a/docs/bot/setup_debian.md
+++ b/docs/bot/setup_debian.md
@@ -1,7 +1,10 @@
+<!-- cspell:ignore SUIDSGID, EPERM, tunables -->
 ---
 sidebar_position: 6
 ---
 
+
+
 # Installation on Debian
 
 :::tip
diff --git a/docs/bot/setup_management_room.md b/docs/bot/setup_management_room.md
index 8f06e3d..bd1bf15 100644
--- a/docs/bot/setup_management_room.md
+++ b/docs/bot/setup_management_room.md
@@ -17,7 +17,7 @@ The management room is where you will interact with Draupnir. This is
 the room where Draupnir will respond to commands, allowing you to
 coordinate with Draupnir and other moderators without disrupting your
 public Matrix rooms. You can find further information about the
-mangement room [here](../concepts/management-room).
+management room [here](../concepts/management-room).
 
 You should create this room after you have created a user for your
 Draupnir bot.
diff --git a/docs/bot/setup_selfbuild.md b/docs/bot/setup_selfbuild.md
index ecbc3e5..1d59401 100644
--- a/docs/bot/setup_selfbuild.md
+++ b/docs/bot/setup_selfbuild.md
@@ -8,7 +8,7 @@ sidebar_label: Advanced setup from source
 :::tip
 
 This guide is for experienced system administrators.
-The recomended installation method is [using Docker with systemd](./systemd).
+The recommended installation method is [using Docker with systemd](./systemd).
 
 :::
 
@@ -30,7 +30,7 @@ yarn install
 yarn build
 
 # Copy and edit the config. It *is* recommended to change the data path,
-# as this is set to `/data` by default for dockerized draupnir.
+# as this is set to `/data` by default for dockerised draupnir.
 cp config/default.yaml config/production.yaml
 nano config/production.yaml
 
diff --git a/docs/bot/starting_draupnir.md b/docs/bot/starting_draupnir.md
index 0e24809..478f149 100644
--- a/docs/bot/starting_draupnir.md
+++ b/docs/bot/starting_draupnir.md
@@ -35,7 +35,7 @@ Please go through [the sample configuration file's
 documentation](https://github.com/the-draupnir-project/Draupnir/blob/main/config/default.yaml),
 download it, and rename it `production.yaml`. You should read over the
 different options and edit them to your liking. This is the file that
-will be refered to as "the config" throughout Draupnir's
+will be referred to as "the config" throughout Draupnir's
 documentation. Your copy of the config file should be named
 `production.yaml` and placed within `./config/production.yaml`
 relative to [the data directory](#the-data-directory) (explained
@@ -57,7 +57,7 @@ setup](./setup_docker).
 
 Draupnir stores persistent data to a directory called the *data
 directory*. This is a directory that Draupnir must have read and write
-access to. This is configured using the toplevel `dataPath` option
+access to. This is configured using the top-level `dataPath` option
 within Draupnir's configuration.
 
 ## Secret Management
diff --git a/docs/bot/synapse-http-antispam.md b/docs/bot/synapse-http-antispam.md
index 8918610..842e640 100644
--- a/docs/bot/synapse-http-antispam.md
+++ b/docs/bot/synapse-http-antispam.md
@@ -9,7 +9,7 @@ You need to be using Draupnir v2.3.0 or above to use this Synapse module.
 The
 [synapse-http-antispam](https://github.com/maunium/synapse-http-antispam)
 module allows Draupnir to make decisions about events that are
-received by your homserver. This module replaces the functionality of the
+received by your homeserver. This module replaces the functionality of the
 legacy Mjolnir antispam module.
 
 Please see the page on [homeserver
diff --git a/docs/bot/synapse_module.md b/docs/bot/synapse_module.md
index d6ccfb6..9a5a174 100644
--- a/docs/bot/synapse_module.md
+++ b/docs/bot/synapse_module.md
@@ -1,3 +1,4 @@
+<!-- cspell:ignore Hsggkm -->
 # Synapse module
 
 :::warning
@@ -24,7 +25,7 @@ See also configuration of [synapse-http-antispam](./synapse-http-antispam).
 
 **This requires Synapse 1.53.0 or higher**
 
-The Synapse module is indended to be used to apply policies to the
+The Synapse module is intended to be used to apply policies to the
 entire homeserver, to affect all of your users. This is primarily
 meant to block invites from undesired homeservers/users, Mjolnir's
 Synapse module is a way to interpret ban lists and apply them to your
diff --git a/docs/concepts/encryption.md b/docs/concepts/encryption.md
index a76b862..68bf39a 100644
--- a/docs/concepts/encryption.md
+++ b/docs/concepts/encryption.md
@@ -58,12 +58,12 @@ ban or a policy creation, the exact command used can also be reversed.
 
 :::warning
 
-Matrix users in encrypted rooms can selectively withold encryption
+Matrix users in encrypted rooms can selectively withhold encryption
 keys from moderators and Draupnir to bypass automated protections that
 scan message content, such as the `WordListProtection`.
 
-Maliciously and selectively witholding encryption keys is
-indistinguishable from regularly occurring Matrix encryption errrors.
+Maliciously and selectively withholding encryption keys is
+indistinguishable from regularly occurring Matrix encryption errors.
 
 :::
 
@@ -80,6 +80,6 @@ encryption in your management room. To do this you have two options:
   one](https://gitea.blesmrt.net/mikaela/scripts/src/branch/master/bash/matrix-upgrade-room.bash)
   by Aminda, which is strongly recommended.
 
-Please note that protection settings are stored in the mangement
+Please note that protection settings are stored in the management
 room's room state and will be reset to default by the migration away
 from E2EE. Unless you have tooling to copy these over to the new room.
diff --git a/docs/contributing/code-style.md b/docs/contributing/code-style.md
index 3b13e60..cf59aa9 100644
--- a/docs/contributing/code-style.md
+++ b/docs/contributing/code-style.md
@@ -29,7 +29,7 @@ then tell yourself that it does not matter.
 
 You might notice that we try to keep the scope (which by "scope"
 here we really mean "how much stuff" is in a function/method)
-as small as possible. This is something you should stick to aswell.
+as small as possible. This is something you should stick to as well.
 
 It really helps to introduce local functions if your method body starts
 getting too large. I can't really tell you how large too large is,
diff --git a/docs/contributing/context.md b/docs/contributing/context.md
index 4426e00..cd23e55 100644
--- a/docs/contributing/context.md
+++ b/docs/contributing/context.md
@@ -63,7 +63,7 @@ as you will still be dealing with legacy room versions.
 When a state event is sent to a room, the current mapping of the tuple
 `(type, state_key)` for a room is updated to refer to the new event.
 It is important to be aware that because of the nature of Matrix,
-everytime a state event is sent there is a possibility
+every time a state event is sent there is a possibility
 for the DAG to diverge between different server's perspectives of
 the room. Meaning that the state of a room can move under your feet
 as these perspectives converge,
diff --git a/docs/contributing/development-environment.md b/docs/contributing/development-environment.md
index 58f7aa5..283edaf 100644
--- a/docs/contributing/development-environment.md
+++ b/docs/contributing/development-environment.md
@@ -20,7 +20,7 @@ the associated backend for the matrix-bot-sdk:
 
 You should clone these locally and then link them by using `yarn link` in each
 directory followed by
-`yarn link matirx-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
+`yarn link matrix-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
 within Draupnir.
 
 You will probably also want to download
diff --git a/docs/contributing/releasing-draupnir.md b/docs/contributing/releasing-draupnir.md
index 8371937..ab89b3c 100644
--- a/docs/contributing/releasing-draupnir.md
+++ b/docs/contributing/releasing-draupnir.md
@@ -1,3 +1,4 @@
+<!-- cspell:ignore TWIM -->
 # Releasing Draupnir
 
 To produce a release, checkout main.
diff --git a/docs/contributing/triaging.md b/docs/contributing/triaging.md
index 2069ae6..3891379 100644
--- a/docs/contributing/triaging.md
+++ b/docs/contributing/triaging.md
@@ -6,7 +6,7 @@ sidebar_position: 1
 
 The issue triaging process was developed in this [blog post](https://marewolf.me/posts/draupnir/2401.html#triaging)
 and we use [another post](https://lostgarden.home.blog/2008/05/20/improving-bug-triage-with-user-pain/)
-as our primary resouce.
+as our primary resource.
 
 ## The purpose of triaging
 
diff --git a/docs/matrix-protection-suite/concepts/protected-rooms-set.md b/docs/matrix-protection-suite/concepts/protected-rooms-set.md
index e1099ec..adec077 100644
--- a/docs/matrix-protection-suite/concepts/protected-rooms-set.md
+++ b/docs/matrix-protection-suite/concepts/protected-rooms-set.md
@@ -19,7 +19,7 @@ matrix-protection-suite.
 
 :::
 
-The _protected rooms set_ is one of the most importanat components of
+The _protected rooms set_ is one of the most important components of
 the matrix-protection-suite. A _protected rooms set_ is a set of rooms
 that a group of protections will interact with. So with each protected
 rooms set, there is a collection of [protections](./protection) that
@@ -75,7 +75,7 @@ Details of individual room membership can be found by accessing the
 immediate access to to the membership information for each room.
 This is provided in the form of a `RoomMembershipRevision`.
 
-When a user's membershihp within a _protected room_ changes, the
+When a user's membership within a _protected room_ changes, the
 `handleMembershipChange` handle will be called for each _protection_
 as described in the `Protection` interface. _Protections_ will
 be given a new `RoomMembershipRevision` for the protected room,
diff --git a/docs/matrix-protection-suite/concepts/protection.md b/docs/matrix-protection-suite/concepts/protection.md
index 21e0cb1..3199873 100644
--- a/docs/matrix-protection-suite/concepts/protection.md
+++ b/docs/matrix-protection-suite/concepts/protection.md
@@ -35,7 +35,7 @@ user, often in reaction to other events.
   - As an example, a community under a targeted attack may wish to
     enabled the `JoinWaveShortCircuitProtection` for the duration
 	of the period, but might want to turn it off if they are
-	advertising their community or have been featured somehwere.
+	advertising their community or have been featured somewhere.
 
 * Protections have their own independent configuration settings, that
   can be changed dynamically at runtime.
@@ -72,7 +72,7 @@ access to the entire Matrix account it has been configured to use, and
 so conventionally all parts of Draupnir could cause any effect.
 Whether that be to shutdown Matrix rooms, ban users, hijack rooms, or
 go rogue. Draupnir has the ambient authority to do all these things,
-we have to challange this authority and create ways of containing and
+we have to challenge this authority and create ways of containing and
 auditing it.  Because without, any protection that is enabled could
 act with the entire authority of Draupnir, to shutdown rooms and ban
 users, and this would be very confusing to the end user, especially
@@ -85,7 +85,7 @@ would be very fragile to maintain. This was the reality of _Mjolnir_'s
 dry-run feature.  It became very easy for contributors to forget the
 feature existed, or not realise that a behaviour they were creating
 should have a special case. Because effects were being implemented
-implicitly with the general protection buisness logic.
+implicitly with the general protection business logic.
 
 By using capability interfaces we can make these effects explicit, and
 accounting for different modes of operation becomes a first class
diff --git a/docs/matrix-protection-suite/concepts/revisions.md b/docs/matrix-protection-suite/concepts/revisions.md
index b893912..690c31a 100644
--- a/docs/matrix-protection-suite/concepts/revisions.md
+++ b/docs/matrix-protection-suite/concepts/revisions.md
@@ -139,6 +139,6 @@ implement the `Protection` interface.
 * `SetMembershipRevisionIssuer` produces a consolidated model for membership
   over a set of rooms.
 
-* `SetMembershihpPolicyRevisionIssuer` produces a revision containing
+* `SetMembershipPolicyRevisionIssuer` produces a revision containing
   all of the members from a `SetMembershipRevisionIssuer` that also
   have matching policies from a `PolicyListRevisionIssuer`.
diff --git a/docs/moderator/managing-protected-rooms.md b/docs/moderator/managing-protected-rooms.md
index beb80c3..f047b8a 100644
--- a/docs/moderator/managing-protected-rooms.md
+++ b/docs/moderator/managing-protected-rooms.md
@@ -107,7 +107,7 @@ E2EE device for Draupnir to use. Most functionality will
 work without any problem, however some protections will be unable to
 reliably function. Specifically any protection that needs to access
 the content of an event can encounter problems. This includes
-protetions such as `WordList` and `FirstMessageIsImage`.
+protections such as `WordList` and `FirstMessageIsImage`.
 
 If your Draupnir deployment supports encryption, protections that
 require access to event content can be bypassed by malicious
diff --git a/docs/protections/block-invitations-on-server-protection.md b/docs/protections/block-invitations-on-server-protection.md
index 1f8e4af..d108757 100644
--- a/docs/protections/block-invitations-on-server-protection.md
+++ b/docs/protections/block-invitations-on-server-protection.md
@@ -13,7 +13,7 @@ legacy synapse module from mjolnir.
 
 :::
 
-This protection blocks invitations on your homserver based on the
+This protection blocks invitations on your homeserver based on the
 lists that Draupnir is subscribed to.
 
 ## Which policies will result in a rejected invitation
diff --git a/docs/protections/configuring-protections.md b/docs/protections/configuring-protections.md
index 0975e36..5772404 100644
--- a/docs/protections/configuring-protections.md
+++ b/docs/protections/configuring-protections.md
@@ -74,7 +74,7 @@ to restore the default settings for a given protection.
 
 Let's consider adjusting the protection settings for the
 `JoinWaveShortCircuitProtection`. If we have a particularly inactive
-room, we might want to reduce the timesacale and the maximum number of
+room, we might want to reduce the timescale and the maximum number of
 joins within it.
 
 To do this, we can use the `!draupnir protections config set
diff --git a/docs/protections/protections.md b/docs/protections/protections.md
index b026466..d07a34e 100644
--- a/docs/protections/protections.md
+++ b/docs/protections/protections.md
@@ -11,7 +11,7 @@ SPDX-License-Identifier: CC-BY-SA-4.0
 
 :::tip
 
-This is an overview of Draupnir protections, for a more indepth (but
+This is an overview of Draupnir protections, for a more in-depth (but
 still friendly) explanation, please view [this
 page](./matrix-protection-suite/concepts/protection).
 
diff --git a/docs/protections/trusted-reporters.md b/docs/protections/trusted-reporters.md
index 3b093d1..ff3bc7a 100644
--- a/docs/protections/trusted-reporters.md
+++ b/docs/protections/trusted-reporters.md
@@ -42,6 +42,6 @@ log each report, which is `displayReports` in Draupnir's config file.
 
 Make sure that anything you have sat in front of Synapse (e.g. nginx)
 is correctly configured to forward `/_synapse/admin/v1/event_reports`
-and `/_synapse/admin/v1/rooms/${room_id}/context/${revent_id}` to
+and `/_synapse/admin/v1/rooms/${room_id}/context/${event_id}` to
 Synapse, or Draupnir will not be able to poll for new
 reports. Draupnir polls for new reports every 30 seconds.


Reviews:
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-17T22:28:33Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-17T22:35:30Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-17T23:08:30Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-17T23:08:58Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-17T23:09:57Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-17T23:10:15Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-17T23:16:28Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-17T23:20:50Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-17T23:22:16Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-17T23:22:47Z
user: login: FSG-Cat
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-18T00:48:58Z
user: login: FSG-Cat
body: Kitty is happy tbh. Well we need to make the CI happy ofc.
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-18T00:53:08Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-18T07:34:42Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-18T07:38:08Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-18T07:59:52Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-18T13:25:57Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-18T13:46:45Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-18T21:49:08Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-18T22:06:25Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-19T07:39:21Z
user: login: enbea
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-19T08:07:41Z
user: login: Gnuxie
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-19T10:42:41Z
user: login: davidjharder
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T16:55:44Z
user: login: enbea
body: Everything seems good to me. Thank you for the contribution :)
state: APPROVED
author_association: NONE
submitted_at: 2025-05-19T19:43:42Z

Review comments:
diff_hunk: @@ -42,6 +42,6 @@ log each report, which is `displayReports` in Draupnir's config file.
 
 Make sure that anything you have sat in front of Synapse (e.g. nginx)
 is correctly configured to forward `/_synapse/admin/v1/event_reports`
-and `/_synapse/admin/v1/rooms/${room_id}/context/${revent_id}` to
path: docs/protections/trusted-reporters.md
user: login: davidjharder
body: This one I am unsure on
created_at: 2025-05-17T22:28:33Z
author_association: CONTRIBUTOR
diff_hunk: @@ -42,6 +42,6 @@ log each report, which is `displayReports` in Draupnir's config file.
 
 Make sure that anything you have sat in front of Synapse (e.g. nginx)
 is correctly configured to forward `/_synapse/admin/v1/event_reports`
-and `/_synapse/admin/v1/rooms/${room_id}/context/${revent_id}` to
path: docs/protections/trusted-reporters.md
user: login: Gnuxie
body: that is a typo!
created_at: 2025-05-17T22:35:30Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: Gnuxie
body: we should probably check this one
created_at: 2025-05-17T23:08:30Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
path: .cspell-allowed-words
user: login: Gnuxie
body: we should probably check this one
created_at: 2025-05-17T23:08:58Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: Gnuxie
body: generally we use `draupnir` as the plural form but it's probably ok CC @FSG-Cat 
created_at: 2025-05-17T23:09:57Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
+takedown
+trusteduser
+tunables
path: .cspell-allowed-words
user: login: Gnuxie
body: hmm lol
created_at: 2025-05-17T23:10:15Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
path: .cspell-allowed-words
user: login: davidjharder
body: https://github.com/the-draupnir-project/draupnir-documentation/blob/1cb560a777ff2cdf04aabdd3f7b72c5fda4f5fad/docs/bot/setup_debian.md?plain=1#L119
created_at: 2025-05-17T23:16:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: davidjharder
body: There are a few instances where "draupnirs" is used a plural
created_at: 2025-05-17T23:20:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: davidjharder
body: https://github.com/the-draupnir-project/draupnir-documentation/blob/1cb560a777ff2cdf04aabdd3f7b72c5fda4f5fad/docs/bot/setup_debian.md?plain=1#L109
created_at: 2025-05-17T23:22:16Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
+takedown
+trusteduser
+tunables
path: .cspell-allowed-words
user: login: davidjharder
body: also from the debian flags
created_at: 2025-05-17T23:22:47Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: FSG-Cat
body: This is used in an AS context and is a convention that comes from the code as far as i know. But well based on the timestamp of when this was written i assume that Cat being confused is excusable if it happens to be the case. Hint its 3 in the morning for the kitty.
created_at: 2025-05-18T00:48:58Z
author_association: MEMBER
diff_hunk: @@ -20,7 +20,7 @@ the associated backend for the matrix-bot-sdk:
 
 You should clone these locally and then link them by using `yarn link` in each
 directory followed by
-`yarn link matirx-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
+`yarn link matrix-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
path: docs/contributing/development-environment.md
user: login: FSG-Cat
body: Is this typo in the package or only in our docs refering to the package?
created_at: 2025-05-18T00:51:29Z
author_association: MEMBER
diff_hunk: @@ -120,7 +120,7 @@ relevant to room members, the matrix-protection-suite combines a
 `SetMembershipPolicyRevision`, containing only the members that have
 matching policies, alongside each of these policies.
 
-Protections then only have to access precalculated matches when
+Protections then only have to access pre-calculated matches when
path: docs/matrix-protection-suite/concepts/protected-rooms-set.md
user: login: enbea
body: "precalculate" is the more common form afaict
created_at: 2025-05-18T07:34:42Z
author_association: NONE
diff_hunk: @@ -20,7 +20,7 @@ the associated backend for the matrix-bot-sdk:
 
 You should clone these locally and then link them by using `yarn link` in each
 directory followed by
-`yarn link matirx-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
+`yarn link matrix-protection-suite matrix-protection-suite-for-matrix-bot-sdk`
path: docs/contributing/development-environment.md
user: login: enbea
body: The typo is just here in the docs.
created_at: 2025-05-18T07:38:08Z
author_association: NONE
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: enbea
body: https://github.com/the-draupnir-project/draupnir-documentation/blob/1cb560a777ff2cdf04aabdd3f7b72c5fda4f5fad/docs/bot/setup_debian.md#L40

There's this use which should be "Draupnir's", the other two uses are intentionally plural and in AS context as Cat said.

(Sidenote: that file refers to Draupnir in lowercase, should that be fixed too?)
created_at: 2025-05-18T07:59:52Z
author_association: NONE
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: davidjharder
body: It's not case-sensitive
created_at: 2025-05-18T13:25:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
path: .cspell-allowed-words
user: login: enbea
body: Oh sorry, the sidenote is about the linked file (`setup_debian.md`), not the allowed words list.

But after grepping the repo I'm thinking I'll fix Draupnir capitalization in a separate patch so disregard that.
created_at: 2025-05-18T13:46:44Z
author_association: NONE
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: Gnuxie
body: kinda weird that it checks the code blocks
created_at: 2025-05-18T21:49:08Z
author_association: MEMBER
diff_hunk: @@ -120,7 +120,7 @@ relevant to room members, the matrix-protection-suite combines a
 `SetMembershipPolicyRevision`, containing only the members that have
 matching policies, alongside each of these policies.
 
-Protections then only have to access precalculated matches when
+Protections then only have to access pre-calculated matches when
path: docs/matrix-protection-suite/concepts/protected-rooms-set.md
user: login: davidjharder
body: After looking into this more, there is an OED entry for this, but not merriam-webster. This should be allowed and not changed
created_at: 2025-05-18T22:06:24Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: enbea
body: The point of CSpell is to spell check code too. They even have a VS Code extension that you might like.

However for these one-off oddities that do not appear elsewhere in the codebase it might be more appropriate to instead add them to the top/bottom of the file as such:

```
<!-- cspell:ignore SUIDSGID, EPERM -->
```

What do you think?

Relevant docs: https://cspell.org/docs/Configuration/document-settings
created_at: 2025-05-19T07:39:20Z
author_association: NONE
diff_hunk: @@ -120,7 +120,7 @@ relevant to room members, the matrix-protection-suite combines a
 `SetMembershipPolicyRevision`, containing only the members that have
 matching policies, alongside each of these policies.
 
-Protections then only have to access precalculated matches when
+Protections then only have to access pre-calculated matches when
path: docs/matrix-protection-suite/concepts/protected-rooms-set.md
user: login: enbea
body: Merriam-Webster doesn't have either form though. I also couldn't find a dictionary that lists the hyphenated form.

And checking Google Ngram shows that "precalculated" is still the predominantly used form, although the hyphenated form has seen a sharp increase in use since 2000.

But ultimately neither form is _wrong_ so arguing over a minor stylistic choice is probably unproductive. I apologize for bringing it up.
created_at: 2025-05-19T08:07:41Z
author_association: NONE
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: Gnuxie
body: ah ok that would be a good idea 
created_at: 2025-05-19T10:42:41Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,45 @@
+aminda
+appservice
+appservices
+datadirectory
+deanonymisation
+deanonymise
+displayname
+dockerised
+dogfooded
+draupnir
+draupnir's
+draupnirs
+eperm
+filepermissions
+gnuxie
+homeserver
+homeservers
+honor
+honoring
+introspected
+joinable
+journalctl
+mjolnir
+mxid
+mxids
+neko
+nodesource
+nord
+pantalaimon
+powerlevel
+preemptively
+preminor
+ralston
+roomid
+rustup
+seibel's
+spammy
+sublicensable
+suidsgid
path: .cspell-allowed-words
user: login: davidjharder
body: oh, that's nice, let me revise.
created_at: 2025-05-19T16:55:44Z
author_association: CONTRIBUTOR

PR comments:
user: login: HarHarLinks
created_at: 2025-05-17T23:16:54Z
body: Awesome! On matrix.org we use https://github.com/matrix-org/matrix.org/blob/main/.github/workflows/spell-check.yaml
author_association: CONTRIBUTOR
user: login: davidjharder
created_at: 2025-05-19T17:12:49Z
body: - Added file-specific ignore lines as suggested by @enbea
- Allowed "precalculated", and reverted the hypenation
- Cspell now reports no errors after checking every .md/mdx file
author_association: CONTRIBUTOR
user: login: Gnuxie
created_at: 2025-05-19T20:13:11Z
body: Thankies!!
author_association: MEMBER