feat: per-user board ordering in the navigation#8150
Conversation
Signed-off-by: HUGO LOUREIRO <149155946+Lightshadow02@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: HUGO LOUREIRO <149155946+Lightshadow02@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- AppNavigationBoardCategory.vue: add non-drag-area-selector="input, .app-navigation-entry__actions" to the boards Container, mirroring the labels-Container fix. Verified against the installed @nextcloud/vue source that NcAppNavigationItem renders its actions slot inside an element with the app-navigation-entry__actions class, and that AppNavigationBoard's rename field (NcTextField -> NcInputField) renders a plain <input>, so board rename and the actions menu no longer start a drag. - tests/unit/Service/ConfigServiceTest.php: replace the copy-pasted 2016 Julius Härtl header with the current SPDX header, matching the style already used by other 2026 test files in this app (e.g. tests/unit/Event/WebhookCompatibleEventsTest.php). - docs/API.md: document the boardOrder config key in the Config section's key table. Signed-off-by: HUGO LOUREIRO <149155946+Lightshadow02@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: HUGO LOUREIRO <149155946+Lightshadow02@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Should be updated to @return bool|array{id: string, displayname: string}[]|int[] as well
There was a problem hiding this comment.
Good catch, updated in 9caa17e — the annotation now includes int[].
There was a problem hiding this comment.
Makes sense — done in 9caa17e. Boards are now dragged through a dedicated handle icon (drag-vertical, revealed on row hover, cursor: grab) via drag-handle-selector, so grabbing the row itself no longer starts a drag and the browser's native link drag (the URL ghost from your screenshot) can't be triggered by the reorder gesture anymore.
- extend ConfigService::get() return annotation with int[] - reorder boards through a dedicated drag handle icon instead of the whole row, so dragging no longer triggers the browser native link drag showing the board url Signed-off-by: HUGO LOUREIRO <149155946+Lightshadow02@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@luka-nextcloud thanks for the review! Both points are addressed in 9caa17e:
Whenever you have a moment for another look. |
|
Hello there, We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 Thank you for contributing to Nextcloud and we hope to hear from you soon! (If you believe you should not receive this message, you can add yourself to the blocklist.) |

Summary
The left navigation sorts boards alphabetically (hard-coded), which does not match how people prioritise their boards. This adds per-user manual ordering:
boardOrder(JSON array of board ids) through the existingConfigServiceuser-config plumbing and the existing OCSPOST /config/{key}route — no schema migration, no shared state: each user has their own order and boards themselves are untouchedgetAll()exposesboardOrderto the frontend initial state; value is validated (list of ints) and cleaned on write; documented in docs/API.mdsortBoards()helper — user order first, boards not in the list appended alphabetically (new/newly shared boards), stale ids ignoredHow to test
Checklist
🤖 Generated with Claude Code