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

Aenderungen in binkpoint 0.9 (gegenueber 0.8)
=============================================

Leser: Text markieren und kopieren
- Markieren mit der Maus durch Ziehen (fliessend ueber Zeilen), mit
  automatischem Bildlauf beim Ziehen ueber den oberen/unteren Rand;
  Doppelklick markiert ein Wort, Umschalt+Klick erweitert die Markierung,
  Klick ohne Ziehen hebt sie auf.
- Strg+A markiert alles, Strg+C / Strg+Einfg kopiert (wenn der Leser den
  Fokus hat). Kontextmenue (rechte Maustaste, Umschalt+F10, Menuetaste):
  Kopieren, Alles markieren, ueber einem Link zusaetzlich Link oeffnen und
  Link kopieren.
- Zwischenablage als CF_UNICODETEXT: CP437 -> Unicode (Umlaute, ss,
  Rahmen-/Blockzeichen korrekt), ohne ANSI-Steuerfolgen, Zeilenenden CR LF,
  Leerzeichen am Zeilenende abgeschnitten.
- Entscheidung: kopiert werden logische Zeilen. Vom Leser umbrochene Zeilen
  werden wieder zusammengefuegt (ein Leerzeichen an der Umbruchstelle bzw.
  keines bei hartem Umbruch), das beim Umbruch wiederholte Zitat-Praefix
  wird nicht mitkopiert.
- Markierung weiss auf blau, auch ueber ANSI-Farben, bei jeder
  Schriftgroesse (Zoom, Anpassung an die Breite) und in umbrochenen Zeilen.

Leser: anklickbare Links
- Erkannt werden http://, https://, ftp://, telnet://, mailto: und www. im
  Nachrichtentext, nicht in Kludges (auch nicht, wenn mit Strg+K
  eingeblendet). Darstellung unterstrichen in Linkfarbe, Hand-Mauszeiger
  ueber Links, I-Balken ueber Text.
- Ein Klick ohne Ziehen oeffnet den Link mit ShellExecuteW "open";
  www. wird als https://www. geoeffnet. Fehler (z. B. kein Programm fuer
  telnet:) -> Meldung mit der URL.
- Sicherheit: nur diese sechs Schemata; file://, javascript:, Programm- und
  Pfadnamen und alle anderen Schemata werden nie geoeffnet. Die URL wird
  unmittelbar vor ShellExecuteW erneut geprueft (Schema, nur druckbare
  URL-Zeichen, max. 2048 Zeichen); keine Parameter.
- Vom Leser umbrochene URLs (auch harter Umbruch langer URLs) sind auf
  allen Bildschirmzeilen ein Link und werden ganz geoeffnet. Vom Verfasser
  mit echtem Zeilenumbruch getrennte URLs werden nicht zusammengefuegt.
- Neue Quelle src/elink.asm; die EXE bindet zusaetzlich shell32.

Tests
- Neu: test/links/run_link_tests.sh (37 Faelle Link-Erkennung/Pruefung) und
  test/gui09/run_gui09_tests.sh (Markieren, Zwischenablage, Kontextmenue,
  Links oeffnen ueber einen Test-Browser, nicht erlaubte Schemata, Kludges,
  Zoom, Englisch); Bilder in screens/v09/.
- winprobe.exe liest zusaetzlich Zwischenablage, Leser-Masse und
  Mauszeiger-Typ (Fenstereigenschaften bp_cw/bp_ch/bp_hh/bp_top/bp_cur).
- Versionsangaben der bisherigen Tests auf 0.9.

Nicht getestet: echtes Windows (Browser/Mailprogramm ueber ShellExecuteW,
Einfuegen der Zwischenablage in andere Programme, Hand-Zeiger).

Aenderungen in binkpoint 0.8 (gegenueber 0.7)
=============================================

Sysop-Name und Origin (Einstellungen, F9)
- Neue rechte Spalte "Sysop - Vorgaben fuer alle Bosse": Name (sysop=) und
  Origin-Text (system=), global vor dem ersten Abschnitt gespeichert
  (vorhandene Zeile an Ort und Stelle ersetzt, sonst vor dem ersten "["
  eingefuegt). Gelten fuer alle Bosse ohne eigene Werte.
- Je Boss: Kontrollkaestchen "eigenen Namen/Origin verwenden" (ohne Theme,
  lesbar) mit Name/Origin-Text dieses Bosses. Mit Haken: sysop=/system= im
  Abschnitt [boss NAME] (leeres Feld = Vorgabe). Ohne Haken: beide Zeilen
  werden aus dem Abschnitt entfernt, es gilt die Vorgabe. Im Einzelformat
  (ohne Abschnitte) gesperrt.
- Kommentare, Leerzeilen und uebrige Zeilen bleiben bytegleich.
- Wirkt sofort nach dem Speichern (ohne Neustart) auf den Absender von
  Echomail, Netmail und AreaFix-Anfragen, die Origin-Zeile (Editor und von
  scan ergaenzt) und ZYZ/SYS beim Binkp-Login. Lastread-Benutzer: weiter
  globales sysop= vom Programmstart.
- Origin-Laenge: " * Origin: <Text> (<AKA>)" hoechstens 79 Zeichen, also
  Text hoechstens 79 - 14 - Laenge(AKA). Der Dialog zeigt die Grenze an und
  speichert zu lange Texte nicht (Meldung, nichts geschrieben) - er aendert
  keine Eingabe stillschweigend. Von Hand zu lang eingetragen: beim
  Schreiben gekuerzt (Editor auf die Grenze, scan wie bisher max. 50),
  Leerzeichen vor "(" entfernt, AKA immer vollstaendig. Nur ASCII, Name
  max. 35 Zeichen.
- Schluessel: sysop=, system= (global = Vorgabe; im [boss ...]-Abschnitt =
  nur dieser Boss). Dokumentiert in binkpoint.cfg.example und den READMEs.

Info-Fenster
- Zusaetzlich: "Autor: Michael Geller · E-Mail: michael@g00r00.com" und
  "FidoNet/fsxNet-BBS: 21:1/177 (Sysop: Michael Geller)". Kontakt auch in
  README.md/README.en.md.

Korrektur
- AreaFix-Anfrage ueber die Kommandozeile (binkpoint areafix BOSS ...):
  MSGID-CRC und UserCRC im JAM-Kopf waren 0 (CRC-Tabelle nicht aufgebaut).

Tests
- Neu: test/gui08/run_gui08_tests.sh (cfg-Rundlauf nur Vorgabe /
  Ueberschreibung je Boss / Haken weg / Einzelformat, Kommentare
  bytegleich; Origin-Laengenpruefung; Absender/Origin in neuer Echomail und
  Netmail sofort und nach Neustart; AreaFix-Absender; scan-Origin je Boss;
  Kuerzung zu langer Origin; Kontrollkaestchen ohne Theme; Info-Fenster;
  Englisch). Bilder: screens/v08/.
- winprobe.exe gibt zusaetzlich Haken/Sperre und Textfelder aus
  (Passwortfelder nie). Aeltere Tests: Versionsstrings 0.8, Koordinaten
  Speichern/Abbrechen im breiteren Einstellungsfenster, 4 Kontrollkaestchen.

Nicht getestet
- Echtes Windows (nur wine64), kein echter Poll (ZYZ/SYS je Boss nur im
  Code), Umlaute in Namen werden abgewiesen, "Neuer Boss..." mit eigenem
  Namen nicht eigens.

Aenderungen in binkpoint 0.7 (gegenueber 0.6)
=============================================

Nachrichten loeschen (GUI)
- Liste mit Mehrfachauswahl (Umschalt/Strg). Loeschen ueber Entf, Menue
  Nachricht -> Loeschen ... und Kontextmenue der Liste (rechte Maustaste,
  Umschalt+F10) -> Loeschen. Rueckfrage mit Anzahl ("3 Nachrichten
  loeschen?", Ja/Nein).
- Markiert wird wie smapi JamKillMsg (hpt/sqpack/GoldED): MSG_DELETED +
  TxtLen 0 im Kopf, .jdx-Eintrag FFFFFFFF/FFFFFFFF, ActiveMsgs - n,
  ModCounter + 1; unter der JAM-Sperre. Liste und Zaehler werden neu
  geladen, geloeschte Nachrichten verborgen und nie exportiert. Endgueltig
  entfernt beim Packen (z. B. sqpack). Netmail- und Echo-Areas.

Log-Bereich
- Standardmaessig verborgen; Ansicht -> Log anzeigen (Strg+L) ist ein
  Haken-Menuepunkt, das Layout passt sich sofort an.
- Die Liste/Leser-Teilung wird beim Groessenwechsel gerundet statt
  abgeschnitten mitgenommen (wanderte sonst beim Umschalten um 1 px).

Fenstereinstellungen (binkpoint.ini)
- Neu: binkpoint.ini im Verzeichnis der benutzten cfg (Abschnitt [window]).
  Beim Beenden gespeichert, beim Start wiederhergestellt: Lage/Groesse,
  maximiert, Trennbalken, Spaltenbreiten, Sortierung, Leser-Schriftgroesse,
  Log sichtbar. Die binkpoint.cfg wird dafuer nicht veraendert.
- Lage ausserhalb aller Monitore -> Vorgabelage; zu gross -> auf den
  Arbeitsbereich verkleinert; unsinnige Werte -> Vorgaben.

Kontrollkaestchen lesbar (Windows 11, dunkle Dialoge)
- Alle Kontrollkaestchen (AreaFix "mit Rescan, R =", Einstellungen
  "Auto-Poll", "Neue Areas automatisch anlegen", "Bad-Nachrichten
  uebernehmen") ohne Visual-Styles-Theme (SetWindowTheme), damit die helle
  Textfarbe gilt. Optionsfelder gibt es keine. Neu gelinkt: uxtheme.
- AreaFix-Hinweis: "Erstellen & pollen" wurde ohne "&" angezeigt (behoben).

Tests
- Neu: test/gui07/run_gui07_tests.sh (in run_all.sh), Abschnitt 4 in
  test/interop/run_interop_tests.sh (GUI-Loeschen gegen smapi MsgKillMsg,
  sqpack), jamtool "kill". Bestehende Tests: Version 0.7, Log-Bereich in
  den Tests, die Log-Texte lesen, per binkpoint.ini eingeblendet;
  layoutcheck kennt den verborgenen Log.
- Bilder: screens/v07/.

Sonstiges
- Version 0.7 (Banner, PID/Tearline, Via, binkp-VER, Manifest).
- Nicht auf echtem Windows 11 getestet (siehe README, Abschnitt 0.7).

Aenderungen in binkpoint 0.6 (gegenueber 0.5)
=============================================

JAM-Interoperabilitaet (getestet gegen husky smapi/hpt/hptlink/sqpack und GoldED+)
- Scanner: In Echo-Areas wird eine eigene, noch nicht versandte Nachricht
  (LOCAL, nicht SENT) jetzt auch dann exportiert, wenn im JAM-Kopf das
  Netmail-Typ-Bit statt des Echo-Bits steht. Grund: hptlink und sqpack
  (smapi) schreiben Echomail-Koepfe beim Verlinken/Packen mit TYPENET zurueck;
  eine eigene Antwort wurde danach stillschweigend nie exportiert.
  Netmail-Areas unveraendert (Nachrichten mit Echo-Bit werden dort nicht
  exportiert).
- Neue Tests test/interop/run_interop_tests.sh (nicht in run_all.sh, braucht
  husky): binkpoint -> smapi (Kopf, Kludges, Text, CRCs, hptlink-Verlinkung),
  hpt -> binkpoint (areas, Tossen in hpt-Basen, Export von smapi-Nachrichten,
  sqpack, BaseMsgNum), Sperre binkpoint <-> smapi inkl. gleichzeitigem
  Schreiben. GoldED+- und GUI-Gegenproben: screens/interop2/.

JAM-Hinweis
- README.md / README.en.md und das Fenster "Ueber binkpoint" (beide Sprachen)
  enthalten jetzt den von JAM-001 verlangten Hinweis:
  "JAM(mbp) - Copyright 1993 Joaquim Homrighausen, Andrew Milner,
  Mats Birch, Mats Wallin. ALL RIGHTS RESERVED."

Sonstiges
- Version 0.6 (Banner, PID/Tearline, Via, binkp-VER, Manifest); Tests auf
  0.6 angepasst.

Aenderungen in binkpoint 0.5 (gegenueber 0.4)
=============================================

Echo-Areas per AreaFix (Fenster Mail -> Areas / AreaFix, Strg+E, Knopf "Areas")
- Je Boss eine Liste der Areas: Tag, Beschreibung, Status beim Boss
  (verbunden / nicht verbunden / unbekannt) und ob die Area lokal
  eingetragen ist.  Quelle: die AreaFix-Antworten in der Netmail-Area des
  Bosses, zwischengespeichert in areas_<boss>.lst neben der cfg.
- Knoepfe fuer %LIST, %LINKED (bzw. areafix_query), %HELP, %RESCAN [R=n],
  Abonnieren (+TAG, optional ,R=n) und Abbestellen (-TAG); die Anfrage steht
  in einem frei bearbeitbaren Feld (ein Befehl je Zeile).
- "Netmail erstellen": private Netmail (Local+Private) an areafix_name beim
  Boss, Betreff = areafix_password; "Erstellen & pollen" startet danach sofort
  Export + Poll + Toss fuer diesen Boss.
- Abbestellen einer lokal eingetragenen Area: Rueckfrage, ob die Zeile
  echoarea= aus der cfg entfernt werden soll; die JAM-Basis bleibt immer.
- Antworten werden nach jedem Poll/Toss automatisch neu ausgewertet.
- Der Betreff von AreaFix-Netmails (= Passwort) wird in Liste, Leser und Log
  nur als ******** angezeigt.

Neue Areas automatisch anlegen (Tosser)
- Kommt vom Boss (Paket von boss_address) Echomail einer unbekannten Area,
  wird sie angelegt statt nach Bad zu gehen: Zeile "echoarea=TAG
  <areadir>\<tag klein>" im Abschnitt des Bosses (hinter der letzten
  Einstellungszeile, Rest der Datei bytegleich), JAM-Basis anlegen, hinein
  tossen.  Die GUI baut den Baum danach ohne Neustart neu auf.
- Vorhandene Bad-Nachrichten dieses Tags werden uebernommen (movebad, ohne
  AREA-Kludge) und in Bad als geloescht markiert.
- Pakete anderer Absender legen nie Areas an.

Konfiguration (je Boss, alles optional)
- areafix_name (Standard AreaFix), areafix_password (Betreff; leer = leerer
  Betreff, kein Rueckgriff auf password=), areafix_query (Standard %LINKED),
  autocreate=yes|no (Standard yes), movebad=yes|no (Standard yes),
  areadir (Standard: Verzeichnis von netmail=).
- Einstellungsfenster: AreaFix-Name, AreaFix-Passwort (maskiert, nur neu
  setzen, wie das Sitzungspasswort), "Neue Echo-Areas: automatisch anlegen /
  Bad-Nachrichten uebernehmen".

Kommandozeile
- binkpoint.exe areafix <boss> "%LIST;+TAG;-TAG"  (Anfrage-Netmail schreiben)
- binkpoint.exe areas <boss>  (Antworten auswerten, Liste ausgeben, Cache)

Sonstiges
- Version 0.5.
- Tastenkuerzel: die Tabelle hatte eine feste Laenge (Strg+Num0 fehlte);
  jetzt wird die Anzahl berechnet.
- Tests: neue Suite test/areafix (falscher Mystic-AreaFix fakefix.py);
  der Tosser-Test meldet Fehler jetzt auch im Exit-Code.

Aenderungen in binkpoint 0.4 (gegenueber 0.3)
=============================================

Sprache Deutsch / Englisch
- Alle sichtbaren Texte gibt es auf Deutsch und Englisch: Menues,
  Werkzeugleiste, Spalten, Baum, Leserkopf, Statuszeile, Poll-Zeile,
  Log-Bereich, Einstellungen, Neuer Boss, Rueckfragen, Fehlermeldungen,
  Info-Fenster, Schreibfenster, Kludge-Ansicht, Hilfe/Aufruf und die
  Log-Zeilen von poll/toss/scan/all.
- Zentrale Texttabellen src/lang_de.inc und src/lang_en.inc (Text-IDs,
  UTF-16 fuer die GUI); Auswahl beim Start in src/lang.asm.
- Neuer cfg-Schluessel language=de|en|auto im globalen Teil (Standard auto:
  Windows-Anzeigesprache Deutsch -> Deutsch, sonst Englisch).
- Kommandozeile: -lang de|en (hat Vorrang vor der cfg).
- Einstellungsfenster: Auswahl "Sprache / Language" (Automatisch, Deutsch,
  English).  Gespeichert wird nur die Zeile language=, der Rest der cfg
  bleibt unveraendert.  Wirksam nach einem Neustart (Hinweis im Fenster).
- Poll/Toss/Export aus der GUI laufen in derselben Sprache wie die GUI.
- Nicht uebersetzt: Kludges, Tearline, PID, Origin, Nachrichtentexte.

Anwendungssymbol
- Neues Anwendungssymbol (res/binkpoint.ico, 8 Groessen 16-256 px, 256 als
  PNG): als Ressource in binkpoint.exe (RT_GROUP_ICON 1 + RT_ICON), damit der
  Explorer es anzeigt; Hauptfenster, Einstellungen, Schreibfenster und
  Meldungsfenster zeigen es in der Titelleiste, das Info-Fenster zusaetzlich
  im Text.

Sonstiges
- Version 0.4 (src/version.inc).
- Englische Dokumentation: README.en.md, CHANGES.txt.

Aenderungen in binkpoint 0.3 (gegenueber 0.2)
=============================================

Nachrichtenliste
- Nur noch die gewaehlte Zeile wird blau markiert (vorher alle Zeilen blau).
- Sortierung: Standard ist die JAM-Nachrichtennummer (Nr) aufsteigend; Klick
  auf einen Spaltenkopf sortiert nach dieser Spalte, erneuter Klick kehrt die
  Richtung um.  Neu: ein Pfeil im Spaltenkopf zeigt Spalte und Richtung an
  (vorher war eine per Klick gewaehlte Sortierung, z. B. nach Datum, nicht
  erkennbar und blieb fuer alle Areas bestehen).

Fenster und Layout
- Baum, Liste, Leser und Log passen sich beim Vergroessern, Maximieren und
  Wiederherstellen an; die Spalte Betreff fuellt die Listenbreite.
- Startgroesse wird auf den Arbeitsbereich des Bildschirms begrenzt; Start
  maximiert (Verknuepfung "Maximiert") wird beachtet.

Einstellungen (Mail -> Einstellungen)
- Boss/Server je Abschnitt: eigene AKA, Boss-Adresse, Host, Port, Passwort
  (verdeckt), CRAM-MD5, Auto-Poll, Inbound/Outbound/Netmail-Pfade, Netzname.
- Neuen Boss anlegen, Boss loeschen (mit Rueckfrage; der letzte bleibt).
- Pruefung von FTN-Adressen und Port (1-65535); die Konfigurationsdatei wird
  nur in den geaenderten Zeilen umgeschrieben.

Leser
- Schriftgroesse passt sich der Fensterbreite an (80 Spalten fuellen den
  Leser, ganzzahlige Pixel, 16 bis 48 px).
- Strg+Mausrad, Strg+Plus/Strg+Minus stellen die Groesse von Hand ein
  (10 bis 72 px), Strg+0 kehrt zur automatischen Anpassung zurueck.
- Wortumbruch: lange Textzeilen werden am letzten Leerzeichen vor Spalte 80
  umbrochen statt mitten im Wort ("brewe" / "d"); ohne Leerzeichen harter
  Umbruch; Folgezeilen von Zitaten erhalten wieder das Praefix ("R> ").
  Zeilen mit ANSI-Steuerfolgen oder CP437-Rahmen/Blockzeichen bleiben wie
  bisher (harter Umbruch nach Spalte 80), damit ANSI-Grafiken intakt bleiben.

Sonstiges
- Version 0.3 an einer Stelle (src/version.inc): Banner, Info-Fenster,
  Logzeile "bereit", PID/Tearline/Via-Kludges, binkp-VER, Manifest.
