Everything Else
Helix 7.0.2 Release Notes Companion TLW

These release notes describe bug fixes and other improvements in Helix 7.0.2. Please read them carefully.

These release notes are divided into two sections: New/Improved Features and Bug Fixes. You can click the section titles to show or hide each section.

Release Date: April 29, 2017

Important Notes

Helix 7.0.2 requires macOS 10.6 or later.

Helix 7.0.2 is not backwards compatible with 7.0.1 or earlier. Helix Client users should not update until the Helix Server(s) they connect to have been updated.

New/Improved Features

User Mode (RADE, Engine, and Client/Server):

Improve performance of conditional styles (R2076)

This is a significant ‘under the hood’ change designed to improve the performance of conditional styles, particularly in Client/Server.

This change includes the creation of a new First True Of ◊… pseudo-tile that takes multiple flag inputs and returns the index value (1–n) of the first (leftmost) hole that evaluates to true. (Swift and C programmers will recognize this as being similar to a switch statement.) This tile is not available in Design Mode, as additional code that is not part of this project is required. We are considering whether this function has any use for designers, so if you have design concepts where this would be useful, please let us know.

Code support for ‘temporary tiles’ that do not need to be cleaned up in the event of a crash is added. This can be extended to other areas of Helix, making crash recovery more durable.

Helix 7.0.2 also implements a new multi-threading interlock mechanism that avoids unnecessary thread swapping and improves performance in “low contention” scenarios.

Record selection in lists improved (R2030)

When creating an ad hoc query (that is, selecting records in a list) Helix now selects discontiguous records by default: it is no longer necessary to hold the command key when adding records. See the Selectable List Improvements in Helix 7.0.2 technote for more information.

International resources and the ‘Show Century’ flag (R8982)

Two important changes were made to address issues with date entry using two-digit years:

  1. The default 2-digit window is advanced from 1920–2019 to 1950–2049.
  2. By default, Helix 7.0.2 displays the year in full 4 digit form, regardless of the display format chosen.

See the International resources and the ‘Show Century’ flag in Helix 7.0.2 technote for additional information, including a way to modify these behaviors.

Drag and Drop (and AppleScript) collection opening improved (R9268)

Helix products only allow a single collection to be open at a time. This remains true. However, when one collection is already open and the user attempts to open a different collection (via drag and drop or AppleScript) Helix now closes the open collection — prompting the user to save changes, if necessary — and opens the new one.

Refined error reporting when collection can’t be opened (R9275)
More dialog button key equivalents

Dialogs are now more likely to use the first letter of a button name as a command key equivalent. Note that if two (or more) buttons have text that starts with the same character, the leftmost button gets the assignment.

Helix Client:

New Server tab renamed

After discussion with confused users, the “New Server” tab seen in the Client connection dialog has been renamed to ‘Remote Server’ to reinforce the fact that connection to local servers should be made in the “Local Servers” tab.

Client idle timeout dialog improvements (R8552)

The Client timeout warning now has ‘Disconnect’ and ‘Quit’ buttons to complement the ‘Stay Connected’ button. See the revised Client Idle Timeout in Helix 7.0 technote for more details.

Design Mode (Helix RADE):

Abacus editor selection improvements (R9207)

Like the template editor in Helix 6.2, the abacus editor in Helix 7.0 now supports the keyboard as a method for selection and movement of objects in the window. See the Abacus Editor Improvements in Helix 7.0.2 technote for details.

Indexes display all icons in the contents column (R8293)

In Design Mode, the contents property of indexes now display all of the icons in the index, instead of just the first two as in all prior versions. (There is a 255 byte limit to the contents property; if the total of the names of icons in an index exceed that, the text is truncated.)

In addition, the contents property now uses up and down arrows to indicate the sort direction, instead of the English-centric A for ascending and D for descending.

Modification date column added to ‘Where Used’ windows

The Where Used window now includes the modification date column for the icons displayed.

Element Panel now uses diacritic-insensitive sorting rules. (R9272)
Additional Field properties in the Inspector

Field properties that were only available in AppleScript before are now shown in the Inspector:

  • Field ID: The internal field identifier. (In AppleScript, this was previously referred to as the ‘datakey’ property.
  • Record Count: The stored count of records in which this field is defined
Additional debugging properties in the Inspector

For customers who have passed collection repair training, additional properties useful for repairing collections (and debugging RADE) are displayed in the Inspector.

Bypass SUL rebuild when opening a collection

To aid in disaster recovery, you can now hold the Shift key down when opening a collection to bypass SUL rebuilding

Improved conditional style assignment process (R9319)

A number of improvements to the process of assigning conditional styles have been made:

  • Adding a new conditional style now inherits the style info (font and color) from the rectangle.
  • In prior versions, Helix could only assign conditional styles to one data rectangle at a time. Selecting more than one data rectangle no longer disables the Conditional style dialog, making it possible to assign the same styles to multiple rectangles at once.
  • If multiple data rectangles are selected, the conditional style dialog uses the existing styles of the first rectangle selected as the default for the dialog. In other words, the conditional style of one rectangle can be quickly applied to others by first selecting that rectangle and adding other rectangles to the selection before opening the conditional style assignment dialog.
Bug Fixes

This section details fixes to bugs that were reported in Helix 7.0.1 or earlier.

Design Mode (Helix RADE):

Can’t set selection of template editor window (R8004)

6.2.4 (or earlier): An AppleScript attempt to set the selection property of a template editor window would always fail, returning an error. This is fixed.

In addition, the ability to set the selection in an abacus editor window is now implemented, with two caveats:

  1. The selection property only resolves to icons or tiles. If the jog point or arrow of a tile is selected, it is the tile itself that is returned, and attempting to select a jog point or arrow results in the tile itself being selected. This is a limitation we may address in the future, if requested.
  2. Also, if an icon appears more than once in a window, a set selection can not distinguish between instances, and only one of them is selected.
Relinking a template with a subform during structure pasting breaks the view (R8330)

6.2.4 (or earlier): Relinking the subform of a template with a different subform would result in an error. This is fixed.

Doing the same with the view that uses the template open would result in a crash. This is also fixed.

Closing a collection with the clipboard window open could result in damage (R8978)
6.2.4 (or earlier): If a collection was closed with the Clipboard window open, a collection could report an error when it was reopened, as Helix tried to reconcile the old clipboard contents with the new. This is fixed.
Making new abacus and setting format before committing ignores format (R8981)
6.2.4 (or earlier): When making a new abacus of any formattable type [flag, number, fixed point, date], if the designer set one or more display properties (decimal places to display, etc.) before committing the data type change, the display property changes were not stored. (The default format was used.) This is fixed.
Quick Query still in effect after switching to a list (R9091)

6.2.4 (or earlier): If an entry view with a quick query is switched to use a list template (or Option-none is selected to create a Quick List) the quick query remained in effect on the view, with no way to remove it other than switching back to an Entry view and canceling the quick query.

The quick query is now cleared when switching to a list template or a Quick List. This happens immediately, so the quick query is not restored if the view is reverted.

Dragging to ‘word’ tiles more reliable (R9205)
7.0.1: A fix that enabled dragging an abacus to a ◊ word …◊ tile used a test that could fail. This has been fixed.
Field datatype change does not propagate, leads to faulty calculations (R9215)

6.2.4 (or earlier): When a field’s datatype is changed, any abacus that uses it should be checked to determine whether the calculation is still legal. In some cases, converting field’s datatype could lead to an abacus with an invalid calculation (such as adding a Number to a Fixed Point field) while other (secondary) calculations that should remain valid, would not. These bugs are fixed.

Double clicking on a tile should open Inspector (R9290)

6.2.4 (or earlier): In Classic, double clicking on a tile would open the dialog box for filling the sockets. Now you fill the sockets in the Inspector, so double clicking the tile should show the Inspector, if it isn’t open already. This is fixed: Double clicking on a tile (or in any open area of the abacus editor window) now opens the Inspector, if necessary.

In addition, option-double clicking on an icon opens the ‘where used’ window, but option-double clicking on a tile is meaningless, so that also now opens the Inspector. (Option-double clicking in the open area of the abacus editor window opens the ‘where used’ window for the abacus, as it did before.)

‘Revert’ key equivalent corrected (R9253)
7.0: The Command key equivalent for Revert has been corrected to Command-Option-[.
‘Save Selection as Clipping’ command ignores subdirectory (R9255)

7.0: If a Clippings folder contains sub-folders for organizing clippings, attempts to save new clippings in a sub-folder resulted in the clipping being saved in the root level of the Clippings folder. This has been fixed.

Also: If more than one icon was selected, and the default name of the clipping included any Unicode characters, the default file name was blank. This also has been fixed.

Crash when removing post from a view (R9261)
6.2.4 (or earlier): In some rare cases, when a post was detached from a view, and the change is committed, Helix would report a 7xxx error and shut down. This is fixed.
Pressing tab in “Where Used” window caused crash(R9267)
7.0: Since the icons are not editable in a “Where Used” window, attempting to tab into a cell in the window could never find one to activate, causing RADE to go into an infinite loop searching for an editable cell. This has been fixed.
Click then tab selects the next editable cell (R9269)
7.0: When viewing a collection/relation window in List mode, it takes a double click to make a cell editable. If the user single-clicked then pressed tab, they would logically expect the clicked on cell to activate; instead RADE was activating the next editable cell. This is fixed.
Changing index with views open triggers crash (R9289)
6.2.4 (or earlier): If a view that uses an index is open while the index is being edited, committing the changes to the index resulted in a crash. This is fixed.
New abacus does not show display format options until committed (R9289)

6.2.4 (or earlier): When an abacus’ whose final output tile can produce multiple datatypes (e.g. [ ◊ + ◊ ]) contains enough information to determine its datatype, the Inspector now immediately shows the display options for that datatype.

Can’t set location properties of a view via Inspector (R9304)
7.0: Changing a location property for a view that is closed is now properly stored. As with other methods of changing location properties (e.g. moving and/or resizing a window) this does not require a commit.
Can’t set view windows smaller than 96 pixels wide (R9306)

6.2.4 (or earlier): Classic Helix allowed the designer to create very small windows. When moving to macOS, Helix lost that ability, because the three buttons on the left edge of the title bar, plus the (now obsolete) ‘show toolbar’ widget on the right edge of the title bar could not be removed, and required 96 pixels of space. This code has been revised, and Helix now calculates a minimum height and width that is logical to the window type and characteristics of the view.

Document window type

  • Both scroll bars on: minimum size is 66 wide x 32 high.
  • Horizontal scroll bar off: minimum size is 66 wide x 1 high.
  • Vertical scroll bar off: minimum size is 66 wide x 32 high.
  • Both scroll bar off: minimum size is 66 wide x 1 high.

Plain window type

  • Both scroll bars on: minimum size is 32 wide x 32 high.
  • Horizontal scroll bar off: minimum size is 30 wide x 1 high.
  • Vertical scroll bar off: minimum size is 1 wide x 30 high.
  • Both scroll bars off: minimum size is 1 wide x 1 high.
Icons left open in Classic that no longer have an editor can’t be deleted (R9310)

6.2.4 (or earlier): Field and post icons whose editor windows were left open the last time the collection was in Classic Design Mode could not be deleted, because their ‘open’ flag remained set. This is fixed.

Crash when switching users with views open (R9312)
7.0 (and possibly earlier): When switching users, a crash or 7602 error could occur if views were open before the switch was made. This is fixed.
Drag selection mis-calculates position of rotated rectangles (R9294)

7.0: When dragging to select rectangles, the position of a rotated rectangle was being computed using its non-rotated position, making selection highly non-intuitive. This has been fixed.

User Mode (RADE, Engine, and Client/Server):

7.0: Helix no longer presents itself to the system as a background application
Queries can not find CR or LF (R7088)

6.2.4 (or earlier): The quick, power and form query fields for entering a search value were designed as ‘single-line’ fields, and automatically converted any return (CR) or linefeed (LF) characters into spaces, making it impossible to search for those characters.

It is now possible to paste a linefeed into a query’s search value field. Unfortunately, the new standard of using Shift-Return to insert a linefeed does not work.

AppleScript can not clear or set a view’s quick query (R7929)

6.2.4 (or earlier): Although it was possible to set a Quick Query via AppleScript by storing a valid ‘quick query expression’ record, doing so would not update the ‘combined query expression’ so it did not actually work. This is fixed.

Also, some views could contain an anomaly that would trigger a crash when attempting to set a Quick Query. This is also fixed.

Document Management: Clicking ‘Move To’ button when nothing is selected crashes (R8600)
6.2.4 (or earlier): The ‘First Move To’ button should be disabled when no file is selected, and clicking it in that state resulted in a crash or a non-responsive dialog. This is fixed.
Dynamic menu Data Value format overrides rectangle format (R8961)

6.2.4 (or earlier): When a rectangle contains a dynamic popup whose Data Value has a format different from that of the rectangle, it displayed the format of the Data Value instead of the format of the rectangle when the value in the record was once of the menu choices. Helix now always displays the data using the rectangle format.

Can’t close collection because of an open Apple event process that can’t be closed (R9048)
6.2.4 (or earlier): A failed attempt to get a ProcessID (such as when requesting one for an invalid view) was neglecting to reduce the Dock’s Apple event counter, leading Helix to believe there were still active events. This is fixed.
A dynamic popup does not display stored value until popup is calculated (R9145)

6.2.4 (or earlier): When a view is displaying an existing record and a data change causes a field formatted as a dynamic menu to recalculate, the field was being ‘blanked out’ until the popup is fully calculated. With a slow calculation (or slow connection) it could appear that the field was undefined, when in reality it was just waiting for the popup to recalculate.

This is addressed in Helix 7.0.2 by being careful to not remove the ‘waiting for data’ (checkerboard) pattern until the calculation is complete, reinforcing that the popup is currently recalculating.

Pause between sequence steps is often excessive (R9201)

7.0: Multiple changes were made to improve performance of sequences:

  • The sequence progress thermometer no longer hides in the background.
  • Sequences no longer yield to other processes excessively.
100F error when deleting more than 32K records on a list (R9233)

6.2.4 (or earlier): This error appeared when list processing was switched to delete records in ‘bottom-to-top’ order. Helix now processes records in top-to-bottom order when more than 32K records are deleted, thereby avoiding this error.

However: bottom-to-top processing is still better, as it avoids the possibility of skipped records when the process is interleaved with other actions. (Client/Server activity, being put in the background, etc.) To avoid such potential issues, it is strongly recommended that any list whose purpose is to delete records should have its ‘cold form’ property turned on.

Scrollable text scrolls to top of field when editing text at bottom (R9234)
6.2.4 (or earlier): When a text rectangle that has a vertical scroll bar contains enough text to activate the scroll bar, scrolling down and then clicking would scroll the rectangle back to the top before setting the insertion point. This is fixed.
Power Query search value fields mouse-selectable (R9236)
7.0: The Search Value fields in a power query could not be selected by clicking them with a mouse; they had to be tabbed into. This has been fixed.
Setting HxShowToolbarForColdForm To false does not work (R9248)
6.2.4 (or earlier): When Helix switched window opening to occur on a secondary thread (for performance) it lost the ability to check the preference, as it was originally implemented when windows opened on the main thread. This preference now operates on any thread, fixing the bug.
Time stamping a combo box field inserts just first digit of month (R9250)
7.0: Attempting to time stamp a field with a popup menu that allows typing (a combo box) would insert just the first digit of the data. This has been fixed.
Crash when closing a view (R9251)

7.0: A crash that could occur when closing a view has been addressed.

Index corruption when deleting records with linefeeds (R9252)

6.2.4 (or earlier): When data containing a carriage return (CR) character is entered in a field, the CR is converted to the modern linefeed (LF) character.

The bug was that if that field is indexed, the index was calculated using the CR character even though the data was stored with the LF. At this point, the indexed value for the field does not match the stored value.

When the field was subsequently edited and replaced (or the record deleted) Helix was unable to match the old data to the index entry, and therefore unable to update it. A new entry was created, and the old one was left as an ‘orphan’ in the index. Helix Utility would detect this ‘count mismatch’ and flag the index to be rebuilt.

Helix now uses consistent linefeed characters throughout the indexing process, so this bug should not recur. (Please report any situations where recurring index corruption is noted.)

Crash when closing list view after deleting selected records (R9254)
7.0: After scrolling down a few pages on a list view and deleting a selected set of records, attempting to close the list view resulted in a crash. This has been fixed.
Power query search value not stored unless tabbed through or clicked out (R9256)

6.2.4 (or earlier): When editing a power query’s search value field, the field was not stored unless the user either pressed Tab or clicked on some other non-button area in the power query window. Failing to do either of these actions and clicking ‘Apply’ (or closing the window) essentially ignored the value typed into the focused field.

The focused search value field is now processed after every keystroke, thereby avoiding this bug. This change has the added bonus of providing more immediate feedback when an invalid value is typed into a field. (E.g: ‘1/2’ in a date field.)

Entering record with invalid data in focused field silently discards invalid data (R9263)
6.2.4 (or earlier): On a view with both a subform and a post attached, if a user typed invalid data into a field (e.g. text in a number field) and entered (or replaced) the record without tabbing (or clicking) out of that field, the invalid data would be silently discarded and the record entered, potentially leaving the user unaware that the data was rejected. This is fixed.
The subform list in the Element Panel excludes some valid templates (R9265)

6.2.4 (or earlier): A subform with one dimension that is the same as host form was excluded from the Element Panel list, even thought that is a legal subform for the template. This is fixed.

In addition, Helix now uses the uncommitted version of the template to determine whether a subform can be legally placed on the template. This makes it possible for the Element Panel to dynamically re-filter the list as the template is resized.

Crash when an internal document replaces an existing document (R9273)
7.0: When replacing a document in a way that causes a warning dialog to appear, Helix was losing track of the window from which the document was being exported, resulting in a crash. This is fixed.
Menu items starting with a minus sign appear as dividers (R9277)
7.0: If a menu item started with a minus sign, it appeared as a divider instead. This affected icons that appeared in the Inspector and user menus, as well as data that appeared in popup menus. This is fixed.
Apple event legacy action ‘check view state’ should not require sixth parameter (R9284)
6.2.4 (or earlier): The documentation for the ‘check view state’ legacy action states: ‘the sixth parameter is optional…,’ but it was in fact being required, or Helix would return an ‘incorrect number of parameters’ error. Helix now conforms to the specification described in the AppleScript dictionary.
Calculated count outside list does not update after posting (R9292)

7.0 : A list from which the user performs a posting operation that affects a calculation that is displayed outside the list was failing to update the count until the view was closed and reopened. (Oddly, that same calculation would update on view that was not frontmost.) This is fixed.

This bug also existed in the macOS versions of Helix 6.1, as well as in Design Mode of Helix 6.2. (More oddly, it worked correctly only in User Mode in Helix 6.2.x, manifesting the same failure to update in Design Mode.

Crash when form query contains a label rectangle containing a picture (R9307)

7.0: A form query whose template contains a label rectangle containing a picture could crash when the query was opened. This is fixed.

This fix also addresses the situation where some text labels were not appearing when a form query was opened.

Helix Client:

Unicode characters in Client connection dialog (R9259)

The Client connection dialog now displays Unicode characters correctly.

Client crash when reconnecting (R9260)

A bug that could cause Helix Client to crash when opening a saved structure file has been resolved.

Intermittent crash selecting all records from a sequence (R9260)
A list view containing a button with a sequence statring with ‘Select All Records’ would trigger a crash as it was repeatedly re-evaluated as the list filled. This is fixed.
Crash reconnecting to Server if an open window contains a picture (R9297)
If a Client disconnects while leaving open a view with a picture in a label rectangle, the Client would crash when relaunching and attempting to reconnect to that Server. Fixed by making sure the picture code is properly initialized when Helix Client launches.
Client crash when posting removes values from a queried list (R9324)

On a queried list, a post that changes records such that they no longer satisfy the query could trigger a crash after the posting was complete, as the query was being recalculated. This is fixed.

Random crashes

Helix Client would sometimes crash ‘randomly’ as a result of changes that caused the contents of open views to be recalculated. Although this is not fully fixed, instances of crashing are greatly reduced. This issue will be more thoroughly addressed in Helix 7.0.3.

Helix Utility

Badly damaged collection causes looping repair attempts

When Helix Utility finds errors to correct, it takes another pass to determine whether all errors have been corrected, or an uncorrectable error has been encountered. In rare cases an error can be such that Helix Utility believes it can fix it, but in reality it can not. This leads to an endless loop of passes. Earlier versions of Helix Utility contained a check to make sure that no more than 5 passes were made, since there is no fix that requires more than 4 passes.

Helix Utility 7.0.2 reimplements this check and provides an updated error message if the limit is encountered.

Attempting a utility export from a collection that “can’t be opened” hangs (R9059)
7.0: Attempting to export data (via the Expert tab) for a badly damaged collection would hang. This is fixed.
Crash when compressing specific collection (R9309)
7.0: A collection was found in which some spurious bits were set in the upper section of an Object ID. Helix Utility is now careful to discard the unused bits before attempting to interpret the Object ID.