@orangecheck/legal 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +96 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +96 -37
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -477,7 +477,7 @@ var terms = {
|
|
|
477
477
|
metaTitle: "Terms of Service \u2014 OrangeCheck",
|
|
478
478
|
metaDescription: "The terms and conditions for using OrangeCheck. Non-custodial service provided as-is. You are responsible for your wallet and private keys.",
|
|
479
479
|
effective: "2025-09-30",
|
|
480
|
-
updated: "2026-
|
|
480
|
+
updated: "2026-10-08",
|
|
481
481
|
preamble: [
|
|
482
482
|
{
|
|
483
483
|
kind: "callout",
|
|
@@ -556,7 +556,7 @@ var terms = {
|
|
|
556
556
|
blocks: [
|
|
557
557
|
{
|
|
558
558
|
kind: "para",
|
|
559
|
-
text: "Most of the Service works without registration.
|
|
559
|
+
text: "Most of the Service works without registration. Optional sign-in proves one of: a Bitcoin address (a BIP-322 signature), an email inbox (a one-time code), or a Google or GitHub account. No password is ever created. A session is a server-side row plus an `HttpOnly; Secure; SameSite=None` cookie on `.ochk.io`, revoked when you sign out or the cookie expires."
|
|
560
560
|
},
|
|
561
561
|
{
|
|
562
562
|
kind: "para",
|
|
@@ -662,7 +662,7 @@ var privacy = {
|
|
|
662
662
|
metaTitle: "Privacy Policy \u2014 OrangeCheck",
|
|
663
663
|
metaDescription: "How OrangeCheck handles data and privacy. Non-custodial by design, minimal data collection, no account required, privacy-preserving analytics only.",
|
|
664
664
|
effective: "2025-09-30",
|
|
665
|
-
updated: "2026-
|
|
665
|
+
updated: "2026-10-08",
|
|
666
666
|
preamble: [
|
|
667
667
|
{
|
|
668
668
|
kind: "callout",
|
|
@@ -688,7 +688,7 @@ var privacy = {
|
|
|
688
688
|
},
|
|
689
689
|
{
|
|
690
690
|
k: "optional account",
|
|
691
|
-
v: "most of the Service needs no sign-in;
|
|
691
|
+
v: "most of the Service needs no sign-in; optional sign-in uses a Bitcoin signature, an email code, or Google/GitHub \u2014 never a password"
|
|
692
692
|
},
|
|
693
693
|
{
|
|
694
694
|
k: "transparency",
|
|
@@ -722,7 +722,34 @@ var privacy = {
|
|
|
722
722
|
{ kind: "subhead", text: "information you provide" },
|
|
723
723
|
{
|
|
724
724
|
kind: "para",
|
|
725
|
-
text: "**Bitcoin addresses and signatures** are processed client-side to generate a cryptographic proof; this data is public by design. **Identity bindings** you add are included in the signed message and are public. **
|
|
725
|
+
text: "**Bitcoin addresses and signatures** are processed client-side to generate a cryptographic proof; this data is public by design. **Identity bindings** you add are included in the signed message and are public. **Messages you send us** \u2014 through the contact form or by email \u2014 reach our inbox through our email provider (Resend) and are kept only as long as we need them to reply."
|
|
726
|
+
},
|
|
727
|
+
{ kind: "subhead", text: "if you sign in" },
|
|
728
|
+
{
|
|
729
|
+
kind: "bullets",
|
|
730
|
+
items: [
|
|
731
|
+
{
|
|
732
|
+
k: "account",
|
|
733
|
+
v: "an opaque `did:oc` identifier, an optional display name and Nostr npub, and when the account was created and last signed in"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
k: "how you sign in",
|
|
737
|
+
v: "a Bitcoin address you prove with a signature (stored as is \u2014 it is public on-chain anyway); or, for an email code, Google or GitHub, the verified email address \u2014 encrypted at rest, plus a one-way hash of it so we can find your account"
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
k: "passkeys",
|
|
741
|
+
v: "for each passkey you register: its public key, a label, the transports it reported, and when it was added and last used"
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
k: "each session",
|
|
745
|
+
v: "a hash of the session token, the IP address and full user-agent string of the device that opened it, and timestamps"
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
k: "sign-in log",
|
|
749
|
+
v: "each sign-in and each identity you link or remove, with the IP address and user-agent at the time \u2014 kept for security"
|
|
750
|
+
},
|
|
751
|
+
{ k: "never", v: "a password, a private key, or a seed phrase" }
|
|
752
|
+
]
|
|
726
753
|
},
|
|
727
754
|
{ kind: "subhead", text: "automatically collected" },
|
|
728
755
|
{
|
|
@@ -734,9 +761,26 @@ var privacy = {
|
|
|
734
761
|
]
|
|
735
762
|
},
|
|
736
763
|
{ kind: "subhead", text: "cookies & analytics" },
|
|
764
|
+
{
|
|
765
|
+
kind: "bullets",
|
|
766
|
+
items: [
|
|
767
|
+
{
|
|
768
|
+
k: "oc_session",
|
|
769
|
+
v: "your sign-in, set by ochk.io for every `*.ochk.io` site: HttpOnly; Secure; SameSite=None; Domain=.ochk.io; 30 days"
|
|
770
|
+
},
|
|
771
|
+
{
|
|
772
|
+
k: "oc_oauth_state",
|
|
773
|
+
v: "only during a Google or GitHub sign-in: HttpOnly; SameSite=Lax; 10 minutes; deleted when the sign-in completes"
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
k: "oc_theme \xB7 oc_skin \xB7 oc_motion",
|
|
777
|
+
v: "your light/dark, appearance and reduced-motion choices (Domain=.ochk.io); not used to identify you"
|
|
778
|
+
}
|
|
779
|
+
]
|
|
780
|
+
},
|
|
737
781
|
{
|
|
738
782
|
kind: "para",
|
|
739
|
-
text: "
|
|
783
|
+
text: "A browser tab may also keep its own copy of a sign-in token in session storage, cleared when the tab closes. We use [Plausible Analytics](https://plausible.io/privacy) \u2014 cookie-free, no personal data, aggregate statistics only \u2014 alongside our own first-party, cookieless analytics (oc insights): no cookies, no cross-site identity, your IP address is hashed and immediately discarded (never stored), and Do-Not-Track / Global Privacy Control signals are honored. No advertising or tracking cookies."
|
|
740
784
|
}
|
|
741
785
|
]
|
|
742
786
|
},
|
|
@@ -758,7 +802,7 @@ var privacy = {
|
|
|
758
802
|
{
|
|
759
803
|
id: "retention",
|
|
760
804
|
heading: "data retention",
|
|
761
|
-
hint: "
|
|
805
|
+
hint: "no automatic deletion yet \xB7 permanent public artifacts",
|
|
762
806
|
blocks: [
|
|
763
807
|
{
|
|
764
808
|
kind: "bullets",
|
|
@@ -768,12 +812,16 @@ var privacy = {
|
|
|
768
812
|
v: "permanent and publicly shareable; data published to Nostr cannot be deleted by OrangeCheck"
|
|
769
813
|
},
|
|
770
814
|
{
|
|
771
|
-
k: "
|
|
772
|
-
v: "
|
|
815
|
+
k: "request logs",
|
|
816
|
+
v: "held by our hosting provider (Vercel) for its own short retention window; we keep no separate copy"
|
|
773
817
|
},
|
|
774
818
|
{
|
|
775
|
-
k: "
|
|
776
|
-
v: "
|
|
819
|
+
k: "sessions",
|
|
820
|
+
v: "deleted when you sign out. A session that simply expires after 30 days is not yet deleted automatically."
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
k: "account, sign-in identities, passkeys and sign-in log",
|
|
824
|
+
v: "kept until you ask us to delete them at [[PRIVACY_CONTACT]]; there is no automatic deletion yet"
|
|
777
825
|
},
|
|
778
826
|
{
|
|
779
827
|
k: "support emails",
|
|
@@ -822,7 +870,7 @@ var terms2 = {
|
|
|
822
870
|
metaTitle: "Terms of Service \u2014 me.ochk.io",
|
|
823
871
|
metaDescription: "Terms of service for me.ochk.io: a Bitcoin-backed identity that pays users in sats. OrangeCheck custody during bring-up, federation custody and self-custody graduation as the destination, no KYC.",
|
|
824
872
|
effective: "2026-05-15",
|
|
825
|
-
updated: "2026-
|
|
873
|
+
updated: "2026-10-08",
|
|
826
874
|
preamble: [
|
|
827
875
|
{
|
|
828
876
|
kind: "callout",
|
|
@@ -987,7 +1035,7 @@ var privacy2 = {
|
|
|
987
1035
|
metaTitle: "Privacy Policy \u2014 me.ochk.io",
|
|
988
1036
|
metaDescription: "me.ochk.io privacy policy. No KYC, no PII required, per-integrator scoped identity, and a full account of what OrangeCheck stores.",
|
|
989
1037
|
effective: "2026-05-15",
|
|
990
|
-
updated: "2026-
|
|
1038
|
+
updated: "2026-10-08",
|
|
991
1039
|
preamble: [
|
|
992
1040
|
{
|
|
993
1041
|
kind: "callout",
|
|
@@ -1008,8 +1056,8 @@ var privacy2 = {
|
|
|
1008
1056
|
v: "me.ochk.io never collects your legal name, government ID, or physical address"
|
|
1009
1057
|
},
|
|
1010
1058
|
{
|
|
1011
|
-
k: "
|
|
1012
|
-
v: "
|
|
1059
|
+
k: "little pii at signup",
|
|
1060
|
+
v: "a Bitcoin signature needs no personal data; an email code, Google or GitHub sign-in stores your email address, encrypted"
|
|
1013
1061
|
},
|
|
1014
1062
|
{
|
|
1015
1063
|
k: "scoped identity",
|
|
@@ -1045,7 +1093,7 @@ var privacy2 = {
|
|
|
1045
1093
|
},
|
|
1046
1094
|
{
|
|
1047
1095
|
k: "session record",
|
|
1048
|
-
v: "the session
|
|
1096
|
+
v: "a hash of the session token, the account id, the IP address and user-agent of the device that opened it, and timestamps. The token itself lives only in your browser."
|
|
1049
1097
|
},
|
|
1050
1098
|
{
|
|
1051
1099
|
k: "event envelopes",
|
|
@@ -1094,7 +1142,7 @@ var privacy2 = {
|
|
|
1094
1142
|
blocks: [
|
|
1095
1143
|
{
|
|
1096
1144
|
kind: "para",
|
|
1097
|
-
text: "
|
|
1145
|
+
text: "Four cookies. `oc_session` \u2014 the Ed25519-signed session token issued by ochk.io (HttpOnly, Secure, SameSite=None, Domain=.ochk.io). `oc_theme`, `oc_skin` and `oc_motion` \u2014 your dark/light, appearance and reduced-motion preferences (Domain=.ochk.io), not auth-bearing. No tracking cookies, no advertising IDs, no third-party pixels. Page analytics use [Plausible](https://plausible.io/privacy) \u2014 cookie-free, no PII, aggregate only."
|
|
1098
1146
|
}
|
|
1099
1147
|
]
|
|
1100
1148
|
},
|
|
@@ -1125,8 +1173,8 @@ var privacy2 = {
|
|
|
1125
1173
|
v: "retained as the canonical earnings and custody-state record; anchored copies on Bitcoin and Nostr are immutable"
|
|
1126
1174
|
},
|
|
1127
1175
|
{
|
|
1128
|
-
k: "
|
|
1129
|
-
v: "
|
|
1176
|
+
k: "request logs",
|
|
1177
|
+
v: "held by our hosting provider (Vercel) for its own short retention window; we keep no separate copy"
|
|
1130
1178
|
},
|
|
1131
1179
|
{
|
|
1132
1180
|
k: "session records",
|
|
@@ -1180,7 +1228,7 @@ var terms3 = {
|
|
|
1180
1228
|
metaTitle: "Terms of Service \u2014 OC Vault",
|
|
1181
1229
|
metaDescription: "Terms of service for OC Vault (vault.ochk.io): an end-to-end-encrypted secrets vault. Client-side encryption, on-chain Bitcoin payment, no fund custody.",
|
|
1182
1230
|
effective: "2026-05-15",
|
|
1183
|
-
updated: "2026-
|
|
1231
|
+
updated: "2026-10-08",
|
|
1184
1232
|
preamble: [
|
|
1185
1233
|
{
|
|
1186
1234
|
kind: "callout",
|
|
@@ -1197,7 +1245,7 @@ var terms3 = {
|
|
|
1197
1245
|
blocks: [
|
|
1198
1246
|
{
|
|
1199
1247
|
kind: "para",
|
|
1200
|
-
text: "OC Vault stores passwords, one-time-password seeds, API keys, notes, and small files. Every item is **encrypted client-side** in your browser under a vault key that
|
|
1248
|
+
text: "OC Vault stores passwords, one-time-password seeds, API keys, notes, and small files. Every item is **encrypted client-side** in your browser under a vault key that only your passphrase or recovery code unlocks; we store that key only in sealed form. When you sync to the cloud, OrangeCheck stores an opaque encrypted blob \u2014 **OrangeCheck cannot read your vault contents, item names, or item types.**"
|
|
1201
1249
|
},
|
|
1202
1250
|
{
|
|
1203
1251
|
kind: "para",
|
|
@@ -1211,7 +1259,7 @@ var terms3 = {
|
|
|
1211
1259
|
blocks: [
|
|
1212
1260
|
{
|
|
1213
1261
|
kind: "para",
|
|
1214
|
-
text: "
|
|
1262
|
+
text: "You sign in with your OrangeCheck account: a Bitcoin address you prove via BIP-322, an email one-time code, or Google/GitHub. Your entries are encrypted under a vault key that your vault passphrase (or recovery code) unlocks; signing in does not decrypt anything. You are responsible for keeping that passphrase and recovery code safe."
|
|
1215
1263
|
}
|
|
1216
1264
|
]
|
|
1217
1265
|
},
|
|
@@ -1283,7 +1331,7 @@ var terms3 = {
|
|
|
1283
1331
|
blocks: [
|
|
1284
1332
|
{
|
|
1285
1333
|
kind: "para",
|
|
1286
|
-
text: "The
|
|
1334
|
+
text: "The encrypted backup (settings \u2192 encrypted backup) is free on every tier. It writes one file holding your vault key and every entry, sealed under a passphrase you choose (scrypt, then AES-256-GCM), so it restores on any device and stays decryptable with standard, open primitives if OC Vault is discontinued. The plain export holds entries without the key and is readable only where your vault key already is."
|
|
1287
1335
|
},
|
|
1288
1336
|
{
|
|
1289
1337
|
kind: "stub",
|
|
@@ -1361,7 +1409,7 @@ var privacy3 = {
|
|
|
1361
1409
|
metaTitle: "Privacy Policy \u2014 OC Vault",
|
|
1362
1410
|
metaDescription: "OC Vault privacy policy. End-to-end encrypted; OrangeCheck stores ciphertext only and cannot read your vault contents.",
|
|
1363
1411
|
effective: "2026-05-15",
|
|
1364
|
-
updated: "2026-
|
|
1412
|
+
updated: "2026-10-08",
|
|
1365
1413
|
sections: [
|
|
1366
1414
|
{
|
|
1367
1415
|
id: "principles",
|
|
@@ -1382,8 +1430,16 @@ var privacy3 = {
|
|
|
1382
1430
|
kind: "bullets",
|
|
1383
1431
|
items: [
|
|
1384
1432
|
{
|
|
1385
|
-
k: "
|
|
1386
|
-
v: "the
|
|
1433
|
+
k: "account id",
|
|
1434
|
+
v: "the opaque did:oc of the OrangeCheck account you sign in with; your vault is filed under it"
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
k: "sealed vault key",
|
|
1438
|
+
v: "your vault key, encrypted under your passphrase and under your recovery code, so a new device can unlock; OrangeCheck cannot open it without one of them"
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
k: "team email (optional)",
|
|
1442
|
+
v: "if you choose to show teammates an email address in a team vault, that address"
|
|
1387
1443
|
},
|
|
1388
1444
|
{
|
|
1389
1445
|
k: "payment records",
|
|
@@ -1391,7 +1447,7 @@ var privacy3 = {
|
|
|
1391
1447
|
},
|
|
1392
1448
|
{
|
|
1393
1449
|
k: "encrypted blobs",
|
|
1394
|
-
v: "opaque ciphertext
|
|
1450
|
+
v: "opaque ciphertext filed under your account id \u2014 OrangeCheck cannot decrypt it"
|
|
1395
1451
|
},
|
|
1396
1452
|
{
|
|
1397
1453
|
k: "per-item metadata",
|
|
@@ -1418,9 +1474,8 @@ var privacy3 = {
|
|
|
1418
1474
|
items: [
|
|
1419
1475
|
"The contents of any vault item",
|
|
1420
1476
|
"The names, titles, or types of your items",
|
|
1421
|
-
"Your vault key or
|
|
1422
|
-
"Your access tokens (only the SHA-256 hash is stored)"
|
|
1423
|
-
"Which sites the browser extension autofilled on \u2014 origin matching happens locally in your browser"
|
|
1477
|
+
"Your vault key in usable form, your passphrase, or your recovery code \u2014 we hold the key only sealed under them",
|
|
1478
|
+
"Your access tokens (only the SHA-256 hash is stored)"
|
|
1424
1479
|
]
|
|
1425
1480
|
}
|
|
1426
1481
|
]
|
|
@@ -1432,12 +1487,12 @@ var privacy3 = {
|
|
|
1432
1487
|
blocks: [
|
|
1433
1488
|
{
|
|
1434
1489
|
kind: "para",
|
|
1435
|
-
text: "The same encrypted vault is reachable from
|
|
1490
|
+
text: "The same encrypted vault is reachable from the web app and from the CLI and SDK; a browser extension is planned. The zero-knowledge guarantee \u2014 that OrangeCheck only ever holds ciphertext \u2014 applies to all of them."
|
|
1436
1491
|
},
|
|
1437
|
-
{ kind: "subhead", text: "browser extension (
|
|
1492
|
+
{ kind: "subhead", text: "browser extension (not released yet)" },
|
|
1438
1493
|
{
|
|
1439
1494
|
kind: "para",
|
|
1440
|
-
text: "
|
|
1495
|
+
text: "There is no OC Vault browser extension yet. When one ships, it is designed to work this way: the extension fetches the same encrypted blobs the web app does, caches them **as ciphertext** in browser-extension storage, and decrypts in the service worker only after you enter your passphrase. The vault key lives in memory and a RAM-only `storage.session` slot \u2014 it is never written to disk. The content script that offers autofill receives **one entry's field values at fill time** and nothing else; it never receives the vault key or the entry index. The extension talks only to your own `vault.ochk.io` account: no analytics, no telemetry, no remote code."
|
|
1441
1496
|
},
|
|
1442
1497
|
{ kind: "subhead", text: "developer platform \u2014 access tokens, CLI, SDK, GitHub Action" },
|
|
1443
1498
|
{
|
|
@@ -1452,7 +1507,7 @@ var privacy3 = {
|
|
|
1452
1507
|
blocks: [
|
|
1453
1508
|
{
|
|
1454
1509
|
kind: "para",
|
|
1455
|
-
text: "
|
|
1510
|
+
text: "No cookies of vault.ochk.io's own. The family sign-in cookie `oc_session` (set by ochk.io: HttpOnly; Secure; SameSite=None; Domain=.ochk.io; 30 days) and the appearance cookies `oc_theme`, `oc_skin` and `oc_motion` apply here. Your vault data lives in your browser's IndexedDB, under your account. Page analytics use [Plausible](https://plausible.io/privacy) \u2014 cookie-free, no PII, aggregate only. No advertising or tracking cookies."
|
|
1456
1511
|
}
|
|
1457
1512
|
]
|
|
1458
1513
|
},
|
|
@@ -1465,15 +1520,19 @@ var privacy3 = {
|
|
|
1465
1520
|
items: [
|
|
1466
1521
|
{
|
|
1467
1522
|
k: "encrypted blobs",
|
|
1468
|
-
v: "
|
|
1523
|
+
v: "kept while your account is active; you can delete the whole cloud copy at any time from settings"
|
|
1524
|
+
},
|
|
1525
|
+
{
|
|
1526
|
+
k: "sealed vault key",
|
|
1527
|
+
v: "kept so a new device can unlock; deleting the cloud copy does not remove it \u2014 ask us at [[PRIVACY_CONTACT]] and we will"
|
|
1469
1528
|
},
|
|
1470
1529
|
{
|
|
1471
1530
|
k: "payment records",
|
|
1472
1531
|
v: "retained as required for accounting and entitlement verification"
|
|
1473
1532
|
},
|
|
1474
1533
|
{
|
|
1475
|
-
k: "
|
|
1476
|
-
v: "
|
|
1534
|
+
k: "request logs",
|
|
1535
|
+
v: "held by our hosting provider (Vercel) for its own short retention window; rate-limit counters keyed by IP expire with their window"
|
|
1477
1536
|
}
|
|
1478
1537
|
]
|
|
1479
1538
|
}
|