feat(deploy): production deployment preparation, kernel fixes, and submodule sync#58
feat(deploy): production deployment preparation, kernel fixes, and submodule sync#58Tjemmmic wants to merge 107 commits into
Conversation
…pdate submodule pointers
Previously depth=None defaulted to 0 (direct children only), causing room nodes (depth 2) to never be returned to the frontend. Now depth=None returns all descendants at any depth, while depth=Some(0) retains the direct-children-only behavior.
- citadel-internal-service: add ByteContents FileSource variant - citadel-workspaces: add Playwright test infrastructure
- auto-claim first active session on direct URL navigation - wire content header icons to actions in OfficeLayout - enlarge avatar upload area and add brand mark to landing - disable workspace-specific settings tabs when disconnected - add password visibility toggle to login form - add step progress indicator to registration wizard - add Escape key dismissal to login and join overlays - rename 'Add a New Workspace' to 'Join Workspace' - constrain landing page to viewport height - add Join Workspace CTA to empty Manage Accounts dialog - wrap UserDirectory in AppLayout for consistent navigation - improve login error messages with actionable feedback - populate User Directory with workspace members - persist workspace init modal dismissal across navigations
…results - CODEMAP.md: complete route map and component inventory - INTERACTION_MATRIX.md: exhaustive navigation and feature matrix - PRODUCTION_DEPLOYMENT.md: production readiness analysis - TEST_RESULTS.md: systematic UI/UX browser test results - test-screenshots/: annotated screenshots from test runs
Points to UI/UX polish commits: placeholder removal, button casing, accent color unification, TooltipProvider cleanup, and theme standardization.
Points to latest commits including MDX strikethrough fix, localStorage server fallback, postAuthSetup consolidation, UX permission feedback, and assorted bug fixes.
|
Pointers to submodules will be updated/corrected once the following PRs are merged: |
This comment was marked as outdated.
This comment was marked as outdated.
Adds a visited set to the breadth-first search in `async_node_ops` to protect against genuine cycles and duplicate child references that could lead to exponential expansion and out-of-memory errors.
…store migration Defers the backend migration sentinel initialization until `NodeRemote` is available, ensuring the real backend is initialized rather than the in-memory test storage.
Ensures that the per-workspace password key is also deleted from the backend when a workspace is removed, preventing secret leakage and potential re-association issues.
Introduces an `index_write_mutex` to serialize read-modify-write operations on index keys, preventing concurrent connections from racing and silently dropping entities from the index.
…ssing Updates the production image validation in the CI workflow to fail if EITHER the server or internal-service image is missing, rather than only failing if BOTH are missing.
Removes the Caddyfile and updates deployment scripts and docker-compose configurations to expose the nginx UI directly on port 80.
This comment was marked as outdated.
This comment was marked as outdated.
- Add `migration_tests` in `BackendTransactionManager` to verify the legacy-collection to per-entity-key migration. - Update `ListNodes` documentation to explicitly document the depth semantics, especially that `None` equates to unlimited depth for the frontend's lazy-loading strategy.
This comment was marked as outdated.
This comment was marked as outdated.
- Extract rate limiter from per-connection task local state into a shared `RateLimiter` component. - This prevents a single actor from circumventing the budget by opening multiple concurrent connections (which previously granted N independent token buckets). - Move state into `parking_lot::Mutex<HashMap<u64, Bucket>>` for fast, synchronous updates across connection tasks. - Add comprehensive test suite covering multi-caller deduplication.
- Explain the ephemeral-by-default development contract for the backend config. - Document the environment variables (`WORKSPACE_BACKEND`, `WORKSPACE_DATA_DIR`) required to enable persistent storage, which production deployments inject.
…ross-host WebSocket exfiltration
…avoid interpreting metacharacters
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
… file-transfer intent
This comment was marked as outdated.
This comment was marked as outdated.
…nts at the tunnel origin
…ocument in .env.example
…s with whitespace
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
🤖 AI Code ReviewSummaryThis PR prepares the Citadel Workspace for production deployment by adding persistent filesystem backend support (opt-in via env vars), a production Docker Compose with nginx-served UI and Cloudflare tunnel support, a deploy script with rolling restarts, iterative BFS tree building to replace recursive implementation, and submodule syncs. The changes are extensive but well-structured with thorough inline documentation, good security practices (password redaction in Debug, CSP headers, non-root containers, CHANGE_ME placeholder validation), and solid test coverage for the core algorithm changes. Issues Found5 total — 0 P1 (blocking) · 1 P2 (should fix) · 4 P3 (nice to have)
|
…_ME__ placeholder
…the same as 'KEY=value'
Summary
Prepares the repo for production deployment: adds a production Docker Compose stack, Caddy reverse proxy, deploy script, and a CI validate workflow. Also fixes a backend kernel bug where
list_nodesdid not return the full descendant tree whendepthwas unspecified, bumps both submodule pointers to pull in a large batch of UI/UX fixes and the newFileSource::ByteContentsbrowser file-transfer variant, and adds architecture / deployment / test documentation.What's included
Production deployment infrastructure
docker-compose.production.yml— production compose stackdocker/caddy/Caddyfile— reverse proxy configdeploy.sh— deployment helper script.env.example— environment templateinternal-service,ui,workspace-serverdocker/workspace-server/kernel.tomladditionsCI
.github/workflows/validate.yml— integration validation workflowBackend fixes (
citadel-workspace-server-kernel)fix: return all tree descendants when depth is unspecified in list_nodes— kernel now walks the full subtree when no depth is passed instead of returning only direct childrenasync_kernel.rs,transaction/mod.rs,transaction/backend_ops_simple.rs, andhandlers/domain/async_ops/async_node_ops.rsmain.rsSubmodule bumps
citadel-internal-service→ pulls in theFileSource::ByteContentsvariant + typescript-client cleanupcitadel-workspaces→ pulls in the large UI/UX fix branch (see its PR)Documentation
docs/CODEMAP.md— full route/component inventorydocs/INTERACTION_MATRIX.md— navigation/feature matrixdocs/PRODUCTION_DEPLOYMENT.md— production readiness analysisdocs/TEST_RESULTS.md— systematic UI/UX test resultsdocs/test-screenshots/— annotated screenshotsCommits
ceefaa3chore: update caddyfile and bump workspace submodule0424227wip!: production deployment preparatione98060echore: update citadel-workspaces submodule pointer6aa7be5chore: update citadel-workspaces submodule pointerfc1b508docs: add codemap, interaction matrix, deployment analysis, and test resultsf74e0d2fix(ui): bump citadel-workspaces submodule with UI/UX fixes8cf1c10chore: update submodule referencesb15177bchore: update submodule references557bd93fix: return all tree descendants when depth is unspecified in list_nodes45cc5c2feat: change UI dev server port from 5173 to 5291 and fix circular dependency TDZb2eee43chore: update citadel-workspaces submodule (feature audit fixes)646d76fchore: update citadel-workspaces submodule (feature hookups + UX fixes)23b9f76fix: adjust log level to info, fix Dockerfile vite cache ownership, update submodule pointers