Commit Graph
94 Commits
Author SHA1 Message Date
WanjohiandClaude Opus 5 77d4782c86 docs: split CLAUDE.md by scope, and say what this repo is
CLAUDE.md was 1,324 lines and all of it was about the TypeScript half, written
before there was another half. Every line of it loaded on every turn regardless
of what was being worked on, which is a real cost paid constantly for context
that is usually irrelevant.

Split by where it applies, so each guide loads when you are in the directory it
describes:

  packages/core/CLAUDE.md   694   domain modules, fn(), actor, errors, auth
  apps/api/CLAUDE.md        284   routes, registration, error flow
  docs/alchemy.md           345   stages, bindings, secrets, the CLI
  CLAUDE.md                  72   the repo, both toolchains, two hard rules

Nothing was rewritten or dropped — the three files are the original text,
verified identical after the split. What the root file now carries is only what
is true repo-wide: the layout, the commands, where the detail lives, and the two
rules that are not style preferences. One of those is that nothing closed may
enter this repo, which is here because it has already been caught once.

The README described a streaming platform in four bullets and did not mention
that half the repository is Rust that runs inside a virtual machine. It now says
what each component does, why a micro-VM rather than a container, what is
deliberately absent, and what decides whether a thing is open — data is, capacity
is not.

It also says plainly that this is mid-rewrite and the docs are behind. Someone
arriving at a repo whose documentation does not match its tree should be told
that by the README rather than discover it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:23:42 +03:00
WanjohiandClaude Opus 5 6164e0c636 feat(nescapture): open the capture layer
A Vulkan implicit layer that captures frames from inside the workload's own
process and encodes them on the GPU they were drawn on. Fourth and last of this
batch, imported as a tree from `nestrilabs/nescapture` on the same terms.

Filed under `apps/` rather than `crates/` despite building a cdylib. The rule
here is what a thing *is*, not what it compiles to: this is a finished artefact
that gets installed into an image beside its layer manifest, not a library
another crate in this tree depends on. `crates/` is for the latter, and putting
this there would make the distinction useless the first time someone looked.

Wired to the workspace, `nesprotocol` by path. Its description named the
transport component; that reads better as what it actually is — where the frames
go — so it says that instead.

Whole workspace builds and tests: 21 across four members.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:04:02 +03:00
WanjohiandClaude Opus 5 06b844b961 feat(neswire): open the audio server
Captures a session's audio and hands it to the transport over a local socket.
Third component in, imported as a tree from `nestrilabs/neswire` on the same
terms as the previous two.

Wired to the workspace, `nesprotocol` by path. 4 tests pass.

`bin/hub-stub.rs` is a stand-in for the transport's listener, which is what lets
this be developed and tested without the rest of a box existing. It names the
transport by its old name, and is left for the rename commit along with the two
in the compositor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:02:38 +03:00
WanjohiandClaude Opus 5 37dd985810 feat(nescope): open the compositor
A headless Wayland compositor for a single fullscreen client, and the second
component into this repo. Imported as a tree from `nestrilabs/nescope` for the
same reason as the last one: the upstream repo is private, its history has never
been reviewed for publication, and a squash is what keeps that history from
becoming permanent here.

Wired to the workspace — versions from the root, `nesprotocol` by path instead
of a sibling directory. 8 tests pass.

It knows a lot about Steam, and all of it stays. `steam_app_*` window classes,
a launcher that exits before the game it started, a client that shows a login
screen with no Vulkan frames in it: that is third-party behaviour a compositor
for games has to handle, and describing it reveals nothing about how we are put
together. The rule is about topology, not vocabulary.

Two comments still name the transport by its old name and are left for the
commit that renames it, so that rename reads as one change rather than as
noise spread across four imports.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:01:41 +03:00
WanjohiandClaude Opus 5 938f5e6544 feat(nesprotocol): open the shared wire types
First component into this repo. Renamed from `nestri-protocol` — everything
else in the family carries the `nes` prefix and this was the odd one out.

**Imported as a tree, not as history.** The upstream repo is private, so its
commits and commit messages have never been reviewed for what may be published,
and squashing avoids the failure this project has already documented once: a
repo published wholesale carries private history with it, permanently. Origin is
`nestrilabs/nestri-protocol`, and this is its state today rather than its past.

The `control` module is deliberately left behind. It carries the host↔guest
control channel, and its types are shaped by a payload that has no business
being described in a public repo — a box is supposed to be able to run anything.
It was already an optional feature that nothing here enables, so leaving it out
costs nothing today and stops a boundary from being crossed by accident.

What lands is the media protocol: frames, audio, cursor, input and stats. One
definition shared by both ends, so no two can drift silently. 9 tests pass.

One pre-existing clippy warning (`input.rs`, too many arguments) is left alone
on purpose — an import commit should be a faithful copy, and mixing a cleanup
into one makes both harder to read.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:00:01 +03:00
Wanjohi 57725efac3 chore: match the file's indentation 2026-08-26 17:59:08 +03:00
WanjohiandClaude Opus 5 f7c46ccf0e chore: add the Apache 2.0 licence
This repository has been public without one, which grants nobody any rights —
the opposite of what a public repo is for, and a blocker on opening anything
else into it. Apache 2.0 was decided for this tier; this is that decision
applied, not a new one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 17:58:58 +03:00
WanjohiandClaude Opus 5 a8e77ffb85 chore: add the Rust workspace
This repo holds both languages, so it needs both workspaces. Layout is the same
rule on each side — apps/ for what runs, crates/ and packages/ for what is
shared, split by what a thing is rather than what it is written in.

Members are empty because nothing has moved in yet. Versions are pinned once at
the root so two crates cannot disagree about a dependency.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 17:49:43 +03:00
WanjohiandClaude Opus 5 0143849129 feat: bring the control plane up to date
Squashes the current state of the internal working tree onto this history.
The two trees had grown apart with no common ancestor, so this is a content
sync rather than a merge, and the published history is preserved rather than
rewritten — a force-push here would break every existing fork and clone to no
benefit.

What lands:

- Waitlist: API route, core module, and migration 0006 alongside game aliases.
- User verification.
- CI, oxfmt config, editor settings.
- Assorted fixes across the API routes and core modules.

The repository's own README, the wordmark and the per-package READMEs are kept
from this side; the internal tree had dropped them and they are what a stranger
arriving here reads first.

The marketing site in the internal tree is deliberately not here. It is a
separate product with its own repo and its own licence, and this repo is the
open one — a closed component does not belong in it regardless of how convenient
the directory looked.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 17:48:46 +03:00
Wanjohi cb5b6ed1a2 chore: Fix the logo 2026-08-06 22:36:02 +03:00
Wanjohi a8b9a11de0 chore: Update Readme 2026-08-06 22:32:33 +03:00
Wanjohi 293c099835 feat: Add a .env.example file 2026-08-06 22:17:48 +03:00
Wanjohi 3faac3008f feat: Sync to OSS repo 2026-08-06 22:13:51 +03:00
Wanjohi 46d2a56180 feat: Sync to OSS repo 2026-08-06 22:13:37 +03:00
Wanjohi a3ee9aadd9 feat: Make sure worker runs close to db 2025-10-12 03:03:44 +03:00
Wanjohi 9b1dc054d0 fix: Remove package-lock 2025-09-27 12:12:16 +03:00
Wanjohi 278c1043f5 feat: Move API to CF workers (WIP) 2025-09-27 10:25:13 +03:00
Wanjohi aba0bc3be1 chore: Migrate to namespace 2025-09-20 17:20:16 +03:00
Wanjohi eb41fdc754 feat: Use drizzle studio to view changes in realtime 2025-09-20 07:01:30 +03:00
Wanjohi 73a6d9546a feat: Push schema to remote db 2025-09-20 06:54:57 +03:00
Wanjohi 49286d7e72 feat: Add auth endpoint 2025-09-20 04:49:31 +03:00
Wanjohi a045fc9c91 fix: Clean up and add Neon DB 2025-09-20 04:38:16 +03:00
Wanjohi df4af84d55 fix: Resolve database issues 2025-09-20 03:56:51 +03:00
Wanjohi ecfdb5156e feat: Cloud WIP 2025-09-20 01:05:03 +03:00
Wanjohi 16004c87a9 chore: Migrate auth to CF Workers Pt 2 2025-09-20 00:44:25 +03:00
Wanjohi d01e9945de chore: Migrate auth to CF Workers 2025-09-19 23:56:03 +03:00
Wanjohi 33407d8df5 feat: Start working on Auth 2025-09-19 23:35:37 +03:00
Wanjohi 639616ce73 feat: Add database 2025-09-19 01:25:29 +03:00
Wanjohi 6bd17a4d5f feat: Add DNS configuration 2025-09-08 05:37:42 +03:00
Wanjohi 199c021797 Update LICENSE 2025-09-08 04:45:36 +03:00
Wanjohi ad71c6c26a fix: Remove Neon DB support 2025-09-07 23:02:48 +03:00
Wanjohi 93bfe4ef24 fix: Fix SST infra directory 2025-09-07 23:00:19 +03:00
Wanjohi ebddef4eb2 fix: Add cloud/packages/* workspace 2025-09-07 22:57:59 +03:00
Wanjohi 18942dc26b fix: Remove vscode files 2025-09-06 17:14:20 +03:00
Wanjohi bb6c54e55a Update the LICENSE 2025-09-06 17:10:47 +03:00
Wanjohi 9818165a90 fix: Move more directories 2025-09-06 16:50:44 +03:00
Wanjohi 1c1c73910b fix: Remove unnecessary workflows 2025-09-06 04:38:13 +03:00
Wanjohi d409a8dc95 fix merge error 2025-09-06 04:35:36 +03:00
Wanjohi 8643608ae4 chore: Rename containers to containerfiles 2025-09-06 04:29:44 +03:00
Wanjohi 85d6fdd213 ✅ ci: Update workflows to use dev 2025-07-20 23:46:05 +03:00
Wanjohi 5315daa932 🐜 fix(readme): Switch main branch to dev 2025-07-20 23:06:55 +03:00
Wanjohi a2461cf59d 🐜 fix(readme): Fix wording 2025-07-19 12:23:59 +03:00
Wanjohi 8a02f019e9 🐜ðŸ fix(readme): Removing unnecessary filetype annotation fixes media query 2025-07-19 00:12:03 +03:00
Wanjohi 2db52f107e 📝 docs: Start work on the README 2025-07-19 00:08:57 +03:00
Wanjohi c2f179e8ab 🧹 chore(infra): Wipe out everything 2025-07-18 19:41:51 +03:00
Wanjohi 77f47a0306 🐜 fix(infra): Remove db on team member stages 2025-06-29 17:12:56 +03:00
Wanjohi 0a1a4cd9b6 🧹 chore(functions): Remove Containerfile 2025-06-12 11:30:38 +03:00
Wanjohi d7cb47fdd6 🧹 chore: remove dead code 2025-06-10 16:03:16 +03:00
Wanjohi 8b07adb0fc 🐜 fix: Add asynchronous bus for Steam account 2025-06-10 16:01:59 +03:00
Wanjohi 661d9d2e56 fix: Fix cookie issue 2025-06-10 15:34:21 +03:00
Wanjohi 6eee40fcbe 🐜 fix(api): Fix double CORS issue 2025-06-09 12:08:24 +03:00
Wanjohi 69d728c4a9 🐜 fix(api): Fix double CORS issue 2025-06-09 12:08:04 +03:00
Wanjohi 8f4bb05143 🐜 fix(infra): Reduce DB ACUs 2025-06-03 08:10:41 +03:00
Wanjohi 6e19b2e9a0 🐜 fix(zero): Remove unnecessary StorageKey value 2025-05-19 06:26:11 +03:00
Wanjohi 14e4176344 🐜 fix(www): Uncomment the SST parts 2025-05-17 23:32:15 +03:00
Wanjohi 80deb82d25 🐜 fix(www): Fix bg colors on light mode 2025-05-17 01:08:38 +03:00
Wanjohi cc2065299d 🐜 fix(db): Add partial controller_support 2025-05-11 05:03:57 +03:00
Wanjohi 0cc9effdec 🐜 fix(db): Make primary_genre nullable 2025-05-11 04:23:05 +03:00
Wanjohi 82dfd6506d 🐜 fix(db): Make controller_support an enum 2025-05-11 03:58:30 +03:00
Wanjohi 6051e11921 🐜 fix(zero): Tidy up the schema 2025-05-11 01:04:45 +03:00
Wanjohi 86670d5931 🐜 fix(zero): Tidy up the schema 2025-05-11 01:03:59 +03:00
Wanjohi 35f009e925 🐜 fix: Games should only be visible to logged in users 2025-05-11 01:02:28 +03:00
Wanjohi 38ad74d14a 🐜 fix(zero): Keep Steam ID consistent thru out 2025-05-10 08:16:08 +03:00
Wanjohi d933c1e61d ⭐ feat: Make sure friends can see their friends 2025-05-09 16:22:28 +03:00
Wanjohi b86fc625ba 🐜 fix: Fix user relations in zero-sync schema 2025-05-09 07:22:59 +03:00
Wanjohi 1923cdf2a3 🐜 fix: Typo in the Steam login page 2025-05-09 01:24:46 +03:00
Wanjohi 6990494b34 🐜 fix(infra): Fix the Web path 2025-04-07 23:14:22 +03:00
Wanjohi 5a3fdf25ff 🧹 chore(infra): Upgrade to sst v3.11.21 2025-04-07 22:45:58 +03:00
Wanjohi cacdae79c0 🐜 fix(ci): Remove unnecessary code 2025-03-26 03:35:16 +03:00
Wanjohi fb47bb6699 🐜 fix: Remove old.sst.config.ts file 2025-03-02 01:47:00 +03:00
Wanjohi 849a470073 🐜 fix(infra): Share the same Neon project 2025-03-02 01:30:57 +03:00
Wanjohi be6ea11052 ❌ revert(protobuf): Remove protobuf for now 2025-01-28 20:23:28 +03:00
Wanjohi 056d7e070d 🐜 fix(ci): Fix the runner.yml 2025-01-23 02:19:18 +03:00
Wanjohi 4a27f54e80 🐜 fix(www): Fix the marquee 2025-01-21 01:12:58 +03:00
Wanjohi 0d0b1f4b14 🐜 fix(www): Fix posthog 2025-01-18 07:50:36 +03:00
Wanjohi dfe37a6cec 🐜 fix(www): Fix pricing button sound 2025-01-14 03:49:05 +03:00
Wanjohi a3ff8bff9f 🐜 fix(www): Fix the random avatars 2025-01-10 23:23:18 +03:00
Wanjohi dede878c3c 🐜 fix(www): Fix a typo 2025-01-04 23:19:42 +03:00
Wanjohi 83908122bf 🐜 fix(www): Move the features around 2025-01-04 05:40:20 +03:00
Wanjohi 2c27420126 🐜 fix(www): Fix some typos 2025-01-04 05:35:58 +03:00
Wanjohi 7d6a7542e2 🐛 fix(www): Fix a typo 2024-12-30 02:17:50 +03:00
Wanjohi 8c808bafcb 🐛 fix(www): Remove dead code 2024-12-27 13:06:35 +03:00
Wanjohi 08f2643dcd ✨ feat: Use howlerJS for audio 2024-12-27 13:01:13 +03:00
Wanjohi 82c1a3baea ✨ feat: Add even more features 2024-12-27 12:18:46 +03:00
Wanjohi 9fd7c6ff47 ✨ feat: Add more features 2024-12-27 12:01:11 +03:00
Wanjohi c6c7b6a36d 🐛 fix: Change up FREE tier CTA 2024-12-27 02:10:22 +03:00
Wanjohi c39866a019 🐛 fix: Fix a typo in pricing page 2024-12-26 22:46:13 +03:00
Wanjohi 2c39517a27 feat: Check for updates in the packages/** directory 2024-12-10 19:26:06 +03:00
Wanjohi aa7d3c5607 🐛 fix: Use common cache for all jobs 2024-12-10 18:50:47 +03:00
Wanjohi 9715cd9f8a 🐛 fix: Add step for setting up buildx 2024-12-10 18:46:55 +03:00
Wanjohi 20d5ff511e 🧹 chore: Do some cleanup 2024-12-08 15:05:49 +03:00
Wanjohi 5eb21eeadb 🐛 fix: Remove cross-origin isolation 2024-11-27 11:48:08 +03:00
Wanjohi 339779fce1 🐛 fix: Remove cross-origin isolation 2024-11-27 11:46:40 +03:00
Wanjohi be17ba026b ✨ feat: Add a new blog post 2024-10-27 05:12:05 +03:00