Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,9 @@ packages/protocol wire contract: schemas, codec (total), kinds, chunking,
wiped from component state immediately after send.
- Do not downgrade Node / TypeScript / Rust / NDK versions to work around a build
failure; fix the root cause.
- The root `main.js` shim and `docker/Dockerfile` both assume the bridge builds
to `apps/bridge/out/main.js` — keep them consistent if that changes.
- The `docker/main.js` shim (copied to `/app/main.js` in the image) and
`docker/Dockerfile` both assume the bridge builds to `apps/bridge/out/main.js`
— keep them consistent if that changes.

## Vendored history note

Expand Down
34 changes: 31 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# CodeDeck+

[![CI](https://github.com/deymosh/codedeck-plus/actions/workflows/ci.yml/badge.svg)](https://github.com/deymosh/codedeck-plus/actions/workflows/ci.yml)

CodeDeck+ is a community-maintained continuation of CodeDeck Next. The
original work belongs to [JeroenOnNostr](https://github.com/JeroenOnNostr),
whose two upstream projects are:
Expand Down Expand Up @@ -30,8 +32,8 @@ patch) but is built separately with its own Android/Rust toolchain.
```
codedeck-plus/
├── vendor/ # pristine git-subtree mirrors of upstream — never hand-edited
│ ├── bridge/ # codedeck-next-bridge @ main
│ └── mobile/ # codedeck-next-mobile @ main
│ ├── bridge/ # codedeck-next-bridge @ main (carries its own package.json / pnpm-*,
│ └── mobile/ # codedeck-next-mobile @ main inert — not in the workspace glob)
├── packages/ # shared workspace packages (the actual, editable code)
│ ├── protocol/ # wire format + NIP-42 signer, used by both apps
│ ├── core/ # bridge engine (Node-only: Tor/SOCKS5 transport lives here)
Expand All @@ -41,9 +43,15 @@ codedeck-plus/
│ └── mobile/ # Tauri v2 + React Android app (not built by Docker)
├── docker/
│ ├── Dockerfile
│ └── entrypoint.sh
│ ├── entrypoint.sh
│ └── main.js # container entry shim (WebSocket global → built bridge CLI)
├── docs/
│ └── PROTOCOL.md # the wire contract (packages/protocol/src/ is authoritative)
├── scripts/
│ └── sync-upstream.sh # pulls upstream into vendor/*, for hand-merging
├── .github/workflows/ # ci.yml (typecheck + test + build + cargo) · release.yml (tag → release)
├── .claude/ # CLAUDE.md + skills for Claude Code
├── codedeck # ./codedeck — bridge / Tor / APK / test wrapper (Docker, no host toolchain)
├── docker-compose.yml
├── pnpm-workspace.yaml
└── data/ # runtime volume (bridge identity, paired phones, sessions)
Expand Down Expand Up @@ -124,6 +132,26 @@ docker compose --profile tor up -d --build
docker compose logs -f codedeck-bridge
```

## Releases

Pushing a `vMAJOR.MINOR.PATCH` tag runs [`.github/workflows/release.yml`](.github/workflows/release.yml),
which publishes one GitHub Release with every artifact of that version:

| Component | Artifact |
|---|---|
| Android app | `codedeck-vX.Y.Z.apk` — release aarch64 build, signed |
| Bridge CLI (`npx` / global install) | `codedeck-bridge-X.Y.Z.tgz` |
| Bridge container image | `ghcr.io/deymosh/codedeck-plus-bridge:vX.Y.Z` (and `:latest`) |

A tag with a hyphen (`v1.2.3-rc1`) is published as a prerelease and does not move
`:latest`. The tag's version is stamped into the bridge and mobile manifests at
build time. `workflow_dispatch` runs the same pipeline for a dry run.

APK signing needs four repository secrets — `SIGNING_KEY` (base64 keystore),
`KEY_ALIAS`, `KEY_STORE_PASSWORD`, `KEY_PASSWORD`. See
[`.claude/skills/cut-release/SKILL.md`](.claude/skills/cut-release/SKILL.md) for
the full runbook.

## Related repos

- [codedeck-next-mobile](https://github.com/JeroenOnNostr/codedeck-next-mobile) — upstream Android app
Expand Down
4 changes: 2 additions & 2 deletions apps/bridge/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ extension — same engine (`@codedeck/core`), no editor required.
## Quickstart

This package is **not on the npm registry** — install it from the release
tarball:
tarball attached to each CodeDeck+ GitHub release:

```sh
npm i -g https://github.com/JeroenOnNostr/codedeck-next-bridge/releases/download/v0.9.3/codedeck-bridge-0.9.3.tgz
npm i -g https://github.com/deymosh/codedeck-plus/releases/download/v0.10.0/codedeck-bridge-0.10.0.tgz

codedeck-bridge run # run the bridge, serving pairing (Ctrl-C to stop)
codedeck-bridge pair # pairing window only: terminal QR + pairing URL
Expand Down
6 changes: 3 additions & 3 deletions apps/bridge/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codedeck/bridge",
"version": "0.9.3",
"version": "0.10.0",
"type": "module",
"bin": {
"codedeck-bridge": "./out/main.js"
Expand Down Expand Up @@ -28,8 +28,8 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/JeroenOnNostr/codedeck-next-bridge.git",
"directory": "apps/bridge-cli"
"url": "git+https://github.com/deymosh/codedeck-plus.git",
"directory": "apps/bridge"
},
"engines": {
"node": ">=20"
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codedeck/mobile",
"version": "0.9.5",
"version": "0.10.0",
"private": true,
"type": "module",
"license": "MIT",
Expand Down
13 changes: 12 additions & 1 deletion apps/mobile/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion apps/mobile/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "codedeck-mobile"
# Semver per package (plan: the padded/unpadded calendar-version Cargo footgun
# is dead). Keep in lockstep with tauri.conf.json `version`.
version = "0.9.5"
version = "0.10.0"
description = "CodeDeck — remote-control Claude Code over Nostr (mobile/desktop shell)"
edition = "2021"
rust-version = "1.77.2"
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "CodeDeck+",
"version": "0.9.5",
"version": "0.10.0",
"identifier": "com.codedeck.next",
"build": {
"frontendDist": "../dist",
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ COPY --chown=root:root docker/git-credential-codedeck-secret /usr/local/bin/git-
RUN chmod 0755 /usr/local/bin/git-credential-codedeck-secret
COPY --chown=root:root docker/gh-codedeck-secret /usr/local/bin/gh
RUN chmod 0755 /usr/local/bin/gh
COPY --chown=codedeck:codedeck main.js /app/main.js
COPY --chown=codedeck:codedeck docker/main.js /app/main.js

# Switch back to the non-root user for running the application
USER codedeck
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "codedeck-plus",
"private": true,
"version": "0.1.0",
"version": "0.10.0",
"description": "CodeDeck+ community continuation of CodeDeck Next — unified bridge + mobile monorepo with Tor/SOCKS5 transport and NIP-42 relay auth.",
"scripts": {
"typecheck": "pnpm -r --no-bail run typecheck",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codedeck/core",
"version": "0.9.3",
"version": "0.10.0",
"private": true,
"type": "module",
"main": "src/index.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codedeck/protocol",
"version": "0.9.4",
"version": "0.10.0",
"private": true,
"type": "module",
"main": "src/index.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/testkit/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@codedeck/testkit",
"version": "0.9.3",
"version": "0.10.0",
"private": true,
"type": "module",
"main": "src/index.ts",
Expand Down
Loading