canopy-engine 0.1.5 → 0.1.8
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/LICENSE +30 -24
- package/PRIVACY.md +72 -0
- package/README.md +241 -231
- package/dist/canopy.js +89 -79
- package/dist/{chunk-JZZ4VDNH.js → chunk-4XUKEJ3C.js} +1 -1
- package/dist/chunk-AGOP4Q7U.js +12 -0
- package/dist/chunk-B5D2E2HN.js +5 -0
- package/dist/{chunk-3NY67ODS.js → chunk-DRLW6UU3.js} +1 -1
- package/dist/chunk-DT3LR6DW.js +25 -0
- package/dist/{chunk-NW4RXPYG.js → chunk-F535OXGZ.js} +1 -1
- package/dist/chunk-HSFPQRFR.js +6 -0
- package/dist/{chunk-SR4HILUN.js → chunk-ILPARXQH.js} +1 -1
- package/dist/{chunk-5KSCMRFH.js → chunk-LAKMPJML.js} +1 -1
- package/dist/{chunk-OGPL4QTW.js → chunk-MWFO5O33.js} +1 -1
- package/dist/chunk-SVREO35Y.js +5 -0
- package/dist/chunk-TV6NLY7O.js +14 -0
- package/dist/{chunk-KGDTP5LR.js → chunk-W57Z6UQP.js} +1 -1
- package/dist/chunk-Y3GNG3XL.js +7 -0
- package/dist/chunk-ZE3NJMCS.js +5 -0
- package/dist/chunk-ZF5SEDQB.js +5 -0
- package/dist/chunk-ZQ6F3H6X.js +5 -0
- package/package.json +12 -3
- package/ui-react/dist/bundle.css +1 -1
- package/ui-react/dist/bundle.js +53 -48
- package/dist/chunk-67UE7CV6.js +0 -6
- package/dist/chunk-AF33YUHF.js +0 -7
- package/dist/chunk-DVXET5T4.js +0 -5
- package/dist/chunk-LLZJOZFY.js +0 -20
- package/dist/chunk-WCTNLSYC.js +0 -14
package/LICENSE
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
|
-
Canopy Beta License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Spill It Labs Private Limited. All rights reserved.
|
|
4
|
-
|
|
5
|
-
Permission is granted, free of charge, to use this software
|
|
6
|
-
("Canopy") for personal, educational, evaluation and
|
|
7
|
-
non-commercial purposes, on your own computer, subject to these
|
|
8
|
-
terms:
|
|
9
|
-
|
|
10
|
-
1. No redistribution. You may not copy, publish, sublicense, sell
|
|
11
|
-
or otherwise distribute Canopy or any part of it.
|
|
12
|
-
2. No reverse engineering. You may not decompile, disassemble or
|
|
13
|
-
attempt to extract the source code of Canopy, except where
|
|
14
|
-
applicable law forbids this restriction.
|
|
15
|
-
3. Commercial use. Use inside a company or for paid work needs a
|
|
16
|
-
separate written agreement. Contact: canopy.spillitlabs@gmail.com.
|
|
17
|
-
4. Your code stays yours. Canopy runs locally and does not
|
|
18
|
-
your source code anywhere.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
Canopy Beta License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Spill It Labs Private Limited. All rights reserved.
|
|
4
|
+
|
|
5
|
+
Permission is granted, free of charge, to use this software
|
|
6
|
+
("Canopy") for personal, educational, evaluation and
|
|
7
|
+
non-commercial purposes, on your own computer, subject to these
|
|
8
|
+
terms:
|
|
9
|
+
|
|
10
|
+
1. No redistribution. You may not copy, publish, sublicense, sell
|
|
11
|
+
or otherwise distribute Canopy or any part of it.
|
|
12
|
+
2. No reverse engineering. You may not decompile, disassemble or
|
|
13
|
+
attempt to extract the source code of Canopy, except where
|
|
14
|
+
applicable law forbids this restriction.
|
|
15
|
+
3. Commercial use. Use inside a company or for paid work needs a
|
|
16
|
+
separate written agreement. Contact: canopy.spillitlabs@gmail.com.
|
|
17
|
+
4. Your code stays yours. Canopy itself runs locally and does not
|
|
18
|
+
send your source code anywhere. Its only network features are
|
|
19
|
+
the update check (shown in the viewer, or run `canopy update`;
|
|
20
|
+
turn it off with CANOPY_NO_UPDATE_CHECK=1) and optional, opt-in
|
|
21
|
+
anonymous usage statistics described in PRIVACY.md. If you use
|
|
22
|
+
the Ask AI panel, Canopy starts your own Claude Code on your
|
|
23
|
+
computer, and parts of your code that Canopy's tools return may
|
|
24
|
+
be processed by Anthropic under your own account and terms.
|
|
25
|
+
Canopy never sees your credentials.
|
|
26
|
+
5. No warranty. Canopy is provided "as is", without warranty of
|
|
27
|
+
any kind. The author is not liable for any damages arising from
|
|
28
|
+
its use.
|
|
29
|
+
6. Ending. This license ends automatically if you break these
|
|
30
|
+
terms. The author may change the license for future versions.
|
package/PRIVACY.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
Short version: Canopy runs on your computer. Your code is never sent anywhere by Canopy. There is one optional network check (the update notice) and one optional, opt-in feature (anonymous usage counts) that is **off until you say yes**.
|
|
4
|
+
|
|
5
|
+
## What Canopy does locally
|
|
6
|
+
|
|
7
|
+
- It reads your project's JavaScript / TypeScript files on your computer and builds a map. The map, the search index, the history and your choices are stored in a `.canopy/` folder inside your project (kept out of git automatically). Nothing in it is uploaded.
|
|
8
|
+
- It serves the viewer on `127.0.0.1` (your own computer only), protected by a random per-session key.
|
|
9
|
+
- **Ask AI** starts the Claude Code program that is already installed on your computer (for example the one inside the VS Code extension), with your own login and plan. Canopy never calls an AI service itself, never sees or stores your credentials, and never reads Claude's login or session files. What Claude Code does with your question, and what it sends to Anthropic, is governed by Anthropic's terms and your own account, not by Canopy. The questions and answers are not kept by Canopy; only the id of the Claude conversation is remembered in `.canopy/ai-session.json` so follow-up questions work, and the path of the Claude Code program you allowed is saved in `.canopy/prefs.json`.
|
|
10
|
+
- **Send feedback** and the hint at the end of `canopy sync` are `mailto:` links. They open your own mail program with the subject filled in and an empty message. Canopy sends nothing itself.
|
|
11
|
+
|
|
12
|
+
## The update check
|
|
13
|
+
|
|
14
|
+
The viewer can ask `https://registry.npmjs.org/canopy-engine/latest` once when it loads, to tell you if a newer version exists, and `canopy update` uses npm. The request carries no cookies, no identifiers and no information about you or your project. Turn the viewer's check off with `CANOPY_NO_UPDATE_CHECK=1`.
|
|
15
|
+
|
|
16
|
+
## Optional anonymous usage counts
|
|
17
|
+
|
|
18
|
+
**Off by default. Opt-in only.** The first time you run Canopy in an interactive terminal, it asks once:
|
|
19
|
+
|
|
20
|
+
> Help improve Canopy? Share anonymous usage counts (no code, no file or project names, no questions). You can change this any time with `canopy telemetry off`. [y/N]
|
|
21
|
+
|
|
22
|
+
Pressing Enter means **No**. Commands, scripts, CI, `--quiet` runs and the commit hook never ask and never send. `DO_NOT_TRACK=1`, `CANOPY_TELEMETRY=0` or a `CI` environment variable switch it off no matter what was chosen earlier.
|
|
23
|
+
|
|
24
|
+
Control it any time: `canopy telemetry status`, `on`, `off` (which also deletes your random id), and `show` (prints exactly what would be sent). The choice and the random id live in your user config folder (Windows `%APPDATA%\canopy\config.json`, otherwise `~/.config/canopy/config.json`), not inside any project.
|
|
25
|
+
|
|
26
|
+
### Exactly what can be sent
|
|
27
|
+
|
|
28
|
+
Every event carries: the event name, a random install id (a UUID made only after you say yes, not linked to you), a UTC timestamp, the Canopy version, the operating system family (`win32`, `darwin` or `linux`), the CPU architecture, the Node major version, and the editor you started Canopy from if known (`vscode`, `cursor`, `other`, `none`).
|
|
29
|
+
|
|
30
|
+
Events and their only extra fields (each a fixed word or a whole number):
|
|
31
|
+
|
|
32
|
+
| event | extra fields |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `first_run` | none |
|
|
35
|
+
| `sync_completed` | duration bucket (`<5s`, `5-30s`, `30s-2m`, `2-10m`, `10m+`), number-of-files bucket (`<500`, `500-2k`, `2k-10k`, `10k+`), number-of-services bucket (`1`, `2-3`, `4-10`, `10+`), `ok` / `error`, an error code from a fixed list |
|
|
36
|
+
| `viewer_opened` | none |
|
|
37
|
+
| `search_used` | a count |
|
|
38
|
+
| `workflow_opened` | a count |
|
|
39
|
+
| `ask_ai_used` | a count, result (`ok`, `error`, `cancelled`), where Claude Code was found (`vscode`, `path`, `env`), answer-time bucket (`<10s`, `10-30s`, `30-90s`, `90s+`) |
|
|
40
|
+
| `feedback_link_clicked` | a count |
|
|
41
|
+
| `update_toast_shown` | a count |
|
|
42
|
+
| `error` | an error code from a fixed list (never a message) |
|
|
43
|
+
|
|
44
|
+
A single function in the code (`src/telemetry/events.js`) enforces this list: any other field is dropped, and a value that is not one of the listed words or a whole number is dropped too.
|
|
45
|
+
|
|
46
|
+
### What is never collected
|
|
47
|
+
|
|
48
|
+
Your code; file paths; repository, project, function, node or workflow names; search text; your questions to Ask AI or the answers; error messages; environment variables or their values; user names, computer names or host names; your country. Requests ask the server not to store an IP address, and no person profile is created.
|
|
49
|
+
|
|
50
|
+
### How it is sent
|
|
51
|
+
|
|
52
|
+
Counters are kept in memory and sent as one HTTPS request when Canopy exits and every 5 minutes while the viewer runs. The request has a 2-second limit, is never retried, and nothing is queued on disk. If it fails, nothing happens and Canopy carries on. Nothing is sent unless this build of Canopy has a statistics address configured (it is empty in development builds).
|
|
53
|
+
|
|
54
|
+
### Where it goes
|
|
55
|
+
|
|
56
|
+
To a PostHog project in the EU region (`eu.i.posthog.com`) run by the maker of Canopy. Processor: PostHog (EU cloud region).
|
|
57
|
+
|
|
58
|
+
### How long it is kept
|
|
59
|
+
|
|
60
|
+
*[Founder to state before launch: the retention period, for example "26 months, then deleted".]*
|
|
61
|
+
|
|
62
|
+
### Your rights
|
|
63
|
+
|
|
64
|
+
Because the counts are anonymous and carry only a random id, they cannot be tied to you. If you want the data for your install id removed, run `canopy telemetry status`, note the choice file, and email the id from that file to the contact below. After `canopy telemetry off` the id is deleted from your computer and no new data is sent.
|
|
65
|
+
|
|
66
|
+
## Contact
|
|
67
|
+
|
|
68
|
+
canopy.spillitlabs@gmail.com
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
*This document describes how Canopy behaves. It has not yet been reviewed by a lawyer; do that before a public launch.*
|