Everything Else

Helix RADE, Server, Engine, & Utility are available for Intel-based Macs only. (macOS 10.5–10.9.x)

Helix Client is available for PowerPC and Intel-based Macs. (macOS 10.4–10.9.x)

Helix 6.2.2 (5996) Release Notes

New and Improved Features

Click each section header to show or hide that section.

Helix Client/Server

  1. macOS 10.9 (Mavericks) compatibility

    The older Open Transport networking has been replaced by its modern equivalent (Sockets) for network communications. This project, which was originally slated for Helix 6.3, opens the door to many other new features that have been requested. (E.g. encryption)

  2. PowerPC Client Restored

    Helix Client 6.2.1 was available only for Intel-based Macs. Helix Client 6.2.2 is also available for PowerPC Macs running macOS 10.4 or 10.5.

  3. R6782: Helix Server now responds to all active network interfaces

    In the past, Helix Server would binds itself to one specific network interface on launch, and would not respond to alternative network interfaces. For example, if the computer has both ethernet and wifi interfaces active, only one would be used.

    Helix Server now allows connections via all active interfaces. The splash screen (and Server Information window) shows all enabled IP Addresses.

All Products

  1. R6834: Helix applications are now ‘code signed’

    Helix products are now identified as “from a recognized developer” (i.e: we paid Apple some money) so the workaround for installing and launching in macOS 10.8 and later is no longer needed.
    In addition, Helix Server no longer requires that you respond to a dialog to “accept incoming connections” to get through the built-in macOS firewall.

  2. R7544: Dragging a document from a view to the Finder now works as a “copy to volume” command

  3. R8496: Tabbing to a field now scrolls the window to show it properly

    When tabbing in a view, the view would not scroll into place when a field that was not visible on screen was tabbed into. Now it does unless the vertical and/or horizontal scroll bars are turned off. In that case, Helix will only auto-scroll in a direction that is allowed by the scroll bars.

    In addition, when scrolling to the top/left, Helix now scrolls the view as far as possible while still ensuring that the rectangle is fully visible in the window. This ensures that a label for the selected rectangle is shown.

  4. R8519: Leaving the “Personalize” field empty no longer prevents the registration button from activating

    When entering a serial number and key, the Register button was not being enabled unless the “Personalize” field was filled in. Helix now allows the “Personalize” field to remain empty when registering the key.

  5. R6783: Improved Debugging Tools

    A number of improvements have been added to Helix to enable debugging issues in a production environment:

    1. The User Access Log can now log specific data actions. Aside from their main purpose (additional user tracking) these additional tracking tools are useful for debugging data handling issues. See R6783: User Access Log Enhancements for more details.
    2. The multi-threading switches have been moved from the HMTT resource to preferences. See R8485: Multi-Threading control moved from resource to preference for more details.
    3. All Helix products can now send error messages to the system.log file that is part of macOS. Enabling the HxWriteDebugData preference activates this capability. Primarily this is only of use with ‘special’ builds that have specific debugging hooks enabled. Enabling this setting is of little use unless you are working directly with QSA ToolWorks’ technical support department to debug an issue.
    4. Helix Client and Server now have the ability to generate a log of every ‘message’ exchanged between them. Enabling the HxWriteDebugFile preference capture this message exchange in a file on the desktop named Helix_AS_Server_Debug (or Helix_AS_Client_Debug for Client). Warning: These debug files grow rapidly, easily exceeding 1GB per hour on a moderately busy network. They can also severely impact performance on a busy network. Do not turn this preference on unless you are working directly with QSA ToolWorks’ technical support department to debug an issue. Unsolicited debug files will be rejected.
  6. R6783: User Access Log Enhancements

    The useraccess.log can now log specific data actions. Aside from their secondary purpose as debugging aids, these new logging action provide the ability to create a general audit trail. The specific actions that can be logged are:

    1. HxAccessLogAdd: Log the relation name and record ID of newly created records.
    2. HxAccessLogDelete: Log the relation name and record ID of deleted records.
    3. HxAccessLogReplace: Log the relation name and record ID of updated (replaced) records.
    4. HxAccessLogPost: Log the beginning and ending of post actions by type (add, delete, replace, export, print), along with the relation name and record ID of affected records.
    5. HxAccessLogLock: Log the relation name and record ID of records locked, along with an internal locking key. Also log the unlocking of those records.

    Each entry also logs the ‘Seat#’ of the Client that generated the action, making it possible to identify exactly which user was involved. (Apple event accesses are logged as ‘-1’.)

    In addition to the events noted above, Helix RADE and Engine can also log the following:

    1. HxAccessLogSequence: Log the beginning and ending of a sequence.
    2. HxAccessLogSequenceStep: Log each step of a sequence.

    The Helix Preference Editor has been updated to provide an easy method for turning these on and off.

  7. R8485: Multi-Threading control moved from resource to preference

    In prior versions of Helix, the ability to disable multi-threading for specific actions was controlled through the HMTT resource. These settings have been moved to the preferences file.

    By default, the ability to create multiple threads for various actions is enabled, and disabling one or more threads is only logical when troubleshooting specific issues.

    The specific multi-threading preferences that can be disabled are:

    1. HxServerThreadAdd: Adding new records
    2. HxServerThreadDelete: Deleting records
    3. HxServerThreadReplace: Replacing existing records
    4. HxServerThreadPostOnExport: Posting during a data export
    5. HxServerThreadPostOnDemand: Posting on demand (Post All, Find and Post All, Post Selection)
    6. HxServerThreadPostOnPrint: Posting during printing
    7. HxServerThreadExportAllLock: Record locking prior to Export All, Export Selection
    8. HxServerThreadExportOneLock: Record locking prior to Export Form
    9. HxServerThreadPrintAllLock: Record locking prior to Print All, Find and Print All
    10. HxServerThreadPrintOneLock: Record locking prior to Print Form

    These threads are not wholly mutually exclusive. To prevent data change collisions, certain threads will wait if another within its group is already processing records. For troubleshooting purposes, it may be best to start by turning all threads off, activating them one by one to confirm whether threading is affecting your application.

    The Helix Preference Editor has been updated to provide an easy method for turning these on and off.

Bug Fixes and Improvements

Click each section header to show or hide that section.

All Products

  1. R7340: Escape key now triggers the ‘Cancel’ button in many more dialogs

    Many dialogs containing a ‘Cancel’ button required a mouse click on the Cancel button, when the Escape key should have also triggered the cancel action. Every corner of the code may not have been caught, but most, if not all, dialogs now properly respond to the Escape key.

    It should be noted that in Inspector editor dialogs, the Cancel and OK buttons exist in in a layer ‘above’ the rest of the controls, and that it is necessary to hold the Control key down while pressing Escape (or Enter) to trigger those buttons. This is a separate issue that we hope to address in the future.

  2. R7700: Power Query modifications are more thorough about updating open views

    Modifying a compound Power Query where the second item is a text search would fail in some cases if the view was open. This is fixed.

  3. R7903: Modifying a record on a cold form that contains undefined or defaulted fields that are used to query the form no longer causes index corruption

    This bug required four specific conditions to strike:

    1. The form is cold.
    2. A record is being shown that has an undefined field with a default value.
    3. The form has a query that relies on the undefined/defaulted value.
    4. There is an index on the field that is undefined.

    If all of these conditions were true, the index built on the undefined field would be corrupted if the record was deleted. (The deleted record was not removed from the index, an error which Helix Utility would catch and fix.)

  4. R8484/R8509: Structure Check dialog no longer opens and does not go away

    If a non-manual save (autosave, AppleScript) found minor maintenance to perform, it would sometimes open the structure check progress dialog, but fail to close it. This has been fixed.

  5. R8503: Cold forms no longer grow each time a collection is opened

    Each time a collection was closed with a cold form open on screen, reopening the collection would cause the view to open with extra height added to the window. Eventually it would reach from the top to bottom of the screen, unless the user manually resized the view. This bug could also be seen when switching users.

    Helix now properly restores the size and location of the view when it is closed, and is more aware of the presence of the toolbar in order to keep the top of the window in the same location when restoring it.

  6. R8504: Quick Query no longer shows when there are no queryable fields

    A cold form will no longer show an empty quick query in the toolbar if there are only inert rectangles on a view.

    Also, if you cancel a quick query that was open via a dialog (not the toolbar) the toolbar now stays open (so the refresh button isn’t lost).

  7. R8529: Graphics in command rectangles now scale properly when ‘Scale Picture’ is on

    A graphic pasted into a command rectangle would appear as scaled on the template, but it was not being scaled on the view. This is fixed.

  8. R8545: Editing records on a cold form via double click no longer corrupts indexes

    Working from a list that is a cold form that alows editing of data by double clicking to open an entry view could result in index corruption if the entry view is left open between modifications. That is, if you double clicked a record, edited that record, then re-activated the list without closing the entry view, and double clicked a different record, editing that second record would result in index corruption. This has been fixed.

  9. R8547: Helix no longer crashes when closing a modified cold form query without activating its window

    If a cold form query is modified, put into the background, and the user then clicks its red ‘close’ button, Helix no longer crashes.

  10. R8557: Option-clicking to close a view with unsaved changes no longer asks twice

    If a view has unsaved changes and the user option-clicks on the close box (to “close all”) the “save changes before…” dialog is presented. If the user chooses “Cancel” in that dialog, the dialog no longer comes back a second time.

  11. R8564: Crash when applying logfile containing byte stream

    If a collection crashed and the session log file contained information about a large document, picture, or text stream, Helix could crash when attempting to apply the session log, resulting in the loss of all data in that session log. This has been fixed.

  12. R8572: Printing a cold form list with content derived from use/from tiles now prints correctly

    When a cold form list contains data that is dependent on a use ◊ from ◊ tile, the acquired data for the last record on the list would be printed in every record. This has been fixed.

  13. R8592: The contents of a field are no longer automatically selected when a data change is received

    If the cursor is in a field that has not yet been edited and a data change (that triggers a redraw) is received, the field was becoming selected. This made it possible to inadvertently delete data in a busy Client/Server environment.

    Helix no longer selects the field when a data change occurs.

    Note: This change has the negative effect of causing the field to not be selected when editing records in series, where the field is supposed to be pre-selected after the view advances to the next record — after the replace is done. (This is noted in R8594 in techdb, and we hope to address this in a future release.)

  14. Preferences are now thread-safe

    You can now edit preferences while Helix is running and they will adjust immediately when Helix is reactivated.

  15. An extra ampersand has been removed from the Help menu

    The item in Helix‘s Help menu that was labeled “&Help” is now simply “Help”

  16. Refresh button no longer hidden on cold forms

    In macOS, the Refresh button is found in the toolbar, which can be opened/closed according the the user’s preference. Because some users leave the toolbar closed, they were unaware of how to refresh a cold form.

    Therefore, starting in Helix 6.2.2, the toolbar automatically opens when a cold form is opened. This ensures that the user is aware of how to refresh the form.

    Users who prefer that the toolbar not open automatically can disable this feature by setting the HxShowToolbarForColdForm preference to false. The Helix Preference Editor has been updated to provide an easy method for setting this preference.

  17. Miscellaneous AppleScript fixes

    Removed references from the AppleScript dictionary about the deprecated ability to get a color as integer. Use the get index for color command instead.

    The background color and frame color properties now consistently use the codes Tbci and Toci, respectively.

    The “close collection” command no longer requires Design Mode authentication (via the ‘login’ command). Authentication is not required to Quit the application, so allowing the collection to be closed that way is logical.

Helix Client/Server

  1. R6644: Export All with Option 0 Post on Export no longer repeats some records, skips others

    When exporting data from a queried view that uses an Option 0 post to modify the records being exported, records are no longer sometimes skipped when the export is done over a slower (WAN) connection.

    When this occurred, the export file would contain duplicate entries for random records, with the first entry for a record showing the pre-posting data, and the secondary entries showing the post-updated data.

    This bug also exists in Client/Server 6.1.

  2. R8488/R8514: Conditional sequences no longer act on wrong view

    In situations where a series of conditional sequence are called to {open view, perform action, close view} it was possible for the action to be performed before the view was fully open, causing the action to be performed on the view that originally triggered the sequence. Helix now confirms that the proper view is active before going on to the next step of the sequence.

    One result of this change is that the sequence progress dialog now remains on screen longer than before. Previously it would go away as soon as the last step was executed, even though the final step was not finished. This may give the appearance that sequences are slower than before, but in reality, this prevents the user from accidentally making changes that would adversely impact the intended actions.

  3. R8501: Client no longer fails to connect because of a system error code 30

    Attempting to run Helix Client and Server on the same machine would result in a ‘type 30’ error if the name of the collection was greater than 23 characters. This is because all Helix products added the text Recover_ to the front of the collection name when naming the recovery file. That filename is then truncated to 31 characters which lops off the unique identifier that is normally appended to the file. When the second application attempts to use the same recovery file name, this error occurs.

    Recovery files now prefix with the product name, so "Client_xxx" and "Server_xxx" do not collide when the collection name is long.

  4. R8517: Autosave timer now triggers as expected

    A change to the IdleLoop for Server (to keep it responsive) caused the autosave timer to perpetually wait for an idle moment before triggering a save. But with no idle time, autosave could never occur. This is fixed by checking the autosave timer even when Helix is not idle.

    In addition, launching a collection just before midnight could leave the autosave timer in a state that it would never save until triggered manually.

    In fixing these bugs, the timer is now much more accurate about syncing to the specified interval. For example, setting the autosave interval to every 30 minutes should save right at the top and bottom of the hour, unless the autosave start time is set to a time that creates an offset.

  5. R8524: Client no longer hangs when being terminated

    When Helix Server is shutting down, certain situations could cause a connected Client to ‘hang’ after the connection was terminated, requiring a force quit to recover. That should not happen anymore.

  6. R8532: The HxDisableConnect preference once again disables new connections

    The HxDisableConnect preference (and the HVIS resource) are intended to disable the “Connect To…” menu item, but this was not working in Helix 6.2.1. This is fixed.

    In addition, Helix 6.1 and prior required that the HVIS resource (if used) be of ID 0. Now the HVIS ID can be of any value.

  7. R8540: Client no longer crashes on retry after three failed attempts

    When a user connects to a Server, the user authentication dialog gives them three attempts to provide proper authentication credentials before dropping the connection. If this happened in Helix 6.2.1, attempting to make another connection without quitting and relaunching the Client would result in a crash. This has been fixed.

  8. R8549: AppleScript: quit with discarding unentered data properly closes collection

    The AppleScript statement quit with saving and discarding untered data would properly save, but would not close the collection before quitting, leaving the session log file still active. Upon reopening the collection, the empty session log file would be applied. This no longer happens.

  9. R8590: Network timing issues should no longer cause a Client running a sequence to hang

    If network delays caused a Helix Client’s ‘main thread’ to go to sleep while waiting a sequence was running, it was possible that the Client would never rewake the main thread. Since the main thread is where all user interface occurs, the Client as effectively stuck. This has been fixed.

  10. Typo in “too many users attempting to connect with one username” dialog fixed

    The word ‘to’ (as in ‘connect to …’) was missing. Now it’s not.

  11. Reset connection document key is now Option key

    You can now reset a connection document (i.e: revert all views to default positions, etc.) by holding down the option key at the beginning of the connection process.

    The message in the dialog that appears when a connection is reset has been corrected as well.

  12. Better error reporting

    The 7201 error code was previously used for multiple types of message errors. There are now specific error codes for each type of error, to better track down bugs.

  13. Log in failure time noted correctly

    The time of a failed log in attempt is now correctly recorded in the “Client Info” table.

Helix RADE

  1. R7649/R8083: Inspector cell selection improvements

    When editing a property in the Inspector, pressing the Return key stores the change, but was losing track of the selection, so that a subsequent Tab key focused on the first property in the Inspector.

    Helix RADE now retains the selection location: pressing Return again re-enters edit mode, and pressing Tab selects the next selectable property in the Inspector.

    Full Keyboard Access is partially implemented in the Inspector: you can now change Inspector checkboxes via the keyboard. (You can also set a popup menu, but you can not tab out of that property when Full Keyboard Access is enabled).

  2. R8194: It is no longer possible to add a user to its own menus

    Dragging a user icon from the Element Panel or collection window to its own editor window is no longer allowed.

    When adding items to a user menu via AppleScript, an error is returned when this is attempted.

  3. R8302: A crash while tabbing through a template has been resolved

    The crash happened when attempting to tab out of a rectangle that was improperly nested. (A situation created by a prior release.) Helix now tabs to the page rectangle instead of the group box they are clearly within.

    If you encounter this situation, any change to the template will cause the rectangles to “renest” and thereby fix the problem. So: if you see that tabbing from a rectangle does not move to the place it should, just resize any rectangle and commit the template. The problem is now corrected.

  4. R8333: Editing a label rectangle no longer reverts to black text

    It should be noted that a label rectangle actually has two different ways to handle font data. If the contents of the label rectangle are all of a single font/size of black text, the font settings are stored in a simple font record that can be changed via the “Font” property in the Inspector. However, if a label rectangle uses color, or contains mixed font/size data, the data is stored in a more complex record that can not be edited from the Inspector. In this case, you must use the Font and Color panels to make the change. (Select the text and choose “Show Fonts” from the Edit menu.)

  5. R8365: An odd dragging bug in collection/relation windows has been resolved

    In view by list mode, a click and drag in the area of a collection or relation window where no icons are shown was resulting in the selection of every icon from the currently selected one to the top being selected. That is fixed.

  6. R8457: Zoom box now works logically for sequence icons

    Clicking the zoom box in a sequence editor now resizes the height of the window so there is enough space to add one additional step to the sequence. The width is not affected.

  7. R8457: Zoom box now works better for abacus icons

    Clicking the zoom box in an abacus was not leaving enough space at the bottom of the window to add a new tile to the bottom. Now it does.

  8. R8483: It is no longer possible to set the location of a window so it is under the menu bar

    It was previously possible to use the Inspector or AppleScript to position a window so that its title bar was under the main menu bar, making it impossible to drag it with the mouse. This is fixed.

  9. R8492: Abacus Expression Language (AEL) crashes when expression is wrong

    Forgetting the outermost brackets in an expression would trigger a crash. Helix now return an error, as that is an invalid expression.

  10. R8506: Changing an abacus in way that invalidates an index selected for a view triggers crash

    If an abacus used in an index was changed in a way that made it ineligible for indexing (e.g. adding a today tile) committing the abacus would trigger a crash if the index was specified as the default or current index for a view. This has been fixed.

  11. R8521: Switching users while in Design Mode now updates username tile for open views

    The internal tracking of the Username tile is more efficient, and should no longer be confused by switching users, or by Apple event access to data.

    Note: The current Username is now shown in the Collection Information window. For Helix Client this information is shown in the Server Information window. This may seem counterintuitive, but it was the only readily available place to display this information.

  12. R8528: Icon usage in a Power Query is now properly shown

    In some situations, icons used in a Power Query would not show that usage in the “Where Used” window. That is fixed.

  13. Inspector once again updates location values in real time

    In earlier builds of Helix RADE, moving or resizing a window while the location properties were visible in the Inspector would show those values updating in real-time. This ceased to function at some point, but is now restored.

  14. View properties for ‘Cold Form’ or ‘Show Page Boundaries’ now update instantly on change

    Changing the ‘Cold Form’ or ‘Show Page Boundaries’ property in the Inspector was not updating the view if it was open. Now they do.

    Note that properties that affect the fundamentals of the window — the title bar, resize box, scroll bars, etc. — require that the view be closed and reopened to show the change, and therefore are not instantly updated so the user does not have to respond to ‘save changes before closing’ dialogs. The collection designer who wants to see those changes immediately must manually close/reopen the view.

  15. Resizing windows works better

    If a window’s calculated height required to show all data is greater than 32767 pixels, clicking the zoom button now zooms it to the height of the display.

Helix Engine

  1. R8510: Helix Engine demo no longer ends immediately after launch

    The Helix Engine demo key was mistakenly set to run for “0 minutes” — it now runs for 60 minutes.

Helix Utility

  1. Reporting improvements:

    The color of some messages seen in the Detailed Logging are changed from from red to orange, since they are not quite so serious.

    The color of errors that require another pass to correct are now noted in orange, to be more easily spotted.

    The color of the ‘obsolete relation’ message is changed from orange to black, since it is an inconsequential error.

    Reporting of error type 19 (BStypeQErr) now includes additional information to help identify the usage of the item that contains the error.

See Also…

Helix 6.2.4 Release Notes

Helix 6.2.3 Release Notes

Helix 6.2.1 Release Notes

Helix 6.2 Release notes

Backward Compatibility

Collections opened with Helix 6.2.2 remain backwards compatible with all versions of Helix 6.x.

Only Helix Client 6.2.2 can connect to Helix Server 6.2.2.