[about.ray]
RSS FeedI'm Ray. 13 years writing code, most of it in the open. TypeScript across the full stack. I contribute to the tools I use and open source everything I build. I also drink way too much coffee. Sey beans, V60, 1Zpresso ZP6, full nerd mode (I go deeper here).
39 repos · 19 PRs merged upstream · 5 npm packages · ~900 weekly downloads
Every merged PR shipped as a drop-in patch first. Bun, npm, pnpm, Yarn.
[shipped]
- ccbase · TypeScript · Bun · SQLite
Local analytics dashboard, session history, and cost tracking for Claude Code.
~172 weekly downloads
- counter · Expo · Convex · TypeScript
Voice AI that listens while you negotiate a deal. Pulls prices, alternatives, and angles to push on in real time.
ElevenLabs x Firecrawl hackathon submission
- convex-revenuecat · TypeScript · Convex
RevenueCat subscription sync for Convex. All 18 webhook event types, REST API sync, entitlement checking.
~717 weekly downloads · Convex Components Directory
- gitbar · Tauri · Rust · TypeScript · React
GitHub dashboard for the macOS menubar. PRs, issues, repos, and activity in one window.
~5MB binary
- coderabbit-shadcn-registry · TypeScript · React
Ships the CodeRabbit API as a shadcn registry. Framework-agnostic client, storage adapters, React components.
listed in shadcn/ui registry
[merged.upstream]
19 PRs merged to projects I don't maintain.
- expo/expo · 8 PRs
- textContentType modifier wrapping all 45 UITextContentType values to wire @expo/ui text fields into iOS keychain autofill (passwords, addresses, cards, OTP) #44548
- textInputAutocapitalization modifier so TextField can finally turn off auto-caps without forcing an ASCII keyboard layout #44547
- scrollTargetBehavior and scrollTargetLayout modifiers (iOS 17+) for paging and view-aligned scroll snapping #43955
- defaultScrollAnchorForRole modifier (iOS 18+) for per-role anchor overrides on initialOffset, sizeChanges, and alignment #43923
- defaultScrollAnchor modifier (iOS 17+) so chat UIs no longer need scaleEffect(y: -1) flips, reversed data, and inverted scroll indicators #43914
- per-axis scaleEffect accepting { x, y } for inverted-list message threads #43228
- ShapeType enum fix unblocking capsule and ellipse in clipShape and mask (they were silently rendering Rectangle) #43158
- PersistentFileLog serial queue race fix that was flaking expo-updates log tests in CI #43958
- get-convex/better-auth · 4 PRs
- four bugs causing stale auth state: cookie expiry comparison NaN-coerced because JSON.parse turned the Date into a string, stale cookies persisting after session expiry, getSessionData returning truthy {} after sign-out, and isAuthenticated true for {} and undefined sessions #218
- widened better-auth peer dep from exact 1.4.9 to >=1.4.9 <1.5.0 to cover 1.4.9 through 1.4.18, excluding 1.5.0 which moved createAuthEndpoint and createAuthMiddleware out of better-auth/plugins #245
- concurrent fetchAccessToken dedup via useRef so React 18 StrictMode and ConvexProviderWithAuth setAuth re-renders no longer fire N redundant /convex/token round-trips on page load #267
- dead react-dom peer dep removal that was generating warnings in bun and pnpm projects (zero react-dom imports across all 32 files in src/) #278
- napi-rs/napi-rs · 1 PR
- cross-compile regression in the v3 CLI rewrite where passing --cross-compile silently fell through to cargo build when host matched target on linux or darwin, linking against the host glibc instead of zig's pinned version. Broke deploys to Amazon Linux 2023 and Vercel build containers (glibc 2.34) when binaries were built on ubuntu-latest (glibc 2.39). The v2 fix from #1432 wasn't carried over during the v3 rewrite #3189
- shadcn-ui/ui · 1 PR
- registered the @ramonclaudio-coderabbit shadcn registry in the official open source directory per #8892. The registry ships a framework-agnostic CodeRabbit API client, pluggable storage adapters (LocalStorage, Convex, Supabase, PostgreSQL, MySQL), and React components for developer activity reports #9331
- oven-sh/bun · 1 PR
- added the decompress property to the BunFetchRequestInit interface with JSDoc, removing the need for @ts-ignore when disabling response decompression in Bun fetch (the option already worked at runtime) #21855
- fuma-nama/fumadocs · 2 PRs
- fixed the TanStack Start template in create-fumadocs-app by wiring the vite-react plugin with the required customViteReactPlugin: true flag, configuring a custom NotFound component for TanStack Router, and bumping deps. Resolved four issues at once: vite-react plugin warning, missing custom 404 warning, module resolution errors during navigation, and React hydration errors from useMemo null references #2092
- prettier formatting fix that unblocked the changesets release PR #2093 for create-fumadocs-app@15.7.0 #2095
- rudrankriyam/App-Store-Connect-CLI · 1 PR
- added Mac App Store screenshot support to the asc CLI. New --provider macos grabs the frontmost window of a running app by bundle ID via screencapture -l <windowID>, with the window ID coming from a Swift one-liner piped through swift - (no cgo, no extra binaries). New --device mac renders to the 2880x1800 APP_DESKTOP canvas without a device bezel, with optional title, subtitle, and background color overlays. Also fixed ASC_TIMEOUT being silently ignored for screenshots capture and frame, both now use ContextWithTimeout #784
- TanStack/db · 1 PR
- corrected the README link to the example todo app, which pointed at a stale path. Now resolves to examples/react/todo so first-time visitors landing on the repo can actually open the example. Was PR #17 in the repo (early days) #17
[recent.writing]
-
Building convex-revenuecat: Server-Side Entitlements for Expo
I needed server-side entitlement checks in my Convex app. No component existed. So I built one.
-
Building Gitbar: A Menubar GitHub Dashboard
I got tired of opening 4 GitHub tabs to answer one question. So I built a menubar app that answers it in one glance.
-
Hello, World!
Hello, I'm Ray.