Repository navigation
Fix website video playback in Windows Chrome and Edge - #396
Merged
Merged
Conversation
Bumps the rust-host group with 3 updates: [tree-sitter](https://github.com/tree-sitter/tree-sitter), [serde_json](https://github.com/serde-rs/json) and [toml](https://github.com/toml-rs/toml). Updates `tree-sitter` from 0.27.0 to 0.27.1 - [Release notes](https://github.com/tree-sitter/tree-sitter/releases) - [Commits](tree-sitter/tree-sitter@v0.27.0...v0.27.1) Updates `serde_json` from 1.0.151 to 1.0.154 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](serde-rs/json@v1.0.151...v1.0.154) Updates `toml` from 1.1.6+spec-1.1.0 to 1.1.8+spec-1.1.0 - [Commits](toml-rs/toml@toml-v1.1.6...toml-v1.1.8) --- updated-dependencies: - dependency-name: tree-sitter dependency-version: 0.27.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-host - dependency-name: serde_json dependency-version: 1.0.154 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-host - dependency-name: toml dependency-version: 1.1.8+spec-1.1.0 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-host ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the rust-zed group in /src/editors/zed with 1 update: [toml](https://github.com/toml-rs/toml). Updates `toml` from 1.1.6+spec-1.1.0 to 1.1.8+spec-1.1.0 - [Commits](toml-rs/toml@toml-v1.1.6...toml-v1.1.8) --- updated-dependencies: - dependency-name: toml dependency-version: 1.1.8+spec-1.1.0 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-zed ... Signed-off-by: dependabot[bot] <support@github.com>
…t-upgrades/rust-zed-1725422218 into dependabot-upgrades
Bumps the github-actions group with 6 updates: | Package | From | To | | --- | --- | --- | | [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.87.23` | `2.87.27` | | [actions/setup-node](https://github.com/actions/setup-node) | `7.0.0` | `7.1.0` | | [actions/download-artifact](https://github.com/actions/download-artifact) | `8.0.1` | `8.0.2` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.1` | `7.0.2` | | [github/codeql-action/init](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` | | [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` | Updates `taiki-e/install-action` from 2.87.23 to 2.87.27 - [Release notes](https://github.com/taiki-e/install-action/releases) - [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md) - [Commits](taiki-e/install-action@861a07c...ab68953) Updates `actions/setup-node` from 7.0.0 to 7.1.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@8207627...949feb2) Updates `actions/download-artifact` from 8.0.1 to 8.0.2 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@3e5f45b...9000827) Updates `actions/upload-artifact` from 7.0.1 to 7.0.2 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@043fb46...cf430e0) Updates `github/codeql-action/init` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@2892aa5...24c5418) --- updated-dependencies: - dependency-name: taiki-e/install-action dependency-version: 2.87.27 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: actions/setup-node dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: actions/download-artifact dependency-version: 8.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: actions/upload-artifact dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action/init dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: github/codeql-action/analyze dependency-version: 4.38.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the website group in /src/website with 1 update: [@playwright/test](https://github.com/microsoft/playwright). Updates `@playwright/test` from 1.63.0 to 1.64.0 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.63.0...v1.64.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.64.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: website ... Signed-off-by: dependabot[bot] <support@github.com>
…des/github-actions-c88aa5ffdc into dependabot-upgrades
…abot-upgrades/website-3c101cf53b into dependabot-upgrades
Bumps the vscode-extension group in /src/editors/vscode with 7 updates: | Package | From | To | | --- | --- | --- | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.4` | `26.6.5` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.71.0` | `8.71.1` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.71.0` | `8.71.1` | | [playwright](https://github.com/microsoft/playwright) | `1.63.0` | `1.64.0` | | [prettier](https://github.com/prettier/prettier) | `3.9.9` | `3.9.10` | | [typescript](https://github.com/microsoft/TypeScript) | `6.0.3` | `7.0.2` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.71.0` | `8.71.1` | Updates `@types/node` from 26.6.4 to 26.6.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@typescript-eslint/eslint-plugin` from 8.71.0 to 8.71.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.71.0 to 8.71.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.1/packages/parser) Updates `playwright` from 1.63.0 to 1.64.0 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.63.0...v1.64.0) Updates `prettier` from 3.9.9 to 3.9.10 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.9.9...3.9.10) Updates `typescript` from 6.0.3 to 7.0.2 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](microsoft/TypeScript@v6.0.3...v7.0.2) Updates `typescript-eslint` from 8.71.0 to 8.71.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.1/packages/typescript-eslint) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.6.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vscode-extension - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.71.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vscode-extension - dependency-name: "@typescript-eslint/parser" dependency-version: 8.71.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vscode-extension - dependency-name: playwright dependency-version: 1.64.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: vscode-extension - dependency-name: prettier dependency-version: 3.9.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vscode-extension - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: vscode-extension - dependency-name: typescript-eslint dependency-version: 8.71.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: vscode-extension ... Signed-off-by: dependabot[bot] <support@github.com>
…/dependabot-upgrades/vscode-extension-9912a3cfe6 into dependabot-upgrades
Bumps Fantomas.Core from 8.0.7 to 8.0.8 Bumps FSharp.Compiler.Service from 43.12.401 to 43.12.402 Bumps FSharp.Core from 10.1.401 to 10.1.402 Bumps MessagePack from 3.1.11 to 3.1.12 Bumps Microsoft.CodeAnalysis.NetAnalyzers from 10.0.401 to 10.0.402 Bumps Microsoft.NET.Test.Sdk from 18.10.1 to 18.11.0 Bumps System.Security.Cryptography.Xml from 10.0.12 to 10.0.13 Bumps xunit.runner.visualstudio from 4.0.0 to 4.0.1 --- updated-dependencies: - dependency-name: Fantomas.Core dependency-version: 8.0.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: FSharp.Compiler.Service dependency-version: 43.12.402 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: FSharp.Core dependency-version: 10.1.402 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: FSharp.Core dependency-version: 10.1.402 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: MessagePack dependency-version: 3.1.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: MessagePack dependency-version: 3.1.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: Microsoft.CodeAnalysis.NetAnalyzers dependency-version: 10.0.402 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-sidecars - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dotnet-sidecars - dependency-name: System.Security.Cryptography.Xml dependency-version: 10.0.13 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dotnet-sidecars ... Signed-off-by: dependabot[bot] <support@github.com>
…bot-upgrades/dotnet-sidecars-61cedddb46 into dependabot-upgrades
… framework-switch order, Windows-only selections that run nothing - A single-target C# project whose name ends in (tfm) is no longer read as a framework context (#382) - A framework switch re-publishes open documents' diagnostics before announcing itself and asking for refreshes (#383) - Off Windows, a MOCHA_FILES pattern naming only windowsOnly suites fails instead of passing a run of nothing (#384)
The whole PR pipeline skips Dependabot, and the terminal gate passed the skipped run, so a security bump the sweep did not retire showed a green required check and could merge into main untested. The gate now fails it; bumps reach main only through the tested dependabot-upgrades consolidation PR.
…located, each diff replaces the last diff's leak badges (Nimblesite/lspkit#12)
…hreads counted once per tick, arrays never located, honest retention truncation and PROCESS_NOT_FOUND, fresh leak badges
The objects step keeps the requested type's own row when it is too small to rank among the twenty largest, so a union case such as OrderStatus+Paid agrees with its totals. Types whose PDB names a build server's checkout, as FSharp.Core's does, have no location instead of a path that does not exist here.
…rts already narrow
The CPU results panel and the memory dashboard checked the same SharpLsp brand, foreign-product and nonce rules in two copies, and the webviews suite kept its own copy of the kit's dashboard snapshot. One helper each brings duplication back under the Deslop ratchet; every assertion is unchanged.
The corner suite releases the ledger before counting 300 live orders and no longer claims the dashboard keeps a stopped session's snapshot, which memory-flows and the F# memory suite rule out. The memory-step helpers and error codes move into the soak kit, the wire suite splits into protocol, CPU and memory suites, and the fixture locations and builds move from profiler-kit into profiler-fixtures, so no suite or kit passes 500 lines.
FSharp.Core types no longer anchor at the build server's paths, sites with no location stay unlocated in the UI, the objects summary keeps the requested type's row, and the retention graph draws each root by its label.
Every profiler operation takes exactly one argument, its typed params object ([PROF-WIRE-METHODS]). The host passed the first argument on and ignored the rest, so `capabilities` answered `[]`, `[42]` and two objects alike. Anything but one JSON object is now INVALID_PARAMS before the service sees it; an absent argument list still means empty params.
… tools reusable
A new Profiling F# page (en, ja, zh) covers what the profiler does with F#'s
compiled code: closures and pipeline stages by name, records and union cases
painted on the line that builds them, module values named as written in the
retention graph, and the fix. The profiler, F# and memory-leak pages link to it,
and the F# pages play profiler-fsharp: FsStorefront's CPU and memory, narrated,
scored and captioned in every site language.
The film tools become a kit any film can use. A film is one file in films/: its
demo, its poster and its scenes, told through kit/acts/cpu.mjs and
kit/acts/memory.mjs. film.mjs (or make _film FILM=<film>) shoots and publishes
it. kit/set.mjs stages a demo from demos/ beside an isolated VS Code;
kit/workbench.mjs, camera.mjs and overlay.mjs are the moves, the recorder and
the captions; kit/sound/ speaks a reviewed script locally with Kokoro
(kokoro-js), synthesises an original score, ducks it under the voice and
normalises to -16 LUFS. The README says how to add a film.
{% video %} plays a narrated film unmuted with caption tracks; only autoplaying
loops stay muted.
Heap snapshots name every type during a CPU session, peak_bytes is the session peak, a timed CPU session ends, the UI's Stop ends the server session, and a hot function with no location stays unlocated. The F# CPU suite reads the now-optional hot-function line without assuming it.
The wire CPU suite waits for a timed session to leave cpu.list and holds its report to exactly the requested two seconds; the protocol suite rejects two params objects to cpu.list. The soak suites check the live status bar's own sample count and elapsed time, that a flat comparison resets a growth streak, and the undo history's closed generic through objectsByType, whose summary now keeps a type too small to rank.
The ground truth read the fixture's stage timers before the profiler had attached, so parse's measured share carried one to two seconds the profiler never sampled, while every share is of the profiled window ([PROF-AGGREGATION-LOGIC]). The timers are now read after live progress starts; every assertion and tolerance is unchanged.
…it bare
Every profiler operation is `workspace/executeCommand` with exactly one
argument, its typed params object (lspkit LSP-PROFILER-SPEC.md, the LSP
surface table, [PROF-WIRE-METHODS]), and the host now refuses anything
else. Three test call sites sent `cpu.list` with no argument at all,
which the host used to tolerate. Every production caller (the
lsp-profiler-ui library's 13 calls) already sends one object, and no
contribution or other editor runs these commands bare. The calls now pass
`{}`. No assertion changes.
The profiler UI's progress operation log trimmed single entries past 500, which SharpLsp's profiler run now exceeds, so the refresh-progress and balanced-progress checks read a truncated log.
An F# project reads the C# projects it references from an in-memory Roslyn compile of their design-time command line, but that compile skipped the source generators the command line names. GitReader.Core polyfills .NET Framework with PolySharp, so for net48 its init accessors had no IsExternalInit, Roslyn emitted nothing, and the F# test project read a DLL nobody built: FS0078 and FS0084 on every net48 file. The compile now runs the /analyzer: assemblies' C# generators first, as the build does.
ensureRepoReady cloned and ran `dotnet restore` with execFileSync inside the extension host, in the same 600 s setup hook that then loads the solution and warms it up. A cold restore of GitReader on a Windows runner once took 596 s (fix/377's identical cold start took 114 s): VS Code was reported unresponsive for all of it, and the hook timed out although the restore succeeded. The clone and restore now run asynchronously, in a setup hook with a budget of its own. No assertion changes.
The generator pass passed mutable locals by reference to Roslyn's out parameters inside a match arm, which the F# optimizer turns into invalid IL in Release: every F# project referencing a C# project failed to load with "Common Language Runtime detected an invalid program". The pass now adds the driver's generated trees to the compilation, and a generator assembly that does not load here is skipped and logged instead of throwing.
Every docs page with a feature to show now opens on a narrated walkthrough of the real extension, captioned in English, Japanese and Chinese: getting started, editor setup, configuration, F# language support, completions, hover, navigation, diagnostics, refactoring, context menus, NuGet, the profiler (a C# tour), memory leaks (now narrated, on the layered retention graph), architecture and contributing. The language films run on demos/Shop.slnx, C# and F# in one solution, and show F# first. Bugs the cameras found, each fixed test-first: - F#: hand-built project options put every source file on the FCS command line as well as in SourceFiles, so FCS compiled each file twice and every F# project showed FS3551 warnings. - Sort Members kept each member's own blank lines and added its own, leaving two or three blank lines between members. - NuGet: the version picker beside Install showed the newest listed version, often a prerelease, not the version Install sends. The film kit gains language acts (completion, quick fixes, rename, navigation, the Solution Explorer), a gliding pointer, retried takes, logs kept from a failed shoot, and a neutral environment: staging, temp files and a cloned .NET install under /tmp, with the login shell's environment off, so no home path reaches a frame.
…me paths Every feature page's still and every figure in the launch post (en/ja/zh) is now shot by films/doc-stills.mjs on the Shop demo, in the same isolated editor as the films. The 20 old PNG captures, which showed another product's name and a home directory in the Profiler panel, are deleted: no page used them, but the site still served them. - Each still is a 2400px WebP with width, height and alt text that describes the frame in the page's language; the launch post's captions now match their frames. - The kit: a film may publish stills alone, into its own screenshots folder; a still can keep a hover open; workbench dialogs (window.dialogStyle custom) let reopen answer the save prompt, and it fails if an edited editor survives. - SCREENSHOT-FIX-PLAN.md is complete (hover, diagnostics and definition are shown working, the pages are live) and is deleted.
…back # Conflicts: # docs/specs/DESIGN-SYSTEM.md # src/website/src/_data/videos.json # src/website/tests/profiler-media.spec.js # src/website/tools/profiler-film/README.md # src/website/tools/profiler-film/film.mjs # src/website/tools/profiler-film/films/architecture.mjs # src/website/tools/profiler-film/films/configuration.mjs # src/website/tools/profiler-film/kit/acts/language.mjs # src/website/tools/profiler-film/kit/camera.mjs # src/website/tools/profiler-film/kit/editor.mjs
…layback # Conflicts: # docs/specs/DESIGN-SYSTEM.md # src/website/tests/site-videos.spec.js # src/website/tools/profiler-film/README.md # src/website/tools/profiler-film/film.mjs # src/website/tools/profiler-film/films/fsharp.mjs # src/website/tools/profiler-film/films/leak.mjs # src/website/tools/profiler-film/kit/camera.mjs # src/website/tools/profiler-film/kit/encode.mjs # src/website/tools/profiler-film/kit/scenes.mjs # src/website/tools/profiler-film/kit/set.mjs # src/website/tools/profiler-film/kit/sound/voice.mjs # src/website/tools/profiler-film/kit/workbench.mjs
…ndows-video-playback # Conflicts: # .github/workflows/ci-audit.yml # .github/workflows/ci-build.yml # .github/workflows/ci-test-editors.yml # .github/workflows/ci-test-rust.yml # .github/workflows/ci-test-tooling.yml # .github/workflows/ci.yml # .github/workflows/deploy-pages.yml # .github/workflows/release.yml # Cargo.lock # src/editors/vscode/package-lock.json # src/editors/vscode/package.json # src/sidecars/SharpLsp.Sidecar.FSharp/SharpLsp.Sidecar.FSharp.fsproj # src/website/package-lock.json # src/website/package.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TLDR
Website films play in Windows Chrome and Edge again: every video lists its H.264 MP4 before its VP9 WebM, and a new playback test proves frames actually decode.
Details
<source>, decode one frame, then stop withPIPELINE_ERROR_DECODE, and never try the next source. Every film listed WebM first, so every film failed there.src/_data/videos.json: all 18 films now list["mp4", "webm"].video-figure.js: the VideoObjectcontentUrlpoints to the first (preferred) encoding instead of the last, so search engines link the MP4.tests/video-playback.spec.js: plays 20 films across docs and blog pages, then pauses, seeks to the middle and resumes. Each step checks that the clock advances, frames decode (getVideoPlaybackQuality().totalVideoFrames) andvideo.errorstays null. A served file and a resolvedplay()don't prove playback.tests/media.js: a newexpectFramesAdvancehelper, which also catches decode errors raised afterplay()resolves.playwright.config.js: on Windows, the playback spec also runs on installed Chrome and Edge, where the bug reproduced; bundled Chromium and WebKit passed. The phone projects use installed Chrome there because Windows WebKit rejects known-good H.264.docs/specs/DESIGN-SYSTEM.md[WEB-DESIGN-MEDIA] records the MP4-first rule and the playback-test requirement.profiler-media.spec.jsandsite-videos.spec.jsnow expect MP4 first.feature/narrated-doc-films,feature/doc-stillsandfix/382-netfx-review-findings(all already squash-merged as Narrated films for every docs page, and the bugs filming found #392, Docs stills from the film kit, and retire the old captures that showed home paths #393 and Fix the open v0.22.0 review findings, and prove the profiler on real F# programs #385), plusdependabot-upgrades. None of them changes any file against main:<6.1.0);lspkitpin stays on lspkitmain(ccc59bf).How Do The Automated Tests Prove It Works?
video-playback.spec.js: one test per film, named<route> video <n> decodes, pauses, seeks and resumes. It runs on Chromium, iPhone SE and iPhone 14 everywhere, and on Windows also on installedchromeandmsedge. Each film must:error === null;currentTimeis unchanged after 250ms;duration / 2.site-videos.spec.js›expectDescribedasserts the VideoObjectcontentUrlis the first listed source.profiler-media.spec.jsasserts the hero film's<source>order is MP4 then WebM.make _test-website) passes locally, and Deslop reports 6.5% against the 6.65% threshold.