Conversation
Merged
Signed-off-by: Akhil <akhil@e.email>
susnux
force-pushed
the
chore/files-vue3
branch
2 times, most recently
from
September 15, 2026 18:21
a48cb03 to
4419d5d
Compare
susnux
force-pushed
the
chore/files-vue3
branch
from
September 15, 2026 19:44
4419d5d to
d48415b
Compare
fix: logs can leak sensitive information..
susnux
changed the base branch from
master
to
refactor/files-navigation-quota
September 15, 2026 20:19
susnux
added this pull request to stack #64389
September 15, 2026 20:19
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Assisted-by: ClaudeCode:claude-opus-4-8 Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
…re child views Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Assisted-by: ClaudeCode:claude-opus-5 Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
susnux
force-pushed
the
chore/files-vue3
branch
from
September 15, 2026 20:35
d48415b to
fcb2afa
Compare
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
`RouterService` still read `router.currentRoute` directly, but with vue-router 5 that is a ref, so name, params and query were always empty: every navigation dropped the `dir` query and the fileid. It now unwraps the ref and, because vue-router navigates asynchronously, also reports a requested route until it is applied - otherwise the stores that each merge their own change into the route overwrite each other. `spawnDialog()` returns a promise since @nextcloud/vue 9, so the call sites still passing a callback as third argument never resolved and the "New folder" and rename dialogs hung. The type filter looped endlessly because resetting an already empty selection re-entered `setPresets()`, which resets again. `Uploader.upload()` ignores the `root` option, so dropping onto a folder row uploaded into the folder being browsed instead of the drop target. The uploader destination is now moved to the drop target while the queue is built. Finally the router lost the query encoding Nextcloud URLs use: keep spaces as "%20" instead of vue-router's "+". On the test side: `NcCheckboxRadioSwitch` now forwards attributes to its `<input>`, so the selection hooks sit on the checkbox itself; Vue 3 condenses the whitespace between the filename and extension spans; and the breadcrumb helper addressed ancestors as buttons although only the current directory is one. Assisted-by: ClaudeCode:claude-opus-5 Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The files app is built with Vue 3 and vue-router 5, but the public share entry point still created a vue-router 3 instance and exposed it as `window.OCP.Files.Router`. The files app installs exactly that router, so on a public share it ended up with a Vue 2 router in a Vue 3 app: there was no `$route` and rendering the file list threw. The entry point and everything only it uses now live in `src/public/` and are built by the Vue 3 frontend, which makes that directory the boundary between the migrated and the not yet migrated parts of the app. The remaining entry points keep being built - and linted - as Vue 2. `<RouterView>` needs a component to render, so the share route now points at the file list, which the files app rendered directly before the router was introduced. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…cker `NcUploadPicker` names the menu entry "Upload folder" where the Vue 2 `UploadPicker` said "Upload folders", it renders a progress bar of its own - and the files app re-renders the file drop view while uploading, so the list header is what reports the progress. The new uploader also probes the destination collection before uploading, which the request interception held back together with the file it means to delay. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.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.
Summary
Migrate the app to Vue 3.
The stupid work of migration was done with AI, but thats only changed in: 01801b5
TODO
Uncaught (in promise) TypeError: can't access property "focus", firstButton.$el is undefinedChecklist
3. to review, feature component)stable32)AI (if applicable)