IceChat NX v1.6.5
==================

- Security hardening release covering the v1.6.4 code review findings 1 through 7.
- Windows client source/release target updated to a supported Go 1.27 maintenance toolchain.
- Release Windows executable rebuilt with Go 1.27.1.
- Remote BBS API links now require HTTPS; plain HTTP is allowed only for localhost/loopback testing.
- Windows HTTP redirects are disabled so X-IceChatNX-Token is never forwarded to a redirect target.
- Windows API keys are protected with Windows DPAPI and stored as api_token_protected instead of plaintext; existing plaintext api_token values are migrated automatically.
- Link to BBS masks the API key by default and adds a Show/Hide control.
- ATDT doorstore directories are hardened to 0750 and IceChat NX state/transcript files to 0640 where supported.
- Admin Panel API URL discovery now uses only ATDT's configured base_url and no longer trusts Host or X-Forwarded-* headers.
- API POST endpoints now require Content-Type: application/json and cap request bodies at 64 KiB.
- ATDT bridge compatibility checks are capability-based rather than tied to one ATDT version number.

IceChat NX v1.6.4
==================

- Removed the obsolete Windows SCRIPTS folder and helper CMD files; Link to BBS and Auto Start with Windows are handled directly in the native GUI.
- Renamed the bridge documentation to ATDT-BRIDGE-NOTES.TXT and made current compatibility notes version-neutral, based on ATDT private SysOp chat capabilities.
- Windows chat transcript now uses a terminal-style black background with role-specific colors: cyan for SysOp lines and green for caller lines.
- Chat Appearance options now include separate SysOp, Caller, Input Text, and Background color pickers; Reset restores the new terminal palette.
- Transcript rendering uses the Windows Rich Edit control so each chat line can be colored independently while preserving automatic latest-message scrolling and manual scrollback.
- Refreshed the native Windows UI with an embedded Common Controls v6 visual-styles manifest so buttons, edit fields, checkboxes, and dialogs use the current Windows theme instead of classic Win32 styling.
- Added Per-Monitor-V2 DPI awareness to the Windows client manifest for cleaner scaling on modern displays.
- Standardized action-button typography on Segoe UI regular weight for a cleaner Windows 10/11 appearance.
- Updated Link to BBS, page-alert, and chat action controls to use the same modern UI typography.
- Added Admin Panel Maintenance controls to purge stored page records and IceChat NX chat history.
- Both purge actions require an explicit confirmation checkbox before the Purge button is enabled, with server-side confirmation enforcement as well.
- Purging page records preserves the next page-number sequence so running Windows clients do not miss future pages.
- Purging chat history clears IceChat NX mirrored messages and permanent transcript files without modifying ATDT's global chat_msgs table.
- Windows chat transcript now automatically scrolls to the newest line when a new message arrives, while preserving manual scrollback between new messages.
- Added a native ATDT Admin Panel for IceChat NX.
- Admin Panel shows the full API URL and current API key with copy-to-clipboard controls.
- API key is hidden by default and can be shown/hidden; a Generate New Key action rotates it securely.
- Runtime admin settings are persisted under data/doorstore/icechatnx/settings.json so door upgrades do not overwrite them.
- Admin Panel adds SysOp display name, client-offline threshold, caller page cooldown, offline queueing, page retention, and chat-message retention settings.
- Admin Panel shows Windows-client heartbeat status, client version, queue counts, and active chats.
- Windows Configure API workflow renamed to Link to BBS.
- Link to BBS now edits both the API URL and API KEY and writes them to CONFIG\config.json with Save/Cancel controls.
- No default API key is shipped; new installs must generate a unique key in the Admin Panel.
- Link to BBS uses https://www.yourdomain.com/doors/icechatnx/api.php as the example URL.
- Main window, Options menu, and tray menu now use the Link to BBS wording.

IceChat NX v1.6.3
- Polished the Windows client main UI with Segoe UI typography, cleaner section headings, consistent spacing, and a compact professional layout.
- Main window is now fully resizable; the Activity log grows with the window and bottom controls remain anchored.
- Added minimum window sizing so controls cannot be crushed or overlap.
- Connection status is now presented as a colored status indicator with separate Last Poll and Active Chats fields.
- API endpoint is presented as its own selectable read-only field.
- Last four action buttons are equal width with a restrained 11 pt-style font so Hide to Tray no longer looks oversized.
- Reorganized Options > Chat Appearance and added Configure API to the Options menu.
- Removed the explanatory polling footer from the Windows chat window; the transcript now uses the reclaimed space.
=================

v1.6.3
------
- Windows chat windows are now dynamically resizable; controls reflow with the window.
- Added an Options menu to the Windows client top menu bar.
- Added selectable terminal chat text sizes: 12, 14, 16, 18, 20, and 24 pt.
- Added native Windows color pickers for chat background and foreground text.
- Default chat appearance remains white background with black text at 16 pt.
- Chat appearance settings persist in CONFIG\config.json and apply immediately to open chats.
- Added Reset Chat Appearance.
- Added Auto Start with Windows toggle with live check-mark state.

IceChat NX v1.6.2
-------------------
- Uses the supplied display/main.ans as the default customizable opening screen.

v1.6.2
------
- Reorganized Windows client files into DOCS, SCRIPTS, ASSETS, and CONFIG folders.
- Native client now reads/writes CONFIG/config.json and CONFIG/icechatnx-client-state.json.
- Existing root-level config/state JSON files are migrated automatically on first launch.
- External relative page tunes such as PAGE.wav now resolve under ASSETS/.
- Updated helper CMD scripts for their new SCRIPTS/ location.

- Windows page tune now stops immediately after a successful Acknowledge or Accept Chat action.
- Removed legacy UPGRADE-FROM notes, TESTING.TXT, and DATA-STORAGE.TXT from the release package.

IceChat NX v1.6.0
-------------------
- Added a SysOp-customizable opening ANSI screen at doors/icechatnx/display/main.ans.
- main.ans supports dynamic placeholders for version, caller, SysOp name, client status, client name, heartbeat age, and status text.
- Uses ATDT's built-in CP437/ANSI loader, including SAUCE stripping and classic CP437 glyph conversion.
- Added display/README.TXT with placeholder documentation and customization notes.
- If main.ans is missing, empty, unreadable, oversized, or otherwise unusable, IceChat NX falls back to the built-in opening screen.
- Dynamic placeholder values are sanitized so caller/client text cannot inject ANSI control sequences.
- Retains the ATDT 1.7.8 private-line chat bridge and native Windows GUI client.

IceChat NX v1.5.2
-------------------
- Rebuilt the Windows client as a Windows GUI-subsystem executable so no console/terminal window opens behind it.
- Embedded the IceChat NX ice-cube artwork into the EXE resource table for the Explorer/file icon.
- The same embedded icon is used for application windows and the system tray.
- Corrected initialization of the larger Consolas-style chat fonts.
- Retains the dedicated Quit button on the main GUI.

ICECHAT NX CHANGELOG
====================

v1.5.2
------
* Replaced IceChat NX's custom caller chat screen with ATDT 1.7.8's built-in
  private SysopChat line.
* No ATDT source/core files are patched or replaced.
* Accept Chat in the native Windows client now posts an ATDT private SysOp
  message to the exact caller node/session. ATDT's normal browser poll then
  opens SysopChat automatically, normally within its existing ~4 second poll.
* While SysopChat is active, new SysOp lines are delivered by ATDT's normal
  background poll without the caller pressing Refresh and without a lookup on
  every keypress. ATDT preserves a half-typed caller line during async updates.
* Caller replies entered in ATDT SysopChat are mirrored back into the native
  IceChat NX Windows chat window automatically.
* IceChat NX snapshots caller node + ATDT session identity when the page is
  created and validates the same live session before opening a private line,
  preventing a recycled node number from receiving an old page.
* The Windows client keeps ATDT's console heartbeat fresh while an IceChat NX
  private line is active so the caller is not incorrectly told the SysOp has
  stepped away.
* End Chat from Windows uses ATDT's existing sysophup marker. The caller sees
  ATDT's normal private-line-ended notice and may leave the line with the same
  key/blank-line behavior as ATDT's built-in chat.
* Caller-side custom F5/CTRL+R chat refresh logic was removed; accepted chats
  are now ATDT private-line screens, not IceChat NX door screens.
* Permanent IceChat NX transcript logging remains under
  data/doorstore/icechatnx/chatlogs/. ATDT private lines are mirrored there
  with ATDT message ids deduplicated across Windows polling.
* Windows first-run Configure API dialog, embedded IceChat PAGE.ICE tune,
  native x64 executable, autostart, and manual Windows Refresh button remain.
* API status now reports the ATDT version; the Windows connection test displays
  it.
* Default chat message length is 70 characters to match ATDT Chat::MAX_BODY.
* Target is ATDT 1.7.8 or newer with the private SysopChat implementation used
  by the supplied ATDT 1.7.8 build.

v1.4.0
------
* Removed caller-side chat refreshes on every printable keypress and edit.
* F5/CTRL+R remained explicit Refresh Chat commands for the old self-contained
  caller chat screen.
* Added native first-launch Configure API support to IceChatNX.exe.
* Added Configure API to the main GUI and tray menu.

v1.3.0
------
* Renamed/rebranded the project from SysOp Pager to IceChat NX.
* Moved writable runtime storage to data/doorstore/icechatnx/.
* Added permanent plain-text chat transcripts.
* Renamed the native Windows client to IceChatNX.exe.
