Skip to content

Commit 7a2fb77

Browse files
committed
feat(viewer): vendor the Viewer app in-tree
Import the rewritten Vue 3 Viewer app (nextcloud/viewer feat/6.0.0) into apps/viewer as a bundled app and wire it into the shared frontend build: - add the viewer entry + build/frontend/apps/viewer symlink to the shared vite config, and un-ignore apps/viewer - add the viewer-only runtime deps (@nextcloud/image-editor, @skjnldsv/vue-plyr, dompurify, vue-material-design-icons, camelcase) to the root package.json - vendor the plyr sprite as apps/viewer/img/plyr.svg and import it raw, instead of the standalone build.s PLYR_ICONS global / a blocked plyr deep import - port the Vitest unit and component specs; run the viewer test setup (mock reset, handler registry reset, ResizeObserver stub) from the shared vitest config, and add the shared @nextcloud/event-bus manual mock - cover the viewer l10n / img / composer files in REUSE.toml WIP: Playwright e2e still to port. Signed-off-by: skjnldsv <skjnldsv@protonmail.com> Assisted-by: ClaudeCode:claude-opus-4-8
1 parent 3c4a5cf commit 7a2fb77

296 files changed

Lines changed: 27979 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ node_modules/
4747
!/apps/theming
4848
!/apps/twofactor_backupcodes
4949
!/apps/user_status
50+
!/apps/viewer
5051
!/apps/weather_status
5152
!/apps/webhook_listeners
5253
!/apps/workflowengine

.tx/config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,3 +205,9 @@ file_filter = translationfiles/<lang>/workflowengine.po
205205
source_file = translationfiles/templates/workflowengine.pot
206206
source_lang = en
207207
type = PO
208+
209+
[o:nextcloud:p:nextcloud:r:viewer]
210+
file_filter = translationfiles/<lang>/viewer.po
211+
source_file = translationfiles/templates/viewer.pot
212+
source_lang = en
213+
type = PO

REUSE.toml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,3 +344,39 @@ path = ["openapi.json", ".envrc", "flake.nix", "flake.lock", "build/eslint-basel
344344
precedence = "aggregate"
345345
SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors"
346346
SPDX-License-Identifier = "AGPL-3.0-or-later"
347+
348+
[[annotations]]
349+
path = ["apps/viewer/l10n/**.js", "apps/viewer/l10n/**.json"]
350+
precedence = "aggregate"
351+
SPDX-FileCopyrightText = "2019 Nextcloud translators <https://www.transifex.com/nextcloud/>"
352+
SPDX-License-Identifier = "AGPL-3.0-or-later"
353+
354+
[[annotations]]
355+
path = ["apps/viewer/img/blank.mp4"]
356+
precedence = "aggregate"
357+
SPDX-FileCopyrightText = "2023 Nextcloud GmbH and Nextcloud contributors"
358+
SPDX-License-Identifier = "AGPL-3.0-or-later"
359+
360+
[[annotations]]
361+
path = ["apps/viewer/img/app.svg"]
362+
precedence = "aggregate"
363+
SPDX-FileCopyrightText = "2018-2024 Google LLC"
364+
SPDX-License-Identifier = "Apache-2.0"
365+
366+
[[annotations]]
367+
path = ["apps/viewer/img/plyr.svg"]
368+
precedence = "aggregate"
369+
SPDX-FileCopyrightText = "Sam Potts <sam@potts.es>"
370+
SPDX-License-Identifier = "MIT"
371+
372+
[[annotations]]
373+
path = ["apps/viewer/composer.json", "apps/viewer/composer.lock"]
374+
precedence = "aggregate"
375+
SPDX-FileCopyrightText = "2016-2024 Nextcloud GmbH and Nextcloud contributors"
376+
SPDX-License-Identifier = "CC0-1.0"
377+
378+
[[annotations]]
379+
path = ["apps/viewer/src/assets/menu-sidebar-white.svg", "apps/viewer/tests/psalm-baseline.xml"]
380+
precedence = "aggregate"
381+
SPDX-FileCopyrightText = "2019 Nextcloud GmbH and Nextcloud contributors"
382+
SPDX-License-Identifier = "AGPL-3.0-or-later"

apps/viewer/.nextcloudignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
2+
# SPDX-License-Identifier: AGPL-3.0-or-later
3+
4+
/playwright

apps/viewer/.npmignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
2+
# SPDX-License-Identifier: AGPL-3.0-or-later
3+
node_modules

apps/viewer/.stylelintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
2+
# SPDX-License-Identifier: AGPL-3.0-or-later
3+
src/assets

apps/viewer/AUTHORS.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<!--
2+
- SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
3+
- SPDX-License-Identifier: AGPL-3.0-or-later
4+
-->
5+
# Authors
6+
7+
- Adrian Thiele <adrian.thiele@live.de>
8+
- Andy Scherzinger <info@andy-scherzinger.de>
9+
- Anna Larch <anna@nextcloud.com>
10+
- Arne Hamann <git@arne.email>
11+
- Arthur Schiwon <blizzz@arthur-schiwon.de>
12+
- Axel Pirek <axel.pirek@protonmail.com>
13+
- Azul <azul@riseup.net>
14+
- Birk <birkb@users.noreply.github.com>
15+
- Carl Schwan <carl@carlschwan.eu>
16+
- Christoph Wurst <christoph@winzerhof-wurst.at>
17+
- Christopher Ng <chrng8@gmail.com>
18+
- Corentin Mors <corentin.mors@dashlane.com>
19+
- Daniel Calviño Sánchez <danxuliu@gmail.com>
20+
- Daniel Kesselberg <mail@danielkesselberg.de>
21+
- Dariusz Olszewski <starypatyk@users.noreply.github.com>
22+
- Eduardo Morales <emoral435@gmail.com>
23+
- fenn-cs <fenn25.fn@gmail.com>
24+
- Ferdinand Thiessen <opensource@fthiessen.de>
25+
- Florent Fayolle <florent.fayolle69@gmail.com>
26+
- Gary Kim <gary@garykim.dev>
27+
- Grigorii K. Shartsev <me@shgk.me>
28+
- Hamza Mahjoubi <hamzamahjoubi221@gmail.com>
29+
- Jakob Röhrl <jakob.roehrl@web.de>
30+
- Jakub Fiser <jakub@ufiseru.cz>
31+
- Jan-Christoph Borchardt <hey@jancborchardt.net>
32+
- jld3103 <jld3103yt@gmail.com>
33+
- Joas Schilling <coding@schilljs.com>
34+
- John Molakvoæ <skjnldsv@protonmail.com>
35+
- Jonas Meurer <jonas@freesources.org>
36+
- Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>
37+
- Julien Veyssier <eneiluj@posteo.net>
38+
- Julius Härtl <jus@bitgrid.net>
39+
- k9yyy <yyy3752@gmail.com>
40+
- Louis Chemineau <louis@chmn.me>
41+
- Luka Trovic <luka@nextcloud.com>
42+
- Marcel Müller <marcel-mueller@gmx.de>
43+
- Marco <marcoambrosini@pm.me>
44+
- Marius Blüm <marius@lineone.io>
45+
- Max <max@nextcloud.com>
46+
- Morris Jobke <hey@morrisjobke.de>
47+
- Pytal <24800714+Pytal@users.noreply.github.com>
48+
- rakekniven <2069590+rakekniven@users.noreply.github.com>
49+
- Raul <r.ferreira.fuentes@gmail.com>
50+
- Richard Steinmetz <richard@steinmetz.cloud>
51+
- Robbert Gurdeep Singh <git@beardhatcode.be>
52+
- Roeland Jago Douma <roeland@famdouma.nl>
53+
- root <szaimen@e.mail.de>
54+
- Sanskar Soni <sanskarsoni300@gmail.com>
55+
- Sebastian Steinmetz <462714+steiny2k@users.noreply.github.com>
56+
- Simon L. <szaimen@e.mail.de>
57+
- szaimen <szaimen@e.mail.de>
58+
- Talv <krz.krawczuk@gmail.com>
59+
- Tobias Speicher <rootcommander@gmail.com>
60+
- umgfoin <umgfoin@users.noreply.github.com>
61+
- Valdnet <47037905+Valdnet@users.noreply.github.com>
62+
- Vanessa Pertsch <vanessa.pertsch@posteo.de>
63+
- Varun Patil <varunpatil@ucla.edu>
64+
- Vincent Petry <vincent@nextcloud.com>
65+
- XinRoom <32238570+XinRoom@users.noreply.github.com>

0 commit comments

Comments
 (0)