Skip to content

fix(codebuilder-e2e): collect only modern VSIX, skip legacy dupe - W-23385030 - #7846

Draft
kylewalke wants to merge 131 commits into
jh/W-23385030-codebuilder-e2efrom
jh/W-23385030-cb-e2e-vsix-dedupe
Draft

fix(codebuilder-e2e): collect only modern VSIX, skip legacy dupe - W-23385030#7846
kylewalke wants to merge 131 commits into
jh/W-23385030-codebuilder-e2efrom
jh/W-23385030-cb-e2e-vsix-dedupe

Conversation

@kylewalke

Copy link
Copy Markdown
Contributor

What

The local Code Builder e2e run (npm run test:container:local, build-from-working-tree path) failed the extension version gate with expected exactly 1 override dir, found 2.

npm run vscode:package produces two VSIX for core, lwc, lightning, apex-debugger, and apex-oas — a modern one (e.g. 67.6.0) and a legacy one (e.g. 67.0.0). The VSIX-collection loop grabbed every *.vsix per package dir, so the swap unpacked two override dirs per extension and the verify gate rejected the mixed versions.

Fix

Collect only each package's own-version (modern) VSIX — read name+version from each package's package.json and match <name>-<version>.vsix, skipping the legacy dupe. Verified locally: 17 VSIX collected (was 22), version gate passes.

Also updates the playwright-e2e skill doc to describe the dedupe behavior.

Note: this branch is cut from the e2e branch tip and also carries the develop→e2e merge commit, so the diff will show that merge until origin's e2e base is updated.

W-23385030

mshanemc and others added 30 commits July 9, 2026 13:24
…flows - W-23195710 (#7716)

* fix(ci): revert coreE2E background/wait parallelization - W-23195710

#7676 added `background: true` to the Playwright-install step and a
`wait: playwright` step to parallelize the cache-miss leg. Although that
syntax matches the GitHub workflow-syntax docs for background/wait steps,
GitHub's parser rejects it for this repo: every push produced a 0s startup
failure with zero jobs and no check-run, so Core E2E silently stopped
appearing on PRs.

Revert to the sequential form (remove `background:`, `id: playwright`, and
the wait step) so the workflow parses and Core E2E shows on PRs again. The
parallelization can be revisited once the background/wait step support is
confirmed working in this repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(ci): revert publish background/wait parallelization - W-23195719

#7681 added `background: true` + a `wait: npm-install` step to
publishVSCode.yml and publishOpenVSX.yml to overlap npm install with the
release-artifact download. That syntax matches the GitHub workflow-syntax
docs, but GitHub's parser rejects bare `wait:` steps for this repo (same
failure as coreE2E: 0s startup failure, zero jobs, no check-run).

No publish has exercised it yet — the last successful publish (v67.4.0)
ran off a release branch that forked before #7681 merged to develop. The
next release-triggered publish would pick up the broken syntax and fail at
startup, blocking the release.

Revert both files to sequential npm install (remove `background:`,
`id: npm-install`, and the `wait:` steps).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…23355450 (#7708)

* refactor(org): drop ConfigAggregatorProvider reload from updateConfigAndStateAggregators - W-23355450

* test(org): drop ConfigAggregatorProvider mock from orgUtil updateConfigAndStateAggregators suite - W-23355450

* refactor: apply review findings (stale error message, async no-op, test coverage)

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…3313205 (#7714)

* chore: plan for W-23313205

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* perf(apex-replay-debugger): resolve effect ESM to shrink bundle - W-23313205

* refactor: trim multi-sentence bullets in plan doc

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…tion of effect - W-23313206 (#7715)

* chore: plan for W-23313206

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

* chore(apex-testing): record baseline node bundle metafile sizes - W-23313206

Baseline (effect resolves dist/cjs/*):
- node dist/index.js: 4842726 bytes
- fast-check bytesInOutput: 236679 (223 files)
- effect inputs: 252 cjs, 0 esm
- web dist/web/index.js: 5382007 bytes

* perf(apex-testing): resolve effect ESM to tree-shake fast-check (node) - W-23313206

Spread effectEsmConditions into nodeBuild (after nodeConfig) so esbuild
resolves effect's dist/esm/* (sideEffects:[]) and tree-shakes most fast-check.
Node/desktop bundle only; browserBuild untouched. Output stays CJS.

- fast-check bytesInOutput: 236679 -> 47542 (~79.9% drop)
- node dist/index.js: 4842726 -> 3968180 bytes (~18.1% drop)
- effect inputs: now 252 esm, 0 cjs
- web dist/web/index.js: 5382007 (unchanged)
- CJS output verified: no import.meta, no top-level ESM syntax

* docs(apex-testing): esbuild effect-esm node verdict - W-23313206

Verdict ACHIEVED (node/desktop only; browserBuild untouched, output CJS):
- node dist/index.js: 4,842,726 -> 3,968,180 B (-18.1%)
- fast-check bytesInOutput: 236,679 -> 47,542 B (-79.9%, not eliminated)
- effect inputs: 252 esm / 0 cjs (resolves dist/esm/*)
- web dist/web/index.js: 5,382,007 B unchanged
- 13/13 desktop Playwright specs green

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Spread effectEsmConditions into the apex node esbuild nodeBuild config so
effect resolves its dist/esm/* tree, tree-shaking unused code and shrinking
dist/index.js. Add scripts/bundling/effect.mjs to the vscode:bundle wireit
files list for cache invalidation.

Redo of #7717, which was accidentally merged to main instead of develop.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
)

* chore: plan for W-23313209

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

* perf(lightning): resolve effect ESM to shrink bundle - W-23313209

Apply effectEsmConditions override to the node main bundle so effect
resolves dist/esm/* and the tree-shaker drops unused submodules
(fast-check via Schema). Output stays CJS.

dist/index.js: 1,807,557 -> 971,726 bytes (-46.2%)
fast-check bytesInOutput: 235,284 -> 47,281 (-79.9%)
vscode-uri re-resolves umd+esm (23,793) -> esm-only (11,460), net -12,333.
acorn* / vscode-html-languageservice remain absent (auraServer-only).

Emit dist/node-metafile.json for blast-radius auditing; exclude from
VSIX via .vscodeignore and add scripts/bundling/effect.mjs to the
vscode:bundle wireit files for cache invalidation. auraServer build
untouched (no effect dep).

All 4 aura desktop specs green locally (7 tests).

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

* refactor: split Phase 2 package.json plan bullet into what/why/evidence

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Bumps [@salesforce/templates](https://github.com/forcedotcom/salesforcedx-templates) from 66.10.4 to 66.11.0.
- [Release notes](https://github.com/forcedotcom/salesforcedx-templates/releases)
- [Changelog](https://github.com/forcedotcom/salesforcedx-templates/blob/main/CHANGELOG.md)
- [Commits](forcedotcom/salesforcedx-templates@66.10.4...66.11.0)

---
updated-dependencies:
- dependency-name: "@salesforce/templates"
  dependency-version: 66.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tring sentinels - W-23173047 (#7706)

* refactor(apex-testing): model ToolingTestClass id/namespacePrefix as Option

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

* refactor(apex-testing): update discovery consumers to Option-based id/namespacePrefix

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

* test(apex-testing): Option fixtures + flow-vs-apex + normalization coverage

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

* fix(apex-testing): graceful per-record decode + whitespace-only namespace normalization

Decode test discovery records individually so a single malformed record
degrades to a partial result (mirroring the 431 path) instead of aborting
the entire discovery. Also trim whitespace-only id/namespacePrefix to none,
restoring the prior .trim() normalization behavior.

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

* refactor(apex-testing): use Option.flatMapNullable via shared helper; tighten plan prose

Extract resolvePackageInfoForClassId (Option.flatMapNullable) shared by
orgTestItems and testController, replacing duplicated flatMap+fromNullable.
Tighten plan doc prose to fragments per concise skill.

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

* fix(apex-testing): drop unused export on ToolingTestClassWire type

knip flags the type as an unused export; it is only referenced within
schemas.ts (ToolingTestsPage.apexTestClasses), so it needs no export.

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

* fix(apex-testing): drop remaining string-sentinel reconversions for namespacePrefix

Option.getOrElse(..., () => '') at the QuickPick description boundary re-manufactured
the wire "" sentinel that this PR's decode step was meant to eliminate; vscode's
QuickPickItem.description is optional, so Option.getOrUndefined avoids it.

buildClassIdToNamespace also collapsed back to a Map<string, string> sentinel one
level out, feeding packageResolution.ts's untouched .trim()/!=='' checks. Both now
carry Map<string, Option<string>> through to resolveFromInstalledSubscriberPackages.

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

* refactor: pr feedback

* refactor: use builtin empty string option parse

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…3397001 (#7728)

Update @salesforce/source-deploy-retrieve dependency from ^12.32.5 to
^12.37.0 across multiple packages to add support for UiWidgetBundle object.

Co-authored-by: mshanemc <shane.mclaughlin@salesforce.com>
* perf(soql): resolve effect ESM to shrink bundle - W-23313215

dist/index.js: 2,444,688 -> 1,681,756 bytes (-762,932, -31.2%).
fast-check bytesInOutput: 235,898 -> 47,542 (-79.85%).
Output stays CJS (format from nodeConfig; exports.activate/deactivate intact).
server.js build excluded (no effect dep) -> byte-identical (747,774).

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

* refactor: tighten plan doc wording per review

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

* chore: plan for W-23313215

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

* refactor: cut repetition and trim prose in plan (review findings)

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* chore: plan for W-23313214

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* perf(services): resolve effect ESM to shrink bundle - W-23313214

Spread effectEsmConditions into nodeBuild so esbuild resolves effect
dist/esm/* (sideEffects:[]) and tree-shakes unused submodules (fast-check
via Schema). Output stays CJS; browserBuild untouched.

node dist/index.js: 14,373,736 -> 13,271,750 bytes (-1,101,986, -7.67%)
effect inputs: 269 cjs/0 esm -> 0 cjs/269 esm
web dist/web/index.js: 14,124,889 bytes (unchanged)
CJS verified: no import.meta, no top-level import/export; module.exports intact

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

* fix(services): add effect.mjs to wireit bundle files - W-23313214

Add ../../scripts/bundling/effect.mjs to files[] of vscode:bundle and
vscode:bundle:local so a change to the effect ESM override helper
invalidates the wireit cache and rebuilds the bundle (no stale dist).

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

* refactor: apply concise review findings to plan doc

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

* chore: plan for W-23313214

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: trim multi-sentence bullets in plan doc

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* chore: plan for W-23313213

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

* perf(org): resolve effect ESM to shrink bundle - W-23313213

Spread effectEsmConditions into org node esbuild so effect resolves to
dist/esm/* and unused submodules tree-shake out.

dist/index.js: 5,750,671 -> 5,060,350 bytes (-690,321, -12.0%)
effect inputs (node-metafile): cjs 361 -> 0, esm 0 -> 361
Output stays CJS (no import.meta, no top-level ESM).

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* perf(lwc): resolve effect ESM to shrink bundle - W-23313210

* refactor: tighten plan prose per review findings

Compress full-sentence Playwright rationale to fragments; cut repeated
'CI green is not a substitute for local run' restatements.

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…Clean - W-23231100 (#7711)

* refactor(org): collapse Effect->Promise->Effect round-trip in orgListClean - W-23231100

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

* test(org): match orgListClean pure-Effect signatures - W-23231100

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

* fix(org): restore concurrency + error isolation in orgListClean, tighten Effect idioms - W-23231100

- findRemovableOrgs/displayRemainingOrgs: restore { concurrency: 'unbounded' }
  (refactor had silently downgraded parallel Promise.all fan-out to sequential)
- displayRemainingOrgs: swallow ALL display failures (incl. FailedToCreateConfigAggregatorError),
  not just FailedToListAuthorizationsError, so a display error after a successful clean no longer
  surfaces as an unrelated command error; reuse the already-yielded channel binding
- removeExpiredAndDeletedOrgs: replace hand-rolled Effect.reduce + O(n^2) array spread with
  Effect.partition; per-org failure now a tagged RemoveAuthError
- determineConnectedStatusForNonScratchOrg: tagged OrgConnectionCheckError + catchTag (was ad-hoc
  object + catchAll); inline the status ternary
- drop superfluous @ExportTaggedError on GetAuthFieldsError (knip sees it as used)
- checkForSoonToBeExpiredOrgs: use ConnectionService.listAllAuthorizations accessor (clears
  StateAggregator) instead of raw AuthInfo.listAllAuthorizations
- tests: seed ConnectionService stub for checkForSoonToBeExpiredOrgs

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

* docs(org): tighten W-23231100 plan prose to fragments; state e2e option - W-23231100

- convert channel-dedup / channel-migration / getAuthFieldsFor / e2e-coverage prose to fragment bullets (concise skill)
- DoD: record e2e option 2 (removal/display paths jest-only; desktop spec = no-op branch)

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

* test(org): widen R channel for leaked services in orgListClean tests - W-23231100

Migrated orgUtil helpers yield ChannelService/ConnectionService (and Alias/Config via getDefaultOrgConfiguration) off the services api, leaking them into the R channel. Seeded mock api satisfies them at runtime; widen R to ExtensionProviderService for the type-only provide, matching the orgDisplay test pattern.

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…effect - W-23313212 (#7723)

* chore: plan for W-23313212

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* perf(metadata): resolve effect ESM to shrink bundle - W-23313212

Spread effectEsmConditions into nodeBuild (after nodeConfig) so esbuild
resolves effect dist/esm/* (sideEffects:[]) and tree-shakes unused
submodules. Node/desktop bundle only; browserBuild untouched. Output CJS.

- node dist/index.js: 2482792 -> 1752636 bytes (~29.4% drop)
- effect inputs: now 251 esm, 0 cjs
- web dist/web/index.js: 2457956 (unchanged)
- CJS output verified: no import.meta, no top-level ESM syntax

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

* fix(metadata): add effect.mjs to vscode:bundle wireit files - W-23313212

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

* fix(metadata): add effect.mjs to vscode:bundle:local wireit files - W-23313212

Mirror the vscode:bundle fix so an edit to scripts/bundling/effect.mjs
invalidates the local-bundle wireit cache too. esbuild.config.mjs imports
effect.mjs unconditionally for both tasks; without this the :local target
would serve a stale dist.

Also tidy plans/W-23313212.md: run Phase 1 baseline from repo root via -w
(no cd into package), bulletize the pre-PR e2e prose per concise skill, and
note both wireit tasks in Phase 3.

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…-23348776 (#7731)

* refactor(apex): drop redundant WorkspaceContext.initialize from activation - W-23348776

* refactor: apply medium/low review findings

- concise: tighten NOTE/e2e-gate/COVERAGE-GAP bullets to fragment style
- doc-maintenance: drop stale .WorkspaceContext from apex consumer table

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…runcation - W-23402143 (#7735)

The numeric-sequencing gate batched all candidate epics into one SOQL
query with a single LIMIT 200. When the combined result set exceeded
200 rows, some epics got zero rows back with no signal of truncation,
so their unfinished siblings became invisible to the gate. This let
W-23348771 (subject prefix "3") get claimed while W-23348768 ("2",
same epic) was still New.

Query epic-siblings per-epic instead, each with its own LIMIT 200.
Bumps [morgan](https://github.com/expressjs/morgan) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/expressjs/morgan/releases)
- [Changelog](https://github.com/expressjs/morgan/blob/master/HISTORY.md)
- [Commits](expressjs/morgan@1.10.1...1.11.0)

---
updated-dependencies:
- dependency-name: morgan
  dependency-version: 1.11.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… W-23313208 (#7719)

* perf(core): resolve effect ESM to shrink bundle - W-23313208

* refactor: apply low-severity review findings

- strip stray tool-output XML tags from plan file
- drop redundant dist/node-metafile.json wireit output entry (covered by dist)

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…085 (#7709)

* chore: plan for W-23231085

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(org): read command labels from package.nls.json in runtime callers - W-23231085

* refactor(org): drop 14 duplicate command labels from i18n.ts - W-23231085

* refactor: apply low-severity review findings (skill docs)

- vscode-window-messages: document command-title button-label carve-out
- i18n-messages: refresh stale i18n.ts line-number citations

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

* fix(org): keep runtime command labels localized via nls.localize - W-23231085

Importing package.nls.json directly (English JSON) into runtime src/
stripped Japanese localization: VS Code only resolves manifest %key%
from package.nls.<locale>.json, never exposes it to code. Runtime UI
must use nls.localize (i18n.ts / i18n.ja.ts), the two-channel model in
salesforcedx-vscode-apex-testing docs/ApexTestingMessageKeys.md.

- Revert 3 runtime callers + orgList jest test to nls.localize
- Restore the 8 runtime-used _text keys in i18n.ts (referenced from
  both package.json %key% and nls.localize — legitimately in both files)
- Keep the 6 manifest-only keys removed from i18n.ts (no runtime caller)
- package.nls.json / package.nls.ja.json unchanged (palette titles)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs: fix stale NLS guidance after localization revert - W-23231085

- vscode-window-messages skill: remove the "Exception" note that
  permitted importing package.nls.json for button labels (root cause of
  the unlocalized commit); button labels use nls.localize
- W-23231085 plan: reflect actual outcome (6 keys net-removed, 8 kept
  in both files, runtime callers stay localized)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…#7741)

* chore: plan for W-23371026

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* chore(effect-ext-utils): enforce consistent-type-imports - W-23371026

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

* refactor: medium/low review findings

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…7737)

* chore: plan for W-23313216

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* docs(adr): visualforce extension build adopts shared effect-esm conditions - W-23313216

* perf(visualforce): resolve effect ESM to shrink bundle - W-23313216

* refactor: address medium/low review findings - W-23313216

- drop redundant external:['vscode'] from both esbuild builds (nodeConfig already sets it)
- note LS conditions literal mirrors effectEsmConditions but stays out of shared-effect scope
- trim plan Phase 1 bullet redundancy

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…r-Layer - W-23369387 (#7740)

* chore: plan for W-23369387

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix(observability): gate telemetry exporters per-export not per-Layer - W-23369387

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

* test(observability): per-export telemetry gate + lazy construct honor toggle - W-23369387

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

* refactor(observability): decouple gate wrapper + skip disabled-session enrichment - W-23369387

- GatedSpanExporter takes an injected isEnabled predicate (no spanUtils/
  appInsights coupling, no o11yEndpoint param)
- move isProductionTelemetryExportEnabled to appInsights (out of span-shape
  spanUtils); de-export now-internal isTelemetryExtensionConfigurationEnabled
- SpanTransformProcessor.onStart skips per-span enrichment when gate disabled
  (was unconditional after the always-present processor change)

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

* docs(observability): numerals in plan per concise skill - W-23369387

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…yService - W-23348768 (#7739)

* chore: plan for W-23348768

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(apex): add fireSpan helper + runtime dispose for span export - W-23348768

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

* refactor(apex): convert languageServer telemetry to spans - W-23348768

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

* refactor(apex): convert languageUtils telemetry to spans - W-23348768

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

* refactor(apex): drop core TelemetryService, span deactivation - W-23348768

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

* test(apex): update jest for span-based telemetry - W-23348768

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

* test(apex): e2e span telemetry spec - W-23348768

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

* docs(apex): update external-consumers for dropped TelemetryService - W-23348768

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

* refactor(apex): apply review findings for span telemetry - W-23348768

- extract fireErrorSpan sibling helper; use it for LSP_ERR catch block
- type discoverFromLs failure as ApexTestDiscoveryError (no opaque unknown)
- extract shared recordingTracer test helper; dedupe 3 jest mock factories
- add error-path test for createServer LSP_ERR span
- add dedicated disposeRuntime unit test (no-op / dispose+memo-clear / rebuild)
- narrow sessionFile via requireFile helper, drop non-null assertions in e2e
- fix misleading "no fork per event" comment; tighten verbose comment blocks
- numerals in plan doc per concise skill

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…s - W-23369813 (#7743)

* chore: plan for W-23369813

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* chore(auto-build-wi): route doc-output phases through doc-format rules - W-23369813

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(review-diff): flag over-altitude ADR/CONTEXT doc output - W-23369813

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(review-plan): flag plans that pre-spec ADR/CONTEXT doc prose - W-23369813

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: correct doc-altitude citation authority in review-plan prompt

review-plan.js doc-altitude check cited ADR-FORMAT.md "When to offer"
(the whether-to-write gates) as the altitude authority; altitude is
governed by the Template ("1-3 sentences") / "Optional sections (only
when earned)". Fix the citation instruction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…3358835 (#7744)

* chore: plan for W-23358835

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(org,services): adopt Predicate.isError over instanceof Error idiom - W-23358835

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

* refactor(apex,soql,lwc,lightning): adopt Predicate.isError over instanceof Error idiom - W-23358835

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

* refactor(utils,metadata,core): adopt Predicate.isError over instanceof Error idiom - W-23358835

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

* refactor: complete Predicate.isError adoption in missed src hits - W-23358835

Covers lwc lwcTestController and apex-testing package (apexTestErrorMapper,
orgApexClassProvider, testDiscovery, packageResolution) missed by the
original diff.

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

* refactor: address isError review nits - W-23358835

- lightning-lsp-common test mock: adopt isError
- orgUtil: revert unrelated prettier reformatting, keep only isError swaps
- plan: merge duplicated verification justification

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…dling config - W-23313217 (#7745)

* chore: plan for W-23313217

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

* docs(adr): browser promotion criterion for effect ESM conditions - W-23313217

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

* refactor(bundling): promote effect ESM node conditions to nodeConfig - W-23313217

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

* refactor(bundling): promote effect ESM browser conditions to commonConfigBrowser - W-23313217

Per-package web e2e specs green for all 6 newly-conditioned browser builds
(apex-log, apex-testing, lwc, metadata, services, soql). Deletes the now-unused
effectEsmConditions opt-in constant and its wireit input references.

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

* refactor: address review findings on effect ESM condition promotion

Concise plan prose; document node LS/debug builds newly conditioned by
fold and browser LS worker validation coverage in ADR 0021.

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

* chore: non-code cleanup

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…, migrate determineConnectedStatusForNonScratchOrg - W-23354940 (#7738)

* chore: plan for W-23354940

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

* feat(services): add optional username param to ConnectionService.getConnection - W-23354940

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

* refactor(org): migrate determineConnectedStatusForNonScratchOrg to getConnection - W-23354940

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

* fix: isolate stale scratch-org auth file per worker to fix parallel e2e race - W-23354940

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

* refactor: address medium/low review findings - W-23354940

- co-locate connection-status error mapping into one catchTags with an accurate comment (orgUtil)
- replace setTimeout-race ref-update assertion with a deterministic spy (connectionService test)
- document optional username param + ref-mutation skip (connection-service skill doc)
- tighten plan prose to fragments (concise)

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

* fix(e2e): stop dropping dev hub (isExpired 'unknown') from org table - W-23354940

processOrgForDisplay used a loose truthy `if (orgAuth.isExpired)`. A non-scratch
org (e.g. the dev hub) has no expirationDate, so @salesforce/core reports
isExpired: 'unknown' — a truthy string — dropping the hub row before
determineConnectedStatusForNonScratchOrg could run. Match the picker's
`=== true` guard so only definitely-expired orgs are skipped.

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

* refactor(e2e): move staleScratchOrgAuth helper to org ext (PR review) - W-23354940

The synthetic stale-scratch-org auth helper is only used by the org
ext's orgListClean spec, so it belongs in the org package's test
helpers rather than the shared playwright-vscode-ext, matching the
per-package test/playwright/helpers convention. Dropped its three
exports from the ext barrel; spec now imports from ../helpers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
mshanemc and others added 29 commits July 20, 2026 19:58
… requirements - W-23348838 (#7816)

* chore: plan for W-23348838

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

* refactor(apex): replace fileOrFolderExists with services FsService in requirements - W-23348838

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

* fix(apex): address review findings for requirements fileOrFolderExists refactor

- add missing SalesforceVSCodeServicesApi cast so test:compile passes (TS2322)
- rename fileOrFolderExistsEffect -> checkFileOrFolderExists (drop FooEffect suffix)
- type runtime mock runPromise/getServicesApi instead of any
- make FsService.fileOrFolderExists + getServicesApi jest.fns for per-test overrides
- log warning on swallowed services-extension tags so outages are traceable
- cover the false path and catchTags failure branch

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

* fix(apex): mock vscode.env.language in requirements.test.ts - W-23348838

effect-ext-utils reads vscode.env.language at import time; the test's vscode
mock lacked env, crashing the suite once requirements.ts pulled in effect-ext-utils.

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
… W-23382880 (#7802)

* refactor(services): route FsProvider read-only checks through shared runtime - W-23382880

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

* test(services): cover FsProvider runtime-routed + fallback read-only paths - W-23382880

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

* fix(services): repair FsProvider read-only test compile + false coverage - W-23382880

- require('vscode') instead of static import so workspaceFolders assignment
  compiles (was TS2540, blocked whole package jest run)
- spy isServicesRuntimeReady/getServicesRuntime and assert getServicesRuntime
  was called, so a mutant deleting the runtime-routed branch now fails
- drop 'as never' cast; mock via the real getServicesRuntime return type

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

* refactor(services): flatten read-only guard, rename Effect helper, tidy plan - W-23382880

- early-return the empty-readOnly bail; flat runtime-ready/fallback dispatch
- rename isItReadOnlyEffect -> checkIsReadOnly (drop Effect suffix, avoid
  collision with the isItReadOnly wrapper)
- compose getServicesRuntime into one flat pipe ending in Effect.runSync
- trim redundant plan prose; sync Phase 2 to the spy-based test

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

* fix(e2e): back FsProvider read-only test with memfs to fix Windows paths - W-23382880

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Bumps [tar](https://github.com/isaacs/node-tar) to 7.5.20 and updates ancestor dependency [npm](https://github.com/npm/cli). These dependencies need to be updated together.


Updates `tar` from 7.5.16 to 7.5.20
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v7.5.16...v7.5.20)

Updates `npm` from 11.17.0 to 11.18.0
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/v11.18.0/CHANGELOG.md)
- [Commits](npm/cli@v11.17.0...v11.18.0)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.20
  dependency-type: indirect
- dependency-name: npm
  dependency-version: 11.18.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…416944 (#7822)

* chore: plan for W-23416944

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* feat(lint): steer instanceof Error to effect/Predicate isError - W-23416944

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

* refactor: address medium/low review findings - W-23416944

- concise plan doc (.claude/plans/W-23416944.md)
- document instanceof-Error selector scope limitation

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* chore: plan for W-23356230

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

* chore(deps): bump ts-jest to 29.4.11 for TS6 peer range - W-23356230

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

* chore(deps): bump typescript to 6.0.3 + ignoreDeprecations - W-23356230

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

* fix(build): ts6 tooling + rootDir conformance - W-23356230

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

* refactor: address review findings on wireit inputs + tsconfig

- add scripts/tsconfig.json to check:package-lock wireit files array
- remove no-op rootDir:'.' from lwc-language-server tsconfig

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

* docs: tighten W-23356230 plan prose per concise findings

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

* fix(build): restore rootDir on lwc-language-server tsconfig - W-23356230

TS6011 fires on TS6.0.3 for the jest test suite even though tsc --noEmit
was clean; the earlier refactor commit incorrectly dropped rootDir as a
no-op.

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…496 (#7818)

* chore: plan for W-23354496

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(apex-testing): drop try/catch in index + testUtils - W-23354496

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

* refactor(apex-testing): convert try blocks to Effect in test views - W-23354496

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

* refactor(apex-testing): enable functional/no-try-statements - W-23354496

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

* fix(apex-testing): log + catchTags instead of blanket catchAll in retrieve - W-23354496

Replace the blanket Effect.catchAll in retrieveOrgOnlyClassFromUri with
catchTags keyed to the inferred failure tags, each logging the discarded
error before showFailedExecution (per plan Phase 2 + ADR 0004). Cancellation
notification switched to Effect.sync (fire-and-forget). getTestClassName API
regains its diagnostic via tapError/logDebug before orElseSucceed.

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

* test(apex-testing): cover cancel + failed-execution retrieve branches - W-23354496

Add jest cases for the UserCancellationError (canceled notification) and
MetadataRetrieveError (showFailedExecution) branches of
retrieveOrgOnlyClassFromUri, which had no coverage.

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

* docs(apex-testing): tighten plan wording to concise style - W-23354496

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

* refactor(apex-testing): flatten nested runtime hop in getTestClassName API - W-23354496

Extract getTestClassNameEffect so the exported API runs the tree read once
via runPromise instead of runPromise wrapping a sync runSync on the same
ManagedRuntime. Drop the now-unused sync getTestClassName export.

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

* refactor(apex-testing): remove unused getTestClassName extension API

Dead export with no in-repo or external consumers (verified across
forcedotcom/salesforcecli orgs). Removes the exported API method, its
activation-failure fallback, the ApexTestingVSCodeApi type, and the
now-orphaned getTestClassNameEffect internal helper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(apex-testing): let activation errors propagate

The activate-level Effect.catchAll only existed to return a degraded
fallback API after a failed activation; that API is now gone, so the
catch merely swallowed errors and made failed activations look
successful to VS Code. Drop it to match the apex-log/org/metadata
pattern and surface activation failures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(apex-testing): tidy retrieveOrgOnlyClass composition

- getRetrievedFileUri returns Option<URI>; the retrieve pipe uses
  Effect.transposeMapOption to run showTextDocument+closeEditorTabByUri
  only on Some, removing the intermediate var + if-branch entirely
- fold the non-fatal refresh and success notify into the retrieve pipe
  as terminal taps (side effects needing no downstream value)
- replace dead catchAll+orElseSucceed with tapError+ignore on the
  refresh (orElseSucceed was unreachable after catchAll discharged the
  error channel to never)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* chore: plan for W-23429452

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

* fix(services): resolve catchUnfailableEffect dead catches - W-23429452

* fix(lwc): typed tryPromise for lazy testSupport import - W-23429452

* chore(effect): enforce catchUnfailableEffect - W-23429452

* fix(services): use Effect.ignore for idempotent alias unset - W-23429452

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

* docs(plan): trim repetition/verbose prose in W-23429452 plan

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Bare gh api call defaulted to page 1 (30 items), undercounting open
alerts (showed 14 of 33). --paginate + jq -s add fixes it.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…iac, still consumes core (#7826)

Agentforce Vibes Autocomplete (salesforce.agentforce-vibes-autocomplete) builds
from branch afv-v3.0-iac, not main. That branch hard-depends on core
(extensionDependencies + MIN core 60.13.0; CoreExtensionService throws if
CommandEventDispatcher is absent). The prior "dropped core / all dead" note came
from searching main only — GitHub code search skips non-default branches.

- Move einstein-gpt to direct core API consumers with the members it uses
- Warn that CommandEventDispatcher / sf.internal.sobjectrefresh.complete is a live contract
- Add gh recipes for finding a repo's shipping branch and reading it
- Bump verified date to 2026-07-21

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…put channel - W-23348840 (#7821)

* chore: plan for W-23348840

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(core): back channelService with services channel, dedupe output channel - W-23348840

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

* test(core): e2e guard single 'Salesforce CLI' channel via metadataXmlSupport - W-23348840

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

* refactor: apply medium/low review findings - W-23348840

- dedupe output-channel option matching via shared helper (DRY)
- bind getCoreChannelService() once per metadataXmlSupport method
- setCoreChannel returns void (dead return value)
- concise plan doc prose + numeral

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

* refactor(core)!: remove top-level channelService from public API - W-23348840

Consumers use services.ChannelService instead. getCoreChannelService()
stays for internal metadataXmlSupport use.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
…ices - W-23429789 (#7830)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…ist of classes in the current suite when the classes have namespaces - W-23531661 (#7831)
Bumps [@salesforce/source-deploy-retrieve](https://github.com/forcedotcom/source-deploy-retrieve) from 12.37.0 to 12.37.2.
- [Release notes](https://github.com/forcedotcom/source-deploy-retrieve/releases)
- [Changelog](https://github.com/forcedotcom/source-deploy-retrieve/blob/main/CHANGELOG.md)
- [Commits](forcedotcom/source-deploy-retrieve@12.37.0...12.37.2)

---
updated-dependencies:
- dependency-name: "@salesforce/source-deploy-retrieve"
  dependency-version: 12.37.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [shx](https://github.com/shelljs/shx) from 0.3.4 to 0.4.0.
- [Release notes](https://github.com/shelljs/shx/releases)
- [Changelog](https://github.com/shelljs/shx/blob/main/CHANGELOG.md)
- [Commits](shelljs/shx@v0.3.4...v0.4.0)

---
updated-dependencies:
- dependency-name: shx
  dependency-version: 0.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [svgo](https://github.com/svg/svgo) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/svg/svgo/releases)
- [Commits](svg/svgo@v3.3.3...v3.3.4)

---
updated-dependencies:
- dependency-name: svgo
  dependency-version: 3.3.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…vider - W-23446403 (#7835)

* chore: plan for W-23446403

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* chore(core): remove dead findParentMetadataType from metadataHoverProvider - W-23446403

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

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Bumps [linkify-it](https://github.com/markdown-it/linkify-it) from 5.0.1 to 5.0.2.
- [Changelog](https://github.com/markdown-it/linkify-it/blob/master/CHANGELOG.md)
- [Commits](markdown-it/linkify-it@5.0.1...5.0.2)

---
updated-dependencies:
- dependency-name: linkify-it
  dependency-version: 5.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…-23436145 (#7834)

* chore: plan for W-23436145

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

* docs(agent): shorten verbose new code comments in doc-maintenance - W-23436145

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

* refactor: apply concise review findings - W-23436145

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
… helpers - W-23366115 (#7829)

* chore: plan for W-23366115

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor(e2e): extract continueDebugSession to shared debugHelpers

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

* refactor(e2e): export createAndOpenApexScript from playwright-vscode-ext

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

* fix(e2e): restore original maxContinues defaults, guard empty content, escape regex

- Restore maxContinues=2 default in shared continueDebugSession (was 3);
  checkpoints spec passes 3 explicitly to preserve its original behavior.
- Make `content` optional in createAndOpenApexScript; guard content-population
  block with `if (opts.content)` to skip redundant select-all/save on empty path.
- Escape regex-special characters in opts.name before RegExp interpolation.
- Add comment documenting intentional catch-swallow for session-end detection.
- Condense plan file prose per concise-skill conventions.

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

* fix: createAndOpenApexScript() always calls the same command

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: plan for W-23429469

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

* fix(soql): replace try/catch in Effect.gen with catchAllCause - W-23429469

Route query/request failures (defects from Effect.promise) through
catchAllCause + Cause.squash instead of generator try/catch. Both sites
use a nested Effect.gen body piped to catchAllCause + Effect.ensuring so
the channel is shown exactly once (on success or error) via
ChannelService.showChannel.

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

* test(soql): cover executeDataQuery/executeQueryPlan error path - W-23429469

Drive both commands through query/request rejection and success;
assert formatted error appended and channel shown exactly once.

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

* chore(effect): enforce tryCatchInEffectGen - W-23429469

Append tryCatchInEffectGen to enforcedRules ratchet (all sites fixed).
Point effect-best-practices skill at the now-enforced LS rule; no
duplicate prose.

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

* fix(soql): show output panel concurrently on data query success - W-23429469

saveResultsToCSV awaits a showInformationMessage prompt that never
resolves without user action, so gating channel.show() behind
Effect.ensuring (which runs only after the gen body completes) left the
Output panel closed on the success path — the SOQL Run Query e2e specs
timed out waiting for OUTPUT_PANEL on all three OSes. Restore showChannel
as a concurrent member of the success Effect.all; keep an explicit
show after appendToChannel on the catchAllCause error path.

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Bumps [@salesforce/templates](https://github.com/forcedotcom/salesforcedx-templates) from 66.11.1 to 66.13.0.
- [Release notes](https://github.com/forcedotcom/salesforcedx-templates/releases)
- [Changelog](https://github.com/forcedotcom/salesforcedx-templates/blob/main/CHANGELOG.md)
- [Commits](forcedotcom/salesforcedx-templates@66.11.1...66.13.0)

---
updated-dependencies:
- dependency-name: "@salesforce/templates"
  dependency-version: 66.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Conflicts:
#	packages/playwright-vscode-ext/src/utils/nonCriticalErrorPatterns.ts
…23385030

The local build (npm run vscode:package) produces both a modern and a legacy
VSIX for core/lwc/lightning/apex-debugger/apex-oas. The collection loop grabbed
every *.vsix per package dir, so the swap unpacked two override dirs per
extension and the verify gate failed with 'expected exactly 1 override dir,
found 2'. Collect only each package's own-version (modern) VSIX.
…g display - W-23385030

Recent sf CLI versions redact accessToken in 'sf org display --json', returning
a '[REDACTED] Use sf org auth show-access-token ...' placeholder instead of the
real token. Both the local script and the CI workflow passed that placeholder as
SF_ACCESS_TOKEN into the container, so the container's start-time org login failed
(exit_code=1), no config was set, and the Config List spec saw 'No results found'.

Source the token from 'sf org auth show-access-token --json' in both places.
Verified locally: container auto-login succeeds, all container specs pass.
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.

6 participants