feat: add Settings page, E2E catalog import tests, promote 1.0.0#28
feat: add Settings page, E2E catalog import tests, promote 1.0.0#28
Conversation
Agent-Logs-Url: https://github.com/aecyx/Binderbase/sessions/bc495f7b-a19f-459e-a927-7dd95c601944 Co-authored-by: aecyx <68361343+aecyx@users.noreply.github.com>
…1.0.0 - Add settings API wrappers to src/lib/tauri.ts - Create src/features/settings/SettingsPage.tsx with PTCG API key management - Add "settings" route to TopNav and wire into App.tsx - Add e2e/catalog-import.spec.ts with start/progress/cancel/restart tests - Update e2e/tauri.spec.ts for five-tab navigation - Bump version 1.0.0-rc.1 → 1.0.0 in package.json, Cargo.toml, tauri.conf.json - Promote CHANGELOG with 1.0.0 section - Add docs/release/cosign-verification.md and 1.0.0-runbook.md - Update README status to "Stable release" Agent-Logs-Url: https://github.com/aecyx/Binderbase/sessions/bc495f7b-a19f-459e-a927-7dd95c601944 Co-authored-by: aecyx <68361343+aecyx@users.noreply.github.com>
Agent-Logs-Url: https://github.com/aecyx/Binderbase/sessions/bc495f7b-a19f-459e-a927-7dd95c601944 Co-authored-by: aecyx <68361343+aecyx@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR completes the 1.0.0 handoff work by adding a missing Settings UI for existing backend settings commands, introducing Playwright E2E coverage for the catalog import flow, and promoting the release from 1.0.0-rc.1 to 1.0.0 with supporting docs.
Changes:
- Add a new Settings route/page (PTCG API key management + data directory display) and corresponding typed Tauri API wrappers.
- Add Playwright E2E specs for catalog import (start/progress/cancel/restart) and update nav coverage for the new tab.
- Promote versions and release documentation for the 1.0.0 stable release (README/CHANGELOG/runbooks/cosign procedure + version bumps).
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/lib/tauri.ts | Adds typed api.settings wrappers for get/set PTCG API key. |
| src/features/settings/SettingsPage.tsx | Implements Settings UI for data directory + API key management and keyring-degraded warning. |
| src/components/TopNav.tsx | Adds settings route and tab to primary navigation. |
| src/App.tsx | Wires Settings page into route switch. |
| e2e/catalog-import.spec.ts | Adds CDP-based E2E coverage for catalog import start/progress/cancel/restart and keyring-degraded notice surface. |
| e2e/tauri.spec.ts | Updates nav-tab expectation to include Settings. |
| package.json | Promotes app version to 1.0.0. |
| package-lock.json | Updates lockfile root package version to 1.0.0. |
| src-tauri/Cargo.toml | Promotes Rust crate version to 1.0.0. |
| src-tauri/Cargo.lock | Updates lockfile entry for binderbase to 1.0.0. |
| src-tauri/tauri.conf.json | Promotes Tauri app version to 1.0.0. |
| CHANGELOG.md | Adds [1.0.0] section and updates compare links. |
| README.md | Updates status to “Stable release” and links cosign verification doc. |
| docs/release/cosign-verification.md | Documents end-to-end cosign verification procedure for release artifacts. |
| docs/release/1.0.0-runbook.md | Adds a tag-and-ship runbook for releasing v1.0.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds the missing frontend Settings page and E2E coverage for the catalog import flow, and promotes the release metadata/docs from 1.0.0-rc.1 to 1.0.0 across the app.
Changes:
- Add a Settings route/page to manage the Pokémon TCG API key and display the data directory.
- Add Playwright E2E coverage for the catalog import cancel/restart flow and update nav expectations.
- Promote release to
1.0.0(version bumps) and add/refresh release documentation (cosign verification + runbook) plus README/CHANGELOG updates.
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/lib/tauri.ts | Adds typed Tauri settings_get/set_ptcgapi_key invoke wrappers. |
| src/features/settings/SettingsPage.tsx | New Settings UI for API key management + data directory display. |
| src/components/TopNav.tsx | Adds settings to the Route union and navigation tabs. |
| src/App.tsx | Wires the Settings page into the route switch. |
| src-tauri/tauri.conf.json | Bumps Tauri app version to 1.0.0. |
| src-tauri/Cargo.toml | Bumps Rust crate version to 1.0.0. |
| src-tauri/Cargo.lock | Updates locked crate version metadata to 1.0.0. |
| package.json | Bumps frontend package version to 1.0.0. |
| package-lock.json | Updates lockfile version metadata to 1.0.0. |
| e2e/tauri.spec.ts | Updates nav test to expect the Settings tab. |
| e2e/catalog-import.spec.ts | New E2E spec covering catalog import start/progress/cancel/restart + banner smoke check. |
| docs/release/cosign-verification.md | Adds a full cosign verification procedure document. |
| docs/release/1.0.0-runbook.md | Adds a release runbook/checklist for tagging and publishing v1.0.0. |
| README.md | Updates status to “Stable release” and links to the cosign verification doc. |
| CHANGELOG.md | Adds a [1.0.0] section and updates compare links for the stable release. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - The `--certificate-identity-regexp` pattern used across all documentation is: | ||
|
|
||
| ``` | ||
| ^https://github\.com/aecyx/Binderbase/\.github/workflows/release\.yml@refs/tags/.*$ | ||
| ``` | ||
|
|
||
| This matches the OIDC subject assigned by GitHub Actions to the release | ||
| workflow when triggered by a tag push. If the workflow file is renamed or | ||
| moved, this regex must be updated in: | ||
| - `.github/release-template.md` | ||
| - `README.md` (Verifying with cosign section) | ||
| - `docs/releases/v1.0.0-rc.1.md` | ||
| - This file | ||
|
|
| - `CI / Security audit` | ||
| - `CodeQL / Analyze` | ||
| - `cargo-deny / cargo-deny` | ||
| - `OSV-Scanner / OSV vulnerability scan` |
| <div className="form-row"> | ||
| <span>Location</span> | ||
| <code>{appInfo?.db_path ?? "…"}</code> | ||
| </div> |
| test.beforeAll(async () => { | ||
| const browser = await chromium.connectOverCDP("http://127.0.0.1:9223"); | ||
| page = browser.contexts()[0].pages()[0]; | ||
|
|
| await expect(nav.getByRole("button", { name: "Collection" })).toBeVisible(); | ||
| await expect(nav.getByRole("button", { name: "Prices" })).toBeVisible(); | ||
| await expect(nav.getByRole("button", { name: "Import / Export" })).toBeVisible(); | ||
| await expect(nav.getByRole("button", { name: "Settings" })).toBeVisible(); |
| - **cosign version:** v2.4+ (any v2/v3 compatible release) | ||
|
|
||
| ## Pre-requisites | ||
|
|
||
| Install [cosign](https://docs.sigstore.dev/cosign/system_config/installation/) | ||
| v2+ and ensure `sha256sum` (Linux) or `shasum` (macOS) is available. |
| ```bash | ||
| cosign verify-blob \ | ||
| --bundle <file>.bundle \ | ||
| --insecure-ignore-tlog \ | ||
| --certificate-oidc-issuer https://token.actions.githubusercontent.com \ | ||
| --certificate-identity-regexp ".*" \ | ||
| <file> 2>&1 | grep -i subject |
Summary
Implements the three handoff tasks from
docs/handoff/(gitignored, reconstructed from closed PRs #25/#26/#27):Settings page — The CHANGELOG claims a Settings page ships in 1.0.0-rc.1, but the frontend never had one. Backend commands (
settings_get_ptcgapi_key,settings_set_ptcgapi_key) exist with no UI to call them.src/lib/tauri.ts—api.settings.{getPtcgApiKey, setPtcgApiKey}typed wrapperssrc/features/settings/SettingsPage.tsx— Data directory display + Pokémon TCG API key form (save/clear, keyring-degraded warning)src/components/TopNav.tsx—"settings"added toRouteunion and nav tabssrc/App.tsx—SettingsPagewired into the route switchE2E catalog import tests — The catalog import is the largest feature in 1.0.0 with zero E2E coverage.
e2e/catalog-import.spec.ts— start → progress → cancel → buttons re-enabled; restart after cancel; keyring-degraded banner smoke checke2e/tauri.spec.ts— nav test updated from four tabs to five1.0.0 release promotion — Certify-and-ship for stable release.
1.0.0-rc.1→1.0.0acrosspackage.json,Cargo.toml,tauri.conf.json, lock filesCHANGELOG.mdpromoted with new[1.0.0]sectiondocs/release/cosign-verification.md— full verification proceduredocs/release/1.0.0-runbook.md— tag-and-ship checklistREADME.md— status → "Stable release", added cosign verification linkType of change
How was this tested?
CodeQL security scan: 0 alerts.
Screenshots / recordings
Checklist
CONTRIBUTING.md.README.md,docs/, code comments) where it made sense.Original prompt
Created from VS Code.