* Changelog All notable changes in this project will be shown in this file. ** v0.4.0 - [2022-07-17 Sun] *** Added - *Added tests for the GUI* - *Added search rules that determine which prefixes are shown in the unit conversion view.* - Added an object for the version numbers (SemanticVersionNumber) - Added some toString methods to NameSymbol and Nameable *** Changed - *Rewrote the GUI code internally using an MVP model to make it easier to maintain and improve* - BaseDimension is now Nameable. As a consequence, its name and symbol return Optional instead of String, even though they will always succeed. - The UnitDatabase's units, prefixes and dimensions are now always named - The toString method of the common unit classes is now simpler. Alternate toString functions that describe the full unit are provided. - UncertainDouble and LinearUnitValue accept a RoundingMode in their complicated toString functions. - Rounding rules are now in their own classes - The "Show Duplicates" setting now affects the prefix viewer in addition to units - Tweaked the look of the unit and expression conversion sections of the view - Default dimension names are in title case, not uppercase. ** v0.3.2 - [2021-12-02 Thu] *** Added - Added lots more tests for the backend and utilities *** Fixed - The UnitDatabase's unit map acted as if it were empty if it had units but no prefixes - Non-exact LinearUnitValue instances had their value printed as "(", meaning "(5.0 ± 0.1) m" would be printed as "( m" ** v0.3.1 - [2021-08-26 Thu] *** Added - Created a user manual - Create a design document (a document detailing the program's design for programmer use) *** Changed - Changed the name of the project from "Unit Converter" to "7Units" - Changed the main package from ~unitConverter~ to ~sevenUnits~ - Tweaked the README, removing content that belongs in the new user manual - Renamed ~SI~ to ~Metric~ ** v0.3.0 - [2021-06-12 Sat] *** Added - Added a simple unit conversion method to the Unit interface - Added a static factory to create nonlinear units to the Unit interface - Added a settings menu with many settings to change the system's behaviour. Allows you to control the precision settings, prefix repetition, and more. *** Changed - Changed the unit system again! - You can now use tabs or spaces to separate unit names and their definitions in unit files. - Unit Converter uses Gradle instead of Maven. ** v0.2.0 - [2019-04-14] *** Added - A selection-based unit converter which allows you to select two units, input a value, and convert. - The UnitDatabase now stores dimensions. - A system to parse mathematical expressions, used to parse unit expressions. - You can now add and subtract in unit expressions! - Instructions for obtaining unit instances are provided in the relevant classes - The UnitPrefix interface now provides default times, dividedBy and toExponent methods. *** Changed - When searching for units, units with no prefixes are searched for before prefixed units - Smaller prefixes are searched for before larger prefixes - Moved project to Maven - Downgraded JUnit to 4.11 - BaseUnit is now a subclass of LinearUnit - In unit files, Comments can now start in the middle of lines - UnitsDatabase.addAllFromFile() has been renamed to loadUnitsFile() ** v0.1.0 - [2019-02-01] NOTE: At this stage, the API is subject to significant change. *** Added - Unit interface, implemented and supporting classes - UnitPrefix interface, implemented and supporting classes - UnitDimension and supporting classes - UnitDatabase to store and parse units - A GUI for unit conversion