Skip to content

Replace Streamlit with a polished local web interface - #24

Merged
brainx merged 3 commits into
mainfrom
polished-local-web-ui-pr
Aug 2, 2026
Merged

Replace Streamlit with a polished local web interface#24
brainx merged 3 commits into
mainfrom
polished-local-web-ui-pr

Conversation

@brainx

@brainx brainx commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace the Streamlit interface and transition fallback with a responsive monochrome React/Vite app served by the loopback-only Python API
  • redesign Encrypt, Decrypt, Generate keys, and Inspect key as focused workflows with responsive navigation, progressive technical details, keyboard focus, reduced-motion support, and explicit capability states
  • harden sensitive workflow lifecycles with request cancellation, fail-closed validation, safe error categories, password clearing, and download-specific recovery
  • update packaging, lock files, CI, documentation, and screenshots for the single supported local web interface
  • preserve authenticated decrypt-only compatibility for supported older encrypted artifacts while keeping new encryption on format v4 with ML-KEM-768+X25519-v2

Why

The custom frontend had reached workflow parity but still carried a temporary Streamlit fallback and mixed product, state, and styling concerns. This change makes the polished local web app the only GUI, removes the transition surface, and gives security-sensitive operations clearer state and failure handling.

User impact

  • ./start.sh now always launches the local ASGI web app.
  • LEGACY_STREAMLIT=1, pqc_app.py, the Streamlit configuration, and Streamlit runtime dependencies are removed.
  • Existing supported encrypted artifacts remain decryptable; older public keys cannot be used for new encryption.
  • The interface remains local-only and does not add telemetry, remote assets, browser persistence, or plaintext previews.

Verification

  • ./test.sh — 173 passed, 15 skipped where the host-native liboqs backend was unavailable
  • npm ci — clean install completed
  • npm run check — TypeScript passed; 3 API-client tests and 65 component/unit tests passed
  • npm run build — production build passed; 40 modules transformed
  • npm run ui-smoke — Encrypt, Decrypt, Generate, Inspect, failure states, automated accessibility checks, and 390/768/1024/1440 px layouts passed
  • disposable Linux/liboqs validation — 188 tests passed, including direct KEM and complete CLI encrypt/decrypt round trips
  • git diff --check origin/main...HEAD — passed

Runtime change

This intentionally removes the former Streamlit recovery path. The loopback ASGI service and React/Vite client are now the sole GUI runtime.

@brainx
brainx merged commit 342eb3a into main Aug 2, 2026
11 checks passed
@brainx
brainx deleted the polished-local-web-ui-pr branch August 2, 2026 20:45
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