* Changelog All notable changes in this project will be shown in this file. ** v1.0.0 - [2025-06-15 Sun] This version is the first one with a stable public API; as per Semantic Versioning all backwards incompatible changes will be put on a major version. *** Added - *Allowed conversion to a sum of units (e.g. 4/3 ft \rightarrow 1 ft + 4 in).* - *Allowed exponents on units to be non-integer numbers.* The resulting exponents are rounded to the nearest integer, and the user is warned if this rounding changes the value by more than normal floating-point error. - *Added the ability to change the language of 7Units's UI.* This does not affect the names of units, prefixes and dimensions. - Added more information to the loading-success message, and added it to the about tab. - Added the ability to not use the default data files. - Added the ability to generate Javadoc automatically. *** Changed - *Errors in unit/dimension files are shown in popups, rather than crashing the program.* - Significantly increased number and coverage of automated tests (~./gradlew test~). *** Fixed - Fixed encoding of \pm character in values with uncertainty. - ExpressionParser uses the correct order internally. /Note: this failure was only visible if you call the submethods; the public method fixed the problem on its own. This was fixed primarily to improve testing./ ** v0.5.0 - [2024-03-24 Sun] *** Added - *Added specifications for all types data files used by 7Units.* *** Changed - Configuration file is now located at a standard location in the system, instead of being in the project directory. - Simplified some setting values in the config file - Made the various data files more consistent with each other: - Addition and subtraction may be used in prefix expressions. - Exponentation works for all bases in dimension expressions. - All types of config files support comments. ** v0.4.1 - [2023-04-15 Sat] *** Fixed - Upgrade Gradle from 6.3 to 8.1 to support users of new Java versions (though 7Units still uses Java 11, the old Gradle distribution would fail if compiled with a newer version of Java) ** 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