diff --git a/app/src-tauri/tauri.conf.json b/app/src-tauri/tauri.conf.json
index 0fc5a14..1fc5dc1 100644
--- a/app/src-tauri/tauri.conf.json
+++ b/app/src-tauri/tauri.conf.json
@@ -34,7 +34,7 @@
"category": "Productivity",
"shortDescription": "Nextcloud Deck on your desktop",
"longDescription": "A focused cross-platform desktop client for viewing and editing Nextcloud Deck boards.",
- "copyright": "Copyright © 2026 Elijah Kuntz",
+ "copyright": "Copyright (c) 2026 Elijah Kuntz",
"windows": {
"webviewInstallMode": {
"type": "downloadBootstrapper"
diff --git a/app/src/App.svelte b/app/src/App.svelte
index 7fde8a8..4b03d42 100644
--- a/app/src/App.svelte
+++ b/app/src/App.svelte
@@ -14,7 +14,6 @@
ChevronRight,
Columns3,
LayoutList,
- LoaderCircle,
Minus,
Pencil,
Plus,
@@ -113,7 +112,7 @@
{ id: 106, stackId: 13, title: 'Patho Concept Map', type: 'plain', owner: 'admin', order: 2, color: 'E69A88', done: null }
]}
];
- status = 'Homework · 6 cards · Preview data';
+ status = 'Preview data';
return;
}
if (!serverUrl || !username) return;
@@ -149,7 +148,7 @@
return;
}
updateState = 'checking';
- updateMessage = 'Checking Forgejo for a newer signed release…';
+ updateMessage = 'Checking Forgejo for a newer signed release...';
updateProgress = 0;
pendingUpdate = null;
try {
@@ -170,7 +169,7 @@
async function installUpdate() {
if (!pendingUpdate) return;
updateState = 'downloading';
- updateMessage = `Downloading Decky ${pendingUpdate.version}…`;
+ updateMessage = `Downloading Decky ${pendingUpdate.version}...`;
let downloaded = 0;
let total = 0;
try {
@@ -184,7 +183,7 @@
} else if (event.event === 'Finished') {
updateState = 'installing';
updateProgress = 100;
- updateMessage = 'Download verified. Installing and restarting Decky…';
+ updateMessage = 'Download verified. Installing and restarting Decky...';
}
});
await relaunch();
@@ -196,7 +195,7 @@
async function connect(silent = false) {
busy = true;
- status = 'Connecting to Nextcloud…';
+ status = 'Connecting...';
try {
client = await DeckApiClient.connect({ serverUrl, username, appPassword });
boards = (await client.getBoards()).filter((board) => !board.archived && !board.deletedAt);
@@ -228,13 +227,12 @@
async function refreshBoard() {
if (!client || !selectedBoard) return;
busy = true;
- status = `Loading ${selectedBoard.title}…`;
+ status = 'Refreshing...';
try {
stacks = (await client.getStacks(selectedBoard.id))
.filter((stack) => !stack.deletedAt)
.sort((a, b) => a.order - b.order);
- const count = stacks.reduce((total, stack) => total + (stack.cards?.filter((card) => !card.archived).length ?? 0), 0);
- status = `${selectedBoard.title} · ${count} card${count === 1 ? '' : 's'} · Updated ${new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}`;
+ status = `Updated ${new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}`;
} catch (error) {
status = friendlyError(error);
} finally {
@@ -249,7 +247,7 @@
const interactionAtStart = lastInteractionAt;
if (!background) {
busy = true;
- status = selectedBoard ? `Loading ${selectedBoard.title}…` : 'Refreshing boards…';
+ status = 'Refreshing...';
}
try {
const refreshedBoards = (await activeClient.getBoards()).filter((board) => !board.archived && !board.deletedAt);
@@ -273,8 +271,7 @@
.sort((a, b) => a.order - b.order);
if (client !== activeClient || selectedBoard?.id !== board.id || (background && (lastInteractionAt !== interactionAtStart || document.visibilityState !== 'visible'))) return;
stacks = refreshedStacks;
- const count = stacks.reduce((total, stack) => total + (stack.cards?.filter((card) => !card.archived).length ?? 0), 0);
- status = `${board.title} · ${count} card${count === 1 ? '' : 's'} · Updated ${new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}`;
+ status = `Updated ${new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}`;
} catch (error) {
status = `${background ? 'Background refresh failed' : 'Refresh failed'}: ${friendlyError(error)}`;
} finally {
@@ -503,7 +500,7 @@
}
async function deleteCard(card: Card) {
- if (!client || !selectedBoard || !confirm(`Delete “${card.title}�`)) return;
+ if (!client || !selectedBoard || !confirm(`Delete "${card.title}"?`)) return;
busy = true;
try {
await client.deleteCard(selectedBoard.id, card.stackId, card.id);
@@ -675,8 +672,7 @@
} else if (stackId !== null) {
const targetIndex = stacks.findIndex((stack) => stack.id === stackId);
stacks = await client.reorderStack(board.id, stackId, targetIndex);
- const count = stacks.reduce((total, stack) => total + (stack.cards?.filter((item) => !item.archived).length ?? 0), 0);
- status = `${board.title} · ${count} card${count === 1 ? '' : 's'} · Stack order saved`;
+ status = `Updated ${new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}`;
}
} catch (error) {
stacks = origin;
@@ -711,7 +707,7 @@
}
-