Commit Graph

1126 Commits

Author SHA1 Message Date
Edouard Vanbelle 3f70c7e20a refactor(server): remove sort by size in pg_acl_engine.rs (dead code) 2026-05-29 13:14:16 +02:00
Edouard Vanbelle b782a59766 refactor(ui): move deprecated to call /api/folders/id/content to the cursor version /api/folders/id/resources 2026-05-29 13:13:23 +02:00
Edouard Vanbelle 5a43b14e29 test(api): move deprecated call to new one 2026-05-29 13:13:23 +02:00
Edouard Vanbelle ae4fb7603a refactor(front): remove dead code (old Shared section) 2026-05-29 13:13:23 +02:00
Edouard Vanbelle 6e30353c4b chore(deprecated api): log a warning on serverside if a deprecated route is still used 2026-05-29 13:13:23 +02:00
Edouard Vanbelle d88b3a313f fix(recent): prevent recent API having non UUID entries + correct any invalid entry in recent database
note: issue may have been on my side during test implementation, in any case the protection is required
2026-05-29 13:13:23 +02:00
Edouard Vanbelle 63722c868e feat(myshares): new version of myshares sections, supporting grants Users + Tokens 2026-05-29 13:12:59 +02:00
Dionisio Pozo 1deb8b2d80 Update README.md 2026-05-28 22:44:49 +02:00
Dionisio Pozo 7df5d20061 Update README.md 2026-05-28 22:42:47 +02:00
Dionisio Pozo 663500754d Add files via upload 2026-05-28 22:37:31 +02:00
Edouard Vanbelle 8800353900 refactor(share,grants): migrate expiration from legacy share into grants, simplify legacy share, normalize shareModal for better UX 2026-05-28 20:00:06 +02:00
Dionisio Pozo 84d57dd2ae Merge pull request #399 from EdouardVanbelle/feat/implement-cursor-on-main-lists 2026-05-28 17:29:48 +02:00
Dionisio Pozo 553779a8f9 Merge pull request #400 from EdouardVanbelle/feat/server-no-reuse-port-by-default 2026-05-28 17:29:27 +02:00
Edouard Vanbelle 99da124388 fix(ui/thumbnail): fix thumbnail generation in release
-  reference to /vendors/ must be absolute path (the bundle isn't the same path as the current library doing the lazy loading)
2026-05-28 14:22:57 +02:00
Edouard Vanbelle 636f0b87bd fix(builder): add OXC semantic to deconflic JS modules using the same global variables/functions
- this solve issues like: Uncaught SyntaxError: Identifier 'GROUP_BY_DEFS' has already been declared (at app.XXXX.js)
    - add a protection on build: test to reload bundled app, on failure exit immediately (prevent the build or a broken bundle)
    - add final check during CI: node --check on the bundle to brevent going to production too if any failure

example of a bundle:

```
warning: oxicloud@0.6.0: bundle: 50 files in dependency order:
warning: oxicloud@0.6.0: bundle: deconflicting 2 name(s): GROUP_BY_DEFS, LOAD_MORE_ID
warning: oxicloud@0.6.0: bundle:   [29] GROUP_BY_DEFS -> GROUP_BY_DEFS_29  (favoritesView.js)
warning: oxicloud@0.6.0: bundle:   [29] LOAD_MORE_ID -> LOAD_MORE_ID_29  (favoritesView.js)
warning: oxicloud@0.6.0: bundle:   [31] GROUP_BY_DEFS -> GROUP_BY_DEFS_31  (recentView.js)
warning: oxicloud@0.6.0: bundle:   [31] LOAD_MORE_ID -> LOAD_MORE_ID_31  (recentView.js)
warning: oxicloud@0.6.0: bundle:   [34] GROUP_BY_DEFS -> GROUP_BY_DEFS_34  (sharedWithMeView.js)
warning: oxicloud@0.6.0: bundle:   [34] LOAD_MORE_ID -> LOAD_MORE_ID_34  (sharedWithMeView.js)
warning: oxicloud@0.6.0: bundle:   [44] GROUP_BY_DEFS -> GROUP_BY_DEFS_44  (filesView.js)
warning: oxicloud@0.6.0: bundle:   [44] LOAD_MORE_ID -> LOAD_MORE_ID_44  (filesView.js)
```
2026-05-28 14:22:53 +02:00
Edouard Vanbelle 29d8aab9c0 feat(resourceList): keep consistence in groupby options order accross sectons + add userVignette on owner's swimlane 2026-05-28 12:12:22 +02:00
Edouard Vanbelle 80c9ace108 chore(i18n): add missing translations 2026-05-28 12:12:22 +02:00
Edouard Vanbelle 73e78904e7 feat(recent): add cursor + groupby support 2026-05-28 12:12:22 +02:00
Edouard Vanbelle bd474aa67e feat(viewPref): keep record of user view preferences per section (groupBy, order, list or grid) 2026-05-28 12:12:22 +02:00
Edouard Vanbelle 7f4b329718 feat(itemToolltip): fusion pathTooltip + ownerTooltip into itemToolltip, move it in the header for more visibility 2026-05-28 12:12:22 +02:00
Edouard Vanbelle 607ae5e6df feat(resources): add cursor, group by on /api/favorites/resources 2026-05-28 12:12:22 +02:00
Edouard Vanbelle 5790a1459f feat(folders): add curser and the normalized way to get foler's item list. add reverse order 2026-05-28 12:12:22 +02:00
Edouard Vanbelle d273146138 feat(server): add OXICLOUD_REUSE_PORT env parameter (false by default)
initially server was accepting multiple instances on same port (Linux and MacOS only)
    this can create issues during development (if a dev forget another running instance...)

    Add OXICLOUD_REUSE_PORT variable to activate it, so only admins knowing this feature can activate itt
    (permits multiple instance + let the OS schedduler to decide which process will handle a request)

    if not enabled, other instance will receive exit with a:
    `Error: Os { code: 48, kind: AddrInUse, message: "Address already in use" }`
2026-05-28 12:10:01 +02:00
Dionisio Pozo 1523702ca6 Merge pull request #396 from EdouardVanbelle/feat/itemview-and-swimlane 2026-05-28 02:31:56 +02:00
Edouard Vanbelle ec43c4f9c9 fix(playwright): raise any pageerror, purpose is to stops immediatly on a bundle issue 2026-05-28 01:54:48 +02:00
Edouard Vanbelle 42cb3627a8 fix(buid): fix JS bundler on import with alias already declared 2026-05-28 01:29:10 +02:00
Dionisio Pozo aa8e616747 Merge pull request #398 from EdouardVanbelle/feat/openapi-auth 2026-05-28 01:15:28 +02:00
Edouard Vanbelle dfb21b746d feat(openapi): show explicitly path requiring bearerAuth 2026-05-28 00:48:20 +02:00
Edouard Vanbelle de1645b6c3 feat(openapi): add /api/auth to openapi declaration 2026-05-28 00:20:21 +02:00
Edouard Vanbelle 859f9b5f86 refactor: separate roles between ui, fileView, resourceList 2026-05-28 00:15:05 +02:00
Edouard Vanbelle 5afb30ebfd feat(swimlane): add swimlane engine with first version on SharedWithMe section
added group by:

        - None (= ordered by folders/file name)
        - Type (Folder first, then Image, Vidao, Audio, Document, etc...)
        - Owner
        - Size (With logarithmic groups))
        - Shared date (with groups: today, last 7 days, last 30 days, then year)
2026-05-28 00:15:05 +02:00
Edouard Vanbelle 2020e4374e fix action bar 2026-05-28 00:15:05 +02:00
Edouard Vanbelle 720bf11168 use of resourceList 2026-05-28 00:15:05 +02:00
Edouard Vanbelle 6ac4e6177c refactor(js): move multiSelect into batchToolbar + move residual method into relevant components 2026-05-28 00:15:05 +02:00
Edouard Vanbelle 1cd934d594 refactor(resourceList): move grid/list view into a resourceList component, purpose normalize on all sections views 2026-05-28 00:15:04 +02:00
Edouard Vanbelle c65f2b5385 feat(api): cursor listing contract — PageCursor trait + resource field
- Add src/application/dtos/cursor.rs with three shared types:
  · PageCursor trait  — default base64url+JSON encode/decode; one bare
    impl line per cursor struct
  · CursorQuery struct — standard limit/cursor/sort_by query params with
    limit_clamped() and decode_cursor<C>() helpers; compose via flatten
  · CursorListResponse<T> — standard {items, next_cursor?} envelope with
    from_oversized() and with_cursor() builders

- Migrate GrantCursor to impl PageCursor (remove duplicate encode/decode)

- Update GET /api/grants/incoming/resources:
  · SharedWithMeQuery now embeds CursorQuery via #[serde(flatten)]
  · Replace file/folder nullable pair with ResourceContentDto (untagged
    enum) under a single always-present 'resource' field
  · SharedWithMeDto is now a type alias for CursorListResponse<SharedWithMeItemDto>
  · Handler uses q.paging.limit_clamped() and decode_cursor<GrantCursor>()

- Add docs/architecture/resource-listing.md — authoritative contract for
  all listing endpoints (cursor design, SQL keyset WHERE, sort_by naming,
  Rust + JS skeletons, compliance table, migration guide)

- Register doc in VitePress sidebar and architecture index

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 00:15:04 +02:00
Dionisio Pozo 9a2782b67e Merge pull request #394 from EdouardVanbelle/feat/user-image-avatar 2026-05-27 21:33:45 +02:00
Edouard Vanbelle 7a849be3d8 chore(playwright): upgrade to version 1.60.0 2026-05-27 11:50:02 +02:00
EdouardVanbelle 2dc2b0876d test(e2e): update playwright linux snapshots 2026-05-27 09:48:25 +00:00
Edouard Vanbelle 7ddbbc94cc test(e2e): update all images and grow snapshot comparaison sensitivity 2026-05-27 11:35:42 +02:00
Edouard Vanbelle 891ff89a5d test(playwright): add playwright report to track changes + correct playwright parameters
ci: fix actions/checkout@v6 → @v4 (v6 does not exist)

GitHub started rejecting invalid action versions at parse time,
causing every CI run to fail with 0s / 'workflow file issue'
before any jobs could start.

 * test(e2e): only no retry
 * test(e2e): use static name in tests to facilitate screenshot comparaison
 * test(e2e): update linux screenshots
 * test(e2e): adapt test due to user-vignette generation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 11:29:58 +02:00
Edouard Vanbelle 4a5e9a67ca permits img-src from external website, other solution is to store base64 image of user in DB
note: if we need to keep this security, we need to store all user's images (blob_storage can be a good candidate)
2026-05-27 11:29:33 +02:00
Edouard Vanbelle b0c5e7827e feat(user-avatar): users can now edit there image (image is taken from OIDC picture) 2026-05-27 11:29:33 +02:00
Dionisio Pozo 8b6c8e345b Merge pull request #390 from EdouardVanbelle/feat/shared-with-me 2026-05-26 00:00:37 +02:00
Edouard Vanbelle 3e786daea5 fix(grants): correct the removal of a users from a grant 2026-05-25 23:24:04 +02:00
Edouard Vanbelle 8365608bd5 feat(list view): show the owner of the File or Folder in list view 2026-05-25 22:48:59 +02:00
Edouard Vanbelle 79c1a37931 feat(ui): 1 modal to manage shares (users & public share)
fix(share): ensure Authz parent is created/updated on publicShare create/update

fix(ShareModal): do not show Token (public) grants in People section
2026-05-25 22:47:36 +02:00
Edouard Vanbelle a88e4c2733 refactor: move modal into components (prepare a mode autonomous components) 2026-05-25 22:47:36 +02:00
Edouard Vanbelle 12466d4b83 feat(roles): simplify roles to only Viewer, Editor, Admin
┌────────┬──────┬─────────┬────────┬────────┬───────┬────────┐
  │  Role  │ read │ comment │ create │ update │ share │ delete │
  ├────────┼──────┼─────────┼────────┼────────┼───────┼────────┤
  │ viewer │  ✓   │         │        │        │       │        │
  ├────────┼──────┼─────────┼────────┼────────┼───────┼────────┤
  │ editor │  ✓   │    ✓    │   ✓    │   ✓    │       │        │
  ├────────┼──────┼─────────┼────────┼────────┼───────┼────────┤
  │ admin  │  ✓   │    ✓    │   ✓    │   ✓    │   ✓   │   ✓    │
  └────────┴──────┴─────────┴────────┴────────┴───────┴────────┘
2026-05-25 22:47:36 +02:00
Edouard Vanbelle d64beb43a7 feat(ui): add addressBook and systemUsers model + show person who shared an item with me in tooltip 2026-05-25 22:47:36 +02:00