Permission inheritance of /sign version was not defined correctly in plugin.yml
Permission inheritance of /sign cancel was not defined correctly in plugin.yml
In clicking mode false, some subcommands would spit out usage text if the player wasn't looking at a sign, but this should not happen.
It is now possible to input literal ampersand (&) characters using /sign subcommands thanks to smarter parsing of sign text and an escape sequence (\&).
Changed
The README should be more readable now.
The single line selector has been replaced with a multiple line selector.
When the plugin is unloading, the configuration file is now reloaded before being rewritten, so changes made while the plugin is loaded will now persist.
Players cannot edit signs that they do not have permission to edit. Every attempted edit is validated through a SignChangeEvent and will not succeed if another plugin or policy cancels the SignChangeEvent.
Under the Hood
Gradle has been updated from version 3.5rc2 to version 5.3.
A concept of "selected lines", which are parsed for multi-line interactions in /sign subcommands
Player chat interactions now happen through a ChatComms class.
Added a set of Exceptions for things that can go wrong in this plugin
Exceptions are centrally reported in ChatComms.
New model SignText handles the state of a single sign edit and can import, back up, restore, and change Bukkit Sign blocks.
New singleton SignTextClipboardManager facilitates cut, copy, and paste for each player.
New singleton SignTextHistoryManager maps players to their undo/redo history and tracks their state globally.
ArgStruct has been replaced with a more extensible ArgParser, including support for multiple absolute selected lines instead of a single relative selected line.