Pichat Road Map

Copyright © 2008 Piratson Technologies, http://www.piratson.se
Last update 13/May/2008 by Mark Seuffert

1. Planned features

The following features are planned for Pichat v0.4.2:
  • automatic download of updates from configurable repositories, nacholoading
  • rewrite chat output from scratch with text selection, text size, animation
  • internationalisation for Windows GUI resources
  • user interface improvements and bugfixes

2. Planned builds and history of changes

Here is a break-down of Pichat v0.4.2 into individual builds:
New in B46
> added chat window with smiley bar
> configurable smiley bar and side bar
# allow color scheme changes with context menu, new tab sets caret in address field
# bugfix: mouse cursor is correct while resizing big main window
# bugfix: tooltip does not vanish after a "focus-less" button was clicked
# bugfix: listctrl column does resize without "show window contents while dragging"
# bugfix: crash report is written on Windows Vista too
New in B45
> rewrote chat output with text selection, text size, animation
> INI file, new setting EnableVisualEffects=1, [GUI] section
# wiki like text formatting with bold and italics, text color types ordered R-G-B
# bugfix: check why images are not "inked" in night color scheme
# improve documentation and wiki engine (images)
New in B44
  • updated Windows GUI resources, completed Swedish translation (thanks Magnus for help)
  • updated SDK web page parser with language detection based on user agent language
  • documentation tool with support for wiki text format (pikiengine)
  • website with more information and new documentation engine, using a MediaWiki/ReStructuredText like formatting suitable for technical documentation
  • renamed simple chat mode to simple text mode in HTML templates
New in B43
  • internationalisation for Windows GUI resources, defaults are English/German/Swedish
  • updated options dialog with language selection, application restart after change
  • INI file: new setting LanguageGuiDefault, [Languages] section
New in B42
  • updated SDK with manual authentication for bots, C++ interface changed
New in B41
  • updated status dialog with chat activity and user number in current color scheme
  • refactored chat text drawing, custom calculation for word wrap and ellipsis
  • refactored web page parser, added to SDK and updated webcam plugin
  • homepage with two more screenshots, webchat and telnet example
New in B40
  • updated webchat HTML templates, more layout control (for Feyd)
New in B39
  • webchat with support for Wii (Opera browser) and iPhone (Safari browser)
  • webchat with support for custom style sheet extensions, CSS skinning
  • updated webchat HTML templates, optional send button and better error handling
  • INI file: new setting SideBarLevel=2, [GUI] section
New in B38
  • side bar with chatrooms and users for user interface and webchat
  • command /WHO shows users in any chatroom, added to side bar
  • protocol updated, server sends more chatroom information, new chat actions
  • changed some color names, new colorscheme examples in download section
  • homepage with CSS layout and updated screenshots
  • INI file: new setting ChatroomListUpdateIntervall=120, [Server] section
  • INI file: renamed setting ShowUserList to ShowSideBar, [GUI] section
New in B37
  • experimental dynamic user list in webchat, add/change/remove with JavaScript and DOM
  • experimental new webchat HTML templates, simplified for easier integration into existing layouts, moved JavaScript into namespace, shorter loading time, tested with FF and IE
  • most pages in standards compliant mode and HTML/CSS validated
  • chat status page shows users in permanent chatrooms
  • quizbot plugin with support for multiple languages
  • webcam plugin with context menu in preview window
New in B36
  • added blinking title bar to webchat and user interface
  • user interface with interactive login if authentication is required
  • startup connections via contacts
  • homepage with sitemap in English/German (for search engines)
  • INI file: added setting StartupCommands, [Pichat] section
  • INI file: added setting AnimateWindowTitle=1, [GUI] section
  • INI file: removed setting Connect, [Pichat] section
New in B35
  • user interface optionally with precise time stamp
  • updated SDK with access to logfile, updated plugin interface (for Feyd)
  • added quiz plugin for running a chatroom quizbot, example trivia in download section
  • better webcam plugin with logo for online, offline and on the air status (for Rickard)
  • INI file: new setting NachoTimeStampPrecise=0, [GUI] section
  • INI file: renamed setting ShowPingPrecise to PingPrecise, [GUI] section
New in B34
  • user interface with button to show chat options
  • updated preferences dialog with advanced server settings
  • homepage with more pages in English/German
  • INI file: new setting MainWindowOptions=1, [GUI] section
  • INI file: changed settings for permanent chatrooms, [Server Chatrooms]
  • bugfix: bots can be added and removed on runtime (bug 1054)
New in B33
  • updated preferences dialog with user interface settings
  • new hotkey Windows+P = show/hide main window (for Feyd)
  • protocol updated, more chatroom information for bots, new chat actions
  • homepage with developer documentation in English/German
  • Winamp plugin with option to ignore song titles with specific text
  • INI file: renamed setting ChatServerJoins to ChatServerUsers, [GUI] section
  • INI file: removed setting MainWindow3dCheckbox, [GUI] section
  • INI file: removed setting MainWindowStatusButtons, [GUI] section
New in B32
  • updated preferences dialog with network settings and a password manager
  • manual software updates with detailed error feedback
  • crash report includes information about plugins (for Feyd)
  • improved file parser class to read and write configuration data
  • INI file: new setting ClearInputAndOutput=1, [GUI] section
  • INI file: new setting UserAuthentication=1, [GUI] section
  • INI file: new setting UserAuthenticationFile=pichat_user_authentication.ini, [GUI] section
  • bugfix: HTTP/1.0 server closes non-persistent connections immediately (bug 1053)
New in B31
  • updated MOTD (message of the day) with better support for multiple languages
  • added ability to check manually for software updates (for Domk)
  • added status plugin with list of all users in TEXT/XML format
  • updated SDK with access to more server and user information, updated bot interface
  • refactored connection manager, download updates optionally via HTTP proxy
  • bugfix: compressing binary packages with correct length (bug 1052)
New in B30
  • homepage with user handbook in English/German (for Mattze)
  • custom title in main window and systray (for Mattze)
  • HTTP 1.1 client allows dynamic change of traffic limitations during upload/download
  • bugfix: XML translation without access violation, improved stability (bug 1051)
New in B29
  • profiling and stress testing of network classes and incoming traffic
  • bugfix: better handling for telnet and tinygrams (bug 1050)
New in B28
  • webchat with own help page in English/German/Swedish
  • command /WHOIS shows if user is registered and optional description
  • command /LOGOUT and /QUIT to leave chat
  • updated chat status query with more server information (for Feyd)
  • updated password tool with IP ranges for all users types
  • updated SDK to make it VC8 friendly, some incompatibilities as usual
  • bugfix: web server handles requests with bare CR (bug 1050)
New in B27
  • web server with support for reverse HTTP proxy (for Feyd)
  • command /COLORSCHEME is the default command to change color scheme
  • renamed colorsheme to colorscheme, updated webchat HTML templates
  • INI file: new setting FollowXForwardedFor=127.0.0.1, [Server] section
  • INI file: removed setting AssistantButtonsLevel, [GUI] section
  • INI file: renamed section [Color Shemes] to [Color Schemes]
  • bugfix: user login works reliable (bug 1049)
New in B26
  • protocol updated for comunities that require registration, updated password tool
  • new command /CHATMODE to change chat server mode
  • new command /USER to log in or out as registered user
  • updated SDK with text container and access to server information
  • INI file, new setting ChatModeDefault=CHAT_OPEN, [Server Permissions] section
  • INI file, new setting VisitorRestrictionChatroom=1, [Server Permissions] section
  • INI file, new setting VisitorRestrictionNickname=1, [Server Permissions] section
  • INI file, new setting SafeguardLoginFailedMax=10, [Server Permissions] section
  • INI file, new setting SafeguardExpireTime=600, [Server Permissions] section
  • INI file, new setting ClosedQuitTime=300, [Server Permissions] section
New in B25
  • new application icons
  • homepage with screenshot section, merged download and plugin section into one section
  • added webcam plugin, shows picture in JPEG format (code from Feyd and Mark)
  • added Winamp plugin, shows current song title
  • INI file: changed setting SmileysAndGraphicsLevel=6, [GUI] section
New in B24
  • updated visualisation and graphical user interface according to coding standard
  • added PNG decoder to visualisation (code from Feyd), refactored TGA decoder in same style
  • refactored visualisation input handling and data formats for stricter encapsulation
  • refactored visualisation data manager classes to use polymorphism instead of templates
  • profiling of file stream and string classes, improved implementation
  • bugfix: automatic update unpacks files from download container
  • bugfix: simple chat mode opens links in new browser window (bug 1048)
New in B23
  • added automatic download of updates, also known as "nacholoading" (for Nacho)
  • new tool to create file repository with version information and SHA256 checksum
  • INI file, new section [Updates]
New in B22
  • refactored HTTP server to offer data exchange with plugins, added to SDK
  • refactored file/memory stream class to be shareable across library boundaries
  • INI file: moved setting DedicatedServer to ServerDedicated, [Profile] section
  • bugfix: STL is not used across DLL boundaries (bug 1047)
New in B21
  • improved HTTP 1.1 client with partial file transfer and traffic limitations
  • improved documentation tool with XML output (shown as HTML in standard web browser)
  • refactored string parser for easier use, updated SDK examples
  • bugfix: nickname change is reported to bots
New in B20
  • added HTTP 1.1 client class to core, updated unit tests
  • added SDK tools to download page, contains mkdoc + mkres + pipasswd + pngcomment
  • improved memory stream class with read/write access
  • refactored network error handling and data exchange
  • bots with better text output and multi-threading support
  • bugfix: trimming text lines before sending to chat server (bug 1046)
  • bugfix: methods TrimTextEllipsis() and TrimTextLine() work without crashing
New in B19
  • bugfix: flicker free drawing without GDI leaks (thanks Feyd for help)
New in B18
  • rewrote tabs with theme support, images and close buttons (thanks Feyd for help)
  • tabs show connection problems and blink if highlighted text is waiting
  • refactored chat graphics and theme handling to work without singelton
  • refactored system tray and icon animation
  • INI file, new setting TabsCloseButton=1, [GUI] section
New in B17
  • rewrote buttons with theme support, reorganised buttons in main dialog
  • protocol updated, server sends more status information, new chat action
  • bugfix: input focus and default button (owner-draw) is handled better
  • bugfix: auto away message is not shown when text filter is enabled
New in B16
  • web server supports authentication, updated password tool with IP ranges
  • server puts automatic safeguard on user names with too many failed login attempts
  • user interface with status button to zoom main window in/out
  • user interface supports filtered text output (for Domk and Nacho)
  • new hotkey Ctrl+R = enable/disable text filter
  • new hotkey Ctrl+L = clear chat window
  • documentation tool with more options and error feedback
  • INI file: new setting DomkoTextFilter=0, [GUI] section
  • INI file: new setting MainWindowZoomed=1, [GUI] section
  • INI file: new setting ServerHttpLocationProtected="/private", [Server] section
  • INI file: renamed setting MainWindowStatusAndContacts to MainWindowStatusView, [GUI] section
New in B15
  • improved string and buffer classes with memory allocator
  • added smart pointer templates (owned/shared), new engine unit test
  • updated SDK coding standard with a new section about C++ memory handling
  • reduced webchat to three browser types: dynamic, simple, unsupported
  • INI file: new setting WebchatScreenSizeBrowserSimple=12, [Server] section
  • INI file: renamed setting ServerDefaultEntryPage to ServerDefaultHomepage, [Server] section
  • INI file: changed setting DataTransferBufferSize=32768, [Server] section
  • INI file: removed setting WebchatBrowserNormal, [Server] section
New in B14
  • added STL independent string and buffer classes for better binary compatibility
  • refactored connection manager and plugin manager to use same pattern
  • refactored command parser with proper encapsulation
New in B13
  • improved chat server plugin support, new bot interface
  • updated SDK with library documentation and more engine unit tests
  • homepage with plugin section for tester
  • new hotkey F12 = show 3D window
  • bugfix: chat server announces correct name in LAN
  • bugfix: user interface minimises without resizing views (bug 1011, bug 1017)
New in B12
  • improved chat server plugin support, new command interface
New in B11
  • improved chat server plugin support, new interfaces
  • new command /PLUGIN to show and configure chat plugins (for Domk)
  • resource tool with configurable namespace label
  • INI file: new setting AnnounceNetworks=255.255.255.255, [Server] section
New in B10
  • UDP scan for running chat servers in LAN, added to contacts, new chat actions
  • new hotkey F5 = update contacts
  • different icons for application and download container
  • INI file: new setting ServerAnnounceLocalNetwork=1, [Server] section
  • INI file: new setting AnnounceIntervall=60, [Server] section
  • INI file: renamed setting EngineLogfile to VisualisationLogfile, [GUI] section
  • INI file: renamed setting EngineLogLevel to VisualisationLogLevel, [GUI] section
  • bugfix: webchat with stubborn web browsers requires initial stream update
  • bugfix: webchat refresh initialises the stream compression
New in B9
  • added simple chat server plugin support
  • added simple software development kit (SDK) to download page
  • updated engine unit tests, dynamically linked, all runs automatic, added to SDK
  • refactored and splitted engine classes to reduce header dependencies
New in B8
  • experimental chat plugin support (for Feyd)
  • server logfile lists shared libraries and chat plugins in server debug mode
New in B7
  • improved server reconnect, detects when local network connection has been restored
  • command /COLORSHEME is the default command to change color sheme
  • INI file: new setting ConnectRetryLocalNetwork=3, [Client] section
  • bugfix: user interface clears chat output correct (means without crashing)
New in B6
  • contacts with multiple groups
  • INI file: new setting ContactGroupAddresses=Default, [GUI Connect List]
  • INI file: removed section [GUI Connect List Favourites]
  • bugfix: download container sets original file date after extraction
  • bugfix: chatroom list is not wrong after update to a new build
New in B5
  • added context menu in user bar with clickable chat commands
  • added context menu for status and contacts
  • refactored core data containers for stricter encapsulation
  • refactored 3D visualisation error handling and logging, similar to chat server
  • INI file: new section [Contacts]
  • INI file: new setting EngineLogfile=pichat_3d.log, [3D Visualisation] section
  • INI file: new setting EngineLogLevel=2, [3D Visualisation] section
New in B4
  • added tabs for multiple chat windows
  • preference dialog with checkbox for sticky window mode (always on top)
  • INI file: new setting TabsWhenChatWindowNumber=2, [GUI] section
  • INI file: renamed setting MainWindowHomepageButton to MainWindowStatusButtons, [GUI] section
New in B3
  • added preferences dialog for basic chat settings like nickname
  • updated hotkeys Ctrl+P = show chat preferences, Ctrl+G = pong back last user
  • user can hide right part of chat dialog (for Phantomix)
  • INI file: new setting MainWindowStatusAndContacts=1, [GUI] section
  • INI file: changed setting ShowUserList=1, [GUI] section
New in B2
  • splitted off core and engine into shared libraries (dll/so)
  • redesigned engine resource handling to be more flexible
  • reduced build time by making better use of precompiled headers
  • bugfix: download container can run only once at a time
New in B1
  • added download container for Windows, unpacks and starts exe
  • added set of engine unit tests for Linux/BSD to download page
  • redesigned source code structure into application + core + engine
  • resource tool supports compression and file modification dates
  • bugfix: user list is not empty on startup
New in B0
  • protocol updated, client sends preferred languages with first line, new chat actions
  • refactored client classes to have the same simple design
  • command /MESSAGE is the default command to send private messages
  • homepage relaunch with download section
Explanation of used symbols:
  • = item done
> = item planned
# = comment or smaller task

3.1. TODO list, user interface

  • multiple chat windows for private messages, dockable or something cool (mark)
  • skinning support for Windows GUI, Winamp 2.x like, godX remix (feyd, mark)
  • chat input with a 'girlie mode' where you can see smileys etc while typing (mark)
  • in message window show if user is in DND mode (domk)
  • in message window show if opponent is typing or not (domk, jns)
  • in message window show user's image or webcam, if available (domk)
  • automatic check if friends on contact list are online/offline (mark)
  • status dialog with more information, possibly web based too (mark)
  • options dialog with more settings, possibly web based too (phantomix, mark)
  • 3D dialog with server and network details, both for Linux and Windows (mark)
  • improve 3D rendering with animated models, textures, etc (mark)
  • animated notifier for private messages, joins, etc (mark)
  • chat window with search bar, Firefox like (domk)
  • user can log his/her chat text and messages (domk)
  • usability study with ca 10 users to make UI better (mark)
  • investigate how to get rid of MFC GUI in favour of another Win32 wrapper (mark)
  • investigate how to get a Linux GUI compiled with WINE or KDE/QT (mark)

3.2. TODO list, functionality

  • chat with filtered IP-address display and logging (mark, iamnacho)
  • in /WHOIS command block LAN network information (mark, iamnacho)
  • anti flood protection (iamnacho)
  • web server handles pipelining with mixed text/binary data stream (mark)
  • web server supports CGI and FastCGI (mark)
  • web server with request rewrite interface, similar to mod_rewrite (mark)
  • authentication interface for user authentication via database (mark)
  • multiple 'view ports' to support multiple chat windows, suitable for multiplexing (mark)
  • traffic encryption (mark, jamie)
  • builtin proxy with a multi-purpose P2P tunneling service (mark)
  • abbility to send/receive files via HTTP/HTTPS (mark, phantomix, domk)
  • profiling of HTTP data flow, especially bulk data transfer and transaction rate (mark)
  • instant messaging "short messaging" also when other person is offline (mark, rickard, domk)
  • user profiles with vcard and interests (mark, iamnacho)
  • finding users with common interests (mark)
  • script for Pichat webpage that checks chat servers and makes statistics (mark)
  • server cluster with automatic server change when one goes down (phantomix)
  • data injection to harden against traffic activity analysis (mark)
  • technical and functional improvements to harden against misuse, spamming and attacks (mark)
  • adjustments for mobiles devices, e.g. extra low traffic (mark)
  • ASCII and UTF8 text data streams, publish protocol specifications (mark)

4. Open issues

  • new ticket system for support and bug tracking
  • refactor preferences classes, automatic update for dynamic entries and smaller footprint
  • systray blinking doesn't work on Windows 64bit version, maybe a time calculation issue
  • forced idle away from chat server and application logic should work better together
Ideas or wishes? Please visit the Pichat Support and discuss your ideas!
For further information and feedback please contact me.
See also: User Handbook, Chat Configuration, Features
Pichat is a simple to use peer to peer (P2P) chat software. It comes with integrated webchat, web server and chat server. The chat supports multiple chatrooms, text formatting with smileys and a user-friendly webchat (HTML, CSS, DOM, JavaScript). The webchat works with nearly any web browser, easily integrated and adjusted to your own web design, no PHP/Flash/Java required. Software for free information exchange for Linux and Windows.