Add codespell support (config, workflow to detect/not fix) and make it fix some typos (#7864)

* Add github action to codespell preview on push and PRs

* Add rudimentary codespell config

* [DATALAD RUNCMD] chore: run codespell throughout fixing a few typos interactively

=== Do not change lines below ===
{
 "chain": [],
 "cmd": "codespell -w -i 3 -C 4 ./apps/web/core/components/workspace/delete-workspace-form.tsx ./deployments/cli/community/README.md",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^

* Adjust coespell regex to ignore all camelCased words

* [DATALAD RUNCMD] chore: run codespell throughout fixing a few  new typos automagically

=== Do not change lines below ===
{
 "chain": [],
 "cmd": "codespell -w",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^
This commit is contained in:
Yaroslav Halchenko
2025-10-07 08:12:49 -04:00
committed by GitHub
parent 07ff457663
commit 2ca8620246
22 changed files with 61 additions and 29 deletions

7
.codespellrc Normal file
View File

@@ -0,0 +1,7 @@
[codespell]
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
skip = .git*,*.svg,i18n,*-lock.yaml,*.css,.codespellrc,migrations,*.js,*.map,*.mjs
check-hidden = true
# ignore all CamelCase and camelCase
ignore-regex = \b[A-Za-z][a-z]+[A-Z][a-zA-Z]+\b
ignore-words-list = tread

25
.github/workflows/codespell.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Codespell configuration is within .codespellrc
---
name: Codespell
on:
push:
branches: [preview]
pull_request:
branches: [preview]
permissions:
contents: read
jobs:
codespell:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Annotate locations with typos
uses: codespell-project/codespell-problem-matcher@v1
- name: Codespell
uses: codespell-project/actions-codespell@v2

View File

@@ -1,4 +1,4 @@
# Module improts
# Module imports
from .base import BaseSerializer
from .issue import IssueExpandSerializer
from plane.db.models import IntakeIssue, Issue

View File

@@ -1196,7 +1196,7 @@ class CycleAnalyticsEndpoint(BaseAPIView):
if the issues were transferred to the new cycle, then the progress_snapshot will be present
return the progress_snapshot data in the analytics for each date
else issues were not transferred to the new cycle then generate the stats from the cycle isssue bridge tables
else issues were not transferred to the new cycle then generate the stats from the cycle issue bridge tables
"""
if cycle.progress_snapshot:

View File

@@ -48,7 +48,7 @@ class ProjectMemberViewSet(BaseViewSet):
# Check if the members array is empty
if not len(members):
return Response(
{"error": "Atleast one member is required"},
{"error": "At least one member is required"},
status=status.HTTP_400_BAD_REQUEST,
)

View File

@@ -48,7 +48,7 @@ AUTHENTICATION_ERROR_CODES = {
"INCORRECT_OLD_PASSWORD": 5135,
"MISSING_PASSWORD": 5138,
"INVALID_NEW_PASSWORD": 5140,
# set passowrd
# set password
"PASSWORD_ALREADY_SET": 5145,
# Admin
"ADMIN_ALREADY_EXIST": 5150,

View File

@@ -31,4 +31,4 @@ class Command(BaseCommand):
user.is_active = True
user.save()
self.stdout.write(self.style.SUCCESS("User activated succesfully"))
self.stdout.write(self.style.SUCCESS("User activated successfully"))

View File

@@ -59,4 +59,4 @@ class Command(BaseCommand):
user.is_password_autoset = False
user.save()
self.stdout.write(self.style.SUCCESS("User password updated succesfully"))
self.stdout.write(self.style.SUCCESS("User password updated successfully"))

View File

@@ -70,7 +70,7 @@ class Command(BaseCommand):
try:
s3_client.delete_object(Bucket=bucket_name, Key="test_permission_check.txt")
except ClientError:
self.stdout.write("Coudn't delete test object")
self.stdout.write("Couldn't delete test object")
# 4. Test s3:PutBucketPolicy (attempt to put a bucket policy)
try:

View File

@@ -66,7 +66,7 @@ export enum EAuthenticationErrorCodes {
INCORRECT_OLD_PASSWORD = "5135",
MISSING_PASSWORD = "5138",
INVALID_NEW_PASSWORD = "5140",
// set passowrd
// set password
PASSWORD_ALREADY_SET = "5145",
// Admin
ADMIN_ALREADY_EXIST = "5150",

View File

@@ -313,7 +313,7 @@ export class BaseTimeLineStore implements IBaseTimelineStore {
});
/**
* updates the block's position such as marginLeft and width wile dragging
* updates the block's position such as marginLeft and width while dragging
* @param id
* @param deltaLeft
* @param deltaWidth

View File

@@ -132,7 +132,7 @@ export const BaseListRoot = observer((props: IBaseListRoot) => {
[fetchNextIssues]
);
// kanbanFilters and EIssueFilterType.KANBAN_FILTERS are used becuase the state is shared between kanban view and list view
// kanbanFilters and EIssueFilterType.KANBAN_FILTERS are used because the state is shared between kanban view and list view
const handleCollapsedGroups = useCallback(
(value: string) => {
if (workspaceSlug) {

View File

@@ -1,5 +1,5 @@
if (typeof window !== "undefined" && window) {
// Add request callback polyfill to browser incase it does not exist
// Add request callback polyfill to browser in case it does not exist
window.requestIdleCallback =
window.requestIdleCallback ??
function (cb) {

View File

@@ -110,7 +110,7 @@ declare interface SQLitePrepareOptions {
* the corresponding Javascript wrapper will throw an exception with a
* `code` property on an error.
*
* Note that a few functions return a Promise in order to accomodate
* Note that a few functions return a Promise in order to accommodate
* either a synchronous or asynchronous SQLite build, generally those
* involved with opening/closing a database or executing a statement.
*
@@ -330,7 +330,7 @@ declare interface SQLiteAPI {
column(stmt: number, i: number): SQLiteCompatibleType;
/**
* Extract a column value from a row after a prepared statment {@link step}
* Extract a column value from a row after a prepared statement {@link step}
*
* The contents of the returned buffer may be invalid after the
* next SQLite call. Make a copy of the data (e.g. with `.slice()`)
@@ -360,7 +360,7 @@ declare interface SQLiteAPI {
column_count(stmt: number): number;
/**
* Extract a column value from a row after a prepared statment {@link step}
* Extract a column value from a row after a prepared statement {@link step}
* @see https://www.sqlite.org/c3ref/column_blob.html
* @param stmt prepared statement pointer
* @param i column index
@@ -369,7 +369,7 @@ declare interface SQLiteAPI {
column_double(stmt: number, i: number): number;
/**
* Extract a column value from a row after a prepared statment {@link step}
* Extract a column value from a row after a prepared statement {@link step}
* @see https://www.sqlite.org/c3ref/column_blob.html
* @param stmt prepared statement pointer
* @param i column index
@@ -378,7 +378,7 @@ declare interface SQLiteAPI {
column_int(stmt: number, i: number): number;
/**
* Extract a column value from a row after a prepared statment {@link step}
* Extract a column value from a row after a prepared statement {@link step}
* @see https://www.sqlite.org/c3ref/column_blob.html
* @param stmt prepared statement pointer
* @param i column index
@@ -406,7 +406,7 @@ declare interface SQLiteAPI {
column_names(stmt: number): Array<string>;
/**
* Extract a column value from a row after a prepared statment {@link step}
* Extract a column value from a row after a prepared statement {@link step}
* @see https://www.sqlite.org/c3ref/column_blob.html
* @param stmt prepared statement pointer
* @param i column index
@@ -1190,7 +1190,7 @@ declare module "wa-sqlite/src/VFS.js" {
*/
xAccess(name: string, flags: number, pResOut: DataView): number;
/**
* Handle asynchronous operation. This implementation will be overriden on
* Handle asynchronous operation. This implementation will be overridden on
* registration by an Asyncify build.
* @param {function(): Promise<number>} f
* @returns {number}

View File

@@ -1673,7 +1673,7 @@ export abstract class BaseIssuesStore implements IBaseIssuesStore {
};
/**
* This Method is used to get data of the issue based on the ids of the data for states, labels adn assignees
* This Method is used to get data of the issue based on the ids of the data for states, labels and assignees
* @param dataType what type of data is being sent
* @param dataIds id/ids of the data that is to be populated
* @param order ascending or descending for arrays of data

View File

@@ -238,7 +238,7 @@ export class StateStore implements IStateStore {
};
/**
* deletes the state from the store, incase of failure reverts back to original state
* deletes the state from the store, in case of failure reverts back to original state
* @param workspaceSlug
* @param projectId
* @param stateId

View File

@@ -256,7 +256,7 @@ export class UserStore implements IUserStore {
// helper actions
/**
* @description fetches the prjects with write permissions
* @description fetches the projects with write permissions
* @returns {{[projectId: string]: number} || null}
*/
fetchProjectsWithCreatePermissions = (): { [key: string]: TUserPermissions } => {

View File

@@ -78,7 +78,7 @@ export enum EAuthenticationErrorCodes {
INCORRECT_OLD_PASSWORD = "5135",
MISSING_PASSWORD = "5138",
INVALID_NEW_PASSWORD = "5140",
// set passowrd
// set password
PASSWORD_ALREADY_SET = "5145",
// Admin
ADMIN_ALREADY_EXIST = "5150",

View File

@@ -156,7 +156,7 @@ There are many other settings you can play with, but we suggest you configure `E
### Continue with setup - Start Server (Docker Compose)
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `2` to start the sevices
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `2` to start the services
```bash
Select a Action you want to perform:
@@ -191,7 +191,7 @@ In case you want to make changes to `plane.env` variables, we suggest you to sto
#### Docker Compose
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `3` to stop the sevices
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `3` to stop the services
```bash
Select a Action you want to perform:
@@ -213,7 +213,7 @@ If all goes well, you must see something like this
#### Docker Swarm
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `2` to stop the sevices
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `2` to stop the services
```bash
Select an Action you want to perform:
@@ -236,7 +236,7 @@ If all goes well, you will see the confirmation from docker cli
In case you want to make changes to `plane.env` variables, without stopping the server or you noticed some abnormalies in services, you can restart the services with `RESTART` / `REDEPLOY` option.
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `4` to restart the sevices
Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `4` to restart the services
#### Docker Compose
```bash

View File

@@ -114,7 +114,7 @@ export function LowlightPlugin({
([oldNodeName, newNodeName].includes(name) ||
// OR transaction adds/removes named node,
newNodes.length !== oldNodes.length ||
// OR transaction has changes that completely encapsulte a node
// OR transaction has changes that completely encapsulate a node
// (for example, a transaction that affects the entire document).
// Such transactions can happen during collab syncing via y-prosemirror, for example.
transaction.steps.some(

View File

@@ -47,7 +47,7 @@ export function autolink(options: AutolinkOptions): Plugin {
);
} else if (
nodesInChangedRanges.length &&
// We want to make sure to include the block seperator argument to treat hard breaks like spaces.
// We want to make sure to include the block separator argument to treat hard breaks like spaces.
newState.doc.textBetween(newRange.from, newRange.to, " ", " ").endsWith(" ")
) {
textBlock = nodesInChangedRanges[0];

View File

@@ -73,7 +73,7 @@ export interface WorkItemInsightColumns {
backlog_work_items: number;
un_started_work_items: number;
started_work_items: number;
// incase of peek view, we will display the display_name instead of project__name
// in case of peek view, we will display the display_name instead of project__name
display_name?: string;
avatar_url?: string;
assignee_id?: string;