2025-07-19: release 1.3.10c (Android only)

* Fixed "No Status" and "Full Screen" modes. These got broken in 1.3.10.

2025-07-05: release 1.3.10b (Windows only)

* The size of the main window would not be saved if the app was exited while
  minimized. Fixed.

2025-07-04: release 1.3.10a (Android only)

* Fixed layout for Android 15 and later.

2025-07-03: release 1.3.10

* Fixed a couple of rare crashes.

2025-06-29: release 1.3.9

* Applying units in PRGM mode didn't work when the RPN stack was empty. Fixed.
* Android version: Fixed crash with skins with missing annunciators.
* Linux version: Fixed state saving when the app is exited because of a logout,
  reboot, or shutdown.

2025-06-10: release 1.3.8a (Android only)

* Fix for hang during audio playback.

2025-06-05: release 1.3.8

* Fixed potential crash on app restart.
* Android version: fixed memory leak on app restart.

2025-06-04: release 1.3.7e (Android only)

* Fixed potential crash on app restart.

2025-06-04: release 1.3.7d (Windows only)

* When the main window was un-minimized, its width could be restored
  incorrectly. Fixed.

2025-06-03: release 1.3.7c (Android and iOS)

* Fix for unreliable state file saving.

2025-06-01: release 1.3.7b (Android only)

* Fixed hang on Shift EXIT.

2025-05-30: release 1.3.7a (Android and iOS)

* Fix for certain rare crashes.

2025-05-29: release 1.3.7

* Now hiding shadowed labels from MVAR catalogs.
* Android version: Fixed a couple of crashes.

2025-05-21: release 1.3.6

* Better handling of ACC=0 in INTEG.
* More accurate C.E^X-1.

2025-05-12: release 1.3.5

* Fixed a couple of equation editor bugs.

2025-05-06: release 1.3.4

* Fixed handling of shared matrices in PUTMI.
* Fixed handling of subnormal complex numbers in 1/X.
* Added SLN, SRN, and ASRN to CATALOG->BASE.
* Added current base to the BASE mode status indicators, and made the
  indicators more compact.
* Fixed skin key highlighting for hardware keyboard keystrokes, when using
  certain skins with complicated key mappings.
* Fixed potential crash when loading state.

2025-04-29: release 1.3.3

* BASE menu: Implemented SLN, SRN, and ASRN. These functions are can be typed
  as Shift-SL, Shift-SR, and Shift-ASR, respectively, and RJ can now be typed
  as Shift-LJ.
* More accurate DET, INVRT, and matrix division for 2x2 matrices.
* When spelling out built-in function names, '-' is now accepted as an
  alternative for '→', to make conversion functions easier to type.
* Menu keys that execute different functions when pressed with Shift now show
  their alternate function while Shift is active. (This behavior can be
  disabled and enabled using the new STATIC and DYNAMIC settings in the new
  MENUS submenu of the MODES menu.)
* Decimal version: BS→N and BD→N were rounding their results to 16 digits.
  Fixed.

2025-04-25: release 1.3.2

* RLN, RRN, RLCN, and RRCN did not drop the stack. Fixed.
* Fixed a couple of bugs in the equation editor.

2025-04-24: release 1.3.1

* BASE: Fixed DECINT behavior for -2^(WSIZE-1).

2025-04-23: release 1.3

* BASE enhancements: shift and rotate functions, bit manipulation functions,
  floating-point conversions, and optional digit grouping. See the Free42 web
  site for all the details.

2025-04-19: release 1.2.8a (Android and iOS)

* Fixed pop-up keyboard behavior with dialogs in the equation editor.

2025-04-18: release 1.2.8

* NEWEQN and EDITEQN functions (EQN.FCN menu). These create or edit equations
  and strings in place, in the stack and in programs, without needing to go
  through EQN mode.
* Moved equation settings from MODES to EQN.FCN, and moved BASE settings from
  MODES to BASE, to make them easier to find and to declutter the MODES menu.

2025-04-10: release 1.2.7

* Fixed crash in RCOMPLX/PCOMPLX when the stack is empty (NSTK mode).
* More accurate integer powers of complex numbers. Specifically: special cases
  for pure real, pure imaginary, and numbers of the form a+ai and a-ai.
* Fixed VIEW for long values.
* Added XSTR option for EQN->STO->X and EQN->STO->PRGM.
* Windows, MacOS, and Linux versions: Added "Edit Keyboard Map" option to the
  Help menu. Also, added a section about keyboard map customization in the
  README.txt file.
* Windows and Linux versions: Fixed handling of skins with non-zero offsets of
  the main image (the top left corner of the Skin: line).
* iOS version: The file selector wasn't sorting the directory listing. Fixed.

2025-02-19: release 1.2.6

* Fixed crash when saving an equation without having modified it. This bug was
  introduced in the previous release.
* Improvements in error handling when evaluating equations.

2025-02-16: release 1.2.5

* SOLVER and ∫f(x) now allow selecting programs outside the current directory.
* Equation lines were being truncated to a maximum of 100 characters when they
  were displayed or printed. Fixed.
* iOS version: Implemented Swipe to Delete in the file selector dialog.

2025-02-14: release 1.2.4

* Equations can now be embedded in programs, using X2LINE or EQN->STO->PRGM.
  Equation lines can be plain, which means they push the equation object onto
  the stack, or they can be EVAL lines, which evaluate the equation in place.
  Equation lines can be toggled between plain and EVAL lines using the EVAL
  function in PRGM mode.
* The CUSTOM menu didn't stick reliably, due to a bug introduced in 1.2. Fixed.

2025-02-07: release 1.2.3

* Fixed crash when trying to load invalid skins.
* Added IDENT function. This returns the app's version number as a negative
  integer, in -aabbccdd format, with 1.2.3f formatted as -1020306, for example.
  The number is negative in order to distinguish Plus42 from Free42, which
  returns positive numbers from IDENT.
* XROMs are now decoded immediately when pasting.
* Switched ^ and ↑ in the character set. The change is transparent to the user,
  but it restores code compatibility with the encoding of ↑ in Free42.

2025-01-26: release 1.2.2

* User-defined units with SI prefixes didn't work in the CUSTOM menu. Fixed.

2025-01-26: release 1.2.1

* Units with SI prefixes didn't work in the CUSTOM menu. Fixed.

2025-01-25: release 1.2b (Android and iOS)

* More keyboard fixes.

2025-01-24: release 1.2a (Android only)

* Pop-up keyboard typing fixes.

2025-01-23: release 1.2

* Program locking, to prevent accidental editing of programs. This is done
  using the LOCK and UNLOCK functions. See the Free42 web site for details.
* Improved display contrast in the built-in skins.
* Android and iOS versions: Pop-up ALPHA keyboard, for easier text entry.
* Linux version: Dark Mode support.

2025-01-01: release 1.1.17b (Android only)

* Rolling back the beeper fix from the previous release. It was not performing
  as intended. Back to the drawing board.

2024-12-28: release 1.1.17a (Android only)

* Made TONE and BEEP play audio asynchronously. This should fix the occasional
  crashes caused by those functions hogging the UI too long.

2024-12-22: release 1.1.17

* Fixed pasting of GETMI, PUTMI, GETLI, and PUTLI.
* Added ALPHA mapping from Y^X to '↑'.
* Fixed crash with circular unit definitions.

2024-12-18: release 1.1.16

* The CUSTOM menu now supports unit assignments.

2024-12-13: release 1.1.15

* Added option to show the active keyboard map superimposed on the skin. The
  desktop versions have this in the Help menu, and the mobile versions have it
  in the About dialog.
* Added functions for direct access to matrix and list elements: GETMI, PUTMI,
  GETLI, and PUTLI. See the Free42 web site for details.
* iOS and MacOS versions: Improved Dark Mode support.
* In compatibility mode, VIEW(G(A)) would recall the global A to the stack, but
  view the local A. Fixed.

2024-11-14: release 1.1.14

* I%YR fixes for values close to zero.
* Now pre-populating state name for States -> More -> Rename.

2024-10-27: release 1.1.13

* Implemented GETKEYA. This works like GETKEY, except that it will not wait for
  a keystroke if no keystrokes are in the keyboard queue, returning 0 instead
  in that case.
* Android version: Fixed crash with relative file imports.

2024-05-28: release 1.1.12

* Fixed handling of °C and °F return values in numeric solver.
* Android version: Fixed crash for certain unrecognized key codes from
  Bluetooth keyboards.

2024-05-21: release 1.1.11

* Implemented LL(NAME:VALUE:EXPR). This creates a local variable and executes
  one or more expressions while the local variable is in scope.
* Fixed parameter visibility issues in Σ() and ∫().

2024-05-15: release 1.1.10a (Android, iOS, and MacOS)

* PSE could halt program execution if it was used right after TONE or BEEP.
  Fixed.

2024-04-24: release 1.1.10

* Fixed ALPHA pasting during command entry.
* Fixed MODES and DISP menus in EQN list view.
* Equation editor: fixed handling of direct-mapped "%" and "PI".

2024-03-30: release 1.1.9

* Now recognizing comment delimiters '@' and ';' for program pasting.
* More accurate complex ASIN/ASINH.

2024-03-26: release 1.1.8

* Accuracy improvements for C.LN1+X, and complex LN, ATAN, and ATANH.

2024-03-25: release 1.1.7

* EDIT and EDITN, when editing lists, would not display the current element
  index correctly in 1LINE mode. Fixed.

2024-03-22: release 1.1.6b (iOS, Windows, and MacOS)

* Windows version: Fixed display flicker using buffered painting.
* iOS and MacOS versions: Changed skin loader to use WKWebView.

2024-03-21: release 1.1.6a (Windows only)

* Reduced display blurriness when the main window is resized.

2024-03-18: release 1.1.6

* Fixed keyboard mapping bug in the equation editor. This bug was caused by the
  alternate direct command mapping changes in 1.1.5.

2024-03-07: release 1.1.5

* Direct command mapping now supports alternate mappings for ALPHA mode.
* Fixed source highlighting glitch when tracing N+U in equations.
* Windows version: Fixed a couple of display glitches.

2024-03-04: release 1.1.4e (Windows, MacOS, and Linux)

* Windows, MacOS, and Linux versions: Constraining print-out window height to
  multiples of 18 pixels, that is, to a whole number of lines.
* Windows version: Fixed skin rendering problem in Windows Vista.
* Linux version: Resizable main window.
* Linux version: Ctrl-D shortcut for Clear Print-Out.

2024-02-28: release 1.1.4d (iOS and MacOS)

* iOS version: Fixed crash when sharing on iPad.
* MacOS version: Fixed crash when making the main window too small.

2024-02-27: release 1.1.4c (Windows only)

* Resizable main window.
* Ctrl-D shortcut for Clear Print-Out.

2024-02-21: release 1.1.4b (MacOS only)

* Resizable main window.
* Command-D shortcut for Clear Print-Out.

2024-02-14: release 1.1.4a (iOS only)

* iPad support.

2024-02-09: release 1.1.4

* Keyboard mapping fixes.
* Android version: Support for external keyboards.
* Linux version: Changed ALSA device from "plughw:0,0" to "default".

2024-01-24: release 1.1.3a (Android only)

* Fixed crash in File Management Menu.
* Fixed crash when importing or exporting to cloud storage.

2024-01-17: release 1.1.3

* Added C.LN1+X and C.E^X-1 functions. These are complex-capable versions of
  LN1+X and E^X-1.
* Binary version: When converting binary to decimal, only use 17 digits when
  actually needed. This prevents 0.1 from turning into 1.0000000000000001e-1,
  for example.
* iOS version: Support for external keyboards.

2023-12-21: release 1.1.2c (Android only)

* Export State used f42 file extension instead of p42. Fixed.

2023-12-18: release 1.1.2b (Android only)

* Fixed file access for Android >= 11.

2023-12-12: release 1.1.2a (iOS and MacOS)

* Fixed startup crash, caused by a bug in Apple's latest compiler.

2023-12-06: release 1.1.2

* Fixed a bug that could cause a crash on startup.

2023-12-01: release 1.1.1

* CSLD? did not handle intervening XEQ/RTN. Fixed.
* FUNC did not detect previous FUNC/LNSTK/L4STK. Fixed.

2023-11-29: release 1.1

* Full-screen matrix and list editing (EDIT & EDITN)
* Added option to show LASTX at the top of the stack display area: DISP->LTOP
* Added option to show ALPHA at the top of the stack display area: DISP->ATOP
* Added option to show the state of flags 0-10 in the header: DISP->HFLAGS
* Added option to show an indicator for POLAR mode in the header: DISP->HPOLAR
* EDIT, EDITN, and INDEX now support editing lists, nested lists, empty lists,
  and matrices within lists. See the Free42 web site for details.
* FUNC now hides the caller's RPN stack, so user-defined functions can use
  functions like CLST and R↓ without causing side effects.
* User-defined functions can now be made to support 'stack lift disable'
  properly. For functions using FUNC, this happens automatically, and other
  functions can use the new CSLD? function (Caller's Stack Lift Disabled?).
* FNRM and UVEC, when called with very large parameters, could get incorrect
  results due to overflows in intermediaries. Fixed.
* Fixed parameter bounds check in PIXEL.
* Windows, MacOS, and Linux versions: Keyboard maps now support separate
  mappings for unshifted and shifted numeric keypad keys, and unshifted and
  shifted Space.

2023-08-17: release 1.0.21

* Added string and list functions to the equation language. The new functions
  have been added to the FLAGS menu and CATALOG->FCN in the equation editor.
  List literals have the format {A:B:C}. List elements may be any type,
  including lists or matrices.
* Equations: Fixed stack access within matrix literals.
* Fixed LASTX option in the equation editor's stack menu (R↓ key).
* Fixed Y^X with units where X is a negative reciprocal.
* →LIST and LIST→ didn't print in TRACE mode. Fixed.

2023-08-11: release 1.0.20

* Added 1LINE and NLINE functions, to select 1-line or n-line mode. 1-line mode
  forces matrices and lists to be displayed in compact format, even if the
  display has more than 2 lines; n-line mode is the multi-line matrix and list
  display that was introduced in 1.0.17. The latter remains the default.
* INPUT would crash if R/S was pressed while the stack was empty, in NSTK mode.
  Fixed.
* ANUM would consider a decimal point or comma by itself as zero, instead of
  ignoring it. Fixed.
* Added UNIT? to the UNIT.FCN menu.
* If an error occurs while evaluating an equation, which does not exist in the
  EQN list, going to EQN mode and pressing R/S will now add the equation to the
  EQN list, and then start editing with the cursor on the site of the error.
  This used to work only for equations that were in the EQN list beforehand.
* Added LASTX for equations, to work alongside REGX/REGY/REGZ/REGT, for
  read-only access to the RPN stack.
* EDIT, EDITN, and INDEX didn't clear flags 76 and 77 (matrix edge wrap and end
  wrap), while they should. Fixed.
* Decimal version: In HMS+ and HMS-, fixed handling of cases where either or
  both of the arguments has a number of minutes or seconds >= 60. (The binary
  version did not have this bug.)
* Binary version: max digits for SHOW increased to 17. This was necessary
  because 16 digits was actually never enough to begin with. For example, 5 1/X
  and 5 SQRT X^2 1/X both returned a result that looked like 0.2 in SHOW, even
  though they are different, as can be easily verified with X=Y? or by
  subtracting them. It takes 17 decimal digits to ensure that different binary
  numbers will always be rendered as different decimal numbers.

2023-05-05: release 1.0.19

* Fixed the definition of the 'ton' unit (U.S. short ton). It was 10^10 times
  too large, due to a missing sign in the units definition table.
* Equations like [1:2:3]=A, when entered without a name, weren't parsed
  correctly, because the part before the first colon would be incorrectly
  interpreted as a name. Fixed.
* When an error occurs while evaluating an equation, and that equation exists
  in the EQN list, pressing R/S in the EQN list view will now start editing
  that equation, with the cursor on the part of the equation where the error
  occurred.

2023-04-17: release 1.0.18

* Fixed crash when loading state, when the current program is an equation that
  is only referenced by SOLVE/INTEG internal variables.
* Changed Σ+/Σ- so that, in NSTK mode, they will accept a single real argument,
  assuming Y=0 in that case.
* Added STOP() function for equation debugging.
* In the equation editor, the named-equation catalog could select items from
  the wrong row.
* Fixed handling of LCLV of indexed matrix. It used to leave any pushed indexed
  matrix in limbo until RTN. With this change, the pushed indexed matrix is
  popped immediately.
* Tuned TONE frequencies to A440 scale.

2023-04-10: release 1.0.17a (iOS and MacOS)

* Copy in PRGM mode was dropping line 01, because of an optimizer bug in the
  latest compiler. Reduced optimization level from -Os to -O1 to work around
  this problem.

2023-04-05: release 1.0.17

* Matrices and lists in the X register are now shown in full, or as much of
  them as will fit anyway, when the display size is set to more than 2 rows.
* SOLVE in PLOT now provides more informative feedback for Extremum, Sign
  Reversal, and results from the direct solver.
* Fixed crash in RTNERR when switching back to NSTK mode after FUNC/L4STK.
* Fixed ASSIGN "" in programs.
* Added PRREG to the PRINT menu.
* NN→S now ignores the display mode and always acts like ALL mode is active.
  The idea being that if you care about the display mode, you'll probably be
  using N→S, and you only need NN→S if you specifically want to see full
  internal precision.

2023-03-17: release 1.0.16

* EDIT, EDITN, and INDEX now support lists, acting like they are 1-column
  matrices. (Empty lists are not supported, they must have at least one
  element. This limitation will be removed in a future release. Note that you
  can create a new 1-element list by simply doing NEWLIST 0 +.)
  This includes STOIJ, RCLIJ, STOEL, RCLEL, I+, I-, J+, J-, ←, ↑, ↓, →, INSR,
  DELR, and DIM.
* Equation editor: now inserts spaces around logical AND, OR, XOR, and NOT.
* Added PRREG. Because PRV "REGS" is not a good substitute.
* Added NN→S. This works like N→S (convert number to string on the stack), but
  without the 12-digit mantissa length limit, so you get full precision in ALL
  mode.
* Fixed stack lift handling in DELR and STOFLAG.
* Fixed pasting 1/X, 10^X, and 4STK, when pasted without line number and with
  trailing space.
* PRP and LIST in TRACE mode now print line numbers for all lines that are
  targets of GTOL or XEQL, like it already did for LBL lines.
* Fixed pasting of GTOL and XEQL.

2022-12-14: release 1.0.15

* Fixed a couple of bugs in Paste of scalars in BINM, OCTM, and HEXM modes.
* Fixed pasting of U+22A2 and U+22A6 ('append' characters used by i41CX and
  Emu42) and U+00B7 ('bullet' character used by Emu42).

2022-11-19: release 1.0.14

* Added support for new SI prefixes: R (ronna, 10^27), Q (quetta, 10^30), r
  (ronto, 10^-27), and q (quecto, 10^-30).

2022-11-12: release 1.0.13

* Fixed crash with one-arg RADIUS, ANGLE, XCOORD, and YCOORD.

2022-10-27: release 1.0.12

* SOLVE does a better job of reporting Sign Reversal when a function changes
  sign around a vertical asymptote, instead of reporting it as a root.
* When returning to the equation editor after a parse error, the text could be
  positioned incorrectly on the screen, and the editor could even crash, in
  some cases. Fixed.
* Added Boolean operators to the equation editor's PGM.FCN menu.
* Made I%YR solver a bit more robust.
* BASE: complex numbers and numbers with units were being copied or shown in
  non-decimal bases in some cases.
* Better HEXM and OCTM handling in SHOW.
* Fixed number entry in PRGM mode when BINM/OCTM/HEXM active.
* No longer setting flag 22 if number entry ends with DROP in NSTK mode.
* Added LINE PLOT.M SPFV SPPV TVM USFV USPV to CATALOG->MISC.
* →PAR now produces more helpful output in TRACE mode.
* Windows, Mac, and Linux versions: added Alt-1 through Alt-6 as mappings for
  the second row of the keyboard.

2022-10-01: release 1.0.11

* Fixed crash in SHOW for certain complex numbers.
* Added A...F function. This allows programs to turn on HEXM mode with the
  A...F menu activated.
* Added UBASE and UVAL to the equation parser.
* PLOT: Fixed coordinate rounding at the top of the display.
* Raised precedence of _ operator, so expressions like 40000_"km"/1_"d" can now
  be written without parentheses.
* The direct solver now converts the solution to match the units of the
  previous value of the variable being solved for, if it existed already and
  had compatible units. In all other cases, the variable is overwritten, as
  before.
* iOS version: Added Calculator / Print-Out swipe direction configuration
  option to Preferences.
* Android, iOS, and MacOS ARM versions: Fixed incorrect Out of Range error
  returned by BASE functions in certain cases, e.g. BRESET 64 WSIZE 1 ENTER
  BASE÷.

2022-08-13: release 1.0.10

* Fixed crash in PARSE when parsing ITEM().
* Fixed (re,im) complex pasting. This was broken by localized copy & paste.
* Special cases for pure real and pure imaginary in SQRT.

2022-06-19: release 1.0.9

* SGN() didn't evaluate its parameter, and instead consumed the value from
  level 1. Fixed.
  Note that this was a code generator bug; any expressions containing SGN()
  will have to be re-parsed in order to eliminate the effects of this bug.
* SOLVE in PLOT, when used with a function with X:<STK>, would create an
  extraneous variable named "". Fixed.

2022-06-18: release 1.0.8

* I%YR iteration robustness improvements.
* Localized Copy & Paste.
* Fixed handling of invalid number keys in BASE.
* Setting AMORT->TABLE parameters to 1 initially.
* Fixed #P parameter check so it doesn't allow 0.
* iOS and MacOS versions: Fixed skin rendering for iOS 16 and MacOS 13.

2022-06-11: release 1.0.7

* Fixed crash in variable catalog.
* I%YR robustness improvements.

2022-06-08: release 1.0.6

* Fixed I%YR when PMT=0 (broken in 1.0.5)

2022-06-08: release 1.0.5

* TVM: PMT returned incorrect results in BEGIN mode. Fixed.
* TVM: In some cases, I%YR could return inaccurate results because of poor
  starting guesses for the iteration. Fixed.
* More accurate complex ACOS and ACOSH.
* Android version: Now removes itself from the task list if exited using OFF.

2022-05-17: release 1.0.4

* TVM: Fixed error checks in N.

2022-05-13: release 1.0.3

* SOLVE now handles functions that are always positive or always negative a bit
  better, reporting Extremum when the iteration appears to be bouncing around
  without improving, instead of continuing indefinitely.
* PLOT now detects <Not a Number> in XMIN/XMAX/YMIN/YMAX and reports Invalid
  Data, instead of freezing.

2022-05-09: release 1.0.2

* Added code to prevent freeze in PLOT under certain circumstances.

2022-05-09: release 1.0.1a (Android only)

* Fix for crash on startup with Android versions before 4.3.

2022-05-05: release 1.0.1

* DIM "X", when X existed but was not a matrix, would cause a crash. Fixed.
* Equations: NOT was broken, not recognized as Boolean operator. Fixed.
* Equations: Added TYPE? and UNIT? functions.

2022-05-05: release 1.0a (Windows and Linux)

* More efficient display updating, so long-running programs that update the
  display a lot don't waste a lot of CPU time repainting the display faster
  than the human eye can see, and spend more time actually running the program
  instead. Note that this update is for Windows and Linux only, because the
  Android, iOS, and MacOS versions already worked this way.

2022-04-27: release 1.0

* Based on Free42 3.0.11, with the addition of: a larger and resizable display,
  algebraic equations, attached units, directories, time value of money and
  amortization schedules, and function plotting.
