From 5d7d0c538c0611d1570fdf7989ac074cdb6de1c9 Mon Sep 17 00:00:00 2001 From: William Mantly Date: Wed, 16 Sep 2026 21:55:38 -0400 Subject: [PATCH] feat: notification bell filtering (@simpleworkjs/frontend 0.5.0) The feed subscribed to every model event the socket delivered and showed all of them -- right for a change log, wrong for a person. 0.5.0 adds muting ("Resource:update", "Resource", "*:update"), persisted per-app, and a filter UI built from the models actually present in the feed. views/top.ejs gains the #notify-filters container those controls render into; without it muting still works via config, it just has no UI, and a filter nobody can reach is not a filter. Also fixes a burst of events raising a burst of toasts: the feed popped one toast and one desktop notification per arriving event while its own list collapsed correctly, so a sweep producing one tidy "42 resources updated" row also stacked 42 toasts beside it. ^0.4.3 does not admit 0.5.0 -- caret on 0.x pins the minor -- so this is an explicit bump. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TnJ9iEHU6m7kYxD5fXPfts --- CHANGELOG.md | 21 +++++++++++++++++++++ nodejs/package-lock.json | 12 ++++++------ nodejs/package.json | 4 ++-- nodejs/views/top.ejs | 6 ++++++ package.json | 2 +- 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad9c56e..0b65bd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## [2.7.0] - 2026-09-17 + +### Added +- **The notification bell can be filtered.** `@simpleworkjs/frontend` 0.4.3 → + 0.5.0 brings muting -- `'Resource:update'` (one model, one action), + `'Resource'` (one model, every action) and `'*:update'` (one action, every + model, the "hide updates" button) -- persisted per-app in `localStorage`. + `views/top.ejs` gains the `#notify-filters` container the controls render + into; without it muting still works, it just has no UI, and a filter nobody + can reach is not a filter. + +### Fixed +- **A burst of events no longer raises a burst of toasts.** The feed popped one + toast and one desktop notification per arriving event while its own list + collapsed correctly, so a sweep that produced one tidy "42 resources updated" + row also stacked 42 toasts beside it. Popups now buffer briefly and are + collapsed the same way the list is. +- **Root `package.json` was two patch versions behind** at `2.6.0` on a tree + released as `v2.6.2`. Nothing consumes that field, which is exactly why it + keeps drifting; both manifests now agree. + ## [2.6.2] - 2026-09-16 ### Fixed diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 0a4c5f3..9f5b590 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "theta-proxy", - "version": "2.5.3", + "version": "2.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "theta-proxy", - "version": "2.5.3", + "version": "2.7.0", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-free": "^7.3.0", @@ -14,7 +14,7 @@ "@simpleworkjs/app-stack": "^1.0.0", "@simpleworkjs/bao-conf": "^1.0.2", "@simpleworkjs/conf": "^1.2.0", - "@simpleworkjs/frontend": "^0.4.3", + "@simpleworkjs/frontend": "^0.5.0", "@simpleworkjs/ldap": "^1.0.0", "@simpleworkjs/oidc-client": "^1.1.1", "acme-client": "^5.4.0", @@ -323,9 +323,9 @@ } }, "node_modules/@simpleworkjs/frontend": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@simpleworkjs/frontend/-/frontend-0.4.3.tgz", - "integrity": "sha512-v8mZqvaM41gjApGRdT707+45bHriZw3EK3s3nkCczk+Ipm5fiOw0BnVkzNxXL6KlvyCAPsQ04UQy1VbCDsKgRg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@simpleworkjs/frontend/-/frontend-0.5.0.tgz", + "integrity": "sha512-7gcXwZDNEayLHfNcPn5+mF2XOulxQgdN2TS79kpoNbPh6JEefAybZODMbfLqNtKFNIdib8hGP8iNrHe0ifqTaA==", "license": "MIT", "engines": { "node": ">=18.0.0" diff --git a/nodejs/package.json b/nodejs/package.json index 17d9921..98ae248 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "theta-proxy", - "version": "2.6.2", + "version": "2.7.0", "author": [ { "name": "William Mantly", @@ -24,7 +24,7 @@ "@simpleworkjs/app-stack": "^1.0.0", "@simpleworkjs/bao-conf": "^1.0.2", "@simpleworkjs/conf": "^1.2.0", - "@simpleworkjs/frontend": "^0.4.3", + "@simpleworkjs/frontend": "^0.5.0", "@simpleworkjs/ldap": "^1.0.0", "@simpleworkjs/oidc-client": "^1.1.1", "acme-client": "^5.4.0", diff --git a/nodejs/views/top.ejs b/nodejs/views/top.ejs index 51480a1..4afa361 100755 --- a/nodejs/views/top.ejs +++ b/nodejs/views/top.ejs @@ -107,6 +107,12 @@ + +
diff --git a/package.json b/package.json index 15a6f92..f7a7c27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "theta-proxy", - "version": "2.6.0", + "version": "2.7.0", "description": "Reverse proxy and SSL certificate manager for Theta Suite", "scripts": { "test": "npm --prefix nodejs test",