Progress to the v7 client release

There has been a lot of work on v7 behind the scenes.  Clearly it's taken longer than we'd like, but I wanted to give an update on where we are.  Our lead developer, Joseph Coffland, has been working to add requested features and squash bugs reported by testers.  There's been numerous examples of this, so too many for me to detail one by one, but I'm attaching the v7 client change log to give some rough idea of the type of code development tasks that have been going on.  

Joe and I think we're close and if 7.1.18 looks good in internal testing, it will likely become the basis of the client released for a public release beta client.  



v7.1.18:    * More GPU whitelisting.
    * Use OS logical CPU count instead of CPUID counts.
    * Hide/restore any open dialogs with main FAHControl window.
    * Don't allow opening more than one dialog via the sys-tray menu.
    * Restore main window on preferences or about from sys-tray menu.
    * Change configure dialog OK button to Save.
    * Fixed AS hammering, #511.
    * Fixed 'Waiting On' message problems.
    * Use heartbeat to timeout FAHControl connections.
    * Fixed damage to active client's config when adding new client. #536.
    * Catch property save error on FAHControl close in Windows 2008.
    * Disallow saving both config and address/port changes in FAHControl.
    * Fixed CUDA driver version reporting. #571.
    * Fix file and directory permissions in .deb and .rpm packages.
    * Added volume icon for OSX DMG package.
    * Hopefully fixed sidebar issue in DMG.  #516.
    * Fixed local FAHClient shutdown with 'Stop' button on Windows.
    * Removed extra linefeeds from copied log.  #428.

v7.1.17:    * Really whitelisted some more GPUs.

v7.1.16:    * Use core count not thread count for SMP autoconfiguration.
    * Clear FAHViewer info when disconnected.
    * Whitelisted some more GPUs.
    * Removed ATI Mobility GPUs from whitelist.
    * Fixed cpu core/thread/logical detection.

v7.1.15:    * Print 'CUDA not detected' in info.
    * Attempt to fix broken CUDA detection.

v7.1.14:    * Ignore CUDA library exceptions.

v7.1.13:    * Fixed problem with editing client in FAHControl when not connected.
    * Fixed next-unit-percentage rounding error.
    * Removed threading and polling in FAHControl.
    * Created developer interface for FAHClient.
    * Dropped follow log control.
    * Fixed bug in connecting FAHViewer when no slot is selected in FAHControl.
    * Added heartbeat between FAHControl and FAHClient.
    * Added local client command in FAHControl preferences.
    * Let FAHClient crash rather than catch unknown exceptions at top level.
    * Added button to manually start and stop local client from FAHControl.
    * Display error dialog if client authorization fails.
    * Fixed slot popup menu actions bug.

v7.1.12:    * Fixed –info printing for FERMI GPUs.
    * Fixed Non-fermi CUDA reporting.
    * Added new core exit codes for GPU cores.
    * Include CPU threads in SMP default core count.
    * Updated CPU count info display.
    * Default next-unit-percentage to 99%.
    * Added color for 'Finishing' state in FAHControl.
    * Fixed bug in highlighting WU for selected 'Finishing' slot.
    * Added warning in FAHControl about changing SMP CPU count mid run.
    * Round the next-unit-percentage calculation to the nearest integer.
    * Fixed arrow key movement in slot and queue list views in FAHControl.
    * Updated FAHViewer icon and use in FAHControl.
    * Fixed problem with selecting slots in FAHControl.  #359
    * Fixed potential problems with CPU count code on single core machines.
    * Quit FAHControl on Window X in OSX.
    * Remove 'Hide' toolbar button in OSX.
    * Fixed crash in OSX on Apple keys.< /span>
    * Added OSX dock menu items.

v7.1.11:    * Fixed FAHViewer fullscreen problems in Windows.
    * Show absolute path to log file in client fail popup.
    * Fixed CPU counting for multiple physical processors.
    * Fixed missing estimated credit field in FAHControl.
    * Fixed bug with removing client from FAHControl.
    * Fixed crash in FAHViewer when switching from Demo to Live data.
    * Don't load Demo protein when connecting.
    * Set environment variable to communicate gpu-id to GPU cores.
    * Added list of known GPUs PCI vendor + device IDs including subvendors.
    * Added support for loading a custom 'GPUs.txt' file in the run directory.
    * Added 'gpu-index' for cases where GPU indexing does not match core's.

v7.1.10:    * Fix Windows missing icons.
    * Use different icon for FAHViewer.
    * Go back to static linking of libexpat.
    * Popup error message if local client exits in FAHControl.
    * Fixed bug in auto-detecting multiple GPUs.
    * Removed 'gpus' option.
    * Fixed bug which disabled adding slots via FAHControl.
    * Changes to the GPU detection code.
    * Changes to sample-config.xml.
    * Minor textual tweaks.

v7.1.9:    * Quit popup not viewer on <ESC> or 'q' in FAHViewer popup.
    * Another attempt at fixed i7 CPU core counts.
    * Dump WU entries if the slot is remove and they were not yet downloaded.
    * Fixed arrow key help text in FAHViewer.
    * Clear old values from add option dialog on add option.
    * Clear out added options from client dialog on 'Cancel'.
    * Never migrate Units to deleted slots.
    * Don't report deleted slots to FAHControl.
    * Use mono-spaced font in FAHControl log view.
    * Fixed max-packet-size reporting to AS.
    * Enabled unit processing during up/download.
    * Drop WS if it does not give an assignment.
* Support running client as a daemon for Linux service install.
    * Moved clientgui.db to FAHControl.db.
    * Look for FAHControl.db in $HOME/.FAHClient in non-Windows.
    * Don't start FAHControl minimized by default.
    * Run FAHClient in $HOME/.FAHClient when started by FAHControl on non-Win.
    * Create proper Debian package with FAHClient service install.
    * Added OSX on battery support.  Thanks to calxalot for the code!
    * Fixed Windows sys-tray tool tip cut off problem.
    * Don't write window size and pane locations to disk as often.
    * If multiple WUs are ready to start, start the one furthest along.
    * Fixed client to core version reporting.
    * Uncapitalized status names in FAHControl.
    * Changed 'Core' to 'FahCore' in logs and FAHControl.
    * Some optimizations to FAHClient's main loop.
    * Look for FAHClient and FAHViewer in same dir as FAHControl.
    * Close FAHViewer with FAHControl if started by FAHControl.
    * Create proper DMG for OSX.
    * Added ellipses after dialog menu items in OSX.
    * Removed extra '(Un)Hide Window' menu item in OSX.
    * Go back to (un)hiding FAHControl when sys-tray icon is clicked.
    * Display 'FAHControl' in 'top' in Linux instead of 'python'.
    * Pre

load some of the log in the FAHControl window when tailing.
    * Some FAHControl optimizations.
    * Store client data in '~/Library/Application Support/FAHClient' on OSX.
    * Popup error when FAHClient or FAHViewer fails to run in FAHControl.
    * Attempt to fix FAHControl quad click problem.
    * Fixed FAHViewer box drawing problem on OSX and Windows.
    * Added gpu-vendor-id and gpu-device-id configuration options.
    * Fixed potential crash in GPU detection code.
    * Improve fallback to uniprocessor slot.

v7.1.8:    * Second attempt to fix i7 CPU core detection.
    * Changed NA to Unknown in FAHControl.
    * Added TPF calculation.
    * Removed verbosity from Windows installer to discourage changing it.
    * Handle XML special characters '"&<> in donor name in Windows installer.
    * Added next-unit-percentage option.
    * Changed 'Client Mode' to 'Preferred Mode' in Windows installer.
    * If Folding@home-x86\client.cfg exists load as defaults for Win installer.
    * Removed WU history.
    * Added more low-level GPU information to WS and AS packets.
    * Added default data to FAHViewer.
    * Added rotation and snapshot linear interpolation to FAHViewer.
    * Fixed bug in writing config.xml with 0 slots.
    * Display WU info on click even when slots are finishing.
    * Fixed sys-tray menu / toolbar tooltip inconsistencies.
    * Added viewer to sys-tray menu.

v7.1.7:    * Don't log 0% up/download.
    * Fixed ETA, Progress, etc. update in Work Unit view of FAHControl.
    * Update WU status when slots is in FINISHING as well as RUNNING state.
    * Fixed CUDA GPU type support check.
    * dump-after-deadline is default true and fixed WU expire checking.
    * Removed most of the logos from FAHViewer.
    * Added CUDA dlls.
    * Do send results if slot is paused.
    * Added help and about boxes to viewer.
    * Fixed up/download percentage in log.
    * Fixed 'fahclient-log.txt' creation problem on Windows.
    * Attempted to fix i7 CPU core detection.
    * Fixed bug in Unit log file following.

v7.1.6:    * dump-after-deadline is default false for now.

v7.1.5:    * Display version in FAHControl About.
    * Added "lifeline" support.
    * Fixed process ID detection in Linux.
    * Added support for starting local FAHClient from FAHControl.
    * Don't try to send results if Slot is paused.
    * Save credit information returned by v6.1.3+ WS.
    * Keep WU data in DB as a credit record.
    * Keep Windows debug symbols with .tar.bz2 archive.
    * Store timeout, k-factor and credit from v6.1.3+ WS.
    * Send DUMP reports to v6.1.3+ WS.
    * Estimate ETA, PPD and Credit.
    * Fixed crash after WU completion.
    * Created FAHViewer
    * Detect previous config in Windows installer and offer to keep.
    * Save Windows Installer values when back/forward buttons are clicked.
    * Added CUDA detection code and report coprocessor version accordingly.
    * Fixed FAHControl browser links in Windows.      * Disallow @?*|<>'" characters in paths in Windows installer.
    * Fixed reporting
64-bit CPU type to AS.

    * Removed language about password defaulting to passkey in FAHControl.
    * Changed up/download pacifier to not hold a log lock.
    * GUI up/download lockout fixed.
    * Use the term "Folding slot" instead of "Computation slot".
    * Rearranged auto-start options in installer and added (Recommended, etc.)
    * Always raise FAHControl window when sys-tray icon is clicked.
    * Validate entries in Windows installer.
    * Added help text for configuration in Windows installer.
    * Detect previous install in installer and offer to run uninstaller.
    * Added Folding Forum link in About box.
    * Offer an Express install mode in Windows installer.
    * Use better Windows icon from v6.
    * Put program directory in PATH in Windows installer.
    * Removed 'Startup' tab from FAHControl.
    * 'autostart' to 'pause-on-start' with opposite meaning and defaulted false.
    * Don't remove old config.xml in Windows installer if install is aborted.
    * Removed FAHControl's 'autostart' option, must reinstall to change.
    * Save FAHControl window dimensions and pane positions.
    * Display ETA, PPD and Credits in FAHControl
    * Added ETA, Credit and PRCG to Novice view
    * Update Work Unit details immediately when queue list entry is clicked.
    * Display completed WUs as well as active ones.
    * Enable log following by default in FAHControl. (Active when selected)
    * Rearranged FAHControl toolbar.
    * Clicking slot activates running WU in FAHControl.
    * Added viewer to slot pop-up menu in FAHControl.
    * Added viewer config to FAHControl preferences pane.
    * Added viewer button to FAHControl toolbar.
    * Align Address in Clients to the left.
    * Fixed tabbing between fields in FAHControl.
    * Dump WUs after they have expired if 'dump-after-deadline' is true.

v7.1.4:    * Fixed core path problem.
    * Dump or migrate units when slot is deleted.
    * Dump unit if WS does not understand fail report.
    * Fixed SMP unit creation problem.

v7.1.3:    * Don't exit before killing and saving kill status of stubborn cores.
    * Fixed bug that allows more than one Unit to start in a slot.
    * Don't download core when slot is paused.
    * Store cores in same directory structure as on server.
    * Differentiate cores by URL not type.
    * Regularly check if WUs match their slot's config and migrate or dump.
    * Migrate or dump a unit if it's slot cannot be found at startup.
    * Default to ignore logff signal in Windows service.
    * Set Connection->Password with Remote Access->Password in FAHControl.

v7.1.2:    * Don't dump WU on PLEASE_WAIT.
    * Fixed slot FINISHING and STOPPING status bug.
    * Improve FAHControl's responsiveness.
    * Remember which cores don't shutdown cleanly also on CTRL-C exit.
    * Clear any WU backoff waits on unpause.
    * Second attempt to fix FAHControl lockout during results upload.
    * Print to log when pausing, unpausing and finishing.

v7.1.1:    * Don't reset slot highlighter on queue info update in FAHControl.
    * Fixed core unpackaging bug.
    * Fixed Windows file open bug.
    * Raise FAHControl window whe

n run a second time.
    * Always raise window when icon is clicked and FAHControl is not on top.
    * Fixed –dump loop.

v7.1.0:    * Made incompatible changes to the client DB.
    * Download a new WU when the previous one is 95% complete.
    * Require each slot to have a unique numerical ID.        * Lock units to one slot ID.
    * Pause slot on too many consecutive failed runs, See: 'max-slot-errors'.
    * When using the '–dump' option, try to send unit results immediately.
    * Option 'max-units' is now per Slot and pauses the slot when done.
    * Unpause clears Slot unit count, so 'max-units' count restarts.
    * Added 'exit-when-done' option, exits when all slots are paused.
    * Default core priority to idle.
    * Print GPU ID instead of number of GPUs avaliable with GPU type string.
    * Fixed bug with creating SMP slots wo/ specifiying # of CPUs.
    * Allow FAHControl communication during results upload.
    * Include correct FAHControl files in .tar.bz2 distribution.
    * Removed upload and run counts.
    * Removed finished time.
    * Combined Project, Run, Clone, Gen in GUI.
    * Show what a WU is waiting on, time until next attempt and # of attempts.
    * Added slot ID to WU info in FAHControl.
    * Selecting a queue entry will highlight its associated slot.
    * Fixed OSX FAHControl crash.

v7.0.14:    * Do not detect additional display heads as separate GPUs in Windows.
    * Prefix core directories with '0x' to indicate a hexadecimal number.
    * Don't update core if currently in use.
    * Don't dump WUs due to network errors.
    * Compute AS backoff times per slot.
    * Remember which cores do not shutdown cleanly and just kill them.
    * Track core status in DB.
    * Corrected client and core option 'Add' dialog modality.
    * Catch dialog close events to fix GUI lock-ups.
    * Clear log when switching clients in GUI.
    * Remember log follow state in GUI.
    * Added GPU DLLs to Windows installer.
    * Attempted to fix the systray percent problem, but I cannot reproduce it.
    * Added several client startup options to Windows installer.
    * Added Windows shortcuts to start client in minimized console.
    * Rename FAHClientGUI to FAHControl.
    * Added credits to About dialog.
    * Some GUI performance tweaks.
    * Don't save deleted slots.
    * Don't warn about WUs which don't have a maching slot but are finished.

v7.0.13:    * Start client even if configuration has problems to avoid restart loop.
    * Removed fancy systray popup in favor of simpler tooltip text.
    * Fixed 'Core still running on shutdown' error. Hopefully.
    * Report default memory (1GB) correctly to AS.
    * Don't show client configuration tabs when creating new connection.
    * Fixed problem with split core log lines in Windows.
    * Fixed shutdown problem with Linux cores which do shutdown with Ctrl-C.
    * Clear GUI status information when client disconnects.
    * Send WS correct client-subtype for GPU slots.
    * Include clientgui in .tar.bz2 file.
    * Rearranged queue / unit / slot view.
    * Only show slots and unit info in advanced mode.
    * Only show t

eam status link drop down in advnaced mode.

v7.0.12:    * Show client status above tabs.
    * Changed toolbar and sys-tray menu 'Pause' to 'Pause All'
    * Fixed 'ERROR: Exception: 0: Core still running on shutdown' bug.
    * Added 'Entries match' for passkey / password entry
    * Made GUI smaller
    * Ported console client and GUI to OSX
    * Created OSX build
    * Moved GUI client config to separate configuration pane
    * Removed 'Save' button from toolbar.  Client saved by config pane.
    * Always save client connection configurations.
    * Moved Queue info to new tab and reformatted
    * Added timeout to client db and queue info (still need to get psummary)
    * Added links in the GUI for WS, CS and project

    * Fixed packaging mistake

v7.0.10:    * Fixed bug where password was saved as **** in config.xml.
    * Fixed setting of 'team', 'verbosity' and others from GUI.
    * IP Address restriction field triggers 'Save' button.
    * 'passkey' and 'password' not saved as asterisks in config.xml
    * % CPU limited to 100% and checkpoint interval to 30min.
    * Print 'Connecting to' at INFO(3).
    * Added clarification in GUI text at gui->config->remote access->password
    * Allow client to interrupt during slow or failing socket communication.
    * Only use & for non-GPU

v7.0.9:    * Use –service-install and –service-uninstall options
    * Stop service on service uninstall
    * Windows installer shortcuts to FAHClientGUI.exe
    * Include GUI in installer
    * Add Windows shortcut to data directory
    * Installer removes program files after service shutdown
    * Add –service-start and –service-stop
    * Request admin access for Win 2008/Vista/7 installs

v7.0.8:    * Check log header width and adjust Info '***' bars to 80 chars wide.
    * Start slots in paused mode by default.
    * Added 'autostart' option which when true starts slots unpaused.
    * Configs created by –configure have 'autostart' enabled.
    * Added code to match WUs with slot types when they are restarted.
    * Added IP based access control to command server.
    * Only allow access to the command server from by default.
    * Added password based access control to command server.
    * Allow no password access to the command server from by default.
    * Added columns to queue info for GUI.
    * Added 'pause-on-battery' support for Windows and Linux.
    * Added 'checkpoint', 'no-assembly', 'cpu-usage' core options.
    * Warn about units with out a compatible computation slot.
    * Read unit % done from wuinfo_##.dat file.
    * Fixed issue with CPU count on machine with 2 physical and no threads.
    * Support querying, setting and resetting options via command server.
    * Support querying queue and slot info via command server.
    * Support 'pause', 'unpause' and 'finish' via command server.
    * Support configuration 'save' in command server.
    * Allow changing 'user', 'team' and 'passkey' during unit run.
    * Support adding, deleting, and modifying slots with out a restart.

160;* Use for GPU assignment

v7.0.7:    * Added special client-types.
    * Add CRLFs to sample-config.xml, README.txt, ChangeLog.txt
    * Fixed core output logging timestamps.
    * Trigger backoff coded on more core failure codes.
    * Extract multiple files from core packages.
    * Detect hyper-threads and adjust default 'cpus' count.
    * Added error checking on 'config.xml' file creation in Windows installer.
    * Fixed CRLF on first line of log file.
    * Removed –configonly because –configure always exits.
    * Implemented -oneunit as –max-units=1
    * Implemented –dump <'all' | number>
    * Implemented –send
    * Implemented –queue-info
    * Separated program and data dirs on Windows install
    * Enabled single and multi-user Windows install
    * Enabled optional data removal on uninstall in Windows

v7.0.6: * Added sample-config.xml to dist and packages.
* Fixed Windows Shortcuts and install paths
    * Added -configure and -configonly options
    * Added configuration options to Windows installer
    * Fixed output for cores that only use logfile_00.txt and not stdout
    * Fixed core shutdown for cores that don't listen to CTRL-BREAK
    * Added CRLF to all documents and changed endings to .txt
    * Added 32-bit RPM build
    * Added exponential backoff code
    * Fixed bug in detection of WU files.

v7.0.5: Skipped

v7.0.4: * Added queue ID and use this for identification in logs and for work directory name.
* Added core process control code.  Put windows core processes in their own process group so they can be signaled to shutdown.
* Wait for cores to finish on client exit.  Send interrupt.
* Converted all Folding@Home -> Folding@home
* Pass correct options to SMP cores '-np <cpus>'
* Compile in 'mostly_static' mode by default.
* Added support for printing CR LF at end of line and made default for Windows.
* Write core subprocess output to log file, prefixed by unit queue id.
* Print F@H news from AS even if WS is null.