95 Commits

Author SHA1 Message Date
a194844309 docs(tasks): add Phase 5 Sessions UI overhaul, slide-over guest drawer, and revoke fix task 2026-08-26 20:22:39 -07:00
google-labs-jules[bot]
0a4f6a8344 feat(event-controls): implement live attendee management drawer and session pause
This commit finalizes Phase 4 of the Event & Session Overhaul:
1. Implements session pause logic across PostgreSQL schema, Valkey cache, and `auth_forward.ts` edge check (`is_paused`).
2. Implements non-destructive operational endpoints (`/api/events/:id/rotate-pin`, `/api/events/:id/expand`, `/api/events/:id/attendees`) with Zero-Trust Ownership verification.
3. Upgrades existing `end` and `extend` endpoints in `events.ts` to utilize robust Zero-Trust Ownership queries (created_by OR isGlobalAdmin).
4. Creates `EventAttendeesDrawer.tsx` to handle live participant inspection and individual session controls (Pause, Revoke).
5. Updates `EventCockpitDeck.tsx` and `SessionsScript.tsx` to mount and drive the new controls via vanilla JavaScript, respecting zero-framework guidelines.
6. Ensures `deno fmt`, `deno task lint`, `deno task check` and `deno test` execute successfully against the new schema and API guards.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-27 01:53:52 +00:00
f6b5f4704c docs(tasks): add and format phase 4 task specification for live event controls 2026-08-26 17:53:26 -07:00
google-labs-jules[bot]
a942a18e82 docs: add Phase 4 event attendee drawer and live controls task plan
Created a detailed Markdown task specification in `tasks/new/` for Phase 4 of the event system overhaul, outlining the database updates for session pausing, API endpoints for live controls, and UI enhancements for the attendee slide-out drawer based on provided architectural guidance.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-27 00:45:21 +00:00
google-labs-jules[bot]
d057e080d3 feat(ui): implement 2-state workshop drawer machine and refine session page hierarchy
- Moved `EventCockpitDeck` below main header in `SessionsPage.tsx`
- Refactored `WorkshopDrawer.tsx` to strictly use a 2-state display toggle (`#eventCreateState` and `#eventHandoffState`)
- Added `aria-label`s to copy buttons for accessibility
- Configured `#status-banner` with `role="status"` and `aria-live="polite"`
- Fixed mobile title text wrapping on `#createdEventTitle`
- Fixed script emoji injection logic to prevent double emojis
- Added JS reset logic in `closeDelegateDrawer` to restore drawer states and clear form data

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-27 00:12:50 +00:00
google-labs-jules[bot]
edbceae0fb feat(events): implement bifurcated join inputs and NAT-safe idempotency
- Adds UI links for joining with PIN in Login and Register pages.
- Normalizes event slugs to lowercase (preserving hyphens) and event PINs to strip all hyphens/spaces to handle raw inputs.
- Implements a pre-check rate limit pattern (`isRateLimited`) to safely enforce a max of 5 failed attempts per IP window (60s) without rate-limiting successful authentications.
- Achieves NAT-safe idempotency in `POST /api/join` by extracting and reusing active event guest sessions instead of blindly incrementing claimed seats on every request.
- Integrates complete test suite coverage for these new constraints.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 23:57:13 +00:00
google-labs-jules[bot]
eed5c8a0fd feat: Implement Phase 1 Event & Session Overhaul (Guest Ingress & Audits)
- Allowed guest accounts to be evaluated in `forward-auth`
- Validated `guest` account's `customScopes` and rejected ungranted access
- Added Array parameterization and `UNION` query in `getDashboardApps`
- Mapped `customScopes` to `getDashboardApps` in the UI route `/dashboard`
- Wired web and CLI joins in `events.ts` to `auditWrapper.auditLog` using correct schema (`event.id`, `{slug, method}`)
- Added `auditWrapper.auditLog` unit test validations in `events.test.ts`
- Added guest session scope unit tests in `forward_auth.test.ts`
- Moved Markdown tasks logic from `tasks/new/` to `tasks/complete/`

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 23:34:00 +00:00
e88512edad docs(tasks): update phase 1, 2, and 3 tasks with forensic audit-1 hardening 2026-08-26 15:14:48 -07:00
1ef1125b4a docs(tasks): add and format phase 1, 2, and 3 task specifications from jules 2026-08-26 15:06:57 -07:00
cc38815867
Merge pull request #46 from mrteye/feat-event-join-planning-11918200632794003938
story(events): add phase 2 event overhaul planning document
2026-08-26 15:04:38 -07:00
e357a26abb
Merge pull request #45 from mrteye/feature-guest-ingress-task-plan-17304586254181847688
docs: add task plan for phase 1 of events guest ingress
2026-08-26 15:04:30 -07:00
google-labs-jules[bot]
5c1be5657e feat(ui): generate task plan for sessions layout and drawer machine
Generates a planning task file in `tasks/new/` detailing the architecture, requirements, and steps for Phase 3 of the Event & Session Overhaul, specifically addressing the page hierarchy, the 2-state drawer machine, and layout bugs.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 22:01:09 +00:00
google-labs-jules[bot]
25451ff172 story(events): add phase 2 event overhaul planning document
Adds a new task specification in `tasks/new/` documenting the plan for Phase 2 Event Overhaul,
including PIN discovery, input normalization, rate limiting, and NAT-safe idempotent re-entry
for event joins.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 22:01:03 +00:00
google-labs-jules[bot]
4ec15fe35f docs: add task plan for phase 1 of events guest ingress
Adds the task definition markdown file `2026-0826.01.jul.story.events.phase-1-guest-ingress-1400.md` detailing the architectural scope and plan for enabling Traefik ForwardAuth guest ingress, bridging custom scopes to the Launchpad UI via UNION query, and wiring event claim audit logs using event.id.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 22:00:56 +00:00
695d44e16e chore(tasks): close out ui decomposition roadmap
- All three phases (Layout, Admin Drawers, WebAuthn deduplication) are now completed
2026-08-26 12:07:15 -07:00
google-labs-jules[bot]
65f59521c0 feat(ui): decompose Admin UI with separate Drawers and Scripts
Phase 2 Admin Drawers & Scripts execution:
- Extract `AppDrawer`, `InviteDrawer`, `RoleEditorDrawer`, and `GrantDrawer`.
- Extract `AdminAppsScript`, `AdminInvitesScript`, `AdminRolesScript`, and `AdminUserDetailsScript`.
- Hook extracted components into their respective pages.
- Format `AdminRolesPage.tsx` and all modified files using `deno fmt`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 18:37:15 +00:00
42b336173e docs(protocol): enshrine black-box delegation and pre-review summary gate
- Add Section 3.5 to AGENTS.md for agent orchestration and tool autonomy
- Add Section E to tasks/GUIDELINES.md with pre-review summary gate
- Update tasks/do.md dispatch template with DRY positive acceptance criteria
- Align task lifecycle state machine to keep in-flight work in tasks/new/
2026-08-26 10:37:22 -07:00
google-labs-jules[bot]
afaecdaa26 Extract WebAuthn Components & Deduplicate Assets
- Extracted `PasskeyTable` and `WebAuthnScript` into `ui/components/auth/`.
- Refactored `PasskeysPage.tsx` and `RegisterPage.tsx` to use the new components instead of inline scripts and HTML.
- Deleted the duplicate `ui/public/ui/utils/bip39_wordlist.ts` and `ui/public/ui/utils/bip39.ts`.
- Updated all import references to use `ui/utils/bip39_wordlist.ts` and `/public/utils/bip39.ts`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 06:54:29 +00:00
f5935a49a7 docs(tasks): move ui decomposition ph1 to complete and format subcomponents 2026-08-25 23:39:39 -07:00
dc2b5488c8 docs(tasks): establish discrete phase task files ph1 through ph3 for ui decomposition roadmap 2026-08-25 22:48:17 -07:00
google-labs-jules[bot]
0249938459 chore: Create UI Component Decomposition Roadmap task spec
Creates `tasks/new/2026-0825.01.jul.story.arch.ui-decomposition-roadmap-2300.md` containing the architectural analysis and phased execution plan for modularizing `ui/` monoliths into pure SSR JSX components while maintaining testability.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 05:46:56 +00:00
97edc7b89b docs(tasks): mark entire monolith decomposition roadmap epic complete 2026-08-25 22:33:00 -07:00
google-labs-jules[bot]
0d59c2ac75 refactor(test): decompose main.test.ts into domain specific test files
Extracted the 1,577-line monolithic `server/main.test.ts` into five isolated, domain-specific files under `server/tests/`:
- `forward_auth.test.ts`: ForwardAuth bypass, cookie scoping, and sandbox.
- `rpc.test.ts`: ConnectRPC SPIFFE and RBAC tests.
- `auth.test.ts`: Audit ledger, WebAuthn PRF, passkey magic links.
- `events.test.ts`: Multi-claim join endpoints and killswitch.
- `scopes.test.ts`: Zero-trust guards and self-revocations.

Successfully maintained all tests cleanly isolated via standard mocking and deleted `main.test.ts` after migrating and executing `deno test --allow-all` with zero failures.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 05:12:08 +00:00
e0c12bdef6 docs(tasks): move ph3.1 task spec to complete 2026-08-25 21:39:32 -07:00
google-labs-jules[bot]
752bfcf03e Refactor infra/setup/cli.ts into smaller command and prompt modules
Decomposes the monolith `infra/setup/cli.ts` into clean `infra/setup/prompts/` and `infra/setup/commands/` directories while adhering to Cliffy idiomatic modularity. Validated via `deno check`, tests, and format.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 04:37:41 +00:00
e7a2aa8df3 docs(tasks): establish refined modularization specs ph3.1 and ph4.1 2026-08-25 20:31:09 -07:00
google-labs-jules[bot]
88821b80af feat: Phase 3 Monolith decomposition of server/main.ts
- Extracts Auth, Registration, and Passkey routes into `server/routes/auth.ts`.
- Extracts all Admin API endpoints into `server/routes/admin.ts`.
- Extracts RPC Connect setup and mTLS listener into `server/rpc.ts`.
- Extracts global rate limiters and IP helpers into `server/middleware.ts`.
- Reduces `server/main.ts` purely to an entrypoint mounting orchestrator.
- Ensures all existing tests and quality gates pass with zero regressions.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 03:23:20 +00:00
67bbe0d1e9
Merge pull request #34 from mrteye/refactor-infra-setup-modules-16584207009061218557
Refactor: Decompose infra/setup.ts into modular sub-modules
2026-08-25 17:37:44 -07:00
google-labs-jules[bot]
4c7d8d4af7 feat(ui): decompose admin pages into reusable AdminTable and AdminModal components
Refactored AdminInvitesPage, AdminUserDetailsPage, AdminRolesPage, and AdminAppsPage to use the new pure Hono SSR JSX stateless components.
Fixed missing import definitions in AdminRolesPage.
Moved task file to complete state.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 00:34:29 +00:00
google-labs-jules[bot]
779f890b2f Refactored the 1,000+ line setup.ts into sub-modules
- Extracted CLI commands into infra/setup/cli.ts
- Extracted docker compose configuration to infra/setup/compose.ts
- Extracted env variable generation to infra/setup/env.ts
- Extracted build commands to infra/setup/build.ts
- Retained infra/setup.ts as a simple entrypoint orchestrator

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-26 00:34:24 +00:00
7df39bd27a docs(tasks): complete phase 1 ui sessions decomposition and format subcomponents 2026-08-25 16:22:32 -07:00
f912241937 docs(tasks): establish discrete phase task files ph1 through ph6 for monolith decomposition roadmap 2026-08-25 16:17:18 -07:00
5de9bdf18c
Merge pull request #32 from mrteye/ui-redesign-sessions-drawer-17867567827419767189
Redesign the Sessions management page header and drawer
2026-08-25 15:53:32 -07:00
google-labs-jules[bot]
64a9b2cd1d refactor(ui): Redesign and consolidate sessions and passes drawer
- Removed the dual top buttons from SessionsPage.tsx.
- Removed the `#eventDrawer` and wrapped its fields, buttons, and modal under `<form id="eventForm">` inside `#tabWorkshopPass` of `#delegateDrawer`.
- Wrapped the 1:1 Direct pass form fields, buttons, and modal under `<form id="delegateForm">` inside `#tabDirectPass` of `#delegateDrawer`.
- Added a vanilla Javascript tab switching logic for UI interaction without client-side frameworks.
- Removed deprecated `openEventDrawer` and `closeEventDrawer`.
- Replaced the single main button to trigger `openDelegateDrawer`.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 22:53:20 +00:00
6a5a769203 sec(auth-api): implement zero-trust scope guards and permission middleware 2026-08-25 15:39:54 -07:00
google-labs-jules[bot]
e54496b51f feat(protocol): add universal agent framework task specification
Drafts a task specification file `tasks/new/2026-0825.01.jul.story.protocol.universal-agent-framework-1945.md` outlining the extraction of the multi-agent orchestration workflow from Auth-Yes into a clean, reusable, repository-agnostic blueprint. This specification adheres to `tasks/GUIDELINES.md` and covers both a foundational architecture guide and a drop-in scaffolding template bundle.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 22:26:32 +00:00
d0a1492f6c docs(tasks): establish tasks/do.md execution protocol and link from path.md 2026-08-25 12:08:59 -07:00
36bad05b35
Merge pull request #29 from mrteye/jul-monolith-audit-16234354212497883361
story(arch): draft monolith decomposition roadmap
2026-08-25 11:56:17 -07:00
google-labs-jules[bot]
1353153df2 story(arch): draft monolith decomposition roadmap
Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:56:02 +00:00
f64777602d
Merge pull request #28 from mrteye/chore-ui-redesign-sessions-drawer-task-13578358291952217030
chore(tasks): add UI redesign task for sessions drawer
2026-08-25 11:19:43 -07:00
google-labs-jules[bot]
ad5cc14858 chore(tasks): add UI redesign task for sessions drawer
Create a system analysis task plan in `tasks/new/` detailing how to redesign
the Sessions management page's header and unified drawer, strictly adhering to
the Auth-Yes SSR JSX standards and vanilla JS implementations.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:19:28 +00:00
google-labs-jules[bot]
dad21ff257 sec(tasks): draft task for zero-trust scope guards
Drafts a comprehensive task specification for implementing zero-trust
scope guards on internal API routes and SSR UI pages, as requested.
The file adheres strictly to the repository's Kanban and Markdown
metadata guidelines.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 18:19:16 +00:00
a82136fc95 feat(cockpit): add live event metrics, seat roster, and master kill-switch 2026-08-25 09:33:44 -07:00
62fc91eb25 docs(tasks): point task 3 targets to server/routes/events.ts 2026-08-25 08:31:55 -07:00
40804fd813 feat(passes): implement ephemeral 1-click magic links, event passes, PIN join portal, and CLI 1-liner 2026-08-25 08:14:16 -07:00
google-labs-jules[bot]
2d34aa15a7 feat: implement ephemeral 1-click magic link redemption (/pass)
Implements the GET /pass?token=... endpoint for validating session tokens, resolving the correct target application domain dynamically, and routing users seamlessly using ephemeral 1-click magic links.
Also updates the Sessions Hub UI hand-off modal to display the 1-Click Magic Link and adds full test coverage.

Co-authored-by: mrteye <1945243+mrteye@users.noreply.github.com>
2026-08-25 08:25:31 +00:00
7033c532b2 docs(plan): add plan and tasks for ephemeral magic links and multi-claim event passes 2026-08-25 00:40:33 -07:00
509e6019b0 feat(ui): adapt admin management screens into responsive mobile cards and timeline feed 2026-08-24 22:20:47 -07:00
7ab1405459 feat(ui): implement adaptive card decks for launchpad, sessions, and passkeys with emergency recovery backup 2026-08-24 22:20:10 -07:00
a3f5c5c286 feat(ui): implement hero passkey authentication, conditional UI autofill, and 12-word recovery setup 2026-08-24 22:19:20 -07:00