pi-cloud 2.0.0
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/.env.example +115 -0
- package/CHANGELOG.md +177 -0
- package/LICENSE +201 -0
- package/README.md +134 -0
- package/README.zh-CN.md +134 -0
- package/THIRD_PARTY_NOTICES +13 -0
- package/bin/pi-cloud.mjs +248 -0
- package/bin/runtime-config.mjs +11 -0
- package/client/dist/.vite/manifest.json +1553 -0
- package/client/dist/android-chrome-192x192.png +0 -0
- package/client/dist/android-chrome-512x512.png +0 -0
- package/client/dist/apple-touch-icon.png +0 -0
- package/client/dist/assets/EditorPanel-C4j_LnbI.js +968 -0
- package/client/dist/assets/EditorPanel-qAJ9i_Hs.css +1 -0
- package/client/dist/assets/GitHistoryView-BZF9vYG5.css +1 -0
- package/client/dist/assets/GitHistoryView-i__uu43I.js +2 -0
- package/client/dist/assets/MemoryCenter-BthPz7a1.css +1 -0
- package/client/dist/assets/MemoryCenter-DOvz1FIy.js +1 -0
- package/client/dist/assets/MesloLGMNerdFontMono-Regular-COOxA6qy.ttf +0 -0
- package/client/dist/assets/PhCaretLeft.vue-C3HxQ-jr.js +1 -0
- package/client/dist/assets/SettingsDialog-BTyTnZYM.css +1 -0
- package/client/dist/assets/SettingsDialog-VlpollL1.js +2 -0
- package/client/dist/assets/TaskQueuePanel-Bnvgy4cm.css +1 -0
- package/client/dist/assets/TaskQueuePanel-DPnDhZFb.js +1 -0
- package/client/dist/assets/TerminalPanel-BQhGwCE5.js +1 -0
- package/client/dist/assets/TerminalPanel-DmemnVxo.css +1 -0
- package/client/dist/assets/abap-DLDM7-KI.js +1 -0
- package/client/dist/assets/abnfDiagram-VCTEODGH-DyGBNBbN.js +1 -0
- package/client/dist/assets/apex-DNDY2TF8.js +1 -0
- package/client/dist/assets/arc-B_21hOEg.js +1 -0
- package/client/dist/assets/architectureDiagram-5GKGNRK7-CjyAJ-2z.js +36 -0
- package/client/dist/assets/azcli-Y6nb8tq_.js +1 -0
- package/client/dist/assets/bat-BwHxbl9M.js +1 -0
- package/client/dist/assets/bicep-CFznDFnq.js +2 -0
- package/client/dist/assets/blockDiagram-NRAW4CY4-CmrEp6Fe.js +129 -0
- package/client/dist/assets/c4Diagram-UCG6FXSJ-DfT2xU1s.js +38 -0
- package/client/dist/assets/cameligo-Bf6VGUru.js +1 -0
- package/client/dist/assets/channel-CROBmx9n.js +1 -0
- package/client/dist/assets/chunk-2Q5K7J3B-BVEJoy95.js +1 -0
- package/client/dist/assets/chunk-5VM5RSS4-AYOc2H0F.js +15 -0
- package/client/dist/assets/chunk-F27PBJKO-CAdIcM4C.js +1 -0
- package/client/dist/assets/chunk-G27WJ6UU-Bk4Qjg6Y.js +231 -0
- package/client/dist/assets/chunk-JWPE2WC7-u-wi2HbJ.js +1 -0
- package/client/dist/assets/chunk-LCL6LL3I-BgicKCMi.js +206 -0
- package/client/dist/assets/chunk-POPQ4Y6H-DhJ3_oti.js +1 -0
- package/client/dist/assets/chunk-SVP7TREG-B-FKnWYy.js +88 -0
- package/client/dist/assets/chunk-XXDRQBXY-Dnsv7iwr.js +1 -0
- package/client/dist/assets/classDiagram-DTDB5LWJ-D2KSupgp.js +1 -0
- package/client/dist/assets/classDiagram-v2-JRS7N3AN-D2KSupgp.js +1 -0
- package/client/dist/assets/clojure-Dnu-v4kV.js +1 -0
- package/client/dist/assets/codicon-Brq4_Ui5.ttf +0 -0
- package/client/dist/assets/coffee-Bd8akH9Z.js +1 -0
- package/client/dist/assets/cose-bilkent-JH36ORCC-DL2lIpOf.js +1 -0
- package/client/dist/assets/cpp-BbWJElDN.js +1 -0
- package/client/dist/assets/csharp-Co3qMtFm.js +1 -0
- package/client/dist/assets/csp-D-4FJmMZ.js +1 -0
- package/client/dist/assets/css-DdJfP1eB.js +3 -0
- package/client/dist/assets/css.worker-CXZsIV5y.js +97 -0
- package/client/dist/assets/cssMode-BcZYukVu.js +1 -0
- package/client/dist/assets/cynefin-OW5HDTMX-tZ1QaCp9.js +166 -0
- package/client/dist/assets/cynefinDiagram-5FMLGOSQ-GLzVU_pJ.js +62 -0
- package/client/dist/assets/cypher-cTPe9QuQ.js +1 -0
- package/client/dist/assets/cytoscape.esm-yzknjiTM.js +321 -0
- package/client/dist/assets/dagre-3AP2YEHR-B8V1RvVr.js +4 -0
- package/client/dist/assets/dart-BOtBlQCF.js +1 -0
- package/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/client/dist/assets/diagram-S7CK7UJ4-MTofUt2F.js +30 -0
- package/client/dist/assets/diagram-UQ7AKVKN-Dw6Onbe3.js +41 -0
- package/client/dist/assets/diagram-VSXAHHWV-C4WupsI1.js +3 -0
- package/client/dist/assets/diagram-VX7I27RA-CF78AvRx.js +24 -0
- package/client/dist/assets/diagram-Z3DM3KII-xT7zx4S2.js +24 -0
- package/client/dist/assets/dockerfile-BG73LgW2.js +1 -0
- package/client/dist/assets/ebnfDiagram-PWID7BFC-zkR-_zOG.js +1 -0
- package/client/dist/assets/ecl-BEgZUVRK.js +1 -0
- package/client/dist/assets/editor.worker-CRaYpIdo.js +30 -0
- package/client/dist/assets/elixir-BkW5O-1t.js +1 -0
- package/client/dist/assets/erDiagram-SSCWMZ5O-BzU9E1j8.js +99 -0
- package/client/dist/assets/flow9-BeJ5waoc.js +1 -0
- package/client/dist/assets/flowDiagram-A5DVABFB-BM-160SB.js +168 -0
- package/client/dist/assets/freemarker2-B4PXq-2i.js +3 -0
- package/client/dist/assets/fsharp-PahG7c26.js +1 -0
- package/client/dist/assets/ganttDiagram-EL5Y4UJY-LVhMiHMo.js +292 -0
- package/client/dist/assets/gitGraphDiagram-WWUBYQGX-CYGEpNO-.js +106 -0
- package/client/dist/assets/go-acbASCJo.js +1 -0
- package/client/dist/assets/graphql-BxJiqAUM.js +1 -0
- package/client/dist/assets/handlebars-DleyW4LO.js +1 -0
- package/client/dist/assets/hcl-DtV1sZF8.js +1 -0
- package/client/dist/assets/html-BJ95-ybC.js +1 -0
- package/client/dist/assets/html.worker-Ca87u24v.js +474 -0
- package/client/dist/assets/html2canvas.esm-DXEQVQnt.js +5 -0
- package/client/dist/assets/htmlMode-Cqq8N0XF.js +1 -0
- package/client/dist/assets/index-C1R3qRwd.js +407 -0
- package/client/dist/assets/index-D1Z3F2UU.css +1 -0
- package/client/dist/assets/index-PSBDlhaw.js +39 -0
- package/client/dist/assets/infoDiagram-RXCK75RN-Ctmoz63S.js +2 -0
- package/client/dist/assets/ini-Kd9XrMLS.js +1 -0
- package/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/client/dist/assets/ishikawaDiagram-5VMMS53U-DiWG9VHU.js +70 -0
- package/client/dist/assets/java-CXBNlu9o.js +1 -0
- package/client/dist/assets/javascript-BIGigzp1.js +1 -0
- package/client/dist/assets/journeyDiagram-EYS64GPL-CImdI3K_.js +139 -0
- package/client/dist/assets/json.worker-C5PEkLU0.js +62 -0
- package/client/dist/assets/jsonMode-l6_K9bFf.js +7 -0
- package/client/dist/assets/julia-cl7-CwDS.js +1 -0
- package/client/dist/assets/kanban-definition-3QL26DDD-CSSranPL.js +89 -0
- package/client/dist/assets/katex-HP8lGamR.js +257 -0
- package/client/dist/assets/kotlin-s7OhZKlX.js +1 -0
- package/client/dist/assets/layout-CE5PddK3.js +1 -0
- package/client/dist/assets/less-9HpZscsL.js +2 -0
- package/client/dist/assets/lexon-OrD6JF1K.js +1 -0
- package/client/dist/assets/linear-CkzMiZL-.js +1 -0
- package/client/dist/assets/liquid-C8hVjUZv.js +1 -0
- package/client/dist/assets/lspLanguageFeatures-ZfiCKJ_J.js +4 -0
- package/client/dist/assets/lua-Cyyb5UIc.js +1 -0
- package/client/dist/assets/m3-B8OfTtLu.js +1 -0
- package/client/dist/assets/markdown-BFxVWTOG.js +1 -0
- package/client/dist/assets/mdx-DWmYYep4.js +1 -0
- package/client/dist/assets/mermaid.core-BlcsAN4s.js +308 -0
- package/client/dist/assets/mindmap-definition-FBJOCRG2-D01B1gH8.js +96 -0
- package/client/dist/assets/mips-CiqrrVzr.js +1 -0
- package/client/dist/assets/msdax-DmeGPVcC.js +1 -0
- package/client/dist/assets/mysql-C_tMU-Nz.js +1 -0
- package/client/dist/assets/objective-c-BDtDVThU.js +1 -0
- package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/client/dist/assets/pascal-vHIfCaH5.js +1 -0
- package/client/dist/assets/pascaligo-DtZ0uQbO.js +1 -0
- package/client/dist/assets/pdf-DMRcuM1e.js +55 -0
- package/client/dist/assets/pdf.worker.min-CHFwMXne.mjs +29 -0
- package/client/dist/assets/pegDiagram-XKGWAZYB-DhdSTBt5.js +1 -0
- package/client/dist/assets/perl-Ub6l9XKa.js +1 -0
- package/client/dist/assets/pgsql-BlNEE0v7.js +1 -0
- package/client/dist/assets/php-BBUBE1dy.js +1 -0
- package/client/dist/assets/pieDiagram-E7YTZNPT-hVSzmo7b.js +39 -0
- package/client/dist/assets/pla-DSh2-awV.js +1 -0
- package/client/dist/assets/postiats-CocnycG-.js +1 -0
- package/client/dist/assets/powerquery-tScXyioY.js +1 -0
- package/client/dist/assets/powershell-COWaemsV.js +1 -0
- package/client/dist/assets/protobuf-Brw8urJB.js +2 -0
- package/client/dist/assets/pug-8SOpv6rk.js +1 -0
- package/client/dist/assets/python-AbIuqkub.js +1 -0
- package/client/dist/assets/qsharp-Bw9ernYp.js +1 -0
- package/client/dist/assets/quadrantDiagram-AXDQQJYC-CVexQ_Dn.js +7 -0
- package/client/dist/assets/r-j7ic8hl3.js +1 -0
- package/client/dist/assets/railroadDiagram-O6MQD6OU-BPCMbhAx.js +1 -0
- package/client/dist/assets/razor-PLr1HLk0.js +1 -0
- package/client/dist/assets/redis-Bu5POkcn.js +1 -0
- package/client/dist/assets/redshift-Bs9aos_-.js +1 -0
- package/client/dist/assets/requirementDiagram-EFPCY7ZU-EntABUqc.js +84 -0
- package/client/dist/assets/restructuredtext-CqXO7rUv.js +1 -0
- package/client/dist/assets/ruby-zBfavPgS.js +1 -0
- package/client/dist/assets/rust-BzKRNQWT.js +1 -0
- package/client/dist/assets/sankeyDiagram-P5KCCOFB-D68oih_M.js +40 -0
- package/client/dist/assets/sb-BBc9UKZt.js +1 -0
- package/client/dist/assets/scala-D9hQfWCl.js +1 -0
- package/client/dist/assets/scheme-BPhDTwHR.js +1 -0
- package/client/dist/assets/scss-CBJaRo0y.js +3 -0
- package/client/dist/assets/sequenceDiagram-WJ2MYXX4-DWzaT5vI.js +162 -0
- package/client/dist/assets/shell-DiJ1NA_G.js +1 -0
- package/client/dist/assets/sizeCapture-X5ZJPWSS-HbYBaSbU.js +1 -0
- package/client/dist/assets/solidity-Db0IVjzk.js +1 -0
- package/client/dist/assets/sophia-CnS9iZB_.js +1 -0
- package/client/dist/assets/sparql-CJmd_6j2.js +1 -0
- package/client/dist/assets/sql-ClhHkBeG.js +1 -0
- package/client/dist/assets/st-CHwy0fLd.js +1 -0
- package/client/dist/assets/stateDiagram-HBIQ2CUA-BteRSnYL.js +1 -0
- package/client/dist/assets/stateDiagram-v2-4QOOHH4V-CN8Njcij.js +1 -0
- package/client/dist/assets/swift-CnmFD0ga.js +1 -0
- package/client/dist/assets/swimlanes-XN3QIQJK-BAvVt5mV.js +1 -0
- package/client/dist/assets/swimlanesDiagram-VK2B7HYN-p55moRoN.js +8 -0
- package/client/dist/assets/systemverilog-Bs9z6M-B.js +1 -0
- package/client/dist/assets/tcl-Dm6ycUr_.js +1 -0
- package/client/dist/assets/timeline-definition-24CTP7MA-D6yKUiYl.js +120 -0
- package/client/dist/assets/ts.worker-Y8i9TNcE.js +67722 -0
- package/client/dist/assets/tsMode-DrakxHLR.js +11 -0
- package/client/dist/assets/twig-Csy3S7wG.js +1 -0
- package/client/dist/assets/typescript-DcMOCMAD.js +1 -0
- package/client/dist/assets/typespec-Btyra-wh.js +1 -0
- package/client/dist/assets/useTerminal-DDGTF8rc.css +1 -0
- package/client/dist/assets/useTerminal-Dhk5K03J.js +20 -0
- package/client/dist/assets/vb-Db0cS2oM.js +1 -0
- package/client/dist/assets/vennDiagram-4TSXK5OY-CGU61Pyq.js +34 -0
- package/client/dist/assets/wardleyDiagram-VM6X3IG4-BrTe4Lxv.js +78 -0
- package/client/dist/assets/wgsl-BTesnYfV.js +298 -0
- package/client/dist/assets/workers-CqVatS52.js +1 -0
- package/client/dist/assets/xml-xUSiNagm.js +1 -0
- package/client/dist/assets/xychartDiagram-S5SC5T6Z-CnMmHAmD.js +7 -0
- package/client/dist/assets/yaml-CSavWraE.js +1 -0
- package/client/dist/favicon-16x16.ico +0 -0
- package/client/dist/favicon-16x16.png +0 -0
- package/client/dist/favicon-32x32.ico +0 -0
- package/client/dist/favicon-32x32.png +0 -0
- package/client/dist/favicon.ico +0 -0
- package/client/dist/favicon.svg +10 -0
- package/client/dist/icon.svg +17 -0
- package/client/dist/index.html +43 -0
- package/client/dist/site.webmanifest +19 -0
- package/client/src/assets/fonts/MesloLGMNerdFontMono-Regular.LICENSE +126 -0
- package/package.json +74 -0
- package/server/dist/index.js +15143 -0
package/.env.example
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Server
|
|
3
|
+
# =============================================================================
|
|
4
|
+
|
|
5
|
+
# Backend bind address and port.
|
|
6
|
+
# For public deployments behind nginx, keep HOST bound to localhost.
|
|
7
|
+
HOST=127.0.0.1
|
|
8
|
+
PORT=3000
|
|
9
|
+
|
|
10
|
+
# Frontend development server port.
|
|
11
|
+
FRONTEND_PORT=5173
|
|
12
|
+
|
|
13
|
+
# =============================================================================
|
|
14
|
+
# Authentication and sessions
|
|
15
|
+
# =============================================================================
|
|
16
|
+
|
|
17
|
+
PI_CLOUD_AUTH_USERNAME=yourname
|
|
18
|
+
|
|
19
|
+
# Development or simple setups only. Prefer PI_CLOUD_AUTH_PASSWORD_HASH in production.
|
|
20
|
+
PI_CLOUD_AUTH_PASSWORD=change-me-for-dev-only
|
|
21
|
+
# PI_CLOUD_AUTH_PASSWORD_HASH=$scrypt$ln=15,r=8,p=3$...
|
|
22
|
+
|
|
23
|
+
# Active sessions renew before the idle timeout, up to the absolute maximum lifetime.
|
|
24
|
+
PI_CLOUD_SESSION_TTL_HOURS=8
|
|
25
|
+
PI_CLOUD_SESSION_MAX_HOURS=720
|
|
26
|
+
|
|
27
|
+
# Set true only when the app is served exclusively over HTTPS.
|
|
28
|
+
PI_CLOUD_COOKIE_SECURE=false
|
|
29
|
+
|
|
30
|
+
# Enable only when requests always pass through a trusted reverse proxy.
|
|
31
|
+
PI_CLOUD_TRUST_PROXY=false
|
|
32
|
+
|
|
33
|
+
# Emergency 2FA recovery only. Keep false during normal operation.
|
|
34
|
+
SKIP_2FA_VERIFY=false
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# =============================================================================
|
|
38
|
+
# Storage, filesystem, and terminal
|
|
39
|
+
# =============================================================================
|
|
40
|
+
|
|
41
|
+
# Custom SQLite database path. Defaults to the user configuration directory.
|
|
42
|
+
# PI_CLOUD_DB_PATH=/home/youruser/.config/pi-cloud/pi-cloud.sqlite
|
|
43
|
+
|
|
44
|
+
# Comma-separated directories the file browser and terminal may access.
|
|
45
|
+
# Defaults to the current user's home directory.
|
|
46
|
+
# PI_CLOUD_ALLOWED_ROOTS=/home/youruser/git/github,/home/youruser/projects
|
|
47
|
+
|
|
48
|
+
# Disable allowed-root checks. Defaults to true on Windows and false on macOS/Linux.
|
|
49
|
+
# PI_CLOUD_DISABLE_PATH_CHECK=false
|
|
50
|
+
|
|
51
|
+
# Allow "Open with system tool" through non-localhost URLs, such as a local nginx hostname.
|
|
52
|
+
# This launches applications on the machine running Pi Cloud.
|
|
53
|
+
PI_CLOUD_ENABLE_SYSTEM_OPEN=false
|
|
54
|
+
|
|
55
|
+
# Terminal shell executable, such as powershell.exe, pwsh.exe, or /bin/zsh.
|
|
56
|
+
# PI_CLOUD_TERMINAL_SHELL=pwsh.exe
|
|
57
|
+
|
|
58
|
+
# Memory extraction/recall policy. Defaults to adaptive-lexical-v1; use legacy to roll back.
|
|
59
|
+
# PI_CLOUD_MEMORY_POLICY=legacy
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# =============================================================================
|
|
63
|
+
# AI providers
|
|
64
|
+
# =============================================================================
|
|
65
|
+
|
|
66
|
+
# Comma-separated exact origins permitted for non-loopback local LLM endpoints.
|
|
67
|
+
# Loopback endpoints are allowed by default.
|
|
68
|
+
# PI_CLOUD_LOCAL_LLM_ALLOWED_ORIGINS=http://192.168.1.20:11434,https://llm.example.test
|
|
69
|
+
|
|
70
|
+
# Provider API keys (uncomment as needed).
|
|
71
|
+
# ANTHROPIC_API_KEY=sk-ant-...
|
|
72
|
+
# OPENAI_API_KEY=sk-...
|
|
73
|
+
# GEMINI_API_KEY=...
|
|
74
|
+
# DEEPSEEK_API_KEY=...
|
|
75
|
+
# GROQ_API_KEY=...
|
|
76
|
+
# XIAOMI_API_KEY=...
|
|
77
|
+
|
|
78
|
+
# Azure OpenAI.
|
|
79
|
+
# AZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com
|
|
80
|
+
# AZURE_OPENAI_API_VERSION=v1
|
|
81
|
+
|
|
82
|
+
# AWS Bedrock.
|
|
83
|
+
# AWS_REGION=us-east-1
|
|
84
|
+
# AWS_PROFILE=default
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# =============================================================================
|
|
88
|
+
# Messaging gateways
|
|
89
|
+
# =============================================================================
|
|
90
|
+
|
|
91
|
+
# Optional shared gateway defaults.
|
|
92
|
+
# Configure profile, skillset, model, and allowed folders in Settings > Gateway.
|
|
93
|
+
# PI_CLOUD_GATEWAY_COMMAND_PREFIX=小助理
|
|
94
|
+
|
|
95
|
+
# Feishu/Lark callback.
|
|
96
|
+
# Event subscription URL: https://your-domain/api/gateways/feishu/events
|
|
97
|
+
# PI_CLOUD_FEISHU_APP_ID=cli_xxx
|
|
98
|
+
# PI_CLOUD_FEISHU_APP_SECRET=xxx
|
|
99
|
+
# Verification token is required; encrypt key is required for encrypted callbacks.
|
|
100
|
+
# PI_CLOUD_FEISHU_VERIFICATION_TOKEN=xxx
|
|
101
|
+
# PI_CLOUD_FEISHU_ENCRYPT_KEY=xxx
|
|
102
|
+
# PI_CLOUD_FEISHU_DOMAIN=feishu
|
|
103
|
+
|
|
104
|
+
# WeChat/Weixin (Tencent iLink long-polling, text DMs).
|
|
105
|
+
# Disabled by default; enabling it requires an account ID and token.
|
|
106
|
+
PI_CLOUD_WECHAT_GATEWAY_ENABLED=false
|
|
107
|
+
# PI_CLOUD_WECHAT_ACCOUNT_ID=your-account-id
|
|
108
|
+
# PI_CLOUD_WECHAT_TOKEN=your-bot-token
|
|
109
|
+
# PI_CLOUD_WECHAT_BASE_URL=https://ilinkai.weixin.qq.com
|
|
110
|
+
|
|
111
|
+
# DM policies: pairing, allowlist, open, or disabled.
|
|
112
|
+
# PI_CLOUD_WECHAT_DM_POLICY=pairing
|
|
113
|
+
# PI_CLOUD_WECHAT_ALLOWED_USERS=user_id_1,user_id_2
|
|
114
|
+
# Required only when PI_CLOUD_WECHAT_DM_POLICY=open.
|
|
115
|
+
# PI_CLOUD_WECHAT_ALLOW_ALL_USERS=false
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Pi Cloud are documented here.
|
|
4
|
+
|
|
5
|
+
## [2.0.0] - 2026-08-30
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added persistent PDF annotations with drawing, highlighting, shapes, text, moving, erasing, undo/redo, automatic sidecar saving, and annotated PDF export.
|
|
10
|
+
- Added Markdown-to-PDF downloads and creation of workspace PDF copies that can be annotated.
|
|
11
|
+
- Added custom OpenAI-compatible API providers and Cloudflare Workers AI support, including model discovery and image-capability selection.
|
|
12
|
+
- Added provider authentication status and disconnect controls for locally detected API keys, OAuth sessions, and subscriptions.
|
|
13
|
+
- Added Markdown preview outlines, HTML rendering in Markdown previews, archive content previews, file-type icons, and full-path copying from editor tabs.
|
|
14
|
+
- Added light/dark theme toggle controls and PDF viewport fit controls.
|
|
15
|
+
- Added split diff views, collapsible files, per-file statistics, and expand/collapse controls to commit previews and Git history.
|
|
16
|
+
- Added WeChat account unbinding and country reporting for successful proxy checks.
|
|
17
|
+
- Added a preference to delete sessions without confirmation and reload recovery for stale frontend assets after updates.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Renamed Pi WebUI to Pi Cloud, changing the npm package and executable to `pi-cloud`, environment variables to the `PI_CLOUD_` prefix, and default configuration, database, and service names and paths.
|
|
22
|
+
- Recent project history is now stored per agent profile in the server database instead of browser storage.
|
|
23
|
+
- PDF previews now render only nearby pages for improved performance.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- Fixed PDF annotation resize handles so dragging them resizes annotations correctly.
|
|
28
|
+
- Hid built-in API-key providers when a custom provider with the same ID overrides them.
|
|
29
|
+
- Fixed session sidebar message counts and stale-asset reload errors.
|
|
30
|
+
|
|
31
|
+
## [1.0.6] - 2026-08-27
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- Added a paginated Git history viewer with commit metadata, change statistics, and per-file diffs.
|
|
36
|
+
- Added PDF previews in the editor with page navigation and zoom controls.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- The Git changes panel now identifies non-repository folders and disables unavailable Git actions instead of showing a Git command error.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- Fixed published npm package dependency metadata to use resolvable versions instead of pnpm catalog references.
|
|
45
|
+
- Prevented the `Ctrl+E` editor shortcut from also triggering keyboard handlers on selected messages.
|
|
46
|
+
|
|
47
|
+
## [1.0.5] - 2026-08-27
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- Added a Git changes panel, shown by default, with changed-file navigation, per-file diffs, and shortcuts for common Git actions.
|
|
52
|
+
- Added collapsible pin groups for organizing, moving, and unpinning agent-profile and review-source sessions.
|
|
53
|
+
- Added a project history tab with last-accessed details, session counts, and confirmed removal of saved session history without deleting project files.
|
|
54
|
+
- Added an option to generate commit messages from and commit only staged changes.
|
|
55
|
+
- Added `PI_CLOUD_ENABLE_SYSTEM_OPEN` for enabling **Open with system tool** through trusted non-localhost URLs.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- Reduced the initial session page from 30 sessions to 10 and limited pull request status refreshes to the visible page for faster session loading.
|
|
60
|
+
- Lazy-load heavy interface features such as the editor, terminal, settings, memory center, and task queue.
|
|
61
|
+
- Local LLM endpoints outside the loopback interface must now be explicitly allowed with `PI_CLOUD_LOCAL_LLM_ALLOWED_ORIGINS`; endpoint credentials and redirects are rejected.
|
|
62
|
+
- Database schema updates now use tracked, transactional versioned migrations.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Ensured newly created sessions use the explicitly selected agent profile.
|
|
67
|
+
- Improved virtual diff formatting with clearer file headers and correct multi-file navigation and line tracking.
|
|
68
|
+
- Hardened path validation for session relocation and project moves, and stopped the file tree from traversing symlinked directories.
|
|
69
|
+
- Hardened URL and rendered HTML handling, including host validation, heading sanitization, and attribute escaping.
|
|
70
|
+
- Open files safely on Windows without invoking a shell.
|
|
71
|
+
|
|
72
|
+
## [1.0.4] - 2026-08-23
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- Added local LLM endpoint and model discovery/configuration, plus removal controls for local LLM settings and stored API keys.
|
|
77
|
+
- Added unified and split diff views, multi-file diff tabs and navigation, and GitHub-style diff coloring in the editor.
|
|
78
|
+
- Added clickable commit references in chat that open the corresponding commit diff in the editor.
|
|
79
|
+
- Added a resizable message input for review sessions.
|
|
80
|
+
- Added persistent skill preset references for queued tasks.
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- Pinned memories now default to applying only when matched to the current prompt.
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- Enabled word wrapping for virtual diffs.
|
|
89
|
+
- Corrected directory sort toggle labels in the folder picker.
|
|
90
|
+
|
|
91
|
+
## [1.0.3] - 2026-08-19
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
|
|
95
|
+
- Added review-session integrations for Devin, Claude Code, and Codex, with source configuration, session search, and transcript viewing.
|
|
96
|
+
- Added secure HTML file previews with sandboxing and support for local page assets.
|
|
97
|
+
- Added new-folder creation to the folder picker.
|
|
98
|
+
- Added an action to move saved sessions to another folder.
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- Improved review transcript rendering, including tool-call details, patch display, output indentation, and PDF export.
|
|
103
|
+
|
|
104
|
+
### Fixed
|
|
105
|
+
|
|
106
|
+
- Wait for the chat connection before starting tasks in newly opened tabs.
|
|
107
|
+
- Select the correct review session from the compact session rail.
|
|
108
|
+
- Normalize terminal progress output before rendering tool results.
|
|
109
|
+
- Normalize Windows file paths across file links, the editor, and file-tree navigation.
|
|
110
|
+
- Prefer the `origin` remote when resolving GitHub or Gitea integrations, while falling back to other matching remotes.
|
|
111
|
+
|
|
112
|
+
## [1.0.2] - 2026-08-16
|
|
113
|
+
|
|
114
|
+
### Added
|
|
115
|
+
|
|
116
|
+
- Added global and per-project prompt customization for AI-generated Git commit messages.
|
|
117
|
+
- Added a shallow-clone option when cloning repositories.
|
|
118
|
+
- Added Mermaid diagram rendering to the Markdown preview.
|
|
119
|
+
- Added modified-time sorting to the folder picker and file tree.
|
|
120
|
+
- Added `pi-cloud --version` and `pi-cloud -v` commands.
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- Generate the complete sample configuration with random login credentials on the first run of a global installation.
|
|
125
|
+
- Replaced Argon2 password hashing with Node.js's built-in scrypt implementation, removing the native Argon2 dependency.
|
|
126
|
+
- Added a favicon to the project website.
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
- Stop panel resize interactions when the browser window loses focus.
|
|
131
|
+
- Include `CHANGELOG.md` in the npm package so the changelog remains available in global installations.
|
|
132
|
+
|
|
133
|
+
## [1.0.1] - 2026-08-15
|
|
134
|
+
|
|
135
|
+
### Added
|
|
136
|
+
|
|
137
|
+
- Added a responsive GitHub Pages website with an illustrated feature guide, updated product screenshots, and automated deployment.
|
|
138
|
+
- Added `pi-cloud service restart` support on Linux, macOS, and Windows.
|
|
139
|
+
|
|
140
|
+
### Changed
|
|
141
|
+
|
|
142
|
+
- Always use Pi Cloud's bundled session auto-rename extension instead of disabling it when an external auto-rename plugin is detected.
|
|
143
|
+
- Upgraded `better-sqlite3` from version 12 to 13 and removed the deprecated `prebuild-install` dependency.
|
|
144
|
+
- Added a GitHub social preview image and refreshed the main interface screenshots.
|
|
145
|
+
|
|
146
|
+
### Fixed
|
|
147
|
+
|
|
148
|
+
- Respect `PORT` and `HOST` values from `~/.config/pi-cloud/.env` when the CLI starts Pi Cloud, while preserving explicit CLI option precedence.
|
|
149
|
+
- Open home-relative (`~/`) file links from chat in the editor instead of resolving them against the workspace.
|
|
150
|
+
- Open relative links and heading anchors within the Markdown preview instead of navigating to browser routes.
|
|
151
|
+
- Improved user-message link contrast and hover/focus visibility in the light theme.
|
|
152
|
+
- Allow the GitHub Pages workflow to enable Pages during deployment.
|
|
153
|
+
|
|
154
|
+
## [1.0.0] - 2026-07-23
|
|
155
|
+
|
|
156
|
+
### Added
|
|
157
|
+
|
|
158
|
+
- **Packaging and deployment** — install with the `pi-cloud` executable, run from source, deploy behind a reverse proxy, and use Apache-2.0 licensing.
|
|
159
|
+
- **Authentication** — protect the WebUI with password/TOTP authentication, renewable sessions, absolute session lifetime, and production cookie settings.
|
|
160
|
+
- **Settings** — manage model defaults, automation model, shortcuts, gateway profiles, skillsets, Git hosting, and session launch preferences.
|
|
161
|
+
- **Workspace tools** — browse files, search workspace paths with `@`, edit code with Monaco, and use an embedded xterm terminal.
|
|
162
|
+
- **Streaming chat** — receive real-time Pi responses over WebSocket with reconnect support, thinking/details controls, and local command result messages.
|
|
163
|
+
- **Session management** — create, resume, rename, compact, summarize, inspect, branch, and navigate session trees from the WebUI.
|
|
164
|
+
- **Multi-tab support** — run independent sessions per browser tab/client.
|
|
165
|
+
- **Model selection** — inspect and change the active model for a session.
|
|
166
|
+
- **Chat composer enhancements** — attach images to chat messages, polish prompts with AI, and choose model/thinking level directly from the composer.
|
|
167
|
+
- **Slash commands** — use built-in commands for Git, sessions, models, skills, summaries, changelog display, and Pi-discovered skill/prompt commands.
|
|
168
|
+
- **Git workflows** — inspect diff/status, create branches, commit, amend, push, pull, open read-only diffs, remember branch selections per project, and generate AI branch names.
|
|
169
|
+
- **Git hosting workflows** — configure Git hosting, create issues and pull requests, check proxies, preserve configured repository ports, and surface pull request status in the session UI.
|
|
170
|
+
- **Pull request authoring** — preview pull requests, generate PR titles and descriptions, push branches, and create PRs from `/pr`.
|
|
171
|
+
- **Project onboarding** — clone repositories from the project picker and open projects or queued tasks in new tabs.
|
|
172
|
+
- **Worktree development** — create inherited worktree sessions for isolated implementation work while preserving the source session context.
|
|
173
|
+
- **Skill preset management** — configure enabled and disabled skills per session, refresh slash-command suggestions after changes, and use `skill:<name>` commands directly from chat.
|
|
174
|
+
- **Memory system** — manage project and global memories with automatic extraction, adaptive recall, recall details, and reusable remembered context.
|
|
175
|
+
- **Task queue and notifications** — queue project tasks, edit tasks, start pending work, track task state, and configure sound notifications.
|
|
176
|
+
- **Gateway integrations** — add Feishu and WeChat gateway support, including pairing, messaging, command aliases, centralized gateway settings, and WeChat image ingestion/decryption.
|
|
177
|
+
- **Agent proxy configuration** — configure proxy environment variables per Pi profile for model/agent traffic.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 xianzhon
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Pi Cloud
|
|
2
|
+
|
|
3
|
+
English | [简体中文](README.zh-CN.md)
|
|
4
|
+
|
|
5
|
+
A web-based, mobile-friendly interface for the [Pi coding agent](http://pi.dev). It complements the terminal-first CLI with a persistent workspace for agent sessions and development workflows.
|
|
6
|
+
|
|
7
|
+
| Dark theme | Light theme |
|
|
8
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
|
|
9
|
+
|  |  |
|
|
10
|
+
|
|
11
|
+
**[▶ Watch Pi Cloud handle a Git bugfix workflow](https://xianzhon.github.io/pi-cloud-website/assets/videos/demo-git-bugfix-workflow.mp4)**
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **Mobile-friendly access** — use Pi from a desktop, phone, or tablet without needing a local terminal.
|
|
16
|
+
- **Skill control** — configure presets and enable or disable skills per session.
|
|
17
|
+
- **Session management** — search, resume, rename, branch, and run independent sessions in separate tabs.
|
|
18
|
+
- **Task queue** — save and configure tasks, then start them when ready.
|
|
19
|
+
- **Completion notifications** — receive a sound alert and see a bell indicator in the browser tab when a task finishes.
|
|
20
|
+
- **AI-assisted writing** — generate or polish prompts, commit messages, pull request content, and other workflow text.
|
|
21
|
+
- **Git workflows** — use `/branch`, `/commit`, `/push`, and related commands from the WebUI.
|
|
22
|
+
- **GitHub and Gitea integration** — review changes and create pull requests with `/pr`.
|
|
23
|
+
- **Memory support** — maintain project and global memories with optional automatic extraction and adaptive recall.
|
|
24
|
+
- **Messaging gateways** — connect Feishu and WeChat through a focused setup.
|
|
25
|
+
- **Workspace tools** — browse and search files, edit code, and use an embedded terminal alongside the conversation.
|
|
26
|
+
- **Secure access** — protect the WebUI with password and optional TOTP authentication.
|
|
27
|
+
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
### Prerequisites
|
|
31
|
+
|
|
32
|
+
- Node.js 22 or newer
|
|
33
|
+
- pnpm 9 or newer (source development only)
|
|
34
|
+
|
|
35
|
+
Pi Cloud includes the [Pi coding agent](http://pi.dev), so a separate `pi` installation is not required when using API-key authentication. API keys can be configured from the agent profile dialog.
|
|
36
|
+
|
|
37
|
+
OAuth subscription sign-in is not currently available in the WebUI; native OAuth support is a planned future improvement. For now, install the standalone Pi CLI and complete `/login` in the terminal as the same OS user that runs Pi Cloud:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
|
|
41
|
+
pi
|
|
42
|
+
# Enter /login and select a provider
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pi Cloud then detects the OAuth credentials stored in the default `~/.pi/agent` profile.
|
|
46
|
+
|
|
47
|
+
### Run without installing
|
|
48
|
+
|
|
49
|
+
If npm fails while building native dependencies, install system build tools such as `build-essential` and `python3`, then retry.
|
|
50
|
+
|
|
51
|
+
Set login credentials, then run the latest release:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
PI_CLOUD_AUTH_USERNAME=pi PI_CLOUD_AUTH_PASSWORD='change-this-password' npx pi-cloud@latest
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Open http://127.0.0.1:3000. The CLI opens the browser automatically after the server is ready.
|
|
58
|
+
|
|
59
|
+
### Install globally
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm install -g pi-cloud
|
|
63
|
+
pi-cloud
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
On first run, Pi Cloud creates a protected configuration file with username `admin` and prints a randomly generated password once.
|
|
67
|
+
|
|
68
|
+
See the [Configuration Manual](docs/manuals-en/configuration.md) to customize credentials, ports, and other settings. For remote or public access, see the [Deployment Manual](docs/manuals-en/deployment.md).
|
|
69
|
+
|
|
70
|
+
### Run as a system service
|
|
71
|
+
|
|
72
|
+
Install Pi Cloud as a startup service on Linux, macOS, or Windows:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pi-cloud service install
|
|
76
|
+
pi-cloud service status
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
On Windows, antivirus software may block `pi-cloud service install` because it creates an automatic-start scheduled task. Review the antivirus detection before allowing it; do not disable antivirus or exclude the entire npm directory.
|
|
80
|
+
|
|
81
|
+
### Run from source
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone https://github.com/xianzhon/pi-cloud && cd pi-cloud
|
|
85
|
+
pnpm install
|
|
86
|
+
cp .env.example .env # set PI_CLOUD_AUTH_USERNAME and PI_CLOUD_AUTH_PASSWORD
|
|
87
|
+
pnpm dev
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Open http://localhost:5173 during development. The production server listens on `PORT` (default `3000`).
|
|
91
|
+
|
|
92
|
+
## Configuration
|
|
93
|
+
|
|
94
|
+
The essential settings are:
|
|
95
|
+
|
|
96
|
+
| Variable | Description |
|
|
97
|
+
| -------------------------- | ------------------------------------ |
|
|
98
|
+
| `PI_CLOUD_AUTH_USERNAME` | Login username |
|
|
99
|
+
| `PI_CLOUD_AUTH_PASSWORD` | Login password for a simple setup |
|
|
100
|
+
| `PORT` | Backend port (default:`3000`) |
|
|
101
|
+
| `HOST` | Bind address (default:`127.0.0.1`) |
|
|
102
|
+
|
|
103
|
+
For production, use `PI_CLOUD_AUTH_PASSWORD_HASH` instead of a plaintext password. See the [Configuration Manual](docs/manuals-en/configuration.md) for configuration files, security, session, storage, workspace, memory, provider, and gateway settings.
|
|
104
|
+
|
|
105
|
+
## Deployment
|
|
106
|
+
|
|
107
|
+
See the [Deployment Manual](docs/manuals-en/deployment.md) for source and npm package deployments, plus nginx reverse proxy configuration.
|
|
108
|
+
|
|
109
|
+
## Documentation
|
|
110
|
+
|
|
111
|
+
Browse the [documentation index](docs/README.md) for all user manuals and developer references.
|
|
112
|
+
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pnpm dev # start both servers
|
|
117
|
+
pnpm build # typecheck + bundle both
|
|
118
|
+
pnpm test # run all tests
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
- Frontend: http://localhost:5173 (Vite, proxies `/api` and `/ws` to backend)
|
|
122
|
+
- Backend: http://localhost:3000 (Fastify)
|
|
123
|
+
- Logs: `.logs/`
|
|
124
|
+
- PIDs: `.pids/`
|
|
125
|
+
|
|
126
|
+
For architecture, API, local package testing, and project layout notes, see [Developer Notes](docs/to-developers/developer-notes.md).
|
|
127
|
+
|
|
128
|
+
## Contributing
|
|
129
|
+
|
|
130
|
+
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, branch and pull request conventions, testing, documentation requirements, and security reporting.
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
Licensed under the Apache License, Version 2.0. See [LICENSE](./LICENSE) for details.
|