Desktop: background store reads from the tray (no document.hidden skip, backoff), notifications by kind (rejected, approved, live, halted, crash, reviews) with switches, quiet hours and mute, click-through on next show; tray menu with apps and their states, read now, mute, updates, settings, tooltip summary and attention dot; tray_update command; tests

This commit is contained in:
CRTkafa 2026-10-22 22:24:05 +08:00
parent 5d8a0f5e9a
commit 03ef999dac
27 changed files with 1050 additions and 55 deletions

View file

@ -782,6 +782,41 @@ export const en = {
'notify.lowTitle': '{name}: {count} new low ratings',
'notify.lowTitle_one': '{name}: a new low rating',
'notify.crashTitle': '{name}: over the Play threshold',
'notify.rejectedTitle': '{name}: rejected by {store}',
'notify.rejectedBody': 'Version {version} was rejected.',
'notify.approvedTitle': '{name}: approved',
'notify.approvedBody': '{store} {version} passed review and is ready for release.',
'notify.liveTitle': '{name}: live',
'notify.liveBody': '{store} {version} is live.',
'notify.haltedTitle': '{name}: rollout halted',
'notify.haltedBody': '{store} {version} was halted.',
'tray.open': 'Open storebound',
'tray.readNow': 'Read the stores now',
'tray.apps': 'Apps',
'tray.noApps': 'No apps yet',
'tray.noState': 'no release read yet',
'tray.mute': 'Mute notifications for 1 hour',
'tray.unmute': 'Unmute notifications',
'tray.update': 'Check for updates',
'tray.settings': 'Settings',
'tray.quit': 'Quit storebound',
'tray.tipReview': '{count} in review',
'tray.tipAttention': '{count} needs you',
'tray.mutedTip': 'muted',
'set.nRejected': 'Rejected',
'set.nRejectedHint': 'A version the store rejected, with its reason when the store gives one',
'set.nApproved': 'Approved and ready for release',
'set.nApprovedHint': 'A version passed review',
'set.nLive': 'Live',
'set.nLiveHint': 'A version reached the store page or a rollout',
'set.quiet': 'Quiet hours',
'set.quietHint': 'No notifications in this window (they are dropped, not saved for later)',
'set.quietFrom': 'From',
'set.quietTo': 'To',
'set.muteHour': 'Mute for 1 hour',
'set.unmute': 'Unmute ({until})',
'set.muted': 'Muted until {until}',
'set.clickNote': "Clicking a notification does not open the app on desktop; the next time you open the window from the tray, it goes to that app's Releases tab.",
'set.lead': 'Studios, accounts, store reads, the offline cache, language, theme, notifications and more. Everything stays on this computer.',
'set.sections': 'Settings sections',
'set.studios': 'Studios & accounts',
@ -854,11 +889,11 @@ export const en = {
'set.always': 'Always',
'set.notifications': 'Notifications',
'set.notificationsSub': 'After a read, when something changed since the previous one',
'set.nReview': 'Review and release state changes',
'set.nReviewHint': 'In review, approved, rejected, live, halted',
'set.nReview': 'Other release state changes',
'set.nReviewHint': 'Submitted, in review',
'set.nLow': 'New 1 or 2 star reviews',
'set.nLowHint': 'When the Reviews tab reads new ones',
'set.nCrash': 'Crash or ANR rate over the threshold',
'set.nCrash': 'Rollout halted, or crash / ANR over the threshold',
'set.nCrashHint': 'Google Play bad behavior thresholds',
'set.testNotify': 'Send a test notification',
'set.testTitle': 'storebound',