Commit Graph
16 Commits
Author SHA1 Message Date
Patrick Niebeling e06e382147 Merge release workflow into the main build workflow
Build package / package (push) Successful in 58s
Lint info.xml / xml-lint (push) Successful in 13s
Lint PHP / php-lint (8.2) (push) Successful in 45s
Lint PHP / php-lint (8.3) (push) Successful in 41s
Lint PHP / php-lint (8.4) (push) Successful in 34s
PHPUnit / unit-tests (push) Successful in 42s
build-release.yml and build-main.yml ran identical steps (checkout, node,
npm install, npm run build, make appstore) and differed only in where the
package landed. Fold the v* tag trigger into build-main.yml and branch on
gitea.ref in the publishing step: main keeps the rolling latest-main
pre-release, tags get a normal release on the tag that was just pushed.

Tag deletion is now guarded - only latest-main is recreated, since deleting
a version tag would destroy the ref that triggered the run. A stale release
is still removed in both cases so moved tags republish cleanly.

Side effects: version builds are published as durable release assets with a
stable URL instead of expiring workflow artifacts, which drops the last
actions/upload-artifact usage and with it the @v3 pin forced by the GHES
restriction; and the setup-php step goes away, since make appstore only
shells out to mkdir/tar/rm.
2026-08-13 13:46:34 +02:00
Patrick Niebeling d2f6640d3d Fix blank personal settings page from mismatched bundle names
Build main artifact / package (push) Successful in 1m11s
Lint info.xml / xml-lint (push) Successful in 14s
Lint PHP / php-lint (8.2) (push) Successful in 48s
Lint PHP / php-lint (8.3) (push) Successful in 39s
Lint PHP / php-lint (8.4) (push) Successful in 34s
PHPUnit / unit-tests (push) Successful in 37s
@nextcloud/vite-config prefixes every entry name with the app id, so the
entry "workflow-deck-automation-personal-settings" was emitted as
js/workflow_deck_automation-workflow-deck-automation-personal-settings.mjs
while Util::addScript() was still asking for the unprefixed name. Nextcloud
found neither the script nor the style, so only the empty mount div rendered
and the settings page stayed blank.

Shorten the entry to "personal-settings" and pass the full on-disk basename
(APP_ID . '-personal-settings') to addScript()/addStyle(). Document the
prefix rule and the intentionally near-empty CSS entry stub in CLAUDE.md.
2026-08-13 13:38:38 +02:00
Patrick Niebeling c5bf6f8f0d Add rolling main-branch build workflow for manual server deploys
Build main artifact / package (push) Successful in 1m2s
Lint info.xml / xml-lint (push) Successful in 15s
Lint PHP / php-lint (8.2) (push) Successful in 46s
Lint PHP / php-lint (8.3) (push) Successful in 45s
Lint PHP / php-lint (8.4) (push) Successful in 37s
PHPUnit / unit-tests (push) Successful in 42s
Publishes the appstore package as a Gitea release asset on every push
to main, so a deployable build can be grabbed without cutting a
version tag first.
2026-08-13 12:52:29 +02:00
Patrick Niebeling 086c8c06f3 Pin actions/upload-artifact back to v3
Lint info.xml / xml-lint (push) Successful in 15s
Lint PHP / php-lint (8.2) (push) Successful in 42s
Lint PHP / php-lint (8.3) (push) Successful in 43s
Lint PHP / php-lint (8.4) (push) Successful in 41s
PHPUnit / unit-tests (push) Successful in 48s
Build release artifact / package (push) Successful in 1m49s
v4+ uses the @actions/artifact v2 backend, which this self-hosted
Gitea instance rejects as unsupported since it identifies as GHES to
the action's GHES-detection check. checkout/setup-node don't have
this issue and stay on v7.
2026-08-13 12:13:52 +02:00
Patrick Niebeling d4c75c4942 Bump pipeline actions to latest major versions
Lint info.xml / xml-lint (push) Successful in 28s
Lint PHP / php-lint (8.2) (push) Successful in 51s
Lint PHP / php-lint (8.3) (push) Successful in 40s
Lint PHP / php-lint (8.4) (push) Successful in 47s
PHPUnit / unit-tests (push) Successful in 49s
Build release artifact / package (push) Failing after 2m19s
actions/checkout v4 -> v7, actions/setup-node v4 -> v7,
actions/upload-artifact v4 -> v7 across all workflows.
shivammathur/setup-php stays on the floating @v2 tag, which already
resolves to the latest 2.x release.
2026-08-13 12:06:26 +02:00
Patrick Niebeling e761c2c369 Replace rsync with tar-pipe copy in appstore packaging
Lint info.xml / xml-lint (push) Successful in 44s
Lint PHP / php-lint (8.2) (push) Successful in 2m1s
Lint PHP / php-lint (8.3) (push) Successful in 39s
Lint PHP / php-lint (8.4) (push) Successful in 38s
PHPUnit / unit-tests (push) Successful in 43s
Build release artifact / package (push) Failing after 1m32s
The self-hosted Gitea runner's image has no rsync installed. tar is
a core utility present on essentially any Linux base image, and its
--exclude on a directory prevents descending into it at all, which
also avoids the build/ output dir (itself inside the source tree)
being copied into itself.
2026-08-13 11:49:08 +02:00
Patrick Niebeling d5ce1b3017 Fix @nextcloud/vue component imports for v9 exports map
Lint info.xml / xml-lint (push) Successful in 22s
Lint PHP / php-lint (8.2) (push) Successful in 52s
Lint PHP / php-lint (8.4) (push) Successful in 1m1s
PHPUnit / unit-tests (push) Successful in 42s
Build release artifact / package (push) Failing after 1m46s
Lint PHP / php-lint (8.3) (push) Successful in 45s
v9 restricts subpath imports via package.json "exports" to
@nextcloud/vue/components/Xxx; the old dist/Components/Xxx.js deep
import path used throughout PersonalSettings.vue is no longer
resolvable under Node's ESM export map and failed the build.
2026-08-13 11:39:47 +02:00
Patrick Niebeling 09d59d936d Add missing typescript devDependency to fix vite-plugin-dts crash
Lint info.xml / xml-lint (push) Successful in 12s
Lint PHP / php-lint (8.2) (push) Successful in 45s
Lint PHP / php-lint (8.3) (push) Successful in 39s
Lint PHP / php-lint (8.4) (push) Successful in 42s
PHPUnit / unit-tests (push) Successful in 39s
Build release artifact / package (push) Failing after 1m34s
vite-plugin-dts peer-depends on typescript: "*" but nothing installed
it, so it crashed at module-load time before tsconfig.json was ever
consulted. The earlier tsconfig.json fix alone was insufficient.
2026-08-13 11:26:48 +02:00
Patrick Niebeling f530b8e487 Track CLAUDE.md, keep only CLAUDE.local.md ignored
Lint info.xml / xml-lint (push) Successful in 14s
Lint PHP / php-lint (8.2) (push) Successful in 46s
Lint PHP / php-lint (8.3) (push) Successful in 1m0s
Lint PHP / php-lint (8.4) (push) Successful in 50s
PHPUnit / unit-tests (push) Successful in 49s
CLAUDE.md is now committed project guidance for future Claude Code
sessions; CLAUDE.local.md stays gitignored for machine-local notes.
2026-08-13 11:08:21 +02:00
Patrick Niebeling e18df52792 Add tsconfig.json to fix vite-plugin-dts crash during config load
Lint info.xml / xml-lint (push) Successful in 14s
Lint PHP / php-lint (8.2) (push) Successful in 47s
Lint PHP / php-lint (8.3) (push) Successful in 49s
Lint PHP / php-lint (8.4) (push) Successful in 40s
PHPUnit / unit-tests (push) Successful in 43s
Build release artifact / package (push) Failing after 1m30s
@nextcloud/vite-config's index.js barrel statically re-exports
createLibConfig from libConfig.js, which imports vite-plugin-dts at
module scope. That import chain runs even though we only use
createAppConfig, and vite-plugin-dts crashes while resolving a
tsconfig that did not exist in this (plain JS/Vue) project.
2026-08-13 11:05:37 +02:00
Patrick Niebeling c081b00205 Declare package as ESM (type: module)
Lint info.xml / xml-lint (push) Successful in 20s
Lint PHP / php-lint (8.2) (push) Successful in 48s
Lint PHP / php-lint (8.3) (push) Successful in 40s
Lint PHP / php-lint (8.4) (push) Successful in 36s
PHPUnit / unit-tests (push) Successful in 41s
Build release artifact / package (push) Failing after 1m28s
vite.config.js was being loaded as CommonJS by default, so Vite's
config bundler tried to require() the ESM-only @nextcloud/vite-config
and failed. All our JS already uses import/export syntax.
2026-08-13 10:50:16 +02:00
Patrick Niebeling 431879cba4 Fix vite version to satisfy @nextcloud/vite-config peer requirement
Lint info.xml / xml-lint (push) Successful in 14s
Lint PHP / php-lint (8.2) (push) Successful in 1m17s
Lint PHP / php-lint (8.3) (push) Successful in 38s
Lint PHP / php-lint (8.4) (push) Successful in 36s
PHPUnit / unit-tests (push) Successful in 41s
Build release artifact / package (push) Failing after 1m30s
@nextcloud/vite-config@2.5.4 (resolved from our ^2.2.0 range) requires
vite@^7.3.6 as a peer; we had vite pinned to ^6.0.0, causing an
ERESOLVE conflict during npm install.
2026-08-13 10:41:24 +02:00
Patrick Niebeling e5f02f3bcc Fix build-release.yml: use npm install, not npm ci
Lint info.xml / xml-lint (push) Successful in 19s
Lint PHP / php-lint (8.2) (push) Successful in 47s
Lint PHP / php-lint (8.3) (push) Successful in 38s
Lint PHP / php-lint (8.4) (push) Successful in 35s
PHPUnit / unit-tests (push) Successful in 37s
Build release artifact / package (push) Failing after 55s
No package-lock.json is committed (intentionally gitignored), so npm ci
has nothing to install from and fails with EUSAGE.
2026-08-13 10:34:55 +02:00
Patrick Niebeling fe0dc909d0 Bump version to 0.1.0 for release, ignore local Claude notes
Lint info.xml / xml-lint (push) Successful in 13s
Lint PHP / php-lint (8.2) (push) Successful in 47s
Lint PHP / php-lint (8.3) (push) Successful in 38s
Lint PHP / php-lint (8.4) (push) Successful in 42s
PHPUnit / unit-tests (push) Successful in 38s
Build release artifact / package (push) Failing after 1m38s
.gitignore now excludes CLAUDE.md/CLAUDE.local.md and common
IDE/OS/env cruft so local assistant notes never get committed.
2026-08-13 10:26:09 +02:00
Patrick NiebelingandClaude Sonnet 5 6da1a442a6 Fix composer platform override blocking CI dependency resolution
Lint info.xml / xml-lint (push) Successful in 14s
Lint PHP / php-lint (8.2) (push) Successful in 44s
Lint PHP / php-lint (8.3) (push) Successful in 35s
Lint PHP / php-lint (8.4) (push) Successful in 38s
PHPUnit / unit-tests (push) Successful in 41s
config.platform.php was pinned to 8.2, but nextcloud/ocp:dev-master
requires PHP 8.3+, so Composer failed to resolve even though the
runner's actual PHP (8.3.33) satisfies it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 10:17:58 +02:00
Patrick NiebelingandClaude Sonnet 5 300acde27e Add Deck workflow automation Nextcloud app
Lint info.xml / xml-lint (push) Successful in 30s
Lint PHP / php-lint (8.2) (push) Successful in 55s
Lint PHP / php-lint (8.3) (push) Successful in 44s
Lint PHP / php-lint (8.4) (push) Successful in 41s
PHPUnit / unit-tests (push) Failing after 41s
Ports the standalone due-date cron script into a proper Nextcloud 34
app with a personal-settings UI, per-user workflow configuration
(source/target stack, assigned-user and label filters, email
notification), a TimedJob background runner, and Gitea CI pipelines.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 10:13:05 +02:00