From dd55a804302e47d5cecc3f2415dbcccc7249b38b Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 25 Nov 2025 14:13:17 +0100 Subject: [PATCH] chore: prep 0.1.1 (version bump, lowercase branding, ua update) --- README.md | 2 +- docs/claude-config.md | 8 ++++---- package.json | 2 +- src/cli/program.ts | 2 +- src/provider-web.ts | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index af33c3ff0..748b959fa 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ Templating tokens: `{{Body}}`, `{{BodyStripped}}`, `{{From}}`, `{{To}}`, `{{Mess ## FAQ & Safety (quick answers) - Twilio errors: **63016 “permission to send an SMS has not been enabled”** → ensure your number is WhatsApp-enabled; **63007 template not approved** → send a free-form session message within 24h or use an approved template; **63112 policy violation** → adjust content, shorten to <1600 chars, avoid links that trigger spam filters. Re-run `pnpm warelay status` to see the exact Twilio response body. -- Does this store my messages? Warelay only writes `~/.warelay/warelay.json` (config), `~/.warelay/credentials/` (WhatsApp Web auth), and `~/.warelay/sessions.json` (session IDs + timestamps). It does **not** persist message bodies beyond the session store. Logs print to stdout/stderr; redirect or rotate if needed. +- Does this store my messages? warelay only writes `~/.warelay/warelay.json` (config), `~/.warelay/credentials/` (WhatsApp Web auth), and `~/.warelay/sessions.json` (session IDs + timestamps). It does **not** persist message bodies beyond the session store. Logs print to stdout/stderr; redirect or rotate if needed. - Personal WhatsApp safety: Automation on personal accounts can be rate-limited or logged out by WhatsApp. Use `--provider web` sparingly, keep messages human-like, and re-run `login` if the session is dropped. - Limits to remember: WhatsApp text limit ~1600 chars; avoid rapid bursts—space sends by a few seconds; keep webhook replies under a couple seconds for good UX; command auto-replies time out after 600s by default. - Deploy / keep running: Use `tmux` or `screen` for ad-hoc (`tmux new -s warelay -- pnpm warelay relay --provider twilio`). For long-running hosts, wrap `pnpm warelay relay ...` or `pnpm warelay webhook --ingress tailscale ...` in a systemd service or macOS LaunchAgent; ensure environment variables are loaded in that context. diff --git a/docs/claude-config.md b/docs/claude-config.md index 88ce04f40..91d314009 100644 --- a/docs/claude-config.md +++ b/docs/claude-config.md @@ -12,7 +12,7 @@ This guide shows the exact way to wire **warelay** to the Claude CLI so inbound - Optional: set `ANTHROPIC_API_KEY` in your shell profile for non-interactive use. ## Create your warelay config -Warelay reads `~/.warelay/warelay.json` (JSON5 accepted). Add a command-mode reply that points at the Claude CLI: +warelay reads `~/.warelay/warelay.json` (JSON5 accepted). Add a command-mode reply that points at the Claude CLI: ```json5 { @@ -38,13 +38,13 @@ Warelay reads `~/.warelay/warelay.json` (JSON5 accepted). Add a command-mode rep ``` Notes on this configuration: -- Warelay automatically injects a Claude identity prefix and the correct `--output-format`/`-p` flags when `command[0]` is `claude` and `claudeOutputFormat` is set. +- warelay automatically injects a Claude identity prefix and the correct `--output-format`/`-p` flags when `command[0]` is `claude` and `claudeOutputFormat` is set. - Sessions are stored in `~/.warelay/sessions.json`; `scope: per-sender` keeps separate threads for each contact. - `bodyPrefix` is added before the inbound message body that reaches Claude. The string above mirrors the built-in 1500-character WhatsApp guardrail. ## How the flow works 1. An inbound message (Twilio webhook, Twilio poller, or WhatsApp Web listener) arrives. -2. Warelay enqueues the command in a process-wide FIFO queue so only one Claude run happens at a time (`src/process/command-queue.ts`). +2. warelay enqueues the command in a process-wide FIFO queue so only one Claude run happens at a time (`src/process/command-queue.ts`). 3. Typing indicators are sent (Twilio) or `composing` presence is sent (Web) while Claude runs. 4. Claude stdout is parsed: - JSON mode is handled automatically if you set `claudeOutputFormat: "json"`; otherwise text is used. @@ -52,7 +52,7 @@ Notes on this configuration: 5. The reply (text and optional media) is sent back via the same provider that received the message. ## Media and attachments -- To send an image from Claude, include a line like `MEDIA:https://example.com/pic.jpg` in the output. Warelay will: +- To send an image from Claude, include a line like `MEDIA:https://example.com/pic.jpg` in the output. warelay will: - Host local paths for Twilio using the media server/Tailscale Funnel. - Send buffers directly for the Web provider. - Inbound media is downloaded (≤5 MB) and exposed to your templates as `{{MediaPath}}`, `{{MediaUrl}}`, and `{{MediaType}}`. You can mention this in your prompt if you want Claude to reason about the attachment. diff --git a/package.json b/package.json index 7efba0d11..7d13d4114 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "warelay", - "version": "0.1.0", + "version": "0.1.1", "description": "WhatsApp relay CLI (send, monitor, webhook, auto-reply) using Twilio", "type": "module", "main": "dist/index.js", diff --git a/src/cli/program.ts b/src/cli/program.ts index d4f815c26..2341c6e8d 100644 --- a/src/cli/program.ts +++ b/src/cli/program.ts @@ -18,7 +18,7 @@ import { spawnRelayTmux } from "./relay_tmux.js"; export function buildProgram() { const program = new Command(); - const PROGRAM_VERSION = "0.1.0"; + const PROGRAM_VERSION = "0.1.1"; const TAGLINE = "Send, receive, and auto-reply on WhatsApp—Twilio-backed or QR-linked."; diff --git a/src/provider-web.ts b/src/provider-web.ts index 56c8a6f75..cf3750ed5 100644 --- a/src/provider-web.ts +++ b/src/provider-web.ts @@ -48,7 +48,7 @@ export async function createWaSocket(printQr: boolean, verbose: boolean) { version, logger, printQRInTerminal: false, - browser: ["Warelay", "CLI", "0.1.0"], + browser: ["warelay", "cli", "0.1.1"], syncFullHistory: false, markOnlineOnConnect: false, });