Skip to content

Add branded local sign-in and personal account management - #83

Open
ancongui wants to merge 15 commits into
integration/native-koinon-authority-closurefrom
feat/studio-personal-tokens-keycloak
Open

ancongui wants to merge 15 commits into
integration/native-koinon-authority-closurefrom
feat/studio-personal-tokens-keycloak

Conversation

@ancongui

@ancongui ancongui commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Studio now places the signed-in account at the bottom of the sidebar, with profile, saved appearance, project access, personal tokens and sign-out in one panel. Factory administrators get grouped settings; project owners retain their own project access without seeing global administration. The navbar keeps the theme selector and removes API status and duplicate account controls.

Personal-token screens use the existing native owner-session endpoints for selected-project read access. Creation and rotation disclose the secret once, and revocation takes effect through the existing persistent backend. The UI clears secrets when the account closes or changes and does not retry mutations automatically.

The local Keycloak sandbox includes a branded responsive theme, exact loopback callbacks, PKCE, a separate API audience, the required basic scope and an explicit administrator-role mapping. It creates no realm users or default administrator grants. The canonical forge assets, Manrope, Foundation footer and reduced-motion behavior are shared across the account and sign-in screens. The production floor uses measured shell bounds. Taller modals reserve the visible footer; compact dialogs keep their own viewport and scrolling layout. Shell measurements account for CSS zoom so controls remain reachable on short screens.

Validation:

  • 870 frontend tests, TypeScript/Vite build, full ESLint and formatting pass. Full backend mypy passes across 422 source files; Ruff and formatting pass across 1,248 files. The native learning receipt SDK/controller/MCP contract retains typed version validation.
  • Seven local-Keycloak configuration tests and nine cross-theme brand tests pass.
  • One final 193-case controlled browser batch passes: all 75 previously failing hosted cases and the 120 canonical capture cases, deduplicated. It actually regenerated all 642 documentation screenshots. The affected mobile journeys retain their geometry and hit-target assertions; the gallery includes account, token creation and administration in both themes and sizes.
  • The remaining hosted project-grant geometry assertion now uses the real main-content padding once. Its 1 px accuracy, visible heading, held-request and unobscured footer-action checks remain intact. Five focused browser cases pass, including all four actual external-tool capture cases; their current producer-bound images were regenerated. Strict MkDocs and 22 documentation contracts pass on this final test-only successor.
  • Eight additional controlled account frames cover long identities at 1440, 1024, 375 and a short 375×500 viewport.
  • A separate local native pyfly/PostgreSQL/Keycloak fixture exercised real login and reload, invalid-password rejection, owner token creation/rotation/revocation, foreign-project and execution denials, membership withdrawal and logout with retained-cookie rejection. Screenshots exclude credentials. Its API and PostgreSQL were drained with data preserved; model calls were disabled.
  • Strict MkDocs root and Pages-path builds, 22 documentation contracts, 74-page social/discovery checks and 75-page/10,790-local-URL validation pass. New walkthrough copy was reviewed with the requested humanizer guidance.

This is stacked on the future native pyfly/Koinon authority integration. Hosted CI is rerunning on the final successor. The preceding full Studio run passed 981 cases and exposed the geometry assertion corrected here; this local five-case result does not claim a new hosted full-suite pass. Composed installation remains a separate gate. Token scope remains project-read only. The live identity proof covers Keycloak; direct Entra/Google claim mappings and user self-service SCM OAuth linking require their own implementation and acceptance. Existing signed SCM identity delegation is preserved. This PR does not claim Original CRM execution or a cloud deployment.

@ancongui
ancongui marked this pull request as ready for review October 31, 2026 00:13

This branch has not been deployed

No deployments
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