Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 06:08
· 62 commits to main since this release

Added

  • tx get is now the single read command. A path naming one object shows its properties; a
    wildcard ("Sa*"), a container (Sales/Measures), or no path lists every match. New options
    select and analyze over the same path resolution: --ls, --where Prop=Value
    (case-insensitive, * wildcard, repeat to AND), --deps [upstream|downstream] with --deep
    and --max-depth, --unused with --hidden, --paths-only, and --no-multiline. tx ls
    and tx deps keep their flags and are now shortcuts for get --ls and get --deps /
    get --unused, with identical output (#335).
  • BPA rule sources beyond --rules: the bpa.rules config key and the TOMIX_BPA_RULES
    environment variable add team rule files to bpa run, bpa rules list/show/ignore, and
    the deploy BPA gate. bpa run prints a "Rules loaded" line saying where every rule came
    from and how many a later source overrode (JSON: ruleSources) (#233).
  • --ruleset presets for default-off rule categories (for example localization), which
    neither standard nor full includes. Repeat --ruleset or comma-separate it to combine
    presets (#233).
  • tx bpa rules ignore --user and unignore --user turn a rule off (or back on) just for you,
    on this machine, for every model; without --user they still write the model's ignore
    annotation. bpa rules list --ignored shows rules ignored at either level, and bpa run
    says which level ignored a rule (JSON: userIgnoredRules). unignore warns when the other
    level still ignores the rule (TOMIX_BPA_RULE_STILL_IGNORED_BY_MODEL,
    TOMIX_BPA_RULE_STILL_IGNORED_BY_USER) or when the rule isn't in the ruleset that runs
    (TOMIX_BPA_RULE_NOT_IN_RULESET) (#233).

Changed

  • Breaking: tx session is removed; tx connect covers it. tx connect now names the
    session holding the connection (JSON: a session object with id, kind, scope, path),
    tx connect --clear replaces session clear, and tx connect --clear --all forgets the
    connection in every session. session prune and session list have no replacement: each
    tx connect <target> now removes session files whose folder no longer exists (and legacy
    pid-* sessions of exited shells), and tx doctor reports any stale ones left.
  • Breaking: tx deploy and the partition-risky tx refresh variants (--refresh-type clearvalues, --skip-refresh-policy, --effective-date, --policy-only) preview by
    default. Each shows its preview (the deploy diff, or the refresh TMSL or policy-only
    summary), then asks before applying. The preview and the apply share one connection, so
    the model opens and the deploy BPA gate runs once.
    Where it cannot prompt (--non-interactive, --quiet, JSON or CSV output, redirected input)
    it stops after the preview and exits with the new exit code 3, instead of failing with
    TOMIX_CONFIRMATION_REQUIRED. Pass --yes to apply without the preview. Routine refreshes
    still run without asking. deploy --xmla only writes a script, so it no longer asks.
  • Breaking: tx bpa run --fix without --save, --save-to, or --stage is a preview: it
    lists each pending fix with before and after values, reports fixesApplied: 0, and judges the
    exit code on the model as it is.
  • tx rm, tx replace, and tx bpa run --fix --allow-delete ask for confirmation only when
    they write (--save, --save-to, --stage, or --revert). A preview no longer asks. A
    preview of rm on an object that DAX still references reports the dependents and hints
    --force instead of failing.
  • Breaking: JSON output says preview where it said dryRun: mutation results drop the
    dryRun field and the dryRun status (status is preview), bpa run reports preview
    instead of dryRun, and deploy reports status: "preview" instead of "dry-run". The refresh --policy-only preview's
    CSV column dry_run is now preview.
  • tx get Measures and other bare container paths now list the container instead of failing
    with TOMIX_OBJECT_NOT_FOUND, and tx get ./model lists the model's tables. --query or
    --deps on a path that selects a set fails with TOMIX_SINGLE_OBJECT_REQUIRED (#335).
  • tx bpa rules list shows each rule ID once, from the source that wins as in bpa run, and
    says what a team or model rule overrides (JSON: overrides); bpa rules show still prints
    every source's copy. Without a model, list and show use the active local connection (#233).
  • tx bpa rules disable and enable are hidden; they still work and do the same as
    ignore --user and unignore --user (#233).
  • Internal: validate and bpa rules now share one rule shape and one severity scale, and every
    validate issue code comes from a documented rule catalog. Output is unchanged (#230).

Fixed

  • A quoted folder path with a trailing backslash, such as tx connect '.\My Model.SemanticModel\'
    in Windows PowerShell 5.1 or ".\My Model.SemanticModel\" in cmd.exe, no longer fails with a
    stray " at the end of the path. Windows reads \" as a literal quote; tx now restores the
    path when the text before the quote is an existing folder.
  • tx format and tx add no longer wait on stdin when it is redirected but nothing is piped,
    as in a CI step, an ssh session, or a script whose parent holds stdin open. format reads a
    piped expression only when no model, --path, --save, --save-to, --stage, or
    --revert is given, so tx format ./model --save no longer blocks or formats stray stdin
    instead of the model. add reads stdin only for -e -, as documented; a bare pipe into
    add is no longer read. tx query still reads a piped query when none is given.
  • tx deploy without -d now previews the database it would actually write (named after the
    model) instead of skipping the diff and showing the model path as the target. A model with no
    name of its own, such as a bare TMDL folder, fails with TOMIX_DEPLOY_NO_TARGET asking for
    -d instead of a serializer error.

Removed

  • Breaking: --dry-run is removed from every command (add, set, mv, rm, replace,
    format, bpa run, deploy, refresh, session prune). Model edits already preview unless
    you pass --save or --stage, and the commands that change a target now preview by default.
    The TOMIX_BPA_DRY_RUN_REQUIRES_FIX code is gone with it.
  • Breaking: tx init, tx config init, tx bpa rules init, and tx connect -w take
    --overwrite instead of --force to replace an existing target, matching --overwrite on the
    save commands. --force now only ever bypasses a check. Recover a corrupt config with tx config init --overwrite.
  • Breaking: tx deploy --force is removed. It never had an effect: no deploy check read it.
    Use --skip-bpa to bypass the BPA gate.

What's Changed

  • feat(get): make get the single read pipeline; ls and deps become shortcuts by @bgarcevic in #335
  • chore(agents): remove template dotnet skills that contradict repo conventions by @bgarcevic in #337
  • feat(connect)!: fold tx session into tx connect by @bgarcevic in #339
  • feat!: preview by default instead of --dry-run by @bgarcevic in #338
  • docs(design): ADR 0001 for the live model session by @bgarcevic in #373
  • feat(bpa): rule-source chain, attribution, default-off presets, and ignore --user (#233) by @bgarcevic in #340
  • fix(cli): don't block on a redirected stdin that nothing was piped into by @bgarcevic in #375
  • refactor(rules): share one rule shape across validate and bpa by @bgarcevic in #376
  • fix(cli): repair quoted Windows paths with a trailing backslash by @bgarcevic in #377
  • chore(release): prepare 0.8.0 by @github-actions[bot] in #336

Full Changelog: v0.7.0...v0.8.0