George Wu
7e530a6b8c
Add missing version update from 0.4.1 to 0.4.2
2026-02-21 12:03:09 -08:00
George Wu
b28aa341b3
Enable brotli compression for API and static files
...
- Add compression-br feature to tower-http
- Apply CompressionLayer to API routes (JSON responses)
- Apply CompressionLayer to static files (CSS, JS, locales)
- File downloads remain uncompressed (avoid double compression)
2026-02-17 23:00:45 -08:00
Diocrafts
f661282962
perf(web): add gzip compression + cache-control headers for static assets
...
- Add CompressionLayer to web router for gzip compression of JS/CSS/JSON/SVG
- Add Cache-Control header (7 days + stale-while-revalidate) via SetResponseHeaderLayer
- Add 'set-header' feature to tower-http dependency
- Result: 67-85% reduction in transfer size for all static assets
2026-02-17 19:29:42 +01:00
Dionisio
f70890e884
fix: upload failure, share dialog, shared view styling, dark mode fixes
...
- Fix 'folder_id is required' upload error by adding create_home_folder
through the full hexagonal architecture (trait, service, repository, auth)
- Fix double upload issue with _isUploading concurrency guard
- Fix Share context menu doing nothing (ID collision between sharedView
and main share dialog resolved with sv- prefix)
- Fix Compartidos tab duplicate headers and broken layout
- Add missing .shared-dialog CSS with dark mode support
- Fix dark mode white backgrounds on empty-state, shared-filters,
trash-actions, action-btn, and header
- Fix i18n key mismatches in sharedView
- Bump version to 0.4.1
Closes #120
2026-02-16 16:18:39 +01:00
Dionisio
b7bd656a43
perf: fix issues #1,#2,#3,#13 from performance audit
...
- #1 image_transcode: dedicated rayon pool + moka cache (no tokio blocking)
- #2 ltree materialized paths: eliminate N+1 folder/file queries
- #3 compute_content_hash: read blob_hash column instead of loading file into RAM
- #13 event delegation + DocumentFragment: ~15 delegated listeners replace ~19k per-item listeners
Backend: 82/82 tests pass, cargo check clean.
Frontend: ui.js and app.js syntax-validated via Node.js.
2026-02-16 13:10:44 +01:00
Dionisio
e69de1643f
chore: bump version to 0.4.0
2026-02-16 09:24:01 +01:00
Dionisio
6e1b77f244
chore: remove orphan test_cache.rs and unused memmap2 dependency
2026-02-15 21:20:20 +01:00
Dionisio
1ed20f425f
perf: Phase 4+5 optimizations — uploads 10x, downloads 2x, concurrent 2x. moka cache, 512KB buffers, remove sync_all, hash-on-write, preloaded queries, bench.sh v3, gitignore storage/. 500MB upload 12.6s->1.3s (392MB/s). RSS 69-113MB, 0 swap.
2026-02-15 17:56:47 +01:00
Dionisio
1c5cf97cc5
security: fix audit vulnerabilities (RUSTSEC-2026-0007, RUSTSEC-2021-0141)
...
- Update bytes 1.11.0 -> 1.11.1 (fixes integer overflow in BytesMut::reserve, CVE-2026-25541)
- Replace unmaintained dotenv 0.15.0 with dotenvy 0.15.7 (RUSTSEC-2021-0141)
- Note: rsa 0.9.10 (RUSTSEC-2023-0071) has no patch yet, pulled transitively via jsonwebtoken
2026-02-14 01:37:03 +01:00
Dionisio
5bf1e4b607
chore: migrate to Rust Edition 2024
...
- Update edition from 2021 to 2024 in Cargo.toml
- Remove explicit `ref` bindings in pattern matches (di.rs, carddav_adapter.rs)
Edition 2024 uses implicit ref binding modes
- Refactor folder_handler.rs: change `impl IntoResponse` return types to
concrete `axum::response::Response` to avoid lifetime capture issues
(Edition 2024 captures all in-scope lifetimes in `impl Trait`)
- All 101 tests pass, zero warnings
2026-02-13 23:00:16 +01:00
Dionisio
28a353e17e
chore: bump version to 0.3.5
2026-02-13 22:45:59 +01:00
Dionisio
40bf43b292
fix: cap default storage quota to available disk space ( #92 )
...
Previously the admin quota was hardcoded to 100 GB and the regular
user quota to 1 GB, regardless of actual disk capacity. On systems
with less than 100 GB free this produced misleading quota values.
Added the fs2 crate to query available disk space on the storage
filesystem. A new capped_quota() helper now returns
min(default_quota, available_disk_space) when assigning quotas
during user registration, admin setup, and OIDC provisioning.
2026-02-13 21:58:54 +01:00
Dionisio
d0d5489994
Fix: add default-run to Cargo.toml so cargo run works without --bin
...
Fixes the 'could not determine which binary to run' error.
Ref #80
2026-02-13 20:47:26 +01:00
Dionisio
df0ebc36f1
chore: bump version to 0.3.4
2026-02-13 12:38:41 +01:00
Dionisio
e4df365e4e
chore: bump version to 0.3.3
2026-02-13 10:12:34 +01:00
Dionisio
915d9a4353
chore: bump version to 0.3.2
2026-02-12 23:27:20 +01:00
Dionisio
321fae7dcb
chore: bump version to 0.3.1
2026-02-12 12:33:45 +01:00
Dionisio
d448e632ed
fix: downgrade rand_core to 0.6 for argon2 compatibility
...
rand_core 0.9.x changed OsRng API (no longer implements RngCore directly)
and is incompatible with argon2 0.5.x which depends on rand_core 0.6.x.
This caused compilation failures in CI.
2026-02-11 17:59:18 +01:00
Dionisio
1e8a7dd5bb
feat: redesign admin panel & profile page, optimize Dockerfile, remove rootless
...
- Completely redesign admin.html matching OxiCloud design system
- Create standalone profile.html page with avatar, details & password change
- Optimize Dockerfile: 3-stage build, non-root user, OCI labels, layer cache
- Add .dockerignore to reduce build context
- Remove redundant Dockerfile.rootless & rootless-compose.yml
- Redesign login language selector as compact dropdown with search
- Fix CI/CD workflows (ci.yml, docker-build.yml, docker-publish.yml)
- Update app.js to navigate to profile page instead of modal
2026-02-11 14:09:40 +01:00
Dionisio
8ef62109a3
feat(auth): add OpenID Connect (OIDC) authentication support
...
Implements OIDC Authorization Code Flow for external identity providers
(Authentik, Keycloak, etc.) with JIT user provisioning.
New features:
- OidcService with OpenID Discovery, JWKS caching, RS256 ID token validation
- Authorization Code Flow: /api/auth/oidc/authorize -> IdP -> /api/auth/oidc/callback
- JIT user provisioning from OIDC claims (sub, email, name, groups)
- OIDC group-to-role mapping (admin_groups config)
- Provider info endpoint: GET /api/auth/oidc/providers
- Option to disable password login entirely (OXICLOUD_OIDC_DISABLE_PASSWORD_LOGIN)
- Auto-provision toggle (OXICLOUD_OIDC_AUTO_PROVISION)
- Email collision detection (security: prevents account takeover)
Configuration (env vars):
- OXICLOUD_OIDC_ENABLED, OXICLOUD_OIDC_ISSUER_URL
- OXICLOUD_OIDC_CLIENT_ID, OXICLOUD_OIDC_CLIENT_SECRET
- OXICLOUD_OIDC_REDIRECT_URI, OXICLOUD_OIDC_SCOPES
- OXICLOUD_OIDC_FRONTEND_URL, OXICLOUD_OIDC_PROVIDER_NAME
- OXICLOUD_OIDC_AUTO_PROVISION, OXICLOUD_OIDC_ADMIN_GROUPS
- OXICLOUD_OIDC_DISABLE_PASSWORD_LOGIN
DB migration:
- ALTER TABLE auth.users ADD oidc_provider, oidc_subject columns
- UNIQUE index on (oidc_provider, oidc_subject)
Files changed: 14 files, ~1400 lines added
Dependencies: reqwest 0.12 (rustls-tls-webpki-roots), base64 0.22
2026-02-10 20:32:32 +01:00
Diocrafts
5bd505ccd7
modernizing frontend
2026-02-08 22:44:42 +01:00
Diocrafts
a82faa5eaf
refactoring hexagonal and clean architecture
2026-02-08 13:40:23 +01:00
Dionisio
8f2b0a354c
big refactoring
2026-02-03 17:59:04 +01:00
Dionisio
52840e57df
refactor: remove serde from domain entities for Clean Architecture compliance
...
- Remove Serialize/Deserialize from File, Folder, Session, User, Contact entities
- Create contact_persistence_dto.rs for JSONB persistence in infrastructure layer
- Update contact_pg_repository to use persistence DTOs
- Fix dependency on zip crate (downgrade from 7.2.0 to 2.1.0)
- Fix unused variable warnings in main.rs
- Move PathService import from domain to infrastructure
- Add missing fields to CoreServices and RepositoryServices
- Create proper service initialization in main.rs
Clean Architecture improvements:
- Domain layer no longer depends on serde framework
- Persistence concerns isolated to infrastructure layer
- TokenClaims in auth_service.rs is only exception (required for JWT)
2026-02-02 23:56:40 +01:00
Shubham Gupta
727aee3ad0
Add dotenv to dependencies
2025-09-10 00:28:18 +08:00
DioCrafts
52d8250d51
adding card dav and cald dav
2025-04-13 01:04:04 +02:00
DioCrafts
5d67bc4d84
fix several bugs
2025-04-10 01:43:25 +02:00
DioCrafts
8f1d213526
improve postgresql performance
2025-04-09 00:21:20 +02:00
DioCrafts
ba3ef2a530
adding webdav features
2025-04-04 21:31:41 +02:00
DioCrafts
705cb5b069
adding pdf and image viewer
2025-04-02 01:22:05 +02:00
dionidev
e79ca8304b
adding comments, moving technical documentation, improve Dockerfile, delete unuseful files
2025-03-30 14:17:09 +00:00
DioCrafts
3a4cb75ac7
configuring backend topology
2025-03-28 12:38:48 +01:00
DioCrafts
bfbef18117
fix warnings
2025-03-27 23:41:56 +01:00
DioCrafts
e22c0ac855
fix trash and additional bugs
2025-03-26 18:33:22 +01:00
DioCrafts
af70581f91
adding LTO to gain efficient
2025-03-26 11:04:07 +01:00
DioCrafts
9a9fd72f61
fixing bugs
2025-03-23 22:44:18 +01:00
DioCrafts
cafad0fbfd
adding user authentication
2025-03-20 09:22:31 +01:00
DioCrafts
d9bbd575d2
adding several features
2025-03-19 00:44:27 +01:00
root
fe19bc8505
Initial commit
2025-03-17 21:28:08 +01:00