Initial commit of version 0.2.0

This commit is contained in:
Elijah 2026-07-19 18:37:14 -07:00
parent 86fc06b877
commit dfb04462f3
108 changed files with 16167 additions and 80 deletions

View file

@ -1,41 +1,71 @@
# Decky
Decky is a focused Windows desktop client for viewing and editing boards from a
Nextcloud Deck instance.
Decky is a focused cross-platform desktop client for viewing and editing boards
from a Nextcloud Deck instance.
## Current status
## Current application
The repository currently contains:
The active application lives in `app/` and uses:
- `Decky.Core`, a UI-independent Deck REST API client and domain foundation;
- `Decky.ApiSpike`, a read-only connection and compatibility probe;
- `Decky.App`, the initial WinUI 3 desktop shell;
- focused tests for API path discovery, required headers, update serialization,
completion clearing, color preservation, and text contrast.
- Tauri 2 for the small native desktop shell;
- Svelte 5 and TypeScript for the interface;
- the operating system webview on Windows, macOS, and Linux;
- the native credential store on each platform (Windows Credential Manager,
macOS Keychain, or Linux Secret Service);
- Tauri's Rust HTTP client so Nextcloud requests are not blocked by browser CORS.
Implemented functionality includes:
- app-password authentication and automatic API-path discovery;
- active-board filtering and saved board selection;
- horizontal and vertical layouts saved independently per board;
- card creation, editing, deletion, due date, description, and color controls;
- a directly visible completion checkmark that synchronizes Deck's `done` value
and applies the configured active/completed color;
- preserved full-card update payloads and the tested Deck cross-stack movement
compatibility fallback;
- responsive/collapsible navigation and card search.
The earlier .NET/WinUI projects remain in `src/` and `tests/` temporarily as a
reference for the compatibility probe and original API test cases. They are no
longer the primary application.
## Development
Install the .NET 10 SDK and the Visual Studio WinUI application-development
workload. Then run:
Install Node.js, Rust stable, the platform-specific Tauri prerequisites, and
then run:
```powershell
dotnet restore Decky.slnx
dotnet test tests/Decky.Core.Tests/Decky.Core.Tests.csproj
dotnet run --project src/Decky.ApiSpike/Decky.ApiSpike.csproj
cd app
npm install
npm run check
npm test
npm run tauri dev
```
The compatibility probe prompts for a Nextcloud app password without echoing or
storing it. It starts with read-only board, stack, and card-list requests. On a
disposable test board, its explicitly confirmed `WRITE` mode also verifies card
color creation/preservation, setting and clearing completion, same-stack reorder,
cross-stack movement, response verification, and cleanup.
Build a release executable with:
The desktop app stores its JSON settings in `%LOCALAPPDATA%\Decky\settings.json`.
The app password is stored separately in Windows Credential Locker and is never
written to the JSON file.
```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Release.ps1 -Version 0.2.0 -Notes "Release notes"
```
This produces a normal per-user Windows setup executable plus the cryptographic
signature and metadata used by Decky's in-app updater.
Cross-platform artifacts must be compiled on their target operating system.
Use macOS for `.app`/DMG builds, Windows for MSI/NSIS builds, and Linux for the
desired Linux packages.
## Security
Decky only accepts HTTPS servers, except for `localhost` during development.
The app password is never stored in local storage or the JSON/settings model.
When “Save securely on this device” is selected it is saved through the native
OS credential service.
## Updates
Release builds will be distributed as a signed MSIX bundle through a stable
`Decky.appinstaller` feed. Forgejo is the source and CI/release host; installed
copies do not update with `git pull`.
Installed copies update from signed release artifacts, never with `git pull`.
The updater is available from Settings and reads stable metadata from the
Forgejo repository. See `app/UPDATES.md` for signing-key backup, release tags,
Forgejo Actions secrets, and the manual release fallback.