Skip to content

Commit 0ed4727

Browse files
committed
fix paid runtime auth flow, polish sidepanel UX, and release 0.4.5
1 parent 42ded94 commit 0ed4727

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+5267
-290
lines changed

PRIVACY.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
# Privacy Policy — Parchi
22

3-
**Last updated:** 2026-02-15
3+
**Last updated:** 2026-02-23
44

55
## Summary
66

7-
Parchi does **not** collect, store, or transmit any personal data.
7+
Parchi is local-first, but some features use remote services for authentication and billing.
88

99
## Data Handling
1010

1111
- **No analytics or telemetry.** Parchi does not include any tracking, analytics, or telemetry code.
12-
- **No remote servers.** All communication goes directly from your browser to the AI provider you configure (e.g. OpenAI, Anthropic, Google). Parchi never proxies requests through its own servers.
13-
- **API keys stay local.** Your API keys and settings are stored in your browser's local extension storage (`chrome.storage.local`) and are never sent anywhere except to the provider endpoint you configured.
14-
- **No data retention.** Conversation history exists only in your browser session memory and is not persisted or transmitted.
12+
- **BYOK mode is direct.** In BYOK mode, your prompts go directly from your browser to your configured provider (OpenAI, Anthropic, OpenRouter, and others).
13+
- **Managed billing uses backend services.** Paid credit and key-provisioning flows use Parchi backend endpoints plus Stripe webhooks.
14+
- **Limited billing data.** Parchi stores account email, subscription/credit state, and payment-linked identifiers needed for billing and entitlement checks.
15+
- **OpenRouter provisioning metadata only.** For managed OpenRouter key provisioning, we store key hash + guardrail/model metadata (not the key secret) in billing records.
16+
- **No prompt logging by default.** Parchi does not intentionally store prompt/response content for managed billing workflows.
17+
- **Local settings and keys.** Your extension settings and BYOK provider keys are stored in `chrome.storage.local`.
18+
- **Conversation retention depends on mode.** Local chat history lives in extension storage. Managed backend routing forwards request payloads to upstream providers and does not intentionally persist prompt content.
1519
- **No cookies or fingerprinting.** Parchi does not set cookies, use tracking pixels, or fingerprint your browser.
1620

1721
## Permissions
@@ -20,7 +24,11 @@ Parchi requests browser permissions (active tab, scripting, tabs, storage) solel
2024

2125
## Third-Party Services
2226

23-
When you use Parchi, your prompts and page content are sent to whichever AI provider you have configured. Please review your provider's privacy policy for how they handle that data.
27+
- **Stripe** handles payment processing and billing events.
28+
- **Convex** powers authentication and billing/account APIs.
29+
- **AI providers** receive prompts/content when you send requests.
30+
31+
Please review each provider's privacy policy for their data practices.
2432

2533
## Contact
2634

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parchi-extension",
3-
"version": "0.4.3",
3+
"version": "0.4.6",
44
"description": "Warm-paper browser automation extension with configurable LLM providers",
55
"type": "module",
66
"workspaces": [

packages/backend/.env.example

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ AUTH_GOOGLE_SECRET=
77
OPENAI_API_KEY=
88
ANTHROPIC_API_KEY=
99
KIMI_API_KEY=
10+
OPENROUTER_API_KEY=
11+
OPENROUTER_MANAGEMENT_KEY=
12+
OPENROUTER_KEY_LIMIT_USD=20
13+
OPENROUTER_LIMIT_RESET=monthly
14+
OPENROUTER_DEFAULT_MODEL=moonshotai/kimi-k2
15+
OPENROUTER_ALLOWED_MODELS=moonshotai/kimi-k2
16+
OPENROUTER_DEFAULT_PLAN_ID=default
17+
# Optional JSON array override for multi-plan mapping:
18+
# OPENROUTER_PLAN_CATALOG_JSON=[{"id":"starter","stripePriceId":"price_123","keyLimitUsd":20,"limitReset":"monthly","allowedModels":["moonshotai/kimi-k2"]},{"id":"pro","stripePriceId":"price_456","keyLimitUsd":100,"limitReset":"monthly","allowedModels":["moonshotai/kimi-k2","openai/gpt-4.1-mini"]}]
19+
OPENROUTER_ENFORCE_MODEL_GUARDRAIL=true
20+
OPENROUTER_ENFORCE_ZDR=false
1021
STRIPE_SECRET_KEY=
1122
STRIPE_WEBHOOK_SECRET=
1223
STRIPE_PRO_PRICE_ID=
24+
STRIPE_OPENROUTER_PRICE_ID=

0 commit comments

Comments
 (0)