Releases: Automattic/harper
v2.1.0
What's Changed
- fix(chrome-ext): Harper not activating in Instagram DMs by @elijah-potter in #3145
- fix: all to/too linters now use same
LintKindby @hippietrail in #3135 - chore: dictionary curation 2026/04/02 by @hippietrail in #3094
- refactor(core)!: remove unused argument/member by @86xsk in #3072
- feat:
justls-config,grep-config, andgrep-config-settingsby @hippietrail in #3144 - feat: add soft-clean and hard-clean recipes to justfile by @ninjamar in #3142
- fix: "it damages the environment" by @hippietrail in #3149
- fix: refering -> referring in damages message string by @Inhishonor in #3148
- fix(core): many small issues by @elijah-potter in #3150
- build(deps): bump zip from 8.5.0 to 8.5.1 by @dependabot[bot] in #3163
- build(deps): bump tokio from 1.50.0 to 1.51.1 by @dependabot[bot] in #3162
- build(deps): bump tree-sitter-asciidoc from 0.6.0 to 0.7.0 by @dependabot[bot] in #3160
- build(deps): bump rand from 0.10.0 to 0.10.1 by @dependabot[bot] in #3159
- fix(dict): remove stale ElasticSearch entry in favour of Elasticsearch by @unlimitedsola in #3154
- feat(chrome-ext): add delay option by @elijah-potter in #3166
- refactor(core): refactor
TokenStringExtby @86xsk in #2888 - feat(core): rule that requires that the dash between numbers in a range is an en dash by @elijah-potter in #2961
- fix(core): address several outstanding issues by @elijah-potter in #3169
- feat: code on rust→code in rust etc. by @hippietrail in #3172
- fix: don't flag "should soft-fork" by @hippietrail in #3171
- feat: govt → government by @hippietrail in #3212
- feat: close/tight nit → knit by @hippietrail in #3200
- fix: lint comments after shebangs by @lawrence3699 in #3199
- refactor: don't flag "a fun and fantastic" by @hippietrail in #3201
- build(deps): bump thin-vec from 0.2.14 to 0.2.16 by @dependabot[bot] in #3182
- Hereby: require verb that is not also a noun by @joaquinhuigomez in #3213
- feat: more than what meets the eye/more that meets the eye→more than meets the eye by @hippietrail in #3178
- feat: infliction point → inflection point by @hippietrail in #3216
- Dictionary curation 2026 04 14 by @hippietrail in #3189
- fix: delete superseded linter by @hippietrail in #3231
- chore: dictionary curation by @hippietrail in #3228
- fix(vscode): pre-select current dialect in the dialect picker by @LanceYing2004 in #3198
New Contributors
- @ninjamar made their first contribution in #3142
- @unlimitedsola made their first contribution in #3154
- @lawrence3699 made their first contribution in #3199
- @LanceYing2004 made their first contribution in #3198
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
Hey all! We're finally releasing Harper 2.0. Why?
It isn't because we have any new groundbreaking features in this release, because we don't let major versioning stop us from pushing those out as soon as they're ready. It's because we have some breaking changes.
The biggest one only applies to you if you consume harper.js. From now on, instead of importing your binary from the main Harper module, you'll import it from one of four specialized modules.
Previously, you'd import the Harper WebAssembly binary with:
import { LocalLinter, binary } from "harper.js";As of Harper 2.0, you'll import it like this:
import { LocalLinter } from "harper.js";
import { binary } from "harper.js/binary"; It's that simple! Thanks to this change, you'll find that your applications are more conducive to tree-shaking and therefore might even be a bit smaller!
In addition to that large breaking change, we also have a bunch of smaller improvements rolling out. I won't go through them one by one, but you're free to read through any of the linked pull requests below.
- refactor(core): use
Option::get_or_insert_withby @86xsk in #2977 - test(linting): add comprehensive test cases for were/where lint rule by @estefafdez in #2984
- feat: means a lot for→means a lot to by @hippietrail in #2982
- feat: add subcommand to generate shell completions by @deckstose in #2978
- refactor(core): extract indefinite article logic into its own module by @mvanhorn in #2980
- feat(web): auto-detect dark theme from OS preference in #2963
- build(deps): bump tar from 0.4.44 to 0.4.45 by @dependabot[bot] in #2986
- feat: as evident by -> as evidenced by by @mvanhorn in #2985
- fix(core):
SplitWordsallowing uncommon merges by @elijah-potter in #2874 - feat: add lint rule for flaunt/flout mix-up in #2962
- test: add regression tests for need_to_noun false positives (#2320) by @majiayu000 in #3014
- fix: case-insensitive same-form check in SimplePastToPastParticiple by @saschabuehrle in #3012
- build(deps): bump pulldown-cmark from 0.13.1 to 0.13.3 by @dependabot[bot] in #3002
- build(deps): bump tree-sitter-rust from 0.24.0 to 0.24.1 by @dependabot[bot] in #3003
- build(deps): bump zip from 8.1.0 to 8.3.1 by @dependabot[bot] in #3000
- build(deps): bump cached from 0.56.0 to 0.59.0 by @dependabot[bot] in #3001
- chore(harper.js): update
raw-webexample to1.12.0by @elijah-potter in #3015 - feat: "a" & "an" both OK for "URL" by @hippietrail in #2981
- feat: except of→except for / exception of by @hippietrail in #2997
- build(deps): bump rustls-webpki from 0.103.8 to 0.103.10 by @dependabot[bot] in #2991
- feat: aspire for → aspire to by @hippietrail in #3004
- docs: added link to agent policy by @elijah-potter in #3016
- fix(lint-framework): reconnect popup host after DOM replacement by @k4sperski in #2998
- fix(harper-cli): return exit code 0 when no lints are found by @Ryujiyasu in #2836
- chore: dictionary curation 2026-03-19 by @hippietrail in #2968
- Added native Neovim LSP config to docs by @RobertCrummett in #2987
- fix: don't flag "more orange than red" etc. by @hippietrail in #2928
- perf(core): cache
WordSetinModalVerbby @86xsk in #3017 - feat: flag "use to" when "used to" is intended in #2975
- feat: flag nonstandard "verse" used as a verb (from "versus") in #2973
- feat: flag "date back from" as blend of "date from" and "date back to" in #2976
- feat(core): allow users to include dictionaries in Weirpacks by @elijah-potter in #2922
- feat: try out one's luck→try one's luck by @hippietrail in #2916
- fix(chrome-ext): reverse the toggle button to it appears "on" by @elijah-potter in #3026
- chore: dictionary curation by @hippietrail in #3023
- Improve embedded form support in iframes by @k4sperski in #3010
- refactor: compact token/lint content & char comparison by @hippietrail in #2957
- feat: expression to match pronoun-be, word pair or contraction by @hippietrail in #2944
- fix(chrome-ext): persist lint rule changes from settings page by @queelius in #3028
- feat: in 1 day from now→in one day/one day from now by @hippietrail in #3049
- build(deps): bump tree-sitter-ink-lbz from 0.0.1 to 0.0.5 by @dependabot[bot] in #3064
- build(deps): bump ordered-float from 5.1.0 to 5.3.0 by @dependabot[bot] in #3063
- build(deps): bump zip from 8.3.1 to 8.4.0 by @dependabot[bot] in #3065
- feat: support Quarto qmd files as markdown by @itamarst in #3053
- feat: thrive off (of)→thrive on by @hippietrail in #3055
- perf(core): optimizations in
LintGroupby @86xsk in #3052 - feat: worth while/worth-while → worthwhile by @hippietrail in #3056
- refactor(core)!:
Lrc<[char]>instead ofLrc<Vec<char>>by @86xsk in #3060 - chore: dictionary curation by @hippietrail in #3041
- build(deps): bump tree-sitter-rust from 0.24.1 to 0.24.2 by @dependabot[bot] in #3061
- fix(obsidian): OOM error by reducing WASM bundle size by @elijah-potter in #3050
- build(deps): bump tree-sitter-scala from 0.24.0 to 0.25.0 by @dependabot[bot] in #3062
- fix(lint): add 'side' to ignore list for effect/affect rule (fix issue #2958) by @estefafdez in #2983
- perf(spell): skip redundant lowercase DFA search in FstDictionary by @k4sperski in #3025
- refactor!: take argument by value instead of mut ref by @86xsk in #3051
- feat: Sneaked vs snuck by @hippietrail in #2209
- feat: skeleton for new
ExprLintermodules by @hippietrail in #3024 - feat: web scrapping → web scraping by @hippietrail in #3059
- fix: add key stroke→keystroke to key stoke→keystroke by @hippietrail in #3067
- perf(core): avoid conversion between string and char array by @86xsk in #3074
- fix: don't flag "each of whom" by @hippietrail in #3078
- docs(web): add link to @KraXen72's work by @elijah-potter in #3079
- feat: at all cost → at all costs by @hippietrail in #3082
- fix(core): address recent false positives and negatives by @elijah-potter in #3090
- feat: add styling for user-defined monospace fonts by @stanley-910 in #3105
- feat: I am bias/you are prejudice→biased/prejudiced by @hippietrail in #3058
- fix: don't flag "to" before "only" in ToTwoToo by @joaquinhuigomez in #3093
- feat: ppl→people by @hippietrail in #3116
- feat/obsidian web lint styling by @stanley-910 in #3104
- fix(lint-framework): preserve cursor position when dismissing suggestion popup by @draphy in #3112
- build(deps): bump uuid from 1.22.0 to 1.23.0 by @dependabot[bot] in #3117
- fix: skip PronounVerbAgreement for hyphenated compounds by @mvanhorn in #3095
- fix(harper-tex): mask additional LaTeX math environments by @jurajkl in #3103
- feat: look forward for→look forward to by @hippietrail in #3109
- build(deps): bump tempfile from 3.20.0 to 3.27.0 by @dependabot[bot] in #3118
- build(deps): bump indexmap from 2.13.0 to 2.13.1 by @Dependa...
v1.12.0
What's Changed
- fix(chrome-ext): formatting issues on Google Docs by @elijah-potter in #2960
- feat: grind to halt → grind to a halt by @hippietrail in #2972
- fix: correct typos and grammar in docs and comments by @cl2t in #2971
- feat: bullocks→bollocks by @hippietrail in #2970
- feat: add lint rule for "more that likely" typo by @ctonneslan in #2964
- fix: solve issue #2966 by @hippietrail in #2967
- feat: I am worry→I am worried by @hippietrail in #2943
- feat: add lint rule for "cutting age" eggcorn by @ctonneslan in #2965
- feat: at the expanse of→at the expense of by @hippietrail in #2926
New Contributors
Full Changelog: v1.11.0...v1.12.0
v1.11.0
What's Changed
- chore: dictionary curation by @hippietrail in #2867
- feat: do a mistake→make a mistake by @hippietrail in #2463
- refactor: two-digit decade support by @hippietrail in #2911
- fix: warn about clashing linter names by @hippietrail in #2374
- feat(core): flag redundant use of progressive verbs followed by "more" by @elijah-potter in #2859
- feat: hit the nail in the head→on the head by @hippietrail in #2918
- build(deps): bump tempfile from 3.20.0 to 3.27.0 by @dependabot[bot] in #2939
- build(deps): bump tree-sitter-lua from 0.4.1 to 0.5.0 by @dependabot[bot] in #2938
- build(deps): bump clap from 4.5.60 to 4.6.0 by @dependabot[bot] in #2937
- fix(core): test which was testing the wrong thing by @elijah-potter in #2946
- feature/obsidian-colored lints by @stanley-910 in #2931
- refactor:
once_cell→LazyLockby @hippietrail in #2942 - deps: bump rand to 0.10.0 by @86xsk in #2947
- feat: commitment toward(s) → commitment to by @hippietrail in #2948
- feat: add geo acronyms by @tongpu in #2687
- feat: bump spell fixes differing by an apostrophe by @hippietrail in #2927
- build(deps): bump once_cell from 1.21.3 to 1.21.4 by @dependabot[bot] in #2936
- feat(chrome-ext): replace icons with cleaner variants by @elijah-potter in #2949
- feat: reason of doing→reason for doing by @hippietrail in #2953
- feat: the different(s) between→the difference between by @hippietrail in #2951
- Dictionary curation 2026 03 13 by @hippietrail in #2941
- perf(core): avoid cloning in
DictWordMetadata::appendby @86xsk in #2912 - refactor: most
ExprLinters don't need to be boxed by @hippietrail in #2885 - feat: womans→women, writed→wrote, etc. by @hippietrail in #2812
New Contributors
Full Changelog: v1.10.0...v1.11.0
v1.10.0
What's Changed
- build(deps): bump pulldown-cmark from 0.13.0 to 0.13.1 by @dependabot[bot] in #2848
- build(deps): bump chrono from 0.4.43 to 0.4.44 by @dependabot[bot] in #2852
- build(deps): bump quickcheck from 1.0.3 to 1.1.0 by @dependabot[bot] in #2850
- chore: dictionary curation by @hippietrail in #2822
- build(deps): bump zip from 8.0.0 to 8.1.0 by @dependabot[bot] in #2849
- build(deps): bump strum_macros from 0.27.2 to 0.28.0 by @dependabot[bot] in #2851
- feat: hidden into→hidden in by @hippietrail in #2844
- feat: the point for→the point of by @hippietrail in #2834
- feat(core): more edge cases in
MissingTorule by @lewismiddleton in #2837 - feat(core):
chalkboardis a closed compound by @elijah-potter in #2858 - feat(chrome-ext): build out support for the online Typst playground by @elijah-potter in #2706
- fix(core): edge case in
ItsPossessiverule by @elijah-potter in #2857 - feat: print linter match with context by @hippietrail in #2303
- feat: fed up of→fed up with by @hippietrail in #2833
- feat(obsidian): listen to changes to
data.jsonby @elijah-potter in #2868 - fix(obsidian): remove default hotkey by @elijah-potter in #2869
- feat: get used of→get used to by @hippietrail in #2831
- fix: don't flag "our IT" by @hippietrail in #2872
- feat: flag "often never" and similar by @hippietrail in #2871
- fix(core): recognize "esp." as an abbreviation by @NaveenPrasanth in #2816
- fix(core): adjust how words are iterated in
title_caseby @elijah-potter in #2875 - feat: off coarse→of course by @hippietrail in #2878
- feat(chrome-ext): support for Google Docs by @elijah-potter in #2791
- refactor(core): refactor code in
MissingToby @86xsk in #2876 - feat: IIUC→if I understand correctly by @hippietrail in #2896
- build(deps): bump tree-sitter-powershell from 0.25.10 to 0.26.3 by @dependabot[bot] in #2890
- build(deps): bump uuid from 1.21.0 to 1.22.0 by @dependabot[bot] in #2889
- build(deps): bump tokio from 1.49.0 to 1.50.0 by @dependabot[bot] in #2891
- fix(harper-tex): math mode problems by @elijah-potter in #2899
- build(deps): bump sysinfo from 0.38.2 to 0.38.3 by @dependabot[bot] in #2893
- refactor: tests for spell/mod.rs and and linting/spell_check.rs were arbitrarily mixed by @hippietrail in #2809
- feat: aware about→aware of by @hippietrail in #2902
- feat: it´s→it's by @hippietrail in #2884
- feat: in some degree→to some degree by @hippietrail in #2883
- feat(chrome-ext): surface update instructions by @elijah-potter in #2873
- feat: take/claim/assume responsibility of→responsibility for by @hippietrail in #2880
- feat: correct decades with apostrophes by @hippietrail in #2886
- fix(core): false positives in the
NeedToNounrule by @elijah-potter in #2905 - fix(chrome-ext): formatted text in Google Docs causing false-positives by @elijah-potter in #2904
- feat: rise the ranks→rise through/from the ranks by @hippietrail in #2903
- perf(core): add early exits for
lex_url,lex_email_addressby @86xsk in #2910 - build(deps): bump quinn-proto from 0.11.13 to 0.11.14 by @dependabot[bot] in #2908
- fix(core):
VerbToAdjectivefalse positives by @elijah-potter in #2906 - feat: not only it is→not only is it by @hippietrail in #2907
- feat: compulse→compel by @hippietrail in #2909
- feat(harper-cli): add --format flag with json and compact output modes by @dumb-kevin in #2843
New Contributors
- @lewismiddleton made their first contribution in #2837
- @dumb-kevin made their first contribution in #2843
Full Changelog: v1.9.0...v1.10.0
v1.9.0
What's Changed
- Propagating newer methods of
SequenceExprthrough the codebase by @hippietrail in #2759 - feat(core): many more Weir rules by @elijah-potter in #2742
- feat(chrome-ext): the ability to load/unload Weirpacks by @elijah-potter in #2752
- fix(chrome-ext): suggestions being displayed as
0by @elijah-potter in #2757 - feat: PowerShell comments support by @elijah-potter in #2762
- feat(core): dictionary additions by @scop in #2636
- feat(cli): support --no-color flag and NO_COLOR env var by @verri in #2738
- fix(core): adjust ToTwoToo linter to ignore transitions by @elijah-potter in #2761
- Dictionary curation for Feb 20, 2026 by @hippietrail in #2768
- build(deps): bump strum from 0.27.2 to 0.28.0 by @dependabot[bot] in #2782
- build(deps): bump uuid from 1.20.0 to 1.21.0 by @dependabot[bot] in #2781
- build(deps): bump anyhow from 1.0.101 to 1.0.102 by @dependabot[bot] in #2779
- feat: for argument sake→for argument's sake by @hippietrail in #2774
- build(deps): bump libfuzzer-sys from 0.4.10 to 0.4.12 by @dependabot[bot] in #2778
- fix(core): make the
ItsPossessiverule more robust by @elijah-potter in #2769 - build(deps): bump clap from 4.5.57 to 4.5.60 by @dependabot[bot] in #2780
- chore: Curate dictionary by @anyllmarkevich in #2724
- feat: wrote→rote by @hippietrail in #2794
- fix: don't flag "May of" by @hippietrail in #2795
- Flag plural "damages" when not used for judicial compensation by @hippietrail in #2365
- Dictionary curation 2026 02 22 by @hippietrail in #2785
- feat: add words from fantasy, politics, religion, and adverbs by @rauletaveras in #2643
- feat(chrome-ext): enable on all Substack sites by @elijah-potter in #2800
- chore: add "one fowl swoop" to "one foul swoop", rename from
InOneFellSwoopby @hippietrail in #2758 - fix(core): stop flagging "Czech Republic" as outdated by @NaveenPrasanth in #2797
- fix: don't flag "can of" by @hippietrail in #2814
- feat(core): create rule to correct
now wayby @elijah-potter in #2806 - fix(harper-tex): parse triple-hyphens as an em-dash by @elijah-potter in #2805
- fix(core): coverage for confusion of
they're/there/theirby @elijah-potter in #2798 - fix(obsidian): avoid command palette crashes from null tooltip entries by @stanley-910 in #2804
- feat(web): add loading message to lazily-loaded editor by @elijah-potter in #2817
- feat: support adjectives in "on accident" by @hippietrail in #2828
- fear: for most part→for the most part by @hippietrail in #2827
- feat: seam→seem by @hippietrail in #2826
- feat: out of sink→out of sync/synch by @hippietrail in #2829
- feat: in hurry→in a hurry by @hippietrail in #2825
- feat(core): address edge cases in
MissingTorule by @elijah-potter in #2818 - feat(core): create rule to detect confusion between
principle ofandprincipal ofby @elijah-potter in #2799 - feat: do diligence→due diligence/do due diligence by @hippietrail in #2810
- fix(obsidian): find temporary fix for escape button override by @elijah-potter in #2819
- feat: all hell break out→all hell break loose by @hippietrail in #2813
- refactor: heuristic debugging easier by @hippietrail in #2508
- feat: if only there was→if only there were, etc. by @hippietrail in #2823
New Contributors
- @anyllmarkevich made their first contribution in #2724
- @NaveenPrasanth made their first contribution in #2797
Full Changelog: v1.8.0...v1.9.0
v1.8.0
What's Changed
- build(thesaurus): reduce compression level for debug builds by @86xsk in #2694
- feat(chrome-ext): move the review request to 14 days after installation by @elijah-potter in #2707
- feat(web): show better explanation for how the Chrome extension works by @elijah-potter in #2712
- fix: add Zig to places I missed on the previous PR by @hippietrail in #2709
- fix: better fix for "more foreign" → "foreigner" by @hippietrail in #2711
- docs: update link to correct destination by @hulet in #2714
- Dictionary curation by @hippietrail in #2662
- feat(harper-comments): add Groovy support by @elijah-potter in #2713
- fix(chrome-ext): tips should refer to "Dismiss" button, not an "Ignore" button by @elijah-potter in #2719
- feat(ls): add support for
TeXand derivative languages by @elijah-potter in #2689 - build(deps): bump bitflags from 2.10.0 to 2.11.0 by @dependabot[bot] in #2737
- build(deps): bump sysinfo from 0.38.1 to 0.38.2 by @dependabot[bot] in #2735
- build(deps): bump zip from 2.4.2 to 8.0.0 by @dependabot[bot] in #2733
- build(deps): bump futures from 0.3.31 to 0.3.32 by @dependabot[bot] in #2736
- build(deps): bump quickcheck_macros from 1.1.0 to 1.2.0 by @dependabot[bot] in #2734
- feat(core): a good helping of new Weir rules by @elijah-potter in #2710
- feat(cli): add support for TeX and derivative languages by @verri in #2731
- feat(obsidian): add keyboard tooltip actions by @stanley-910 in #2732
- feat: add adjective support to not longer→no longer by @hippietrail in #2723
- fix(web): hide the erroring "Last Updated" field by @elijah-potter in #2722
- feat:lead rise to→give rise to by @hippietrail in #2729
- fix(core): false positive in the
ToTwoToorule by @elijah-potter in #2721 - fix(core): false positive from
ItsContractionby @elijah-potter in #2720 - feat: all be it/al be it→albeit by @hippietrail in #2741
- fix: adaptive
messageto address issue #2743 by @hippietrail in #2748 - fix:
is_possessive_nominal()had wrong logic by @hippietrail in #2740 - feat: ctrl→control by @hippietrail in #2747
- fix(core): ignore top-level domains by @elijah-potter in #2750
- chore: dictionary curation 2026-02-14 by @hippietrail in #2728
- feat: did went→did go by @hippietrail in #2744
- feat: create an AGENTS.md by @elijah-potter in #2751
New Contributors
- @hulet made their first contribution in #2714
- @verri made their first contribution in #2731
- @stanley-910 made their first contribution in #2732
Full Changelog: v1.7.0...v1.8.0
v1.7.0
What's Changed
- feat: worth to do → worth doing by @hippietrail in #2638
- build(deps): bump time from 0.3.41 to 0.3.47 by @dependabot[bot] in #2663
- refactor: use
Span::emptyto create empty spans by @86xsk in #2658 - feat(core): create expression references by @elijah-potter in #2664
- feat: replace
DayAndAgeWeir with more flexible linter by @hippietrail in #2666 - build(deps): bump criterion from 0.8.1 to 0.8.2 by @dependabot[bot] in #2678
- build(deps): bump sysinfo from 0.38.0 to 0.38.1 by @dependabot[bot] in #2677
- build(deps): bump anyhow from 1.0.100 to 1.0.101 by @dependabot[bot] in #2674
- feat: thru→through by @hippietrail in #2680
- fix(core): overlap removal did not respect priority by @elijah-potter in #2685
- fix: don't lowercase "This" by @hippietrail in #2651
- feat: layouted/layouting→laid out/laying out by @hippietrail in #2669
- build(deps): bump clap from 4.5.56 to 4.5.57 by @dependabot[bot] in #2675
- refactor(core): simplify loops via iterators by @86xsk in #2686
- fix: don't flag more foreign → foreigner by @hippietrail in #2659
- feat: atall→at all by @hippietrail in #2679
- feat:
SplitWordsmakes multiple suggestions by @hippietrail in #2683 - feat:
harper-cliaccept common dialect synonyms, abbreviations by @hippietrail in #2562 - chore: justfile recipe names consistent+guessable by @hippietrail in #2581
- feat: Add Zig support by @hippietrail in #2688
- feat(obsidian): allow users to mask out text using regular expressions by @elijah-potter in #2684
- feat: not longer→no longer by @hippietrail in #2691
- fix(lint-framework):
SuggestionKind.InsertAfterremoving text by @elijah-potter in #2693
Full Changelog: v1.6.0...v1.7.0
v1.6.0
What's Changed
- refactor(brill): remove
lazy_staticdependency by @86xsk in #2571 - feat: afterall → after all by @hippietrail in #2582
- perf(core): cache Wier ASTs by @86xsk in #2584
- deps(cli): bump ariadne from 0.4.1 to 0.6.0 by @86xsk in #2577
- feat: prev → previous by @hippietrail in #2598
- build(deps): bump uuid from 1.19.0 to 1.20.0 by @dependabot[bot] in #2595
- fix: confusing wording in
OneOfTheSingularby @hippietrail in #2586 - feat: as of currently→ currently / as of now by @hippietrail in #2599
- chore: add words/annotations to curated dict by @86xsk in #2570
- feat: nor I would→nor would I by @hippietrail in #2590
- build(deps): bump sysinfo from 0.37.2 to 0.38.0 by @dependabot[bot] in #2594
- fix(chrome-ext): Draft.js multiline suggestion replacement corruption by @draphy in #2597
- fix:
rmold vscode versions afterjust test-vscodeby @hippietrail in #2574 - fix(chrome-ext): force visibility on Reddit by @elijah-potter in #2603
- docs(chrome-ext): notify users that Harper will clash with Gmail's grammar checker by @elijah-potter in #2605
- feat: yea/yeh →yeah by @hippietrail in #2604
- fix(obsidian-plugin): postpone initialization until layout is ready by @Vinzent03 in #2611
- feat: no only is there → not only is there by @hippietrail in #2610
- feat(chrome-ext): enable use of the CSS Custom Highlights API for Firefox by @elijah-potter in #2607
- refactor(core): adjustments in
Numberby @86xsk in #2591 - feat(core): write rule to correct
cybersec->cybersecurityby @elijah-potter in #2613 - fix(chrome-ext): improve test reliability by @elijah-potter in #2615
- feat: try one‘s hands at→try one‘s hand at by @hippietrail in #2614
- feat(core): add
allowskeyword to Weir by @elijah-potter in #2602 - build(deps): bump clap from 4.5.54 to 4.5.56 by @dependabot[bot] in #2641
- Flash in the pans -> Flashes in the pan by @hippietrail in #2621
- chore: curate dictionary by @hippietrail in #2580
- feat: go at war → go to war by @hippietrail in #2646
- fix(chrome-ext): preserve cursor position in generic contenteditable replacement by @draphy in #2617
- feat: peak behind the curtain→peek behind the curtain by @hippietrail in #2635
- fix: AsciiDoc support by @mcecode in #2633
- build(deps): bump bytes from 1.10.1 to 1.11.1 by @dependabot[bot] in #2647
- docs: add Tally to section for projects using Harper by @twocaretcat in #2645
- feat(core): improve debug formatting for
Suggestionby @86xsk in #2619 - refactor(core): adjustments in lexing code by @86xsk in #2618
- feat: look one's nose down→look down one's nose by @hippietrail in #2644
- feat(core): introduce Weirpacks by @elijah-potter in #2491
- fix(lint-framework): preserve cursor position in textarea after applying suggestion by @draphy in #2650
- feat: like no tomorrow → like there's no tomorrow by @hippietrail in #2652
- build(test): improve test build time by @86xsk in #2648
- refactor(core): use a macro and document the methods by @elijah-potter in #2655
- build:
panic = abortandlto = fatfor release by @86xsk in #2572 - refactor(harper.js): we do not need named types for Weirpacks by @elijah-potter in #2657
New Contributors
- @twocaretcat made their first contribution in #2645
Full Changelog: v1.5.1...v1.6.0
v1.5.1
What's Changed
- fix(chrome-ext): problems with incorrect dialect selection and reversion by @elijah-potter in #2569
Full Changelog: v1.5.0...v1.5.1