mirror of
https://github.com/Permissionless-Software-Foundation/psf-memo.git
synced 2026-09-21 16:52:01 -07:00
Record mute broadcast result completion in backlog and briefing
By specifier.
This commit is contained in:
+41
-14
@@ -580,6 +580,27 @@ that a single user-facing feature may require specs in more than one component.
|
|||||||
cross-module client-consistency follow-up (`dry4javascript` found no
|
cross-module client-consistency follow-up (`dry4javascript` found no
|
||||||
duplicate candidates in the changed set).
|
duplicate candidates in the changed set).
|
||||||
|
|
||||||
|
44. **Explorer links are rendered by a shared component.** The mute result
|
||||||
|
modal extracted `src/components/explorer-tx-link.js` (`ExplorerTxLink`,
|
||||||
|
plain `React.createElement`), now used by both `LikeResult` and the new
|
||||||
|
`MuteResult`. URL construction stays in the pure
|
||||||
|
`src/services/block-explorer.js` util. Reuse `ExplorerTxLink` for new
|
||||||
|
result modals instead of inlining an explorer `<a>` (extends gotcha #30).
|
||||||
|
`ExplorerTxLink`, `MuteResult`, and `LikeResult` scan as 0 language
|
||||||
|
mutation sites (structural markup), so their behavior is pinned by unit and
|
||||||
|
property tests instead.
|
||||||
|
|
||||||
|
45. **Mute-broadcast-result soft Gherkin survivors are all intrinsic.** The
|
||||||
|
soft mutation run on `mute-broadcast-result.feature` was 5 total / 0 killed
|
||||||
|
/ 5 survived, 0 errors. Every survivor is a single-character case mutation
|
||||||
|
of an example value (`addr` in scenarios 1–4, `broadcast_error` in
|
||||||
|
scenario 4) used on both the Given setup and the Then assertion side, so
|
||||||
|
the mutated value still matches (gotcha #12 class). `gherkin-mutator` wrote
|
||||||
|
a manifest with `"scenarios":[]` because every scenario has an intrinsic
|
||||||
|
survivor; commit it as tool-written. The structural assertions (mute/unmute
|
||||||
|
prefix, hash160, success message, txid, explorer href/`target=_blank`)
|
||||||
|
carried the language and unit/property kills.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 10. Run / verify the app
|
## 10. Run / verify the app
|
||||||
@@ -630,22 +651,28 @@ At the end of each session, update this file:
|
|||||||
- Note the current `master` HEAD commit.
|
- Note the current `master` HEAD commit.
|
||||||
- State the next feature to work on.
|
- State the next feature to work on.
|
||||||
|
|
||||||
Current `master` HEAD: `a1e4a4f95f` (`notification-entry-display` merged from
|
Current `master` HEAD: `eaaed8e5ea` (`mute-broadcast-result` merged from
|
||||||
`swarmforge-architect`). The verification record names the architect code
|
`swarmforge-architect`). The verification record names the architect code
|
||||||
review commit `bbbf4adcd7`; the only later commit (`a1e4a4f`) added `docs/`
|
review commit `a7d9ca6299`; the only later commit (`eaaed8e`) added `docs/`
|
||||||
(record and summary), so the record is valid for the merged tree. This task
|
(record and summary), so the record is valid for the merged tree. This task
|
||||||
renders each Notifications entry with the actor's resolved Memo display name
|
shows a broadcast result modal on the `/profile/:address` page after a
|
||||||
and avatar (truncated-address / identicon fallbacks), router profile links on
|
mute/unmute: on success the success message, the mute txid, and a
|
||||||
the avatar and name, the full address as small plain text, and a "View Post"
|
`bch.loping.net` explorer link in a new tab; on failure the broadcast error.
|
||||||
link for like/reply entries that opens the referenced post's thread. Pure view
|
Pure result state lives in `psf-memo-client/src/services/profile-page.js`;
|
||||||
model `psf-memo-client/src/services/notification-entry.js`; record
|
shared presentational `MuteResult`/`ExplorerTxLink` components; record
|
||||||
`docs/reviews/notification-entry-display-verification.json` (client). The
|
`docs/reviews/mute-broadcast-result-verification.json` (client). The specifier
|
||||||
specifier merged the branch and ran only the merged feature's acceptance test
|
merged the branch and ran only the merged feature's acceptance test (client
|
||||||
(client 16/16) as the independent check; soft Gherkin mutation was 36/11 (all
|
4/4) as the independent check; soft Gherkin mutation was 5/5 (all survivors
|
||||||
survivors intrinsic example-value case mutations; scenario 2 killed 4/4) and
|
intrinsic example-value case mutations) and language mutation 31/31 killed.
|
||||||
language mutation 20/20 killed. Run `swarmforge/scripts/state.sh` to refresh
|
|
||||||
these HEAD lines.
|
Note: `master` also contains two earlier human commits made outside the swarm
|
||||||
|
pipeline — `ea67979` (removed the redundant inline author name from feed posts)
|
||||||
|
and `8eab46d` (Notifications entry CSS/layout tweaks). Neither is covered by a
|
||||||
|
Gherkin spec yet; they are unspecified working-tree behavior to reconcile if a
|
||||||
|
future feature touches those surfaces.
|
||||||
|
|
||||||
Next action: **TBD** — ask the user for the next feature. Current direction is
|
Next action: **TBD** — ask the user for the next feature. Current direction is
|
||||||
front-end improvements to `psf-memo-client` (UI/UX polish, accessibility,
|
front-end improvements to `psf-memo-client` (UI/UX polish, accessibility,
|
||||||
performance, responsiveness, state handling, error surfacing). See
|
performance, responsiveness, state handling, error surfacing). See
|
||||||
`specs/feature-backlog.md`.
|
`specs/feature-backlog.md`. Run `swarmforge/scripts/state.sh` to refresh the
|
||||||
|
HEAD lines.
|
||||||
|
|||||||
@@ -35,6 +35,27 @@ _(none)_
|
|||||||
|
|
||||||
## Recently completed
|
## Recently completed
|
||||||
|
|
||||||
|
- **Mute broadcast result (2026-09-18):** the profile page now shows a
|
||||||
|
broadcast result modal after a mute (`0x6d16`) or unmute (`0x6d17`) is
|
||||||
|
broadcast. On success the modal shows a broadcast success message, the mute
|
||||||
|
transaction id, and a `bch.loping.net` block-explorer link that opens in a
|
||||||
|
new tab; on failure it shows the real broadcast error message. A successful
|
||||||
|
mute still flips the button to Unmute and a successful unmute flips it back
|
||||||
|
to Mute; a failed broadcast leaves the button unchanged. The modal stays open
|
||||||
|
until dismissed, and dismissing it closes the modal without navigating. Pure
|
||||||
|
result state lives in `ProfilePage` (`lastMuteResult`,
|
||||||
|
`getMuteBroadcastMessage`, `getMuteResultError`, `dismissMuteResult`); the
|
||||||
|
presentational `MuteResult` and shared `ExplorerTxLink` components are plain
|
||||||
|
`React.createElement`, shared with the Node acceptance adapter
|
||||||
|
(`acceptance/lib/render-mute-result.js`). Client-only. Spec:
|
||||||
|
`psf-memo-client/specs/mute-broadcast-result.feature`. Merged to `master` at
|
||||||
|
`eaaed8e5ea` (review commit `a7d9ca6299`; record
|
||||||
|
`docs/reviews/mute-broadcast-result-verification.json`; the later `eaaed8e`
|
||||||
|
commit is docs-only, so the record is valid for the merged tree). Independent
|
||||||
|
acceptance check: client 4/4. Soft Gherkin mutation 5/5 intrinsic survivors;
|
||||||
|
language mutation 31/31 killed. Architect summary:
|
||||||
|
`docs/reviews/mute-broadcast-result-summary.md`.
|
||||||
|
|
||||||
- **Notification entry display (2026-09-18):** each `/notifications` entry now
|
- **Notification entry display (2026-09-18):** each `/notifications` entry now
|
||||||
shows the actor's Memo display name and avatar instead of only the raw BCH
|
shows the actor's Memo display name and avatar instead of only the raw BCH
|
||||||
address, resolved client-side from the name and profile-picture records. The
|
address, resolved client-side from the name and profile-picture records. The
|
||||||
|
|||||||
Reference in New Issue
Block a user