Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/desktop",
"productName": "ZenNotes",
"version": "2.50.1",
"version": "2.50.2",
"description": "ZenNotes desktop shell",
"private": true,
"main": "./out/main/index.js",
Expand Down
2 changes: 1 addition & 1 deletion apps/server/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/server",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"scripts": {
"dev": "node ../../tooling/scripts/run-go-server-dev.mjs",
"prepare-web": "node ../../tooling/scripts/prepare-server-web-dist.mjs",
Expand Down
2 changes: 1 addition & 1 deletion apps/web/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/web",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"type": "module",
"description": "ZenNotes web client for self-hosted and hosted deployments",
"homepage": "https://zennotes.org",
Expand Down
19 changes: 19 additions & 0 deletions docs/releases/v2.50.2/RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
ZenNotes 2.50.2: dismiss update notifications

> Update notifications now have a close button, so you can clear the toast and keep writing.

## 🐛 Fixes

- **Dismiss the update toast.** Use the × button to close an available-update, download-progress, or ready-to-relaunch notification. The button is keyboard accessible and follows your theme.
- **Dismissed notices stay quiet.** Repeated notifications and download progress updates do not bring the same notice back. A new version or a different update phase can show a fresh notice. Restarting the app can show the notice again.
- **Update when you are ready.** Dismissing the toast leaves the update controls in Settings available and does not cancel a download.

## 🧰 For contributors

- Reuses the shared icon button and close icon. Dismissal tracks the update version and phase in local UI state.
- All eight package versions and lockfile metadata are aligned at 2.50.2; dependencies are unchanged.
- Local validation: the full production build and all seven typecheck tasks passed; 4,391 JavaScript tests passed with five skipped, and the Go tests passed. The production dependency audit reported no vulnerabilities. The dismiss button was previewed in the macOS desktop app.

---

Local-first and keyboard-first, as always.
18 changes: 9 additions & 9 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "zennotes-monorepo",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"description": "ZenNotes monorepo for desktop, web, and self-hosted server builds",
"packageManager": "npm@10.9.2",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/app-core/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/app-core",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"type": "module",
"exports": {
"./main": "./src/main.tsx"
Expand Down
18 changes: 15 additions & 3 deletions packages/app-core/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { lazy, Suspense, useEffect, useMemo, useRef } from 'react'
import { lazy, Suspense, useEffect, useMemo, useRef, useState } from 'react'
import {
useStore,
initConfigSync,
Expand All @@ -24,7 +24,8 @@ import { DatePickerHost } from './components/DatePickerHost'
import { PublishNoteHost } from './components/PublishNoteHost'
import { CloudConflictReviewHost } from './components/CloudConflictReviewHost'
import { ServerDirectoryPickerHost } from './components/ServerDirectoryPickerHost'
import { ToastHost } from './components/ui'
import { IconButton, ToastHost } from './components/ui'
import { CloseIcon } from './components/icons'
import { ExcalidrawEmbedMenuHost } from './components/ExcalidrawEmbedMenuHost'
import { resolveQuickNoteTitle } from './lib/quick-note-title'
import { escapeEmbedFrame } from './lib/embed-renderers'
Expand Down Expand Up @@ -239,10 +240,14 @@ function AppUpdateNotice({
hidden: boolean
}): JSX.Element | null {
const updateState = useAppUpdateState()
const [dismissedNotice, setDismissedNotice] = useState<string | null>(null)
const noticeKey = updateState
? `${updateState.availableVersion ?? ''}:${updateState.phase}`
: null
const label = appUpdateNoticeLabel(updateState)
const actionLabel = appUpdatePrimaryActionLabel(updateState)

if (hidden || !label) return null
if (hidden || !label || dismissedNotice === noticeKey) return null

const runPrimaryAction = (): void => {
if (updateState?.phase === 'available') {
Expand Down Expand Up @@ -276,6 +281,13 @@ function AppUpdateNotice({
{actionLabel}
</button>
)}
<IconButton
size="sm"
aria-label="Dismiss update notification"
onClick={() => setDismissedNotice(noticeKey)}
>
<CloseIcon className="h-3.5 w-3.5" />
</IconButton>
</div>
)
}
Expand Down
2 changes: 1 addition & 1 deletion packages/bridge-contract/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/bridge-contract",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"type": "module",
"exports": {
"./bridge": "./src/bridge.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/shared-domain/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/shared-domain",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"type": "module",
"exports": {
"./*": "./src/*.ts"
Expand Down
2 changes: 1 addition & 1 deletion packages/shared-ui/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@zennotes/shared-ui",
"private": true,
"version": "2.50.1",
"version": "2.50.2",
"type": "module",
"exports": {
".": "./src/index.ts"
Expand Down