binkpoint - FidoNet/fsxNet Point-Software
Copyright (c) 2026 Michael Geller
Alle Rechte vorbehalten.
All rights reserved.

Changes in binkpoint 0.7 (since 0.6)
====================================

Deleting messages (GUI)
- The list allows multi-selection (Shift/Ctrl). Delete via Del, menu
  Message -> Delete ... and the list's context menu (right mouse button,
  Shift+F10) -> Delete. Confirmation with the count ("Delete 3
  messages?", Yes/No).
- Marked like smapi JamKillMsg (hpt/sqpack/GoldED): MSG_DELETED + TxtLen 0
  in the header, .jdx entry FFFFFFFF/FFFFFFFF, ActiveMsgs - n,
  ModCounter + 1; under the JAM lock. List and counters are reloaded,
  deleted messages are hidden and never exported. Removed for good when
  the base is packed (e.g. sqpack). Netmail and echo areas.

Log pane
- Hidden by default; View -> Show log (Ctrl+L) is a checkable menu item,
  the layout reflows immediately.
- The list/reader split is scaled with rounding instead of truncation on
  resize (it drifted by 1 px per toggle).

Window settings (binkpoint.ini)
- New: binkpoint.ini in the directory of the configuration file in use
  (section [window]). Saved on exit, restored on start: position/size,
  maximized, splitters, column widths, sorting, reader font size, log
  visible. binkpoint.cfg is not modified for this.
- Position outside all monitors -> default position; too large -> shrunk
  to the work area; nonsense values -> defaults.

Readable check boxes (Windows 11, dark dialogs)
- All check boxes (AreaFix "with rescan, R =", settings auto-poll,
  create new areas automatically, take over bad messages) without the
  visual styles theme (SetWindowTheme), so the light text colour applies.
  There are no radio buttons. Now also linked: uxtheme.
- AreaFix hint: "Create & poll" was shown without the "&" (fixed).

Tests
- New: test/gui07/run_gui07_tests.sh (in run_all.sh), section 4 in
  test/interop/run_interop_tests.sh (GUI delete vs. smapi MsgKillMsg,
  sqpack), jamtool "kill". Existing tests: version 0.7, log pane shown via
  binkpoint.ini in the tests that read log texts; layoutcheck knows the
  hidden log.
- Screenshots: screens/v07/.

Other
- Version 0.7 (banner, PID/tearline, Via, binkp VER, manifest).
- Not tested on real Windows 11 (see README, section 0.7).

Changes in binkpoint 0.6 (since 0.5)
====================================

JAM interoperability (tested against husky smapi/hpt/hptlink/sqpack and GoldED+)
- Scanner: in echo areas an own, not yet sent message (LOCAL, not SENT) is
  now exported even if the JAM header carries the netmail type bit instead
  of the echo bit. Reason: hptlink and sqpack (smapi) write echomail headers
  back with TYPENET when linking/packing; an own reply was then silently
  never exported. Netmail areas unchanged (messages with the echo bit are
  not exported from them).
- New tests test/interop/run_interop_tests.sh (not in run_all.sh, needs
  husky): binkpoint -> smapi (header, kludges, text, CRCs, hptlink linking),
  hpt -> binkpoint (areas, tossing into hpt bases, export of smapi messages,
  sqpack, BaseMsgNum), locking binkpoint <-> smapi incl. concurrent writes.
  GoldED+ and GUI cross-checks: screens/interop2/.

JAM notice
- README.md / README.en.md and the "About binkpoint" window (both languages)
  now contain the notice required by JAM-001:
  "JAM(mbp) - Copyright 1993 Joaquim Homrighausen, Andrew Milner,
  Mats Birch, Mats Wallin. ALL RIGHTS RESERVED."

Other
- Version 0.6 (banner, PID/tearline, Via, binkp VER, manifest); tests
  adapted to 0.6.

Changes in binkpoint 0.5 (since 0.4)
====================================

Echo areas via AreaFix (window Mail -> Areas / AreaFix, Ctrl+E, "Areas" button)
- Per boss a list of areas: tag, description, status at the boss
  (linked / not linked / unknown) and whether the area is configured
  locally.  Source: the AreaFix replies in the boss's netmail area, cached in
  areas_<boss>.lst next to the cfg.
- Buttons for %LIST, %LINKED (or areafix_query), %HELP, %RESCAN [R=n],
  subscribe (+TAG, optionally ,R=n) and unsubscribe (-TAG); the request is
  shown in a freely editable field (one command per line).
- "Create netmail": private netmail (Local+Private) to areafix_name at the
  boss, subject = areafix_password; "Create & poll" then immediately runs
  export + poll + toss for this boss.
- Unsubscribing a locally configured area asks whether the echoarea= line
  should be removed from the cfg; the JAM base is always kept.
- Replies are evaluated again automatically after every poll/toss.
- The subject of AreaFix netmails (= password) is shown only as ******** in
  the list, the reader and the log.

Automatic creation of new areas (tosser)
- When echomail for an unknown area arrives from the boss (packet from
  boss_address), the area is created instead of going to Bad: line
  "echoarea=TAG <areadir>\<tag lower case>" in the boss section (after its
  last setting line, the rest of the file byte-identical), JAM base created,
  tossed into it.  The GUI rebuilds its tree without a restart.
- Existing bad messages of that tag are taken over (movebad, without the
  AREA kludge) and marked deleted in Bad.
- Packets from other senders never create areas.

Configuration (per boss, all optional)
- areafix_name (default AreaFix), areafix_password (subject; empty = empty
  subject, no fallback to password=), areafix_query (default %LINKED),
  autocreate=yes|no (default yes), movebad=yes|no (default yes),
  areadir (default: directory of netmail=).
- Settings dialog: AreaFix name, AreaFix password (masked, set-only like the
  session password), "New echo areas: create automatically / take over bad
  messages".

Command line
- binkpoint.exe areafix <boss> "%LIST;+TAG;-TAG"  (write the request netmail)
- binkpoint.exe areas <boss>  (evaluate replies, print the list, cache)

Other
- Version 0.5.
- Keyboard shortcuts: the table had a fixed length (Ctrl+Num0 was missing);
  the count is now computed.
- Tests: new suite test/areafix (fake Mystic AreaFix fakefix.py); the tosser
  test now also reports failures in its exit code.

Changes in binkpoint 0.4 (since 0.3)
====================================

Language: German / English
- Every visible text exists in German and English: menus, toolbar,
  columns, tree, reader header, status bar, poll line, log pane,
  settings, new boss, confirmations, error messages, About box, compose
  window, kludge view, help/usage and the log lines of
  poll/toss/scan/all.
- Central string tables src/lang_de.inc and src/lang_en.inc (string IDs,
  UTF-16 for the GUI); the language is chosen at start-up in src/lang.asm.
- New cfg key language=de|en|auto in the global section (default auto:
  Windows display language German -> German, otherwise English).
- Command line: -lang de|en (overrides the cfg).
- Settings dialog: "Sprache / Language" drop-down (Automatic, Deutsch,
  English).  Only the language= line is saved, the rest of the cfg stays
  unchanged.  Takes effect after a restart (note shown in the dialog).
- Poll/toss/export started from the GUI run in the GUI's language.
- Not translated: kludges, tearline, PID, origin, message bodies.

Application icon
- New application icon (res/binkpoint.ico, 8 sizes 16-256 px, 256 as PNG):
  embedded as a resource in binkpoint.exe (RT_GROUP_ICON 1 + RT_ICON) so
  Explorer shows it; the main window, settings, compose window and message
  boxes show it in the title bar, the About box also next to its text.

Other
- Version 0.4 (src/version.inc).
- English documentation: README.en.md, CHANGES.txt.

Changes in binkpoint 0.3 (since 0.2)
====================================

Message list
- Only the selected row is highlighted blue (previously all rows were).
- Sorting: default is the JAM message number (Nr) ascending; clicking a
  column header sorts by that column, clicking again reverses the order.
  New: an arrow in the column header shows column and direction (before,
  a sort chosen by a click, e.g. by date, was invisible and stayed active
  for all areas).

Window and layout
- Tree, list, reader and log follow resizing, maximising and restoring;
  the Subject column fills the list width.
- The initial size is limited to the screen's work area; starting
  maximised (shortcut "Maximized") is honoured.

Settings (Mail -> Settings)
- Boss/server per section: own AKA, boss address, host, port, password
  (masked), CRAM-MD5, auto-poll, inbound/outbound/netmail paths, network
  name.
- Create a new boss, delete a boss (with confirmation; the last one stays).
- FTN addresses and port (1-65535) are validated; only the changed lines
  of the configuration file are rewritten.

Reader
- The font size follows the window width (80 columns fill the reader,
  whole pixels, 16 to 48 px).
- Ctrl+mouse wheel, Ctrl+Plus/Ctrl+Minus set the size by hand (10 to
  72 px), Ctrl+0 returns to automatic fitting.
- Word wrap: long lines break at the last space before column 80 instead
  of in the middle of a word ("brewe" / "d"); without a space a hard
  break; continuation lines of quotes get the prefix again ("R> ").
  Lines with ANSI escape sequences or CP437 frame/block characters keep
  the hard break after column 80 so ANSI art stays intact.

Other
- Version 0.3 in one place (src/version.inc): banner, About box, "ready"
  log line, PID/tearline/Via kludges, binkp VER, manifest.
