Skip to content
dmnycPublic

About

A classy Nostr keystore and signer that lives in your browser sidebar ๐Ÿธ

Resources

Stars

12 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

1,125 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Sidecar ๐Ÿธ

A Classy Nostr Signer.

A NIP-07 Nostr signing extension that lives in your browser's side panel (or Firefox sidebar). Sidecar holds your keys locally โ€” encrypted behind a PIN โ€” and provides window.nostr to the web apps you use, so you can sign in and sign events across Nostr clients without pasting your nsec anywhere. It also has a built-in Lightning wallet (Nostr Wallet Connect), a composer for posting notes directly from the panel, and a livestream player that stays up above whatever else you are doing.

Established at Bitcoin block 954179.

Website ยท Chrome Web Store ยท Firefox Add-ons ยท Privacy Policy ยท Changelog

Sidecar

"Best Nostr Extension ever! Every Nostr app should take notes on this onboarding flow. This makes me want to use Nostr."

โ€” Car, Co-Founder of PlebLab

"Best UX for a browser key signer so far. And the nsec is encrypted using PBKDF2/AES-GCM, then stored in chrome.storage.local, so other potentially malicious add-ons can't get to it. In my broad testing across multiple browser key signers last year, only Alby did this, though I don't know if others have added it since. Sidecar also has a better UX than Alby. [...] I'm thinking about replacing Alby with Sidecar in NoorNote's onboarding wizard because Sidecar is better for beginners right now."

โ€” 77elements, creator of NoorNote

"I think Sidecar is the best full-fledged Nostr signer/wallet (browser extension) I've used so far! It covers all my needs [...] If you need a Nostr signer that's a browser extension, I highly recommend Sidecar."

โ€” Hollywood stuntman & make-up artist, on Nostr

"Just installed it. Work of art."

โ€” Gustavo, on Nostr

"sidecar.top is so badass! Even my multi-agent headless-chromium powerhouse of playwrights can use it with classy ease."

โ€” cloud fodder, relay.tools

"I just upgraded my browser signing extension to #Sidecar - you should too! So many excellent features."

โ€” Bfgreen, on Nostr

"Very elegantly designed signer and works seamlessly. Account switching is a great feature. This will be my go to signer from now!"

โ€” Avi Burra, on Firefox Add-ons

"It's a browser extension thatโ€ฆkind of makes Nostr cooler."

โ€” Fundamentals, creator of Magic Internet Math

Features

  • Multiple accounts โ€” store as many nsecs as you like, drag to reorder, switch the active one in a click. Importing shows a profile preview (name + avatar) so you can confirm the right key before saving. Generating a new key runs a quick guided setup (name, photo, bio). Reveal a key behind your PIN โ€” with a QR for quick sign-in on mobile clients.
  • PIN-protected โ€” every private key is encrypted at rest (PBKDF2 โ†’ AES-GCM, WebCrypto) under a PIN of at least 8 characters, with a live strength and match check when you set it. Nothing is stored in plaintext, and the keystore re-locks itself after 5 minutes to 24 hours of inactivity (15 minutes unless you choose otherwise) or, with When browser closes, only when the browser does, which still asks for your PIN once per browser session. A paste guard blocks dropping an nsec anywhere except the import field.
  • In-extension signing โ€” implements the full NIP-07 surface: getPublicKey, signEvent, nip04/nip44 encrypt & decrypt, and getRelays.
  • Per-site permissions โ€” approve or reject each site, per method, with a clear prompt that previews what you're signing (human-readable event-kind labels, plus a heads-up on unusual or unrecognized kinds). Relay sign-in (NIP-42) is answered for your own relays, for reading as well as posting, so relays that gate reads stop returning nothing. A burst of requests queues visibly โ€” you can see how many are waiting and clear the whole backlog in one tap โ€” and nothing is silently lost if the panel closes or the extension restarts. The prompt appears on the browser window you're actually using, and repetitive background work โ€” app-settings syncs, loading a DM inbox โ€” is handled without a prompt for each, while notes, reactions, and DMs still confirm.
  • Per-site account binding & wrong-account guard โ€” each site stays pinned to the account it logged in with (no NIP-07 desync), and you can move a site to another account from Connected Sites. When a site is signed in with more than one of your accounts โ€” as multi-login clients like Jumble, YakiHonne, and Primal allow โ€” every content sign confirms who's posting, so a client's own account switcher can't silently sign as the wrong key. After you switch the active account, Sidecar offers to reload the open client so the change takes effect there.
  • Identity from your profile โ€” account names and avatars are imported from your kind 0 metadata; view and edit your profile, see your following count, and publish kind 0. If your profile's lightning address doesn't match your connected wallet, Sidecar offers a one-tap sync.
  • Outbox relays (NIP-65) โ€” view, edit, and publish your relay list (kind:10002) with per-relay read/write markers, right from your profile. Each relay carries its own icon (from its NIP-11 document), and an on-demand health check reports whether it answers, gates on payment or login, or holds none of your notes.
  • Key backup โ€” back up a single account's key as an nsec or a password-encrypted NIP-49 ncryptsec, each revealed behind your PIN with an auto-hiding QR.
  • Vault backup โ€” export every account and its wallet connection into one password-encrypted file, and restore it on another device (separate from a single account's key backup).
  • Data recovery โ€” if a buggy client wipes or shrinks your follows, mutes, bookmarks, profile, or relay lists, scan your relay history for the older versions and restore the one you pick, on your click, with your signer. Powered by Lazarus.
  • Note composer โ€” post kind:1 notes directly from the panel with a send countdown you can review (the full note renders) and cancel. Drafts autosave per account, so you can close the composer and resume โ€” or start fresh โ€” later. Features include:
    • @mention autocomplete โ€” type @ to search your follows and all of Nostr (global search via Nostr Archives), so you can tag anyone; selecting inserts an atomic pill that serializes to nostr:npub1โ€ฆ and adds a p tag automatically.
    • Nostr event embeds โ€” paste a note1, nevent1, or naddr1 entity and the preview renders a fetched embed card (author, timestamp, content excerpt).
    • Link previews โ€” plain URLs show an OG meta card (title, description, thumbnail) fetched through the extension with no third-party service.
    • Media upload โ€” attach images and video; uploads go to your own Blossom servers (from your kind:10063 list) when available, falling back to nostr.build.
    • GIFs โ€” search nostr.build's GIF index from the composer and attach one with a tap. The GIFs are already hosted on nostr.build, so nothing is uploaded.
    • Polls (NIP-88): post a poll instead of a note. The text you write becomes the question, and the block below it holds the choices, whether more than one can be picked, and how long it runs. A day by default, from an hour to thirty days, or no end date at all. The tally reads back in the panel rather than sending you elsewhere: every option with its count and its share, who picked which, and the winner once it closes.
    • Proof of work (NIP-13): optionally mine a nonce into what you post. Off by default and set per account, at 16, 18, 20 or 22 bits, each rung four times the work of the one below it. Mining runs off the panel's thread so nothing freezes, says how long it has been going and how close it has come, and can be stopped. A stopped or failed post goes back to being a draft with its text intact.
    • Client tag, your call โ€” posts carry a client tag attributing them to Sidecar; turn it off in Settings to post untagged.
  • Highlights (NIP-84): select text on any web page, right-click, and choose Highlight with Sidecar to publish the passage as a highlight sourced to that page, with an optional comment. The paragraph around it is shown before it posts, and can be left out.
  • Bookmarks (NIP-51): bookmark a note from its notification, and read the list back from a button in the top bar. Saved to the flat kind:10003 list your other clients already read, and the list is read before it is written, so a replaceable event is never rebuilt from silence.
  • Status (NIP-38): set a short line about what you are doing, published as kind:30315 and shown beside your name by clients that read it. It appears as a balloon over your banner on the Profile tab, which is also where you edit it. Clearing publishes an empty status rather than a deletion request, since an empty one overwrites the old text everywhere the old text reached.
  • Notifications โ€” a bell in the header shows replies, mentions, reposts, reactions, and zaps for the active account โ€” each with the sender's name, a content preview, and a tap-through that opens the note in your preferred client. Replies and comments can be answered without leaving the panel: the composer opens with what you're answering held above the editor, through the preview and the review countdown both, and follows NIP-10 for notes and NIP-22 for page comments. Each notification also carries a row of actions: reply, repost or quote, react with any emoji, zap, and bookmark. A web-of-trust sort puts your follows (and anyone ten of them follow) first, gathering everyone else into a counted group at the bottom rather than hiding them โ€” a denylist can't outrun key rotation, but an allowlist that hides is how you miss the one reply that mattered. Muted users (public and private mute lists) are filtered out, and you can add to those lists from here: a notification's โ‹ฎ menu can mute the person, the note and its replies, or the whole thread. A second tap confirms, the row leaves at once, and the mute goes into the encrypted part of your kind:10000 list, so nobody reading the list can see who you muted.
  • Follow, unfollow and mute โ€” every search result, and the profile card it opens, has follow and mute buttons drawn as icons: following takes one tap and the icon changes at once, muting and unmuting take a second tap. A follow or unfollow changes only that one entry of your kind:3 list, relay hints and petnames included, and nothing is written if the list can't be read first. Unmuting removes a person wherever they are on your list, including mutes made in other clients. The profile card is one row of icons under the name (follow, mute, a bolt for Zap, a link out to your client), with the lightning address above the bio.
  • Live video (NIP-53) โ€” watch livestreams and replays in a player above the panel. Browse Live, Upcoming and Past streams from public relays, in a list that loads more as you scroll to its end, or paste an HTTPS video address. Playback keeps going while you move around Sidecar, lock it, or approve a signature, and closing the player stops it. Chat with the host (kind:1311), with replies, mentions and reactions signed by your account, and zap the stream or any comment from your own wallet. The zap total counts only receipts it can verify against the host's own Lightning provider, and it reads more relays as it goes, so it can grow for a few seconds after it appears and carries a plus only when it is hard to pin down. The player also shows viewers, top zappers and how long the stream has run, and a stream you save as a bookmark is backed up encrypted to your own key and restores on another browser. Nothing is requested until you open the list or play a stream, video comes from the address in the stream's announcement, a Settings switch turns the whole feature off, and playback uses a bundled, unmodified copy of hls.js, so no remote code is loaded.
  • Lightning wallet (NWC) โ€” connect any self-custody Lightning wallet over Nostr Wallet Connect. Send (BOLT11 or lightning address via LNURL-pay), receive (invoice or your lightning address, with a QR โ€” also surfaced as a card on the wallet page), view live balance (auto-updating via NIP-47 notifications) and paginated history that adds a payment as it arrives, and back up the connection to your relays โ€” or export it (PIN-gated, with a QR) to move it to another app. New to Lightning? Built-in wallet suggestions point you to NWC-capable options. Sidecar never holds your funds.
  • WebLN provider โ€” web apps can pay and make invoices through your connected wallet (window.webln), gated by an approval prompt with an optional per-site daily budget you can edit or revoke any time.
  • Podcasting 2.0 boosts โ€” boost a show from its web player, message and all. A boost is a keysend rather than an invoice, carrying its boostagram in a TLV record, and it is several payments rather than one: a value split pays each recipient separately. Sidecar asks for each of them unless you give the site a spending limit, and then one approval covers the whole split. The approval card names the show and quotes the message instead of showing 66 characters of node key, and your history says which show a payment went to rather than a bare "Sent". Offered only when your connected wallet actually supports keysend, so a site that checks first gets an honest answer.
  • Pay invoices from any page โ€” when a Nostr client you're signed into shows a Lightning invoice, Sidecar offers to pay it. An invoice inside a payment panel you opened, or a lightning: link you tap, brings up the card; an invoice that merely turned up on the page gets a small pill in the corner you can ignore or tap to open. Nothing is offered at all unless a wallet is connected. You can also right-click a lightning: link, a selected BOLT11 invoice, or a QR image.
  • Auto-approve zaps (optional, off by default) โ€” pay zaps without a prompt up to a per-zap limit and a daily total you set. Verified zaps only; larger zaps, anything over the daily total, non-zaps, and a locked wallet still ask.
  • Twenty themes โ€” ten drawn for low light and ten for daylight, chosen from a gallery that previews each one live and set per account. Each has its own typeface, textures and balance animation, one switch turns the animation off, and special editions are worn only for a few weeks of the year. Acknowledgments below says what each one is a tribute to.
  • Help & guides โ€” a built-in guide page, one click from the top bar, walks through accounts, how sites remember who you are, switching accounts, the client families, and the wallet.

Install

The easiest way is the Chrome Web Store โ€” open the link and click Add to Chrome. Works in Chrome, Brave, and Edge. On Firefox, install it from Firefox Add-ons. Both update automatically.

Advanced: install from this release zip

For advanced users who'd rather not use the Chrome Web Store: every tagged version is published as a GitHub Release with a ready-to-load zip attached โ€” the exact same build submitted to the Chrome Web Store, so you can inspect it before installing.

  1. Download the zip. Grab sidecar-X.Y.Z-chrome.zip from the latest release, then unzip it โ€” you'll get a folder containing manifest.json.

  2. Open the extensions page in a Chromium browser:

    • Chrome / Brave: visit chrome://extensions
    • Edge: visit edge://extensions
  3. Enable Developer mode (toggle in the top-right on Chrome/Brave, left sidebar on Edge).

  4. Click "Load unpacked" and select the unzipped folder (the one containing manifest.json).

  5. Pin it (optional). Click the puzzle-piece toolbar icon and pin Sidecar so its icon is always visible.

  6. Open the side panel. Click the Sidecar toolbar icon. On first run you'll set a PIN, then add an account (generate a new key or import an existing nsec).

Updating: release zips don't auto-update โ€” watch the releases page for a new version, download it, and repeat steps 1 and 4 (removing the old unpacked folder first, or pointing "Load unpacked" at the new one, is fine either way). If you'd rather updates happen automatically, use the Chrome Web Store install instead.

From source (unpacked / developer build)

Sidecar has no build step โ€” it's plain JavaScript loaded directly. To run it from source:

  1. Get the code.

    git clone https://github.com/dmnyc/sidecar.git

    (or download the ZIP from GitHub and unzip it).

  2. Open the extensions page in a Chromium browser:

    • Chrome / Brave: visit chrome://extensions
    • Edge: visit edge://extensions
  3. Enable Developer mode (toggle in the top-right on Chrome/Brave, left sidebar on Edge).

  4. Click "Load unpacked" and select the sidecar folder (the one containing manifest.json).

  5. Pin it (optional). Click the puzzle-piece toolbar icon and pin Sidecar so its icon is always visible.

  6. Open the side panel. Click the Sidecar toolbar icon. On first run you'll set a PIN, then add an account (generate a new key or import an existing nsec).

  7. Use it on a Nostr site. Open any NIP-07 client (e.g. Jumble, Coracle, noStrudel) and choose "log in with extension" โ€” Sidecar will prompt you to approve.

Firefox

Sidecar runs on Firefox 128 and later โ€” the same signer, wallet, and approval flow as Chrome, in the sidebar instead of the side panel.

Install it from Firefox Add-ons, which signs it and keeps it up to date. Each GitHub release also carries the same signed build as sidecar-X.Y.Z-firefox.xpi, which installs like any add-on when you open it in Firefox.

Then open the sidebar (View โ†’ Sidebar โ†’ Sidecar, or click the Sidecar toolbar button). On first run you'll set a PIN, then add an account, and you use it on a Nostr site the same way as on Chrome.

Two Firefox specifics: extensions stay off in private windows unless you allow them (Manage Extensions โ†’ Sidecar โ†’ Run in Private Windows), and Sidecar needs the site access it asks for at install โ€” if you declined that, the panel shows a one-click Grant access banner until it's restored.

Developers: to load Sidecar unpacked on Firefox, visit about:debugging#/runtime/this-firefox โ†’ Load Temporary Add-onโ€ฆ โ†’ select manifest.json. Temporary add-ons are removed when Firefox quits.

Updating: Chrome Web Store and Firefox Add-ons installs update automatically. On Chrome you can also trigger a check from Settings โ†’ Updates or the About dialog (Firefox manages updates on its own). For a source build, pull the latest code (git pull), then return to the extensions page and click the reload (โ†ป) icon on the Sidecar card. Reloading is required after changing background.js or any provider script.

Safari

Not supported, and the blocker is narrower than people expect: Safari implements neither side-UI API, so there is nowhere for Sidecar to live. The toolbar popup it would have to use is dismissed the moment focus leaves it, which takes the composer, the wallet and any payment in flight with it. The signer mechanism itself would work fine. Reasoning, compatibility table and what would change the answer: BROWSER_PARITY.md.

Build version stamp (optional)

The About dialog shows a version + git commit read from version.js (gitignored, generated). A post-commit hook keeps it current automatically โ€” install it once with:

printf '#!/usr/bin/env bash\nexec "$(git rev-parse --show-toplevel)/scripts/stamp-version.sh" >/dev/null 2>&1 || true\n' > .git/hooks/post-commit
chmod +x .git/hooks/post-commit

Or regenerate it manually any time:

./scripts/stamp-version.sh

Architecture

Area Files
Service worker (RPC router, permissions, prompt orchestration, auto-lock) background.js
Page bridge / provider content.js, nostr-provider.js
Crypto & keystore crypto.js, keystore.js, permissions.js, signer.js
Approval prompt prompt.html, prompt.js
Side panel UI sidepanel.html, sidepanel.js, styles.css, fonts.css
Standalone pages welcome.html/welcome.js (Nostr app directory, first-run), wallets.html/wallets.js/wallets.css (NWC wallet suggestions), help.html/help.js/help.css (help & guides)
Lightning (NWC / NIP-47) nwc-client.js, wallet-budgets.js
Workers (off the panel's thread) nip49-worker.js (scrypt for encrypted key export), pow-worker.js (NIP-13 mining)
Vendored nostr-tools.js, nip49.js (encrypted key export), qrcode-generator.js (receive QR), jsqr.js (scan QR to pay), emoji-data.js (reaction picker), fonts/ (sixteen faces, mostly SIL OFL, three under their own licenses, credited under Acknowledgments). Provenance and hashes for every bundle are in VENDOR.md
Generated version.js (build stamp), scripts/stamp-version.sh

Decrypted private keys live only in the service worker's in-memory map. If the worker is killed (MV3 idles after ~30s), that map is cleared and the keystore re-locks.

Nostr protocol support

Sidecar signs whatever event a connected site asks for via NIP-07, so in principle it can sign any kind. Beyond that, these are the NIPs (and one Blossom convention) it has dedicated, named support for:

NIP Title Used for
01 Basic protocol flow Core event/profile handling (kind:0, kind:1)
02 Follow List Follow count, following and unfollowing from search and the profile card, recovering a wiped follow list
04 Encrypted Direct Messages (legacy) nip04.encrypt/.decrypt NIP-07 methods; reading legacy private lists and wallet backups
05 Mapping Nostr keys to DNS identifiers Verifying a profile's NIP-05 against its /.well-known/nostr.json
07 window.nostr capability The signer interface itself
09 Event Deletion Request Recognized and flagged in the signing prompt
10 Text Notes and Threads Reply/mention recognition in notifications
11 Relay Information Document Relay icons and health verdicts in the relay editor
13 Proof of Work Optional mined nonce on the notes you post, per account, at 16/18/20/22 bits
18 Reposts Repost and quote-repost recognition
19 bech32-encoded entities npub/nsec/note/nevent/naddr encode & decode throughout
21 nostr: URI scheme Mention/embed rendering in the composer
22 Comment Commenting on any web page, and replying to those comments from notifications
25 Reactions Reaction notifications
27 Text Note References Inline nostr: mention rendering
38 User Statuses Setting, showing and clearing your own kind:30315 status
42 Authentication of clients to relays Relay AUTH challenges answered for the account's own relays, for reads as well as writes
44 Encrypted Payloads (Versioned) nip44.encrypt/.decrypt NIP-07 methods; preferred encryption for the wallet backup and private lists
47 Nostr Wallet Connect The built-in Lightning wallet
49 Private Key Encryption (ncryptsec) Password-encrypted key import/export
51 Lists Mute list handling, muting a person, note or thread from a notification into the private part of kind:10000; bookmarking a note to your kind:10003 list; recovering wiped lists
53 Live Activities Browsing live, upcoming and past streams (kind:30311) and stream chat (kind:1311)
57 Lightning Zaps Zap notifications, automatic zaps, zapping a stream or a comment, verified stream zap totals
65 Relay List Metadata Outbox relay list editor
73 External Content IDs The web target a page comment is scoped to
78 Application-specific Data Encrypted wallet connection backup
85 Trusted Assertions Reading a web-of-trust service's kind:10040 provider list on the signing card, and warning before it is emptied
88 Polls Posting a poll (kind:1068), and counting the votes (kind:1018) on your own
89 Recommended Application Handlers client tag on posts
98 HTTP Auth Upload auth for Blossom and nostr.build
Blossom (BUD-02) Blob upload Media uploads to a user's own Blossom servers, from their kind:10063 list

Acknowledgments

  • Inspired by Nostr Build Shack by Fishcake and Clave by Doc
  • Standing on the shoulders of nos2x by fiatjaf, Alby extension, and Amber by greenart7c3 โ€” the OG reliable signers most of Nostr grew up with
  • Global @-mention search is powered by the nostrarchives-api by barrydeen
  • The Bauhaus theme is a tribute to the Bauhaus school (1919โ€“1933) โ€” its principles of geometric clarity, primary color, and type as architecture echo in the author's own logo at dmnyc.net
  • The Nixie theme is a tribute to the nixie tube, the cold-cathode readout of mid-century instrument panels โ€” neon-orange numerals behind a wire mesh, and cold steel around them
  • The Metropolis theme is a tribute to Fritz Lang's Metropolis (1927) โ€” deco geometry taken down to the machine floor, soot and tarnished brass under shafts of light, and a balance that strikes white and cools into metal
  • The Werkstรคtte theme is a tribute to the Wiener Werkstรคtte (1903โ€“1932), the Viennese design workshop founded by Josef Hoffmann and Koloman Moser out of the Vienna Secession โ€” black and white, the square as an ornament in its own right, and gold used as an applied material rather than as ink. The field is Hoffmann's Gitterwerk, the lattice of little squares that earned him the nickname Quadratl-Hoffmann
  • The Wabi-sabi theme is a tribute to wabi-sabi, the Japanese aesthetic of the imperfect and impermanent, and to kintsugi, the art of mending broken pottery with gold-dusted lacquer so the repair becomes part of the object's history rather than something hidden
  • The Ukiyo-e theme is a tribute to ukiyo-e, the Edo-period woodblock prints of Hokusai and Hiroshige โ€” a sky graded from pale blue to a yellow horizon under a band of Prussian blue, and the yellow-green of Hokusai's cliffs โ€” with the traditional seigaiha wave pattern as its field
  • The Constellation theme is a tribute to the engraved star atlas โ€” gold printed from copper onto black paper, the sky drawn from real star positions as the engravers drew it, showing the season's evening sky on one of four plates
  • The Mycelium theme is a tribute to mycelium, the fungal network that runs under a forest floor and links the trees above it with no center to run it from, which is why it keeps turning up as a picture of decentralized networks like Bitcoin and Nostr โ€” a sepia pen drawing of strands fusing into cells over graded loam, with moss, eucalyptus and the fly agaric's red
  • The Ben Day theme is a tribute to the Ben-Day dot, the printing process that gave the comic books of the 1930s and 40s their color โ€” four inks on newsprint, black keylines, speech balloons, a balance that bursts through a starburst, and a ZAP! when a payment lands
  • The Jazz Age theme is a tribute to the music of the 1920s bandstand โ€” a piano keyboard along the top of the frame, stage lights crossing a black floor, and the balance written on a staff, each figure played in when a payment lands
  • The Departures theme is a tribute to the split-flap departures board, the Solari design of 1956 that hung in stations and airports for half a century โ€” every figure on its own flap, destinations on wide flaps, and yellow for the platform numbers, the new balance clattering over one flap at a time
  • The Turnstile theme is a tribute to the first subway stations under Manhattan (1904) and the porcelain-enamel signs that followed them โ€” white glazed tile in running bond, station names set in mosaic on tablets framed in glazed tile, a frieze of tesserae along the wall, and enamel signs for everything you press
  • The Sleepy Hollow theme, a special edition worn only from October 1 to November 8, is a tribute to Washington Irving's The Legend of Sleepy Hollow (1820) and the engravings that illustrated it โ€” the Hollow at night in silhouette, a harvest moon behind the bare limbs of the great tulip tree, the old Dutch church on its knoll, the bridge over the brook, and the Horseman riding the ridge with his pumpkin alight
  • Emoji โ€” the picker's table is built from unicode-emoji-json by muan for the characters, names and groups, joined with search keywords from emojibase by Miles Johnson, which carries the CLDR annotation keywords defined in UTS #35. Both MIT. Those keywords are why searching "happy" or "scared" finds anything: emoji names describe the picture rather than the feeling, so the vocabulary for what they mean is Unicode's, not ours.
  • Star data โ€” Constellation's charts are drawn from the star positions, magnitudes and constellation figures published by d3-celestial by Olaf Frohn (BSD-3-Clause), which derives them from ESA's Hipparcos catalogue. The full notice is in NOTICE
  • Music โ€” somewhere in Sidecar, if you know where to look, Scott Joplinโ€™s The Strenuous Life (1902), a ragtime two-step, is playing in two voices. The score comes from the Mutopia Project engraving by Benjamin Bloomfield, and the composition and the engraving are both public domain
  • Video โ€” live streams play with hls.js by the video-dev contributors, bundled unmodified under the Apache License 2.0.
  • Fonts โ€” nearly every bundled face is under the SIL Open Font License 1.1, with its license text in fonts/: Manrope for the UI, Oswald as Nixie's fallback, and Playfair Display, Bitter, Cinzel, Jost, EB Garamond, Josefin Sans, Rowdies, Limelight, Special Elite, Pinyon Script, Noto Serif Display (Film Noir), Yuji Syuku (Wabi-sabi), Kaisei Decol (Ukiyo-e), Cormorant Garamond (Constellation), Fraunces (Mycelium), Bangers with Comic Neue (Ben Day) and Fascinate with Federo (Jazz Age), Barlow Condensed (Departures), Pathway Gothic One with Archivo and Crimson Pro (Turnstile), and IM FELL English SC (Sleepy Hollow) as the themes' display faces. Werkstรคtte is set in Syncopate (Astigmatic), under the Apache License 2.0 rather than the OFL, with its license text in fonts/LICENSE-Syncopate.txt. The one exception is Cast Iron's Impressed Metal (GemFonts, 1998), which is freeware rather than OFL and carries its own license record in fonts/LICENSE-ImpressedMetal.txt. The Nixie theme is set in Nixie Gothic, a patched build of Routed Gothic by Darren Embry โ€” renamed per the OFL's reserved-name rule, with the modifications documented in fonts/OFL-NixieGothic.md. Routed Gothic itself is a digitization of the mid-century Leroy-style lettering that engraved the instrument panels this theme is about.

Author

  • Created by The Daniel ๐Ÿ––
  • Mixed with Claude and GLM ๐Ÿธ

License

MIT. Bundled fonts are licensed under the SIL Open Font License (see fonts/). The qrious QR library is bundled for the wallet's receive flow.


โ€œIf itโ€™s a class war, you should be a classy warrior.โ€ โ€” Mos Def

About

A classy Nostr keystore and signer that lives in your browser sidebar ๐Ÿธ

Resources

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages