feat(socials): post to Bluesky and Nostr from the pit - #317
Merged
Conversation
ThreatCrush Security Scan92 finding(s) HIGH/CRITICAL: 50 | MEDIUM: 42
…and 42 more. Full results in the Security tab. Snippets are redacted; ThreatCrush never prints matched credential material. |
apps/pwa is not a pnpm workspace package, so the root `pnpm install` never installs its dependencies and CI's root `node --test` cannot resolve express. The composer test imported the route module statically, so that resolution failure crashed the file instead of skipping it. Probe for express with createRequire and defer the route import, matching the guard the other 38 PWA tests already use.
Contributor
Author
|
Follow-up commit |
Merged
ralyodio
added a commit
that referenced
this pull request
Aug 6, 2026
Bump to v0.26.0, releasing two features that have been sitting on main unreleased: posting to Bluesky and Nostr from the pit (#317), and equity research via `moshcode ticker` / `/ticker` backed by advis0r.com, shipped alongside moshcode's first Claude Code plugin marketplace (#318). Minor rather than patch: both add commands, neither changes an existing one. This release is also what makes the `ticker` plugin's primary path work. install.sh serves the latest release tarball, not main, so every machine running the installed binary reports `unknown command "ticker"` until a release carries it — the plugin's slash commands fall back to curl in the meantime, which works but skips the rendering the verb exists to do. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Re-lands the socials commit that was preserved on
feat/alpaca-tradewhen #295 was closed. That PR bundled three unrelated changes; its Alpaca patch had already merged via #291, and the third-level DNS commit has since re-landed as #301. This is the remaining piece, split into its own focused PR as planned.Cherry-picked verbatim from
010b8f0onto currentmain— no conflicts, no changes to the original patch.What it adds
/socials— prints the roster: bluesky (aliasbsky) and nostr, with descriptions./post <social> "message"— builds a composer URL and opens the browser.Posting is always an explicit browser confirmation. The CLI only hands over a draft; account authorization and the final publish stay in the user's browser.
Bluesky
Hands off to the official
bsky.app/intent/composeintent.Nostr
Hands off to a composer page served at
/socials/nostr. The draft rides in the URL fragment, so it never reaches app.moshcode.sh access logs or Referer headers — the page reads it entirely client-side.The page uses
window.nostr.js(pinned to 0.5.0) as the NIP-07/NIP-46 signer bridge, builds a kind-1 event, and publishes to any relay that accepts it:relay.damus.io,nos.lol,relay.primal.net.MOSHCODE_APIis honored, so a self-hosted pit points at its own composer.Tests
8 new tests across
test/socials.test.mjsandapps/pwa/test/socials.test.mjscovering the roster, the Bluesky intent URL, fragment-only Nostr drafts, self-hosted origin override, browser-unavailable fallback, missing-message and unknown-network errors, the pinned signer bridge, kind-1 event creation, and relay fan-out.Full suite on this branch: 1455 tests, 1452 pass, 0 fail, 3 skipped.
🤖 Generated with Claude Code