• v7.13.0 Stable

    gitea-actions released this 2026-09-03 14:48:53 +00:00 | 152 commits to main since this release

    Data Controller for SAS — v7.13.0

    Released 3 September 2026.

    This release brings a major upgrade to the Data Editor: live spreadsheet-style formulas powered by HyperFormula, four new validation rules, native date/time pickers, a paste-validation overlay, and a long list of editor robustness fixes. It also delivers significant Viya deployment and configurator improvements, expanded CAS support, a new SAS VA embed mode, resizable viewboxes, and enhanced licensing handling.

    For installation / upgrade instructions, visit https://docs.datacontroller.io/


    Highlights

    Live Formulas in the Editor

    The Data Editor now supports live, spreadsheet-style formulas. Configure a column with a HARDFORMULA or SOFTFORMULA validation rule and the editor will evaluate the formula in real time using HyperFormula, showing the computed value in each cell. Formula-aware behaviour has been extended across the editor:

    • Live formulas are now evaluated for any character column, not just those with explicit HARDFORMULA / SOFTFORMULA rules.
    • When you paste a formula, column names are automatically translated to the correct cell references.
    • A cell overwritten by a formula is flagged so you can revert it; cell revert has been generalised to any overwritten value, not just formulas.
    • The primary key and numeric columns now resolve a live formula to its computed value (not the raw formula text) when submitted.
    • A dedicated DC.ROW_STATUS column is now driven live by formulas, and has been hardened against collisions with real columns of that name.
    • Formula-looking values pasted from Excel are auto-escaped so they are treated as data, not evaluated as formulas, unless you explicitly choose "Apply as formula".

    New Validation Rules

    Four new validation rules have been added (issue #241), with a migration script to introduce them:

    • READONLY — the rule value becomes the default inserted when adding a row; the column is marked read-only in the editor.
    • HIDDEN — the rule value is the default on row insert; the column is invisible in the editor but still submitted on save.
    • ROUND — rounds a numeric value to a given number of digits (like the Excel ROUND function). This changes the stored value.
    • NUMBER_FORMAT — a display-only format applied via the Intl.NumberFormat object.

    Editor Experience

    • Native date / time / datetime pickers when editing a cell, replacing the previous input handling.
    • Date / time / datetime columns migrated to Handsontable 17 Intl cell types for consistent, locale-aware editing.
    • A paste-validation overlay now appears on paste, letting you cancel or confirm before changes are applied; autofilled cells are validated too.
    • Row-header status cells are colour-coded, and the "modified" symbol is now ± for clearer visual feedback.
    • The column-info dropdown text can now be selected and copied.
    • Table-header buttons and titles are sized to their content instead of fixed grid thirds.
    • Multi-column sort has been restored and now issues a single call instead of a loop.

    SAS VA Embed Mode

    A new embed mode lets you surface Data Controller inside a SAS Visual Analytics data-driven content object. Append ?embed=va to the URL. Filter modes and a pending-changes UX are included.

    Resizable Viewboxes

    Viewboxes can now be resized by dragging on any of the four edges or corners.

    Licensing Improvements

    • Combined-key paste support: paste a multi-field licence key in one go.
    • Object-format feature flags and a live key preview are now supported.
    • The app now warns and blocks applying a licence key generated for the wrong protocol (http vs https).

    Viya Deployment & Configurator

    • The Viya configurator tab has been overhauled (issue #303): the Groups dropdown starts with the logged-in user's groups; the Contexts dropdown is grouped by batch user id (contexts without batch ids appear last); and a new "verify" button calls the startup service to confirm it is running before switching to the regular flow.
    • The automatic deploy flow now shows an abort modal when the getAdminGroup response is missing items, instead of failing silently (issue #200).
    • The login page UX has been improved (issue #125): better input contrast and validation so submitting empty fields no longer produces an infinite spinner.
    • Deploy now includes Viya deploy checks, startup diagnostics, and a chunked deploy script for reliability on larger Viya installations.
    • The compute context is auto-fixed on deploy, and ComputeContextDetails has been extended with Viya response fields. A note clarifies that the debug comment added during deploy is permanent.

    CAS Support

    • The REPLACE load type is now supported on CAS tables, with accompanying documentation.
    • Temporary casuser tables are now cleaned up correctly in error conditions.

    Stage Page

    • A Formatted / Unformatted toggle has been added to the staging page, so you can view staged data either way.

    Bug Fixes

    Editor & Formulas

    • Fixed formula $-substitution corruption and a desync between sorted grids, rows, and formulas.
    • Fixed missing columns being turned into undefined, and corrected column lookup for sparse rows.
    • A reverted cell is now re-marked as auto-escaped so "Apply as formula" works again.
    • The internal dc.row_status marker is no longer submitted to the backend.
    • Sort state is now cleared before reading cells, preserving the original order on cancel.
    • EDIT_STATUS no longer collides with a real column of that name.

    Backend / SAS

    • Formats now arrive from the backend in getstagetable.sas.
    • Regex metacharacters in a context name are escaped before prxchange.
    • A utility macro is now used for webout.

    Security & Dependencies

    • Pinned fast-uri to 3.1.7 to close high-severity SSRF / host-confusion advisories.
    • Resolved npm audit vulnerabilities across production dependencies via targeted lockfile patches (including a scoped brace-expansion override and a nanoid override to 3.3.18).
    • Aligned all @angular/* packages to a single lockstep version; pinned @handsontable/angular-wrapper and Handsontable to 18.0.0; pinned babel-loader to resolve a peer conflict; regenerated the lockfile under Node 24 with strict peer-dep resolution to fix npm ci in CI.

    Core

    • The bundled SASjs core has been bumped to v5 (a breaking change for anyone consuming core directly). The bump includes an mp_validate fix.

    Upgrade Notes

    • This release ships SASjs core v5. If you maintain a custom build pipeline that references core directly, review the core v5 changes before upgrading.
    • The new validation rules (READONLY, HIDDEN, ROUND, NUMBER_FORMAT) ship with a migration script; run it to register the rules in MPE_VALIDATIONS.
    • Handsontable and @handsontable/angular-wrapper are now pinned to 18.0.0.

    Full commit-level changelog: https://git.datacontroller.io/dc/dc/compare/v7.12.0...v7.13.0

    Downloads