Skip to content

Ship secure production Web deployment - #1

Open
devinhuang2001 wants to merge 9 commits into
mainfrom
import/current-workspace-20260710
Open

devinhuang2001 wants to merge 9 commits into
mainfrom
import/current-workspace-20260710

Conversation

@devinhuang2001

Copy link
Copy Markdown
Owner

What changed

  • import the current 15-crate Rust workspace while preserving repository history
  • add the React/Vite Web workbench and Windows desktop launcher
  • harden AppServer WebSocket access with strong token authentication, exact Origin allowlisting, protocol negotiation, bounded queues, message/rate/connection/turn limits, and production fail-closed behavior
  • add in-memory Web login, same-origin WSS, and capped exponential reconnects
  • add a non-root multi-stage Docker image, Caddy static/WebSocket routing, security headers, health check, persistent data/workspace paths, and a Render Blueprint
  • add CI for three-platform Rust validation, Web tests/build, and the production container
  • add tagged GitHub Release packaging with Windows desktop and prebuilt Web assets
  • add MIT license and update specifications, build docs, and task traceability
  • upgrade Vite to 8.1.4 and its React plugin to remove all npm audit findings

Why

The previous repository represented an older local-only prototype. The current workspace was functionally complete for local use, but exposing its unauthenticated AppServer would have made the DeepSeek key, sessions, file tools, and Shell tools reachable from the public internet. This change establishes a single-user production boundary and a reproducible deployment/release path.

User impact

Windows users keep one-click desktop/Web startup. Public Web users receive an access-token gate and must configure DEEPSEEK_API_KEY, DEEPCODER_ACCESS_TOKEN, and the exact allowed Origin. Session and workspace data can persist under /var/data.

Validation

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo check --workspace
  • cargo test --workspace
  • cargo build --release -p deepcoder-cli -p deepcoder-desktop
  • npm ci
  • npm audit --audit-level=moderate — 0 vulnerabilities
  • npm test — 10/10 passing
  • VITE_DEEPCODER_REQUIRE_AUTH=true npm run build
  • bash -n deploy/entrypoint.sh
  • StartDeepCoderWeb.ps1 -ValidateOnly
  • staged secret scan and tracked-artifact audit — clean

GitHub CI will independently build the production Docker image and re-run the platform matrix.

devinhuang2001 and others added 9 commits July 11, 2026 00:07
read_file and edit_file failed with NotADirectory on any file that already
existed. resolve_workspace_path used the target itself as the existing
ancestor, which left an empty tail, and joining an empty path appended a
trailing separator, so the tool ended up opening `<file>/`.

Return the canonical ancestor as-is when there is no tail. Paths for files
that do not exist yet are unchanged.
Stable clippy now reports these four traits as a duplicate #[must_use]:
async_trait already marks the generated boxed futures, so the lint is a false
positive on the macro expansion. Allow it at the four definitions; the extra
`unknown_lints` entry keeps clippy versions that predate the lint quiet.

No behaviour change.
Stable clippy now reports these four traits as a duplicate #[must_use]:
async_trait already marks the generated boxed futures, so the lint is a false
positive on the macro expansion. Allow it at the four definitions; the extra
`unknown_lints` entry keeps clippy versions that predate the lint quiet.

No behaviour change.
@devinhuang2001
devinhuang2001 marked this pull request as ready for review October 9, 2026 17:09
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