Skip to content

feat: add the ./react entry - #6

Merged
brammitch merged 3 commits into
mainfrom
feat/react-client-3.6
Oct 21, 2026
Merged

brammitch merged 3 commits into
mainfrom
feat/react-client-3.6

Conversation

@brammitch

Copy link
Copy Markdown
Collaborator

Add InterlockProvider, session/fetch/catalog/socket hooks, and framework-free session and socket reducers with injectable effects. Ordinary 401s show login; only a current-generation refresh_indeterminate re-enters login once. Responses sent before sign-out cannot redirect afterward, and stale session objects cannot revive an ended session.

Dependency failures preserve the session. Failed socket opens revalidate through /api/irongate/notifications/count; 4401 uses the shared session transition and 4503 reports a recoverable dependency failure. Global sign-out reports ended, unconfirmed, or no_session, flags incomplete cleanup, and never retries automatically.

Includes the catalog/request client, a sibling-origin HTTPS Compose demo, React 18/19 optional peer support, packed-import CI coverage, README usage, and a minor changeset. This PR depends on the username branch; release both changesets together as 0.2.0.

Validation:

  • Formatting, lint, build, and all 430 tests pass. Client line coverage: 94.54%; React: 92.30%.
  • Demo TypeScript and Vite build pass; packed entries import in plain Node with React 18.3.1.
  • Local Compose: Ann's certificate login, username/catalog/group reads, socket open, upstream outage with 4503 while signed in, recovery clearing the banner, 200/ended logout, and external session loss with 4401 and no navigation.

The Compose run temporarily mounted the built package into the existing v5.10.0 host and restored its release configuration afterward. It is not published-package, cluster, or enclave release evidence. Publication, API consumer bump, and release smoke remain pending. Part of Interlock work item 3.6.

@brammitch
brammitch added this pull request to stack #7 October 21, 2026 15:38
@brammitch
brammitch force-pushed the feat/react-client-3.6 branch from a62774e to be9b758 Compare October 21, 2026 17:29
Base automatically changed from feat/username-3.6 to main October 21, 2026 17:31
Share session and socket transitions through framework-free reducers and
injected effect runners. Apply the logout-generation rule to HTTP and
socket failures, and expose React hooks and the catalog client.

Include a Compose demo, contract coverage, and optional React 18/19 peer
support. Keep the entry importable without a browser.
The provider captured window.location.href once at mount, so an
automatic re-login after a refresh_indeterminate 401 returned the user to
the route open when the app loaded. callbackURL now accepts a function
that is read at each sign-in and defaults to the page URL at that moment.
A sign-in refused by Interlock is classified as a bff dependency failure
carrying its status instead of a network failure. Drops the unused Vite
alias in the demo and the em-dash in its username fallback.
@brammitch
brammitch force-pushed the feat/react-client-3.6 branch from be9b758 to 1078316 Compare October 21, 2026 17:31
@brammitch
brammitch merged commit 64376d4 into main Oct 21, 2026
3 checks passed
@brammitch
brammitch deleted the feat/react-client-3.6 branch October 21, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant