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

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

Sysop name and origin (Settings, F9)
- New right-hand column "Sysop - defaults for all bosses": name (sysop=)
  and origin text (system=), saved globally before the first section (an
  existing line is replaced in place, otherwise inserted before the first
  "["). They apply to every boss without its own values.
- Per boss: check box "Use own name/origin" (unthemed, readable) with name
  and origin text for this boss. Checked: sysop=/system= in the
  [boss NAME] section (empty field = default). Unchecked: both lines are
  removed from the section and the defaults apply. Disabled for a cfg
  without sections.
- Comments, blank lines and all other lines stay byte-identical.
- Takes effect right after saving (no restart) for the sender of
  echomail, netmail and AreaFix requests, the origin line (editor and
  added by scan) and ZYZ/SYS in the binkp login. Lastread user: still the
  global sysop= from program start.
- Origin length: " * Origin: <text> (<AKA>)" at most 79 characters, so the
  text may be at most 79 - 14 - length(AKA). The dialog shows the limit and
  refuses to save longer texts (message, nothing written) - it never
  silently changes your input. Too long because edited by hand: truncated
  when writing (editor to the limit, scan at most 50 as before), spaces
  before "(" removed, AKA always complete. ASCII only, name max. 35 chars.
- Keys: sysop=, system= (global = default; inside a [boss ...] section =
  this boss only). Documented in binkpoint.cfg.example and the READMEs.

About box
- Additionally: "Author: Michael Geller · e-mail: michael@g00r00.com" and
  "FidoNet/fsxNet BBS: 21:1/177 (sysop: Michael Geller)". Contact info also
  in README.md/README.en.md.

Fix
- AreaFix request from the command line (binkpoint areafix BOSS ...):
  MSGID CRC and UserCRC in the JAM header were 0 (CRC table not built).

Tests
- New: test/gui08/run_gui08_tests.sh (cfg round trip default only /
  per-boss override / unchecked / single format, comments byte-identical;
  origin length check; sender/origin in new echomail and netmail right
  after saving and after restart; AreaFix sender; scan origin per boss;
  truncation of a long origin; unthemed check box; About box; English).
  Screenshots: screens/v08/.
- winprobe.exe also reports check state, enabled state and edit fields
  (never password fields). Older tests: version strings 0.8, Save/Cancel
  coordinates in the wider settings window, 4 check boxes.

Not tested
- Real Windows (wine64 only), no real poll (ZYZ/SYS per boss only in
  code), non-ASCII names are rejected, "New boss..." with own name not
  separately.

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.
