Skip to content

ARNLTony/NeXTStepStamps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StampViewer

A native Bitcoin Stamps viewer for NeXTSTEP 3.3, running on real NeXTstation hardware (68040 CPU).

Connects to the stampchain.io API over HTTPS to fetch and display Bitcoin Stamps, including PNG, GIF, and SVG formats.

StampViewer running on NeXTstation

GIF filmstrip viewer

Features

  • Fetches stamp collections from multiple Bitcoin wallet addresses
  • Displays stamp images (PNG, GIF, SVG) with nearest-neighbor pixel-perfect upscaling
  • SVG rendering via patched nanosvg library (C89 compatible)
  • GIF multi-frame support with filmstrip viewer (click thumbnails to browse frames)
  • HTTPS/TLS 1.2 connectivity via cryanc
  • Stamp list grouped by wallet address, sorted alphabetically by CPID
  • Filter checkboxes: JPG/PNG, GIF, SVG, Other
  • CPID search field (press Return to filter)
  • Detail panel showing CPID, stamp number, wallet, supply, creator, block, type, balance, divisible, locked
  • Local cache for instant startup (stamps.cache)
  • Wallet address management panel (add/remove with confirmation)
  • Edit menu with Cut, Copy, Paste, Select All (Cmd+X/C/V/A)
  • Quit confirmation on window close

Requirements

  • NeXTSTEP 3.3 on 68040 hardware (NeXTstation, NeXTcube, or NeXTstation TurboColor)
  • Network connectivity to the internet
  • Git client for NeXTSTEP (NeXTGitHub)

Building

On the NeXTstation:

cd /me/repos/NeXTStepStamps/StampViewer
make clean
make

The build script bs.sh automates pull + build + install:

sh /me/bs.sh

The app is installed to /me/Apps/StampViewer.app.

Architecture

StampViewer/
  src/
    objc/           # Objective-C UI (AppKit)
      main.m        # App entry point
      AppDelegate.m # App lifecycle, fetch, cache
      StampWindow.m # Main window layout
      StampListView.m    # Scrollable stamp list grouped by wallet
      StampDetailView.m  # Stamp metadata fields
      StampImageView.m   # Image display with upscaling + GIF filmstrip
      AddressPanel.m     # Wallet address management dialog
      WalletStore.m      # Wallet address persistence
    c/              # Pure C modules
      stamp_api.c   # Stampchain API client, JSON parsing, image loading
      http_client.c # HTTP/HTTPS client using cryanc TLS
      json_parser.c # Minimal JSON parser
      base64.c      # Base64 decoder (custom, no external dependency)
      svlog.c       # File-based logging
    lib/            # Third-party headers
      nanosvg.h     # SVG parser (patched for C89)
      nanosvgrast.h # SVG rasterizer (patched for C89)
      stb_image.h   # PNG/GIF/JPEG decoder

Shared Libraries

Pre-compiled as .o files at the repo root, shared across NeXTSTEP projects:

Library File Purpose Source
cryanc cryanc.c/.h TLS 1.2 for HTTPS classilla/cryanc
nanosvg nanosvg_impl.c SVG parsing and rasterization memononen/nanosvg
stb_image src/lib/stb_image.h PNG/GIF/JPEG decoding nothings/stb

All libraries are patched for pre-C99 compatibility (NeXTSTEP cc / gcc 2.x):

  • No // comments, inline, anonymous unions, long long, or mid-block declarations
  • Float math functions (sinf, sqrtf, etc.) mapped to double versions via nextstep_compat.h

API

StampViewer uses the stampchain.io API v2:

GET https://stampchain.io/api/v2/balance/{address}?page=1&limit=1000

Returns stamp metadata including CPID, stamp number, creator, supply, and base64-encoded image data or image URLs.

License

MIT

Credits

Created by ARNLTony

Built with Claude Code on a NeXTstation TurboColor running NeXTSTEP 3.3.