Releases: Automattic/harper
Releases · Automattic/harper
v0.32.1
What's Changed
- feat: aswell→as well by @hippietrail in #1161
- Fix false positive in let/lets→let's by @hippietrail in #1158
- feat: last ditched/ditch→last-ditch by @hippietrail in #1147
- build: add caching by @elijah-potter in #1172
- feat: implement
assert_any_suggestion_result
as in #950 by @hippietrail in #1033 - Add
core_version
toharper-core
by @HobbitJack in #1168 - fix(core): runaway
harper-ls
processes by @elijah-potter in #1163 - fix(core): ignore whitespace when matching case by @elijah-potter in #1165
- Rules by @elijah-potter in #1128
- fix(core): don't lex the last period as part of a number by @elijah-potter in #1162
- fix(#1051): Ignore potential ordinal suffixes of length greater than 2 by @grantlemons in #1054
- docs: fix incorrect documentation for some linters by @86xsk in #1151
- refactor: Rename
ACO
toWord
by @RunDevelopment in #1149 - fix(core): allow erroneous
shift
usage in spellcheck by @elijah-potter in #1166 - feat: iterator API for pattern matches by @RunDevelopment in #1155
- feat: Flag phrasal verbs spelled as compound nouns by @hippietrail in #991
- fix(core): improve
Dashes
description by @elijah-potter in #1174 - Add snapshot tests for token metadata (aka part-of-speech tags) by @RunDevelopment in #1119
- docs(readme): fix grammar and minor rephrasing by @86xsk in #1176
- feat: zero-width patterns by @RunDevelopment in #1153
- chore(harper-core/dictionary): add unpublish(ing) forms with flags by @uncenter in #1180
- feat(core): avoid providing multiple lints for a single long hyphen sequence in
Dashes
by @86xsk in #1182 - feat: once a while→once in a while by @hippietrail in #1191
- chore(harper-core/dictionary): add developer-related nouns by @uncenter in #1179
- fix: running individual tests was broken by @hippietrail in #1184
- feat: how it looks like→how it looks/what it looks like by @hippietrail in #1146
- chore(harper-core/dictionary): add Tree-sitter by @uncenter in #1193
- fix: add exception to possessive_your linter by @hippietrail in #1201
- feat(ls): write sorted dictionaries by @86xsk in #1195
- feat: dictionary curation and dialect tests by @hippietrail in #1197
- chore(harper-core/dictionary): add manufacturable and favicon by @uncenter in #1194
- fix: exception for "how did you" in how-to linter by @hippietrail in #1200
- feat:Guilded Age→Gilded Age; once and a while→once in a while by @hippietrail in #1196
- fix: heuristics to fix "comparison to expected results" by @hippietrail in #1186
- chore: convert commented out tests to use
#[ignore]
by @hippietrail in #1199 - Print version numbers by @elijah-potter in #1204
New Contributors
- @HobbitJack made their first contribution in #1168
- @uncenter made their first contribution in #1180
Full Changelog: v0.31.0...v0.32.1
v0.31.0
What's Changed
- No invalid
private = true
fields inCargo.toml
by @RunDevelopment in #1120 - Dictionary curation 2025 04 22 by @hippietrail in #1122
- Flags the definite article used together with a possessive by @hippietrail in #1112
- dictionary: Added Schengen by @jpds in #1083
- Removed the useless
SequencePattern
inIndefiniteArticle
by @RunDevelopment in #1125 - Use
Option<NonZeroUsize>
as the return type ofPattern::matches
by @RunDevelopment in #1124 - fix: Make code compile without
concurrent
feature by @RunDevelopment in #1140 - refactor: removed unused patterns by @RunDevelopment in #1141
- Dictionary curation 2025 04 25 by @hippietrail in #1136
- feat:
Document
QoL functions for tokens & words by @hippietrail in #1117 - feat: invest into→invest in by @hippietrail in #1139
New Contributors
Full Changelog: v0.30.0...v0.31.0
v0.30.0
What's Changed
- docs: clarify question on FAQ by @elijah-potter in #1087
- feat: handle some false positives in let/lets/let's/let us by @hippietrail in #1085
- feat: have past→have passed by @hippietrail in #1088
- build(deps): bump clap from 4.5.36 to 4.5.37 by @dependabot in #1093
- feat: Australian English affix annotation
_
by @hippietrail in #1094 - fix: reset vscode version to
1.96.2
by @hippietrail in #1084 - Dictionary (and adj-of-a) curation 2025 04 18 by @hippietrail in #1090
- Updated
justfile
to check tests and benches by @RunDevelopment in #1098 - feat: worse-case scenario→worst-case scenario by @hippietrail in #1104
- docs(obsidian): wrote initial contributor's guide by @elijah-potter in #1105
- feat: incase→in case by @hippietrail in #1103
- feat: adds a
t_ws()
shorthand forthen_whitespace()
in the spirit oft_aco()
by @hippietrail in #1115 - feat: implement dialect indicator for Obsidian plugin by @hippietrail in #1102
- Fix Lua syntax in neovim example config by @nikosavola in #1110
- feat: client's side→client-side, server's side→server side by @hippietrail in #1109
- fix(obsidian): console contamination by @elijah-potter in #1116
- feat(core): add several novel rules by @elijah-potter in #1108
New Contributors
- @nikosavola made their first contribution in #1110
Full Changelog: v0.29.1...v0.30.0
v0.29.1
What's Changed
- chore: "off of a" false positive by @hippietrail in #1081
- feat: phrase corrections: like a plague, have went, case and point, aswell by @hippietrail in #1078
- Dictionary curation 2025 04 17 by @hippietrail in #1080
- fix: #1075 package logo font for vscode extension by @hippietrail in #1077
Full Changelog: v0.29.0...v0.29.1
v0.29.0
What's Changed
- refactor: remove unneeded logic for repeated words by @hippietrail in #1020
- fix: improve to handle -s -es and -ed endings by @hippietrail in #1003
- feat: start clarifying affix system by @hippietrail in #972
- refactor: improve logic and robustness of then→than by @hippietrail in #1021
- Curate existing rules by @elijah-potter in #1023
- fix: new logic and false positives by @hippietrail in #1024
- build(deps): bump tokio from 1.44.1 to 1.44.2 by @dependabot in #1040
- build(deps): bump indexmap from 2.8.0 to 2.9.0 by @dependabot in #1037
- build(deps): bump uuid from 1.12.0 to 1.16.0 by @dependabot in #1038
- feat: use the old code if
parallel
unavailable by @hippietrail in #1019 - feat: mention which verb triggered lint in msg by @hippietrail in #1034
- feat: Expand "cuz", correct "on face value" by @hippietrail in #1030
- feat: exempt "you guys" from the possessive your linter by @hippietrail in #1027
- feat: trail and error→trial and error by @hippietrail in #1044
- chore: tweak priority/position of statusbar item and add Harper logo by @hippietrail in #1043
- chore: "side of a" false positive by @hippietrail in #1029
- feat: Add special cases to sentence capitalization by @hippietrail in #1031
- feat: don't allow "let's" to trigger a following compound by @hippietrail in #1032
- Dictionary curation 2025 04 04 by @hippietrail in #1028
- feature: highly kept (secret)→well-kept by @hippietrail in #1045
- Documentation updates by @mcecode in #1000
- chore: manually spotted 3 things our lints would flag in doc comments by @hippietrail in #1047
- feat: sequential pronouns: don't detect "my US", make case insensitive by @hippietrail in #1026
- feat(devshell): init devshell by @alDuncanson in #1014
harper.js
API reference generation improvements by @mcecode in #1050- fix(comments): ignore comments CSpell compatibility by @mcecode in #1046
- fix: update vscode deps by @hippietrail in #1042
- feat: hone in on→home in on by @hippietrail in #1059
- Adj of a curation 2025 04 09 by @hippietrail in #1053
- Dictionary curation 2025 04 08 by @hippietrail in #1052
- fix: make modal-of linter case insensitive by @hippietrail in #1048
- build(deps): bump clap from 4.5.34 to 4.5.36 by @dependabot in #1060
- build(deps): bump anyhow from 1.0.97 to 1.0.98 by @dependabot in #1063
- build(deps): bump lru from 0.13.0 to 0.14.0 by @dependabot in #1061
- build(deps): bump smallvec from 1.14.0 to 1.15.0 by @dependabot in #1062
- feat(core): add simple corrections from my notes by @elijah-potter in #1025
- Fix bug 1066 "Stack Overflow", dictionary curation, adjective-of-a curation by @hippietrail in #1068
- feat: add for (a)while, after (a)while, unless if, suffice to say by @hippietrail in #1071
Full Changelog: v0.28.0...v0.29.0
v0.28.0
What's Changed
- fix(vscode-plugin): sleep a longer time after openUntitled by @kiding in #1004
- docs: update link to website by @alDuncanson in #1007
- feat(harper-cli): make lint accept user & file-local dictionary by @kiding in #987
- feat(ls): use PlainEnglish parser for language id "text" by @86xsk in #968
- docs: fix grammar by @alDuncanson in #1009
- feat(comments): add
scala
support by @tymcauley in #970 - docs(core): update the
Author a Rule
page to align with code by @elijah-potter in #1008 - feat(core): make
LintConfig
sorted by key by @elijah-potter in #1012 - feat: wrote first draft of statistics logging by @elijah-potter in #454
- feat(obsidian): add debounce setting by @elijah-potter in #1015
- feat(harper.js): significantly improve worker performance by @elijah-potter in #1016
- feat: #20 : comma spacing and #498 : Asian commas by @hippietrail in #891
- feat(core): added a bunch more common rules by @elijah-potter in #940
- chore: merge and sort original and non-US sections by @hippietrail in #977
- Adj of a curation 2025 04 02 by @hippietrail in #1006
New Contributors
- @alDuncanson made their first contribution in #1007
- @tymcauley made their first contribution in #970
Full Changelog: v0.27.0...v0.28.0
v0.27.0
What's Changed
- fix(harper-ls): handle language mode change and VS Code auto detect by @kiding in #966
- feat: linters for common mistakes with "another" by @hippietrail in #963
- Dictionary curation 2025 03 06 by @hippietrail in #837
- feat(core): flag " of a" by @hippietrail in #967
- fix: include the full set of personal pronouns and possessives by @hippietrail in #964
- fix: 2 words in curated dict lack / before annotations by @hippietrail in #958
- feat: implement #828 by @hippietrail in #853
- VS Code Extension Updates by @mcecode in #960
- doc(core): write up the difference between a
Linter
and aPatternLinter
by @elijah-potter in #973 - fix(core): remove bad phrase by @elijah-potter in #974
- fix: handle another false positive in "adjective of a" by @hippietrail in #980
- feat(harper-typst): ignore file path as arguments, regex, .display by @kiding in #976
- Improve doc coverage by @elijah-potter in #979
- feat: detect capitalized false positives by @hippietrail in #988
- fix(harper-cli): set American as the default dialect by @kiding in #986
- build(deps): bump once_cell from 1.21.1 to 1.21.3 by @dependabot in #996
- feat: more false positives: "inside of" & "out of" by @hippietrail in #992
- template for feature requests on github by @hippietrail in #981
- build(deps): bump clap from 4.5.32 to 4.5.34 by @dependabot in #995
- feat: implement #993 by @hippietrail in #994
- Dialect indicator for VS Code extension by @hippietrail in #985
- chore: "head of a" false positive + test by @hippietrail in #999
- test(core): confirm that #720 is no longer present by @elijah-potter in #975
- fix(wordpress): crashes when options menu is opened by @elijah-potter in #1002
Full Changelog: v0.26.0...v0.27.0
v0.26.0
What's Changed
- docs: fix user dictionary by @kit494way in #893
- feat: mask out comments beginning with spellchecker:ignore by @grantlemons in #861
- feat(harper.js): export both binary and inlinedBinary for different runtimes by @Asuka109 in #607
- feat: linter for "as far back as" to replace "as early back as" by @hippietrail in #889
- feat: flag "explanation mark/point" instead of "exclamation" by @hippietrail in #895
- feat: correct "in anyway" to "in any way" by @hippietrail in #894
- build(deps): bump @babel/helpers from 7.26.9 to 7.26.10 in /packages by @dependabot in #899
- fix: two spelling mistakes based on homophones by @hippietrail in #886
- feat: allow blank lines and comments in
dictionary.dict
by @hippietrail in #756 - docs: fix typo #906 by @hippietrail in #912
- hotfix(core): properly store spans in
PatternLinter
cache by @elijah-potter in #926 - Dictionary curation 2025 03 12 by @hippietrail in #902
- Dialect prototyping by @elijah-potter in #925
- feat: insert newline automatically in
just addnoun
by @elijah-potter in #931 - docs: fix 3 grammar mistakes by @hippietrail in #933
- feat: linter for "each and everyone" by @hippietrail in #923
- feat: expand the "get rid off" lint to cover "get ride of" by @hippietrail in #900
- fix(vscode-plugin): ignore non-existent ".git" files, support untitled/unsaved files on VS Code by @kiding in #927
- feat(core): improve assertion to allow overlapping suggestions by @elijah-potter in #935
- build(deps): bump @wordpress/editor from 14.19.0 to 14.20.0 in /packages by @dependabot in #915
- build(deps): bump indexmap from 2.7.1 to 2.8.0 by @dependabot in #921
- build(deps): bump tokio from 1.43.0 to 1.44.1 by @dependabot in #919
- build(deps-dev): bump @types/node from 22.13.9 to 22.13.10 in /packages by @dependabot in #913
- build(deps): bump foldhash from 0.1.4 to 0.1.5 by @dependabot in #917
- feat: correct "along time" to "a long time" by @hippietrail in #910
- Add -able affix to open (openable) by @claydugo in #930
- docs: mention hidden library dependencies by @elijah-potter in #943
- feat(core): create new test assertion for
nth
suggestion results by @elijah-potter in #942 - build: migrate to pnpm workspace & biome by @Asuka109 in #924
- build(deps): bump serde from 1.0.218 to 1.0.219 by @dependabot in #920
- build(deps): bump clap from 4.5.31 to 4.5.32 by @dependabot in #946
- Web improvements by @elijah-potter in #944
- feat: ignore shebang lines by @holmanb in #947
- feat(web): add mask-image to header by @Asuka109 in #951
- fix(core): reduce ambiguity for
AvoidContraction
by @elijah-potter in #941 - chore: add comments describing major sections by @hippietrail in #952
New Contributors
- @kit494way made their first contribution in #893
- @holmanb made their first contribution in #947
Full Changelog: v0.25.1...v0.26.0
v0.25.1
What's Changed
- docs(ls): give example config that disables
sentence_capitalization
by @elijah-potter in #879 - fix(core): indexing problem in Regexish work by @elijah-potter in #883
- Just getforms improvements by @hippietrail in #862
- Dictionary curation 2025 03 11 by @hippietrail in #884
- fix(core): insert paragraph breaks after code blocks by @elijah-potter in #882
Full Changelog: v0.25.0...v0.25.1
v0.25.0
What's Changed
- docs: update integrations section by @mcecode in #755
- Typst Corrections by @grantlemons in #442
- refactor: add comments to
just addnoun
and tweak logic by @hippietrail in #605 - feat: implements #841 by @hippietrail in #842
- Add WordPress Plugin Documentation and Demo by @elijah-potter in #838
- feat: add
just newest-dict-changes
by @hippietrail in #701 - Spellcheck improvements by @elijah-potter in #844
- fix: add missing "gotten rid off" to other "rid off" by @hippietrail in #840
- Rules page improvements by @elijah-potter in #843
- build(deps): bump axios from 1.8.1 to 1.8.2 in /packages by @dependabot in #845
- Regexish by @hippietrail in #669
- fix: fall back to
grep
whenrg
is not available by @hippietrail in #848 - feat: flag "monumentous" and offer "momentous" and "monumental" by @hippietrail in #864
- build(deps-dev): bump svelte-check from 4.1.4 to 4.1.5 in /packages by @dependabot in #874
- build(deps): bump typst-syntax from 0.13.0 to 0.13.1 by @dependabot in #867
- build(deps-dev): bump typescript from 5.7.3 to 5.8.2 in /packages by @dependabot in #871
- build(deps-dev): bump autoprefixer from 10.4.20 to 10.4.21 in /packages by @dependabot in #873
- Dictionary curation 2025 03 08 by @hippietrail in #860
- feat: add many variants of "change of tact"->"tack" by @hippietrail in #852
- feat: implement #525 (worse/worst confusion) by @hippietrail in #856
- build(deps): bump cached from 0.54.0 to 0.55.1 by @dependabot in #868
- build(deps): bump anyhow from 1.0.96 to 1.0.97 by @dependabot in #865
- Build against an older GLIBC version by @elijah-potter in #877
- Cache busting by @elijah-potter in #876
- build(deps): bump thiserror from 2.0.11 to 2.0.12 by @dependabot in #866
- build(deps): bump serde_json from 1.0.139 to 1.0.140 by @dependabot in #869
- feat: add a lint to correct "in of itself" to "in and of itself" by @hippietrail in #863
- feat: implement "ticking time clock" by @hippietrail in #851
- feat: implements #746 by @hippietrail in #855
- feat(dict): added words to dictionary by @ficcdaf in #847
- fix: Ignore hex codes inside rgb function calls by @grantlemons in #857
- feat: Added Linux musl compilations by @kiding in #878
New Contributors
Full Changelog: v0.24.0...v0.25.0