Per-card opt-in push to the relay for distraction-free mobile reading.
Not tag-based: a real cards.read_push column so the reading state
stays independent of whatever tags the user organises by.
hyprcrd
- cards.read_push column (0/1, default 0) via Database migration.
- POST /api/cards + PATCH /api/cards/{id} accept read_push; save hook
posts the card (title+body, encrypted) and referenced images
to the relay's /api/read endpoint. First inline image is flagged
as the hero. Toggle-off / DELETE wipes the remote copy.
- Detail-bar toggle button ("Read" → "On relay") with filled book
icon + inverted accent background when active; outline book icon
in the bottom meta row of the board card when read_push=1.
relay
- read_items + read_attachments tables, encrypted under the
inter-tenant key like messages (dual-format envelope).
- Client API: POST /api/read, DELETE /api/read/{uid}, POST
/api/read-attachments. Session API: GET /api/read (list),
GET /api/read/{uid} (single decrypted), GET /api/read-attachments/
{uid}/{filename} (serves decrypted image bytes).
- Payload size caps raised to 15MB (attachments) / 2MB (items).
- New nav tab + view: list with thumbnails, click opens a zen reader
overlay. Reader caps article width at 680px, bumps type to 17px/1.7,
renders a minimal markdown subset (headings, lists, code fences,
blockquotes, links, inline images), rewrites uploads/ references
to the session-authed image endpoint. Escape closes the reader.
- Mobile-first: wider touch targets, tighter padding at ≤640px.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
85 lines
1.5 KiB
JSON
85 lines
1.5 KiB
JSON
{
|
|
"name": "hyprcrd",
|
|
"version": "2.0.5",
|
|
"description": "hyprcrd — self-hosted card manager",
|
|
"main": "main.js",
|
|
"scripts": {
|
|
"start": "electron .",
|
|
"dist": "electron-builder"
|
|
},
|
|
"author": "th",
|
|
"license": "UNLICENSED",
|
|
"devDependencies": {
|
|
"electron": "^41.2.0",
|
|
"electron-builder": "^26.0.0"
|
|
},
|
|
"build": {
|
|
"appId": "com.hyprcrd.app",
|
|
"productName": "hyprcrd",
|
|
"files": [
|
|
"main.js",
|
|
"preload.js"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "router.php",
|
|
"to": "router.php"
|
|
},
|
|
{
|
|
"from": "../public",
|
|
"to": "public",
|
|
"filter": [
|
|
"**/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "../src",
|
|
"to": "src",
|
|
"filter": [
|
|
"**/*"
|
|
]
|
|
},
|
|
{
|
|
"from": "../config.php",
|
|
"to": "config.php"
|
|
},
|
|
{
|
|
"from": "../data",
|
|
"to": "data",
|
|
"filter": [
|
|
".gitkeep"
|
|
]
|
|
}
|
|
],
|
|
"mac": {
|
|
"target": "dmg",
|
|
"category": "public.app-category.productivity",
|
|
"extraResources": [
|
|
{
|
|
"from": "php-bin/darwin",
|
|
"to": "php-bin"
|
|
}
|
|
]
|
|
},
|
|
"win": {
|
|
"target": "nsis",
|
|
"extraResources": [
|
|
{
|
|
"from": "php-bin/win32",
|
|
"to": "php-bin"
|
|
}
|
|
]
|
|
},
|
|
"linux": {
|
|
"target": "AppImage",
|
|
"category": "Office",
|
|
"extraResources": [
|
|
{
|
|
"from": "php-bin/linux",
|
|
"to": "php-bin"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|