diff --git a/AGENTS.md b/AGENTS.md index be5e214..7cb2d1b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -94,4 +94,6 @@ A new release: copy the engine's changelog and compatibility facts, add its npm publish time to `published` in `src/lib/changelog.ts` (and to `measured` anything its notes measured before and after), set `site.version` and `site.release`, record the terminal and capture the demo run again (their -READMEs), and check every page that quotes a number against the release. +READMEs), and check every page that quotes a number against the release. A +patch that changes nothing they show keeps its recordings: their captions name +the release they are from. diff --git a/scripts/terminal/README.md b/scripts/terminal/README.md index 4bd89a0..d3762b7 100644 --- a/scripts/terminal/README.md +++ b/scripts/terminal/README.md @@ -56,7 +56,7 @@ each release, with the Node the screen should show first on `PATH`: --command "npx firebase emulators:start" --swap firebase=firenook --append " --keep-data" # init needs a folder that does not exist yet; shop becomes the project demo-shop. -.venv/bin/python3 record-init.py 108 39 ~/shop 0.2.0 /tmp/init.json +.venv/bin/python3 record-init.py 108 39 ~/shop 0.2.1 /tmp/init.json .venv/bin/python3 build.py /tmp/init.json /tmp/init-frames.json 2 .venv/bin/python3 gif.py /tmp/init-frames.json /tmp/init.gif --title "~/shop" \ --command "npx firenook init" --longest-wait 2.5 diff --git a/src/content/docs/docs/contribute/build.md b/src/content/docs/docs/contribute/build.md index 13a26b6..63be7a1 100644 --- a/src/content/docs/docs/contribute/build.md +++ b/src/content/docs/docs/contribute/build.md @@ -11,7 +11,7 @@ project, and which tests a change must pass. ## What you need - **Rust**, the toolchain `rust-toolchain.toml` names: the stable channel with - `clippy` and `rustfmt`. The workspace needs Rust 1.98 or later, and 0.2.0 + `clippy` and `rustfmt`. The workspace needs Rust 1.98 or later, and 0.2.1 was built with 1.98.0, the toolchain the release records. - **Node 24.20.0 and npm 12.0.2**, the versions `CONTRIBUTING.md` names and the repository's checks pin: `console/` and `conformance/` declare @@ -86,7 +86,7 @@ what they lack. To run a change in your own app through the npm launcher, build a local candidate. It is a pair of private tarballs, the launcher and your machine's engine, with a version of their own that names the commit, such as -`0.2.0-local.g1a2b3c4d5e6f`. Nothing is published. +`0.2.1-local.g1a2b3c4d5e6f`. Nothing is published. 1. Commit your change. The build refuses uncommitted tracked changes, so every candidate names the exact source it came from. diff --git a/src/content/docs/docs/data/keep-data.mdx b/src/content/docs/docs/data/keep-data.mdx index b7f81b7..5427677 100644 --- a/src/content/docs/docs/data/keep-data.mdx +++ b/src/content/docs/docs/data/keep-data.mdx @@ -19,7 +19,7 @@ npx firenook emulators:start --keep-data The first start begins empty and says where the data goes: ```text -firenook 0.2.0 +firenook 0.2.1 demo-shop · a fresh start Node 24.20.0 · data in .firenook/state ``` @@ -34,7 +34,7 @@ Every later start picks the data up, says when it was saved, and counts what it holds: ```text -firenook 0.2.0 +firenook 0.2.1 demo-shop · picking up the data saved just now Node 24.20.0 · data in .firenook/state @@ -52,7 +52,7 @@ Each start gets a new, empty working directory, `.firenook/runs/session-/state`, and says so: ```text -firenook 0.2.0 +firenook 0.2.1 demo-shop · a fresh start Node 24.20.0 · data in .firenook/runs/session-VLd3PD, for this run ``` diff --git a/src/content/docs/docs/data/seeds.mdx b/src/content/docs/docs/data/seeds.mdx index 2336c2d..23aa4f5 100644 --- a/src/content/docs/docs/data/seeds.mdx +++ b/src/content/docs/docs/data/seeds.mdx @@ -59,7 +59,7 @@ npx firenook emulators:start --import ./data --keep-data The first start imports it into `.firenook/state`: ```text -firenook 0.2.0 +firenook 0.2.1 demo-shop · first start, importing the seed "data" Node 24.20.0 · data in .firenook/state diff --git a/src/content/docs/docs/functions/debugging.mdx b/src/content/docs/docs/functions/debugging.mdx index bb8ac4d..9af02ec 100644 --- a/src/content/docs/docs/functions/debugging.mdx +++ b/src/content/docs/docs/functions/debugging.mdx @@ -46,7 +46,7 @@ codebase points it out. ### If a save seems to change nothing -In 0.2.0, a save that stops a codebase loading, such as code that throws +In 0.2.1, a save that stops a codebase loading, such as code that throws while it loads or a param with no default and no value, is reported only on the terminal screen. The plain output (`--plain`, pipes and CI) and the `--debug` log print nothing about it, and the version loaded before keeps diff --git a/src/content/docs/docs/functions/scheduled.mdx b/src/content/docs/docs/functions/scheduled.mdx index cd3c115..3491add 100644 --- a/src/content/docs/docs/functions/scheduled.mdx +++ b/src/content/docs/docs/functions/scheduled.mdx @@ -112,7 +112,7 @@ Firenook: schedule event pubsub for nightlyReport (us-central1, gcfv2) via trigg 200 OK http://127.0.0.1:5001/functions/projects/demo-shop/triggers/us-central1-nightlyReport-0 ``` -A schedule takes no data, so `--event-data '{}'` is enough. In 0.2.0 it is +A schedule takes no data, so `--event-data '{}'` is enough. In 0.2.1 it is also needed: without it, `functions:invoke` sends a plain HTTPS request, which a scheduled function does not answer, and the command exits with 1: diff --git a/src/content/docs/docs/get-started/ci.md b/src/content/docs/docs/get-started/ci.md index 37b8bf6..e519319 100644 --- a/src/content/docs/docs/get-started/ci.md +++ b/src/content/docs/docs/get-started/ci.md @@ -70,7 +70,7 @@ looks like this, trimmed: ```text Firenook: running the script through the shell as the official CLI does; use -- for an argv command without shell interpretation -Firenook 0.2.0; engine 7a9614bea49f8208f96d2126b29ef11ee2f2810b; disk/WAL state /.firenook/runs/session-Syhid2/state +Firenook 0.2.1; engine 6556f79b2fda6ccc53c4700aff5fffc029939cde; disk/WAL state /.firenook/runs/session-Syhid2/state Services: firestore, auth, storage, functions, pubsub; Emulator UI on; host localhost Demo project demo-shop: no cloud service is contacted, but user Functions can still reach external providers; this CLI is not a network sandbox. Working data and launch receipt are preserved in /.firenook/runs/session-Syhid2. No automatic deletion. diff --git a/src/content/docs/docs/get-started/install.mdx b/src/content/docs/docs/get-started/install.mdx index 8f0ad93..4e7ddb5 100644 --- a/src/content/docs/docs/get-started/install.mdx +++ b/src/content/docs/docs/get-started/install.mdx @@ -115,7 +115,7 @@ stops: ```console $ npx firenook binary-path -Firenook: Missing @firenook/cli-darwin-arm64@0.2.0. Install with optional dependencies enabled. No postinstall script is needed. +Firenook: Missing @firenook/cli-darwin-arm64@0.2.1. Install with optional dependencies enabled. No postinstall script is needed. ``` :::note @@ -150,7 +150,7 @@ published with, and prints where it is: ```console $ npx firenook --version -0.2.0 (engine source 7a9614bea49f8208f96d2126b29ef11ee2f2810b) +0.2.1 (engine source 6556f79b2fda6ccc53c4700aff5fffc029939cde) $ npx firenook binary-path ~/demo-shop/node_modules/@firenook/cli-darwin-arm64/bin/firenook ``` @@ -186,8 +186,8 @@ $ npx firenook doctor }, "warnings": [], "problems": [], - "version": "0.2.0", - "engineRevision": "7a9614bea49f8208f96d2126b29ef11ee2f2810b" + "version": "0.2.1", + "engineRevision": "6556f79b2fda6ccc53c4700aff5fffc029939cde" } ``` diff --git a/src/content/docs/docs/get-started/new-project.mdx b/src/content/docs/docs/get-started/new-project.mdx index 5e1acfa..f4c7c86 100644 --- a/src/content/docs/docs/get-started/new-project.mdx +++ b/src/content/docs/docs/get-started/new-project.mdx @@ -62,7 +62,7 @@ Enter takes them all: ╭──────────────────────────────────────────────────────────────────────────╮ │ │ │ ▄█ │ - │ ▄███▀ ▄ firenook 0.2.0 │ + │ ▄███▀ ▄ firenook 0.2.1 │ │ ▄███▀ ███▄ a new project in ~/my-app │ │ ▀██▀ ███▀ Node 24.20.0 · Claude Code found │ │ █▀▀ │ @@ -113,7 +113,7 @@ once. Each step gets a line with its time: │ │ │ Files ✓ 4 ms firebase.json, .firebaserc, rules, functions/, … │ │ Agents ✓ 0 ms .mcp.json for Claude Code │ - │ Firenook ✓ 517 ms 0.2.0 in package.json │ + │ Firenook ✓ 517 ms 0.2.1 in package.json │ │ Packages ✓ 14.1 s npm install in functions/, 241 packages │ │ Build ✓ 1.1 s tsc, into functions/lib │ │ │ @@ -211,7 +211,7 @@ The scripts, as `init` writes them for TypeScript: "emulators": "firenook emulators:start --keep-data --build" }, "devDependencies": { - "firenook": "0.2.0" + "firenook": "0.2.1" } } ``` @@ -292,7 +292,7 @@ Firenook init: project demo-my-app in ~/my-app wrote ~/my-app/functions/.gitignore wrote ~/my-app/.gitignore done Agents: .mcp.json for Claude Code (0.0 s) - done Firenook: 0.2.0 in package.json (0.4 s) + done Firenook: 0.2.1 in package.json (0.4 s) done Packages: npm install in functions/, 241 packages (2.3 s) done Build: tsc, into functions/lib (0.8 s) Next steps: diff --git a/src/content/docs/docs/get-started/tests.md b/src/content/docs/docs/get-started/tests.md index 94cc2b1..4ff331b 100644 --- a/src/content/docs/docs/get-started/tests.md +++ b/src/content/docs/docs/get-started/tests.md @@ -149,7 +149,7 @@ builds the functions and starts the emulators around it. Trimmed: ```console $ npm run test:integration Firenook: running the script through the shell as the official CLI does; use -- for an argv command without shell interpretation -Firenook 0.2.0; engine 7a9614bea49f8208f96d2126b29ef11ee2f2810b; disk/WAL state ~/demo-shop/.firenook/runs/session-Syhid2/state +Firenook 0.2.1; engine 6556f79b2fda6ccc53c4700aff5fffc029939cde; disk/WAL state ~/demo-shop/.firenook/runs/session-Syhid2/state Services: firestore, auth, storage, functions, pubsub; Emulator UI on; host localhost Build: functions runs its build script before the emulators start firenook functions: Loaded functions definitions from source: helloWorld, orderTotal. diff --git a/src/content/docs/docs/help/former-name.md b/src/content/docs/docs/help/former-name.md index fc993ca..6ec45a5 100644 --- a/src/content/docs/docs/help/former-name.md +++ b/src/content/docs/docs/help/former-name.md @@ -71,7 +71,7 @@ where Fireside left it. Start with the same `--state-dir`, and the same ```console $ npx firenook emulators:start --keep-data --state-dir ./local-state --import ./seed -Firenook 0.2.0; engine 7a9614bea49f8208f96d2126b29ef11ee2f2810b; disk/WAL state ~/demo-shop/local-state +Firenook 0.2.1; engine 6556f79b2fda6ccc53c4700aff5fffc029939cde; disk/WAL state ~/demo-shop/local-state firenook resuming validated native state (seed import skipped) firenook: indexed the top-level fields of 5 Firestore documents in 0.0 s All emulators ready diff --git a/src/content/docs/docs/help/report.md b/src/content/docs/docs/help/report.md index d4dd32f..7654032 100644 --- a/src/content/docs/docs/help/report.md +++ b/src/content/docs/docs/help/report.md @@ -17,7 +17,7 @@ Search the open and closed issues first: someone may have reported it, and ```console $ npx firenook --version -0.2.0 (engine source 7a9614bea49f8208f96d2126b29ef11ee2f2810b) +0.2.1 (engine source 6556f79b2fda6ccc53c4700aff5fffc029939cde) ``` Include the whole line: the engine revision says exactly which engine you @@ -51,7 +51,7 @@ log to the run's folder and prints where: ```console $ npx firenook emulators:start --plain --debug --only firestore -Firenook 0.2.0; engine 7a9614bea49f8208f96d2126b29ef11ee2f2810b; disk/WAL state ~/demo-shop/.firenook/runs/session-12IyTo/state +Firenook 0.2.1; engine 6556f79b2fda6ccc53c4700aff5fffc029939cde; disk/WAL state ~/demo-shop/.firenook/runs/session-12IyTo/state Services: firestore; Emulator UI on; host localhost Demo project demo-shop: no cloud service is contacted, but user Functions can still reach external providers; this CLI is not a network sandbox. Debug log: ~/demo-shop/.firenook/runs/session-12IyTo/firenook-debug.log diff --git a/src/content/docs/docs/help/troubleshooting.md b/src/content/docs/docs/help/troubleshooting.md index 6298910..5520297 100644 --- a/src/content/docs/docs/help/troubleshooting.md +++ b/src/content/docs/docs/help/troubleshooting.md @@ -82,7 +82,7 @@ it where your app connects too. Every emulator needs its own port; see ```console $ npx firenook emulators:start -Firenook: Missing @firenook/cli-darwin-arm64@0.2.0. Install with optional dependencies enabled. No postinstall script is needed. +Firenook: Missing @firenook/cli-darwin-arm64@0.2.1. Install with optional dependencies enabled. No postinstall script is needed. ``` The native engine for your machine comes in an optional dependency, one diff --git a/src/content/docs/docs/help/versions.md b/src/content/docs/docs/help/versions.md index 6fd6d00..11bbf77 100644 --- a/src/content/docs/docs/help/versions.md +++ b/src/content/docs/docs/help/versions.md @@ -8,8 +8,8 @@ install one on purpose, and how to check the package and the engine you have. ## Releases -The current release is `0.2.0`, the first for public use. Before it came the -previews, `0.2.0-next.1` to `0.2.0-next.8`. Each release is listed, with what +The current release is `0.2.1`. The first for public use was `0.2.0`, and +before it came the previews, `0.2.0-next.1` to `0.2.0-next.8`. Each release is listed, with what it changed and what it passed, on the [releases page](https://github.com/firenook-dev/firenook/releases) and in the [changelog](/changelog). @@ -20,7 +20,7 @@ only held the name before the first release and contains no emulator. ## Channels -npm has two tags for Firenook. `latest` is the release to install, `0.2.0` +npm has two tags for Firenook. `latest` is the release to install, `0.2.1` today; `npm install firenook` and a bare `npx firenook` get it on any Node from 20 up. `next` carries previews, which keep their own `-next` versions. `npm view firenook dist-tags` shows where each tag points. @@ -34,9 +34,9 @@ and every CI run gets the same release until you upgrade: npm install --save-dev firenook ``` -npm records it as `^0.2.0`: an update can take a later `0.2` release, never +npm records it as `^0.2.1`: an update can take a later `0.2` release, never `0.3` or a preview. To install one release in particular, name it, as in -`npm install --save-dev firenook@0.2.0`. +`npm install --save-dev firenook@0.2.1`. Firenook never upgrades itself. In a terminal, it asks the npm registry for the version tags at most once a day, in the background, and the next start @@ -51,8 +51,8 @@ say whether it changes how data is stored. ## Data between releases -Data kept with `--keep-data` moves between `0.2.0` and the last preview in -both directions: +Data kept with `--keep-data` moves between `0.2.1` and `0.2.0` as it is. It +also moves between `0.2.0` and the last preview, in both directions: - The first `0.2.0` start of data an earlier release saved builds the ordered field index once, with one read of every document: 7.4 s for @@ -77,14 +77,14 @@ both: ```console $ npx firenook --version -0.2.0 (engine source 7a9614bea49f8208f96d2126b29ef11ee2f2810b) +0.2.1 (engine source 6556f79b2fda6ccc53c4700aff5fffc029939cde) ``` The launcher records the engine it expects in `release.json`: ```json title="node_modules/firenook/release.json" { - "engineRevision": "7a9614bea49f8208f96d2126b29ef11ee2f2810b", + "engineRevision": "6556f79b2fda6ccc53c4700aff5fffc029939cde", "rustToolchain": "1.98.0", "platforms": { "darwin-arm64": "aarch64-apple-darwin", @@ -101,10 +101,10 @@ cut short: ```json title="node_modules/@firenook/cli-darwin-arm64/receipt.json" { - "version": "0.2.0", + "version": "0.2.1", "platform": "darwin-arm64", "target": "aarch64-apple-darwin", - "engineRevision": "7a9614bea49f8208f96d2126b29ef11ee2f2810b", + "engineRevision": "6556f79b2fda6ccc53c4700aff5fffc029939cde", "sha256": "…" } ``` @@ -152,7 +152,7 @@ They do not replace npm's provenance or your lockfile. ## What a release has passed -Each release on GitHub, tagged `npm-v0.2.0` and so on, names its +Each release on GitHub, tagged `npm-v0.2.1` and so on, names its engine revision and the CI runs it passed, and carries: - the published tarballs, the launcher's and each platform's; @@ -165,8 +165,8 @@ You can compare what npm serves with the manifest. `npm pack` downloads the tarball, and its SHA-256 must match the manifest's: ```sh -npm pack firenook@0.2.0 -shasum -a 256 firenook-0.2.0.tgz +npm pack firenook@0.2.1 +shasum -a 256 firenook-0.2.1.tgz ``` A platform is supported for a release only when that release's run passed on diff --git a/src/content/docs/docs/index.mdx b/src/content/docs/docs/index.mdx index 41ef058..fad9635 100644 --- a/src/content/docs/docs/index.mdx +++ b/src/content/docs/docs/index.mdx @@ -59,7 +59,7 @@ Java and nothing else to download. ## Status -These docs describe Firenook `0.2.0`, the first release for public use. It +These docs describe Firenook `0.2.1`. It runs on Node 22, 24 or 26, on macOS (Apple silicon and Intel), Linux x64 and arm64 with glibc 2.28 or newer, and Windows x64. Every release passes conformance replays against the official emulator and packed installs on all diff --git a/src/content/docs/docs/reference/cli.md b/src/content/docs/docs/reference/cli.md index a8591e9..a9599a1 100644 --- a/src/content/docs/docs/reference/cli.md +++ b/src/content/docs/docs/reference/cli.md @@ -1,6 +1,6 @@ --- title: CLI commands -description: Every firenook command and flag in 0.2.0, grouped as firenook --help groups them, with what each does and its default. +description: Every firenook command and flag in 0.2.1, grouped as firenook --help groups them, with what each does and its default. --- Every command the `firenook` executable takes, grouped as `firenook --help` @@ -9,7 +9,7 @@ groups them. Run them through your package manager (`npx firenook ...`, ```console $ npx firenook --version -0.2.0 (engine source 7a9614bea49f8208f96d2126b29ef11ee2f2810b) +0.2.1 (engine source 6556f79b2fda6ccc53c4700aff5fffc029939cde) ``` `firenook --help`, `-h` or `help` prints one help text for every command, @@ -292,8 +292,8 @@ $ npx firenook doctor ... "warnings": [], "problems": [], - "version": "0.2.0", - "engineRevision": "7a9614bea49f8208f96d2126b29ef11ee2f2810b" + "version": "0.2.1", + "engineRevision": "6556f79b2fda6ccc53c4700aff5fffc029939cde" } ``` diff --git a/src/content/docs/docs/reference/mcp-tools.mdx b/src/content/docs/docs/reference/mcp-tools.mdx index 00905c0..ef5b2c6 100644 --- a/src/content/docs/docs/reference/mcp-tools.mdx +++ b/src/content/docs/docs/reference/mcp-tools.mdx @@ -6,7 +6,7 @@ description: All 54 tools firenook mcp gives a coding agent, by group, with what import McpTools from '../../../../components/docs/McpTools.astro'; `firenook mcp` serves these 54 tools to a coding agent, in this order. The -list is what the server answers to `tools/list` in 0.2.0. To connect +list is what the server answers to `tools/list` in 0.2.1. To connect an agent, see [Connect your coding agent](/docs/tools/mcp). Two marks recur below: diff --git a/src/content/docs/docs/services/auth.md b/src/content/docs/docs/services/auth.md index 303bdff..7b76830 100644 --- a/src/content/docs/docs/services/auth.md +++ b/src/content/docs/docs/services/auth.md @@ -105,8 +105,13 @@ console.log('google', user.email, user.providerData.map((p) => p.providerId)); google grace@example.com [ 'google.com' ] ``` -`signInWithPopup` and `signInWithRedirect` open the emulator's own helper -page, where you pick an account or add a new one. +`signInWithPopup` and `signInWithRedirect` open the emulator's own sign-in +page. It works over plain http from any address the emulator answers on, such +as a LAN address from a phone, or a container's name. It lists the provider's +test accounts, with a filter once there are eight or more. **New random user** +opens the form filled in with a made-up name and email, which you can change +before signing in, and **Add account** opens it empty. The next sign-in offers +that account like any other. No password is asked for. ## Codes and links diff --git a/src/content/docs/docs/services/functions.mdx b/src/content/docs/docs/services/functions.mdx index d90e05c..531385d 100644 --- a/src/content/docs/docs/services/functions.mdx +++ b/src/content/docs/docs/services/functions.mdx @@ -167,7 +167,7 @@ answering, and the next save loads them again; [if a save seems to change nothing](/docs/functions/debugging#if-a-save-seems-to-change-nothing), read the terminal screen or the console. In a terminal, `r` reloads by hand. -In 0.2.0, a function you remove, rename or move to another region (a +In 0.2.1, a function you remove, rename or move to another region (a `region` param changed in `.env`, for one) keeps its old route until the emulators restart. A call to the old route answers `500`, and the log says: diff --git a/src/content/docs/docs/tools/mcp.mdx b/src/content/docs/docs/tools/mcp.mdx index 86f02c3..7905366 100644 --- a/src/content/docs/docs/tools/mcp.mdx +++ b/src/content/docs/docs/tools/mcp.mdx @@ -163,7 +163,7 @@ agent starts it in, and takes the project id from there. Its first line, on stderr, says what it found: ```text -firenook mcp 0.2.0: 54 tools over stdio for project demo-shop (from ~/demo-shop/firebase.json); local emulators only +firenook mcp 0.2.1: 54 tools over stdio for project demo-shop (from ~/demo-shop/firebase.json); local emulators only ``` `--project ` picks the project, and `--config ` reads a diff --git a/src/content/docs/docs/tools/terminal.md b/src/content/docs/docs/tools/terminal.md index d9b0205..19f34e8 100644 --- a/src/content/docs/docs/tools/terminal.md +++ b/src/content/docs/docs/tools/terminal.md @@ -19,7 +19,7 @@ of `?`. The empty rows above the footer are left out. ╭──────────────────────────────────────────────────────────────────────╮ │ │ │ ▄█ │ - │ ▄███▀ ▄ firenook 0.2.0 │ + │ ▄███▀ ▄ firenook 0.2.1 │ │ ▄███▀ ███▄ demo-shop · picking up the data saved 1 minute ago │ │ ▀██▀ ███▀ Node 24.20.0 · data in .firenook/state │ │ █▀▀ │ @@ -340,7 +340,7 @@ Firenook prints plain lines, with no screen, when: The plain lines look like this (trimmed): ```text -Firenook 0.2.0; engine 7a9614bea49f8208f96d2126b29ef11ee2f2810b; disk/WAL state ~/demo-shop/.firenook/state +Firenook 0.2.1; engine 6556f79b2fda6ccc53c4700aff5fffc029939cde; disk/WAL state ~/demo-shop/.firenook/state Services: firestore, auth, storage, functions, pubsub; Emulator UI on; host localhost firenook: Starting emulators: auth, functions, firestore, pubsub, storage firenook functions: Loaded functions definitions from source: checkout, sendReceipt, stripeWebhook, nightlyReport. @@ -387,7 +387,7 @@ splits into two lines, and below 64 columns the banner drops the flame: ```text +------------------------------------------------------+ | | - | firenook 0.2.0 | + | firenook 0.2.1 | | demo-shop - a fresh start | | Node 24.20.0 - data in .firenook/... | | | @@ -423,7 +423,7 @@ folder that already has a `firebase.json`, the card shows what Once a day at most, in the background, Firenook asks the npm registry for its latest version tags. The answer shows on the next start, as the Update row of the ready summary, so the check never slows a start down. It follows -the channel of the version you have: `latest` for a release such as 0.2.0, +the channel of the version you have: `latest` for a release such as 0.2.1, and `next` for a preview, which also hears of a later release on `latest`. It gives the install command for your package manager, from your lockfile. It never runs in plain output, in CI, or with diff --git a/src/data/engine/CHANGELOG.md b/src/data/engine/CHANGELOG.md index 14edbf8..42f4200 100644 --- a/src/data/engine/CHANGELOG.md +++ b/src/data/engine/CHANGELOG.md @@ -1,3 +1,40 @@ +# 0.2.1 — sign-in from any address, and a sign-in page in the console's look + +- Pin the engine to `6556f79b2fda6ccc53c4700aff5fffc029939cde`, the merge of + [PR #133](https://github.com/firenook-dev/firenook/pull/133) on 0.2.0 and + [PR #132](https://github.com/firenook-dev/firenook/pull/132). Its tree is + the PR head's, `b49e9d8`, which passed CI + ([run 41892010113](https://github.com/firenook-dev/firenook/actions/runs/41892010113)) + and the five-platform packed-install matrix + ([run 41892010175](https://github.com/firenook-dev/firenook/actions/runs/41892010175)). +- **Popup sign-in from a LAN address or a container name.** Over plain http + on any name but `localhost`, a browser has no `crypto.randomUUID`. The + account picker called it inside a `try` that skips other origins' frames, + so the matching Auth iframe was skipped too and the page said "Cannot find + the matching Firebase Auth iframe"; adding an account threw the same way. + The ids now come from `crypto.getRandomValues`, which every page has, and + the popup finishes as it does on the official emulator, recorded from + firebase-tools 15.22.0 in the same mode. +- **Saved rules tests from such an address.** The console threw the same way + when you added a test, and now saves it. +- **The sign-in page, in the console's look.** The page a popup or redirect + opens now shows your project, the provider's test accounts with their + photos or initials, and a filter once there are eight or more. It stays + light whatever the system's theme, as a provider's sign-in page does, and + works on a phone. Its fonts are built in, and it asks for nothing beyond + the emulator except an account's own photo. +- **A new random user from the sign-in page.** "New random user" opens the + form filled with a made-up name and email, so you see who you are about to + be and can change it before signing in. "Fill in random" does the same on + an empty form, and the next sign-in offers that account like any other. +- **Small things.** `firenook` and its native packages link to + [firenook.dev](https://firenook.dev) on npm, and `init` suggests + `npm i -D firenook` without `-E`. +- No emulator protocol, port or data format changed: 0.2.1 opens what 0.2.0 + saved as it is, and 0.2.0 opens what 0.2.1 saves. +- Published straight to `latest`; the CLI's `next` stays on 0.2.0 until it is + moved by hand. + # 0.2.0 — the first release for public use - Pin the engine to `7a9614bea49f8208f96d2126b29ef11ee2f2810b`, the merge of diff --git a/src/data/engine/README.md b/src/data/engine/README.md index b04066b..e40bf2c 100644 --- a/src/data/engine/README.md +++ b/src/data/engine/README.md @@ -1,7 +1,7 @@ # From the engine repository Copied from github.com/firenook-dev/firenook at the release the site -describes (tag `npm-v0.2.0-next.8`). Copy them again for a new release. +describes (tag `npm-v0.2.1`). Copy them again for a new release. - `CHANGELOG.md`: `packaging/CHANGELOG.md`, which /changelog and its feed are drawn from. Links into the former repository (archived, no longer diff --git a/src/lib/changelog.ts b/src/lib/changelog.ts index ff107c2..35df04f 100644 --- a/src/lib/changelog.ts +++ b/src/lib/changelog.ts @@ -8,6 +8,7 @@ import type { Panel } from './panels'; /** When each version reached npm (`npm view firenook time`; the 0.1 line was @fireside-dev/cli). */ const published: Record = { + '0.2.1': '2026-11-04T21:35:11Z', '0.2.0': '2026-10-23T11:10:45Z', '0.2.0-next.8': '2026-10-21T13:20:31Z', '0.2.0-next.7': '2026-10-20T18:56:32Z', diff --git a/src/lib/compatibility.ts b/src/lib/compatibility.ts index 0d2ed1a..1566dbd 100644 --- a/src/lib/compatibility.ts +++ b/src/lib/compatibility.ts @@ -15,7 +15,7 @@ export interface Surface { differs?: string[]; } -export const record = 'https://github.com/firenook-dev/firenook/blob/npm-v0.2.0/COMPATIBILITY.md'; +export const record = 'https://github.com/firenook-dev/firenook/blob/npm-v0.2.1/COMPATIBILITY.md'; export const surfaces: Surface[] = [ { diff --git a/src/lib/pages.ts b/src/lib/pages.ts index 132442e..92525e8 100644 --- a/src/lib/pages.ts +++ b/src/lib/pages.ts @@ -52,7 +52,7 @@ export const pages = { '/compatibility': { title: 'Compatibility: what each emulator covers · Firenook', description: - 'What Firenook’s Firestore, Auth, Storage, Functions, Extensions, Pub/Sub, Cloud Tasks and Eventarc emulators cover in 0.2.0, and what they do not.', + 'What Firenook’s Firestore, Auth, Storage, Functions, Extensions, Pub/Sub, Cloud Tasks and Eventarc emulators cover in 0.2.1, and what they do not.', card: { title: 'What each emulator covers', subtitle: 'Service by service, what Firenook does in this release, what it does not, and where it differs from the official emulator.' }, crumb: 'Compatibility', }, diff --git a/src/lib/site.ts b/src/lib/site.ts index b1f6710..40e2280 100644 --- a/src/lib/site.ts +++ b/src/lib/site.ts @@ -12,13 +12,13 @@ export const site = { issues: 'https://github.com/firenook-dev/firenook/issues', npm: 'https://www.npmjs.com/package/firenook', license: 'https://github.com/firenook-dev/firenook/blob/main/LICENSE', - /** The release the site describes; the terminal was recorded from it. */ - version: '0.2.0', + /** The release the site describes. The recordings name the release they are from. */ + version: '0.2.1', install: 'npm install --save-dev firenook', /** The release the site describes, as its changelog names it. */ release: { - title: 'The first release for public use', - url: '/changelog/0.2.0', + title: 'Sign-in from any address, and a sign-in page in the console’s look', + url: '/changelog/0.2.1', }, requirements: 'Node 22, 24 or 26 on macOS, Linux with glibc 2.28 or newer, or Windows x64', } as const; diff --git a/src/pages/vs/firebase-emulator-suite.astro b/src/pages/vs/firebase-emulator-suite.astro index 196cbfc..473eb20 100644 --- a/src/pages/vs/firebase-emulator-suite.astro +++ b/src/pages/vs/firebase-emulator-suite.astro @@ -92,7 +92,7 @@ const rows: { topic: string; firenook: string; official: string; ahead?: 'fireno }, { topic: 'Status', - firenook: '0.2.0, its first release for public use, open source under the Apache License 2.0.', + firenook: 'For public use since 0.2.0, open source under the Apache License 2.0.', official: 'Generally available, made by Google.', ahead: 'official', },