Commit Graph

201 Commits

Author SHA1 Message Date
Edouard Vanbelle 8b0fb03b5c feat(recoverable jobs): clarify life cycle pause vs cancel
a job can be paused/resumed
    a job as an exclusibity by it's name
    if you want to run another job with same name:
    either cancel the first one, or wait of it's terminaison

    pause does not permit to run the other job, this can create
    race conditions
2026-08-02 17:38:44 +02:00
Edouard Vanbelle 5eec0fb36e fix(migration): recover the main banner progression on server restart 2026-08-02 16:25:47 +02:00
Edouard Vanbelle 07802e01f8 feat(recoverable job): add pause/resume capability 2026-08-02 16:17:15 +02:00
Edouard Vanbelle c00451fc88 feat(admin): better refresh in admin section when storage is in migration 2026-08-02 15:59:38 +02:00
Edouard Vanbelle 49a4c53eed feat(admin storage): show finger print on key generation 2026-08-02 15:26:41 +02:00
Edouard Vanbelle 015f2da0f7 refactor(backend): normalize naming convention to backend rather storage
no ambiguity with the backend rather storage
2026-08-02 14:56:29 +02:00
Edouard Vanbelle 4297d8139a feat(admin dashboard): clarify quota usage vs backend usage 2026-08-02 14:56:22 +02:00
Edouard Vanbelle dd1528de92 feat(rotate-key): show finger print + way to know if can remove key 2026-08-02 04:26:47 +02:00
Edouard Vanbelle 0a41f561d0 feat(rotate-key): add report + key fingerprint in hexdigit fmt 2026-08-02 02:40:33 +02:00
Edouard Vanbelle e12d8bcb90 feat(job): show if a job is recverable 2026-08-02 02:40:33 +02:00
Edouard Vanbelle a58351b7ad feat(storage key rot): add admin panel 2026-08-02 02:40:33 +02:00
Edouard Vanbelle bbfb106a32 feat(maintenance): add a maintenance notification during backend migration 2026-08-01 18:46:17 +02:00
Edouard Vanbelle 142afecbbf feat(storage): add a guide on storage 2026-08-01 17:50:35 +02:00
Edouard Vanbelle f409658c96 feat(storage): hot swap backend on migrate 2026-08-01 17:11:07 +02:00
Edouard Vanbelle 8329b4aa56 feat(storage): improve admin panel 2026-08-01 17:10:06 +02:00
Edouard Vanbelle d7c19570a5 feat(storage): wire choice of storage 2026-08-01 14:19:14 +02:00
Edouard Vanbelle 82a50936d4 feat(storage-migration): move storage mig. to recoverable job 2026-08-01 11:53:51 +02:00
Edouard Vanbelle 5a87999949 fix(integration test): fix drive test used bytes with grace period 2026-07-30 01:29:09 +02:00
Edouard Vanbelle 48cbec8fae feat(admin ui): too many tabs, change display 2026-07-30 01:14:35 +02:00
Edouard Vanbelle 9fe47a53ea feat(jobs): add admin call to purge jubs result 2026-07-30 00:39:11 +02:00
Edouard Vanbelle 07beb461d6 feat(jobs/ui): hide consistency_batch, the main button is here 2026-07-29 23:22:36 +02:00
Edouard Vanbelle 8de50ec404 feat(jobs/ui): blobs_consistency add b3sum check 2026-07-29 23:15:45 +02:00
Edouard Vanbelle e822714b50 feat(jobs/ui): reorder job names + fix(blobs_consistency) 2026-07-29 23:01:20 +02:00
Edouard Vanbelle 5527d09618 feat(recoverable-job): check if old blob (no cdc) still remains: notice only 2026-07-29 22:47:07 +02:00
Edouard Vanbelle 0f12399a48 feat(recoverable-job): fix files_consistency to check blob chunk consistency 2026-07-29 22:17:15 +02:00
Edouard Vanbelle 5881968f50 feat(recoverable-job): add progress view 2026-07-29 08:41:19 +02:00
Edouard Vanbelle 4336eca4d1 feat(recoverable-job): add admin page 2026-07-29 08:03:43 +02:00
Edouard Vanbelle 74e48caeb3 fix(test): P-page drain builds the index is too sharp on CI, test was ok locally 2026-07-27 01:33:09 +02:00
Edouard Vanbelle e487af6e7e feat(breadcrumb): show the granter (sharer) in the breadcrumb 2026-07-27 01:33:09 +02:00
Edouard Vanbelle 785d922243 feat(shared-with-me): show the sharer 2026-07-27 01:33:09 +02:00
Edouard Vanbelle 3b31b8911b feat(breadcrumb): build breadcrumb in 1 API call
add /api/folders/{id}/ancestors

    this API to iterate parent up to the drive root or the shared folder
    this will help UI to build the breadcrumb in 1 API call
    and to identify the root element (is it a drive users has access to or
    a shared folder ?)

    ui: now only 1 API call is now required to build the breadcrumb
2026-07-27 01:33:09 +02:00
Edouard Vanbelle 7718970e75 i18n(search): apply i18n on all filters 2026-07-26 18:18:15 +02:00
Edouard Vanbelle 01076029aa feat(search): add breadcrumb if a folder is provided 2026-07-26 18:18:15 +02:00
Edouard Vanbelle 87ddf8ffc8 refactor(search): simplify order by + wire reverse 2026-07-26 18:18:15 +02:00
Edouard Vanbelle e5fa234f3a refactor(search): normalize buttons to fit match other sections 2026-07-26 18:18:15 +02:00
Edouard Vanbelle 5a034d390e i18n: apply missing translation on context menu 2026-07-26 18:18:15 +02:00
Edouard Vanbelle c946cf4333 refactor(search): adapt UI to use ResourceList 2026-07-26 18:18:15 +02:00
Edouard Vanbelle 14da27db10 test: widen round14 test, 1.05 factor is too strict and not relevant (a JS GC will fail this test) 2026-07-26 18:17:16 +02:00
Edouard Vanbelle 8637ccfc4c feat(drag&drop): no drop zone on search page 2026-07-26 18:05:42 +02:00
Edouard Vanbelle 761a203d7c feat(drag&drop): dropzone is the while page 2026-07-26 13:27:17 +02:00
Edouard Vanbelle 825a5d1b67 feat(sidebar): permit drop in trash / favorite 2026-07-22 23:10:47 +02:00
Dionisio Pozo ef3e3f45b3 Merge pull request #521 from BCNelson/feat/external-file-mounts
feat(mounts): external file mounts — pluggable provider, read-write, WebDAV/NextCloud, admin UI
2026-07-22 06:52:43 +02:00
Dionisio Pozo 86268049ff Merge pull request #641 from EdouardVanbelle/refactor/front-resource-list
feat(fileDto, folderDto): add is_favorite + is_shared
2026-07-22 06:51:28 +02:00
Bradley Nelson 3ad38ddde7 test(mounts): admin CRUD hurl coverage + frontend mounts-tab tests
Close the two coverage gaps in the external-mounts feature — the admin
REST surface and the admin UI tab both previously had no automated tests.

Backend (hurl):
- tests/api/external_mounts.hurl — black-box coverage of the admin mount
  endpoints (list / create / delete): input validation (empty name,
  non-existent host path → 400), create → 201 with the full view, the
  mount appears in the list, delete → 204 then 404, and the /api/admin
  middleware denies a non-admin on every verb → 403.
- server.env: enable OXICLOUD_ENABLE_EXTERNAL_MOUNTS for the test server;
  run.sh: register the new scenario.

Frontend (vitest):
- admin/page.test.ts — opening the mounts tab loads + lists mounts,
  the create form calls createExternalMount, and delete goes through the
  confirm modal to deleteExternalMount.

Tooling:
- devenv.nix: add b3sum (used by tests/api/run.sh's storage-integrity check).
2026-07-21 18:19:03 -06:00
DioCrafts d66956824c Optimize storage, GC, and upload hot paths 2026-07-22 02:06:29 +02:00
Edouard Vanbelle d9987782c4 feat(fileDto, folderDto): add is_favorite + is_shared
- provide is_shared and is_favorite information in DTO, information propagated as badge/buttons per items
      regarding performances I try to be minimalis on SQL to prevent any perf regression

    - remove old set of sharedids and favoriteids (was not functionnal anymore)
    - fix date picker (no past selection) in grant
    - fix contextmenu close on /files section
2026-07-22 01:55:10 +02:00
Bradley Nelson 9f4bc54113 Merge upstream/main into feat/external-file-mounts
Resolve conflicts between the external-file-mounts feature and upstream's
D5/D7 refactor (per-file provenance, keyset pagination, cross-drive move
gates, resource-access hook, folder-cascade lifecycle hook).

Key resolutions:
- FolderService::new now takes (repo, authz, file_lifecycle, mount_router);
  all callers + DI updated.
- FileRetrievalService / FileManagementService keep both the mount_router
  and the new resource_access_hook / drive_repo / storage_usage wiring.
- list_files_batch_with_perms: adapt the mount branch from offset- to
  keyset (after_name) pagination, mirroring paginate_mount_entries.
- download_file_impl: keep upstream's &HeaderMap + `impl IntoResponse + use<>`
  signature, retain the mount-download branch.
- Mount DTOs: the retired `owner_id` field maps onto created_by/updated_by
  (the mount owner) — the fields the frontend now uses for owner display.
- admin/+page.svelte: keep upstream's user-delete modal + the 'mounts' tab.
- Bump memmap2 0.9.10 -> 0.9.11 (RUSTSEC critical advisory fix) and
  regenerate Cargo.lock against the merged Cargo.toml.
2026-07-21 17:09:36 -06:00
Edouard Vanbelle 383f640920 feat(drag&drop): add support of copy or move 2026-07-20 23:19:44 +02:00
Edouard Vanbelle e1d379b9dd feat(drag&drop): normalize the drag & drop
- dragged items are always doing the same rendering
 - add copy/move option
 - highlight breadcrumb destination
2026-07-20 23:19:44 +02:00
Edouard Vanbelle 0cc77f7a36 feat(ui): show a notification if user try to drop a file in another section than /files 2026-07-20 23:19:44 +02:00