1.8.1 - 2019-08-12

  • Language: Keyword redefineArg introduced for the assignments within an insert block. Besides making the intent of the construct more explicit, this should look more familiar to those that have experience with mission scripts in XML format.

  • Editor

    • ShiftCtrlX is now the keyboard shortcut to display the generated XML and also to trigger its validation once displayed. (On a Mac, use ShiftCmdX.)

    • New button (keyboard shortcut CtrlP; on a Mac, use CmdP) to display the complete source of the mission script in a separate page with no other regular GUI components. This facilitates subsequent printing of the mission script via standard browser options. (Example of a PDF generated through this mechanism.)

1.8.0 - 2019-08-05

This is a major release with significant language additions as well as adjustments and bug fixes on both the language engine and the editor.

  • Language Engine

    • New "array" and "macro" features added to TethysL. Thanks a lot to our summer intern Riley Rettig for her great work on these additions! Many thanks also to Yanwu Zhang for his critical feedback.

      Array declarations look like the following:

      Each array declaration consists of a name for the argument (e.g., Lat) followed by a range of array subindices in brackets ([1..4]), followed by = and then an expression. This expression can be an explicit array (e.g., [NaN degree, NaN degree, NaN degree, NaN degree]) indicating the value for each entry individually, or can be a single, non-array expression (e.g., NaN kelvin) as a shorthand to assign the same value to all entries in the array.

      Here's an example mission combining the array and macro features:

    • Per user feedback (thanks again Yanwu), we added ability to set particular sub-ranges in an array declaration:

      That is, besides the [ for starting a fully specified array expression for the declaration, now { can also be used to specify the entries via sub-ranges. There can be as many sub-ranges as desired. Each sub-range component consists of two parts separated by a colon :. The left part (e.g., 1..4) indicates the corresponding range of indices, and the right part (e.g., [1 degree, 2 degree, 3 degree, 4 degree]) indicates the values for the sub-range. The right part can also be a single, non-array expression, in which case the same value is assigned to all elements in the associated sub-range for the declared array.

    • touch construct introduced, which is similar to assign but with no right-hand-side expression for the identifier. An example with Universal:platform_communications:

      This special assign is "conceptually equivalent to a filesystem touch operation in that the value isn't affected at all, but the time of last write is updated." (#22).

  • GUI

    • Added note in the "Confirm translation from XML" dialog regarding the recently enabled TethysL extensions:

    The 'array' and 'macro' extensions only exist on the TethysL side (i.e., they do not have a corresponding direct support in XML). So, if the current XML was generated from a TethysL version with the use of any of these extensions, then these won't be recovered in the new resulting TethysL version. You will get the corresponding expanded form of the corresponding elements.

    • Changed "Open recent file" shortcut to CtrlE (from CtrlR to avoid conflict with browser page reload).
    • Added Cmd-based key shortcuts for Mac. But both Cmd and Ctrl cases are dispatched; only visible difference is reflected in corresponding button tooltips.

    • Various adjustments in the UI for the new array and macro extensions, including syntax highlighting of new elements.

    • Other adjustments:

      • Improve dispatch of Esc and click-on-backdrop for the XML display dialog based on modified status of the content.
      • Highlight name for mission, aggregate, and behavior
      • Larger font-size for the error widget so the message is easier to read.

1.7.4 - 2019-07-01

  • Avoid codemirror's inefficiency with large XML contents by using a regular textarea if contents is larger than 80K chars (a rough estimate for the threshold).

1.7.3 - 2019-06-25

  • syslog now also optionally accepts service setting, example: syslog important service=express "newTime = " + newTime ~ second (#23).

  • Better dispatch of suggested completion list for service and severity (reflected in syslog and sendData).

  • Fixed issue caused by breaking change in Bitbucket API related with the retrieval of the repositories the user is a member of. (#25).

1.7.1 - 2019-04-26

  • Internal preparations involving expressions and operator precedence to align with corresponding handling in the LRAUV framework.

  • Add button to show original XML.

1.7.0 - 2019-03-26

  • CtrlK to compile.
  • New button to update the base information used to validate entities referenced in TethysL scripts. Click the button at the end of the main toolbar to open the base information dialog. If you are currently logged in as an operator in the TethysDash system (Dash3), then the update button will be included in the definitions dialog:

    The TethysL engine will synchronize relevant repository clones in the backend (lrauv-application, lrauv-mission), parse all *IF.h header files as well as the currently published XML schemas.

    Once this operation is completed in the backend (you will get a result message as part of this), please reload the Editor page to also bring the updated information to the frontend.

    NOTE: The XML schemas themselves are currently updated as part of the nightly build for the LRAUV system. So any changes in the schemas since the last build won't necessarily get reflected by the operation above.

1.6.2 - 2019-03-25

  • New button T|X to show, upon a sucessful compile, the TethysL source and the generated XML side-by-side.

1.6.1 - 2019-03-22

  • Several more adjustments in the automatic XML-to-TethysL conversion (button X⇒T), now with traslation of almost all comments (including those for TEST_CODE snippets in python). In general, this conversion should now cover most cases in all existing XML files in the lrauv-mission repository. Please report any translation issues. Keep in mind that possible compile errors in the resulting translation might be just due to the more strict validation performed by TethysL (which is part of its motivation in the first place!). Once you have reviewed and done any necessary edits, remove all the #!!! lines and save/commit the script.

1.6.0 - 2019-03-20

  • Along with any existing TethysL files, one can now browse all other missions that are still only available in XML from the selected Bitbucket repository, and load them into the editor with the automatic XML-to-TethysL conversion, which has also been significantly improved.

    For the selected directory, the mission browser panel (on the left) lists all contained mission scripts but ignoring the .xml and .tethysl file extensions (so, a base name will be shown only once for a script with both extensions available). Upon clicking an entry, say Surface, the editor will first try to load the TethysL version (Surface.tethysl) if available. If not, then it will load the XML version (Surface.xml), perform the conversion, and put the result in the editor.

    This logic is also applied by the open-script command (CtrlO).

    A script translated from XML will include the following comment line:

    #!!! TethysL script automatically generated from original XML

    The user can of course proceed with further revision of the script as needed, eventually removing the comments lines about the automatic conversion, save it in local storage, commit it, etc.

1.5.8 - 2019-03-19

  • New "info" button (located to the right above the editor area) that displays all the basic information (namespaces, modules, units) that supports corresponding validation of referenced entities in TethysL sources. This base information is gathered by the engine from the lrauv-aplication system (interface (*IF.h) headers and XML schemas).

    NOTE: The update of this information is still triggered manually in the backend.

1.5.7 - 2019-03-18

  • Compiler/GUI:

    • Autocompletion of colon-prefixed identifier.

      Note: for the moment, the autocompletion list in this case is generated upon semantic error, that is, when an inexistent colon-prefixed identifier has been entered. So, first compile (CtrlK), then, trigger autocompletion with CtrlSpace:

    • Autocompletion of mission or aggregate name for insert Ctrl+Space:

    • Autocompletion of behavior name for behavior Ctrl+Space:

  • GUI:

    • Proper handling of Tab/Shift-Tab.
    • Formatting adjustment in hint dialog.
    • Open script button now also for 'Shared' workspace.

1.5.6 - 2019-03-13

  • Added button to open a script (Ctrl-O) with quick selection of any available mission script (from cached list in Bitbucket workspace case, and from saved files in the backend in the Shared workspace case).

  • Engine/Compiler: A regression fix in 'behavior' parser.

1.5.4 - 2019-03-04

  • Improved autocomplete dispatch to first allow for the expected list from semantic analysis (in case of error) to proceed if already captured, otherwise proceeding with the parse based autocompletion.

  • Improved caching (in local storage) for Bitbucket workspace such that directory listing is retrieved only upon first opening of the directory and then in certain operations (file creation/deletion and explicit reload request).

  • Directory creation now as a separate operation. In the Bitbucket workspace case, the new directory is of course not to be committed itself, but maintained in local storage to then allow for any subsequent addition of files.

1.5.1 - 2019-02-28

  • Compiler:

    • Significantly enhanced syntax error reporting and support for autocompletion.
    • Various parsing adjustments for consistency (especially in terms of keywords vs. identifiers).
    • Units now represented explicitly at the syntax level (not via generic identifiers).
    • Severity values for syslog now also explicitly represented.
    • Keywords now properly delimited and with consistent "camelCase" naming.
  • GUI:

    • Improved autocompletion at syntax level. This is how autocompletion for units looks like when typing Ctrl-Space where a unit is expected:

    • Shift-click on the little style buttons on the top right of the editor now adjusts the line height in the textarea. (Regular click continues to adjust the font size.)
    • Extra highlight for brackets.
    • Various style adjustments in the textarea (token colors, font family).
    • Clicking the OK button now shows the compiled symbols (as in pre-1.5 version).

1.5.0 - 2019-02-22

  • New major version of TethysL. Although with an improved GUI in general, this new version mainly involves more robust underlying compiler support for enhanced error reporting and autocompletion, which will be a next focus moving forward.

  • Some of the changes/additions:

    • Improved diff dispatch according to saved contents, editor contents, and committed contents.
    • Improved commit dialog, including diff (both tethysl and xml).
    • Syntax validation now done as the script is edited. (Full compile still to be triggered via button or Ctrl-C.)
    • Fixes to handling of Bitbucket account authorization.
    • Allow to commit both the .tethysl and the .xml at once as in previous version, but also either one in separation. This is very convenient as we progress toward to a complete TethysL focus.
    • Translation to XML now also includes comments (only for a selection of the constructs for now). This is also convenient for transition purposes.
    • Ctrl-/ to comment/uncomment current selection or line.
    • Ctrl-[ to jump to matching bracket.
    • Ability to change font size in tethysl and xml textareas.
    • Words highlighted across the document corresponding to word under cursor.
  • Internally, the system is now comprised of two separate modules: the language engine itself (with server- and client-side submodules), and the editor.


1.0.0 - 2018-06-11

  • Fix translation of python test code to remove the "unexpected indent" generated as part of the overall XML formatting (#17).

0.9.9 - 2018-05-31

  • Internal adjustments mainly related with handling of value units (#16, #15, #13).
  • Clicking the OK button (upon a successful compile) will now show a popup box with all the "symbols" (arguments, outputs, inserts, aggregates, behaviors) associated with the script. Right now this is mainly intended as a development tool to facilitate inspection of the compile result.

0.9.8 - 2018-05-23

  • Editor

    • Significant, mainly internal adjustments toward completing the transition to workspace-based, remote-bitbucket-repo mission file handling.

    • More externally, the compile operation now needs to be explicitly requested (via CtrlK shortcut or corresponding button), except upon a fresh load of a script, in which case the compile operation is done automatically.

0.9.7 - 2018-05-18

  • Editor
    • New TethysL Diff feature (button: , keystroke shortcut: CtrlD).
      Depending on three possible contents associated with the script being edited, this function will perform a 2- or 3-way diff operation and open a modal dialog with:

      • saved contents, if any, in the left panel;
      • current contents from main editor in the center panel;
      • committed contents, if any, in the right panel.


      Note: Any changes done in the diff dialog will get reflected in the main editor upon closing the dialog.

0.9.6 - 2018-05-17

  • Editor
    • New button , which commits both the source in TethysL and corresponding generated XML.
    • Button now saves the script in your browser's local storage.
    • New button to perform translation from XML to TethysL.
      For those existing XML files in the upstream mbari/lrauv-mission repo that don't yet have a TethysL version, the "trick" to exercise this feature is to create a new script in TethysL with the name (including path) of the mission and then click this new operation.
    • There is now a link to the selected bitbucket repository in the Workspace details dialog.
    • New auto-compile checkbox to allow disabling the auto-compile feature.
    • Keystroke combination is now shown in the tooltip of relevant buttons.
    • More prominent <!-- Generated by TethysL --> snippet in generated XML.
    • Last but not least, first merge of couple of TethysL sources and corresponding generated XML in the official mission repo; thanks Ben!

0.9.3 - 2018-03-14

  • Editor

    • Toward proposed integration mechanism:
      • Several significant additions and new integration with Bitbucket (#12).
      • New "workspace" element (two types: 'Bitbucket' and 'Shared').
      • New repository https://bitbucket.org/mbari/tethysl-missions-test created for testing integration with Bitbucket. Some LRAUV members have already been given 'write' access. Let Carlos know if you need access.
    • New option to open a recently edited mission file (Ctrl-R).
  • Language:

    • New keyword elapsed_ for the case of "Elapsed" with no arg (#10)
    • Translation of test code in regression test files (via new test_code and valgrind keywords). This includes Python syntax hightlighing in the editor (screenshot). (#11)

0.9.1 - 2018-02-26

  • TethysL compiler (ie., translator to xml) now considered to be complete. Next, we will be focusing on improving the editor itself as well as determining and implementing a strategy for integration with the rest of the LRAUV/TethysDash system.

  • Automatic xml-to-tethysl translation now covers most XML constructs. This translation is mainly intended to facilitate the transition to TethysL. Please do not expect this feature to be fully completed; feel free to further edit any of the generated scripts as needed.

0.9.0 - 2018-01-29

  • TethysL source prettifier feature completed
    • New button in UI and Ctrl-Y as keyboard shortcut.
    • The reformatted source is automatically compiled; an alert will be shown in case this results in a different XML as this would indicate a bug in the reformatting.
    • New command-line program to process all sources under a directory.

0.0.8 - 2018-01-22

  • More consistent generation of XML.
  • Some minor UI adjustments.
  • various fixes and validation enhancements

0.0.8 - 2018-01-17

  • allow to insert file multiple times (but of course, not in a recursive/nested manner).
    • Concrete case: Maintenance/new_tank_ballast_and_trim
  • show line/col (instead of index) in erroneous insertion
  • adjustment in validation of IsNan (which continues to be a bit lenient)
  • some TethysL sources updated (manually):
    • Insert/AbortDrift
    • Insert/newBallastAndTrim
    • Insert/Science
    • Maintenance/new_tank_ballast_and_trim
  • highlight special comment lines: those starting with # TODO and those with #!!!
  • for development convenience, only the "default" and "abcdef" themes are now available

0.0.7 - 2017-08-14

  • (internal) use scala 2.12, update dependencies, use carueda.cfg.

0.0.6 - 2017-08-07

  • additional text in create script prompt message
  • internal (some code refactoring)

0.0.5 - 2017-07-20

  • Some examples adjusted (eg., _examples/SysLog).
  • Adjustments in some validations (call 'refId' now also checks aggregates in the same file; the repeat in run in sequence repeat=xxx is now validated).
  • Unary expression: one can now write Not IsNan something.
  • Diff View: new 'Prettify' buttons, one on each side of the view, to further facilitate the comparison. The button runs the traditional 'makePretty' utility in the backend and updates the corresponding panel in the view with the result.
  • In translation to xml: separate expression structure for easier inspection

0.0.4 - 2017-07-17

  • Comments are no longer translated to XML
  • UI adjustments:
    • most recently loaded scripts now at the top of the script selection dropdown
    • confirmation to discard unsaved edits before 'refresh', 'create', and change in selected script

0.0.3 - 2017-07-10

  • First version for users to start testing and providing feedback.

0.0.2 2017-03/06

  • Lots of additions and adjustments; improved validation and translation.

0.0.1 - 2016-08-12

  • First prototype. Many thanks to our MBARI Summer Intern, Eli Meckler, for his great contribution to this project.