chore(frontend): remove the legacy vanilla-JS frontend and its tooling
The SvelteKit app under /frontend has fully superseded the legacy
vanilla-JS/CSS frontend in /static, which was only ever served by a
debug `cargo run` / `PROFILE=dev` and never shipped to production.
Remove it together with the whole subsystem that existed only to
support it (~54k lines).
Frontend & assets:
- Delete /static (js/, css/, *.html, sw.js, basemaps/, locales symlink).
- Relocate the brand/PWA assets (logo/, favicon.ico, manifest.webmanifest)
to frontend/static/ so they ship with the SPA. This also fixes the
favicon, which app.html referenced but was missing from the prod bundle.
- Migrate the Nextcloud login-flow redirects from /nextcloud-error.html
to the SvelteKit /nextcloud/error route.
Web layer:
- Simplify resolve_static_path: drop the PROFILE=dev branch; always prefer
the Vite static-dist/ build, fall back to the configured path.
- Resolve i18n locales from the served SPA dir with a frontend/static
fallback so `just dev` works without a prior build.
Build:
- Prune build.rs from 1262 to ~70 lines (git metadata only); the Rust asset
pipeline and the OXICLOUD_RUST_ASSETS rollback flag are gone.
- Drop the now-unused build-dependencies (oxc_*, lightningcss).
- Remove the COPY static lines from the Dockerfile (cacher + builder).
Tooling & docs:
- Delete biome.json, jsconfig.json, tools/check-*.py, identifier.sh.
- Remove the legacy front-* justfile recipes; repoint the design-system
scripts (locales, dead-tokens, brand-drift, token-docs) at the frontend,
and drop check-contrast/check-headings (coupled to the old token
taxonomy / multi-page HTML).
- Repoint docs/DESIGN-SYSTEM.md links; remove 5 superseded docs/plan/*.
Backend dead code:
- Remove the dead `folder_repo` field from FileBlobWriteRepository.
- Remove the deprecated GET /api/folders/{id}/listing endpoint
(superseded by /resources).
Verified: cargo clippy (all-features/all-targets) clean, cargo test
--workspace 448 passed, cargo fmt clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Maskable PWA icon: full-bleed accent tile with the cloud mark inside the
|
||||
~80% safe zone, so platform crops (circle/squircle) never clip it. -->
|
||||
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="oxi-maskable-bg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#ff5e3a"/>
|
||||
<stop offset="1" stop-color="#ff8a5c"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="500" height="500" fill="url(#oxi-maskable-bg)"/>
|
||||
<g transform="translate(250 250) scale(0.55) translate(-250 -250)">
|
||||
<path
|
||||
d="m 364.14537,344.11776 c 40.65049,0 73.64219,-32.99169 73.64219,-73.64218 0,-40.65047 -32.9917,-73.64217 -73.64219,-73.64217 -7.80607,0 -15.17028,1.17827 -22.23993,3.38754 -11.04633,-40.94506 -47.57285,-69.6655 -91.16903,-69.6655 -43.59616,0 -80.12268,28.72044 -92.64185,68.19265 -7.06965,-0.73642 -14.43386,-1.91469 -22.23994,-1.91469 -40.65049,0 -73.64218,32.9917 -73.64218,73.64217 0,40.65049 32.99169,73.64218 73.64218,73.64218 z"
|
||||
fill="#ffffff"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 500 500"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<!-- Fondo circular más pequeño -->
|
||||
<circle
|
||||
cx="252.03235"
|
||||
cy="253.65822"
|
||||
r="233.24736"
|
||||
fill="#f8f9fa" />
|
||||
<!-- Forma de nube principal - manteniendo la misma posición -->
|
||||
<path
|
||||
d="m 364.14537,344.11776 c 40.65049,0 73.64219,-32.99169 73.64219,-73.64218 0,-40.65047 -32.9917,-73.64217 -73.64219,-73.64217 -7.80607,0 -15.17028,1.17827 -22.23993,3.38754 -11.04633,-40.94506 -47.57285,-69.6655 -91.16903,-69.6655 -43.59616,0 -80.12268,28.72044 -92.64185,68.19265 -7.06965,-0.73642 -14.43386,-1.91469 -22.23994,-1.91469 -40.65049,0 -73.64218,32.9917 -73.64218,73.64217 0,40.65049 32.99169,73.64218 73.64218,73.64218 z"
|
||||
fill="#ff5e3a" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 863 B |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 190 KiB |
|
After Width: | Height: | Size: 57 KiB |
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Social share image (1200×630). SOURCE asset — most platforms ignore SVG
|
||||
og:images, so export this to og-image.png for full Facebook/Twitter/etc.
|
||||
support and point the meta tags at the PNG. -->
|
||||
<svg viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg"
|
||||
font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif">
|
||||
<defs>
|
||||
<linearGradient id="oxi-og-tile" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#ff5e3a"/>
|
||||
<stop offset="1" stop-color="#ff8a5c"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="630" fill="#0f172a"/>
|
||||
<circle cx="1000" cy="110" r="280" fill="#ff5e3a" opacity="0.08"/>
|
||||
<circle cx="150" cy="560" r="220" fill="#ff5e3a" opacity="0.06"/>
|
||||
<rect x="490" y="158" width="140" height="140" rx="34" fill="url(#oxi-og-tile)"/>
|
||||
<g transform="translate(560 228) scale(0.34) translate(-250 -250)">
|
||||
<path
|
||||
d="m 364.14537,344.11776 c 40.65049,0 73.64219,-32.99169 73.64219,-73.64218 0,-40.65047 -32.9917,-73.64217 -73.64219,-73.64217 -7.80607,0 -15.17028,1.17827 -22.23993,3.38754 -11.04633,-40.94506 -47.57285,-69.6655 -91.16903,-69.6655 -43.59616,0 -80.12268,28.72044 -92.64185,68.19265 -7.06965,-0.73642 -14.43386,-1.91469 -22.23994,-1.91469 -40.65049,0 -73.64218,32.9917 -73.64218,73.64217 0,40.65049 32.99169,73.64218 73.64218,73.64218 z"
|
||||
fill="#ffffff"/>
|
||||
</g>
|
||||
<text x="600" y="400" text-anchor="middle" fill="#f1f5f9" font-size="78" font-weight="700">OxiCloud</text>
|
||||
<text x="600" y="452" text-anchor="middle" fill="#94a3b8" font-size="30">Fast, private cloud storage built with Rust</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |