collab attachments, multi-day events, calendar improvements
- Collab buckets sync attachments alongside cards (images/PDFs/audio). New /api/collab-attachments endpoint on relay, encrypted at rest, bucket-scoped for members. - CalDAV multi-day events via **Bis:** body field. Calendar renders event on every day in range with day counter (1/6, 2/6, ...). - Calendar preserves month across close/reopen (only jumps to today on first open). - Calendar title: centered nav group with [MM-DD] Mon Y [KW-KW] — dimmed brackets, fixed width so nothing wiggles. - Editor: scratchpad uses custom confirm, autobackup-draft dialog replaced with custom styled dialog. - Scanlines theme feature removed (performance issue). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
002562b1d3
commit
ca47052768
11 files changed
+254
-64
No files matched your search
+6
-11
@@ -1158,7 +1158,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
// color theme
|
||||
theme: 'slate',
|
||||
// typography
|
||||
scanlines: '1',
|
||||
fontHeadline: 'pixel', fontContent: 'mono', fontUi: 'pixel',
|
||||
// geometry
|
||||
radiusCard: 0, radiusButton: 0, radiusInput: 0, radiusModal: 0, radiusTag: 0, radiusImage: 0,
|
||||
@@ -1172,7 +1171,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
window.builtinPresets = {
|
||||
Terminal: { ...window.designDefaults },
|
||||
Modern: { theme: 'paper',
|
||||
scanlines: '0',
|
||||
fontHeadline: 'mono', fontContent: 'mono', fontUi: 'mono',
|
||||
radiusCard: 10, radiusButton: 24, radiusInput: 5, radiusModal: 15, radiusTag: 3, radiusImage: 8,
|
||||
borderCard: 1, borderStyle: 'solid', barHeight: 3,
|
||||
@@ -1210,7 +1208,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
root.setProperty('--ui-lift-card', d.liftCard + 'px');
|
||||
root.setProperty('--ui-blur-overlay', d.blurOverlay + 'px');
|
||||
// body classes
|
||||
document.body.classList.toggle('no-scanlines', String(d.scanlines) !== '1');
|
||||
document.body.classList.remove('anim-off', 'anim-fast', 'anim-slow');
|
||||
if (d.animSpeed === 'off') document.body.classList.add('anim-off');
|
||||
if (d.animSpeed === 'fast') document.body.classList.add('anim-fast');
|
||||
@@ -1222,8 +1219,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
// Migrate legacy individual keys (only if no JSON blob exists yet)
|
||||
if (!Object.keys(saved).length) {
|
||||
const legacy = {};
|
||||
const sl = localStorage.getItem('hyprcrd-scanlines');
|
||||
if (sl !== null) legacy.scanlines = sl;
|
||||
const fh = localStorage.getItem('hyprcrd-font-headline'); if (fh) legacy.fontHeadline = fh;
|
||||
const fc = localStorage.getItem('hyprcrd-font-content'); if (fc) legacy.fontContent = fc;
|
||||
const fu = localStorage.getItem('hyprcrd-font-ui'); if (fu) legacy.fontUi = fu;
|
||||
@@ -1649,7 +1644,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
</div>
|
||||
</div>
|
||||
<div id="theme-preview" class="theme-preview">
|
||||
<div class="tp-scan" id="theme-preview-scan"></div>
|
||||
<div class="tp-row">
|
||||
<div class="tp-card">
|
||||
<div class="tp-card-bar"></div>
|
||||
@@ -1696,7 +1690,6 @@ if (str_starts_with($route, '/api/')) {
|
||||
</summary>
|
||||
<div class="mt-2">
|
||||
<div class="design-section-label">typography</div>
|
||||
<div class="toggle-row"><span class="toggle-label">Scan lines</span><div class="toggle-switch" id="setting-scanlines"></div></div>
|
||||
<div class="design-row"><label>Headline</label><select id="setting-font-headline" class="bg-t-bg border border-t-border text-t-bright text-xs font-pixel px-2 py-1 rounded-sm focus:border-t-accent focus:outline-none cursor-pointer"></select></div>
|
||||
<div class="design-row"><label>Content</label><select id="setting-font-content" class="bg-t-bg border border-t-border text-t-bright text-xs font-pixel px-2 py-1 rounded-sm focus:border-t-accent focus:outline-none cursor-pointer"></select></div>
|
||||
<div class="design-row"><label>UI</label><select id="setting-font-ui" class="bg-t-bg border border-t-border text-t-bright text-xs font-pixel px-2 py-1 rounded-sm focus:border-t-accent focus:outline-none cursor-pointer"></select></div>
|
||||
@@ -2093,14 +2086,16 @@ if (str_starts_with($route, '/api/')) {
|
||||
<!-- Calendar -->
|
||||
<div class="overlay fixed inset-0 z-[73]" style="background:var(--t-overlay)" id="calendar">
|
||||
<div class="bg-t-surface border border-t-border flex flex-col absolute" style="inset:40px;">
|
||||
<div class="flex items-center gap-3 px-5 py-3 border-b border-t-border shrink-0">
|
||||
<div class="flex items-center gap-2 px-5 py-3 border-b border-t-border shrink-0 relative">
|
||||
<i class="ph ph-calendar-dots text-t-accent text-base"></i>
|
||||
<button id="cal-prev" class="text-t-muted hover:text-t-accent transition-colors"><i class="ph ph-caret-left text-sm"></i></button>
|
||||
<h2 id="cal-title" class="font-pixel text-xs text-t-accent min-w-[120px] text-center"></h2>
|
||||
<button id="cal-next" class="text-t-muted hover:text-t-accent transition-colors"><i class="ph ph-caret-right text-sm"></i></button>
|
||||
<button id="cal-today" class="font-pixel text-[10px] px-2 py-0.5 border border-t-border text-t-muted hover:border-t-accent hover:text-t-accent transition-colors">Today</button>
|
||||
<button id="cal-sync" class="font-pixel text-[10px] px-2 py-0.5 border border-t-border text-t-muted hover:border-t-accent hover:text-t-accent transition-colors flex items-center gap-1"><i class="ph ph-cloud-arrow-up text-xs"></i>Sync</button>
|
||||
<button id="cal-caldav-settings" class="text-t-dim hover:text-t-accent transition-colors"><i class="ph ph-gear text-sm"></i></button>
|
||||
<div class="absolute left-1/2 -translate-x-1/2 flex items-center gap-3">
|
||||
<button id="cal-prev" class="text-t-muted hover:text-t-accent transition-colors"><i class="ph ph-caret-left text-sm"></i></button>
|
||||
<h2 id="cal-title" class="font-pixel text-sm text-t-accent text-center" style="width:220px;flex-shrink:0;"></h2>
|
||||
<button id="cal-next" class="text-t-muted hover:text-t-accent transition-colors"><i class="ph ph-caret-right text-sm"></i></button>
|
||||
</div>
|
||||
<div class="flex-1"></div>
|
||||
<button id="cal-close" class="flex items-center gap-1.5 px-2.5 py-1 text-xs border border-t-border text-t-muted hover:border-t-danger hover:text-t-danger transition-colors">
|
||||
<i class="ph ph-x text-sm"></i><span class="font-pixel text-[10px]">Close</span>
|
||||
|
||||
Reference in new issue
Block a user