Please confirm the following
Feature Description
OpenList already keeps frontend source in a separate repository, but building
and serving the UI remain coupled to the Go process. build.sh obtains frontend
assets; public/public.go embeds a distribution; server/static/static.go
handles embedded, dist_dir and CDN modes while still initializing an HTML
entry point. The frontend accepts window.OPENLIST_CONFIG.api in
src/utils/config.ts but otherwise assumes the page origin/base path. This
request is for a supported runtime boundary, not a second frontend source
tree or a mandatory microservice deployment.
Please specify and support two modes: today's bundled UI and an API-only OpenList
backend paired with an independently hosted official frontend. A backend with
no UI distribution should start and serve its API and enabled protocols without
fetching or reading index.html. A separately hosted frontend should fail
clearly, rather than silently misbehave, when its API contract is incompatible.
Suggested Solution
- Inventory the paired frontend/backend contract: API version and feature
discovery; public settings/init; login/token/cookie/CORS/CSRF policy; path
and download/signed-URL base; redirects; upload methods; task/event channels;
error shapes; backend-kind-specific screens.
- Make static-UI hosting an optional composition path, not a startup
precondition of API routes. Keep bundled mode as the compatibility default.
- Add an explicit deployment/configuration contract for API base and
capability/version negotiation; protect secret-bearing admin routes as today.
- Test both packaged modes with list, login, download/Range, upload and admin
storage/settings smoke flows, including non-root base paths and mismatched
frontend/backend versions. Document supported version combinations.
Additional Information
Relevant source: server/static/static.go, server/router.go, build.sh;
frontend src/utils/config.ts, src/app/App.tsx, src/utils/backend.ts,
src/pages/manage/routes.tsx. The frontend currently gates some admin pages by
backend kind and uses initialization-specific probing; those are cross-boundary
behavior, not evidence that every screen can be made independent. This request
should coordinate with any existing architecture refactor PRs, not supersede
them without review. #550 asks for a lite frontend build; it does not establish
an API-only backend contract.
AI Generated Content
AI model used
OpenAI Codex (exact model identifier not exposed to the agent)
Please confirm the following
OpenListand not by a third party.Feature Description
OpenList already keeps frontend source in a separate repository, but building
and serving the UI remain coupled to the Go process.
build.shobtains frontendassets;
public/public.goembeds a distribution;server/static/static.gohandles embedded,
dist_dirand CDN modes while still initializing an HTMLentry point. The frontend accepts
window.OPENLIST_CONFIG.apiinsrc/utils/config.tsbut otherwise assumes the page origin/base path. Thisrequest is for a supported runtime boundary, not a second frontend source
tree or a mandatory microservice deployment.
Please specify and support two modes: today's bundled UI and an API-only OpenList
backend paired with an independently hosted official frontend. A backend with
no UI distribution should start and serve its API and enabled protocols without
fetching or reading
index.html. A separately hosted frontend should failclearly, rather than silently misbehave, when its API contract is incompatible.
Suggested Solution
discovery; public settings/init; login/token/cookie/CORS/CSRF policy; path
and download/signed-URL base; redirects; upload methods; task/event channels;
error shapes; backend-kind-specific screens.
precondition of API routes. Keep bundled mode as the compatibility default.
capability/version negotiation; protect secret-bearing admin routes as today.
storage/settings smoke flows, including non-root base paths and mismatched
frontend/backend versions. Document supported version combinations.
Additional Information
Relevant source:
server/static/static.go,server/router.go,build.sh;frontend
src/utils/config.ts,src/app/App.tsx,src/utils/backend.ts,src/pages/manage/routes.tsx. The frontend currently gates some admin pages bybackend kind and uses initialization-specific probing; those are cross-boundary
behavior, not evidence that every screen can be made independent. This request
should coordinate with any existing architecture refactor PRs, not supersede
them without review. #550 asks for a lite frontend build; it does not establish
an API-only backend contract.
AI Generated Content
AI model used
OpenAI Codex (exact model identifier not exposed to the agent)