Version 3.6.0 ============= Bugs Fixed ---------- * When printing workshop instructions only the first page would be printed. This has only been fixed for Hugo renderer and not the deprecated classic renderer. * When using the `terminal:execute-all` clickable action, if `clear` was set to `true`, the terminals were not being cleared. New Features ------------ * It is now possible to restrict permissions given to the session manager so that it does not have full cluster admin access. Workshops which only need access to the session namespace will still work, but workshops will not be able to be setup to use cluster wide resources such as custom resources for operators. For more details see [Restricting session manager permissions](restricting-session-manager-permissions). * Examiner test scripts can now be provided as part of an extension package. These should be placed under the `examiner/tests` directory of the package. * New editor clickable actions have been added: `editor:create-file` for creating a new file or overwriting an existing file, `editor:insert-lines-after-line` for inserting lines after a specified line number, and `editor:replace-matching-text` for finding and replacing text in a single step without needing to first select the text and then replace it separately. * New editor clickable actions have been added: `editor:delete-lines-in-range` for deleting a range of lines based on line number, `editor:delete-matching-lines` for delete a range of lines around matched text, and `editor:replace-lines-in-range` for replace a range of lines with new content. * A new editor clickable action `editor:select-lines-in-range` has been added for selecting a range of lines by line number. This can be used with `editor:replace-text-selection` to replace specific lines. * New editor clickable actions have been added for file management: `editor:copy-file` for copying a file to a new location, `editor:rename-file` for renaming or moving a file, `editor:close-file` for closing a file tab in the editor, and `editor:delete-file` for deleting a file from the file system. * A new editor clickable action `editor:create-directory` has been added for creating a directory on the file system. * When using editor clickable actions which accept `start` or `stop` params, you can now supply negative values. These will be interpreted as offset from the end of the file. * When using editor clickable actions which accept `before` or `after`, if you supply `-1`, it will be interpreted as all lines before or after. * You can now set `toggle: false` on `section:end` clickable action. In this case if have prior clickable action which cascades to `section:end`, the section will not be closed. If also have `cascade` set on `section:end` then, clickable action following `section:end` will still be triggered. Thus can automatically trigger clickable action after a section without closing the section. * You can now set `open: true` on `section:begin` and the section will start in the expanded state. * New YAML editing clickable actions have been added for structured manipulation of YAML files with comment preservation: `editor:set-yaml-value` for setting or updating a value at a YAML path, `editor:add-yaml-item` for appending an item to a sequence, `editor:insert-yaml-item` for inserting an item at a specific position in a sequence, `editor:replace-yaml-item` for replacing a sequence item by index or attribute match, `editor:delete-yaml-value` for deleting a key or sequence item, and `editor:merge-yaml-values` for merging key-value pairs into an existing mapping. These use the YAML library's document API for round-trip editing, correctly handling all YAML styles including flow/inline syntax. * New YAML clickable action `editor:select-yaml-path` for selecting part of a YAML definition based on the path to the object. * New editor clickable actions have been added for managing terminals within the VS Code editor: `editor:open-terminal` for opening or creating a named terminal, `editor:close-terminal` for closing a terminal, `editor:send-to-terminal` for sending text or commands to a terminal with optional newline control via the `endl` property, `editor:interrupt-terminal` for sending an interrupt signal, and `editor:clear-terminal` for clearing the terminal buffer. These are distinct from the dashboard `terminal:*` actions which manage terminals on the terminals tab. Features Changed ---------------- * When using the test examiner feature, test scripts can now be put in a sub directory of the `/opt/workshop/examiner/tests` directory. The name of the sub directory path should then prefix the test name when using the clickable action for the test. Checks when running test examiner scripts have also been beefed up to ensure that directory traversal cannot be used to execute a program which resides outside of the tests directories. * Enhanced session and terminal reconnection logic to prevent rapid reconnection attempts. The system now implements increasing delays between retry attempts using exponential backoff, eventually ceasing reconnection efforts entirely after a specified duration. This prevents excessive browser activity when session connectivity is disrupted. * When using `cooldown` value for any clickable action, you can now use `-1` to indicate an infinite period of time, ie., block triggering clickable action again. * When using `retries` value with `examiner:execute-test` clickable action, you can now use `-1` to indicate an infinite number of retries. * The `editor:select-matching-text` clickable action now handles multi line matches for exact text match and regex. Features Deprecated ------------------- * The `editor:insert-value-into-yaml` clickable action is now deprecated and will be removed in a future version. This clickable function never functioned properly and provided limit use. Use the new `editor:yaml` set of clickable actions instead.