0.8.x Release Notes

0.8.6.12 2010.04.17

Misfeatures Fixed

I misspelled Helvetia! How embarrassing. This caused the Multipliers window to come up empty. I also misspelled Appenzell Innerrhoden. Thanks HB9CEY.

Only the root callsign is considered in duplicate QSO testing in the Helvetica contests. For example, UA9AAA, UA9AAA/M, UA9AAA/P would be duplicates. Thanks HB9CEY.

0.8.6.11 2010.04.15

New Features

Specialized Cabrillo export for the Helvetia contest to conform to specifications supplied by HB9CEY.

Added support for connecting to the Reverse Beacon Network (RBN) DX Spider node. The structure of spot packets emitted by this node differ from standard spots, requiring special handling. These spots are generated by a collection of CW Skimmers around the world, so they are CW-only. Presently SkookumLogger supports one DX Cluster connection at a time, so you will not see normal (human-generated) spots while connected to the RBN. I’ll rework SkookumLogger to support a DX Cluster connection and an RBN connection simultaneously if this turns out to be useful.

0.8.6.10 2010.04.14

New Features

Relocated the Partials window content into the main Log window, just below the QSO data entry trough where it is easily visible. Moved the status text line into the trough at the right edge.

Added the Beverage menu with items to select one of four beverages via a Green Heron Everyware (GHE) remote controller. This is experimental support with wired parameters for my particular GHE addresses and beverage antenna layout. You can admire the controller map, and command-click inside the map window to change (indicated) antenna heading, but otherwise it’s useless to everyone except me. I’ll generalize if asked.

Added support for the WinKeyer gap character, “|”, in the Sent Info Template field of the Log Settings sheet. Use this to control how much space occurs between elements of your CW sent exchange. All elements must be separated by at least one space or “|” character. Thanks HB9CEY.

Added support for the Helvetia Contest (because I like that one) and the Helvetia Contest In Switzerland (because HB9CEY asked). Please report bugs!

Misfeatures Fixed

Corrected Yuri Gagarin DX Contest score computation to account for various QSO point values.

Corrected Georgia QSO Party score computation to account for mode-dependent QSO points.

Checking the Beacon CQ box in the Log window now has the same effect as choosing Messages->Beacon CQ. Before, nothing happened. Thanks GØDVJ.

The ***DUPLICATE*** status message now hangs around much longer, instead of disappearing almost as soon at it appears. Thanks K7GQ.

Remove Option-S as shortcut for opening Summary window; it wasn’t working anyway.

0.8.6.9 2010.04.09

New Features

Updated rules for Yuri Gagarin DX Contest.

Autotune item to Alpha 87A submenu in Radio menu, for use with my new Alpha firmware. Also replace indirect selector invocation (via AppController IBAction) with bindings.

Open the DX Cluster window when starting SkookumLogger if was open when SkookumLogger last quit (normally). If the Autoconnect preference is checked, also attempt to connect to the last-used cluster node.

Pressing escape with a Log window focused now scrolls to the end of the log table.

Log -> Clear QSO removes any filtering of the log table and scrolls to the end of the table.

New command, Log->Find QSOs, filters the log table to show only records with callsign field matching the QSO call entry field content. This command takes over the F12 shortcut. Press escape to clear the filter. Press F11 (Clear QSO) to both remove the filter and clear all QSO entry fields.

Misfeatures Fixed

Fixed padding of phone signal reports in Cabrillo exports. Thanks GØDVJ.

0.8.6.8 2010.04.05

New Features

Added version number to CREATED-BY record in Cabrillo exports.

Added TB (Three Bands) category for Polish DX Contest.

Added menu items to Radio menu for turning my Alpha 87A on and off, and for toggling its Operate state. Also set Alpha 87A band when different from K3 transmit band, and band segment appropriately with hysteresis.

Doubled delay between adding QSO and saving log to, perhaps, ameliorate an obscure crash.

Misfeatures Fixed

Relocated “my serial number” field adjacent to QSO entry fields from near top of Log window.

Corrected rounding issue when setting K3 frequency by direct entry in the His Call field.

Corrected multiplier rule for Polish DX Contest (once per band, not once per band-mode). Thanks GØDVJ.

Corrected points-per-QSO for Polish DX Contest.

Now properly fill Multiplier table properly for Polish DX contest. Thanks GØDVJ.

Corrected Cabrillo export for RSGB CC contest (missing serial number data). This will probably crop up in other serial number contests. Thanks GØDVJ.

0.8.6.7 2010.03.28

Misfeatures Fixed

Multiplier detection for CQ WPX was broken.

Cabrillo export for CQ WPX lacked serial number info. Thanks N4DJ.

0.8.6.6

Misfeatures Fixed

Define country feature was broken. Example: attempting to alias UV2FW/1 as UA had no effect.

SCP download processing was broken due to a copy-paste coding error. The file deposited in the tftpboot directory (for distribution on the CT network) was master.scp instead of master.dta.

0.8.6.5 2010.02.24

New Features

Added update check to application menu.

0.8.6.4 2010.02.23

New Features

The oldest half of the messages from DX Cluster are discarded each time the number of messages exceeds an internal limit of about 10000 lines.

0.8.6.3 2010.02.18

New Features

ARRL DX contest from DX Side.

0.8.6.2 2010.02.10

Misfeatures Fixed

Wipe (and logit) were failing to clear the power data entry field. Thanks N4DJ.

Changes to radio mode for the None radio were failing to stick, with symptom that no radio mode was checked in the Radio > Mode menu after the first time it was changed. Thanks, N4DJ.

Internal Changes

Test Mac OS X version at startup and gracefully decline if not Snow Leopard or later. Thanks GØDVJ.

0.8.6.1 2010.02.09

Misfeatures Fixed

Trim whitespace characters surrounding content in the SRX_STRING and STX_STRING fields of ADIF export records. Thanks N4DJ.

The received exchange was botched in ARRL DX. Added power exchange field to correctly handle validation of that exchange field. Documented validation behavior in SkookumLogger Help. Thanks N4DJ.

Removed mention of support for ADIF export from the web site to avoid setting expectations too high. Documented which ADIF tags are exported in SkookumLogger Help.

0.8.6 2010.02.05

New Features

Revamped help documentation following Apple guidelines. Migrated all relevant information from prior help document and release notes.

Moved release notes to web site.

Moved The List to Roadmap page on web site.

Removed preferences relating to CT networks in the General pane.

Removed CT-network-specific windows and shortcuts.

Added Multipliers check sheet window for domestic multipliers. See SkookumLogger Help.

Misfeatures Fixed

Reset status string on call field edit if not a duplicate. Before the duplicate notification remained once set. Thanks GØDVJ.

Duplicate checking was being done only when the Check Partials window was open.

Corrected a bug affecting times in CT binary QSO records. The type time_t is differently sized in 64-bit builds; CT always expressed time tags as unsigned 4-byte integers (seconds since 1970J).

Corrrected Cabrillo export failures. Thanks N4DJ.

Correct internal rules for ARRL DX to generate proper score.

Re-purpose hidden preference to support automatic use as DX cluster bridge at KC1XX.

Internal Changes

Removed most CT-specific code and user interfaces.

Call saveDocument via delayed perform instead of operation queue.

Removed UKDocumentController.

0.8.5.6 2010.01.19

New Features

Updated The List section of this document. I'll try to keep it current.

Cleaned up and extended ADIF exports. Should now properly populate these fields for each QSO, for most contests: QSO_DATE TIME_ON BAND FREQ FREQ_RX MODE CALL RST_SENT STX STX_STRING RST_RCVD SRX SRX_STRING CONTEST_ID MY_GRIDSQUARE MY_RIG OPERATOR. This facility is intended for getting most of your SkookumLogger data into other logging programs like MLDX, rather than full-blow ADIF support. Thanks GØDVJ.

I finally figured out how to turn the log table right-side up. That is, new QSOs are added at the bottom of the table and the table is scrolled to keep the last entry in view. Of course, this would be boggled if you changed the table sort order or filtered the table via the search item, so SkookumLogger resets the sort order (ascending UTC) and clears filters each time you insert a QSO record. I've also rearranged the window content layout so that the QSO data entry fields are just below the bottom of the table, as close as possible to the last log entry and just above the status text line.

The test for duplicate QSOs is now performed on every keystroke in the call data entry field. Duplicates are noted by *** DUPLICATE *** in the status line at the bottom of the log window, by font and color (determined by the Worked Before preference in the General preference panel) in the Check Partials window, and optionally by a system beep. Thanks GØDVJ and W6FB.

Misfeatures Fixed

Clicking the Rules button in the Log Settings sheet didn't do anything. Thanks W6FB.

When a new log document was created, the save dialog didn't appear until the first QSO was committed, perhaps right at the start of a contest. Now the save dialog appears when the Settings sheet is dismissed. Once the file name for the document is defined, you're good to go. Thanks W6FB.

Add proper Insert and Remove buttons to the tables in DX Cluster preferences and the Log Settings sheet. The corresponding (undiscoverable) context menu items remain in place. Thanks W6FB.

The Cabrillo tag ADDRESS-STATE-PROVINCE was incorrectly output as ADDRESS-STATE. Thanks W6FB.

The multiplier rule for NAQP was per-contest instead of per-band. Thanks W6FB.

0.8.5.5 2010.01.13

New Features

The General Logging "contest type" now has Call, Report, Name, and Location fields. The Name field accepts alphabetic characters, digits and _ (underscore), so you can use it to stuff almost anything into the received exchange field of a QSO. The duplicate rule is same call, band, and mode. This is a no-multipliers "contest."

Added North American QSO Party (NAQP), somewhat in advance of the January SSB event.

Misfeatures Fixed

Post a universal release build (runs on 32-bit-only Intel CPUs) instead of 64-bit-only debug build (runs on my development computer).

When creating a new log (File->New), the Settings sheet was opening in some random place on the screen, detached from the Untitled log window.

In some no-multiplier contests, the Multiplier flag was still being set and crashes could occur.

Repaired multiple instances of hosage introduced by including report as part of the received exchange.

0.8.5.4 2010.01.09

New Features

Messages preferences has two new checkboxes that determine whether or not CW serial numbers are sent with leading zeros, and if they are, whether or not the zeros are cutified (sent as 'T'). Thanks GØDVJ and K7GQ.

Added a keyboard shortcut for Magic Message command: "`" (grave accent). This is the key just beneath the esc key on the small Apple wireless keyboard. On Jonathan's keyboard, the key label is "§". Thanks GØDVJ.

Added RSGB-AFS and RSGB-CC contests.

Extended scoring to work in contests that have no multipliers. Also, for these contests, SkookumLogger does not mark "unknown multipliers" as suspect QSOs.

Revised Summary window to show CW + SSB counts, rather than counts for the current contest mode.

Changing Contest Name in the Log Settings sheet now sets the Band choice appropriately for single-band contests. Thanks GØDVJ.

Added GB7MBC to default list of DX Cluster nodes.

Misfeatures Fixed

Updated Cabrillo export code to correctly deal with sent and received reports.

Now only clear DTR and RTS for the Elecraft K3 radio type. Applying them to all radios broke communication with at least two Yaesu radios. Thanks GØDVJ.

0.8.5.3

New Features

Log Settings now has a button that tries to open the rules pages for the current contest in your web browser. It does nothing if I couldn't find an appropriate URL (Yuri Gagarin contest).

When Contest Name is changed in the Log Settings sheet, tiny text above the Sent Info Template input field provides a description of what should be in the template. It's too complex to attempt to automatically fill the template (trust me). Also, in some cases the description depends on where you are (Florida QSO Party for example); in those cases the description assumes you operate from NH.

Added Generic Serial Number Contest. Sent and received exchanges are report + serial number. QSOs are per band-mode. No multipliers, no scoring.

Added a Report field for QSO data entry in all contests where report is part of the received exchange. Press tab or shift-tab to get into the report field from an adjacent field. Press spacebar to skip over the report field. When you enter the field, the strength digit is selected; just type a digit to replace it. "E" and "N" are converted to 5 and 9. If you erase the field or navigate out with too-short content, the field is set to a mode-dependent default. I did this because there is actually a contest sponsor that compares report fields in log-checking. SkookumLogger still always sends 5NN, which is the natural order of the universe. Thanks GØDVJ.

Until the Help documentation catches up, here is a list of commands invoked by special characters typed in any QSO data entry field: <overcome by events; see SkookumLogger Help>

Misfeatures Fixed

Corrected duplicate-checking rule in Stew Perry contest.

Explicitly clear the DTR and RTS serial handshake lines to avoid disrupting K3s that are set to use those lines for PTT or CW keying. Applies to all radios. Thanks W6FB.

Corrected Cabrillo generation for ARRL 160m contest. Thanks W2RU.

Internal Changes

Corrected coding errors in AMSerialPort that caused some state-query methods to always return NO. These had no effect on SkookumLogger operation, but made debugging rather confused.

Added setRTS and clearRTS methods to AMSerialPort.

0.8.5.2 2009.12.24

New Features

Alt-comma shows the band map for the current radio band.

Added Merge CT command to File menu. The command opens a CT binary file and adds to the current log all QSOs found within that do not match existing QSOs. The command does not check that the current log and the CT file have consistent contest types.

Import CT and Export CT file dialogs now initially show the ~/Documents/SkookumLogger folder, rather than your home directory.

Augmented direct frequency entry. Typing a negative frequency turns on split mode and sets the transmit frequency without changing the receive frequency. Typing a minus sign with no frequency turns on split mode and sets the transmit frequency to the receive frequency.

Replaced the radio serial comm algorithm (see below). Tested with K3 and these USB-serial devices: Keyspan USA-19Qi, Elecraft K-USB, Byterunner USB2-400M-M (thanks W2RU). My previous remarks about Prolific-based devices (the K-USB) were bogus; the K-USB works nicely and with a minimum of extra cables.

Misfeatures Fixed

Attempting to step through K3 memories, e.g., to choose different band segments and modes in a multi-mode contest, failed to keep track of mode correctly, and ultimately caused radio comm to silently fail. Thanks KH6CW/K7GQ for discovering the issue.

I've been struggling with radio serial comm forever; special thanks to David Fleming, W4SMT (author of several cross-platform K3 utilities), for outlining his algorithm.

SkookumLogger now displays more of the K3 radio modes, although the logger still understands only CW and SSB as valid modes.

Internal Changes

I've implemented the W4SMT approach for radio serial comm in the ElecraftK3 and KenwoodTS950SDX classes. The approach uses two timers to send data requests to the radio at two different rates. The read thread processes responses, but no longer issues data requests. The RadioController class and RadioDelegate interfaces have changed. I've patched up the other Radio implementations as needed to work with those changes, but I have not introduced the two-timer (:-) approach. Each radio probably needs some experimenting to determine appropriate polling rates. 10 Hz and 1 Hz work for the K3.

0.8.5 2009.12.14

Notes

This release requires Snow Leopard (Mac OS X 1.6) for full functionality. It may not work at all on earlier versions of Mac OS.

The Apple mice with buttons on the sides are prone to RFI. The symptom is that your Mac starts doing things without your guidance; exactly what it does depends on how those buttons are assigned in Mouse preferences. One "cure" is to turn off the buttons in Mouse preferences. I don't know of any other cures. I've had no RF problems with the new Magic Mouse so far.

I'm headed towards making SkookumLogger fully functional with the Apple Wireless Keyboard, which will affect keyboard shortcuts significantly. This keyboard has the same key layout as MacBooks (based on one sample) and almost the same key assignments, so muscle-memory can become useful. And it's narrow, so there room for accessories like paddles and remote tuning knobs.

New Features

The home and end keys now position the cursor at the beginning and end, respectively, of the current qso data entry field. Thanks WA1Z.

Alt-delete and Alt-forward delete are aliases for the Clear QSO command (F11). Thanks WA1Z.

Added the equivalent of the CT -NF command line argument via the "Broadcast my frequency" checkbox in General preferences.

Added call-parsing logic that substitutes single-digit suffixes into the first digit in the root call. Needed to correctly identify TA1C/2 as Turkey, not European Turkey, for example. Then removed the logic, because it creates bad calls in other cases, such as 7N1PRD/Ø.

Added a Countries window (Windows menu, shortcut Alt-M) with a table showing country codes, country names, and checkmarks for which countries have been worked on each band. The table can be sorted and reorganized as usual. The table content can be restricted to one continent through a popup menu. Two fields at the bottom of the window associate a callsign that you enter with a country code that you choose from a popup list. Use this, for example, to declare that TA1C/2 is TA (Turkey), not TA1 (European Turkey). These aliases are stored in a file named "countryAliases" in your Library/Application Support/SkookumLogger/ folder. This file is loaded by SkookumLogger, if it exists, each time the application starts and whenever you download a new cty.dat file. There is no user interface for removing aliases. Either delete the countryAliases file, or edit it with Property List Editor.

Added more QSO fields to the Search item list in the Log window. You can now match against any field that contains text or numbers except the UTC field.

Added ARRL 160 Meter contest.

Added ARRL 10 Meter contest.

Added a preference in General pane that determines whether or not the Announce Spot command automatically clears the log entry fields.

Now automatically open the most-recently-open log file when starting SkookumLogger instead of creating an Untitled log.

Now automatically show Log Settings sheet when creating a new log.

Added Alt-K as keyboard shortcut for toggling back and forth between logging mode and keyboard mode (backslash is the other shortcut).

Removed the F13 (Make Call Field Active) hack. I'm trying really hard to make it dead simple to get keyboard focus back to the appropriate log entry field by hammering escape. The goal is to be able to move keyboard focus around in SkookumLogger without using the mouse, and get back to log entry even if you did use the mouse, using the (mostly) CT-Way. Please tell me if you find scenarios where this doesn't work.

Removed the command bindings to the forward delete and + keys. These are ancient CT bindings created for a long-extinct keyboard layout; nobody is (or should be) using them any more.

Reorganized the Log window and added a "trough" at the top containing the logging entry fields and status line, making this critical area easier to locate. Thanks WA1Z.

Ignore the "logit" command when the call entry field is empty. This is a silent refusal to create a log entry.

Band Maps are now persistent. That is, about once per minute, SkookumLogger saves the current band map content into files in the Application Support folder. When SkookumLogger starts up, it loads the band maps from these file. Of course, if the file content is older than your band map age preference value, nothing shows up in the band map.

0.8.4 2009.12.01

Notes

There is a new (version 2.2.14) FTDI driver for Snow Leopard. You need it for your Winkeyer.

New Features

Added support for Elecraft KDVR3 second memory bank; F1 through F4 play M1 through M4 in the first bank, F5 through F8 play M1 through M4 in the second bank.

Changed many keyboard shortcuts to mimic CT. Eventually I'll stop fiddling and document them.

Revamped handling of interaction between SkookumLogger and Winkeyer USB. Pressing a message function key while sending with the paddle now queues the message to commence one word-space after you stop sending with the paddle. Thanks W2RU.

Hammering the escape key now more reliably stops message sending, no matter what else you are doing,as long as SkookumLogger is the active application. Similarly, F13 (was F12), bound to the Log->Make Log Active command, now more reliably moves keyboard focus to the call entry field. Thanks W2RU.

Replaced the Partials window with a Check Partials window that is more like CT. The menu item is now in the Log menu (because candidate calls include those already in the current call). You won't see anything in the window until you have typed at least 3 characters (CT starts listing candidate calls at 2 characters, but that list is massive with today's super-check partial database). Question mark can be typed one or more times; each matches a single alphanumeric character. The matching algorithm implicitly matches zero or more characters before and after the string you have typed into the call entry field. Matches are displayed with fonts and colors that you choose in General Preferences, in this order: Needed Multiplier, Needed QSO, Worked Before. A list of unique calls is constructed from the log when it is opened; this can be time-consuming for large logs (thousands of QSOs), so it is done in a background thread. If you immediately use the check partial function, calls from the log may not show up in the list. If you download a new SCP database, close and reopen logs to update the logs' internal candidate calls list.

Added nasty algorithms for ascertaining CQ zone from call signs for cases where the country of the call sign has multiple zones. The algorithms are, I hope, the same as in CT. Thanks K1EA for access to the CT source code.

Modified QSO data entry behavior to make things work more like CT. You can now punch the space bar in addition to tab to advance one field to the right and position the insertion point at the end of existing text in that field. Tab and shift-tab no longer select existing text when focusing a field. For ARRL SS, the first time you move out of the call field, focus moves to the serial number field instead of the check field.

Of course, this breaks the prior scheme of a single "received exchange" field with space-separated pieces. Instead, each contest will have separate entry fields for each piece of the received QSO information (except RS(T)). Only a few contest rule sets have been updated to account for this as yet.

Example single-key aliases: forward-delete (insert on PC keyboards) and ";" are F5 + F2, "+" and "'" are F3 + logit, and "\" toggles keyboard mode. These work whenever any of the visible QSO data entry fields is focused.

Implemented support for ARRL Sweepstakes. SkookumLogger matches the last field against a database of ARRL sections to determine the multiplier; the S column is checked for QSOs where that lookup fails. There are five data entry fields, ordered left-to-right in the sequence that the exchange is sent. When you log the QSO, the fields (except call) are formed into a space-separated string and placed in the log's received exchange field. These changes have probably broken most of the other contests; I'm focused on the Only Contest That Matters for the rest of November.

Implemented support for ARRL 160 Meter contest.

Now support fraction kHz when setting frequency by typing a number into the call entry field. Thanks W2RU.

The Band Map for the current band now shows an entry at the radio's receive frequency.

Misfeatures Fixed

Downloads of cty.dat and master.scp were failing to ignore local caching. Also, for CT the download of MASTER.DTA was entirely broken.

Was not treating KB1NHV and KB1NHV/QRP as a duplicate QSO in CQWW.

Was parsing K4Mxxx as Midway, and in general hosing the exact-call definitions in cty.dat.

Was including the point values for duplicates in computing scores.

Wildcard (?) matching for check-partials was dog-slow. Now it isn't.

Disabled filtering log to match call field. Added Call to search field list.

Wiping QSO entry fields didn't always focus the Call entry field. Thanks W2RU.

QSO Information window wasn't listing QSOs with other stations with the same multiplier code as the current call when the current call hadn't been worked on other bands.

The checkmarks on the context menu items for log column visibilities were unrelated to reality.

Internal Changes

Pulled AGSocket and AMSerialPort source into SkookumLogger project; no more separate frameworks. Updated AMSerialPort source from SourceForge project, updated deprecated method names.

Exhaustive testing with two K3s using Keyspan and the Elecraft K-USB (Prolific) USB-serial adapters (with two different drivers) failed to find a way to make the K-USB work reliably with code in SL that works perfectly for the K3. Some changes in RadioController and ElecraftK3 as a consequence, but other radio support should still function as before.

0.8.3 2009.10.16

New Features

Removed sending of leading zeros in CW serial number sending.

Added New York QSO Party in New York contest type for W2RU.

Misfeatures Fixed

Sending out to DX cluster was broken when joined to a CT network. Also fixed many other CT network-related bugs.

Fixed mis-spelled contest name for CQ WW DX contest. Thanks N7DRK.

Repaired detection of zone multipliers in CQ WW DX contest. Thanks N7DRK.

Multiplier and duplicate tables were not being rebuilt properly when QSOs were deleted. Thanks W2RU.

Internal Changes

Numerous fixes for things related to CT network messaging and bridging between CT network and DX clusters.

0.8.2 2009.10.10

New Features

Added Salmon Run contest (to complement Salmon Run In Washington support). N7DRK did the heavy lifting.

Began generalizing DX cluster support, though some things are still specific to DXSpider. You will need to reset your packet cluster preferences in the DX Cluster pane; in particular, the Login Call field.

Divided Morse menu into Messages menu and Morse menu. Messages apply to both CW and SSB modes (and perhaps some day to RTTY), so it didn't make sense to bury them in the Morse menu.

Redid the preferences panes to conform more completely with Apple HIG.

Added a radio type "None." The None radio remembers the frequency that you enter by typing kHz into the callsign field, and the mode that you select using the Radio->Mode menu, and uses those values for the relevant fields in new QSOs. Now you can use SkookumLogger as a logger without a requiring radio connection. Thanks XE1KK.

Added K2 radio support, by AA6NN.

Misfeatures Fixed

The DX cluster logic for testing whether or not the internet connection is alive had a flaw that caused it to make wrong decisions. The symptom was an "invalid command" message from DX Spider nodes.

Menu item titles for Messages 6, 7, and 8, set in Messages preferences, were not showing up in the menu.

Internal Changes

Rearchitected the objects related to DX cluster, in addition to massive name changes. Added model object, NSObjectController subclass with model object as content, set up bindings properly (no direct bindings between views and model attributes). Distinguished conceptually private ivars by prepending underscore.

Use notifications for CtNetworkDidReceive... events and DxClusterDidReceive... events. The two relevant controller objects observe the notifications to implement bridging between the two network connections (CT network and a DX cluster). Similarly use notifications in AppController, GabWindowController, BandMapsController (see below) and FrequenciesWindowController.

Added BandMapsController singleton, instantiated by MainMenu.nib, factored code out of AppController.

Added MessagesController singleton, instantiated by MainMenu.nib, factored code out of WinKeyerUsb.

Renamed WinKeyerUsb to WinkeyerController to better indicate its role, and to conform to the current K1EL capitalization of the product name.

Cleaned up some nib file issues causing build warnings; now clean-builds with zero warnings.

Hammered the radio-related classes:

Replaced RadioMethods.h with Radio.h, which properly uses a protocol to declare required and optional methods.

Added the RadioDelegate category, declared in Radio.h. RadioController implements this category.

Revised the designated initializer in the Radio protocol (required) to include an id<RadioDelegate>. Replaced messages to the shared RadioController with messages to the delegate. Now the Radio classes are decoupled from RadioController. In addition to achieving computer science nirvana, this will be needed if SkookumLogger ever wants to support multiple radios.

Renamed all of the RadioXXX classes by removing the Radio prefix, which is now redundant because the interface declarations specify that the classes conforms to the Radio protocol. The naming convention is <manufacturer><model>. Someday I may rename the files as well.

0.8.1 2009.09.28

New Features

Updated Generic ICOM radio support; now supports setting radio frequency. Thanks N7DRK.

Show multiplier "entity" name, as determined by the log's contest rules, in the QSO Information window. For example, state QSO parties typically have counties as multipliers. The string "(null)" is displayed when SkookumLogger doesn't know the entity, usually because you need to type an entity code in the received exchange field.

Added scoring to SalmonRunInWashington. Thanks N7DRK.

Added support for the CATEGORY-TIME Cabrillo tag. Thanks GØDVJ. Added support for the The Cabrillo OPERATORS tag. Added support for new address-part Cabrillo tags. These changes affect the Log Settings sheet (specific values stored in each log file), and the Me Preferences panel, which provides default values for the corresponding Log Settings fields. The changes caused another data model change, so you will see a one-time dialog when you open an existing SkookumLogger file.

Added items to Band Map context menus that limit table contents to only needed QSOs, or to only needed multipliers.

Enabled the Pass/Schedule window (Window menu) for use even when not a member of a CT network. Filling in the appropriate fields and pressing Pass or Schedules adds an entry to the band map with the specified call, frequency, and time. The time is "now" for passes, and some time in the future for schedules. The Age for schedules show up as negative values in the band map, decreasing towards zero as the schedule time approaches. Passes and Schedules that are older than 10 minutes are removed from the band maps.

Added a hidden preference that prevents opening a new untitled log when SkookumLogger starts up. Let me know if you would like access to this preference.

Added support for DVR memory bank 2 with K3 radios. Function keys F1 - F4 play M1 - M4 in bank 1, F5 - F8 play M1 - M4 in bank 2.

Misfeatures Fixed

Something broke the SCP and CTY.DAT downloading functions. Devised a work-around for what appears to be a system software malfunction. Thanks K7GQ.

The keyboard sequence for grabbing a spot from a band map was broken. Command-right-arrow focuses the band map, up/down arrow moves the selected spot, return grabs the spot; the return key press was instead selecting a table cell for editing. Hadn't noticed before because I always use double-click on a band map table row to collapse all those steps into one gesture.

A missed method rename for the SalmonRunInWashington class caused misidentification of Washington counties. Thanks N7DRK; Dave discovered the bug and found the fix!

Pounding the escape key to stop message sending when the Keyboard window had focus was inoperative.

Excessive "unexpected K3 response" console messages have been vanquished. The same repair was made for the TS-950SDX radio.

Updated Help.

Internal Changes

Refactored doCabrilloExport method in Log to push responsibilities out to various objects. In particular, ContestRules now has appendCabrilloName and appendCabrillo methods that prepare contest-specific Cabrillo records.

Added time attribute to Category entity, and removed Messages entity. These changes affect the data model, so we're now up to version 4.

Began reading "Cocoa Design Patterns" and applying lessons learned to clean up my code. There will be many more changes like these to make the code easier to understand and maintain.

Removed "sign" build phase and defined the Code Signing Identity setting in the Target build properties. Developers will need to change the Value for that setting to match their own identity.

0.8.0 2009.09.09

New Features

Almost set the version to 0.9.0 to align with the release date, but didn't.

SkookumLogger now supports the CQ World Wide DX Contests (CW and SSB). The internal changes needed to do this forced a change in the structure of the log files. If you open and existing log file you will see some new dialogs; don't be alarmed — SkookumLogger will Do The Right Thing. Since the format was being changed anyway, I added structures to support WAEDC QTCs (but WAE contests are not yet supported).

SkookumLogger now supports the Scandinavian Activity Contest. The rules for outside-Scandinavia entrants are rather complex; beware. Some editing of the Cabrillo exported file will be necessary until I get a better grip on contest-specific Cabrillo content issues.

The Summary window has been bloated beyond recognition. There are now five columns for each mode, labeled Q, M, Z, D, and S. You can probably guess the meanings of the first four. "S" stands for Suspect QSO — meaning that SkookumLogger cannot determine the multiplier for a QSO and therefore is ignoring that QSO. (For CT, this flag is also set by the NonQso command (control-L) that nobody knows about.)

SkookumLogger now supports score computations — but only for CQ WW and SAC so far.

The table in the Log window has replaced the Prefix and Multiplier Name columns with the M, Z, D and S columns, and added a Notes column. The Notes field can be edited; enter any text you want. The other new fields are not editable. As before, you can rearrange the columns to suit yourself, and show/hide columns using the context menu.

New table management feature in Snow Leopard: double-click a column divider line in the header row to auto-size the column to the left to just contain its content.

Misfeatures Fixed

Removed a spurious "All" row in the Qso Information window.

Internal Changes

New data model (schema). Modified attributes of Qso, added Qtc entity with 1:many relationship to Qso.

Use new Qso flags attribute to persist various boolean states with bit masks. Other boolean state can be added without affecting the model until we run out of bits; currently using 6 of 64. The beef is in QsoPropertyDefinitions.c, which is included by Qso.m and TransientQso.m as a factoring hack.Added separate but similar handling of "entity" and zone multipliers and cleaned up affected method and variable names. In general, contests that don't count zones Just Work, but there is a (BOOL)zonesAreMultipliers accessor on ContestRules that I may use to control UI visibility.