Conversation
The unified search, the legacy unified search and the menus of the public pages are built by the Vue 3 toolchain as well, so core is no longer part of the legacy build: its entries, lint and test scope are removed there, and the list that split core between the two toolchains is gone. The symlink stays, as legacy apps still import from core. All core specs run with the Vue 3 test setup. Every place that loads one of these scripts now also loads the stylesheet of the same name. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de> Assisted-by: ClaudeCode:claude-opus-5-5
The external share entry renders its menu entry and dialog as two roots now instead of through vue-frag, and hands the attributes of the menu on to the entry. The dialog reports when it closes, so the entry can open it again and a spawned dialog is cleaned up. The menus take the place of their placeholders like the header menus, as their root carries the id of the placeholder. A primary action with a link is a link for assistive technologies now, so the page object accepts both. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de> Assisted-by: ClaudeCode:claude-opus-5-5
The external filter store is a typed setup store. Its pinia instance is active from the start, so `OCA.UnifiedSearch.registerFilterAction` keeps working for apps that register a filter before the search is mounted. The search view and the small result components use `<script setup>`, and the events that Vue 2 forced into kebab-case are camelCase again. The people filter and the custom date range follow the popover and modal of nextcloud-vue 9 through v-model, as their show and hide events are gone. The specs use the Vue 3 test utils: stubs expose what the view calls on its children, and the selected row is compared against the raw focus trap. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de> Assisted-by: ClaudeCode:claude-opus-5-5
The legacy unified search uses `<script setup>`: the results, cursors and limits per provider are plain reactive records, so `$set` and `$delete` are gone, and the results forward their native events to the list instead of re-emitting them. The keyboard listener is removed again when the search unmounts, and requests are cancelled through an AbortController. The search field is focused when the menu opens, a frame after nextcloud-vue 9 reports it as opened: its content is not visible, and thus not focusable, before. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de> Assisted-by: ClaudeCode:claude-opus-5-5
susnux
added this pull request to stack #64996
October 1, 2026 16:21
susnux
requested review from
Altahrim,
icewind1991,
kristian-zendato,
salmart-dev,
skjnldsv and
sorbaugh
and removed request for
a team
October 1, 2026 16:21
29 of 32 tasks
CarlSchwan
approved these changes
Oct 2, 2026
This branch has not been deployed
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
Last part of the stack, do not merge alone.
This migrates the unified search to Vue 3, moves all remaining entry points and cleans up legacy build.
Checklist
3. to review, feature component)stable32)AI (if applicable)