Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e8924c9
feat(containers): sort the tiles in a container by hand, alphabetical…
rubenvdlinde Sep 30, 2026
25050f7
docs(openspec): archive launcher-tile-sorting, tile-most-used and d-t…
rubenvdlinde Sep 30, 2026
e0d60b8
chore(containers): tag the local tile use helpers with their spec
rubenvdlinde Sep 30, 2026
6b68477
feat(search): administrators define search shortcuts, a prefix that s…
rubenvdlinde Sep 30, 2026
af2c9ec
feat(search): a known prefix sends the query straight to its site, an…
rubenvdlinde Sep 30, 2026
51d4103
docs(openspec): archive search-ai-prefix-shortcuts, d-search-prefix i…
rubenvdlinde Sep 30, 2026
0f49b0f
Merge remote-tracking branch 'origin/feat/widgets-people-expertise-an…
rubenvdlinde Sep 30, 2026
95ec33d
Merge branch 'feat/launcher-tile-sorting' into feat/search-ai-prefix-…
rubenvdlinde Sep 30, 2026
bc924c6
Merge branch 'feat/widgets-people-expertise-and-fields' into feat/lau…
rubenvdlinde Sep 30, 2026
3ffdb75
feat(tiles): import a browser bookmarks file, each chosen folder beco…
rubenvdlinde Sep 30, 2026
061ca8a
docs(openspec): archive launcher-bookmark-import, d-import-bookmarks …
rubenvdlinde Sep 30, 2026
5f8e334
feat(tiles): administrators list the office networks, and a tile may …
rubenvdlinde Sep 30, 2026
ce989e4
feat(tiles): a tile opens its office network address at the office, a…
rubenvdlinde Sep 30, 2026
59cecee
Merge branch 'feat/widgets-people-expertise-and-fields' into feat/lau…
rubenvdlinde Sep 30, 2026
bd3ef26
Merge remote-tracking branch 'origin/feat/launcher-tile-sorting' into…
rubenvdlinde Sep 30, 2026
67b9cf1
Merge remote-tracking branch 'origin/feat/search-ai-prefix-shortcuts'…
rubenvdlinde Sep 30, 2026
4b03e0a
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Sep 30, 2026
aab0f57
docs(openspec): archive launcher-tile-internal-address, d-internal-ur…
rubenvdlinde Sep 30, 2026
4f3c820
fix(containers): count tile clicks with one delegated listener, so th…
rubenvdlinde Sep 30, 2026
08cd265
Merge remote-tracking branch 'origin/feat/launcher-tile-sorting' into…
rubenvdlinde Sep 30, 2026
2bc7583
Merge branch 'feat/widgets-people-expertise-and-fields' into feat/lau…
rubenvdlinde Oct 5, 2026
7df9014
Merge branch 'feat/launcher-tile-sorting' into feat/search-ai-prefix-…
rubenvdlinde Oct 5, 2026
cf34bdc
Merge branch 'feat/search-ai-prefix-shortcuts' into feat/launcher-boo…
rubenvdlinde Oct 5, 2026
7579477
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Oct 5, 2026
4e44727
fix(bookmarks): answer a full dashboard inline and record why the imp…
rubenvdlinde Oct 5, 2026
622791c
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Oct 5, 2026
4a17769
refactor(tiles): bring index(), applyTileUpdates() and the office add…
rubenvdlinde Oct 5, 2026
ac0852a
docs(tiles): tag the container widget's lifecycle hooks with their sp…
rubenvdlinde Oct 5, 2026
0ed77d6
Merge branch 'feat/launcher-tile-sorting' into feat/search-ai-prefix-…
rubenvdlinde Oct 5, 2026
984a7fa
docs(search): tag the shortcuts watcher with its spec (gate 16)
rubenvdlinde Oct 5, 2026
5d892d2
Merge branch 'feat/search-ai-prefix-shortcuts' into feat/launcher-boo…
rubenvdlinde Oct 5, 2026
5dd81b1
docs(bookmarks): tag the file error's constructor with its spec (gate…
rubenvdlinde Oct 5, 2026
b2005d8
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Oct 5, 2026
98000a9
Merge branch 'feat/widgets-people-expertise-and-fields' into feat/lau…
rubenvdlinde Oct 5, 2026
287bf74
Merge branch 'feat/launcher-tile-sorting' into feat/search-ai-prefix-…
rubenvdlinde Oct 5, 2026
3d3a3b6
test(search): cover the shortcuts endpoint through the real service: …
rubenvdlinde Oct 5, 2026
f5da56a
Merge branch 'feat/search-ai-prefix-shortcuts' into feat/launcher-boo…
rubenvdlinde Oct 5, 2026
b5f25eb
test(bookmarks): cover every outcome of the import endpoint through t…
rubenvdlinde Oct 5, 2026
236775d
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Oct 5, 2026
de8ec59
test(tiles): cover the office networks endpoint through the real service
rubenvdlinde Oct 5, 2026
f46ccf4
Merge remote-tracking branch 'origin/development' into feat/launcher-…
rubenvdlinde Oct 23, 2026
ae2e4ce
Merge branch 'feat/launcher-tile-sorting' into feat/search-ai-prefix-…
rubenvdlinde Oct 23, 2026
9120146
test(admin): the search shortcuts tab is the thirteenth admin tab
rubenvdlinde Oct 23, 2026
5bd3779
Merge branch 'feat/search-ai-prefix-shortcuts' into feat/launcher-boo…
rubenvdlinde Oct 23, 2026
c954ea2
Merge branch 'feat/launcher-bookmark-import' into feat/launcher-tile-…
rubenvdlinde Oct 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,8 @@
'requirements' => ['placementId' => '\d+']],
['name' => 'widgetApi#addWidget', 'url' => '/api/dashboard/{dashboardId}/widgets', 'verb' => 'POST'],
['name' => 'widgetApi#addTile', 'url' => '/api/dashboard/{dashboardId}/tile', 'verb' => 'POST'],
// Bookmark import (launcher-bookmark-import REQ-BMI-001..003).
['name' => 'bookmarkImport#import', 'url' => '/api/dashboard/{dashboardId}/tiles/import', 'verb' => 'POST'],
// REQ-CAL-003: calendar widget events endpoint. Registered BEFORE
// the wildcard `/api/widgets/{placementId}` PUT/DELETE so the
// literal `calendar` segment is matched first.
Expand Down Expand Up @@ -468,6 +470,14 @@
// returns `{users, total, hasMore}` with offset-based pagination.
['name' => 'peopleWidget#getUsers', 'url' => '/api/people', 'verb' => 'GET'],

// Search shortcuts (search-ai-prefix-shortcuts REQ-QSP-001): admin list.
['name' => 'searchShortcuts#index', 'url' => '/api/admin/search-shortcuts', 'verb' => 'GET'],
['name' => 'searchShortcuts#save', 'url' => '/api/admin/search-shortcuts', 'verb' => 'PUT'],

// Office networks (launcher-tile-internal-address REQ-TIA-001): admin list.
['name' => 'officeNetworks#index', 'url' => '/api/admin/office-networks', 'verb' => 'GET'],
['name' => 'officeNetworks#save', 'url' => '/api/admin/office-networks', 'verb' => 'PUT'],

// Custom profile fields (REQ-PEX-001, REQ-PEX-002): own values for
// every signed-in person, definitions for administrators.
['name' => 'profileFields#getOwn', 'url' => '/api/profile-fields/me', 'verb' => 'GET'],
Expand Down
51 changes: 51 additions & 0 deletions l10n/be.js
Original file line number Diff line number Diff line change
Expand Up @@ -1324,6 +1324,57 @@ OC.L10N.register(
"Save profile fields" : "Захаваць палі профілю",
"The profile fields could not be loaded." : "Не ўдалося загрузіць палі профілю.",
"The profile fields could not be saved." : "Не ўдалося захаваць палі профілю.",
"Forget my usage" : "Забыць маё выкарыстанне",
"Sorted alphabetically" : "Упарадкавана па алфавіце",
"Sorted by most used" : "Упарадкавана па частаце выкарыстання",
"Sorted by last used" : "Упарадкавана па апошнім выкарыстанні",
"Sorted at random" : "Упарадкавана выпадкова",
"Sort tiles" : "Парадак плітак",
"By hand" : "Уручную",
"Alphabetically" : "Па алфавіце",
"Most used" : "Найчасцей выкарыстоўваныя",
"Last used" : "Апошнія выкарыстаныя",
"At random" : "Выпадкова",
"Search shortcuts" : "Ярлыкі пошуку",
"A search that starts with a prefix, such as !t printer, goes straight to that site in a new tab. Typing ? in a search box lists the shortcuts." : "Пошук, які пачынаецца з прэфікса, напрыклад !t printer, адразу адкрывае гэты сайт у новай укладцы. Увод ? у полі пошуку паказвае спіс ярлыкоў.",
"Prefix" : "Прэфікс",
"Address with {query}" : "Адрас з {query}",
"No search shortcuts yet." : "Ярлыкоў пошуку пакуль няма.",
"Search shortcuts saved." : "Ярлыкі пошуку захаваны.",
"Add shortcut" : "Дадаць ярлык",
"Save search shortcuts" : "Захаваць ярлыкі пошуку",
"The search shortcuts could not be loaded." : "Не ўдалося загрузіць ярлыкі пошуку.",
"The search shortcuts could not be saved." : "Не ўдалося захаваць ярлыкі пошуку.",
"Search {name} for {query}" : "Шукаць у {name}: {query}",
"Type what to search for in {name}" : "Увядзіце, што шукаць у {name}",
"Import bookmarks" : "Імпартаваць закладкі",
"Import bookmarks…" : "Імпартаваць закладкі…",
"Choose the bookmarks file your browser exports. Each folder you pick becomes a group of tiles at the bottom of this dashboard." : "Выберыце файл закладак, які экспартуе ваш браўзер. Кожная выбраная папка стане групай плітак унізе гэтай панэлі.",
"Bookmarks file" : "Файл закладак",
"What to import" : "Што імпартаваць",
"{name} ({count})" : "{name} ({count})",
"This file holds no bookmarks." : "У гэтым файле няма закладак.",
"Tiles added: {count}" : "Дададзена плітак: {count}",
"Import" : "Імпартаваць",
"This file is larger than 5 MB. Export one folder at a time." : "Гэты файл большы за 5 МБ. Экспартуйце па адной папцы.",
"This file has more than 2,000 bookmarks. Export one folder at a time." : "У гэтым файле больш за 2000 закладак. Экспартуйце па адной папцы.",
"This file could not be read as a bookmarks file." : "Гэты файл не ўдалося прачытаць як файл закладак.",
"Room left on this dashboard: {count}. Pick fewer folders." : "Засталося месца на панэлі: {count}. Выберыце менш папак.",
"The import failed; nothing was added." : "Імпарт не ўдаўся; нічога не дададзена.",
"_{count} bookmark skipped: only web addresses can become tiles_::_{count} bookmarks skipped: only web addresses can become tiles_" : ["Прапушчана {count} закладка: толькі вэб-адрасы могуць стаць пліткамі", "Прапушчана {count} закладкі: толькі вэб-адрасы могуць стаць пліткамі", "Прапушчана {count} закладак: толькі вэб-адрасы могуць стаць пліткамі"],
"Office networks" : "Офісныя сеткі",
"Requests from these networks open a tile's address on the office network, when the tile has one. Enter one IPv4 or IPv6 range per line, such as 10.20.0.0/16." : "Запыты з гэтых сетак адкрываюць офісны адрас пліткі, калі ён ёсць. Увядзіце па адным дыяпазоне IPv4 або IPv6 у радку, напрыклад 10.20.0.0/16.",
"Network ranges" : "Дыяпазоны сетак",
"Office networks saved." : "Офісныя сеткі захаваны.",
"Save office networks" : "Захаваць офісныя сеткі",
"Your current address {address} is on the office network." : "Ваш бягучы адрас {address} у офіснай сетцы.",
"Your current address {address} is not on the office network." : "Ваш бягучы адрас {address} не ў офіснай сетцы.",
"The office networks could not be loaded." : "Не ўдалося загрузіць офісныя сеткі.",
"The office networks could not be saved." : "Не ўдалося захаваць офісныя сеткі.",
"Address on the office network" : "Адрас у офіснай сетцы",
"Optional, for example http://zaken.intern" : "Неабавязкова, напрыклад http://zaken.intern",
"You are on the office network: this tile opens the internal address" : "Вы ў офіснай сетцы: гэтая плітка адкрывае ўнутраны адрас",
"You are not on the office network: this tile opens the main address" : "Вы не ў офіснай сетцы: гэтая плітка адкрывае асноўны адрас",
"Update template" : "Update template",
"Working out what changes." : "Working out what changes.",
"This brings \"{name}\" from version {from} to version {to}. Its name, its groups and whether it is the default stay as they are." : "This brings \"{name}\" from version {from} to version {to}. Its name, its groups and whether it is the default stay as they are.",
Expand Down
55 changes: 55 additions & 0 deletions l10n/be.json
Original file line number Diff line number Diff line change
Expand Up @@ -1301,6 +1301,61 @@
"Save profile fields": "Захаваць палі профілю",
"The profile fields could not be loaded.": "Не ўдалося загрузіць палі профілю.",
"The profile fields could not be saved.": "Не ўдалося захаваць палі профілю.",
"Forget my usage": "Забыць маё выкарыстанне",
"Sorted alphabetically": "Упарадкавана па алфавіце",
"Sorted by most used": "Упарадкавана па частаце выкарыстання",
"Sorted by last used": "Упарадкавана па апошнім выкарыстанні",
"Sorted at random": "Упарадкавана выпадкова",
"Sort tiles": "Парадак плітак",
"By hand": "Уручную",
"Alphabetically": "Па алфавіце",
"Most used": "Найчасцей выкарыстоўваныя",
"Last used": "Апошнія выкарыстаныя",
"At random": "Выпадкова",
"Search shortcuts": "Ярлыкі пошуку",
"A search that starts with a prefix, such as !t printer, goes straight to that site in a new tab. Typing ? in a search box lists the shortcuts.": "Пошук, які пачынаецца з прэфікса, напрыклад !t printer, адразу адкрывае гэты сайт у новай укладцы. Увод ? у полі пошуку паказвае спіс ярлыкоў.",
"Prefix": "Прэфікс",
"Address with {query}": "Адрас з {query}",
"No search shortcuts yet.": "Ярлыкоў пошуку пакуль няма.",
"Search shortcuts saved.": "Ярлыкі пошуку захаваны.",
"Add shortcut": "Дадаць ярлык",
"Save search shortcuts": "Захаваць ярлыкі пошуку",
"The search shortcuts could not be loaded.": "Не ўдалося загрузіць ярлыкі пошуку.",
"The search shortcuts could not be saved.": "Не ўдалося захаваць ярлыкі пошуку.",
"Search {name} for {query}": "Шукаць у {name}: {query}",
"Type what to search for in {name}": "Увядзіце, што шукаць у {name}",
"Import bookmarks": "Імпартаваць закладкі",
"Import bookmarks…": "Імпартаваць закладкі…",
"Choose the bookmarks file your browser exports. Each folder you pick becomes a group of tiles at the bottom of this dashboard.": "Выберыце файл закладак, які экспартуе ваш браўзер. Кожная выбраная папка стане групай плітак унізе гэтай панэлі.",
"Bookmarks file": "Файл закладак",
"What to import": "Што імпартаваць",
"{name} ({count})": "{name} ({count})",
"This file holds no bookmarks.": "У гэтым файле няма закладак.",
"Tiles added: {count}": "Дададзена плітак: {count}",
"Import": "Імпартаваць",
"This file is larger than 5 MB. Export one folder at a time.": "Гэты файл большы за 5 МБ. Экспартуйце па адной папцы.",
"This file has more than 2,000 bookmarks. Export one folder at a time.": "У гэтым файле больш за 2000 закладак. Экспартуйце па адной папцы.",
"This file could not be read as a bookmarks file.": "Гэты файл не ўдалося прачытаць як файл закладак.",
"Room left on this dashboard: {count}. Pick fewer folders.": "Засталося месца на панэлі: {count}. Выберыце менш папак.",
"The import failed; nothing was added.": "Імпарт не ўдаўся; нічога не дададзена.",
"_{count} bookmark skipped: only web addresses can become tiles_::_{count} bookmarks skipped: only web addresses can become tiles_": [
"Прапушчана {count} закладка: толькі вэб-адрасы могуць стаць пліткамі",
"Прапушчана {count} закладкі: толькі вэб-адрасы могуць стаць пліткамі",
"Прапушчана {count} закладак: толькі вэб-адрасы могуць стаць пліткамі"
],
"Office networks": "Офісныя сеткі",
"Requests from these networks open a tile's address on the office network, when the tile has one. Enter one IPv4 or IPv6 range per line, such as 10.20.0.0/16.": "Запыты з гэтых сетак адкрываюць офісны адрас пліткі, калі ён ёсць. Увядзіце па адным дыяпазоне IPv4 або IPv6 у радку, напрыклад 10.20.0.0/16.",
"Network ranges": "Дыяпазоны сетак",
"Office networks saved.": "Офісныя сеткі захаваны.",
"Save office networks": "Захаваць офісныя сеткі",
"Your current address {address} is on the office network.": "Ваш бягучы адрас {address} у офіснай сетцы.",
"Your current address {address} is not on the office network.": "Ваш бягучы адрас {address} не ў офіснай сетцы.",
"The office networks could not be loaded.": "Не ўдалося загрузіць офісныя сеткі.",
"The office networks could not be saved.": "Не ўдалося захаваць офісныя сеткі.",
"Address on the office network": "Адрас у офіснай сетцы",
"Optional, for example http://zaken.intern": "Неабавязкова, напрыклад http://zaken.intern",
"You are on the office network: this tile opens the internal address": "Вы ў офіснай сетцы: гэтая плітка адкрывае ўнутраны адрас",
"You are not on the office network: this tile opens the main address": "Вы не ў офіснай сетцы: гэтая плітка адкрывае асноўны адрас",
"Update template": "Update template",
"Working out what changes.": "Working out what changes.",
"This brings \"{name}\" from version {from} to version {to}. Its name, its groups and whether it is the default stay as they are.": "This brings \"{name}\" from version {from} to version {to}. Its name, its groups and whether it is the default stay as they are.",
Expand Down
Loading
Loading