[stable35] feat(files_sharing): unified sharing sidebar and dialog - #64114
Merged
Merged
Conversation
Replace the share editor in the files sidebar with the unified sharing UI: one flat list of shares ordered by permission, where a share with several recipients renders as an expandable group showing each recipient's own permission, and destructive actions live in the overflow menu. Creating and editing a share opens the Vue 3 dialog from `@nextcloud/sharing`. The sidebar is still Vue 2, so the dialog is reached through an `OCA.Sharing` bridge that the Vue 3 entry point registers; once files_sharing is Vue 3 the bridge can go and the library be imported directly. The new components are written as `<script setup lang="ts">`, which Vue 2.7 supports and other components of this app already use, so they will not need rewriting for Vue 3. The whole thing stays behind `sharing.unified_api_enable`, which is off by default and is now documented in the config sample. Enabling it is left to a follow-up. Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com> Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Every write endpoint allowed one call per one to five seconds, which the sharing dialog exceeds on its own: it creates a draft when it opens, adds a recipient per pick, and fans a preset change out over one request per permission. Size the limits per minute from those flows instead, keep the tighter one on regenerating a token, and add the missing limit on the per-recipient permission endpoint. Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com> Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
files_sharing is symlinked into the Vue 3 frontend for its bridge entry point, which also handed its Vue 2 sources to that project's lint and test configs. The Vue 3 lint config rejects the hyphenated event listeners Vue 2 requires, so following it broke the share editor, and its Vitest project picked the Vue 2 specs up a second time. Exclude the app from both; the legacy frontend already covers it with the rules that match the code. Sharing specs also move to their own serial Playwright project: which sidebar the sharing tab renders is instance-wide state, so the unified specs and the share editor specs cannot run beside each other. Finally, ignore the worker teardown error Vitest raises when a worker still has console output in flight as it shuts down. It fails a run in which every test passed, and which files trip it only depends on how they are spread over the workers. Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com> Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Unit tests for the share list, its refresh and its delete guards, and a case pinning the API to off by default. End to end, 34 tests over opening the sidebar, listing and grouping, the row actions, and creating and editing shares, including the destructive paths where a confirmation is declined. On top of those, whole journeys: sharing with a group and then granting one person more than the group, a link beside an invited share, abandoning the dialog, and narrowing a single recipient. The specs turn the API on for their worker, while the share editor specs keep it off. Recipients cannot list the shares addressed to them through the API yet, so the tests assert what the share owner sees. The rate limiter is left on so the specs also stand as the check that its limits are livable. Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com> Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
skjnldsv
approved these changes
Sep 8, 2026
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The backport carried the bump in package.json but not the lock, which still resolved 0.4.0 and made `npm ci` refuse the tree. The nested 0.4.0 copies stay for @nextcloud/dialogs and @nextcloud/vue, which ask for that major. Signed-off-by: Barthelemy Briand <barthelemy.briand@nextcloud.com> Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
provokateurin
approved these changes
Sep 8, 2026
skjnldsv
force-pushed
the
backport/62593/stable35
branch
from
September 8, 2026 07:25
b7e653c to
525324d
Compare
skjnldsv
marked this pull request as ready for review
September 8, 2026 07:36
skjnldsv
requested review from
CarlSchwan,
kristian-zendato,
leftybournes,
salmart-dev and
sorbaugh
and removed request for
a team
September 8, 2026 07:36
Member
|
/compile |
susnux
approved these changes
Sep 8, 2026
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #62593
Warning, This backport's changes differ from the original and might be incomplete⚠️
Todo
Learn more about backports at https://docs.nextcloud.com/server/stable/go.php?to=developer-backports.