Commit Graph
100 Commits
Author SHA1 Message Date
Chris Troutner 6b7a7e2b86 Reduce CRAP in like/tip slice and add property/coverage tests
- Extract helpers in memo-like to bring all CRAP scores to 6 or below.
- Consolidate duplicated rejection assertions in memo-like and like-tip-page tests.
- Add hex unit tests to close a coverage gap.
- Add property tests for hex round-trip, like validation, and spendable sum.

By refactorer.
2026-08-26 06:23:23 -07:00
Chris Troutner dd0535d133 Implement Like / Tip a Memo
Adds the Memo like action (0x6d04) with optional author tip, a like/tip
page controller, heart icon + modal UI, and acceptance handlers for
specs/like-tip-memo.feature.

By coder.
2026-08-26 06:14:01 -07:00
Chris Troutner eb9aa293ee Specify Like / Tip a Memo
By specifier.
2026-08-26 06:05:46 -07:00
Chris Troutner 401075cda6 Adding .env.development 2026-08-26 05:37:22 -07:00
Chris Troutner 61536d025f Merge pull request #6 from Permissionless-Software-Foundation/reply
Reply to posts
2026-08-26 05:35:52 -07:00
Chris Troutner 835e8594d7 Feed the authenticated wallet into the reply thread modal
Pass appData to RecentPosts on the / and /posts/recent routes so the
post thread modal's reply form receives the authenticated web wallet.
Fixes 'Failed to broadcast: Memo reply requires a wallet.'

By specifier.
2026-08-26 05:26:11 -07:00
Chris Troutner 941ffeebda Add architectural review for reply-wallet-fix
Review the reply-wallet regression spec (scenario 8): wallet-backed reply is
broadcast from the feed thread modal. Implementation already satisfies the
scenario; no source fixes needed. Refresh mutation and acceptance mutation
manifests from the verification runs.

By architect.
2026-08-26 05:21:09 -07:00
Chris Troutner 156075bb2d Add reply wallet connectivity regression spec
Fix: a reply with the authenticated wallet is broadcast from the feed
thread modal (no missing-wallet error).

By specifier.
2026-08-26 05:14:34 -07:00
Chris Troutner 9ce995838a Merge pull request #5 from Permissionless-Software-Foundation/display-name
Display name & Reply prototype
2026-08-26 04:58:49 -07:00
Chris Troutner 9f61e4c032 Add architectural review for reply-thread-fix
Review the reply-thread work (specifier scenarios, coder wiring, refactorer
optimistic-reply extraction). No source fixes needed. Refresh mutation and
acceptance mutation manifests from the verification runs.

By architect.
2026-08-26 04:44:14 -07:00
Chris Troutner de24180c4d Extract optimistic reply shaping into testable module
Move the optimistic reply object construction out of the ReplyThreadForm
React component into a testable service module with unit tests, keeping
the component a thin UI adapter. Behavior is preserved; all unit,
property, and acceptance tests pass.

By refactorer.
2026-08-26 04:40:45 -07:00
Chris Troutner 6e8dcaf783 Wire reply form into thread modal and make comment icon always clickable
- Make PostReplyCount clickable whenever an onClick handler is provided,
  so posts with zero replies still open the thread modal.
- Add ReplyThreadForm inside PostThreadModal with a 184-byte counter and
  optimistic reply rendering.
- Pass wallet/profiles through RecentPosts, Profile, and PostThreadModal.
- Add acceptance handlers for the new reply-thread UI scenarios.
- Extend PostThreadModal CSS for the reply form.

By coder.
2026-08-26 04:38:11 -07:00
Chris Troutner ab84389fdf Specify reply thread opens with zero replies and shows reply form
By specifier.
2026-08-26 04:32:35 -07:00
Chris Troutner 3bd2c4903e Mark Reply to a Memo complete in backlog and specifier prompt
By specifier.
2026-08-25 21:26:43 -07:00
Chris Troutner 93e96e745b Add architectural review for reply-memo
Review the reply-memo feature (specifier spec, coder implementation,
refactorer test extraction). Kill two mutation survivors by adding tests
for the hexToBytes length check and the reply page successPath wiring.
Refresh mutation and acceptance mutation manifests from verification runs.

By architect.
2026-08-25 21:23:19 -07:00
Chris Troutner c0e4eba4f9 Merge branch 'swarmforge-refactorer' into swarmforge-architect 2026-08-25 21:15:23 -07:00
Chris Troutner b4508e8909 Reduce DRY duplication in reply-memo tests
Refactor the coder's new memo-reply and reply-thread-page tests to use
the shared test helpers (fake wallet, MemoAction tests, page-controller
tests, page submit tests, page build wiring). Extend the memo-action and
page-build helpers to support the reply slice's extra parent-txid
argument and byte-based multi-byte tests. Behavior is preserved; all
unit, property, and acceptance tests pass.

By refactorer.
2026-08-25 21:15:07 -07:00
Chris Troutner 102997b620 Merge commit 'd33fda88ba' into swarmforge-refactorer 2026-08-25 21:10:20 -07:00
Chris Troutner d33fda88ba Implement Reply to a Memo behavior slice and acceptance handlers
- Add src/services/memo-reply.js for 0x6d03 reply broadcast with parent txid payload.
- Add src/services/reply-thread-page.js as the page controller for the reply form.
- Add unit tests for both modules.
- Extend acceptance/lib/handlers.js with reply thread steps.
- Skip navigation in PageController when successPath is unset.

By coder.
2026-08-25 21:09:37 -07:00
Chris Troutner 8294b4d192 Add Reply to a Memo Gherkin spec
By specifier.
2026-08-25 21:05:15 -07:00
Chris Troutner f81f7564f4 capturing notes for specifier 2026-08-25 20:59:32 -07:00
Chris Troutner 916dab4c75 Add architectural review for reduce-test-dry-duplication
Review the refactorer's test-helper extraction (test-only, no source
changes). No structural fixes needed. Refresh mutation and acceptance
mutation manifests from the verification runs.

By architect.
2026-08-25 20:36:24 -07:00
Chris Troutner 0159119921 Reduce DRY duplication in unit and property tests
Extract shared test helpers for the Memo post and Set Name behavior
slices: fake wallet/profiles, MemoAction tests, page-controller tests,
page build wiring, and shared property-test invariants. Behavior is
preserved; all unit, property, and acceptance tests pass.

By refactorer.
2026-08-25 20:30:24 -07:00
Chris Troutner 230618d2a0 Fix Set Name Buffer reference for browser
Replace Node-only Buffer.byteLength with a TextEncoder-based UTF-8 byte
length helper so the Set Name page and byte counter work in the browser.

By specifier.
2026-08-25 20:17:10 -07:00
Chris Troutner 732248aee9 Mark Set Name complete in backlog and specifier prompt
By specifier.
2026-08-25 20:09:55 -07:00
Chris Troutner 9caff9c4c3 Remove memo action constructor duplication and persist mutation state
Move per-action config into a static config object on MemoPost and
MemoSetName and have the MemoAction base constructor read it, eliminating
the DRY-flagged duplicate constructor pattern. Commit the differential and
acceptance mutation manifests written by the approved tools during the
architect verification pass for the set-name feature.

By architect.
2026-08-25 20:01:43 -07:00
Chris Troutner d79b9f04bd Refactor memo actions and page controllers to share base classes
Extract MemoAction and PageController base classes to remove structural
duplication between the memo post/set-name actions and the new post/set-name
page controllers. Add property tests for the set-name byte counter and
validation invariants. Refresh mutation manifests for the refactored files.

By refactorer.
2026-08-25 19:55:20 -07:00
Chris Troutner bd2eac54cf Implement Set Name feature (0x6d01)
- Add MemoSetName service with 77-byte UTF-8 validation and broadcast.
- Add SetNamePage controller with byte counter and navigation to /account.
- Add AccountPage controller showing stored name and Set Name button.
- Add Profiles session store to share the new name across pages.
- Add React views /memo/set-name and /account, plus nav link.
- Update acceptance handlers for set-name scenarios and fix fake wallet
  sendOpReturn signature to match public minimal-slp-wallet API.
- Update existing post memo tests to match the corrected wallet API.

By coder.
2026-08-25 19:50:27 -07:00
Chris Troutner 359cc20fd6 Merge commit 'bb9d00a869' into swarmforge-coder 2026-08-25 19:41:46 -07:00
Chris Troutner bb9d00a869 Add Set Name Gherkin spec
By specifier.
2026-08-25 19:41:25 -07:00
Chris Troutner 094dbf6d3d Using Kimi K2.7-code for coder 2026-08-25 18:59:01 -07:00
Chris Troutner 69a73142d0 Merge pull request #4 from Permissionless-Software-Foundation/feat1
Post a memo message
2026-08-25 18:56:17 -07:00
Chris Troutner aaa5b09425 Creating prompt for next session 2026-08-25 18:15:47 -07:00
Chris Troutner 695292ccd2 Fix Memo post broadcast to use wallet public sendOpReturn signature
By specifier.
2026-08-25 18:03:09 -07:00
Chris Troutner 122524ca18 Merge New Post Page broadcast-error surfacing fix
By specifier.
2026-08-25 17:54:11 -07:00
Chris Troutner 8965988e03 Merge architect new-post-errors coverage
By coder.
2026-08-25 17:41:02 -07:00
Chris Troutner 9dd9bf9274 Cover empty-message broadcast fallback and persist mutation state
Add a unit test for the broadcast-error message fallback to kill the last
new-post mutant, and commit the differential and acceptance mutation
manifests written by the approved tools during the architect verification
pass for the new-post-errors feature.

By architect.
2026-08-25 17:40:39 -07:00
Chris Troutner 66a684923c Refactor new-post failure handling and add property coverage
- Extract _handleSubmitFailure helper to lower submit() complexity
- Refresh mutation manifest via approved tool
- Add property test for broadcast-failure surfacing/no-navigation

By refactorer.
2026-08-25 17:38:44 -07:00
Chris Troutner e7933fe9fa Merge commit '164bdb3cba' into swarmforge-refactorer 2026-08-25 17:33:53 -07:00
Chris Troutner 164bdb3cba Surface broadcast errors on the new post page
Implements New Post Page scenario 6 (specs/memo-new.feature): when a memo
broadcast fails, the app surfaces the real wallet error and the user stays
on /posts/new instead of navigating to the feed.

- src/services/new-post.js: distinguish local validation errors from
  broadcast failures; expose the real error message via broadcastError.
- src/components/app-body/new-post/index.js: render the broadcast error.
- acceptance/lib/handlers.js: support wallet-fail, attempts-to-broadcast,
  error-containing, and remain-on-path steps.
- Unit tests for broadcast-failure surfacing.

By coder.
2026-08-25 17:33:28 -07:00
Chris Troutner 4e0f40c22d Merge specifier new-post-errors spec
By coder.
2026-08-25 17:30:40 -07:00
Chris Troutner a12575114c Add New Post Page broadcast-error surfacing spec
By specifier.
2026-08-25 17:30:22 -07:00
Chris Troutner 23c231ea1e Merge completed Post a Memo and New Post Page work
By specifier.
2026-08-25 17:20:21 -07:00
Chris Troutner 3169425171 Fix Promise param name in posting-state test
Rename new Promise param to satisfy standard promise/param-names rule.

By refactorer.
2026-08-25 17:13:21 -07:00
Chris Troutner 84f5fe7931 Fix standard lint in posting-state test
Rename a Promise constructor param to satisfy standard's promise/param-names.

By coder.
2026-08-25 17:13:16 -07:00
Chris Troutner 9e7b66c608 Merge architect new-post-page coverage
By coder.
2026-08-25 17:09:42 -07:00
Chris Troutner 009fba71fd Add posting-state coverage and persist mutation state
Cover the new-post posting flag (initial idle, in-flight true, settled
false) to kill the four surviving mutants, and commit the differential and
acceptance mutation manifests written by the approved tools during the
architect verification pass for the new-post-page feature.

By architect.
2026-08-25 17:09:14 -07:00
Chris Troutner d57975c466 Add property tests for memo post and new post invariants
- Add a small seeded property-testing harness (node:test based)
- Property-test validation classification, character-counter
  conservation, setInput round-trip, and menu-link idempotence
- Expose as explicit test:property command, separate from unit tests

By refactorer.
2026-08-25 17:06:00 -07:00
Chris Troutner 05f393c03f Implement New Post Page
Adds a New Post page for composing and broadcasting Memo posts:
- src/services/new-post.js: testable controller (input, character counter
  counting down from the memo limit, validation/length errors, navigation to
  the recent feed after a successful post).
- src/components/app-body/new-post: React view with a message textarea, post
  button, and remaining-character counter.
- Route /posts/new and a navigation menu link.
- Extend acceptance step handlers to cover both specs/post-memo.feature and
  specs/memo-new.feature wording; add unit tests for the controller.
- Drop redundant 'use strict' in compiled modules to fix the CI build warning.

By coder.
2026-08-25 17:00:27 -07:00
Chris Troutner 4fa92d16f6 Merge specifier new-post-page spec
By coder.
2026-08-25 16:51:26 -07:00
Chris Troutner 93850340e1 Add New Post Page Gherkin spec
By specifier.
2026-08-25 16:50:39 -07:00
Chris Troutner 54b356cd8b Merge architect post-memo runner adapter
By coder.
2026-08-25 16:24:20 -07:00
Chris Troutner c52ad12d23 Add acceptance runner adapter and persist mutation state
Add the persistent runner adapter for gherkin-mutator and commit the
differential/acceptance mutation manifests written by the approved tools
during the architect verification pass for the post-memo feature.

By architect.
2026-08-25 16:23:38 -07:00
Chris Troutner 8e2693ad08 Refactor memo-post for lower complexity
- Extract _throwIfInvalid and _reflectPost helpers from post()
- Consolidate duplicate validation tests into one parameterized test

By refactorer.
2026-08-25 16:17:23 -07:00
Chris Troutner 3b15315ca6 Merge architect reduce-dry-duplication
By coder.
2026-08-25 16:14:57 -07:00
Chris Troutner 64a7f78032 Merge commit '514298bf96' into swarmforge-refactorer 2026-08-25 16:13:38 -07:00
Chris Troutner 514298bf96 Implement Post a Memo behavior with acceptance pipeline
Implements the post-memo behavior slice per specs/post-memo.feature:
- src/services/memo-post.js: compose, validate (empty/length), and broadcast
  a Memo post OP_RETURN (0x6d02) via the minimal-slp-wallet adapter surface.
- Stands up the Babashka APS acceptance pipeline (entrypoint generator,
  runtime, regex step handlers, convenience runner).
- Adds focused unit tests for the memo behavior.

By coder.
2026-08-25 16:13:05 -07:00
Chris Troutner aaa366a11f Relocate truncate helpers to shared util
Move general-purpose truncateAddr/truncateTxid out of the feed-specific
post-display module into src/util so the recent-profiles view depends on
the shared utility layer rather than a sibling feature module.

By architect.
2026-08-25 16:08:38 -07:00
Chris Troutner c9556be67a Merge specifier post-memo spec
By coder.
2026-08-25 16:05:49 -07:00
Chris Troutner d071b21e9b Add Post a Memo Gherkin spec and feature backlog
By specifier.
2026-08-25 16:01:43 -07:00
Chris Troutner eed9d70f6f Reduce DRY duplication in services and components
- Consolidate memo-db GET helpers into getRecent and getLevelResource
- Share pasteFromClipboard via AppUtil
- Share truncate helpers from post-display
- Extract shared placeholder view
- Generalize wallet-summary blur toggles

By refactorer.
2026-08-25 15:47:27 -07:00
Chris Troutner d886ed2c8d Adding swarmforge CLIs for testing 2026-08-25 15:35:45 -07:00
Chris Troutner a8230982a4 Integrating swarm-forge into project 2026-08-25 14:50:21 -07:00
Chris Troutner f6e987b135 slight tweek to swarm forge 2026-08-25 14:20:53 -07:00
Chris Troutner 0b5a1028b8 Adding swarm-forge to repo 2026-08-25 13:29:34 -07:00
Chris Troutner f5aa5b00ac Merge pull request #3 from Permissionless-Software-Foundation/devops-unstable
Making recent posts the landing page
2026-07-15 12:55:00 -07:00
Chris Troutner 01df736d5c Merge pull request #2 from Permissionless-Software-Foundation/unstable
Update social feed and navbar styling
2026-07-15 12:35:25 -07:00
Chris Troutner f94c87e9dd Merge branch 'master' of https://github.com/Permissionless-Software-Foundation/psf-memo-client 2026-07-15 10:05:36 -07:00
Chris Troutner 1170dcb066 Adding env var to change back end 2026-07-15 10:05:11 -07:00
Chris Troutner 2b9a871c00 Merge pull request #1 from Permissionless-Software-Foundation/unstable
UI Development
2026-07-15 09:17:32 -07:00
Chris Troutner 46c03a71b5 checking in latest changes 2026-07-14 19:05:02 -07:00
Chris Troutner 2e8c3b7ea8 Showing names and avatars in reply modal 2026-06-06 07:40:33 -07:00
Chris Troutner 0a3212e6ca Showing replies in modal 2026-06-06 07:33:13 -07:00
Chris Troutner d5d58f816e Adding pagination controls to feed page 2026-06-06 07:16:56 -07:00
Chris Troutner 1b935e0719 Adding icon to represent replies to a post 2026-06-06 07:01:09 -07:00
Chris Troutner de25decdf1 Adding link to profile in post list 2026-06-04 08:40:18 -07:00
Chris Troutner 2be6268bbc Created profile page 2026-06-03 15:13:12 -07:00
Chris Troutner dbc0c298bd Adding Posts page 2026-06-03 12:24:27 -07:00
Chris Troutner a32ae73ba4 Added profiles view 2026-06-03 11:35:29 -07:00
Chris Troutner 9726f9b33c Customizing README & package.json 2026-06-03 11:07:55 -07:00
Chris Troutner 778cfa13be Merge remote-tracking branch 'upstream/master' 2026-06-03 11:04:55 -07:00
Chris Troutner 26eca8f576 forked from bch-wallet-web3-spa 2026-06-03 11:02:41 -07:00
Chris Troutner ae4916e8df Merge pull request #18 from Permissionless-Software-Foundation/ct-unstable
Ct unstable
2025-10-19 14:48:30 -07:00
Chris Troutner fe108caf33 Merge branch 'master' into ct-unstable 2025-10-19 14:47:09 -07:00
Chris Troutner 131a41fcb4 Merge pull request #17 from Permissionless-Software-Foundation/dh-down-servers
fix(server): Web Wallet needs to handle down servers
2025-10-19 14:41:43 -07:00
Chris Troutner b29ff5fb1f Merge branch 'master' into ct-unstable 2025-10-14 07:17:47 -07:00
Chris Troutner 9e576cbe83 Merge pull request #16 from Permissionless-Software-Foundation/dh-load-times
fix(load): Load BCH & SLP info in the background
2025-10-14 07:13:20 -07:00
Chris Troutner dc6e6d956c Merge branch 'master' into ct-unstable 2025-09-20 09:37:13 -07:00
Chris Troutner 612f2edf70 Merge pull request #15 from Permissionless-Software-Foundation/dh-user-data
feat(userdata): Added user data page functionality
2025-09-20 07:24:23 -07:00
Chris Troutner 360be9f875 Adding LLM file 2025-06-19 17:22:28 -07:00
Chris Troutner ab02a66058 Merge pull request #14 from Permissionless-Software-Foundation/ct-unstable
Adding Configuration page
2025-04-10 15:11:26 -07:00
Chris Troutner 37e7061208 fix(footer): Updating nav and footer 2025-04-10 15:10:11 -07:00
Chris Troutner 9bf61f5913 fix(react-bootstrap-web3-spa): Syncing with upstream repo 2025-04-10 15:06:55 -07:00
Chris Troutner 754f10a61b Merge pull request #37 from Permissionless-Software-Foundation/dh-config-view
fear(config): Changed server selection view to configuration view
2025-04-10 14:18:10 -07:00
Chris Troutner fcd3da20f6 Edits to configuration view 2025-04-10 14:16:47 -07:00
Chris Troutner 634ec7836c Merge pull request #13 from Permissionless-Software-Foundation/ct-unstable
Syncing with upstream react-boostrap-web3-spa
2025-04-04 07:55:37 -07:00
Chris Troutner 688ea3fe71 Syncing with upstream react-bootstrap-web3-spa 2025-04-04 07:50:10 -07:00
Chris Troutner 91952761f9 Merge pull request #36 from Permissionless-Software-Foundation/ct-unstable
Adding semantic release
2025-04-04 07:37:01 -07:00
Chris Troutner a22c29cbce Fixing test script so that it exits 2025-04-04 07:29:57 -07:00
Chris Troutner 25ba833ab9 fix(semantic-release): Adding husky and semantic release as dev dependencies 2025-04-04 07:03:37 -07:00