From 62348e53d93c30fd0b91275aba5bfe351b08c1c9 Mon Sep 17 00:00:00 2001 From: ael-dev3 Date: Sat, 1 Aug 2026 01:33:19 +0200 Subject: [PATCH] Seal access requests with Hegemony motion --- CHANGELOG.md | 12 ++++- docs/farcaster-integration.md | 2 +- docs/releases/versioning.md | 2 +- package-lock.json | 4 +- package.json | 2 +- .../auth/FarcasterAccessRequest.tsx | 26 ++++++++--- src/components/auth/FarcasterQrAuthPanel.css | 44 +++++++++++++++++++ src/components/menu/latestPatchNotes.ts | 15 +++++++ tests/buildInfo.test.ts | 4 +- .../farcasterAccessRequestLifecycle.test.tsx | 9 ++++ tests/latestPatchNotes.test.ts | 14 +++--- tests/menuFarcasterAuthIntegration.test.tsx | 2 +- tests/menuMainMenu.test.tsx | 40 ++++++++--------- tests/uiSurfaceCssContract.test.ts | 22 ++++++++++ 14 files changed, 157 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2b9df72..8dc3010a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ full engineering record. ## [Unreleased] +## [0.3.35] — 2026-08-01 + +- Gave a newly placed access petition a restrained violet-and-gold Hegemony + seal as it settles into its immediate Request Sent state. +- Kept the flourish outside layout and input handling, with no motion for + players who request reduced animation. +- Left previously recorded petitions quiet and non-clickable, with private + SpacetimeDB authority and manual admission unchanged. + ## [0.3.34] — 2026-07-31 - Made Request Access become a disabled Request Sent action immediately after @@ -380,7 +389,8 @@ full engineering record. Lowlands, a first keep, Farcaster sign-in, and an admission-gated shared-world foundation. -[Unreleased]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.34...HEAD +[Unreleased]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.35...HEAD +[0.3.35]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.34...v0.3.35 [0.3.34]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.33...v0.3.34 [0.3.33]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.32...v0.3.33 [0.3.32]: https://github.com/ael-dev3/Warpkeep/compare/v0.3.31...v0.3.32 diff --git a/docs/farcaster-integration.md b/docs/farcaster-integration.md index 60211b28..e4de2b22 100644 --- a/docs/farcaster-integration.md +++ b/docs/farcaster-integration.md @@ -5,7 +5,7 @@ ordinary browsers use Sign In with Farcaster (SIWF), while a verified Farcaster Mini App host may use Quick Auth. Neither path is a wallet connection, client-owned identity, admission grant, or Terms acceptance. -Alpha 0.3.34 keeps backend protocol 3 and authentication contract v2; admission +Alpha 0.3.35 keeps backend protocol 3 and authentication contract v2; admission remains gated. Production configuration and founder identities belong in the private operator record, not this guide. diff --git a/docs/releases/versioning.md b/docs/releases/versioning.md index 3ec6a513..2ba1e5b0 100644 --- a/docs/releases/versioning.md +++ b/docs/releases/versioning.md @@ -1,7 +1,7 @@ # Versioning and releases Warpkeep uses semantic versions for the product and Git commit SHAs for builds. -Alpha `0.3.34` is the live **The Petition Stands** release. A version is +Alpha `0.3.35` is the live **The Petition Is Sealed** release. A version is described as live only after its protected review, matching client deployment, and production smoke test all succeed. diff --git a/package-lock.json b/package-lock.json index 4f0c284e..3e7ac7ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "warpkeep", - "version": "0.3.34", + "version": "0.3.35", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "warpkeep", - "version": "0.3.34", + "version": "0.3.35", "license": "Apache-2.0", "dependencies": { "@farcaster/auth-client": "0.7.1", diff --git a/package.json b/package.json index 6deef10f..63603b10 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "warpkeep", "private": true, - "version": "0.3.34", + "version": "0.3.35", "description": "A Farcaster-connected persistent strategy world in active Alpha development.", "license": "Apache-2.0", "homepage": "https://warpkeep.com", diff --git a/src/components/auth/FarcasterAccessRequest.tsx b/src/components/auth/FarcasterAccessRequest.tsx index fdc1d9fb..aa5daf0c 100644 --- a/src/components/auth/FarcasterAccessRequest.tsx +++ b/src/components/auth/FarcasterAccessRequest.tsx @@ -1,4 +1,4 @@ -import type { Ref } from 'react'; +import { useState, type Ref } from 'react'; import type { AccessRequestViewState } from '../../farcaster/farcasterAuthTypes'; @@ -93,6 +93,8 @@ export function FarcasterAccessRequestAction({ onRequestAccess, primaryActionRef }: FarcasterAccessRequestProps) { + const [requestCommittedLocally, setRequestCommittedLocally] = useState(false); + if (state.phase === 'idle' || state.phase === 'already-admitted') return null; const isLoading = state.phase === 'loading'; @@ -106,17 +108,27 @@ export function FarcasterAccessRequestAction({ : isRequested ? 'REQUEST RECEIVED' : 'REQUEST ACCESS'; + const className = [ + 'farcaster-auth-panel__action', + accessRequestOwnsPrimaryAction(state) + ? 'farcaster-auth-panel__action--primary' + : '', + requestCommittedLocally + ? 'farcaster-auth-panel__action--request-committed' + : '' + ].filter(Boolean).join(' '); + + const handleRequestAccess = () => { + setRequestCommittedLocally(true); + onRequestAccess(); + }; return (