@orangecheck/legal 0.7.34 → 0.7.36
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 +114 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +114 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1045,7 +1045,7 @@ var terms2 = {
|
|
|
1045
1045
|
metaTitle: "Terms of Service \u2014 ochk.app",
|
|
1046
1046
|
metaDescription: "Terms of service for ochk.app: a Bitcoin-backed identity that will pay users in sats. orangecheck holds what users earn while ochk.app is in testing, and will pay it to a Lightning wallet they choose. No KYC.",
|
|
1047
1047
|
effective: "2026-05-15",
|
|
1048
|
-
updated: "2026-11-
|
|
1048
|
+
updated: "2026-11-11",
|
|
1049
1049
|
preamble: [
|
|
1050
1050
|
{
|
|
1051
1051
|
kind: "callout",
|
|
@@ -1163,7 +1163,7 @@ var terms2 = {
|
|
|
1163
1163
|
blocks: [
|
|
1164
1164
|
{
|
|
1165
1165
|
kind: "para",
|
|
1166
|
-
text: "Sites that integrate ochk.app through its API at me.ochk.io get their own subject id for the events they report
|
|
1166
|
+
text: "Sites that integrate ochk.app through its API at me.ochk.io get their own subject id for the events they report. Signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you, and, if you back your account, what backs it, never the coin itself. Anything more a site gets only if you share it with that site: your Bitcoin address, your email, numbers about your activity across apps, or statements other apps have made about you. The [privacy policy](/privacy#scoped-identity) lists each. Integrators independently decide whether and how to trust your identity, including whether to admit, gate, or reject you. orangecheck is not a party to, and accepts no liability for, an integrator\u2019s decisions or an integrator\u2019s own terms, pricing, or conduct."
|
|
1167
1167
|
}
|
|
1168
1168
|
]
|
|
1169
1169
|
},
|
|
@@ -1211,9 +1211,9 @@ var privacy2 = {
|
|
|
1211
1211
|
kind: "privacy",
|
|
1212
1212
|
eyebrow: "privacy",
|
|
1213
1213
|
title: "Privacy policy",
|
|
1214
|
-
description: "How ochk.app and its API at me.ochk.io handle your data: no KYC, no PII required,
|
|
1214
|
+
description: "How ochk.app and its API at me.ochk.io handle your data: no KYC, no PII required, what orangecheck keeps about you, and who sees it.",
|
|
1215
1215
|
metaTitle: "Privacy Policy \u2014 ochk.app",
|
|
1216
|
-
metaDescription: "ochk.app privacy policy. No KYC, no PII required, and
|
|
1216
|
+
metaDescription: "ochk.app privacy policy. No KYC, no PII required, and what orangecheck keeps about you.",
|
|
1217
1217
|
effective: "2026-05-15",
|
|
1218
1218
|
updated: "2026-11-11",
|
|
1219
1219
|
preamble: [
|
|
@@ -1224,7 +1224,7 @@ var privacy2 = {
|
|
|
1224
1224
|
{
|
|
1225
1225
|
kind: "bullets",
|
|
1226
1226
|
items: [
|
|
1227
|
-
{ k: "11 November", v: "a guardian application's answers are held for the review.
|
|
1227
|
+
{ k: "11 November", v: "a guardian application's answers are held for the review. The operator registry publishes the operator key of every accepted application and when it was accepted, and a federation charter the operator key of each seated guardian; nothing else from an application is published yet. The policy lists what a site can ask you to share, each of ochk.app's cookies and both of its page counters, what ochk.app keeps in your browser outside cookies (an operator key record in IndexedDB only if you make, restore or import one), and names records it left out: passkeys, a coin backing your account, your Google or GitHub id, the hashes kept beside your email, a session's id and the roster id that links accounts signed in from one browser, the site you first signed up through, and OC Chat devices." },
|
|
1228
1228
|
{ k: "8 November", v: "while payouts are in testing, a balance above zero is settled by hand before your account is deleted. There is no cash-out to start yourself: contact us first." },
|
|
1229
1229
|
{ k: "29 October", v: "the contact form sends your email address, an optional name, the topic and your message to our inbox through our email provider (Resend)." },
|
|
1230
1230
|
{ k: "27 and 28 October", v: "a guardian application holds the questionnaire's answers. The policy says which records a deletion keeps, and that cached copies expire within a day." },
|
|
@@ -1257,11 +1257,11 @@ var privacy2 = {
|
|
|
1257
1257
|
},
|
|
1258
1258
|
{
|
|
1259
1259
|
k: "little pii at signup",
|
|
1260
|
-
v: "a Bitcoin signature needs no personal data; an email code, Google or GitHub sign-in stores your email address, encrypted"
|
|
1260
|
+
v: "a Bitcoin signature needs no personal data; an email code, Google or GitHub sign-in stores your email address, encrypted, with hashes of it, and Google or GitHub also your account id there"
|
|
1261
1261
|
},
|
|
1262
1262
|
{
|
|
1263
1263
|
k: "what sites get",
|
|
1264
|
-
v: "each site gets its own subject id for events, but signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you"
|
|
1264
|
+
v: "each site gets its own subject id for events, but signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you, and, if you back your account, what backs it, never the coin itself; anything more only if you share it with that site"
|
|
1265
1265
|
},
|
|
1266
1266
|
{
|
|
1267
1267
|
k: "no advertising",
|
|
@@ -1278,22 +1278,38 @@ var privacy2 = {
|
|
|
1278
1278
|
{
|
|
1279
1279
|
id: "what-oc-stores",
|
|
1280
1280
|
heading: "what orangecheck stores",
|
|
1281
|
-
hint: "
|
|
1281
|
+
hint: "records, not private keys",
|
|
1282
1282
|
blocks: [
|
|
1283
1283
|
{
|
|
1284
1284
|
kind: "para",
|
|
1285
|
-
text: "
|
|
1285
|
+
text: "These are records orangecheck keeps about you on ochk.io, where you sign in, and on me.ochk.io. None of them is a private key: the keys orangecheck holds for you are named under [custody](/terms#custody) in the Terms."
|
|
1286
1286
|
},
|
|
1287
1287
|
{
|
|
1288
1288
|
kind: "bullets",
|
|
1289
1289
|
items: [
|
|
1290
1290
|
{
|
|
1291
1291
|
k: "account row",
|
|
1292
|
-
v: "an opaque account id (did:oc), optional display name and Nostr npub,
|
|
1292
|
+
v: "an opaque account id (did:oc), optional display name and Nostr npub, which of our sites you first signed up through, and timestamps. No password hash, no private key, no mnemonic."
|
|
1293
|
+
},
|
|
1294
|
+
{
|
|
1295
|
+
k: "how you sign in",
|
|
1296
|
+
v: "a Bitcoin address you prove with a signature, stored as is (it is already public on-chain); or, for an email code, Google or GitHub, the email address, encrypted, with a keyed hash of it so we can find your account. An unkeyed hash of it is kept beside them until a planned change removes it: anyone holding a copy of the database could test a list of addresses against that one. For Google or GitHub we also store that provider\u2019s id for your account, unencrypted, so a changed email still reaches the same account."
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
k: "passkeys",
|
|
1300
|
+
v: "for each passkey you add: its credential id and public key, the label you give it, the kind of authenticator and the transports it reported, whether it checked it was you, a use counter, and when it was added, last used and removed."
|
|
1293
1301
|
},
|
|
1294
1302
|
{
|
|
1295
1303
|
k: "session record",
|
|
1296
|
-
v: "a hash of the session token, the account id, the user-agent of the device that opened it, and timestamps. The token itself lives only in your browser."
|
|
1304
|
+
v: "a hash of the session token, the session\u2019s id, the account id, the user-agent of the device that opened it, and timestamps. Sessions opened in the same browser share a roster id, so we can tell which of your accounts were signed in from it. The token itself lives only in your browser."
|
|
1305
|
+
},
|
|
1306
|
+
{
|
|
1307
|
+
k: "a coin backing your account",
|
|
1308
|
+
v: "if you back your account with a coin: its address, outpoint and amount, the block height it confirmed at, the backing message you signed and your signature, and when we last found it unspent, or saw it released or spent. Earlier backings stay with your account. What a site learns of it is under what sites get."
|
|
1309
|
+
},
|
|
1310
|
+
{
|
|
1311
|
+
k: "OC Chat devices",
|
|
1312
|
+
v: "for each chat.ochk.io device ochk.io vouches for: its device and Nostr public keys, when it vouched, and the sign-in that asked (the session\u2019s id and its roster id); for a device you revoke, the signed revocation, which is also published to Nostr relays."
|
|
1297
1313
|
},
|
|
1298
1314
|
{
|
|
1299
1315
|
k: "sign-in log",
|
|
@@ -1313,7 +1329,7 @@ var privacy2 = {
|
|
|
1313
1329
|
},
|
|
1314
1330
|
{
|
|
1315
1331
|
k: "guardian applications",
|
|
1316
|
-
v: "an application to run a guardian, made through ochk.app or by email to apply@ochk.io, holds your answers to the operator questionnaire, which asks, among other things, for a public handle, the name of the person or organisation that will run the guardian, its jurisdiction, a public contact channel, a key fingerprint and two references. Through ochk.app it can also hold an optional handle and email address that only the reviewer sees, for the decision. The answers are held for the review.
|
|
1332
|
+
v: "an application to run a guardian, made through ochk.app or by email to apply@ochk.io, holds your answers to the operator questionnaire, which asks, among other things, for a public handle, the name of the person or organisation that will run the guardian, its jurisdiction, a public contact channel, a key fingerprint and two references. Through ochk.app it can also hold an optional handle and email address that only the reviewer sees, for the decision. The answers are held for the review. Two places publish from an application, to anyone: the operator registry at me.ochk.io/api/operator/registry lists the operator key of every accepted application, the operator id made from that key, and when it was accepted, whether or not it holds a seat; and a federation charter lists the operator key of each seated guardian. Nothing else from an application is published yet. Nothing is checked against an ID."
|
|
1317
1333
|
},
|
|
1318
1334
|
{
|
|
1319
1335
|
k: "messages you send us",
|
|
@@ -1321,7 +1337,7 @@ var privacy2 = {
|
|
|
1321
1337
|
},
|
|
1322
1338
|
{
|
|
1323
1339
|
k: "public anchors",
|
|
1324
|
-
v: "an OpenTimestamps proof over each envelope\u2019s hash, and a salted commitment to each envelope on Nostr. Public by design, and neither names you, the site or the amount. The envelope itself is served only to whoever holds its id.
|
|
1340
|
+
v: "an OpenTimestamps proof over each envelope\u2019s hash, and a salted commitment to each envelope on Nostr. Public by design, and neither names you, the site or the amount. The envelope itself is served only to whoever holds its id. A drop\u2019s manifest is published in full: it names the site\u2019s project, the drop\u2019s label and window, how many events and people it counted, its fees and what its recipients were paid in all, and no person."
|
|
1325
1341
|
}
|
|
1326
1342
|
]
|
|
1327
1343
|
}
|
|
@@ -1333,11 +1349,34 @@ var privacy2 = {
|
|
|
1333
1349
|
blocks: [
|
|
1334
1350
|
{
|
|
1335
1351
|
kind: "para",
|
|
1336
|
-
text: "Each site gets its own subject id for events: a **scoped subject**, derived from your account and that site\u2019s project key, so the site recognizes you when you return. But signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you.
|
|
1352
|
+
text: "Each site gets its own subject id for events: a **scoped subject**, derived from your account and that site\u2019s project key, so the site recognizes you when you return. But signing in gives every site the same orangecheck id (did:oc), so sites that compare ids can tell it is you. If you back your account with a coin, signing in also tells the site the amount and age floors the coin meets, when it was last checked, and a number for that coin that differs from site to site (all *.ochk.io sites share one); never the coin, its address or its amount."
|
|
1337
1353
|
},
|
|
1338
1354
|
{
|
|
1339
1355
|
kind: "para",
|
|
1340
|
-
text: "
|
|
1356
|
+
text: "Anything more, a site receives only if you **share it** with that site. Each share is opt-in, for one site, and revocable at any time from your account. A site can ask for:"
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
kind: "bullets",
|
|
1360
|
+
items: [
|
|
1361
|
+
{ k: "your Bitcoin address", v: "the address you added to your account" },
|
|
1362
|
+
{ k: "your email", v: "the email address you added to your account" },
|
|
1363
|
+
{
|
|
1364
|
+
k: "your activity",
|
|
1365
|
+
v: "six numbers, each shared on its own, none naming an app: how many events count for you across every app, how many of those you did yourself rather than an agent acting for you, the sats apps have paid you in all, how many apps have recorded events for you, when your first event was, and on how many days you have been active"
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
k: "your statements, counted",
|
|
1369
|
+
v: "four numbers about the statements other apps have made about you: how many, how many good, from how many apps, and how many cautions"
|
|
1370
|
+
},
|
|
1371
|
+
{
|
|
1372
|
+
k: "your statements",
|
|
1373
|
+
v: "the statements you choose, each in full: which app made it, what it says and when it ends. A statement you refused is never shared"
|
|
1374
|
+
}
|
|
1375
|
+
]
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
kind: "para",
|
|
1379
|
+
text: "No share gives a site your balance, your site sign-ins or your events on other sites. Only your statements name another app, with what it said about you."
|
|
1341
1380
|
}
|
|
1342
1381
|
]
|
|
1343
1382
|
},
|
|
@@ -1358,11 +1397,65 @@ var privacy2 = {
|
|
|
1358
1397
|
blocks: [
|
|
1359
1398
|
{
|
|
1360
1399
|
kind: "para",
|
|
1361
|
-
text: "On ochk.app,
|
|
1400
|
+
text: "On ochk.app, these cookies of its own, each set for ochk.app alone. The `__Host-` ones are Secure and SameSite=Lax, and HttpOnly, so no page script can read them, unless said otherwise."
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
kind: "bullets",
|
|
1404
|
+
items: [
|
|
1405
|
+
{
|
|
1406
|
+
k: "your session",
|
|
1407
|
+
v: "`__Host-oc_session`: the sign-in token of the account you are using, bound to ochk.app; it cannot sign you in anywhere else. Kept as long as the token is valid."
|
|
1408
|
+
},
|
|
1409
|
+
{
|
|
1410
|
+
k: "other accounts",
|
|
1411
|
+
v: "`__Host-oc_also_0`, `__Host-oc_also_1` and `__Host-oc_also_2`: the sign-in tokens of up to three other accounts signed in in this browser, so you can switch to one. Each is kept as long as its token is valid, and cleared when that account signs out."
|
|
1412
|
+
},
|
|
1413
|
+
{
|
|
1414
|
+
k: "active account",
|
|
1415
|
+
v: "`__Host-oc_active`: the did:oc of the account you are using, so the page can show that account\u2019s places before they load. It is not HttpOnly: ochk.app\u2019s own page script reads it. Kept as long as the session."
|
|
1416
|
+
},
|
|
1417
|
+
{
|
|
1418
|
+
k: "google or github sign-in",
|
|
1419
|
+
v: "`__Host-oc_oauth`: kept for at most ten minutes while you sign in with Google or GitHub, then deleted."
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
k: "sign-in handoff",
|
|
1423
|
+
v: "`__Host-oc_handoff_guard`, `__Host-oc_handoff_` followed by the sign-in\u2019s state, and `__Host-oc_to_io`: each kept for at most two minutes while a sign-in passes between ochk.app and ochk.io."
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
k: "logo",
|
|
1427
|
+
v: "`oc_logo`: which of our two logos you chose, set only when you open a page with `?logo=` in its address and kept for a year; `?logo=classic` deletes it."
|
|
1428
|
+
}
|
|
1429
|
+
]
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
kind: "para",
|
|
1433
|
+
text: "ochk.app also keeps these in your browser, outside cookies. Unlike cookies, your browser attaches none of them to its requests; ochk.app\u2019s scripts send one only in the request that uses it."
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
kind: "bullets",
|
|
1437
|
+
items: [
|
|
1438
|
+
{
|
|
1439
|
+
k: "local storage",
|
|
1440
|
+
v: "your light or dark choice, under `theme`; the code tab you last picked; your alert switches on the account page and, on the balance page, when and where to suggest moving your balance, as this browser last saw them; the setup steps you ticked, in the quickstart and on each of your projects\u2019 pages; and, for each account signed in here, which of its areas it could open when last checked, so a reload draws them at once. Every page still checks on the server."
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
k: "each tab",
|
|
1444
|
+
v: "what a sign-in, a Google or GitHub link, a sign-out, a claim, a check or a write in progress needs, until the tab closes."
|
|
1445
|
+
},
|
|
1446
|
+
{
|
|
1447
|
+
k: "IndexedDB",
|
|
1448
|
+
v: "only if you make, restore or import an operator key on the operator page: the key pair, its operator id, when it was added here, whether it was made in a browser or imported from the kit, and the version of the record, in `oc-operator-key`, filed under that account\u2019s id until you delete it there. No request carries the private key; ochk.app\u2019s scripts read it to sign your operator actions, and show it to you only when you ask."
|
|
1449
|
+
}
|
|
1450
|
+
]
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
kind: "para",
|
|
1454
|
+
text: "Page analytics on ochk.app use two counters, neither of which sets a cookie. orangecheck\u2019s own counter at insights.ochk.io counts a visit by a hash salted daily; the salt is deleted after 48 hours, and your IP address and browser string are never stored. Our operations dashboard at overlook.technology keeps each page\u2019s path, except pages whose address can name a person or a project, where you came from and any campaign tags, your country, region and city, and your device, browser and operating system. It counts a visitor by a hash of your IP address and browser salted daily, deletes each salt within two days, and never stores your IP address or browser string. To opt out of overlook.technology, open any page with `?ov_ignore=1`; that choice is kept in your browser\u2019s local storage."
|
|
1362
1455
|
},
|
|
1363
1456
|
{
|
|
1364
1457
|
kind: "para",
|
|
1365
|
-
text: "On me.ochk.io,
|
|
1458
|
+
text: "On me.ochk.io, whichever of the cookies shared across ochk.io\u2019s sites (Domain=.ochk.io) your browser holds. `oc_session` \u2014 the Ed25519-signed session token issued by ochk.io (HttpOnly, Secure, SameSite=None). `oc_theme`, `oc_skin`, `oc_motion` and `oc_logo` \u2014 your dark/light, appearance, reduced-motion and logo preferences, not auth-bearing. Of these, me.ochk.io sets only `oc_logo`, when you open one of its pages with `?logo=` in the address. No tracking cookies, no advertising IDs, no third-party pixels. Page analytics on me.ochk.io use two cookie-free counters, each sent the page\u2019s origin and path and nothing more of its address than campaign tags: [Plausible](https://plausible.io/privacy) and the same orangecheck counter as on ochk.app."
|
|
1366
1459
|
}
|
|
1367
1460
|
]
|
|
1368
1461
|
},
|
|
@@ -1390,7 +1483,7 @@ var privacy2 = {
|
|
|
1390
1483
|
items: [
|
|
1391
1484
|
{
|
|
1392
1485
|
k: "event & rebind envelopes",
|
|
1393
|
-
v: "retained as the canonical earnings and custody-state record; their hashes on Bitcoin and commitments on Nostr are immutable"
|
|
1486
|
+
v: "retained as the canonical earnings and custody-state record until your account is deleted; their hashes on Bitcoin and commitments on Nostr are immutable"
|
|
1394
1487
|
},
|
|
1395
1488
|
{
|
|
1396
1489
|
k: "request logs",
|
|
@@ -1406,7 +1499,7 @@ var privacy2 = {
|
|
|
1406
1499
|
},
|
|
1407
1500
|
{
|
|
1408
1501
|
k: "account row",
|
|
1409
|
-
v: "deleted, with your sign-in identities, passkeys, sessions
|
|
1502
|
+
v: "deleted, with your sign-in identities, passkeys, sessions, sign-in log, coin backings and OC Chat device records, when your account-deletion request completes; anchored and published data cannot be deleted by anyone"
|
|
1410
1503
|
}
|
|
1411
1504
|
]
|
|
1412
1505
|
}
|
|
@@ -1418,7 +1511,7 @@ var privacy2 = {
|
|
|
1418
1511
|
blocks: [
|
|
1419
1512
|
{
|
|
1420
1513
|
kind: "para",
|
|
1421
|
-
text: "HTTPS in transit; emails encrypted
|
|
1514
|
+
text: "HTTPS in transit; emails stored encrypted, beside the hashes named under what orangecheck stores; access to production data is allowlisted and audit-logged. No method of storage is perfectly secure \u2014 we use reasonable measures but do not warrant security; see the [Terms of Service](/terms). If we become aware of a breach of personal data we hold, we will notify affected users and any competent supervisory authority as required by applicable law."
|
|
1422
1515
|
}
|
|
1423
1516
|
]
|
|
1424
1517
|
},
|
|
@@ -1452,7 +1545,7 @@ var privacy2 = {
|
|
|
1452
1545
|
privacyChildren,
|
|
1453
1546
|
privacyChanges
|
|
1454
1547
|
],
|
|
1455
|
-
summary: "summary: no kyc, no pii required, and
|
|
1548
|
+
summary: "summary: no kyc, no pii required, and what orangecheck keeps about you, who sees it, and how it is deleted."
|
|
1456
1549
|
};
|
|
1457
1550
|
var meProfile = { terms: terms2, privacy: privacy2 };
|
|
1458
1551
|
|