Ascendis Caller ID Multiuser Change History
===========================================

4.0.0.0 - 2022-01-11
--------------------
Client:
- Line Activity Panel: reduced unneeded updates
- Calls panel, Next New Call and Play Next New Call commands: if next call isn't
  found and a filter is in place, offer to clear filter and try again
- Calls panel, Next New Call and Play Next New Call commands: after reporting
  no new calls or no new messages, wrap around on subsequent attempt
- Line Activity panel, Next New Call and Play Next New Call commands: if no 
  remaining calls in Line Activity are new, start search from first call on 
  Calls panel
- Contact window notes, Call window notes: TAB and CTRL+I insert a tab 
  character, CTRL+TAB moves focus to the next component, CTRL+SHIFT+TAB moves
  focus to the previous component, SHIFT+TAB does nothing
- fixed tab alignment in Notes page of Contact window
- when dialing through ACIDMU Server, remember dial settings per phone number
  and area code
- Find Phone window: show wait cursor during search
- Find Phone window: remove whitespace and punctuation from typed phone number
  and warn if it contains letters /and/ digits
- trap rare exception in Link Activity panel (lock timeout on 
  Call.findRecentByDeviceLine)
- added "Calls" and "Contacts" headings to Find Phone window
- "Speak Announcement" action: don't speak all-digit "names"
- Added dial submenu to call context menu and Dial button on Line Activity,
  Calls, and Contacts pages.  This submenu includes a "Dial Recent Number" 
  submenu, a quick dial submenu, a manual dialing option, and a submenu of phone
  numbers for contacts with multiple phone numbers (unless Contacts is showing 
  all phone numbers for each contact).
- support "tel:<number>" command passed on command line (tel link protocol) --
  this initiates dialing as configured in settings
- added "Check for Updates" command to Help menu when running on server computer;
  also added automatic background checking (these check against the current
  version on ascendis.com)
- added "Speak Announcement" action which pronounces whole state names instead
  of just their abbreviations (when the caller is unknown or the contact name
  contains a state abbreviation)
- log viewer: added checkbox to automatically update
- support multiline @param specifications in advanced action scripts by ending
  line with backslash ('\')
- added "Move Number to New Contact" to call context menus in Line Activity and
  Calls lists
- fixed cancelling "Save Message" filename dialog (Calls list call context menu)
- fixed problem (re)connecting to database after some connection errors 
  which could, in some situations, have caused excessive memory use and 
  inability to cancel or close ACIDMU Client
- made Locate Database dialog modal

Console:
- added "Check for Updates" command to Help menu when running on server computer;
  also added automatic background checking (these check against the current
  version on ascendis.com)

Server:
- don't reverse order of city, state names when received as CID name
- use location, when available, as name for calls without name
- don't change raw name/number for incoming calls without them
- capture 14 digits of phone number from Whozz Calling? devices in comprehensive
  mode (was 12)
- fixed response to dial requests that time out
- report caller information on non-Lite Whozz Calling? call even if call start 
  message wasn't received (this is rare but I've seen it happen)
- don't change lettercase on state abbreviations received as caller names
- don't try to determine whether non-Lite Whozz Calling? devices can hangup --
  this can (no longer?) be done accurately and if program is terminated during
  configuration device could conceivably be left in block-all-calls mode 

Installer:
- fix problem running Client with Windows standard users
- retain working activation code when installing over pre-3.x version
- fixed warning about activation code not working with new version when
  installing over pre-3.x version (when appropriate)
- log the installer version and date


3.0.3.0 - 2021-01-05
--------------------
Client:
- fixed some problems when a call has no contact, which can occur from aborted 
  imports

Console:
- fixed possible problems with File|Restore Database and Tool|Restore Initial 
  Database commands that could make them fail
- when making a database backup, make sure user has write permission to 
  destination folder first

Installer:
- fixed on Mac

Uninstaller:
- fixed on Mac


3.0.2.0 - 2020-09-21
--------------------
Client:
- fixed adding contact from call
- Contact window: when taking over a phone number, don't delete the other contact 


3.0.1.0 - 2020-08-21
--------------------
Client:
- fixed exception when adding numbers to existing contact in Contact window


3.0.0.0 - 2020-08-20
--------------------
Client:
- reflect (stored-in-database) setting changes faster
- improved unexpected shutdown handling
- fixed some problems with junking & unjunking
- greatly sped up junking with large databases
- fixed database exception that could occur because of contention between 
  display panel updates and other database operations
- CallInfo.getLocation(): never return null
- automatically remove duplicate columns from panels caused by bug in earlier
  version
- Display panel and notification windows: include country name for calls from 
  other countries
- added # of phone numbers for Junk contact to Technical Support Report
- on Line Activity panel and Call Notes window, show nothing for Call Ended
  when call hasn't ended yet
- Contact window: added tooltip on phone number list showing the number of phone
  numbers
- Calls Report: show wait cursor while building Calls Report window
- Calls Report: start with the number of calls displayed last time
- fixed exception when pressing Escape key while displaying Calls Report while
  Line Activity panel is active
- Calls Report: when using "All" time period, show the first and last dates of
  the report in the summary at the bottom (other times the summary shows the
  start and end of the selected period)
- reduce database impact of Line Activity panel -- this may improve performance
  of junking calls and other database operations  
- enable Play Message command when the first call with a recorded message is 
  received while running (previously the command was disabled until switching
  tabs or restarting)
- fixed: show the device name and device or line descriptions for "Waiting" 
  lines in Line Activity if the respective column is visible
- pressing CTRL+C when a message dialog is displayed now copies the text to the 
  system clipboard
- when junking a call, make it not new
- fixed occasional problem with column customization getting corrupted
- fixed icon caption positions in Find Phone window
- after adding a contact from the Contacts list, scroll to the new contact and
  select it
- added "Play Message" button to "Edit Call" window when call has a message
- "Play Message" window is no longer modal -- now you can edit call notes or
  contact while the message is playing
- fixed exception when removing the last column
- added 'find' support to log viewer
- if configured database server isn't found, look for one and offer to use it if
  found -- this primarily helps new installations
- use internal text file viewer for showing log
- streamlined database connecting and reconnecting
- made some advanced script exception messages more specific
- Mac: minimize script terminal window while running
- if already running, bring it to the front (only allow one instance)
- fixed dialing on Windows when Dial.FromClient setting is True
  (was broken sometime after version 2.0.2.3)
- detect and offer to upgrade if so configured (the default) and a newer 
  installer exists on the server
- improved accuracy of Database Server status in open database window
- "Edit Contact" window: added splitter to Patterns page and moved "and" & "or"
  buttons to better use space
- added "Edit Contact" button to Call Notes window when contact is known
- improved find next/find previous
- fixed duplicate confirmation when closing non-empty filter
- process recent calls at startup instead of when first call is received
- fixed possible duplication of new call processing
- Call Notes window: start with focus in notes area so user can start typing immediately
- remember configured font locally so we can use it before we connect to database
- fixed occasional font oddity in Line Activity panel
- added Play Next New Message button to Line Activity and Calls panels toolbar
  (this will only appear once a call with a recording has been selected)
- Line Activity toolbar: fixed several button visibility oddities
- added address and custom columns to contact selection dialog's column 
  selection dialog
- fixed name of Custom 5 column in contacts column selection dialog
- added "Move Number" toolbar button (replaces "Add Number" when call already
  has contact) to Line Activity and Calls panels
- added "Next New" toolbar button to Line Activity and Calls panels
- fixed copying name of sound in Sounds panel
- added "Toggle Newness" command to Line Activity and Calls context menus
- added "Next New Call" command (on Search menu)
- added accelerator 'P' for "Play Message" (applies to calls)
- added accelerator 'T' for "Toggle Newness" (applies to calls)
- added accelerator 'N' for "Next New Call" (applies to calls)
- added accelerator 'O' for "Make Not New" (applies to calls)
- added accelerator 'M' for "Make New"  (applies to calls)
- status bar can now display multiple messages
- fixed problem with actions sending mail
- word wrap notes when printing from "Edit Call" window
- added important database table counts to Technical Support Report
- improved ability to keep windows entirely on a monitor
- when adding a contact from a call, used mixed case for names
- process system property assignments in command line arguments
- added program folder to Technical Support Report
- support setting Client.LineActivity.SimpleColoring
- support setting NotificationWindow.Small.OnlyOne
- added context menu to text controls
- put names of toolbar icons under the icon by default (change using View menu -> "Toolbar Icons")
- added "Message" column by default to Line Activity and Calls tabs
  (won't appear for existing installations; right-click a column header to change columns displayed)
- replaced default "Call Ended" column with "Duration"
- immediately show new lines in the Line Activity panel if a call is detected on one
- added "Del" key as shortcut for deleting calls, contacts, categories, actions, sounds, locations

- added Print button to Call Notes window
- Contact window, Name tab: when checking checkbox next to Display Name or Speak
  Name, update Display Name or Speak Name immediately (previously the name field
  was not updated until a first or last name field was changed)
- Contact window, Numbers tab: fixed changing phone number description

Console:
- improved unexpected shutdown handling
- Setting value: automatically scroll cursor into position while moving it in
  text area (such as scripts) with the keyboard
- Setting value: fixed mouse wheel scrolling while cursor is over multiline
  text area (such as scripts)
- added Tool menu command "Update Phone Locations"
- fixed potential exception when using Tool -> Repair calls
- when importing contacts from CSV and a phone number is already known but not
  assigned to a contact, don't count subsequent phone numbers for same imported
  contact as skipped
- Server page, server log: support tabbing out of log table
- Server page, server log: allow changing font size using monospaced font
- Server page, server log: properly handle log messages with pipe symbol
- added # of phone numbers for Junk contact to Technical Support Report
- made more tasks execute in background to improve UI responsiveness
- added command on Tools menu to delete old calls from database
- pressing CTRL+C when a message dialog is displayed now copies the text to the 
  system clipboard
- fixed problem using configured font at program startup
- fixed problem making backups from a different platform than the Database Server
- added 'find' support to log viewer
- added "Scan for New Devices" command to "Tool" menu
- fixed problem where database restore was incorrectly reported as having failed
- if configured database server isn't found, look for one and offer to use it if
  found -- this primarily helps new installations
- use last configured font at startup (instead of waiting for database to connect)
- use internal text file viewer for showing logs
- added commands (on Help menu) to show Database Server and Server log
- added commands (on Help menu) to show Database Server and Server log folder
  when running on the same computer when the log files are accessible from the
  current user (this is usually true on Windows but not on other platforms)
- streamlined database connecting and reconnecting
- Server panel: added "Log days" spinner
- Server panel: update contents as filter text is changed
- Server panel: support sorting by column
- Server panel: get log directly from Server
- Settings panel: added popup menu to table for copying setting info
- Settings panel: show vertical scroll bar if setting area isn't big enough
- Mac: minimize script terminal window while running
- if already running, bring it to the front (only allow one instance)
- detect and offer to upgrade if so configured (the default) and a newer 
  installer exists on the server
- added upgrade settings (use filter text "Upgrade" on Settings page)
- added Database Server status to open database panel
- improved accuracy of Database Server status in open database window
- recover faster after database reconnect after backup or restore
- disconnect from database during backup or restore to avoid confusing messages
- fixed problem where database backup or restore could be reported as failure
  when it succeeded
- task progress bar (lower right corner) now displays task message when cursor
  is held over it
- disable all file and tool commands while a task is in progress
- require confirmation to exit while a task is in progress
- cut import time of long contact CSV files roughly in half
- fixed importing contact CSV files with no name columns
- import long CSV files as multiple transactions so other ACIDMU programs don't
  time out (their response will still be sluggish but that's unavoidable)
- fixed progress when importing CSV files
- made multiline setting editor undoable (CTRL+Z = undo; CTRL+Y = redo)
- automatically remove all whitespace when pasting activation code 
  (Help menu -> Activate -> Paste Activation Code)
- added important database table counts to Technical Support Report
- improved ability to keep windows entirely on a monitor
- warn when importing contacts without phone numbers
- fixed importing contact records from CSV with phone number column named 
  "Phone", "PhoneNumber", or "Phone Number"
- process system property assignments in command line arguments
- added program folder to Technical Support Report
- added setting Client.LineActivity.SimpleColoring
- added setting NotificationWindow.Small.OnlyOne
- added context menu to text controls


- added commands to export and import contacts to and from VCARD files (on File menu)
- include Category field in Contact CSV files (export and import)

Database Server:
- improved unexpected shutdown handling
- added log message at start of online database backup
- change database URL to local computer when running DbServer locally
  (this probably won't affect any real use cases, but if you're running a local
  DbServer and trying to access a DbServer running elsewhere, note that every
  time the local DbServer starts it will change the local database URL)
- on Mac and Linux store database and settings in a true shared folder
- fixed problem making backups from a different platform than the Database Server
- allow automatic discovery (of the Database Server)
- fixed MessageStatusServer stopping after dirty disconnect from client (could
  prevent new Clients from connecting to Database Server that was up and running)
- made app shutdown more resilient
- support installer downloads to clients
- don't write invalid XML characters to XML backups
- don't fail on invalid XML characters in XML restores
- on failed restore attempt, automatically restore backup made before restore,
  or initial database if that fails
- fixed problem preventing full database restart after process was terminated
  while a backup (or other exclusive access) is in progress
- added "Current folder" + memory info to "info" command output
- after successfully restoring a binary database backup, delete the temporary 
  restore folder
- added program folder to Technical Support Report
- used different service wrapper for Windows
- only backup the database at startup when the Database Server has changed
  (previously we always backed up the database which slowed down startup)
- enabled automatic database backups (currently these happen around 2 AM daily)
- start up faster on Windows

Server:
- improved unexpected shutdown handling
- CallInfo.getLocation(): never return null
- automatically try to update phone locations the first time run
- when a new phone number is processed, copy the location information to the
  associated contact
- when scanning for serial ports, ignore redundant tty (vs. cu) ports on Mac OS X
- on Mac and Linux store settings in a true shared folder
- delete unused internal contacts at startup
- delete unused names at startup
- automatically scan for new devices at startup if no non-fake devices exist
- on Linux, ignore placeholder serial ports
- made app shutdown more resilient
- streamlined database connecting and reconnecting
- initialize activation as soon as the database is available
- Mac: fixed problem recognizing activation on system restart
- don't store log messages in database
- made some advanced script exception messages more specific
- added "Current folder" + memory info to "info" command output
- added "-m" option to fake_call command to simulate a recorded message
- fixed problem with actions sending mail
- improved behavior with modems when modem sends unsolicited messages during 
  modem communication
- added important database table counts to Technical Support Report
- added program folder to Technical Support Report
- used different service wrapper for Windows
- fixed USR5637 modem under Windows, although voice probably won't work
- start up faster on Windows
- support USR5637 modem for voice playback and recording (minimum firmware version 1.2.23?)
- fixed authorization problem with one computer
- made answering machine respond up to 4/10 second faster once configured number
  of rings have been detected
- improved outgoing message quality for some systems
- sped up call processing for never-before-seen phone numbers 

Installer:
- on copy failure, prompt to try again or cancel installation
- warn if existing activation code, if present, won't work with new version
- run previous version's uninstaller before installing, if found
- trap and report (rare) global exceptions
- fixed some issues remembering prior parts
- if no database server is found, default to installing everything (this only
  happens the first time the installer is run as subsequently it defaults to
  the options used last time)
- Added command-line options to support hands-free installation.  On Windows,
  the syntax is:
    Syntax: ACIDMU_Setup.exe 
     /help               : show this message and exit
     /accept-eula        : pre-agree to End-User License Agreement
     /both               : pre-select both Client and Server packages
     /client             : pre-select Client-only package
     /silent             : automatically advance to next step
     /server             : pre-select Server-only package
    Example: ACIDMU_Setup.exe /accept-eula /both /silent
  The syntax is slightly different on Linux and Mac although the option names
  are the same.
- added summary mode, which is the new default
- remember window size and position
- fixed program shortcuts on Mac
- fixed button shortcuts on EULA page (on Mac, use CTRL+ALT+<key>)
- Linux: if using UFW (Uncomplicated FireWall), allow database server through
- officially include Mac version
- Windows: remove old firewall rules during pre-processing to prevent duplicate 
  rules
- Windows: add firewall exception for Whozz Calling? Ethernet Link on port 3520
- Linux: when starting Client and/or Console at end of installer, launch them 
  as the user who started the installer and leave them running when installer
  exits
- native installers for Windows, Linux
- include Java runtime

Uninstaller:
- remember window position
- sign Windows uninstaller exe
- support auto mode for running from installer
- Linux: made automatic prompt for password work on more installations
- added text control to display processing output instead of popping up message 
   boxes
- fixed problems starting uninstall survey on Linux


2.0.2.0 - 2019-02-18
--------------------

Client:
- fixed exception when using Find Contact in Contacts list on contact with no phone numbers
- don't show error message when right-clicking on empty calls list
- don't show error message when double-clicking on empty calls or contacts lists
- fixed potential problem repositioning notification window that would otherwise
  be partially off-screen
- fixed problem getting JVM log file in Technical Support Report on Mac
- fixed repeating error message "Line Activity panel had trouble updating" in
  some cases (likely old installations) with empty database

Console:
- don't show error when saving device changes including deleting a device that hadn't been saved
- fixed logged exception when deleting Whozz Calling? serial device
- fixed problem getting JVM log file in Technical Support Report on Mac

Database Server:
- fixed problem restoring initial database on Windows

Server:
- fixed problem getting JVM log file in Technical Support Report on Mac
- fixed or improved initialization of USR5686E modems
- allow unknown voice modems for voice (they may not work, however)
- improved outgoing sound quality of auto-converted >8 bit sounds
- fixed occasional problem using answering machine with Whozz Calling? device and helper modem


2.0.1.0 - 2019-01-30
--------------------

Client:
- updated user guide
- fixed problem with maximized notification on Linux triggering window edit mode
- require a name before saving changes in contact window
- fixed extra locations in new contact window
- added Edit Category command to contacts list context menu
- reduced memory impacts of lost database connection
- include ACIDMU shared folder path in Technical Support Report
- popup message when trying to find or filter on a panel that doesn't support it
  (like Line Activity Panel)
- added View menu option for changing icon label position and visibility
- show current (future) category in category selection popup menus in Line 
  Activity, Calls, and Contacts panels
- free Technical Support Report resources sooner to reduce memory usage
- show reminder message when no data is displayed and a filter is active
- Calls list: added New filter
- Calls list: remember Category filter
- Action window: remember Sequential flag setting for composite actions
- support Sequential flag for new/modified Composite actions
- replaced advanced scripting engine (BeanShell) with Groovy to fix memory leak
- added ability to attach message in advanced Send Mail action
- fixed macro expansion in advanced Send Mail action parameters
- use configured font for junk popup menu items in Line Activity panel
- fixed centering message windows when ACIDMU Client doesn't have focus
- added JVM memory usage to Technical Support Report
- if found, include JVM log files in Technical Support Report
- don't include encrypted setting values in Technical Support Report
- Action dialog, advanced action script: fixed missing end-of-line in output 
  window when script has no arguments
- improved placement of info/warning/error message windows
- keep windows on a monitor when opened
- Line Activity panel: when a displayed call is deleted, display the
  next available one if there is one in the panel
- fixed error message when running completely empty composite actions
- fixed blank line in contact selection window when moving phone to different contact
- don't allow moving phone to different contact if there are no other contacts
- when automatically creating the Junk caller, set the category to "Unwanted"
- disabled beeps in Line Activity panel when a line without a call is selected
- Line Activity panel: hide fake lines unless no other lines are in use or a recent call exists on it
- hide advanced action source code by default
- moved advanced action documentation to configuration tab
- fixed potential repeat of client actions when client clock is 
  sufficiently different from the server clock
- enabled Ctrl+A to select all when focus is on call, contact, category,
  action, sound, or location lists
- by default, hide action, sound, and location lists -- enable them on
  the View menu if desired
- added Nomorobo to default lookup URLs
- added search-by-typing in Contact Selection window (used when assigning
  calls to contacts)
- added "Move phone number to different contact" to contacts panel
  right-click menu
- include very recent column width changes when refreshing lists
- added "Find" to contacts list right-click menu
- fixed problem where some visible columns in Contacts list were not
  used for filtering
- added 'hide' command to display panel right-click menu
- added hidden command to System menu to change database server
  (hold down Shift & Control when pressing opening menu)
- added categories
- show image of selected image file when loading contact image from file
  in Contact window
- fixed problem aborting saving contact image to file in Contact window
- fixed problem loading contact image from file in Contact window 
  requiring two clicks on "Open" button
- when saving column configurations keep old configuration until new one
  is completely saved to avoid corruption if program is terminated
  before completion
- Line Activity: show a border around the selected table row instead of altering the color
- when closing an active filter toolbar, prompt to clear the filter first
- for speed purposes, keep log file open
- Line Activity: added Lookup Phone Number to toolbar
- Line Activity: added Play Message to toolbar and context menu
- Line Activity: added column selection and configuration
- Line Activity: added commands to mark calls as new or not new
- added command to junk by raw name of caller to calls list and line
  activity context menus and to right-click menu on Junk buttons
- added Lookup button to calls list to lookup phone number using 
  configured search engine(s) -- left click to lookup using first 
  engine, right click to choose from available engines
- added optional Flags column to calls list
- mark calls as read (not new) when opening the call notes window
- Action window advanced script editor: added Sound, Action, and DeviceLine parameter support 
- prompt before closing if any windows need saving
- when application regains focus, show all windows
- Action window, composite: update "All Actions" list when "Action Type" is changed
- Action window advanced script editor: tab/shift-tab now indent/unindent current or selected lines
- Action window advanced script editor: added line numbers
- after adding or duplicating an action, select the new action in the list
- added recordings for calls
- added Sounds tab
- minimize at startup if "/min" (without the quotes) is passed on the command line
- Call Notes window: added right-click copying of cells in "Details" tab

Console:
- try to fix elusive bug where a change to a phone number format isn't saved in some case
- include ACIDMU shared folder path in Technical Support Report
- added setting to globally enable or disable silence detection (Sound.Phone.Record.EndOfMessageSilenceDetection)
- added per-line silence detection configuration (see Device Line's Properties window)
- fixed centering message windows when ACIDMU Console doesn't have focus
- added JVM memory usage to Technical Support Report
- if found, include JVM log files in Technical Support Report
- don't include encrypted setting values in Technical Support Report
- widened filter text box on Setting and Server Commands pages
- fixed spurious text in "Device" column of server log on Server Commands page
- improved placement of info/warning/error message windows
- updated user guide
- Advanced Device Line properties window: mention playing and recording messages over the phone
- fixed problem importing from ACID3 XML when phone already exists in database
- added "Import Initial Database" command to File menu
- added Category.NewContact and Category.UnknownCaller settings
- if we can't connect to the newly selected database, show the "Please
  Locate Database" window instead of quitting immediately
- for speed purposes, keep log file open
- added AutomationLevel setting
- database backups can be initiated without manually closing clients and
  server -- they will be disconnected during the backup
- fixed possible race condition during database connection that might cause 2 minute delay
- database backups and restores are now performed on the Database Server
  (but are still initiated from Console)
- moved database upgrading to Database Server; this is performed 
  automatically when needed (a backup is made first)
- moved the database backup folder to DbBackups in the Documents/ACIDMU 
  folder (existing database backups remain in original location)
- restrict the number of characters allowed in the editor for some settings
- widened the editor for some settings
- renamed existing database backup to XML database backup, reflecting 
  the contents
- added binary database backup; this is smaller and faster
- when remembering the pathname for database backups, if the default
  was used, the default will be offered next time, too
- added a "Default" pseudo-filter to the database backup save dialogs
  to restore the default pathname

Database Server:
- require confirmation for "restart" command
- updated user guide
- restore initial database on startup if database folder is missing
- fixed possible hang on termination
- for speed purposes, keep log file open
- log database status
- database is upgraded automatically when required (a backup is made first)
- now performs database backups and restores (previously was handled in
  Console)
- added binary backup capability (binary backups are faster and smaller)
- backup database on startup
- added command line editing for local console and telnet

Server:
- Answering Machine action: support canceling during outgoing message (defaults
  to '#' key on phone keypad) in case ACIDMU picks up before you do
- cleanup connection thread when telnet client disconnects without notice
  -- this fixes high CPU usage in this case
- fail dialing immediately if a call is in progress
- slightly improved speed of new call location lookup by adding index
- fixed bug where dialed phone number was lost when dialing from ACIDMU with
  Whozz Calling? device and modem
- include ACIDMU shared folder path in Technical Support Report
- sped up talk and hangup response after dialing from server
- correct dialed phone number from Whozz Calling? device if necessary
- connect to database message status server
- fixed possible exception while processing end of calls which could prevent
  save of recording or update of call flags
- support Sequential flag for new/modified Composite actions
- replaced advanced scripting engine (BeanShell) with Groovy to fix memory leak
- fixed macro expansion in advanced WGet action parameters
- log JVM memory usage for each call
- added ability to attach message in advanced Send Mail action
- fixed macro expansion in advanced Send Mail action parameters
- support outgoing calls preceded by a ring for Whozz Calling? (seen in a log)
- gracefully handle deleted call at end of call for Whozz Calling? devices
- updated "help" command output
- updated user guide
- fixed possible hang on termination
- log reaction time when hanging up or playing or recording a sound over the phone
- for speed purposes, write to log table from separate thread
- for speed purposes, keep log file open
- set call flags (i.e., the Flags column for each call)
- mark outgoing calls as read (not new) as they occur
- support answering machine action
- added getDeviceLineDescription() to callInfo in advanced actions
- include more log lines in technical support report
- improved compatibility with modems requiring DTR to communicate

Installer:
- don't let Cancel button be the default button
- force shutdown of Client and Console if they don't respond to polite request


1.3.2.0 - 2018-01-25
--------------------

Client:
- fixed displaying contacts without a preferred phone
- widened some contact column default widths
- automatically merge in added missing list columns

Console:
- fixed problem importing CSV files with missing trailing EOL or 
  importing Windows-line-endings-files on Mac and Linux
- improved reporting of problems importing CSV files
- when importing contacts, ensure they have a preferred phone number

Server:
- when better caller name becomes available for non-contact callers, use it

Installer:
- fixed major problem on 64-bit Windows with 64-bit JVM


1.3.1.0 - 2017-12-01
--------------------

Client:
- fixed filtering Contacts on a custom column
- added Calls Report (on View menu)
- fixed filtering on Calls' CallState column
- fixed filtering on text and date
- added a couple date range choices in call filter
- allow specifying times in date range filter for calls
- clarified descriptions of Action.Client.Default and Action.Server.Default

Console:
- convert all lowercase activation code characters to uppercase


1.3.0.0 - 2017-10-10
--------------------

Client:
- hide Eradicate Caller command if Client.CanDeleteCalls is False
- fixed incorrect "ACIDMU Server is not running" messages caused by
  large system clock differences between machines
- use Database Server time for database timestamps
- fixed problem where actions weren't performed if the system clock on
  the client was two or more minutes ahead of the Database Server
- automatically restore default columns if a column setting file is corrupt
- reduced spurious "DbUser thinks multiple servers are running" errors
- About box, Technical Support Report: added IP address
- Contact window: fixed keyboard shortcuts for location fields
- fixed testing showCall action command from Actions panel or action window
- added advanced action callInfo.getClientActionName(), callInfo.getServerActionName()
- set some more values when creating call for testing actions
- Call Notes window: widen label combo box to fit contents
- Call Notes window: added "Detailed" tab to show more information on call
- added advanced action callInfo.getContactFirstCalledStr(), callInfo.getContactLastCalledStr()
- fixed advanced action callInfo.getCallDurationStr()
- don't allow adding contact or assigning to existing contact calls with
  no caller information (users have mistakenly done this, resulting in 
  all calls with no caller information appearing as though they came
  from the same person)
- if editing call notes for a call with no phone record, repair missing
  phone records in all calls (note: this should only happen if a serious
  error occurred)
- define default date and timestamp formats using international date format
  (as before, this can be changed in ACIDMU Console using the Format.Date
   and Format.Timestamp settings)
- added custom contact columns to available columns in Calls list
- added contact column 'Extra' to available columns in Calls list
- added column 'Extra' to available columns in Contacts list
- fixed possible error message when database connects while the Calls list is showing
- use configured foreground and background colors for call lists
- respect font settings
- actions can now target (i.e., be used on) both client and server
  (if your Actions list shows "Server" instead of "Both", right-click on
   the column header and choose "Reset Columns")
- fixed problem with Speak command in Easy Actions where it spoke the
  macro name instead of the macro value -- to fix existing Easy Actions,
  edit the action and click OK to save it again

Console:
- Devices page: warn when preferring device time
- Devices page: immediately reflect changes in additional serial ports
  setting made from same Console
- Devices page: let modem and serial Whozz Calling? serial port drop 
  down heights be larger if window is big enough
- fixed incorrect "ACIDMU Server is not running" messages caused by
  large system clock differences between machines
- reduced spurious "DbUser thinks multiple servers are running" errors
- About box, Technical Support Report: added IP address
- Devices page: offer to restart ACIDMU Server when changes are saved
- added "Restart ACIDMU Server" to Tool menu
- sped up database upgrades a bit
- show progress when upgrading database
- select proper country code initially and when blank
- sped up database restores by about 14 times
- added Tool menu (moved "Select Database Server" here)
- added "Repair Calls" to Tool menu 
- catch and report all additional exceptions when restoring a database
- remember phone format export/import filenames
- define default date and timestamp formats using international date format
  (as before, this can be changed using the Format.Date and 
   Format.Timestamp settings)
- made Phone Number Format Condition editor multiline
- enabled word-wrap on Phone Number Format Notes editor
- added Color.Background.Client.IncomingCall, Color.Background.Client.OutgoingCall,
  Color.Foreground.Client.IncomingCall, and Color.Foreground.Client.OutgoingCall settings
- added Font.Default, Font.Client.IncomingCall, and Font.Client.OutgoingCall settings
- added Action.Client.OutgoingCall and Action.Server.OutgoingCall settings
- assign a preferred phone number to contacts after ACID3 XML import
- made ACID3 XML import more forgiving to incomplete or unexpected data
- when importing from ACID3 XML files, continue after an import error

Database Server:
- normalized product date in info
- added product version to info

Server:
- made view_log_folder command work on more systems
- made view_log command work on more systems
- convert non-printable characters before logging
- don't disconnect telnet on restart
- fixed using modem and Whozz Calling? device timestamps (although we 
  don't recommend it -- the computer time is more likely to be correct)
- use Database Server time for database timestamps
- use Database Server time for call timestamps unless getting call times
  from device
- Technical Support Report: added IP address
- gracefully shutdown on CTRL+C
- terminate fake calls before restart or exit
- added advanced action callInfo.getContactFirstCalledStr(), 
  callInfo.getContactLastCalledStr()
- fixed advanced action callInfo.getCallDurationStr()
- select proper country code initially and when blank
- fixed problem where action for non-contact callers was fixed to the 
  first action ever run for the caller -- now the configured default 
  action at the time of each call is used

Installer:
- now installs services under Mac OS X -- currently JDK (Java SDK) is required:
  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  The JRE is insufficient because of the way Java works on the Mac.
- now installs services under Linux -- currently systemd is required
- require admin privileges when starting jar from Windows
- now requires admin privileges on Mac and Linux as well as Windows


1.2.2.0 - 2017-05-11
--------------------

Client:
- if Client.CanDeleteCalls setting is true (change in ACIDMU Console), show Delete Call button

Console:
- improved autonaming of new device lines
- added Client.CanDeleteCalls setting
- fixed automatically selecting new device after adding it
- empty database cache before importing so recently deleted items don't prevent importing matching items
- fixed deleting devices referenced by existing calls

Database Server:
- Windows: wait up to ten seconds for the server to shut down cleanly
- Windows: make service more resilient by enabling error recovery

Server:
- fixed problem where post-trial pre-activation calls might not be revealed on activation  
- Windows: wait up to ten seconds for the server to shut down cleanly
- Windows: make service more resilient by enabling error recovery and defining dependence on DbServer when installed on the same computer
- fixed potential database exception when saving serial ports at startup


1.2.1.0 - 2017-04-14
--------------------

This release includes a database change.  Existing installations require a database conversion using ACIDMU Console before use.  Upon starting ACIDMU Console, a button to perform conversion will be presented.  For best results, stop all ACIDMU Clients and other ACIDMU Consoles before converting the database.

Client:
- new actions are now created as composite actions, but can be changed as usual
- Action window, composite actions: added and improved tooltips
- Action window, composite actions: fixed change detection
- Action window, composite actions: added "More" button which shows "Edit Action", "New Action", and "Duplicate" buttons
- Action window, advanced scripts: use monospaced font
- fixed "null"s appearing at end of potential contact labels in Contacts window, Extra page
- added "Notify Tray Custom" and "Notify Tray Custom Caption" actions
- added documentation and configuration to advanced actions, making it easy to configure the included advanced actions
  (to add the new actions to existing installations, use ACIDMU Console to import "Actions-default.xml" from the ACIDMU Console installation
   folder -- use "Import ACIDMU XML" (on the "File" menu))
- Action window, advanced scripts: word wrap error window
- fixed log-only warning after exit after exporting action(s) to XML
- made edit action windows modeless -- this lets you interact with notification windows when testing from the action editor
- fixed rare non-fatal null pointer exception when database connection is lost

Server:
- enumerate serial ports every time server is restarted



1.2.0.0 - 2017-04-03
--------------------

This release includes several database changes.  Existing installations require a database conversion using ACIDMU Console before use.  Upon starting ACIDMU Console, a button to perform conversion will be presented.  For best results, stop all ACIDMU Clients and other ACIDMU Consoles before converting the database.

This release includes the following changes since version 1.1.1.0:

Client:
- added Notes column to columns available in Contact list
- fixed deleting contact with patterns
- fixed minor cosmetic issue on Windows in Action window, type Easy, Run Program page
- contact window: make label, phone description, and pattern description drop-downs taller automatically
- call window: make label drop-down taller automatically; sort labels
- support minimizing to system tray, running in system tray
- added Notify Tray action and corresponding notifyTray() script commands
- added WGet action and corresponding wget() script command
- automatically delete empty duplicate locations when saving Contact
- Contact window: sort locations by primary first followed by default locations
- added Address, City, County, State, Postal Code, and Country columns as options in Contacts panel
- Contact window now uses custom field names defined in Console (Settings page, Contact.CustomFieldNames)
- added ability to export specific actions (right-click on one or more selected actions and choose "Export Action")
- support multiple locations/addresses per contact (see contact window)
- added settings "Action.Client.RunWhenCallEnds" and "Action.Server.RunWhenCallEnds" which allow running actions when calls end
- added "Show Call" and "Show Contact" actions and corresponding "showCall()", "showContact()", and "showContact(panel #)" script commands
- fixed issues with main window permanently losing focus on Windows when error is displayed while reconnecting to database
- size contact image appropriately in edit call notes window
- only run actions for up to 5 new calls each time we check for new calls
- fixed problem filtering when a notes column was displayed
- Find Phone window: enable/disable commands appropriately
- Calls lists, Line Activity panel: added Refresh command to context menus
- Contacts lists: added separate Test Client Action and Test Server Action commands
- Contacts lists: testing action: log helpful message when contact has no client action
- Contacts lists: fixed testing action when contact has no phone number
- added Find Caller and Find Contact commands to Calls list context menu
- slightly improved scripting error messages (for advanced Actions)
- fixed problem selecting new values in drop-down combo boxes that required selecting twice
- added Windows menu
- warn when cancelling changes in Calls window
- added Find Phone command (on Search menu)
- sped up Calls list generation, especially when calls are not filtered
- fixed problem showing Contact-specific columns in Calls list
- "Select Contact" window now supports ENTER key as OK when focus is on table
- automatically update inactive tabs when they become active if database changed while inactive
- fixed problem where toolbar and context menu items where not always updated when the selected row changed
- replaced toolbar icons
- added Junk & Not Junk commands (on Line Activity and Calls panel toolbar and context menu)
- Contact window, Numbers page: add new descriptions of all phone numbers to settings
- fixed: Contact window, Numbers page: when changing Description, if you click on another phone number, the changed description is lost
- added "Reset Messages" command to help menu to enable all information messages
- added "In the future, don't show this message" checkbox to information messages
- specify "Reply Email" in Technical Support Report form
- attempted fix for different case where Server could be incorrectly reported as not running
- fixed problem with different end-of-lines in area code and phone number lookup URLs and names (exhibited as terse numeric error message on Mac when viewing Line Activity or Calls panels after changing area code or phone number lookup URLs or names)
- fixed problem where program could hang if the database connection was lost and restored
- added Technical Support Report (on Help menu)
- fixed potential problem accessing database after new install when started before Server finishes initializing
- when displaying a completed call without an end time stamp, show it as complete, with no duration (such calls happen if Server is stopped during a call and later restarted)
- fixed problem where Server could be incorrectly reported as not running
- warn user and refuse to start if database version is newer than program
- log display panel script errors if display script editor is not showing

Console:
- fixed problem importing Action CSV files when they contain quoted strings in an advanced script
- support custom field names when importing from CSV (the field names must match the custom field names specified in settings, or be like 'Custom1')
- use custom field names when exporting to CSV
- fixed initialization of descriptions of new device lines
- added ability to disable specific device lines
- added Client.UseSystemTray setting
- sort actions in action setting combo boxes and make drop-downs taller
- include database URL in restore database confirmation messages
- added Contact.CustomFieldNames setting
- added ability to import actions as XML
- added ability to export and import actions as CSV (comma-separated-values)
- added ability to export and import contacts as CSV (comma-separated-values)
- added LocationDescriptions setting (this determines which default locations are listed in the contact window)
- specify "Reply Email" in Technical Support Report form
- added UK parse and display formats as separate import files
  To use these:
   1) Change the "InternationalDialingPrefix" on the Settings tab to "00"
      (otherwise the default value will break parsing some phone numbers)
   2) Select the "Phone Number Formats" tab
   3) Select the "Phone Number Parse Formats" sub-tab
   4) Backup your existing formats using the "Export" button
   5) Click the "Import" button to import the parse formats from the "phone-number-formats" 
      folder in the ACIDConsole folder in the ACIDMU folder to which you installed ACIDMU 
   6) In the "Import Options" window, choose "Delete all items in the database first, then import all items"
   7) After importing, click the "Apply Retroactively" button
   8) Select the "Phone Number Display Formats" tab
   9) Backup your existing formats using the "Export" button
  10) Click the "Import" button to import the display formats from the "phone-number-formats" 
      folder in the ACIDConsole folder in the ACIDMU folder to which you installed ACIDMU 
  11) In the "Import Options" window, choose "Delete all items in the database first, then import all items"
  12) After importing, click the "Apply Retroactively" button
- Phone Number Formats panels: when duplicating a format, scroll to the new format
- fixed problem where phone number formats were not applied in specified sort order
- support non-contiguous phone display format parts, like "NNNN NNNN"
- Phone Number Formats panels: when duplicating a format, copy the notes
- Phone Number Formats panels: improved use of vertical space when window is resized
- swapped titles of Tables 6.4 and 6.5 in the documentation
- fixed problem moving phone number formats up or down
- attempted fix for different case where Server could be incorrectly reported as not running
- added Technical Support Report (on Help menu)
- fixed potential problem with other ACIDMU programs accessing the database during a database upgrade, making the upgrade fail
- fixed potential problem accessing database after new install when started before Server finishes initializing
- fixed problem where Server could be incorrectly reported as not running
- prevent other ACIDMU processes from accessing database during database backups and restores
- if database restore fails, try to restore backup made just before restore (if that fails, try to restore initial database)
- warn user and refuse to start if database version is newer than program

Server:
- pick up changes to devices and device lines made in Console sooner
  (new devices still won't be handled until Server is restarted)
- added Notify Tray action and corresponding notifyTray() script commands
- added WGet action and corresponding wget() script command
- added fake_call options '-nci', '-oo', '-pc'
- exit sooner if "exit" command is received while trying unsuccessfully to connect to the database
- slightly improved scripting error messages (for advanced Actions)
- fixed possible problem stopping if database wasn't available at startup
- warn user and refuse to start if database version is newer than program

Installer:
- on Windows: give option of starting Client automatically when user logs in
- on Windows: when launching programs at end of install, do it as a regular user
- fixed some warning messages in process panels
- reduced diagnostic messages in process panels
- now allows quick selection of client/server/both for install
- Mac: automatically creates shortcuts on desktop when chosen, and deletes shortcuts on uninstall


1.1.1.0 - 2016-04-15
--------------------

Console:
- fixed problem upgrading some very old databases
- fixed potential slow start after new install and after restoring initial database

Client:
- fixed potential slow start after new install and after restoring initial database

Server:
- fixed potential slow start after new install and after restoring initial database

Uninstaller:
- fixed problems shutting down and removing server services on Windows


1.1.0.0 - 2016-04-13
--------------------

Client:
- sped up closing the Edit Contact window when clicking OK
- sped up closing the Select Contact window, especially when many Contacts and/or Phones exist
- Select Contact window: disable OK button until a contact is selected
- fixed Whitepages.com lookup URLs
- sped up Display Panel and notification display speed by caching display scripts
- fixed extraneous comma in notification windows when location has city but no state
- added non-advanced mode to Locate Database window and a button to restore defaults
- hide filter toolbar by default -- use SHIFT+CTRL+F or show using View menu to use it
- made Display Panel and toolbars optional (see View menu)
- widened Call label field from 20 to 40 characters
- added find command and toolbar (accessible with CTRL+F)
- added shortcuts CTRL+PAGE UP to go to next tab and CTRL+PAGE DOWN to go to previous tab
- added CTRL+L shortcut to lookup selected phone call's phone number using 
  first lookup URL on Line Activity and Calls pages
- remember Calls' Max Calls setting between sessions
- added 'X' button to filter toolbar to close it
- added time period filtering for Calls
- added 'Clear' button to filter toolbar to remove filtering with one click

Console:
- fixed problem making changes to existing device line advanced properties
- fixed trailing zeroes in Log timestamps on Server Commands page
- added filter to server log on Server Commands page
- added non-advanced mode to Locate Database window and a button to restore defaults

Server:
- sped up incoming call processing by fixing use of existing phone number index
- sped up advanced script processing by caching parsed scripts
- issue a warning instead of exception when hanging up with a Fake Device
- gracefully handle case where Server is restarted during call or started while call is in progress
- improved phone number format caching to improve call processing speed


1.0.0.0 - 2016-03-15
--------------------

- first commercial release