Skip to content

feat(tiles): discover the apps this server runs and place one as a tile (LpTegelToevoegen, part 1) - #883

Merged
rubenvdlinde merged 1 commit into
developmentfrom
feat/fleet-not-built-boards
Oct 23, 2026
Merged

rubenvdlinde merged 1 commit into
developmentfrom
feat/fleet-not-built-boards

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

First section of board LpTegelToevoegen: "Discovered on this server" in the add-widget picker. Openspec change launcher-discover-server-services, tasks 1 to 4.

What changes

  • ServiceDiscoveryService reads the caller's own Nextcloud app menu (INavigationManager::getAll('link')), minus LaunchPad. Group restrictions and enabled state come from Nextcloud; no Docker socket, container labels or AppAPI data are read (REQ-DISC-003).
  • GET /api/tiles/discover (#[NoAdminRequired], no id parameter) behind the new tile.discover action, seeded ["admin", "@all"].
  • The widget picker gets a "Discovered on this server" section, narrowed by the search box, with "On this dashboard" on apps the dashboard already holds. A click places a tile through the normal tile path: an app link when the address is the app's own page, else a url link. Adding again is still allowed.
  • Strings in all 37 locales.

Not in this PR

Verification

  • COMPOSER_PROCESS_TIMEOUT=0 composer check:strict: exit 0 (ALL CHECKS PASSED).
  • npm run lint: exit 0 (5 inherited jsdoc warnings: 3 in src/components/Workspace/config/DetailsTab.vue, 2 in src/services/api.js on a function this PR does not touch).
  • New PHPUnit (ServiceDiscoveryServiceTest, 3 discover cases in TileApiControllerTest) and vitest (WidgetPickerModal.discovered.spec.js, 8 tests) fail on development and pass here; modal and view suites green (122 tests). l10n parity OK.

AI disclosure: built with Claude Code (claude-opus-5-5); reviewed by the lane, to be reviewed by a human before merge.

…places a tile

GET /api/tiles/discover answers the caller's own Nextcloud app menu, minus
LaunchPad, behind the new tile.discover action. The widget picker gets a
Discovered on this server section, searchable, marking the apps already on
the dashboard; a click places a tile through the normal tile path. First
section of board LpTegelToevoegen.

Assisted-by: ClaudeCode:claude-opus-5-5
@rubenvdlinde
rubenvdlinde merged commit 671cfbc into development Oct 23, 2026
37 of 42 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/launchpad @ 8eb8a92

Check PHP Vue Security License Tests
lint ✅
phpcs ✅
phpmd ✅
psalm ✅
phpstan ✅
phpmetrics ✅
eslint ✅
stylelint ✅
build ✅
check-manifest ✅
format ❌
check-schema-l10n ✅
composer ✅ ✅ 107/107
npm ❌ ✅ 636/636
app:check-code ⏭️
info.xml ✅
REUSE ❌
lockfile sync ✅
PHPUnit ❌
Newman ❌
Playwright ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development.
Hydra gates ❌

Quality workflow — 2026-10-23 04:38 UTC

Download the full PDF report from the workflow artifacts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant