Skip to content

Feat/ghcr integrations health - #232

Merged
POWERFULMOVES merged 18 commits into
mainfrom
feat/ghcr-integrations-health
Nov 6, 2025
Merged

POWERFULMOVES merged 18 commits into
mainfrom
feat/ghcr-integrations-health

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Nov 6, 2025

Copy link
Copy Markdown
Owner

PMOVES.AI — Stabilization Sprint (Nov 6, 2025)

This PR captures infra/app hardening completed today and a short plan to finish the sprint.

Summary

  • Storage unified to Supabase Storage S3 endpoint. Presign + Render Webhook recreated and validated.
  • Invidious stabilized on 127.0.0.1:3005 with valid companion/HMAC keys.
  • Hi‑RAG v2 CPU/GPU up; health at /hirag/admin/stats; core smoke PASS (14/14).
  • Jellyfin verified (8096); bridge up.
  • Monitoring stack online (Prometheus/Grafana); Loki config upgraded and starting. Readiness converging.

Notable decisions

  • Supabase‑only storage (standalone MinIO stopped by default).
  • YouTube smoke will force offline transcript provider when SABR detected.
  • GPU rerank temporarily disabled for smoke while model/runtime are validated.

Operator quick links

Evidence

  • make -C pmoves smoke → PASS 14/14
  • Invidious /api/v1/stats → 200
  • Loki: restarting → now running; /ready returns 503 while warming; config updated to 3.1 schema.
  • pmoves-yt /yt/emit still failing with 502 (SABR path; next steps below).

Follow‑ups (next 48h)

  • Loki: finish config polish until /ready=200; wire panels in Grafana
  • YT emit: set YT_TRANSCRIPT_PROVIDER=qwen2-audio in smoke; broaden SABR fallback; add stable IDs
  • GPU rerank: re‑enable and add integration smoke
  • Document Hi‑RAG health path and Supabase‑only storage in service docs + SMOKETESTS

Files touched

  • AGENTS.md — stabilization status, quick links, decisions, next actions
  • pmoves/AGENTS.md — operator quick links, env notes, next actions
  • pmoves/docs/NEXT_STEPS.md — “Stabilization Sprint — Status and Plan”
  • pmoves/docs/PMOVES.AI PLANS/ROADMAP.md — new sprint milestone
  • pmoves/monitoring/loki/local-config.yaml — 3.1‑compatible config

@codex review

Summary by CodeRabbit

  • New Features

    • Added Supabase boot operator provisioning for streamlined authentication.
    • Introduced model management profiles for easy embedding/reranker configuration without code changes.
    • Added service health dashboards for Agent Zero, Archon, and personas.
    • Enabled TensorZero/Venice.ai gateway integration with automatic fallback support.
    • Integrated Invidious for YouTube content access.
    • Made port mappings configurable via environment variables.
  • Documentation

    • Expanded guides for service setup, model selection, health endpoints, and operational procedures.
  • Chores

    • Added GitHub Actions workflow for multi-architecture Docker image builds to GHCR.
    • Database migrations for transcript management and data integrity.

Codex Agent and others added 18 commits November 3, 2025 13:29
…Zero + Ollama behavior; add integration and model management guides
…ith env overrides; update LOCAL_DEV/TOOLING for TensorZero/Ollama notes
…onsole pages; docs: note MCP UI wrappers and env overrides
… port collision; docs: note alternate port in UI README
…date compose default public_url to 8281; console Quick Link for Invidious; docs unchanged
…Archon; add published-image override; console wrappers + personas page; boot‑JWT upload fixes; model profiles + tooling; docs updated (LOCAL_DEV, MAKE_TARGETS, SMOKETESTS, AGENTS)
…R build workflow for forks; docs: CI guide + env vars
…ST_URL to query pmoves_core when Supabase CLI REST hides schema
…d SERVICE_HEALTH_ENDPOINTS guide; update LOCAL_DEV/SMOKETESTS/AGENTS/README
…ous 3005; Hi-RAG health path; next steps (Loki, YT fallback, rerank). Update AGENTS, NEXT_STEPS, ROADMAP (2025-11-06).
@coderabbitai

coderabbitai Bot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a GHCR multi-arch build/publish workflow, extensive operational and stabilization documentation, model-management tooling and manifests, boot-JWT auth plumbing across the UI, TensorZero embedding support and Hi‑RAG GPU device handling, many compose/image parameterizations, new services, and multiple scripts/migrations for environment and infra orchestration.

Changes

Cohort / File(s) Summary
CI/CD Workflow
'.github/workflows/integrations-ghcr.yml'
New GitHub Actions workflow to build/publish multi-arch integration images to GHCR (matrix-driven), optional Docker Hub push, tag computation (date+sha), QEMU/Buildx setup and caching.
Documentation & Stabilization
AGENTS.md, README.md, pmoves/AGENTS.md, pmoves/PR_BODY_STABILIZATION.md, pmoves/docs/*, pmoves/docs/PMOVES.AI PLANS/*, pmoves/docs/ARC/1.md, pmoves/docs/CI_IMAGES.md, pmoves/docs/EXTERNAL_INTEGRATIONS_BRINGUP.md, ...
Large set of docs added/updated covering stabilization status, health endpoints, operator quick links, reproducible GHCR images, smoke tests, TensorZero guidance, model management docs, and sequence/architecture notes.
Makefile & Targets
pmoves/Makefile
Added variables (HIRAG_CPU_PORT, HIRAG_GPU_PORT, INTEGRATIONS_WORKSPACE exported) and many new targets: model-management (profiles/sync/apply/swap), integrations workspace helpers, UI dev helpers, supabase-boot-user, docker-login-ghcr, smoke helpers, and integrations clone/build/up targets.
Docker Compose & Images
pmoves/docker-compose*.yml, pmoves/compose/docker-compose.*.yml, pmoves/pmoves-integrations-pr-pack/compose/docker-compose.*.yml, pmoves/docker-compose.agents.*.yml, pmoves/docker-compose.external.yml, ...
Parameterized image references (FIREFLY_IMAGE, WGER_IMAGE, OPEN_NOTEBOOK_IMAGE, JELLYFIN_IMAGE), new PostgREST CLI service, GPU/host-port env-driven mappings, new invidious-companion-proxy service, added external network and compose overlays for integrations.
Model Management
pmoves/models/*.yaml, pmoves/docs/pmoves-model-management-starter/*, pmoves/tools/models/*, pmoves/docs/*
New YAML model manifests (agent-zero, archon, media, vlm/creator), scripts (models_sync.py, apply_profile.sh), Makefile snippets and docs to sync/swap model env overrides and apply profiles per host.
Supabase Boot Operator
pmoves/tools/create_supabase_boot_user.py, pmoves/docs/FIRST_RUN.md, pmoves/docs/LOCAL_DEV.md
New script to create/rotate a Supabase boot user and emit JWTs, integrated into first-run flow and documented for env propagation.
Embedding Providers
pmoves/libs/providers/embedding.py, pmoves/services/extract-worker/worker.py
Added TensorZero embedding client and OpenAI-compatible base support; updated embedding priority and model naming defaults.
Hi‑RAG GPU & CUDA updates
pmoves/services/hi-rag-gateway-v2/Dockerfile.gpu, pmoves/services/hi-rag-gateway-v2/app.py, pmoves/docs/services/hi-rag-gateway-v2/README.md
GPU Dockerfile switched to NVIDIA CUDA base (cu128), runtime device detection, device-aware embedder/reranker init, Qdrant collection dimension ensure/recreate logic, per-pair reranker fallback, and related docs.
PMOVES.YT Geometry Routing
pmoves/services/pmoves-yt/yt.py, pmoves/docs/PMOVESCHIT/PMOVESCHIT.md
Added candidate Hi‑RAG base URL derivation and retry/fallback logic (GPU-first then CPU), with per-candidate logging and consolidated error reporting.
Jellyfin Bridge & YouTube flows
pmoves/services/jellyfin-bridge/main.py, pmoves/docs/services/jellyfin-bridge/*, pmoves/docs/PMOVES.AI PLANS/JELLYFIN_*
Improved Supabase patch handling (safe empty responses), added apikey defaulting and X-Emby-Authorization header, updated port defaults and smoketest/linking fallbacks.
Invidious Companion Proxy
pmoves/services/invidious-companion-proxy/Dockerfile, pmoves/services/invidious-companion-proxy/default.conf, .gitignore
New nginx proxy service for invidious-companion with status endpoint and proxy rules; UI dev artifact ignores added.
UI: Boot JWT & Auth Plumbing
pmoves/ui/lib/supabaseClient.ts, pmoves/ui/lib/supabaseBrowser.ts, pmoves/ui/hooks/useSupabaseAuth.ts, pmoves/ui/proxy.ts, pmoves/ui/app/(auth)/login/page.tsx, pmoves/ui/app/page.tsx
Added boot-JWT handling utilities (getBootJwt, hasBootJwt, getBootUser), browser/server client adjustments to use boot JWT when present, proxy bypass when boot JWT exists, login redirect on boot JWT, client bootstrap from boot JWT.
UI: Uploads & Effective User
pmoves/ui/app/api/uploads/presign/route.ts, pmoves/ui/app/api/uploads/persist/route.ts
Upload endpoints now accept service-client (boot-JWT) fallback, compute effectiveUserId from session or ownerId, require ownerId for boot-JWT flows, and update owner-linked metadata accordingly.
UI: Dashboards, Health & Tests
pmoves/ui/app/dashboard/*, pmoves/ui/app/test-supabase/page.tsx, pmoves/ui/e2e/supabase-auth.spec.ts, pmoves/ui/playwright.config.ts, pmoves/ui/package.json
Added AgentZero/Archon/Personas/Ing est dashboard pages with probe logic and health path customization, Supabase diagnostics page, Playwright boot-JWT e2e test, dev:3001 script and Playwright env var.
Database & Migrations
pmoves/supabase/initdb/13_youtube_transcripts.sql, pmoves/supabase/migrations/2025-10-26_transcripts_video_fk.sql
Added upgrade block to backfill youtube_transcripts columns (metadata, embeddings conditional on pgvector), and migration to dedupe and add unique/foreign key constraints between videos and transcripts.
Monitoring & Loki
pmoves/monitoring/loki/local-config.yaml, pmoves/docs/SMOKETESTS.md, pmoves/docs/PMOVES.AI PLANS/SMOKETESTS.md
Added local Loki config and updated smoke test docs to use dynamic ports, expanded smoke scenarios (YouTube→Jellyfin, personas, GPU/CPU geometry flows).
TensorZero Integration & Observability
pmoves/docs/venice-tensorzero-integration/*, pmoves/venice-tensorzero-integration/*, pmoves/tensorzero/clickhouse/users.xml, pmoves/docs/PMOVES.AI PLANS/HIRAG_QWEN_CUDA_NOTES.md
Added tensorzero.toml, ClickHouse compose overrides, ClickHouse user profile changes, observability example env, and comprehensive Venice/TensorZero docs and architecture notes.
Misc: env.shared examples & compose overrides
pmoves/env.shared.example, pmoves/docs/*
Many new environment variables (HIRAG ports, TensorZero/Ollama/OPENAI_COMPAT keys/models, published image defaults, health paths) and docs reflecting new defaults and overrides.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Proxy as Next.js Proxy
    participant UI as PMOVES UI
    participant SupAuth as Supabase Auth

    Client->>Proxy: Request page
    alt NEXT_PUBLIC_SUPABASE_BOOT_USER_JWT present
        Proxy->>Proxy: Bypass auth (NextResponse.next)
        Proxy->>UI: Allow request through
    else
        Proxy->>SupAuth: Check session cookie
        alt session valid
            Proxy->>UI: Serve page
        else
            Proxy->>Client: Redirect to /login
        end
    end

    Note over UI: UI may call getBootUser()/createSupabaseServerClient to bootstrap session from boot JWT
Loading
sequenceDiagram
    participant PMOVES.YT as App
    participant Resolver as _geometry_url_candidates
    participant GPU as HiRAG GPU
    participant CPU as HiRAG CPU

    PMOVES.YT->>Resolver: compute candidates (gpu first)
    Resolver-->>PMOVES.YT: [gpu_base, cpu_base, ...]
    PMOVES.YT->>GPU: POST /geometry_events
    alt 200 OK
        GPU-->>PMOVES.YT: success
        PMOVES.YT->>PMOVES.YT: log primary route
    else
        GPU-->>PMOVES.YT: error
        PMOVES.YT->>CPU: POST /geometry_events
        alt 200 OK
            CPU-->>PMOVES.YT: success
            PMOVES.YT->>PMOVES.YT: log fallback route
        else
            CPU-->>PMOVES.YT: error
            PMOVES.YT->>PMOVES.YT: raise 502 with aggregate errors
        end
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Areas requiring extra attention:

  • Boot JWT cross-cutting auth changes (pmoves/ui/lib/supabaseClient.ts, pmoves/ui/hooks/useSupabaseAuth.ts, pmoves/ui/proxy.ts, uploads routes).
  • Hi‑RAG GPU device and Qdrant collection logic, plus Dockerfile.gpu changes (pmoves/services/hi-rag-gateway-v2/*).
  • Geometry routing retry semantics and logging (pmoves/services/pmoves-yt/yt.py).
  • Compose/Env interplay for image overrides and port variables across many compose files (pmoves/docker-compose*.yml).
  • Model-management scripts and env-file writes (pmoves/tools/models/*, pmoves/tools/create_supabase_boot_user.py).
  • DB migration consequences for youtube_transcripts/backfill (pmoves/supabase/*).

Possibly related PRs

Suggested labels

codex

Poem

🐇 I hopped through code to plant a seed,

Boot JWTs for the UI's need.
GPUs hum and models swap,
Images build and docs won't stop.
PMOVES now springs — a joyful leap indeed! ✨


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5764d71 and e39daeb.

⛔ Files ignored due to path filters (1)
  • tmp/jellyfin.db is excluded by !**/*.db
📒 Files selected for processing (104)
  • .github/workflows/integrations-ghcr.yml (1 hunks)
  • .gitignore (1 hunks)
  • AGENTS.md (4 hunks)
  • README.md (1 hunks)
  • docs/copilot/agents/integrations_ops.md (1 hunks)
  • docs/copilot/automation_map.md (1 hunks)
  • pmoves/AGENTS.md (1 hunks)
  • pmoves/Makefile (18 hunks)
  • pmoves/PR_BODY_STABILIZATION.md (1 hunks)
  • pmoves/README.md (2 hunks)
  • pmoves/compose/docker-compose.firefly.yml (1 hunks)
  • pmoves/compose/docker-compose.wger.yml (1 hunks)
  • pmoves/docker-compose.agents.images.yml (1 hunks)
  • pmoves/docker-compose.agents.integrations.yml (1 hunks)
  • pmoves/docker-compose.external.yml (4 hunks)
  • pmoves/docker-compose.open-notebook.yml (1 hunks)
  • pmoves/docker-compose.yml (13 hunks)
  • pmoves/docs/ARC/1.md (1 hunks)
  • pmoves/docs/CI_IMAGES.md (1 hunks)
  • pmoves/docs/EXTERNAL_INTEGRATIONS_BRINGUP.md (2 hunks)
  • pmoves/docs/FIREFLY_WGER_INTEGRATIONS_STATUS.md (1 hunks)
  • pmoves/docs/FIRST_RUN.md (1 hunks)
  • pmoves/docs/LOCAL_DEV.md (9 hunks)
  • pmoves/docs/LOCAL_TOOLING_REFERENCE.md (4 hunks)
  • pmoves/docs/MAKE_TARGETS.md (2 hunks)
  • pmoves/docs/NEXT_STEPS.md (3 hunks)
  • pmoves/docs/PMOVES.AI PLANS/HIRAG_QWEN_CUDA_NOTES.md (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/JELLYFIN_BACKFILL_PLAN.md (2 hunks)
  • pmoves/docs/PMOVES.AI PLANS/JELLYFIN_BRIDGE_INTEGRATION.md (5 hunks)
  • pmoves/docs/PMOVES.AI PLANS/JELLYFIN_YOUTUBE_INTEGRATION.md (3 hunks)
  • pmoves/docs/PMOVES.AI PLANS/JELLYFIN_YOUTUBE_STATUS.md (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/PMOVES.yt/CHANNEL_MONITOR_IMPLEMENTATION.md (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/ROADMAP.md (4 hunks)
  • pmoves/docs/PMOVES.AI PLANS/SMOKETESTS.md (3 hunks)
  • pmoves/docs/PMOVES.AI PLANS/WGER - Firefly iii compose -integrations/compose/docker-compose.firefly.yml (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/WGER - Firefly iii compose -integrations/compose/docker-compose.wger.yml (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/WGER - Firefly iii compose -integrations/firefly/Integration Plan_ Firefly bootstrap.md (1 hunks)
  • pmoves/docs/PMOVES.AI PLANS/WGER - Firefly iii compose -integrations/wger/Integration Plan_ PMOVES v5.12 and Wger Fitness Manager draft.md (2 hunks)
  • pmoves/docs/PMOVES.AI PLANS/WGER - Firefly iii compose -integrations/wger/PMOVES WGER draft.md (2 hunks)
  • pmoves/docs/PMOVESCHIT/PMOVES-CONCHexecution_guide.md (1 hunks)
  • pmoves/docs/PMOVESCHIT/PMOVESCHIT.md (1 hunks)
  • pmoves/docs/SERVICE_HEALTH_ENDPOINTS.md (1 hunks)
  • pmoves/docs/SMOKETESTS.md (8 hunks)
  • pmoves/docs/context/MAKE_TARGETS.md (2 hunks)
  • pmoves/docs/integrations/EXTERNAL_IMAGES_BUILD.md (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/Makefile.models.snippet (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/README.md (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/pmoves/models/agent-zero.yaml (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/pmoves/models/archon.yaml (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/pmoves/models/media.yaml (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/pmoves/models/vlm-and-creator.yaml (1 hunks)
  • pmoves/docs/pmoves-model-management-starter/pmoves/scripts/models_sync.py (1 hunks)
  • pmoves/docs/services/hi-rag-gateway-v2/README.md (4 hunks)
  • pmoves/docs/services/jellyfin-bridge/README.md (2 hunks)
  • pmoves/docs/services/open-notebook/README.md (2 hunks)
  • pmoves/docs/services/wger/README.md (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/.env.tensorzero.example (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/PMOVES Edition Comprehensive Discord Bot Architecture.md (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/README.md (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/README_TENSORZERO_VENICE.md (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/compose.overrides.agents.yml (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/compose.overrides.tensorzero.yml (1 hunks)
  • pmoves/docs/venice-tensorzero-integration/tensorzero.toml (1 hunks)
  • pmoves/env.shared.example (6 hunks)
  • pmoves/libs/providers/embedding.py (3 hunks)
  • pmoves/model-management/README.md (1 hunks)
  • pmoves/models/agent-zero.yaml (1 hunks)
  • pmoves/models/archon.yaml (1 hunks)
  • pmoves/models/media.yaml (1 hunks)
  • pmoves/models/vlm-and-creator.yaml (1 hunks)
  • pmoves/monitoring/loki/local-config.yaml (1 hunks)
  • pmoves/pmoves-integrations-pr-pack/compose/docker-compose.firefly.yml (1 hunks)
  • pmoves/pmoves-integrations-pr-pack/compose/docker-compose.wger.yml (1 hunks)
  • pmoves/services/extract-worker/worker.py (1 hunks)
  • pmoves/services/hi-rag-gateway-v2/Dockerfile.gpu (2 hunks)
  • pmoves/services/hi-rag-gateway-v2/app.py (9 hunks)
  • pmoves/services/invidious-companion-proxy/Dockerfile (1 hunks)
  • pmoves/services/invidious-companion-proxy/default.conf (1 hunks)
  • pmoves/services/jellyfin-bridge/main.py (2 hunks)
  • pmoves/services/pmoves-yt/yt.py (2 hunks)
  • pmoves/supabase/initdb/13_youtube_transcripts.sql (1 hunks)
  • pmoves/supabase/migrations/2025-10-26_transcripts_video_fk.sql (1 hunks)
  • pmoves/tensorzero/clickhouse/users.xml (1 hunks)
  • pmoves/tools/create_supabase_boot_user.py (1 hunks)
  • pmoves/tools/models/apply_profile.sh (1 hunks)
  • pmoves/tools/models/models_sync.py (1 hunks)
  • pmoves/ui/README.md (3 hunks)
  • pmoves/ui/app/(auth)/login/page.tsx (2 hunks)
  • pmoves/ui/app/api/uploads/persist/route.ts (8 hunks)
  • pmoves/ui/app/api/uploads/presign/route.ts (4 hunks)
  • pmoves/ui/app/dashboard/agent-zero/page.tsx (1 hunks)
  • pmoves/ui/app/dashboard/archon/page.tsx (1 hunks)
  • pmoves/ui/app/dashboard/ingest/page.tsx (2 hunks)
  • pmoves/ui/app/dashboard/personas/page.tsx (1 hunks)
  • pmoves/ui/app/page.tsx (3 hunks)
  • pmoves/ui/app/test-supabase/page.tsx (1 hunks)
  • pmoves/ui/e2e/supabase-auth.spec.ts (1 hunks)
  • pmoves/ui/hooks/useSupabaseAuth.ts (2 hunks)
  • pmoves/ui/lib/supabaseBrowser.ts (1 hunks)
  • pmoves/ui/lib/supabaseClient.ts (3 hunks)
  • pmoves/ui/package.json (1 hunks)
  • pmoves/ui/playwright.config.ts (1 hunks)
  • pmoves/ui/proxy.ts (2 hunks)
  • pmoves/venice-tensorzero-integration/README.md (1 hunks)

Note

Free review on us!

CodeRabbit is offering free reviews until Fri Nov 07 2025 to showcase some of the refinements we've made.

Comment @coderabbitai help to get the list of available commands and usage tips.

@POWERFULMOVES
POWERFULMOVES merged commit ccb53ff into main Nov 6, 2025
0 of 4 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

ingest: 'ui-dropzone',
status: transcriptText ? 'available' : 'pending',
author,
owner_id: session.user.id,
},

P1 Badge Guard transcript upsert when no Supabase session

The persist upload handler now supports running under a boot JWT without a browser session, but the transcript upsert still references session.user.id. When the endpoint is invoked in the new boot‑JWT mode (no cookie session, ownerId passed in the body), session is null, so this line throws before any metadata is stored. That breaks uploads for exactly the configuration the commit introduced. Use the already computed effectiveUserId (or skip the owner field) so the route works both with and without a logged-in session.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

POWERFULMOVES added a commit that referenced this pull request Jan 18, 2026
POWERFULMOVES pushed a commit that referenced this pull request Feb 12, 2026
…-state-consolidation

Fix Supabase key validation and consolidate frontend state management
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