Changelog

Unreleased

0.9.0 - 2026-04-21

Added

  • Duplicate entry prevention for grascii dictionary build. It can be disabled with the new --no-dedup option.

  • anniversary as a built-in dictionary

  • Configuration file presets for preanniversary and anniversary dictionaries

Changed

  • Updated dictionaries to 2026.04.20.

  • grascii config --init to grascii config init <preset>

  • grascii config --delete to grascii config delete

  • grascii config --where to grascii config path

  • Loading of default configuration to use importlib.resources

0.8.0 - 2026-03-03

Added

  • “end” search mode for grascii search

Changed

  • Improved typings for search and dephrase related functions

  • Allow Grascii strings to start with a disjoiner

  • Updated dictionaries to 2026.02.28.

Removed

  • Dropped Python 3.9 support

Fixed

  • Added py.typed file to be PEP 561-compliant for type checking

  • grascii search unnecessarily searching twice

  • InteractiveSearcher.sorted_search not sorting and not respecting the provided metric

  • Potential incorrect results for start/contain searches that ended with S/T

  • Missing intepretations of Grascii strings with over/under blend ambiguity

0.7.0 - 2025-07-12

Added

  • preanniversary-phrases as a built-in dictionary and default search dictionary

  • --show-dictionary option for grascii search

  • Dictionary.dump method to get all the entries in a dictionary

  • Direction annotations for X

  • GrasciiInterpreter for faster interpretations of Grascii strings

Changed

  • Updated dictionaries to 2025.06.30.

  • grascii dephrase is a first-class command

  • dephrase streams results in a more logical order

  • Added AU, EU, and OE to similarity graph with edge between AU and EU

  • Reverse search to consider hyphens as word boundaries

Removed

  • Dropped Python 3.7 and 3.8 support

  • DictionaryOutputOptions.package

  • LALR compatibility for grascii.lark

Fixed

  • Missing entries for SS and XS in grammar.ANNOTATIONS

  • Incorrect loop annotation for A&' and A&E in grammar.ANNOTATIONS

  • Instances in which GrasciiParser would not generate the canonical interpretation first

0.6.1 - 2024-12-27

Changed

  • Updated similarity graph to include edges connecting circle diphthongs

0.6.0 - 2024-07-01

Added

  • Dictionary build --no-output option

  • DictionaryOutputOptions class for DictionaryBuilder.build

  • BuildSummary class for results of DictionaryBuilder.build

  • Experimental pipelines for dictionary builds

  • ignore_case option to GrasciiValidator

  • -q and --quiet options for grascii dictionary build.

Changed

  • Searcher.__init__ does not handle DictionaryNotFound exceptions

  • grascii search prints an error if a dictionary cannot be found

  • Many DictionaryBuilder.__init__ options moved to DictionaryBuilder.build or were removed

  • DictionaryBuilder.build takes infiles and output arguments and returns a BuildSummary

  • Updated the grascii_standard metric to incorporate the position and length of the matched grascii

  • Migrated to platformdirs: The location for the configuration file on MacOS changed from ~/Library/Preferences to ~/Library/Application Support

  • Updated preanniversary dictionary to 2024.06.14.

Removed

  • grascii.grammars.get_grammar: Use Lark.open_from_package("grascii.grammars", grammar_name) instead.

  • BuildDirectory configuration file option

  • Dictionary build --check-only option: Use --no-output instead

  • grascii.dictionary.build.build function: Use DictionaryBuilder.build instead

Fixed

  • Regex metacharacters in reverse search inputs are escaped

0.5.0 - 2022-08-12

Added

  • SearchResult class to group together relevant data from matches.

  • Searcher.sorted_search to obtain a list of sorted SearchResults.

  • grascii.dictionary.common module to contain DictionaryExceptions and utility functions.

  • Dictionary class to work with grascii dictionaries.

  • config.get_default_config to get the text of the default configuration file.

  • -V and --version command line options.

  • InvalidGrascii exception which is produced by a parser.

  • --no-sort option for grascii search.

  • grascii.parser.get_grascii_regex_str() to get a string that can be compiled into a regular expression that recognizes grascii strings.

Changed

  • Searcher.search no longer sorts results.

  • grascii.dictionary.list: get_installed and get_built_ins return a collection of installed dictionary names (prefixed with :).

  • grascii.dictionary.install.install_dict renamed to install_dictionary and accepts more options.

  • grascii.dictionary.uninstall.uninstall_dict renamed to uninstall_dictionary and accepts more options.

  • DICTIONARY_PATH renamed to INSTALLATION_DIR.

  • Using builtin sorted function speeds up general grascii searches.

  • GrasciiParser.interpret returns an iterator instead of a list.

  • Updated preanniversary dictionary to 2022.07.26.

Removed

  • Dropped Python 3.6 support.

  • grascii.dictionary.get_dict_file: Use grascii.dictionary.Dictionary.open instead.

  • GrasciiValidator.__init__ use_cache option

Fixed

  • Typing issues with searchers and metrics.

  • Errors when passing a grascii string with boundaries or disjoiners to the aggressive dephraser.

0.4.1 - 2022-06-29

Added

  • Some classes and functions that are considered to be part of the public API are importable from the top-level grascii.

Fixed

  • Included TV in grammar.STROKES.

0.4.0 - 2022-06-27

Added

  • New parser module abstracts away Grascii parsing details.

  • grammar.CONSONANTS and grammar.VOWELS constants.

  • Experimental outline module with Outline class to infer directions of shorthand strokes.

  • GrasciiValidator class to quickly validate, but not interpret, Grascii strings.

  • dictionaries submodule to include dictionary source files.

  • Dictionary build --words option to specify words file for spell checking.

  • Dictionary build --verbose option to increase build output.

  • New docs extra to specify doc building requirements.

Changed

  • Switched from lark-parser to new lark package.

  • Boundaries can be retained during Grascii Interpretation creation.

  • grascii.lark is compatible with LALR.

  • An apostrophe is accepted to represent “a” or “an”.

  • Multiple semantic grascii.lark grammar changes (see @7ebfd07).

  • Dictionary build --parse option is now much faster.

  • ReverseSearcher provides a more useful sorting of results.

  • Updated preanniversary dictionary to r00004.

Removed

  • The types module has been removed. Interpretation is now defined in grascii.parser.

  • The utils module has been removed.

  • Dictionary source files are no longer stored in dsrc.

  • The dictionary build --spell option has been removed. (Succeeded by --words)

Fixed

  • Removed Y from grammar.HARD_CHARACTERS and grammar.ALPHABET.

  • Included DV in grammar.STROKES.

  • Grascii contain searches do not match translations.

  • Grascii searches match -ing(s) at the end of words.

  • Grascii searches match a disjoiner at the end of words.

  • Grascii searches do not match double aspirates (except at the end of a word) or double disjoiners.

  • Fixed crash on interrupt during interactive interpretation selection.

0.3.0 - 2021-12-14

Added

  • New interactive search mode setting to select the dictionaries to search.

Changed

  • The search -d/--dictionary option can be specified multiple times to search more than one dictionary at a time.

  • The config file [Search] Dictionary option now accepts a list of dictionaries.

0.2.2 - 2021-07-08

Added

  • Added the -n/--count option to dictionary build to enable the validation of expected word counts.

Changed

  • Word count validation for dictionary builds is no longer performed by default, but enabled with the --count option–helpful for phrase dictionaries.

  • When the dictionary builder cannot determine an appropriate output file for an entry, it now prints an error and continues instead of crashing the build process.

Fixed

  • In dictionary builds, the incorrect number of words warning now properly behaves like a warning. The entry with the warning is now included in the build instead of being skipped.

0.2.1 - 2021-07-02

Added

  • grascii.grammar.ALPHABET: The set of valid characters in the Grascii language.

Changed

  • Grascii Search produces a better error message when given an invalid Grascii string.

  • Grascii Dephrase produces a better error message when there are no results.

0.2.0 - 2021-06-25

First Release

Added

  • Grascii Search with Grascii, Interactive, Reverse, and Regex modes

  • Grascii Dictionary build and installation tools

  • Grascii Configuration file and management

  • Built-in pre-anniversary dictionary [Status: Review]

  • Experimental Grascii Dephrase tool