35 Commits
Author SHA1 Message Date
jwinterm afd1c231db chore: privacy page and tsconfig updates 2026-08-07 10:29:12 -04:00
jwinterm c3740a91b2 docs: bring privacy + terms current with v0.3
- Privacy: add Nostr identity + name@smirk.cash, encrypted messaging,
  and IP-hashing sections; note the self-hostable backend (your data
  goes to that operator, not us). Correct the BTC/LTC description:
  addresses are queried against Electrum/Fulcrum servers, not
  mempool.space/litecoinspace.org.
- Terms: usernames/identity, reporting unlawful content, DMCA, and
  relay/messaging abuse terms for v0.3.
- smirk.d.ts: SmirkPaymentRequest.amount is a human decimal amount, not
  atomic units (matches the dapp protocol after the decimal-amount fix).
2026-07-19 16:47:02 -04:00
jwinterm 5ac1ff01cb feat(feed): route feed.smirk.cash subdomain root to /feed 2026-07-03 17:07:35 -04:00
jwinterm c6ca19dd25 feat(feed): drive curation from /capabilities.feed (operator knobs)
The feed now reads the backend's advertised feed config — show owner / premium
members / a featured npub allowlist, across the relay + optional extra relays —
and renders an owner badge. Falls back to a sensible default (the Smirk relay,
premium + owner) when a backend doesn't advertise a feed config yet, and shows
an "off" state when an operator disables it.
2026-07-03 16:58:56 -04:00
jwinterm 60e24e456e feat(feed): read-only Nostr feed at /feed + a "Join us" Nostr link
The Smirk square, served from relay.smirk.cash. Because the relay is
premium-post gated, the feed is self-curating — general notes (kind 1) come
only from premium members. v1 is read-only (subscribe + render); composing
arrives with the wallet's Nostr dapp-api scope. Adds nostr-tools and a Nostr
icon beside Telegram/Discord that links to the feed.
2026-07-03 07:41:57 -04:00
jwinterm d25d54c942 Legal: rewrite Terms + Privacy on the Such Software skeleton
Disclose the Trocador swap fee, PA governing law + class/jury-waiver dispute
terms, 18+/sanctions, Apple EULA rider. Replaces the old 'access is free, fees
later' clause. No MoonPay section (not integrated).
2026-07-02 15:19:45 -04:00
jwinterm fdacf56ce5 refactor: swap inline mirror for published @such-software/smirk-dapp-api
The runtime that installs window.smirk in v0.3.0+ iframe context
is now available as a published npm package, so smirk.cash can
import it directly instead of carrying a synced local copy. Same
behaviour, less maintenance burden.

- npm install @such-software/smirk-dapp-api@^0.3.0
- SmirkBridgeBootstrap imports installSmirkPageApi from the package
- Local mirror deleted (src/lib/smirk-iframe-bridge.ts)
2026-06-08 08:06:34 -04:00
jwinterm 60de8c8fe5 feat: install postMessage transport for v0.3.0+ Smirk wallet iframes
Adds a runtime that auto-detects parent-frame context and installs
window.smirk via postMessage, so smirk.cash works inside the
v0.3.0 Smirk desktop wallet's embedded browser the same way it
already works under the v0.2.x browser extension. Extension-injected
window.smirk takes precedence, so existing dapps and the v0.2.x
flow are unchanged.

Local mirror of @smirk/dapp-api's installSmirkPageApi pending
that package being published to npm; see the file header for the
sync contract.
2026-06-07 19:11:05 -04:00
jwinterm 35b5bc8cda Update privacy policy 2026-05-31 20:29:19 -04:00
jwinterm be48317caa fix: race condition on Connect with Smirk button + sync TS types
The extension's window.smirk injection runs as `<script type=module>`,
which browsers defer until after DOMContentLoaded. The previous
detection (sync check + once at +500ms) could race past that on
heavier Next.js pages, leaving the Connect button stuck greyed-out
even though the extension was installed and unlocked.

Three-layer fix in both `app/page.tsx` and `app/tip/[id]/TipPageClient.tsx`:

  1. Immediate sync check (fast path: extension already there).
  2. Listen for `smirk-ready` CustomEvent (extension v0.2.5+ dispatches it).
  3. Polling fallback at 100ms intervals up to 3s, for older
     extensions or any future browser quirk. Cheap; stops as soon as
     window.smirk appears.

`hasExtension` stays `null` (initial) until either we resolve `true`
or hit the 3s timeout and resolve `false` — so the install prompt
doesn't flash on first paint while polling is still in flight.

Also updated `types/smirk.d.ts` to current extension API surface:
asset-scoped `connect(assets?: SmirkAsset[])`, `getAddresses`,
`requestPayment`, and the `smirk-ready` WindowEventMap entry.
Per-asset return fields are nullable now since the user can approve
a subset of assets at connect time (cross-chain deanon mitigation).
2026-05-09 14:46:42 -04:00
jwinterm 9b9a2d2d7f fix chrome link and add OG 2026-04-10 11:00:21 -04:00
jwinterm daff4002ff docs: add MIT LICENSE file 2026-02-01 20:13:29 -05:00
jwinterm 33c371ef8b feat: add Telegram and Discord social links to homepage
Show "Join us" section with Telegram and Discord icons below the user count.
Icons turn yellow on hover, links open in new tabs.
2026-02-01 20:00:14 -05:00
jwinterm f277d428f7 feat: improve favorite login coin chart with colors and hover
- Update colors: BTC orange, LTC silver, XMR grey, WOW pink, GRIN yellow
- Add hover effects showing login counts and percentages
- Add total logins summary at bottom
- Only show section when there's data
2026-02-01 19:35:18 -05:00
jwinterm f8c689fd72 fix homepage layout 2026-02-01 14:20:18 -05:00
jwinterm b2dbbf121a fix: stats page 2026-02-01 13:53:14 -05:00
jwinterm 2fe5902628 Update docs 2026-02-01 13:20:23 -05:00
jwinterm 31be623856 Feat: add stats page 2026-02-01 12:53:29 -05:00
jwinterm f63bafbc48 feat: discord integration 2026-02-01 10:13:57 -05:00
jwinterm b95877ac9c add ToS to website 2026-02-01 09:13:00 -05:00
jwinterm d70d8f5745 add such.software link 2026-01-29 21:12:29 -05:00
jwinterm 98b08291c9 feat: add privacy policy page and download links 2026-01-27 15:46:39 -05:00
jwinterm 3c18a7eb14 fix: downgrade to Next.js 15.3.6 (patched, no Turbopack bug) 2026-01-27 15:26:02 -05:00
jwinterm 297ad6bc8d fix: unconfirmed tips 2026-01-27 14:50:59 -05:00
jwinterm 5ec7c83533 fix: tip popout and coutner 2026-01-27 13:00:41 -05:00
jwinterm b0bce7a18f fix: incomplete public tip links 2026-01-27 11:16:21 -05:00
jwinterm 8581d3ad95 feat: add public tip claiming UI
- Extract fragment key from URL
- Check confirmations before allowing claim
- Add claim button with loading/error states
- Update SmirkAPI types for claimPublicTip
2026-01-27 10:50:42 -05:00
jwinterm 570b48b464 feat: add username management and user counter
- Add username setting UI to settings page
- Add user counter on home page
- Add API functions for username/count endpoints
2026-01-27 10:34:41 -05:00
jwinterm fa1b3230d1 docs: update TODO and tips page for alpha
- Simplify TODO with completed items
- Tips page shows confirmation status
2026-01-27 09:31:55 -05:00
jwinterm f02cbd8a4c add tipping page 2026-01-26 17:08:12 -05:00
jwinterm 7cf90c08db feat: add settings page with Telegram account linking 2026-01-26 11:38:43 -05:00
jwinterm ee88e807db feat: add branding assets, fonts, env example 2026-01-25 12:59:26 -05:00
jwinterm e7b459f5bd feat: single-asset auth, UI improvements
- Auth flow now uses single signature from user's chosen coin
- Update SmirkSignResult types to match extension API
- Add Creepster font for branding
- Better error messages from API responses
- Update docs to reflect single-asset auth is working
2026-01-25 12:40:57 -05:00
jwinterm 9ccc962514 style: use creepy text logo with stronger glow 2026-01-25 09:18:19 -05:00
jwinterm 20a27d3fd2 feat: initialize smirk-website with connect flow
- Next.js 16 with TypeScript and Tailwind CSS
- Single-asset authentication (user picks favorite coin to sign)
- Logo with glow animation
- Coin picker UI with all 5 assets
- API client for backend auth endpoints
- TypeScript types for window.smirk extension API
2026-01-25 08:18:14 -05:00