Skip to content

fix: pick up @alcops/core 0.2.0 (AL 18 flat VSIX layout); correct version docs - #48

Merged
Arthurvdv merged 4 commits into
mainfrom
fix/task-version-stamping-and-docs
Sep 9, 2026
Merged

Arthurvdv merged 4 commits into
mainfrom
fix/task-version-stamping-and-docs

Conversation

@Arthurvdv

@Arthurvdv Arthurvdv commented Sep 9, 2026

Copy link
Copy Markdown
Member

Picks up the AL 18 flat VSIX layout fix from @alcops/core 0.2.0 and fixes three documentation issues surfaced while diagnosing #47. Diff against main: package.json, package-lock.json, README.md, overview.md, CONTRIBUTING.md, .github/ARCHITECTURE.md. No workflow or task.json changes.

Problem

  1. detectFrom: marketplace fails on AL Language 18.0.2668733 because the VSIX moved Microsoft.Dynamics.Nav.CodeAnalysis.dll from extension/bin/Analyzers/ to a flat extension/bin/ ([Bug]: Entry not found in ZIP: extension/bin/Analyzers/Microsoft.Dynamics.Nav.CodeAnalysis.dll #47). The task bundles @alcops/core 0.1.2, which only knows the legacy path.
  2. The task log header reads Version: 1.0.5 while the extension on the Marketplace is 2.0.5, which looks like a version mismatch. It is not a bug: the task Major is deliberately pinned, and nothing documented that for users.
  3. README.md documented the version input as latest / preview, but the task actually accepts latest / prerelease (see tasks/download/task.json helpMarkDown).

What was considered and rejected

The first commit on this branch (29fae26) stamped .version.Major from GitVersion and set "Major": 2 in all five task.json files, so the header would read 2.0.6. That is a breaking change: in Azure Pipelines the task Major is the @N in - task: ALCopsDownloadAnalyzers@1, so the next release would publish @2 and every pipeline pinned to @1 would fail to resolve the task unless a major-1 copy kept shipping alongside.

9d4fced reverts it. The task version stays independent of the extension version, matching what .github/ARCHITECTURE.md already described, and the behaviour is now explained in the user-facing docs instead.

Changes

  • package.json / package-lock.json: @alcops/core ^0.1.2^0.2.0 (fix: support AL 18 flat VSIX bin layout for marketplace/bc-artifact TFM detection npm-package#7). The lockfile change is limited to the @alcops/core entry.
  • README.md: version input row now reads latest, prerelease.
  • README.md + overview.md: note that both VSIX layouts of the AL Language extension are supported from @alcops/core 0.2.0 (the flat extension/bin/ used by AL 18+ / BC 29 and the legacy extension/bin/Analyzers/), plus a heads-up that compiling with AL 18 needs a .NET 10 runtime on the agent (out of scope here).
  • README.md: new Versioning subsection under the task reference explaining that @1 is the task major version, that Version: 1.x.y in the log is the task's own version, and that it is intentionally independent of the 2.x extension version.
  • overview.md: one-line version of the same note under Quick Start, where the Marketplace shows the 2.x extension version next to YAML that says @1.
  • .github/ARCHITECTURE.md + CONTRIBUTING.md: spell out why task Major is pinned and what that means for the log header.

Verification

Run locally on Windows against the final branch state (after the bump):

  • npx eslint shared/ tasks/*/src/ (expanded paths) — clean. npm run lint itself fails on Windows because npm shells out through cmd.exe, which does not expand the tasks/*/src/ glob; unaffected on the Linux CI runners.
  • npx vitest run — 45/46 pass. The one failure, tests/download/task-runner.test.ts > calls executeDownload with detectUsing input, is pre-existing on main and Windows-only: the test asserts outputDir: '/build/src/.alcops' while path.join yields \build\src\.alcops. Not touched here.
  • npm run build — clean.
  • npm run bundle — 5 task bundles produced; tasks/download/dist/index.js contains the new multi-candidate VSIX probing from core 0.2.0.
  • npm ls @alcops/core@alcops/core@0.2.0.
  • npx tfx extension create --manifest-globs vss-extension.json --output-path ./out — VSIX created successfully (run before the bump; CI repeats it).

Release

Merging and running "Release: Azure DevOps Extension" publishes 2.0.6 with the fix. The task header stays Version: 1.x.y by design.

Fixes #47

🤖 Generated with Claude Code

Arthurvdv and others added 2 commits September 9, 2026 11:17
…docs

The task log header showed `Version: 1.0.5` while the extension shipped as
2.0.5. Both "Stamp task versions" steps (`.github/workflows/ci.yml` for the
dev publish and `.github/workflows/release.yml` for the production release)
only stamped `.version.Minor` and `.version.Patch` from GitVersion, so the
`Major` stayed at the hardcoded `1` in `tasks/*/task.json` and never followed
the extension version. Add `.version.Major` from `steps.gitversion.outputs.major`
to both jq expressions and set `"Major": 2` in all five `tasks/*/task.json`
so local and trial builds match what CI stamps.

Note for reviewers: the task `Major` is the `@N` that consumers reference in
YAML, so this makes the next release `ALCopsDownloadAnalyzers@2`. See the PR
description for the open decision.

Docs:
- `README.md`: the `version` input accepts `latest` / `prerelease`, not
  `latest` / `preview` (matches `tasks/download/task.json`).
- `README.md` and `overview.md`: note that the AL 18+ (BC 29) flat
  `extension/bin/` VSIX layout is supported from `@alcops/core` 0.2.1, and
  that compiling with AL 18 needs a .NET 10 runtime on the agent.
- `CONTRIBUTING.md` and `.github/ARCHITECTURE.md`: describe the new
  Major + Minor + Patch stamping.

Refs: #47

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…oning

Reverts the task `Major` stamping from 29fae26. In Azure Pipelines the task
`Major` is the `@N` consumers reference in YAML, so stamping it from GitVersion
would publish `ALCopsDownloadAnalyzers@2` and break every pipeline pinned to
`@1`. `Version: 1.x.y` in the log header is the task's own version and is
intentionally independent of the extension version on the Marketplace (2.x.y),
as `.github/ARCHITECTURE.md` already documented.

- `.github/workflows/ci.yml` and `.github/workflows/release.yml`: restore the
  original Minor/Patch-only jq expressions.
- `tasks/*/task.json`: restore `"Major": 1` in all five tasks.
- `CONTRIBUTING.md` and `.github/ARCHITECTURE.md`: keep the Major-pinned
  wording and spell out why, plus the task-vs-extension version relationship.
- `README.md`: new "Versioning" subsection under the task reference, and
  `overview.md`: one-line note, both explaining that `Version: 1.x.y` on a 2.x
  extension is expected rather than a mismatch.

The docs fixes from 29fae26 stay: the `version` input accepts `prerelease`
(not `preview`), and the AL 18+ (BC 29) flat `extension/bin/` VSIX layout /
.NET 10 runtime notes.

Refs: #47

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Arthurvdv Arthurvdv changed the title fix: stamp task Major version from GitVersion; correct version input docs docs: correct version input values, document task vs extension versioning, note AL 18 flat VSIX layout Sep 9, 2026
@alcops/core 0.2.0 probes extension/bin/ before extension/bin/Analyzers/
when reading the CodeAnalysis DLL from the AL Language VSIX, which fixes
`detectFrom: marketplace` on AL 18+. Docs updated to reference 0.2.0.

Refs: #47

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Arthurvdv Arthurvdv changed the title docs: correct version input values, document task vs extension versioning, note AL 18 flat VSIX layout fix: pick up @alcops/core 0.2.0 (AL 18 flat VSIX layout); correct version docs Sep 9, 2026
@Arthurvdv
Arthurvdv marked this pull request as ready for review September 9, 2026 10:24
Resolves package.json / package-lock.json conflicts with the dependabot
bumps on main; keeps @alcops/core at ^0.2.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Arthurvdv
Arthurvdv merged commit 50eaf43 into main Sep 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Entry not found in ZIP: extension/bin/Analyzers/Microsoft.Dynamics.Nav.CodeAnalysis.dll

1 participant