2.8 KiB
2.8 KiB
Decky agent notes
Project
- The active app is
app/: Tauri 2 + Svelte 5 + TypeScript. The older .NET projects undersrc/andtests/are reference code, not the product. - Decky is a compact, Nextcloud-inspired desktop client for Nextcloud Deck. Preserve its dark native title bar, horizontal/vertical views, drag-and-drop, compact cards, collapsible sidebar, and footer-free layout.
- Background sync begins after 10 seconds idle and repeats every 30 seconds. It must pause during edits, drags, loading, modals, and while the window is hidden.
- Never store or commit Nextcloud credentials. Use an app password and the OS credential store. Live-instance tests require the user to enter credentials.
Nextcloud API compatibility
- Client code and tests are in
app/src/lib/deck-api.tsandapp/src/lib/deck-api.test.ts. - Support both documented
index.php/apps/deck/api/v1.0/and rewrite-friendlyapps/deck/api/v1.0/paths. - Preserve complete card fields on updates, including color and object/string owner handling. Keep the tested cross-stack card-move fallback.
- Stack reorder uses Deck's OCS reorder endpoint and verifies persisted order.
- Respect board permissions before exposing edit/manage/delete controls.
Validation
From app/, run npm ci, npm run check, npm test, and npm run build.
Build Windows installers on this Windows machine; the Unraid Forgejo Docker
runner only validates the web client via .forgejo/workflows/validate.yml.
Versions and releases
- Installed apps update from signed Forgejo Release assets, never from Git.
- A released version/tag is immutable. Always increment the semantic version; never republish or replace assets for an existing version.
- Use
scripts/Set-Version.ps1to synchronize npm, Cargo, Tauri, and the browser fallback. Commit and push source tomainbefore publishing the release. - Build/sign with
scripts/Prepare-Release.ps1. Generated files live underartifacts/release/vX.Y.Z/and stay out of Git. - Publish by double-clicking
scripts/Publish-DeckyRelease.cmdor by invokingscripts/Publish-ForgejoRelease.ps1. The publisher creates the tag/release, uploads the installer/signature, commitsreleases/latest.jsontomain, and automatically fast-forwards the local checkout to that metadata commit. - The publisher requires a clean
mainthat exactly matchesorigin/main, so commit and push source first. LF-to-CRLF messages on Windows are warnings, not failures. - Forgejo:
https://git.elijahkuntz.com/Elijah/Decky. A publishing PAT needswrite:repository; never commit or print it. - The permanent Tauri updater key is outside the repository at
%USERPROFILE%\.tauri\decky.keywith its password beside it. Never expose, replace, or regenerate this key after releases have shipped.
See app/UPDATES.md for the complete release procedure.