Deckhand™ Pro – 3.10.5-6105

5 October 2021
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 0.6.11 or higher

Latest AppStore Release

  • Added more obvious mirroring of UserDefinitions in core data to eliminate lost data
  • MOSession/MOTrip are now a 1-to-1 pair
  • MOTrip is mostly superfluous despite the object relationships and this is the first step in it’s retirement.
  • Rehydration is now managed using a new session openState algorithm.
  • Exposed $session.trip object
  • Strange session determination query in MOTrip was eliminated.
  • $action.deleteEvent and $action.submitEvent did not return proper success booleans.
  • Assured that the “accepted” flag was removed when events returned to fishing or ready state or are aborted.
  • Added $workflow.functions which allow querying performance and usage data on functions in the workflow.
  • Added the last() function, similar to first() but cannot be used as an iterator.
  • Built a more deferred queuing algorithm (DeferredQueue) which uses a queue management methodology superior to Apple’s GCD and allows load-based timed queues and better debugging. Incorporated it in several sensitive areas which has improved performance and UI stability.
  • For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.

Deckhand™ Pro – 3.10.3-6103

27 September 2021
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 0.6.11 or higher

Added many new features and product enhancements available to CatchFlow™ developers to use for developing workflows that load on the Deckhand™ Pro platform.

  1. Added greater control of activity buttons in the Activity Panel.
  2. Added fully-featured “choice” style dialogs with info headers.
  3. Added a new way to configure versatile and flexible dialogs
  4. Added better validation dialogs
  5. Added validation options to show event navigation buttons
  6. Added a greater collection of capabilities to the changeState action option as well as adds an action function to do the equivalent.
  7. Added better CatchFlow™ error reporting for failed actions.
  8. Added the new handlers section of template-based reports headers containing both a success and failure handler.
  9. Added new resizable vector-based icons with icon-question being the first using scalable presentations which can be used both in activity panel headers and activity panel cells.
  10. Added a return() function so that expressions can pre-maturely terminate with a returned value.
  11. Added access to the ReportSubmissionResponse object with properties which can be accessed as well as a modifying .copy() operation.
  12. Added $retainVariables = true to the IDE to allow variables to persist across workflow reloads.
  13. Added additional options to changeState so that states such as uploading and readyToSubmit could be simulated.
  14. Added $action.workflowChangeState which has the same capabilities as the workflow equivalent.
  15. Added the Panel0 placement for activity buttons so that a help (or other) button could be squeezed between Settings and the All tab.
  16. Added the markdown() (synonym md()) so that special “Markdown strings” can be created to populate dialogs to control formatting. Added various style setting properties (such as h1.fontName) so that the overall formatting style can be controlled.
  17. Added the warnings(n) image name so that warnings as well as errors can be displayed on a button (errors display in red).
  18. Added onSelected expression and enhanced efficiency of panel button generation to eliminate unneeded builds.
  19. Added the “blocker” type to dialogs.
  20. Added template caching to speed up template compilation.
  21. Added onCloseEvent expression.
  22. Added $action.openSession and action.closeSession to manage event open/closed status and completion.
  23. Added $debug.getLog(-2) to return the current log and clear it.
  24. Added the ability to disable FAB buttons by having the actionDetails enabled set to false.
  25. Add access to $event.created date as well as $event.type
  26. Add $action.deleteEvent()
  27. Add new workflow element cellHeader with markdown and expression ability
  28. Add lineSpacing and paragraphSpacing to markdown function parameter list
  29. For dateSerial() add the template= and format= and tz= keywords, but preserve old positional argument formats.
  30. Added $debug.buildCode so a workflow can tailor itself to debug builds.
  31. Added new two-column-open layout.
  32. Added workflow property “compatibleWithAllPreviouslyCreatedEvents”
  33. Added $action.selectEvent() to select an event in the activity panel
  34. Added $selectedEvent to return the selected event
  35. Added new icons such as icon-trash
  36. Added a “progress spinner” features that launches for long-running actions.
  37. Added the $system object and system variables to pass onboarding information.
  38. Added new icon-x and icon-unwind
  39. Fixed string() so that it outputs CoreData objects properly as their identifying strings instead of a CoreData blob
  40. Fixed a crash bug which could occur if attempts were made to store complex objects (such as $event) inside a DataStore. These are now flagged properly as getLog() errors.
  41. Fixes a bug where the Panel0 button would interfere with activity slots.
  42. Fixed a crash bug which could occur when certain objects were dumped to the debugging logs.
  43. Fixed string() to provide more consistent output.
  44. Fixed history so that in two-column mode the trips are in reverse order but the trip contents are in forward order matching the “Open” panel.
  45. Fixed crash bug when moving cells quickly between columns (view invalidation index error)
  46. Fixed memory leak which caused activity view controllers to never be deleted (and all their owned objects).
  47. Fixed a bug in $selectedEvent where you could not use sub-selectors.
  48. Fixed a bug which caused $action.selectEvent(nil) not to work.
  49. Fixed completeSession() so it would accept a session object

For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.

Deckhand™ Pro – 3.8.9-6079

27 August 2021
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 0.6.10 or higher

  • Initial implementation of report templates. This can replace reports.json with templates.
  • Added reports/type.t template capability.
  • Existing reports in reports.json will still continue to operate, but will ignore SendPayloadVerbatim
  • New reports formatted using the template processor can now be included in the reports subdirectory.
  • A new report definition attribute, payloadFormat allows specification of the payload format for either the old reports.json or new template-formatted reports.
  • Significant clean-up and simplified reporting function structure
  • Added support for inner variables in expressions
  • Creates a much looser interpretation of bools when they occur in && expressions or ?:.
  • Added Distance calculation functionality
  • $event.placemark changed to access placemarks as a function or dot-notation.
  • Placemarks now support distanceTo() function.
  • Add shape and label functionality to dropAnnotation
  • Expression enhancements to support various workflows operations
  • Added Named Value objects and “name=value” expressions
  • Added Named Value support to dict()
  • Added short-circuit support to ternaries and conditionals.
  • Added template variables support
  • json() would output numbers with decimals as strings
  • Exponential notation was used inappropriately on numbers converted to strings.
  • Added many changes to support drop annotations and placemark creation, plus some better debugging.
  • Added $event.setPlacemark, $event.clearPlacemark, $event.addAnnotation, $event.clearAnnotation expression functionality
  • Added $createPlacemark at the top level
  • Slightly modified the drop annotation shape parameters for thicker borders and greater border opacity.
  • Variables can now be used in the CatchFlow™ IDE. They can be viewed with $debug.variables and cleared with $debug.clearVariables()
  • Added haul, summary, edit, abort, submit, and log icons for action buttons.
  • Added a general keyword argument parsing capability
  • New pinned workflow engine.
  • Startup timing improvements
  • ManUp loading improvements
  • Under normal situations (build not changed)
  • Deckhand checks the ping situation and if the internet does not appear to be available, it falls back to the previous ManUp.
    However, it sets a network monitor up so that the moment a valid internet connection is available, it attempts to load a new ManUp.
    If not successful, Deckhand merely continues trying. However, once successful, the current Personality will be used until the 6-hour reload time interval is met, at which point Deckhand will retry and failsafe if not successful.
    When Deckhand notices a new build number (new feature):
    Deckhand ignores ping but requires that ManUp be loaded from the internet.
    If it cannot be loaded, then Deckhand presents the user with a dialog indicating that a configuration update is required. (see below)
    Once loaded, Deckhand records its new build number and operation continues from then on.
  • Workflow load improvements
  • Workflow load algorithms was changed so that fallbacks to the current workflow are done only when there is no alternative version available in manUp.
  • Added ping monitor for network connectivity and added behaviour log entries so we can more easily determine the user’s situation in the field.
  • Eliminated the workflowLoaded notification completely, making a more straightfoward startup.
  • Added transitionToInteractive() as a way to indicate that environmental changes are complete and the interface is now ready to go live for the user.
  • Added tolerance for duplicate updates from Boat (not sure why these are occurring)
  • Added new ManUp code and that includes a “no network” fallback to Personalities.
  • Fixed a bug in expressions that caused validation problems
  • Fixed a bug in the pre-population of expanded catch cell which was previously undetected.
  • Fixed CatchFlow™ IDE expressions to handle optionals better
  • Fixed some cases where dictionary elements would not respect the ‘key’ and ‘value properties.
  • Fixed some bugs in property access
  • Rehydration did not properly set preFishing mode as it should for rehydrated run-once events.
  • Fixed: optional report problems
  • Fixed several bugs in key renewal. First, the renewed key expiry was not kept properly and key renewal was done unconditionally when it was not supposed to.
  • For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.

Deckhand™ Pro – 3.8.3-6064

27 July 2021
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 0.6.10 or higher

  • Added a template engine to Deckhand™ Pro so that general purpose text templates can be expanded for many purposes. For more info – http://catchflow.io/documentation/user-guide/templates/
  • Added CatchFlow™ Composer, which allows CSP’s to create and launch workflows that contain compositions. For more info – http://catchflow.io/documentation/user-guide/Composer/
  • The composition launch action e.g. $action.launchComposition(‘compositions/summary’, template($workflow.file(‘templates/lobsterpot.t’), $actionEvent)) For more info – http://catchflow.io/documentation/developer-reference/compositions/
  • Set embeddedComposition variable to allow compositions to determine whether they are running inside Deckhand.
  • Added json() function and associated functionality
  • json converts anything to valid json
    is jsonobject() returns true if the argument is a valid JSON object represented as set
    $action.launchComposition now accepts either a JSON string or dictionary object as an argument.
    $event supports limited JSON serialisation
  • Fix JSON stringification for the composer
  • Added expandable catch default values to expandableCatchReport enable CatchFlow™ developers to auto-populate their landing reports from their catch reports.
  • Adds the defaultValues attribute support to expandableCatchReport
  • Adds the powerful collect() function to aggregate data appropriate for ECR
  • Adds a synonym dynamicExpandableReport for more consistency with purpose and other views.
  • Added another thread-safe wrapper.
  • Added an observable sessionWorkflow to make the FAB (and future tasks) easier.
  • Consolidated item creation code inside the FAB rather than having external construction.
  • Improved view and button management in the FAB to eliminate some confusion.
  • Created generic item setup with prefix items, events, and pattern matching combined.
  • Disabled web view bounce for compositions
  • Allow access to to the full composition folder.
  • Added missing min() function and added shared reducer utility
  • Updated BoatClient
  • Bundle now correctly chooses logging levels
  • Added setLogLevel and getLogLevel to CatchFlow™ debugging operations
  • Assured expression errors are logged in CatchFlow™ buffer
  • Ping implementation to improve offline behaviour of Deckhand™ Pro
  • Added $action.changeFishingMethod to be able to easily change the placeholder and method from an action
  • Provide a second argument to $action.pushEvent which permits the method to be specified, and forces a new fishing method to be registered as lastFishingMethod
  • Assure fishingMethodCode is always set properly in the data store.
  • Added $eventStack object to easily look at what is currently on the stack.
  • Create Camel-case synonyms for all lowercase expression functions.
  • Better defaults for unused and other common features
  • fisheryModel is completely optional
  • If included, fisheryCode, fishing methods and fishSpecies are also optional
  • Default named actions for $createEvent and $declareEvent are now included
  • autoRehydrateSessions now defaults to true
  • showUnitConversionOptionsInUserPreferences now defaults to false
  • pinSecurityPerSession and pinSecurity default to false
  • Fixed collect() arguments to be easy to understand.
  • Fixed $workflow object to return the descriptive string instead of nil.
  • Fixed a bug where location manager was being created on a background thread.
  • Fixed the use within Analytics.logSituation which was the primary culprit in this case.
  • Removed some unused code in the template processor
  • Fixed: JSON stringification for the composer.
  • Fixed: a bug in argument sub referencing which was triggered by sample template
  • Fixed: Eliminated enterPauseMode and put it in the same class as other markAs… functions, which also solves the deficiency in pauseEvent where events would not be started if they were merely in created mode.
  • For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.

Deckhand™ Pro – 3.8.0-6061

15 June 2021
Requires iPadOS 14 or later
Requires CatchFlow™ IDE version 0.6.10 or higher

  • Actions now complete before the next action runs. For example $action.declareEvent($actionEvent); $anyfunc()did not work before as expected because anyfunc would execute immediately rather than waiting for declaration. This also assures that success and failure events properly wait for the full event completion before being triggered.
  • Revamped the way animations work and increased the speed.
  • Changed the label component to dynamically update.
  • Added the experimental $action.refresh() command.
  • Expression evaluation has now been moved onto background threads.
  • Added $event.workflow and $event.title
  • Added $workflow.file() to return the text contents of a file in the workflow directory.
  • Fixed: keys within transformEach in reports were ignoring “isOptional” meaning that errors were thrown for missing fields when they should not have been.
  • Fixed: several unresolved promises during action expressions, including $action.stopSession
  • Fixed: problem where animation interruption would cause promises to be stranded because completion handlers were not called.
  • Fixed: some selectors which still said “animations” to say “withAnimation” for consistency sake.
  • Fixed: bug where duplicate controllers (one empty, one in use) were used at various points in the system. This was triggered by “going backward” where a new controller was re-created and used for some things but the originally controller was still being used for other aspects of the application.
  • Fixed: bug which could have occurred when evaluating variables from an action. getRValue() would run on a background thread instead of the main thread.
  • Fixed: a regression that caused keyword tables not to work correctly on the main thread.
  • For additional information on the above added items for CatchFlow™ developers and to download the latest CatchFlow™ IDE please click here.