## Description
This used:
1. `pnpm exec flub bump deps client -g -t latest`
2. Manually update version in root package.json
3. pnpm install --no-frozen-lockfile
4. Remove no longer needed type test breaks from tree (this update had
some fixes to handling of never and system types in type tests)
5. `pnpm run build:fast`
Bumped client from 2.4.0 to 2.5.0.
Some new packages in the client had `workspace:^` deps that were
corrected to use tilde, so the lockfile had to be updated.
Command used:
```shell
flub release -g client -v
```
build(client): Bump build-tools dependencies to 0.47.0
This contains changes in build-tools to help enforce code coverage
policies in client repo.
Co-authored-by: Jatin Garg <jatingarg@Jatins-MacBook-Pro-2.local>
## Description
Update React from 17 to 18 in our examples and in Devtools. Also cleans
up the `@types/react-dom` dev dependency from packages that don't import
`react-dom`, and adds `@types/react` and `@types/react-dom` as dev
dependencies to a package that uses both of them but didn't have a
dependency on the types.
This is motivated by work on the Fluid AI Collab experiment which uses a
NextJS app as an example (because it wants to run some code server side)
and NextJS requires React 18.
## Description
Must merge after https://github.com/microsoft/FluidFramework/pull/22527
Ran
`pnpm exec flub release -g client`
Which modified the versions of the packages (as it should) and also
replace all "workspace:~" version with "^2.4.0" (which it shouldn't)
then crashed in `pnpm i` due to trying to modify the lock file when it
shouldn't (without --no-frozen-lockfile).
I don't think that script should modify dependencies or pnpm install, so
I think those issues are bugs.
I reverted all the dependency changes.
## Description
Generate ChangeLogs for client 2.3.
I had to manually remove the package references from the changeset from
the propertyDDS package removal to avoid
https://github.com/changesets/changesets/issues/1403 before generating
these.
Generated using:
```
pnpm flub generate changelog -g client
```
Release notes will be generated by going to the commit before this
merged, and reprocessing the changesets.
Updates the build-tools to 0.46.0 in the client release group.
Primary changes:
The biggest changes in this release are in the type tests.
- The tests are now output in order sorted by type name.
- New in 0.46, the type tests no longer depend on any other build task,
so the task config has been updated accordingly. Also, the default
entrypoint that is tested in each package is now explicitly recorded in
package.json (those changes are in #22495).
Additional changes:
- The config now has a version property set to 1. This is a schema
version that we can change as needed when we make schema changes to the
config(s).
- The `"check:exports"` task config for test-loader-utils needed manual
updates because it does not have an api task. It has been updated with a
custom task definition.
- Several packages had task overrides that were incomplete/incorrect
because they did not inherit the global task config. Those packages have
been updated to inherit the global config.
- The same packages from the previous step also have an additional task
config for the "build:esnext" task to depend on typetests:gen; this is
needed so that ESM and CJS can be built separately. The packages in
question do not have a build:test task since they build tests as part of
their standard build. Without the build:esnext -> typetests:gen task dep
in each package, the ESM builds would not trigger typetest generation as
they should.
Updated the following:
client (release group)
Dependencies on build-tools updated:
@fluid-tools/build-cli: 0.44.0
@fluidframework/build-tools: 0.44.0
@fluidframework/bundle-size-tools: 0.44.0
@fluid-tools/version-tools: 0.44.0
I also made two small changes to the root Biome config and the
test-snapshots Biome config. The configs exposed a case where `git
ls-files` will return a path to a directory - if that directory is a
submodule. These config changes enable the Biome task caching to work
even with this ls-files oddity by ensuring the directory path doesn't
make it into the cached file list.
Upgrades build-tools in client to the latest prerelease version.
The primary reason to pick up this prerelease is to get the updated
changeset and release note tools, as well as fixes for `flub release
history`.
The template is for use specifically in example _app_ READMEs. We also
have example _library_ packages, which are better served by our library
README template. This PR renames the example app template to make this
distinction more clear.
See the updates in `markdown-magic/README` for the full list of renames.
Also note that in addition to the rename from `EXAMPLE_PACKAGE_README`
TO `EXAMPLE_README_HEADER`, that template was updated to _only_ include
"header" contents (for now, this is just the "Getting Started" section).
It now omits the "footer" contents which are now available via the
renamed `README_FOOTER` template. There were no existing usages of this
updated template outside of tests, so no usages had to be updated. I
will likely update many of our examples to use this updated template in
a follow-up PR.
Bumps the client dependencies on build-tools to 0.41.0.
## Automated changes
- The type test generator was updated in this build-tools release, so
the output of all type tests was regenerated.
## Manual changes
- The type test generator uses new names in some cases, which means
existing test disables in package.json had to be renamed. This extra
step could have been avoided if I'd done the bump after the next
release, when the type tests are all reset and the disables are all
reset. But this release contains useful changes and is worth getting
into the release branch as well.
- The azure-client disables needed an additional entry,
"RemovedClassStatics_AzureFunctionTokenProvider" which is expected.
Changes:
1. Remove production dependency in
@fluid-example/bubblebench-shared-tree
2. Update versions to ~1.8.3 (and set config to want ~)
3. Handle deprecations
a. Replace "javascript.formatter.trailingComma" with "...trailingCommas"
b. Replace cli argument `--apply` with `--write`
4. Apply formatting updates
5. Add Biome to npm-package-json-script-dep
6. Remove unused `--formatter-enabled=true` from commands
7. Add missing biome devDeps in build-tools
Under 1.7.3 VS Code extensions users could experience server connection failures and need 1.8 version to get support from Biome. See [biomejs/biome-vscode#261](https://github.com/biomejs/biome-vscode/issues/261)
Updated the following:
client (release group)
Dependencies on build-tools updated:
@fluid-tools/build-cli: 0.40.0
@fluidframework/build-tools: 0.40.0
@fluidframework/bundle-size-tools: 0.40.0
@fluid-tools/version-tools: 0.40.0
## Automated changes
This update caused two major changes:
- type tests are now more compact and several bugs have been addressed.
- Some api reports have comment-only changes.
## Manual changes
I also noticed that odsp-doclib-utils had a lint config that did not
extend from "prettier," so some lint rules that shouldn't be running
were getting triggered on the type tests. Extending the prettier config
resolved the problem.
Finally, I added an exclusion of the npm-metadata-and-sorting policy for
the root package.json because of
[AB#8640](https://dev.azure.com/fluidframework/235294da-091d-4c29-84fc-cdfc3d90890b/_workitems/edit/8640),
which I'll resolve later.
Our github wiki isn't really tailored for public consumers; that's what
our website is for.
This PR updates our README "Help" template (and all consuming READMEs)
to point users exclusively to our website for learning.
The repository.directory field is not correct for some packages. I
updated the broken ones using the policy in #21605. That policy will
protect against future issues once it's merged and brought into the
client release group.
Bumped client from 2.0.0-rc.5.0.0 to 2.1.0, the next version we intend
to release from main.
Command used:
```shell
flub bump client --exact 2.1.0
```
Includes the changes in #21346 which were needed to get this PR to pass
CI.
---------
Co-authored-by: Scott Norton <scottnorton@microsoft.com>
Updated the following:
client (release group)
Dependencies on server updated:
@fluidframework/gitresources: ^5.0.0
@fluidframework/server-kafka-orderer: ^5.0.0
@fluidframework/server-lambdas: ^5.0.0
@fluidframework/server-lambdas-driver: ^5.0.0
@fluidframework/server-local-server: ^5.0.0
@fluidframework/server-memory-orderer: ^5.0.0
@fluidframework/protocol-base: ^5.0.0
@fluidframework/server-routerlicious: ^5.0.0
@fluidframework/server-routerlicious-base: ^5.0.0
@fluidframework/server-services: ^5.0.0
@fluidframework/server-services-client: ^5.0.0
@fluidframework/server-services-core: ^5.0.0
@fluidframework/server-services-ordering-kafkanode: ^5.0.0
@fluidframework/server-services-ordering-rdkafka: ^5.0.0
@fluidframework/server-services-ordering-zookeeper: ^5.0.0
@fluidframework/server-services-shared: ^5.0.0
@fluidframework/server-services-telemetry: ^5.0.0
@fluidframework/server-services-utils: ^5.0.0
@fluidframework/server-test-utils: ^5.0.0
tinylicious: ^5.0.0
Command used:
```
flub bump deps server -g client --updateChecker homegrown
```
I also updated the lockfile resolution of the debug package to be 4.3.5,
the latest patch. Command used:
```shell
flub modify lockfile -g client --dependencyName=debug --version=^4.3.5
```
This was needed because the new server version brought in the new debug
version, so we had two versions when bundled, which our bundle-size
tests caught. By resolving uniformly to the latest, we unified the
version across client and server.
## Summary
The client release group is updated to use biome for formatting instead
of prettier.
## Changes
1. The `format` script in each package now calls biome instead of
prettier.
2. The root `format` task runs a single biome command from the root
instead of running format in every package.
3. The vscode root workspace settings have been updated to set the biome
extension as the default formatter.
4. The root biome config is now in JSONC instead of JSON.
5. Paths outside the client and build-tools release groups are ignored
in the biome config because they're not using biome (yet).
## Known issues
- Despite best efforts, formatting back and forth between biome and
prettier is not 100% fidelity. Some changes that biome makes prettier
does not revert, though it also doesn't start failing or anything. You
can see examples by running `pnpm format && pnpm format:prettier` from
the root and looking and the remaining changes.
- Reformatting does sometimes cause lint disable statements to get
misplaced and they have to be manually fixed up.
Updated the following:
- client (release group)
- client-release-group-root
Dependencies on build-tools updated:
- `@fluid-tools/build-cli`: 0.39.0
- `@fluidframework/build-tools`: 0.39.0
- `@fluidframework/bundle-size-tools`: 0.39.0
- `@fluid-tools/version-tools`: 0.39.0
- `@oclif/core` allowed to update - required by `@fluid` updates
Ran build to generate new typetest sources for changes in
https://github.com/microsoft/FluidFramework/pull/19224.
- `@sealed` tag to disables "forwards" compatibility testing making
extending sealed types not a breaking change. More docs are in progress
about this in https://github.com/microsoft/FluidFramework/pull/14421
- Make type tests import type preprocessors instead of inlining their
source. This (among other things) allows navigating to their
implementations and viewing the IntelliSense documenting the different
validators mentioned above.
- Add support for "MinimalType" (`@type-test-minimal`) and "FullType"
(``@type-test-full``) tags to opt into stricter validation or out of
validation via type preprocessors. These are mainly intended as
workarounds for type-testing limitations, and an incremental step toward
enabling more strict testing by default.
---------
Co-authored-by: Tyler Butler <tyler@tylerbutler.com>
## Summary
Adds several scripts that can be run to convert projects in the client
release group to use the biome formatter. The process can be effectively
reversed by running another script, so projects can switch between
prettier and biome using the scripts and the build will continue to
work.
After enabling biome formatting, you can manually format using biome
with the `format:biome`script.
Once projects are completely on biome and we no longer need to port
changes between prettier branches and biome branches, then we can remove
prettier completely using the remove-prettier script. We should only do
that once the last release branch using prettier is no longer in
service.
## Scripts
### add-biome.sh
This script adds biome formatting scripts to a project. It also adds a
local biome config file to the project if needed.
The `format:prettier` and `check:prettier` tasks are left intact, and
the `format` task still calls prettier. This
enables one to manually format using biome while leaving the overall
build using prettier.
After running this script, you can clean up the package.json files by
running `pnpm policy-check:fix`.
**This PR includes the changes made by running this script across the
client release group.**
### enable-biome.sh
This script enables biome formatting in a project. It updates the
`format` and `check:format` scripts to call biome. It
should only be run on projects that have already had biome added to it.
### enable-prettier.sh
This script enables prettier formatting in a project. It updates the
`format` and `check:format` scripts to call
prettier. It's the opposite of the enable-biome.sh script.
### remove-prettier.sh
Once a project is completely switched to biome and no longer needs
prettier, this script will remove the prettier
dependency and any related scripts and config files.
Bumping server dependencies to prerelease version in the client release
group to access new [targeted signal
capabilities](https://github.com/microsoft/FluidFramework/pull/19519) on
the client side.
Will need confirmation from FF release engineer(s) since they will be
the person who will have to do the real server release.
I used the following command to complete the bump from the repo root:
`flub bump deps server -g client -t greatest --prerelease`
I then did `pnpm install` to update the pnpm-lock file.
Updated the following:
client (release group)
Dependencies on @fluidframework/eslint-config-fluid updated:
@fluidframework/eslint-config-fluid: 5.3.0
There were some code changes needed to adhere to the lint config. They
were partially automated then I manually fixed up others.
## Description
Typescript 5.3 brings useful features like support for
[Symbol.hasInstance
narrowing](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-3.html#instanceof-narrowing-through-symbolhasinstance),
type checking optimizations and much more. Since ClientRequirements.md
lists our requirement at TypeScript 5.4, this should be ok (from the
perspective of aligning with that requirement)
See
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html
and
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-3.html
for more details.
Based on a two test runs, this change makes `pnpm run build:compile`
about 7% faster. (105.438 and 107.011 seconds instead of 113.816 and
114.096 without the change)
## Breaking Changes
This is not expected to break anything, however its possible that the
compile TypeScript is slightly different, which could cause issues in
some edge cases.
This will enable code to start relying on newer features, which when
used in public APIs could in turn cause breakages for users of older
versions of TypeScript.
There are a couple cases where type-tests were impacted. These seemed to
be a fix of typescript capturing more accurate types, especially around
index signatures, and cases where the TypeScript compiler wouldn't
provide any useful information about what changed with the only
difference being inside the `...` non-printed parts of the types. As the
changes seem relatively minor they seem unlikely to cause any real
issues (didn't break lots of examples/tests) and since we only support
customers using TypeScript 5.4 and plan to move to 5.4 ourselves at some
point, if this causes a breaking change in some edge case, that probably
a good thing to get out of the way now while we are still in the RC
phase.