Release 0.71.0

harper-brill@0.71.0
harper-comments@0.71.0
harper-core@0.71.0
harper-html@0.71.0
harper-ink@0.71.0
harper-jjdescription@0.71.0
harper-literate-haskell@0.71.0
harper-ls@0.71.0
harper-pos-utils@0.71.0
harper-python@0.71.0
harper-stats@0.71.0
harper-tree-sitter@0.71.0
harper-typst@0.71.0

Generated by cargo-workspaces
This commit is contained in:
Elijah Potter 2025-11-06 08:51:10 -07:00
parent 05338099c6
commit 05d67d3d3e
20 changed files with 190 additions and 70 deletions

26
Cargo.lock generated
View file

@ -2646,7 +2646,7 @@ dependencies = [
[[package]]
name = "harper-brill"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-pos-utils",
"lazy_static",
@ -2677,7 +2677,7 @@ dependencies = [
[[package]]
name = "harper-comments"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"harper-html",
@ -2711,7 +2711,7 @@ dependencies = [
[[package]]
name = "harper-core"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"ammonia",
"bitflags 2.10.0",
@ -2749,7 +2749,7 @@ dependencies = [
[[package]]
name = "harper-html"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"harper-tree-sitter",
@ -2760,7 +2760,7 @@ dependencies = [
[[package]]
name = "harper-ink"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"harper-tree-sitter",
@ -2771,7 +2771,7 @@ dependencies = [
[[package]]
name = "harper-jjdescription"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"harper-tree-sitter",
@ -2782,7 +2782,7 @@ dependencies = [
[[package]]
name = "harper-literate-haskell"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-comments",
"harper-core",
@ -2793,7 +2793,7 @@ dependencies = [
[[package]]
name = "harper-ls"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"anyhow",
"clap",
@ -2824,7 +2824,7 @@ dependencies = [
[[package]]
name = "harper-pos-utils"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"burn",
"burn-ndarray",
@ -2842,7 +2842,7 @@ dependencies = [
[[package]]
name = "harper-python"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"harper-tree-sitter",
@ -2853,7 +2853,7 @@ dependencies = [
[[package]]
name = "harper-stats"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"chrono",
"harper-core",
@ -2864,7 +2864,7 @@ dependencies = [
[[package]]
name = "harper-tree-sitter"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"tree-sitter",
@ -2883,7 +2883,7 @@ dependencies = [
[[package]]
name = "harper-typst"
version = "0.70.0"
version = "0.71.0"
dependencies = [
"harper-core",
"itertools 0.14.0",

View file

@ -1,13 +1,13 @@
[package]
name = "harper-brill"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-pos-utils = { path = "../harper-pos-utils/", version = "0.70.0" }
harper-pos-utils = { path = "../harper-pos-utils/", version = "0.71.0" }
lazy_static = "1.5.0"
serde_json = "1.0.145"

View file

@ -9,19 +9,19 @@ repository = "https://github.com/automattic/harper"
anyhow = "1.0.100"
ariadne = "0.4.1"
clap = { version = "4.5.51", features = ["derive", "std", "string"], default-features = false }
harper-stats = { path = "../harper-stats", version = "0.70.0" }
harper-stats = { path = "../harper-stats", version = "0.71.0" }
dirs = "6.0.0"
harper-literate-haskell = { path = "../harper-literate-haskell", version = "0.70.0" }
harper-python = { path = "../harper-python", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-pos-utils = { path = "../harper-pos-utils", version = "0.70.0", features = [] }
harper-comments = { path = "../harper-comments", version = "0.70.0" }
harper-typst = { path = "../harper-typst", version = "0.70.0" }
harper-literate-haskell = { path = "../harper-literate-haskell", version = "0.71.0" }
harper-python = { path = "../harper-python", version = "0.71.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-pos-utils = { path = "../harper-pos-utils", version = "0.71.0", features = [] }
harper-comments = { path = "../harper-comments", version = "0.71.0" }
harper-typst = { path = "../harper-typst", version = "0.71.0" }
hashbrown = "0.16.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
strum = "0.27.2"
harper-ink = { version = "0.70.0", path = "../harper-ink" }
harper-ink = { version = "0.71.0", path = "../harper-ink" }
[features]
default = []

View file

@ -1,6 +1,6 @@
[package]
name = "harper-comments"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
@ -8,9 +8,9 @@ readme = "README.md"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-html = { path = "../harper-html", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-html = { path = "../harper-html", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
itertools = "0.14.0"
tree-sitter = "0.25.10"
tree-sitter-bash = "0.25.0"

View file

@ -1,6 +1,6 @@
[package]
name = "harper-core"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
@ -31,7 +31,7 @@ foldhash = "0.2.0"
strum_macros = "0.27.2"
strum = "0.27.2"
ammonia = "4.1.2"
harper-brill = { path = "../harper-brill", version = "0.70.0" }
harper-brill = { path = "../harper-brill", version = "0.71.0" }
bitflags = { version = "2.10.0", features = ["serde"] }
trie-rs = "0.4.2"

View file

@ -1,14 +1,14 @@
[package]
name = "harper-html"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
tree-sitter-html = "0.23.2"
tree-sitter = "0.25.10"

View file

@ -1,14 +1,14 @@
[package]
name = "harper-ink"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
tree-sitter-ink-lbz = "0.0.1"
tree-sitter = "0.25.10"

View file

@ -1,14 +1,14 @@
[package]
name = "harper-jjdescription"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
tree-sitter-jjdescription = "0.0.1"
tree-sitter = "0.25.10"

View file

@ -1,14 +1,14 @@
[package]
name = "harper-literate-haskell"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-comments = { path = "../harper-comments", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
harper-comments = { path = "../harper-comments", version = "0.71.0" }
itertools = "0.14.0"
paste = "1.0.14"

View file

@ -1,6 +1,6 @@
[package]
name = "harper-ls"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
@ -8,14 +8,14 @@ readme = "README.md"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-stats = { path = "../harper-stats", version = "0.70.0" }
harper-literate-haskell = { path = "../harper-literate-haskell", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.70.0", features = ["concurrent"] }
harper-comments = { path = "../harper-comments", version = "0.70.0" }
harper-jjdescription = { path = "../harper-jjdescription", version = "0.70.0" }
harper-typst = { path = "../harper-typst", version = "0.70.0" }
harper-html = { path = "../harper-html", version = "0.70.0" }
harper-python = { path = "../harper-python", version = "0.70.0" }
harper-stats = { path = "../harper-stats", version = "0.71.0" }
harper-literate-haskell = { path = "../harper-literate-haskell", version = "0.71.0" }
harper-core = { path = "../harper-core", version = "0.71.0", features = ["concurrent"] }
harper-comments = { path = "../harper-comments", version = "0.71.0" }
harper-jjdescription = { path = "../harper-jjdescription", version = "0.71.0" }
harper-typst = { path = "../harper-typst", version = "0.71.0" }
harper-html = { path = "../harper-html", version = "0.71.0" }
harper-python = { path = "../harper-python", version = "0.71.0" }
tower-lsp-server = "0.22.1"
tokio = { version = "1.48.0", default-features = false, features = ["fs", "io-std", "io-util", "macros", "net", "rt-multi-thread", "sync"] }
clap = { version = "4.5.51", default-features = false, features = ["derive", "std"] }
@ -32,7 +32,7 @@ futures = "0.3.31"
serde = { version = "1.0.228", features = ["derive"] }
indexmap = { version = "2.12.0", features = ["serde"] }
globset = "0.4.18"
harper-ink = { version = "0.70.0", path = "../harper-ink" }
harper-ink = { version = "0.71.0", path = "../harper-ink" }
[features]
default = []

View file

@ -1,6 +1,6 @@
[package]
name = "harper-pos-utils"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"

View file

@ -1,14 +1,14 @@
[package]
name = "harper-python"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
harper-tree-sitter = { path = "../harper-tree-sitter", version = "0.71.0" }
tree-sitter-python = "0.25.0"
tree-sitter = "0.25.10"

View file

@ -1,6 +1,6 @@
[package]
name = "harper-stats"
version = "0.70.0"
version = "0.71.0"
edition = "2021"
description = "The language checker for developers."
license = "Apache-2.0"
@ -9,7 +9,7 @@ repository = "https://github.com/automattic/harper"
[dependencies]
serde = { version = "1.0.228", features = ["derive"] }
harper-core = { path = "../harper-core", version = "0.70.0", features = ["concurrent"] }
harper-core = { path = "../harper-core", version = "0.71.0", features = ["concurrent"] }
uuid = { version = "1.18.1", features = ["serde", "v4"] }
serde_json = "1.0.145"
chrono = "0.4.42"

View file

@ -1,11 +1,11 @@
[package]
name = "harper-tree-sitter"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
tree-sitter = "0.25.10"

View file

@ -1,13 +1,13 @@
[package]
name = "harper-typst"
version = "0.70.0"
version = "0.71.0"
edition = "2024"
description = "The language checker for developers."
license = "Apache-2.0"
repository = "https://github.com/automattic/harper"
[dependencies]
harper-core = { path = "../harper-core", version = "0.70.0" }
harper-core = { path = "../harper-core", version = "0.71.0" }
typst-syntax = { version = "0.13.1" }
ordered-float = { version = "5.1.0", features = ["serde"] }
itertools = "0.14.0"

View file

@ -13,10 +13,10 @@ console_error_panic_hook = "0.1.7"
tracing = "0.1.41"
tracing-wasm = "0.2.1"
wasm-bindgen = "0.2.97"
harper-core = { path = "../harper-core", version = "0.70.0", features = ["concurrent"] }
harper-core = { path = "../harper-core", version = "0.71.0", features = ["concurrent"] }
once_cell = "1.21.3"
serde-wasm-bindgen = "0.6.5"
serde_json = "1.0.145"
serde = { version = "1.0.228", features = ["derive"] }
getrandom = { version = "0.3.4", default-features = false, features = ["wasm_js"] }
harper-stats = { path = "../harper-stats", version = "0.70.0", features = ["js"] }
harper-stats = { path = "../harper-stats", version = "0.71.0", features = ["js"] }

View file

@ -1,7 +1,7 @@
{
"name": "chrome-plugin",
"displayName": "chrome-plugin",
"version": "0.70.0",
"version": "0.71.0",
"author": "no one",
"description": "The private grammar checker for 21st Century English",
"type": "module",

View file

@ -1,6 +1,6 @@
{
"name": "harper.js",
"version": "0.70.0",
"version": "0.71.0",
"license": "Apache-2.0",
"author": "Elijah Potter",
"description": "The grammar checker that respects your privacy.",

View file

@ -1,7 +1,7 @@
{
"name": "obsidian-plugin",
"private": true,
"version": "0.70.0",
"version": "0.71.0",
"main": "main.js",
"devDependencies": {
"@playwright/test": "^1.52.0",

View file

@ -2,7 +2,7 @@
"name": "harper",
"displayName": "Harper - Grammar / Spell Checking",
"description": "The grammar checker for developers",
"version": "0.70.0",
"version": "0.71.0",
"private": true,
"author": "Elijah Potter",
"publisher": "elijah-potter",
@ -209,6 +209,12 @@
"default": true,
"description": "Corrects the missing article in `after while`, forming `after a while`."
},
"harper.linters.AfterLater": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Checks for the word `later` following `after [a period of time]`."
},
"harper.linters.AheadAnd": {
"scope": "resource",
"type": "boolean",
@ -219,13 +225,19 @@
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds redundant am/pm indicators used together with time periods such as 'in the morning' or 'at night'."
"description": "Finds and corrects common wrong forms of the phrase 'for all intents and purposes' / 'to all intents and purposes'."
},
"harper.linters.AllOfASudden": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `all of the sudden` to `all of a sudden`."
"description": "Guides this expression toward the standard `all of a sudden`."
},
"harper.linters.Alongside": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the spaced form `along side` with `alongside`."
},
"harper.linters.AlzheimersDisease": {
"scope": "resource",
@ -455,6 +467,12 @@
"default": true,
"description": "Changes `baited breath` to the correct `bated breath`."
},
"harper.linters.BeAllowed": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures the passive form uses `be allowed` after future negatives."
},
"harper.linters.BeRightBack": {
"scope": "resource",
"type": "boolean",
@ -509,6 +527,12 @@
"default": false,
"description": "This rule looks for particularly boring or overused words. Using varied language is an easy way to keep a reader's attention."
},
"harper.linters.Bought": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the incorrect past-tense spelling `bough` with `bought` after subject pronouns."
},
"harper.linters.Brutality": {
"scope": "resource",
"type": "boolean",
@ -569,6 +593,12 @@
"default": true,
"description": "Ensures `case-sensitive` is correctly hyphenated."
},
"harper.linters.CautionaryTale": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects confusion between `tale` (story) and `tail` (appendage) in common phrases."
},
"harper.linters.ChampAtTheBit": {
"scope": "resource",
"type": "boolean",
@ -617,6 +647,12 @@
"default": true,
"description": "Detects compound nouns split by a space and suggests merging them when both parts form a valid noun."
},
"harper.linters.CompoundSubjectI": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Promotes `I` in compound subjects headed by a possessive determiner."
},
"harper.linters.CondenseAllThe": {
"scope": "resource",
"type": "boolean",
@ -773,6 +809,12 @@
"default": true,
"description": "Ensures common initialisms (like \"i.e.\") are properly dot-separated."
},
"harper.linters.DoubleClick": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages hyphenating `double-click` and its inflections."
},
"harper.linters.DoubleModal": {
"scope": "resource",
"type": "boolean",
@ -785,6 +827,12 @@
"default": true,
"description": "Corrects `each and everyone` to `each and every one`."
},
"harper.linters.EggYolk": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects the eggcorn `egg yoke`, replacing it with the standard culinary term `egg yolk`."
},
"harper.linters.EllipsisLength": {
"scope": "resource",
"type": "boolean",
@ -1025,6 +1073,12 @@
"default": true,
"description": "Expands an initialism."
},
"harper.linters.FreePredicate": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Helps swap in `free` when a linking verb is followed by the noun `fee`."
},
"harper.linters.FreeRein": {
"scope": "resource",
"type": "boolean",
@ -1127,6 +1181,12 @@
"default": true,
"description": "Flags hedging language (e.g. `I would argue that`, `..., so to speak`, `to a certain degree`)."
},
"harper.linters.HelloGreeting": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Encourages greeting someone with `hello` instead of the homophone `halo`."
},
"harper.linters.Henceforth": {
"scope": "resource",
"type": "boolean",
@ -1445,6 +1505,12 @@
"default": true,
"description": "Changes `let along` to `let alone`."
},
"harper.linters.LetToDo": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects extraneous `to` after `let`."
},
"harper.linters.LetsConfusion": {
"scope": "resource",
"type": "boolean",
@ -1601,6 +1667,12 @@
"default": true,
"description": "Detects `of` mistakenly used with `would`, `could`, `should`, etc."
},
"harper.linters.ModalSeem": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects modal verbs followed by `seen` before adjectives and suggests `seem` or `be`."
},
"harper.linters.Months": {
"scope": "resource",
"type": "boolean",
@ -1625,6 +1697,12 @@
"default": true,
"description": "Corrects `most number` and `most amount`"
},
"harper.linters.MostOfTheTimes": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `a lot of the times` and `most of the times` to use singular `time`."
},
"harper.linters.Multicore": {
"scope": "resource",
"type": "boolean",
@ -1871,6 +1949,12 @@
"default": true,
"description": "Ensures `operating system` is used correctly instead of `operative system`."
},
"harper.linters.OrthographicConsistency": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Ensures word casing matches the dictionary's canonical orthography."
},
"harper.linters.OughtToBe": {
"scope": "resource",
"type": "boolean",
@ -1919,6 +2003,12 @@
"default": true,
"description": "Flags oxymoronic phrases (e.g. `amateur expert`, `increasingly less`, etc.)."
},
"harper.linters.PassersBy": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `passerbys` and `passer-bys` to `passersby` or `passers-by`."
},
"harper.linters.PeaceOfMind": {
"scope": "resource",
"type": "boolean",
@ -1997,6 +2087,12 @@
"default": true,
"description": "Detects the ungrammatical patterns `<pronoun> have …ing` (e.g., `I have …ing`) and `<pronoun>'ve …ing` (e.g., `I've …ing`) and suggests either the present progressive (e.g., `I'm/We're/You're/They're …`) or the present perfect progressive (e.g., `I/We/You/They have been …` or `I've/We've/You've/They've been …`)."
},
"harper.linters.PronounAre": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Spots the letter `r` used in place of `are` or `you're` after plural first- or second-person pronouns."
},
"harper.linters.PronounContraction": {
"scope": "resource",
"type": "boolean",
@ -2033,6 +2129,12 @@
"default": true,
"description": "Detects missing `of` after the quantifier “a couple” when it precedes a plural noun"
},
"harper.linters.QuiteMany": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Corrects `quite many` to `quite a few`, which is the more natural and idiomatic phrase in standard English. `Quite many` is considered non-standard usage."
},
"harper.linters.QuiteQuiet": {
"scope": "resource",
"type": "boolean",
@ -2129,6 +2231,12 @@
"default": true,
"description": "Corrects pluralizing the wrong noun in `rule of thumb`."
},
"harper.linters.SafeToSave": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Detects `safe` (adjective) when `save` (verb) is intended after modal verbs like `could` or `should`."
},
"harper.linters.SameAs": {
"scope": "resource",
"type": "boolean",
@ -2279,6 +2387,12 @@
"default": false,
"description": "Most style guides recommend that you spell out numbers less than ten."
},
"harper.linters.SplitWords": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Finds missing spaces in improper compound words."
},
"harper.linters.Starving": {
"scope": "resource",
"type": "boolean",
@ -2387,6 +2501,12 @@
"default": true,
"description": "Looks for incorrect spacing inside the closed compound `therefore`."
},
"harper.linters.Theres": {
"scope": "resource",
"type": "boolean",
"default": true,
"description": "Replaces the mistaken possessive `their's` before a determiner with the contraction `there's`."
},
"harper.linters.Thereupon": {
"scope": "resource",
"type": "boolean",