Repository navigation
v0.8.0
Added
tx getis 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,--unusedwith--hidden,--paths-only, and--no-multiline.tx ls
andtx depskeep their flags and are now shortcuts forget --lsandget --deps/
get --unused, with identical output (#335).- BPA rule sources beyond
--rules: thebpa.rulesconfig key and theTOMIX_BPA_RULES
environment variable add team rule files tobpa run,bpa rules list/show/ignore, and
thedeployBPA gate.bpa runprints a "Rules loaded" line saying where every rule came
from and how many a later source overrode (JSON:ruleSources) (#233). --rulesetpresets for default-off rule categories (for examplelocalization), which
neitherstandardnorfullincludes. Repeat--rulesetor comma-separate it to combine
presets (#233).tx bpa rules ignore --userandunignore --userturn a rule off (or back on) just for you,
on this machine, for every model; without--userthey still write the model's ignore
annotation.bpa rules list --ignoredshows rules ignored at either level, andbpa run
says which level ignored a rule (JSON:userIgnoredRules).unignorewarns 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 sessionis removed;tx connectcovers it.tx connectnow names the
session holding the connection (JSON: asessionobject withid,kind,scope,path),
tx connect --clearreplacessession clear, andtx connect --clear --allforgets the
connection in every session.session pruneandsession listhave no replacement: each
tx connect <target>now removes session files whose folder no longer exists (and legacy
pid-*sessions of exited shells), andtx doctorreports any stale ones left. - Breaking:
tx deployand the partition-riskytx refreshvariants (--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 code3, instead of failing with
TOMIX_CONFIRMATION_REQUIRED. Pass--yesto apply without the preview. Routine refreshes
still run without asking.deploy --xmlaonly writes a script, so it no longer asks. - Breaking:
tx bpa run --fixwithout--save,--save-to, or--stageis a preview: it
lists each pending fix with before and after values, reportsfixesApplied: 0, and judges the
exit code on the model as it is. tx rm,tx replace, andtx bpa run --fix --allow-deleteask for confirmation only when
they write (--save,--save-to,--stage, or--revert). A preview no longer asks. A
preview ofrmon an object that DAX still references reports the dependents and hints
--forceinstead of failing.- Breaking: JSON output says
previewwhere it saiddryRun: mutation results drop the
dryRunfield and thedryRunstatus (statusispreview),bpa runreportspreview
instead ofdryRun, anddeployreportsstatus: "preview"instead of"dry-run". Therefresh --policy-onlypreview's
CSV columndry_runis nowpreview. tx get Measuresand other bare container paths now list the container instead of failing
withTOMIX_OBJECT_NOT_FOUND, andtx get ./modellists the model's tables.--queryor
--depson a path that selects a set fails withTOMIX_SINGLE_OBJECT_REQUIRED(#335).tx bpa rules listshows each rule ID once, from the source that wins as inbpa run, and
says what a team or model rule overrides (JSON:overrides);bpa rules showstill prints
every source's copy. Without a model,listandshowuse the active local connection (#233).tx bpa rules disableandenableare hidden; they still work and do the same as
ignore --userandunignore --user(#233).- Internal:
validateandbparules now share one rule shape and one severity scale, and every
validateissue 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;txnow restores the
path when the text before the quote is an existing folder. tx formatandtx addno 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.formatreads a
piped expression only when no model,--path,--save,--save-to,--stage, or
--revertis given, sotx format ./model --saveno longer blocks or formats stray stdin
instead of the model.addreads stdin only for-e -, as documented; a bare pipe into
addis no longer read.tx querystill reads a piped query when none is given.tx deploywithout-dnow 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 withTOMIX_DEPLOY_NO_TARGETasking for
-dinstead of a serializer error.
Removed
- Breaking:
--dry-runis removed from every command (add,set,mv,rm,replace,
format,bpa run,deploy,refresh,session prune). Model edits already preview unless
you pass--saveor--stage, and the commands that change a target now preview by default.
TheTOMIX_BPA_DRY_RUN_REQUIRES_FIXcode is gone with it. - Breaking:
tx init,tx config init,tx bpa rules init, andtx connect -wtake
--overwriteinstead of--forceto replace an existing target, matching--overwriteon the
save commands.--forcenow only ever bypasses a check. Recover a corrupt config withtx config init --overwrite. - Breaking:
tx deploy --forceis removed. It never had an effect: no deploy check read it.
Use--skip-bpato 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