board: no new-card pulse for fresh journal entries
Closing a new journal entry briefly flashed the card with the 1× local-created pulse. Journal entries are daily-log noise, not "look at this new thing" moments, so the flash reads as clutter. Detect journals at pulse time (title starts YYYY-MM-DD, no termin/geburtstag, no caldav_uid, no " — <summary>" suffix — mirrors calendar.js isJournal) and drop them from the pulse set. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
412dc527a3
commit
c9749352ec
3 files changed
+18
-3
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
define('APP_NAME', 'hyprcrd');
|
define('APP_NAME', 'hyprcrd');
|
||||||
define('APP_VERSION', '1.9.14');
|
define('APP_VERSION', '1.9.15');
|
||||||
|
|
||||||
// Database path — writable directory, outside webroot
|
// Database path — writable directory, outside webroot
|
||||||
// DB_PATH / UPLOAD_DIR can be pre-defined by the Electron router for app isolation
|
// DB_PATH / UPLOAD_DIR can be pre-defined by the Electron router for app isolation
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hyprcrd",
|
"name": "hyprcrd",
|
||||||
"version": "1.9.14",
|
"version": "1.9.15",
|
||||||
"description": "hyprcrd — self-hosted card manager",
|
"description": "hyprcrd — self-hosted card manager",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -768,9 +768,24 @@ export function renderBoard() {
|
|||||||
// Pulse locally-created cards in ANY bucket (1× subtle pulse).
|
// Pulse locally-created cards in ANY bucket (1× subtle pulse).
|
||||||
// These never enter unseenCardIds so they can't trigger the all-tab
|
// These never enter unseenCardIds so they can't trigger the all-tab
|
||||||
// dot — the user just made them, there's nothing "unseen" about it.
|
// dot — the user just made them, there's nothing "unseen" about it.
|
||||||
|
// Journal entries are exempt from the pulse entirely — they're daily
|
||||||
|
// log jottings, not "here's a new thing" moments, so the flash
|
||||||
|
// reads as noise. Detection mirrors calendar.js isJournal: title
|
||||||
|
// begins with YYYY-MM-DD, no termin/geburtstag tag, no caldav_uid,
|
||||||
|
// and no " — <summary>" suffix (which denotes an appointment).
|
||||||
if (newLocalIds.size) {
|
if (newLocalIds.size) {
|
||||||
for (const id of newLocalIds) state.recentlyCreatedIds.delete(id);
|
for (const id of newLocalIds) state.recentlyCreatedIds.delete(id);
|
||||||
pulseCards(newLocalIds, 'card-pulse-local');
|
const toPulse = new Set();
|
||||||
|
for (const id of newLocalIds) {
|
||||||
|
const card = state.cards.find(c => String(c.id) === id);
|
||||||
|
if (!card) continue;
|
||||||
|
const isJournal = /^\d{4}-\d{2}-\d{2}$/.test((card.title || '').trim())
|
||||||
|
&& !/^\d{4}-\d{2}-\d{2}\s*[—-]\s*.+/.test(card.title || '')
|
||||||
|
&& !card.caldav_uid
|
||||||
|
&& !(card.tags || '').split(',').some(t => t === 'termin' || t === 'geburtstag');
|
||||||
|
if (!isJournal) toPulse.add(id);
|
||||||
|
}
|
||||||
|
if (toPulse.size) pulseCards(toPulse, 'card-pulse-local');
|
||||||
}
|
}
|
||||||
// Remote (relay-synced) cards: pulse 3× only when the user is on
|
// Remote (relay-synced) cards: pulse 3× only when the user is on
|
||||||
// the all view. On other views, the unseen ids accumulate and
|
// the all view. On other views, the unseen ids accumulate and
|
||||||
|
|||||||
Reference in new issue
Block a user