Files
cloudlink/desktop/package.json
T
nmemmertandClaude Sonnet 4.6 9b57dd9b94 feat: real-time messaging, Electron desktop app, admin drive portal
Messaging:
- Optimistic UI: message appears instantly in sender's view on send
- Skip WS relay-back of own messages to avoid duplicates
- Fix sent_at field name mismatch (sentAt → sent_at fallback)

Admin portal:
- /admin route: list all users, storage used vs quota, file count
- Inline-edit per-user storage quota (MB) and admin flag
- Stats header: total users, total storage, total files
- is_admin + storage_quota_mb columns added to users table
- Login response now includes isAdmin; sidebar shows Admin link for admins
- requireAdmin middleware on all /admin/* routes

Electron desktop app (desktop/):
- BrowserWindow with native title bar, system tray, hide-to-tray on close
- First-run setup dialog to configure self-hosted server URL
- Persists server URL via electron-store
- Tray menu: Open, Change server URL, Quit
- IPC: showNotification for future native push notifications
- electron-builder config for macOS (DMG), Windows (NSIS), Linux (AppImage)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-28 10:31:41 -04:00

52 lines
1.3 KiB
JSON

{
"name": "cloudlink-desktop",
"version": "1.0.0",
"description": "CloudLink — encrypted messaging and cloud drive",
"main": "main.js",
"scripts": {
"start": "electron .",
"build": "electron-builder --mac --win --linux",
"build:mac": "electron-builder --mac",
"build:win": "electron-builder --win",
"build:linux": "electron-builder --linux"
},
"build": {
"appId": "us.necloud.cloudlink",
"productName": "CloudLink",
"copyright": "Copyright © 2026",
"directories": {
"output": "dist"
},
"files": [
"main.js",
"preload.js",
"assets/**"
],
"mac": {
"category": "public.app-category.productivity",
"icon": "assets/icon.icns",
"target": [{ "target": "dmg", "arch": ["x64", "arm64"] }]
},
"win": {
"icon": "assets/icon.ico",
"target": [{ "target": "nsis", "arch": ["x64"] }]
},
"linux": {
"icon": "assets/icon.png",
"category": "Network",
"target": [{ "target": "AppImage", "arch": ["x64"] }]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true
}
},
"devDependencies": {
"electron": "^33.0.0",
"electron-builder": "^25.0.0"
},
"dependencies": {
"electron-store": "^10.0.0"
}
}