	qodem TODO 0.3.2

This is the TODO list for qodem version 0.3.2.

NEW FUNCTION TODOS

  0.3.2:

    Theme: bug fixes and miscellaneous features

    Fix debian package - libncurses5w >= 5.7

    --dial command line option

    Serial port - make mark/space parity only support 7 bit mode

    Screen dump and scrollback: support HTML save
        dialog to prompt for "1. Normal" or "2. HTML"
        qodemrc option: "normal", "html", "ask", with "ask" as default

    Capture type dialog + "ask" option in qodemrc

    Integrate with I2P

    Show server information in Alt-I window:
         ssh key fingerprint  (-o VisualHostKey=yes)

    .qwk downloads -> ~/mmail/down
        Detect in zmodem, ymodem, and kermit
        Maybe make a full IEMSI

    Expose program colors in qodemrc

    Internal telnet?

    Internal rlogin?

    Internal ssh?

    Port to PDCurses
        Unicode bugs

    FULL REGRESSION:
        Translate tables
            Input
                UTF-8
            Output
                UTF-8
        Keyboard editor
        Keyboard macros
        Modem config
        Serial port settings
        Toggles
            Full duplex
            Strip 8th
            Beeps and bells
            ...
        Split screen
        Scrollback
            View up/down
            Clear
            Save to file
        Screen dump
        List directory
        View file
        View log file
        Send break
        Codepage
        Compose key
            8-bit
            Unicode
        Edit options
            Reload options after edit
        Uploads
            ASCII
            Xmodem
            Xmodem CRC
            Xmodem 1k
            Xmodem Relaxed
            Xmodem 1k-G
            Ymodem
            Ymodem G
            Zmodem
            Kermit
        Downloads
            ASCII
            Xmodem
            Xmodem CRC
            Xmodem 1k
            Xmodem Relaxed
            Xmodem 1k-G
            Ymodem
            Ymodem G
            Zmodem
            Kermit
        Script
        Phonebook:
            Sort
            Tag
            Edit notes
            Edit script
        Capture
            Raw
            Normal
            Html
        Emulations:
            VT52
            VT100
            VT102
            VT220
            LINUX
            XTERM
            L_UTF8
            X_UTF8
            ANSI
                ANSI music
            AVATAR
                ANSI fallback
                    ANSI music
            DEBUG


    Release:
        Eliminate DEBUG_*, // comments
        Update ChangeLog
        chmod 644 colors.c
        #define RELEASE common.h
        "TODO: UPDATE TRANSLATION" --> po/en.po
        Check dates on web pages:
            index.html screenshots.html getting_started.html
        Rebuild man page HTML:
            groff -mandoc `man -w docs/qodem.1` -T html > qodem.1.html
        Version in:
            po/en.po, un_gettextize.sed, colors.c, common.h,
            configure.ac, README, TODO, qodem.c
        Update copyrights to current year:
            qodem.c --version
            console.c terminal header
        Update debian/changelog
        Update debian/control
        Update rpm/qodem.spec
        Compile on FreeBSD
        Compile on armel
        Compile on OS X
        .tar.gz Source
        .deb i386
        .deb x86_64
        Merge new en strings on Pootle server
        Upload to SF
        Upload to debian-mentors
        Update release on freshmeat


  0.4.0:

    Theme: finish up classical modem features

    External protocols

    PETSCII

    ATASCII

    Hangup on modem - option to do +++ATH0 in addition to dropping DTR

    Pacing character support

    Zmodem - fix delay seeing SUCCESS after ZRINIT

    Verify xterm against xterm codes:
        ESC V start of guarded area (SPA) (0x96)
        ESC W end of guarded area (EPA) (0x97)
        ESC ^ privacy message (PM) (0x9e)
        ESC _ application program command (APC) (0x9f)
        VT220 SRM mode
        ...

    Kermit:
        Handle unreliable links
        Resume (RESEND / PSEND)
        Test ACK(n-1) and NAK(n) (pg 14-15)
        Long packet format
        Support for binary (8-bit) transfers (pg 11-12):
            In practice, check for serial connection; if serial, only
            support binary transfers if 8N1, otherwise ASCII only.
            For non-serial connections, support binary.
        Support parity behavior as per Sec 6.4:
           If the communication channel or one of the hosts requires
           parity on each character, and both sides are capable of
           8th-bit prefixing, then the 8th bit will be used for
           parity, and must not be included in the block check. 8th
           bit prefixing is an option feature described in greater
           detail in Section 8, below.

           If parity is being used but 8th-bit prefixing is not being
           done, then the value of the 8th bit of each data byte will
           be lost and binary files will not be transmitted
           correctly. Again, the 8th bit does not figure into the
           block check.
        Server mode
            In code, separate it out (kermit_server.c) so that
            kermit.c can remain clean.
        Locking shift

    Software MNP2

    Release:
        Eliminate DEBUG_*, // comments
        Update ChangeLog
        chmod 644 colors.c
        #define RELEASE common.h
        "TODO: UPDATE TRANSLATION" --> po/en.po
        Check dates on web pages:
            index.html screenshots.html getting_started.html
        Rebuild man page HTML:
            groff -mandoc `man -w docs/qodem.1` -T html > qodem.1.html
        Version in:
            po/en.po, un_gettextize.sed, colors.c, common.h,
            configure.ac, README, TODO
        Update copyrights to current year:
            qodem.c --version
            console.c terminal header
        Update debian/changelog
        Update debian/control
        Update rpm/qodem.spec
        Compile on FreeBSD
        Compile on armel
        Compile on OS X
        .tar.gz Source
        .deb i386
        .deb x86_64
        Merge new en strings on Pootle server
        Upload to SF
        Upload to debian-mentors
        Update release on freshmeat

  0.5.0:

    Theme: miscellaneous other features

    Host mode
        Modem auto-answer
        Bind to TCP port

    Proxy support
    Automatic virus scanning / post-processing of downloaded files
    Add session log events:
        Spawn file post-processor
    Autotrigger macros (ala ACECOMM)
    Unicode -> ASCII / ACS_* chars for non-UTF-8 locale

  0.6.0:

    Theme: printer support

    Phonebook option:
        Print phonebook 132/80
    VT220:
        printer support

  0.7.0:

    Theme: help

    Help system

  1.0.0:

    Theme: 1.0 release

    Encrypted phonebook
        Use openssl, prompt for password
        Rename old file if decryption fails

    UUDECODE/UUENCODE/yEnc/Base64 support in ASCII file transfers

  1.1.0:

    Theme: "maybe" features

    Kerberos
    HS/Link protocol
    VT220:  sixel graphics via custom font generation
    Pass rlogin password directly
    Use ssh-add, or pass ssh password directly
    Push screensaver to its own thread
    Multi-line customizable status display

  2.0.0:

    Port to Win32
        Can Win32 fork() [no, but it has CreateProcess() ]
            and select() [no, use libevent]?
        How does Win32 control stdin/stdout of child processes?
            [see KB 190351]
        Does Windows have termio(s)?  [no, but it uses COMx and
            SetCommParameters ]

  3.0.0:

KNOWN BUGS

  Quite a few.  :-)

  LEAKS:
    keyboard.c:
      reset_function_key_editor_textboxes()
      switch_current_keyboard()

  LIMITATION: 132-column mode is not handled perfectly when there are fewer
       than 132 columns available (e.g. the linux console).

DOCUMENTATION TODOS

  Info / HTML page
      LaTeX

BRAINSTORMING NEW FEATURES

  Intellisense-style completion window:
      Alt-Space?
      Parse current command line, figure out what's going on, pop up
          what?  Man page?  Alternate arguments?
      Copy and paste?

  Software MNP5 through MNP10 (probably not do-able)

  Other emulations: SCOANSI, Wyse50, Wyse60, IBM 3270

  Session log in w3c/IIS format (for standardized recording of file transfers)

  Script library (see Intellicomm)
      Unix login
      Unix SOUP mail download/upload
      Wildcat BBS login, filelist
      SSH through firewall, transfer files, disconnect
      Tradewars 2002 scripts

  Keyboard handling for characters ncurses doesn't handle:
      Numeric keypad / * - +

  Port to X11
    Draw VTxxx fonts graphically
    Sixel graphics
    ReGIS graphics
    Tektronix

SPINOFFS

  Drop-in replacement for lrzsz that does better error checking

  Re-license XYZmodem + Kermit implementation as BSD for inclusion in
    other projects: PuTTY

  Linux/ncurses port of HS/Link 1.21

QUESTIONS TO ASK OUT THERE

  A good command-line telnet/ssh/rlogin for Windows?

  How should I handle dialing when both serial port and
  ssh/telnet/etc. are selected in the phonebook?  Should I skip all
  non-modem calls, or try to detect a successful connection attempt on
  them (via return codes, sniffing the data) ?

