Skip to content

chore: update v3 release with main#7477

Merged
janechu merged 17 commits into
releases/fast-element-v3from
patch-release-to-latest
Apr 22, 2026
Merged

chore: update v3 release with main#7477
janechu merged 17 commits into
releases/fast-element-v3from
patch-release-to-latest

Conversation

@janechu
Copy link
Copy Markdown
Collaborator

@janechu janechu commented Apr 22, 2026

Pull Request

📖 Description

Pull the latest updates from main into the release branch. Replaces #7475 with merge conflicts resolved.

✅ Checklist

General

  • I have included a change request file using $ npm run change
  • I have added tests for my changes.
  • I have tested my changes.
  • I have updated the project documentation to reflect my changes.
  • I have read the CONTRIBUTING documentation and followed the standards for this project.

janechu and others added 12 commits April 20, 2026 13:25
# Pull Request

## 📖 Description

This change updates the `webui` dependency to 0.0.10.

## 📑 Test Plan

This will allow for us to update our integration tests.

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
# Pull Request

## 📖 Description

This change adds an "all" benchmark that includes all other benchmark components to allow for better performance benchmarking against multiple components.

### 🎫 Issues

Further work on #7248

## 👩‍💻 Reviewer Notes

This fills a gap where instead of multiple of the same component being iterated on this is all of the components. This should show more meaningful results for performance checking against things like many different components on a page.

## ✅ Checklist

### General

- [ ] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
…7459)

# Pull Request

## 📖 Description

Moves the private `@microsoft/fast-bench` package from `packages/bench/` to `sites/benchmarks/` to better reflect its role as an internal site/tool rather than a publishable package. Also simplifies the root `package.json` workspaces by using glob patterns (`sites/*`, `examples/*`) instead of listing each workspace explicitly.

**Changes:**
- Move `packages/bench/` → `sites/benchmarks/` via `git mv`
- Update root `package.json` workspaces to use `sites/*` and `examples/*` globs
- Update `copilot-instructions.md` to reflect new location
- Update `README.md` folder path reference
- Regenerate `package-lock.json`

## 📑 Test Plan

- All existing tests pass — the bench package is private with no dependents
- `npm run checkchange` confirms no change files are needed (private package excluded from beachball scope)
- Workspace resolution verified via `npm ls`

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
# Pull Request

## 📖 Description

As the `@microsoft/fast-element` package moves towards a declarative templating solution, the `@microsoft/fast-ssr` is being removed. We have posted and published a deprecation notice with a project that will fill this gap.

## 👩‍💻 Reviewer Notes

This is a simple removal.

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
# Pull Request

## 📖 Description

Adds a `properties` key to the `ObserverMapConfig` interface in `@microsoft/fast-html` so that developers can opt specific root properties and nested sub-paths in or out of automatic observer-map observation, rather than the current all-or-nothing approach.

Each path entry can be:
- **`true`** — observe this path and all descendants
- **`false`** — skip this path and all descendants
- **`ObserverMapPathNode`** — an object with optional `$observe` boolean and child overrides, enabling alternating opt-in/opt-out to arbitrary depth

When `properties` is omitted (`observerMap: {}` or `observerMap: "all"`), current behavior is preserved. When `properties` is present but empty (`{ properties: {} }`), no root properties are observed.

### 🎫 Issues

- Resolves #7445

## 👩‍💻 Reviewer Notes

Key areas to review:
- **`observer-map.ts`**: New `hasObservedPath` helper and config filtering logic in `defineProperties()`
- **`utilities.ts`**: Config threading through the proxy system (`assignObservables`, `assignProxyToItemsInObject`, `assignProxy`), particularly the `set` trap changes that skip notification for excluded properties
- **`template.ts`**: New types (`ObserverMapPathEntry`, `ObserverMapPathNode`) and config extraction for `ObserverMap` constructor

## 📑 Test Plan

- All 289 existing + new Chromium tests pass
- New unit tests in `observer-map.spec.ts` covering:
  - Skipping unlisted root properties
  - Skipping `false` root properties
  - Observe-all with empty config (`{}`)
  - Observe-nothing with empty properties (`{ properties: {} }`)
- New fixture tests in `observer-map-properties/` covering:
  - Selective root property observation
  - Excluded subtrees (`false`)
  - Re-included leaf within `$observe: false` branch
  - Unlisted root properties remaining unobserved
  - Array observation with selective config
  - Empty config object backward compatibility

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [x] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
# Pull Request

## 📖 Description

Adds a contributor-oriented `DESIGN.md` architecture document for the `@microsoft/fast-test-harness` package. This document describes the internal architecture of the test harness, covering:

- High-level overview of CSR and SSR rendering modes
- Module map and package structure
- Fixture system (`CSRFixture`, `SSRFixture`, fixture options)
- Custom Playwright assertions (`toHaveCustomState`)
- Express + Vite server architecture and request flows
- Consumer-owned SSR contract (required test directory files)
- SSR rendering utilities and DSD template processing
- Asset resolution helpers
- Shared Playwright and Vite configuration

## 👩‍💻 Reviewer Notes

This is a documentation-only change. The `DESIGN.md` follows the same structure and conventions as the existing `DESIGN.md` files in `packages/fast-build`, `packages/fast-element`, `packages/fast-html`, and `crates/microsoft-fast-build`.

## 📑 Test Plan

Documentation-only change — no code changes. All existing tests continue to pass.

## ✅ Checklist

### General

- [ ] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [ ] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
…derstanding of the project (#7468)

# Pull Request

## 📖 Description

This change updates skills and instructions for AI to better understand the project and update it when making changes.

## ✅ Checklist

### General

- [ ] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
…ng (#7473)

# Pull Request

## 📖 Description

Replace `rollup-plugin-filesize` with an esbuild-based bundle size measurement script. The new script (`packages/fast-element/scripts/measure-sizes.js`) measures minified, gzip, and brotli sizes for the core bundle and 13 individually tree-shaken exports (FASTElement, Updates, Observable, observable, attr, children, css, ref, slotted, volatile, when, html, repeat). Results are saved to `SIZES.md` and surfaced on the documentation site as a new Package Sizes page under Resources.

### 🎫 Issues

* Resolves #7249

## 👩‍💻 Reviewer Notes

The `generate-docs.cjs` prebuild script copies `SIZES.md` from the fast-element package and wraps it with 11ty frontmatter to create the docs page. The introduction page now links to the Package Sizes page instead of hardcoding size numbers.

## 📑 Test Plan

All existing tests pass. Build produces `SIZES.md` with correct size data and the website builds the new package-sizes page successfully.

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.

## ⏭ Next Steps

* Investigate reducing size due to the use of `requestIdleCallback` (per issue #7249)
* Consider adding type exports to the size tracking (per issue #7249, under consideration)
# Pull Request

## 📖 Description

The GitHub pages deploy pipeline uses NodeJS version 20 which fails on scripts that use globSync, this change updates to version 22 with separate actions to pin the version.

## ✅ Checklist

### General

- [ ] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [ ] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.

## ⏭ Next Steps

- Deploy GitHub pages
Resolve merge conflicts keeping main's latest changes including
RenderableFASTElement pattern, export sizes docs, parameterized
version in generate-docs, and updated schema reference.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@janechu janechu added the fast-element-v3 Pertains to fast-element-v3 label Apr 22, 2026
janechu and others added 2 commits April 22, 2026 11:28
The release branch has a different API surface than main for
fast-element (HydrationTracker vs HydratableElementController,
register vs registerAsync, no RenderableFASTElement). Use the
release branch versions for files that depend on these APIs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Include the buildSizesPage function and parameterized version
support from commit 9f575eb, with the default major version
set to 3 for the release branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment thread packages/fast-element/README.md Outdated
janechu and others added 3 commits April 22, 2026 11:46
- Address review comment: update README export sizes link to 3.x
- Update website prebuild to pass version 3 to generate-docs.cjs
- Update SIZES.md from build
- Add generated 3.x export-sizes.md page

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The release branch uses FASTElement.define() instead of defineAsync().
The fixture was added from main and still used the old API.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The fixture already exists under fixtures/extensions/observer-map-properties/
with the correct path and templateOptions. Remove the stale root-level copy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@janechu janechu merged commit 3896eb7 into releases/fast-element-v3 Apr 22, 2026
11 checks passed
@janechu janechu deleted the patch-release-to-latest branch April 22, 2026 19:26
@janechu janechu mentioned this pull request May 1, 2026
5 tasks
janechu added a commit that referenced this pull request May 1, 2026
# Pull Request

## 📖 Description

Brings `releases/fast-element-v3` up to date with `main`. Cherry-picks every commit landed on `main` after PR #7477 was merged (the last v3↔main sync) and adds an adaptation commit so the changes work with the v3 architecture (where `@microsoft/fast-html` was merged into `@microsoft/fast-element` under `src/declarative/`).

Cherry-picked (in chronological order):

- #7479 — feat: change default attribute-name-strategy from none to camelCase
- #7494 — chore(deps): bump liquidjs 10.25.6 → 10.25.7
- #7501 — chore: migrate TypeScript compilation to `typescript/native-preview` (`tsgo`)
- #7502 — feat: allow `fast-build` rendering without state
- #7503 — docs: per-package documentation reorg (DESIGN.md/README.md and `docs/architecture/*`)
- #7504 — feat: propagate shadowroot attributes
- #7505 — chore: bump packages after failed publish (`fast-build` → 0.5.0)
- #7469 — feat: add build utilities and SSR renderer to `@microsoft/fast-test-harness`
- #7506 — chore: prepare `@microsoft/fast-test-harness` package for publishing

The "applying package updates" beachball commit (`aad6f5481`) was intentionally skipped — v3 maintains its own versioning track (`fast-element@3.0.0-rc.1`, `fast-test-harness@0.0.1`) and runs its own publish.

Adaptation commit highlights:

- Adds a new `./declarative-syntax.js` subpath export to `@microsoft/fast-element` so tooling consumers (e.g. `fast-test-harness` build utilities) can access declarative HTML syntax constants from fast-element directly. Mirrors the existing `./declarative-utilities.js` subpath.
- Re-points `fast-test-harness/src/build/generate-templates.ts` and `generate-webui-templates.ts` from `@microsoft/fast-html/syntax.js` to the new subpath.
- Replaces the removed `RenderableFASTElement(...).defineAsync({ templateOptions })` pattern with v3's `Element.define()` in test fixtures and the README example.
- Drops `@microsoft/fast-html` from the harness Vite optimizer exclude list.
- Excludes `*.spec.ts` from the fast-element TS build (the declarative `.spec.ts` files import `@playwright/test`, whose `.d.ts` files are incompatible with `tsgo`'s stricter parser; these specs are still type-checked when run via the declarative Playwright config).
- Adapted hydration marker handling in `crates/microsoft-fast-build/src/node.rs` for #7502 (kept v3's `inject_count_marker` / `data-fe="N"` style while merging in main's `Option<&mut HydrationScope>` flow).
- All `packages/fast-html/*` paths from cherry-picks were dropped (the package no longer exists on v3); related `change/@microsoft-fast-html-*.json` files were either converted to `@microsoft-fast-element-*.json` or dropped where they no longer apply.

## 📑 Test Plan

Run from the monorepo root on this branch:

- `npm run build` — all 6 packages build successfully (fast-build, fast-element, fast-router, fast-test-harness, fast-site, fast-todo-app-example).
- `@microsoft/fast-element` — 1410 chromium playwright tests + 176 declarative chromium tests pass.
- `@microsoft/fast-test-harness` — 96 node unit tests + 43 chromium playwright tests pass.
- `npm run biome:check` — clean.
- `npm run checkchange` — passes.

## ✅ Checklist

### General

- [x] I have included a change request file using `$ npm run change`
- [ ] I have added tests for my changes.
- [x] I have tested my changes.
- [x] I have updated the project documentation to reflect my changes.
- [x] I have read the [CONTRIBUTING](https://github.com/microsoft/fast/blob/main/CONTRIBUTING.md) documentation and followed the [standards](https://github.com/microsoft/fast/blob/main/CODE_OF_CONDUCT.md#our-standards) for this project.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fast-element-v3 Pertains to fast-element-v3

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant