···5353 body is also draggable.
5454- **Input:** **keyboard only**, reusing the existing `EDIT` control and
5555 `OnEditKeyDown` / `OnEditChar` translation. No clickable button pad.
5656-- **Calculator features:** keep **all existing functions except Lire↔Euro** — i.e. four
5757- operations, square root, percent, sign inversion, the `000` key, and the
5858- decimal/hexadecimal base toggle. Remove the Lire↔Euro conversion (`CALC_EURO`, `CALC_L`,
5959- and `calc::changeEuroLire`, fixed rate `1936.27`).
5656+- **Calculator features:** keep the working functions — four operations, square root,
5757+ percent, sign inversion, reciprocal (1/x), the `000` key, clear/reset, and backspace.
5858+ Remove the Lire↔Euro conversion (`CALC_EURO`, `CALC_L`, and `calc::changeEuroLire`, fixed
5959+ rate `1936.27`). Also **remove the decimal/hexadecimal base support entirely**: it is
6060+ currently **dead code** — every `case CALC_X: changeBase(...)` is commented out and the
6161+ `hex` base is never entered — so `changeBase`, `toDecimal`, `restoreDecimalBase`, the
6262+ `base`/`m_currentBase`/`m_lastDecimalNumber` members, the `CALC_A`–`CALC_F` hex digits,
6363+ and the `CALC_X` key are all dropped. Result: a decimal-only calculator.
6064- **Start at login:** yes, **toggleable** from the tray menu, via the MSIX
6165 `windows.startupTask` extension (default: disabled).
6266- **Packaging:** MSIX; **self-signed** certificate for local use.
···8993 `OnEditKeyDown` / `OnEditChar`, `FormatString`, and `ReadRegionalSettings` nearly
9094 verbatim. *Depends on:* `calc`, `CVisualStyle`, Settings.
91959292-4. **`calc`** — engine unchanged **except Lire/Euro removed**.
9696+4. **`calc`** — engine cleaned up: **Lire/Euro removed** and the **dead hex/base code
9797+ removed** (`changeBase`, `toDecimal`, `restoreDecimalBase`, base members, `CALC_A`–`F`,
9898+ `CALC_X`). `m_precision` is initialized to `2` in the constructor (currently
9999+ uninitialized until `set_precision`). Decimal-only.
93100941015. **`CVisualStyle`** — theming/font, reused as-is.
95102···171178## Testing
172179173180- **Unit tests for the `calc` engine** (pure, UI-independent → highest value): sequences
174174- such as `2+3=` → `5`, division by zero, `√`, percent, sign inversion, decimal/hex toggle,
175175- and precision/formatting. A small separate test `.exe` (lightweight header-only
176176- framework). The repository currently has no tests; they are introduced here. Implement
177177- this part with **TDD**.
181181+ such as `2+3=` → `5`, division by zero, `√`, percent, sign inversion, reciprocal (1/x),
182182+ the `000` key, and reset. A small separate test `.exe` (lightweight header-only
183183+ framework), built directly with `cl.exe`. The repository currently has no tests; they are
184184+ introduced here. Implement this part with **TDD**. The engine is decoupled from the
185185+ precompiled header so it compiles standalone.
178186- **Manual verification checklist** for tray/window: show/hide from the tray, always-on-top
179187 *persisting* above another active application, drag + remembered position across
180188 sessions, start-at-login toggle, tray icon re-appearing after an Explorer restart, and
···195203196204- Clickable button pad (keyboard-only by decision).
197205- Lire↔Euro conversion (removed).
206206+- Hexadecimal mode (removed as dead code; decimal-only).
198207- Production code signing / Store submission.
199208- Connecting or pushing to the remote repository.
200209- Multi-monitor anchor heuristics beyond "primary work area" (drag + remembered position