Skip to content

Releases: lukoplt/easel

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 22 Jul 20:11
feat(rules): formula correctness checks (PF0002-PF0005) + PA1029-PA1031

Static substitutes for the App checker's formula (binding) errors, built
without live binding:

- PF0002 unknown-navigation-target: Navigate/SetFocus to a name defined
  nowhere in the app (error)
- PF0003 possible-typo: identifier one edit away from a defined symbol
  ("txtFiltr - did you mean txtFilter?")
- PF0004 wrong-argument-count: curated catalog of ~150 built-in function
  signatures; functions outside the catalog are never flagged (error)
- PF0005 unknown-function: not a built-in, not user-defined; configurable
  allow list

New quality rules:
- PA1029 large-media: embedded asset above max-kb (default 300)
- PA1030 low-contrast: Color vs Fill below WCAG AA 4.5:1, only for opaque
  RGBA literal pairs - never guesses inherited colors
- PA1031 unused-datasource: bound but never referenced; Studio sample
  sources (ComboBoxSample etc.) exempt
- PA1001 also detects the in/exactin operator in queries over data sources

False-positive engineering, verified against two real production apps:
new FxNameClassifier (Easel.Fx) distinguishes structural references
(dotted base, bare name outside record scope) from entity-column mentions
(bare inside Filter/LookUp scope, DataSourceInfo-style column arguments),
shared by PF0003 and PA1019; singular/plural pairs (Operator/Operators)
exempt from typo detection. Result on both real apps: zero false PF
findings, PA1019/PA1031 reduced to genuine hits only.

Fix procedures added for PF0002-PF0005. Docs and README updated;
203/203 tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 18 Jul 22:43
4b46b13
fix: address full code review findings (#1)

Preserve YAML during symbol renames, make analysis scope-aware, harden secret detection and cancellation, and prevent partial public releases. Add regression coverage for the corrected edge cases.

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 17 Jul 20:53
ci(release): fix parallel upload race + wrong repo URL

- Release binaries: build each platform as an artifact, then a single release job
  uploads them all at once. Prevents the concurrent-write race in action-gh-release
  (osx-arm64 failed with "Not Found", fail-fast then cancelled win-x64). Add
  fail-fast: false so one platform failure never cancels the others.
- Fix placeholder repo URL easel/easel -> lukoplt/easel across manifests, docs,
  SARIF informationUri and package metadata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 17 Jul 20:47
build: change NuGet PackageId Easel.Tool -> EaselCli

Easel.Tool returns 409 Conflict on push for every version (ID reserved/taken on
nuget.org, not owned by this account). Switch the package id to EaselCli (the CLI
command stays `easel`). Updates README, GitHub Action, Azure DevOps task and docs;
winget keeps its dotted identifier (separate registry, not affected).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 17 Jul 20:40
docs: attribution — Made with <3 by Lukáš Oplt

- README + LICENSE tagline.
- LICENSE copyright holder and package Authors set to Lukáš Oplt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 17 Jul 12:10
ci(release): harden NuGet publish per security review

- Pass the Trusted-Publishing key via env instead of inline ${{ }} in run:
  (avoids secret exposure on the command line and expression injection).
- Pin third-party actions to full commit SHAs: NuGet/login (v1) and
  softprops/action-gh-release (v2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 11:20
refactor: rename tool and projects pacheck -> easel

Rebrand the tool and CLI command to "easel" and the solution projects to Easel.*:

- Namespaces PaCheck.* -> Easel.*; project folders/csproj + solution renamed.
- CLI command, AssemblyName and PackageId: pacheck/PaCheck.Tool -> easel/Easel.Tool.
- Config file .pacheck.yml -> .easel.yml; baseline .pacheck-baseline.json ->
  .easel-baseline.json; SARIF fingerprint key pacheck/v1 -> easel/v1; temp dir,
  env vars (EASEL_*), docs, CI workflows, GitHub Action, Azure DevOps task and
  winget/Homebrew manifests all updated.
- Rule ids (PAxxxx/PFxxxx) unchanged — they denote Power Apps, not the tool name.

Build clean (0 warnings), 91 tests pass, verified end-to-end incl. real .msapp.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>