@covro/covro 0.3.1-dev.3 → 0.3.1-dev.5
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/README.md +36 -98
- package/README.zh-CN.md +36 -98
- package/dist/web/assets/{abnfDiagram-WEYOIA3C-CgSmgOr1.js → abnfDiagram-WEYOIA3C-Cjx0OXcz.js} +1 -1
- package/dist/web/assets/{arc-DHf4CdSk.js → arc-CvLw1Xal.js} +1 -1
- package/dist/web/assets/{architecture-WOLXFQ4H-DMTD1pHe.js → architecture-WOLXFQ4H-BoyiZK3I.js} +1 -1
- package/dist/web/assets/{architectureDiagram-ZHVYKT53-DTR8wiWo.js → architectureDiagram-ZHVYKT53-CJFFQbOJ.js} +1 -1
- package/dist/web/assets/{blockDiagram-RJAE7QA3-DcNiTPKZ.js → blockDiagram-RJAE7QA3-DcmYDYUX.js} +1 -1
- package/dist/web/assets/{c4Diagram-XDPPPE54-BDxJVXjQ.js → c4Diagram-XDPPPE54-C2KOq1Us.js} +1 -1
- package/dist/web/assets/channel-DHeAegjr.js +1 -0
- package/dist/web/assets/{chunk-2E7WHVMD-D5oKHRGT.js → chunk-2E7WHVMD-CPc4Cyjo.js} +1 -1
- package/dist/web/assets/{chunk-4EMNKR2T-CtrbVCM-.js → chunk-4EMNKR2T-B_j-4I2i.js} +1 -1
- package/dist/web/assets/{chunk-55XCU76K-Dhl7DEL7.js → chunk-55XCU76K-BP-MraiS.js} +1 -1
- package/dist/web/assets/{chunk-7S6XSTFO-C8EwegP-.js → chunk-7S6XSTFO-CQYF0QBO.js} +1 -1
- package/dist/web/assets/{chunk-AQDTSKZB-lFiNKr7B.js → chunk-AQDTSKZB-C6XdKA-D.js} +1 -1
- package/dist/web/assets/{chunk-DSNLSHJZ-B8GftONA.js → chunk-DSNLSHJZ-D0FOol-u.js} +1 -1
- package/dist/web/assets/{chunk-HAGFOTED-Cnc2mh7_.js → chunk-HAGFOTED-DXH_cvSy.js} +1 -1
- package/dist/web/assets/{chunk-HNE4Q36P-BKl6ZgI0.js → chunk-HNE4Q36P-CX7MKHoR.js} +1 -1
- package/dist/web/assets/{chunk-NQOKRVIF-qKlxSw3D.js → chunk-NQOKRVIF-Avf9oLB0.js} +1 -1
- package/dist/web/assets/{chunk-UHW7PFBP-C_zh3mNe.js → chunk-UHW7PFBP-DAsYRzs7.js} +1 -1
- package/dist/web/assets/{chunk-VQ5W62QI-BXoyXK0q.js → chunk-VQ5W62QI-DFWpHl0D.js} +1 -1
- package/dist/web/assets/{chunk-WQQL4CDK-BBeqcU1J.js → chunk-WQQL4CDK-xqWPEXgl.js} +1 -1
- package/dist/web/assets/{chunk-XXDRQBXY-DzssZtz_.js → chunk-XXDRQBXY-2tossxkc.js} +1 -1
- package/dist/web/assets/{chunk-YZO67HFG-BbNSwLjS.js → chunk-YZO67HFG-DlJUQLDo.js} +1 -1
- package/dist/web/assets/{chunk-ZAUX2LTX-CjURwZfv.js → chunk-ZAUX2LTX-DK7k3CWi.js} +1 -1
- package/dist/web/assets/{chunk-ZCHMQSOR-u39dymjE.js → chunk-ZCHMQSOR-CJTg80VM.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-4MYWR3UA-BEXx5gKT.js → classDiagram-v2-4MYWR3UA-D9ycrRqn.js} +1 -1
- package/dist/web/assets/{cose-bilkent-JH36ORCC-BxDEucP_.js → cose-bilkent-JH36ORCC-BcHO63YR.js} +1 -1
- package/dist/web/assets/{cynefin-EF2NZ3EQ-BhkCsT6-.js → cynefin-EF2NZ3EQ-y6F6uo0X.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-WF24UDRP-Wpu-yNke.js → cynefinDiagram-WF24UDRP-BGHRMk1J.js} +1 -1
- package/dist/web/assets/{dagre-NK4GIZVX-LNSSIN4l.js → dagre-NK4GIZVX-BUGDXh2l.js} +1 -1
- package/dist/web/assets/{diagram-CBK3MWTC-BVDr5Vx9.js → diagram-CBK3MWTC-ITipFRO6.js} +1 -1
- package/dist/web/assets/{diagram-I5XIIV2D-MnLzR1Rv.js → diagram-I5XIIV2D-C77vK6Rh.js} +1 -1
- package/dist/web/assets/{diagram-ODIL2UCW-CZ4igbo_.js → diagram-ODIL2UCW-ixKT-RwG.js} +1 -1
- package/dist/web/assets/{diagram-PFBEJUXE-4hCnyMdK.js → diagram-PFBEJUXE-Cf_zNyGa.js} +1 -1
- package/dist/web/assets/{diagram-RJA3I4VV-DTo42rGA.js → diagram-RJA3I4VV-Cn3svdht.js} +1 -1
- package/dist/web/assets/{diagram-TYUNFSNR-BC12iCUZ.js → diagram-TYUNFSNR-DqS4o_qt.js} +1 -1
- package/dist/web/assets/{dist-Dg_ysSxT.js → dist-BxX2PIsO.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-V4P3TTPT-Du8LCQ31.js → ebnfDiagram-V4P3TTPT-WBx9wV8-.js} +1 -1
- package/dist/web/assets/{elk-QONTBCTQ-BzTAR-T1.js → elk-QONTBCTQ-DWPUx0sZ.js} +1 -1
- package/dist/web/assets/{erDiagram-KYQIGQAA-SXYIjNOP.js → erDiagram-KYQIGQAA-CAFR0w7D.js} +1 -1
- package/dist/web/assets/{eventmodeling-K75KTNOO-Sbno3ZxQ.js → eventmodeling-K75KTNOO-BCW1wXaB.js} +1 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-D-HflbqC.js +1 -0
- package/dist/web/assets/{ganttDiagram-R7GPNTJY-DBeX1qmu.js → ganttDiagram-R7GPNTJY-BKg-6vBi.js} +1 -1
- package/dist/web/assets/{gitGraph-VSP46ZUC-CKWihueS.js → gitGraph-VSP46ZUC-Codgogo9.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-Cj1E3jqN.js → gitGraphDiagram-PDYL7XHY-_586lhwJ.js} +1 -1
- package/dist/web/assets/index-B1wlD3sg.css +1 -0
- package/dist/web/assets/index-CJCf6cdc.js +147 -0
- package/dist/web/assets/{info-OHQRW6UA-D0w3nR0p.js → info-OHQRW6UA-DMCkz484.js} +1 -1
- package/dist/web/assets/{infoDiagram-MVDRKAX5-F0jTCG-G.js → infoDiagram-MVDRKAX5-m7XtcE7i.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-CwQGP9AT.js → ishikawaDiagram-HPEHV2GE-C4wWzCs9.js} +1 -1
- package/dist/web/assets/{journeyDiagram-BOSHW7O7-CPY5GqD2.js → journeyDiagram-BOSHW7O7-BlWQT1Sx.js} +1 -1
- package/dist/web/assets/{kanban-definition-FNSA4HC5-BCL38eXh.js → kanban-definition-FNSA4HC5-CC5ff6mC.js} +1 -1
- package/dist/web/assets/{line-DoUzbVJS.js → line-CBiIKtfD.js} +1 -1
- package/dist/web/assets/{linear-LoqU-SEO.js → linear-BKe-iA-D.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-CvO-MTG1.js → mermaid-parser.core-BTsSiR1J.js} +3 -3
- package/dist/web/assets/{mermaid.core-DcCEGt0V.js → mermaid.core-CMDsDlBl.js} +4 -4
- package/dist/web/assets/{mindmap-definition-6OY57UG3-yZvSibNz.js → mindmap-definition-6OY57UG3-3IJPjY7w.js} +1 -1
- package/dist/web/assets/{packet-JDAUHWVQ-9ZiCegsV.js → packet-JDAUHWVQ-D-_ETQrl.js} +1 -1
- package/dist/web/assets/{pegDiagram-ECIUJNBX-BkGwBoEk.js → pegDiagram-ECIUJNBX-D_ftaIbW.js} +1 -1
- package/dist/web/assets/{pie-XZMESJXO-kAXIwFnU.js → pie-XZMESJXO-B7rDTN6s.js} +1 -1
- package/dist/web/assets/{pieDiagram-GNMPY74T-jiwTgtdb.js → pieDiagram-GNMPY74T-CqR-i7yU.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-D57K4MC3-u9HdbUwr.js → quadrantDiagram-D57K4MC3-C_224EYQ.js} +1 -1
- package/dist/web/assets/{radar-ABXABTNO-BQ911CvQ.js → radar-ABXABTNO-DGRi3v9D.js} +1 -1
- package/dist/web/assets/{railroad-I3PHUGI6-Bvm7MWf9.js → railroad-I3PHUGI6-DQ_eo9oa.js} +1 -1
- package/dist/web/assets/{railroad-abnf-LNEFI6M7-BfFmWnzu.js → railroad-abnf-LNEFI6M7-DQDZjpNe.js} +1 -1
- package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-B8Ekz4aD.js → railroad-ebnf-DWYD2UWJ-COkW75aP.js} +1 -1
- package/dist/web/assets/{railroad-peg-JR7BVNR7-B5ANjRbC.js → railroad-peg-JR7BVNR7-DC72afyO.js} +1 -1
- package/dist/web/assets/{railroadDiagram-Y72NRBL7-iu8Hmuma.js → railroadDiagram-Y72NRBL7-DR_X0nVu.js} +1 -1
- package/dist/web/assets/{requirementDiagram-EQYSW5RA-DgiEaaYZ.js → requirementDiagram-EQYSW5RA-DV25jmiz.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-SY24JHO5-KzDvhd8J.js → sankeyDiagram-SY24JHO5-CFmJJoSR.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-BLEHNHQU-DJMSHuO_.js → sequenceDiagram-BLEHNHQU-wle2fhAZ.js} +1 -1
- package/dist/web/assets/{src-C5WkvxTS.js → src-m1aZIffM.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-CyfHfUyU.js → stateDiagram-v2-A6IESKWZ-BIrvH_yN.js} +1 -1
- package/dist/web/assets/{swimlanes-B3ENRKFQ-YPSzHf2U.js → swimlanes-B3ENRKFQ-BB349NpW.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-BFk_Sb-0.js +8 -0
- package/dist/web/assets/{timeline-definition-JXYKGLGB-BwvPIiSj.js → timeline-definition-JXYKGLGB-CVk1BejN.js} +1 -1
- package/dist/web/assets/{treeView-D4JQ5SDB-DsUhEw24.js → treeView-D4JQ5SDB-DS2edlGl.js} +1 -1
- package/dist/web/assets/{treemap-SAJKECNS-D5NThB4V.js → treemap-SAJKECNS-Bk8l3nKF.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-WPOLBNNX-fLWGvuS0.js → usecaseDiagram-WPOLBNNX-CFmszgkP.js} +1 -1
- package/dist/web/assets/{vennDiagram-Q3Y3IDCW-DFzlk_u2.js → vennDiagram-Q3Y3IDCW-CYkDp-49.js} +1 -1
- package/dist/web/assets/{wardley-7MLQ67FV-0uG-noJX.js → wardley-7MLQ67FV-CyD-xTtd.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-IVAIDKWA-DfEQPTLg.js → wardleyDiagram-IVAIDKWA-Bg8YxOdf.js} +1 -1
- package/dist/web/assets/{xychartDiagram-4URNHDU4-BXVsWbL0.js → xychartDiagram-4URNHDU4-Cor5OZMM.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +3 -3
- package/dist/web/assets/channel-B6d61z43.js +0 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-Ae1H3vSR.js +0 -1
- package/dist/web/assets/index-CtTuHkNv.js +0 -147
- package/dist/web/assets/index-DwnjYADO.css +0 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-D2_NQS-o.js +0 -8
package/README.md
CHANGED
|
@@ -29,25 +29,14 @@
|
|
|
29
29
|
|
|
30
30
|
## ✨ What you can do
|
|
31
31
|
|
|
32
|
-
- 📱 **
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- ⚡ **Open long conversations sooner.** Recent messages appear first; scrolling preloads older history. On this device, cached conversation lists and history pages appear while the server checks for updates. [Loading and cache behavior](docs/session-history.md).
|
|
38
|
-
- 📖 **Review the work beside the conversation.** Read Markdown documents with code, tables, images, and Mermaid diagrams, or open JSON files in a desktop side panel while you keep talking to Codex. Mermaid diagrams also render in replies; view or copy their source and inspect wide diagrams at actual size. JSON previews include indentation, syntax highlighting, and original text for invalid JSON. Copy the unchanged source, with a full-screen reader on mobile. TXT, CSV, TSV, TOML, YAML/YML, JSONL, LOG, and INI files open as plain text, preserving whitespace with optional line wrapping. File previews are read-only; all supported text formats have a 2 MiB limit and require UTF-8.
|
|
39
|
-
- 🔎 **Inspect code changes.** Open Codex’s saved patches for a turn or tool in the same read-only panel. Scroll through all files, inspect line numbers, see the exact words changed within each line, and jump between change blocks. Long diffs start collapsed and render when expanded. File headers stay visible while scrolling so you can collapse the current file.
|
|
40
|
-
- ✍️ **Switch tasks without losing your draft.** Each conversation keeps its own draft, pasted images, and model settings in the current page. On phones and tablets, Enter inserts a new line and the send button submits; desktop keeps Enter to send and Shift + Enter for a new line. Copy or export results when you're done. Use the copy button at the top right of a command’s output to copy all loaded results; truncated output is clearly marked.
|
|
41
|
-
- 🖥️ **Run a command beside your task.** Open **Shell** to execute commands in the selected project's directory, follow stdout/stderr, interrupt a run, and reuse recent commands. The panel uses Codex's configured sandbox, with a ten-minute limit and no interactive input. Closing it keeps the command running. [Capabilities and limits](docs/shell.md).
|
|
42
|
-
- 🛟 **Keep a recovery point.** Open **Backups and recovery** in the sidebar to create a server-side backup, follow its progress and review verified snapshots. Upgrades use the same backup engine. Recovery runs offline through the CLI. [Scope and recovery instructions](docs/backups.md).
|
|
43
|
-
|
|
44
|
-
Mermaid diagrams render locally after their code fence closes, with automatic light/dark colors. Failed diagrams keep their source; rendering is limited to 50,000 source characters and 500 edges.
|
|
45
|
-
|
|
46
|
-
Local image previews reuse loaded images for 30 seconds. Reopening an expired image shows the existing preview while the server checks for updates.
|
|
32
|
+
- 📱 **Follow tasks from any device.** Review changes, handle approvals, and answer questions on desktop or mobile. Tasks keep running when you close the page.
|
|
33
|
+
- 🗂️ **Keep projects and conversations together.** Start without a project, track parallel tasks, and resume or fork your Codex CLI conversations.
|
|
34
|
+
- 📖 **Read results while you chat.** Preview documents, diagrams, and code changes beside the conversation on desktop, or full-screen on mobile.
|
|
35
|
+
|
|
36
|
+
See the [usage guide · 中文](docs/usage.zh-CN.md) for workflow details and controls.
|
|
47
37
|
|
|
48
38
|
<details>
|
|
49
39
|
<summary><strong>📱 A workspace that fits your phone</strong></summary>
|
|
50
|
-
<p>Check a result, answer a question, or send the next instruction without returning to your desk.</p>
|
|
51
40
|
<img src="docs/assets/workspace-mobile.png" alt="Covro conversation on a phone-sized screen" width="320" />
|
|
52
41
|
</details>
|
|
53
42
|
|
|
@@ -55,7 +44,7 @@ Local image previews reuse loaded images for 30 seconds. Reopening an expired im
|
|
|
55
44
|
|
|
56
45
|
## 🚀 Get started
|
|
57
46
|
|
|
58
|
-
You need **Node.js 24.19 or later in the 24.x line** and an installed, signed-in **Codex CLI**. The interface supports Simplified Chinese, English, Japanese and Korean.
|
|
47
|
+
You need **Node.js 24.19 or later in the 24.x line** and an installed, signed-in **Codex CLI**. The interface supports Simplified Chinese, English, Japanese, and Korean.
|
|
59
48
|
|
|
60
49
|
<!-- codex-compatibility:start -->
|
|
61
50
|
|
|
@@ -63,45 +52,29 @@ Recommended Codex CLI: **0.163.0**. Verified versions: `0.163.0`.
|
|
|
63
52
|
|
|
64
53
|
<!-- codex-compatibility:end -->
|
|
65
54
|
|
|
55
|
+
For other Codex versions and confirmation requirements, see [compatibility](docs/compatibility.md).
|
|
56
|
+
|
|
66
57
|
<a id="npm-installation"></a>
|
|
67
58
|
|
|
68
59
|
### 📦 npm installation
|
|
69
60
|
|
|
70
|
-
The first public npm release is being prepared. Until `@covro/covro` is published, [run from source](#run-from-source). After publication, install and start with:
|
|
71
|
-
|
|
72
61
|
```sh
|
|
73
62
|
npm install -g @covro/covro
|
|
74
63
|
covro
|
|
75
64
|
```
|
|
76
65
|
|
|
77
|
-
`covro` starts in the background and prints the local address.
|
|
78
|
-
|
|
79
|
-
| Command | Purpose |
|
|
80
|
-
| ------------------------- | -------------------------------------------------------------------------------------- |
|
|
81
|
-
| `covro status` | Show the running instance and its address |
|
|
82
|
-
| `covro doctor` | Diagnose the running instance's session and GitHub credentials without printing tokens |
|
|
83
|
-
| `covro logs` | Read recent service logs |
|
|
84
|
-
| `covro stop` | Stop the service |
|
|
85
|
-
| `covro run` | Run in the foreground |
|
|
86
|
-
| `covro service install` | Opt in to login auto-start on macOS or Linux |
|
|
87
|
-
| `covro service uninstall` | Remove login auto-start |
|
|
88
|
-
|
|
89
|
-
The npm package is `@covro/covro`; the command is `covro`. Install the development channel with `npm install -g @covro/covro@dev`.
|
|
90
|
-
|
|
91
|
-
The npm CLI uses `~/.covro/config.json` and a fixed data directory beside it. Reuse an existing configuration with `covro --config /absolute/path/config.json`.
|
|
66
|
+
`covro` starts in the background and prints the local address. Use `covro stop` to stop it. See [installation and service management](docs/distribution.md) for configuration, logs, login auto-start, macOS credential diagnostics, and release channels.
|
|
92
67
|
|
|
93
|
-
Open
|
|
94
|
-
|
|
95
|
-
On macOS, background startup uses the logged-in user's GUI launchd domain so commands can access existing Keychain credentials when their execution permissions allow it. This does not enable login auto-start; use `covro service install` for that. Without a desktop session, headless startup remains available with a Keychain access notice. After installing this fix, restart existing instances with `covro stop` and `covro start`. See [startup and credential diagnostics](docs/distribution.md#macos-sessions-and-credentials).
|
|
68
|
+
Open **<http://127.0.0.1:8787>** and click **+** beside **Unassigned** to send your first task. Or use **Add project** to import a host directory or clone a Git repository. See [project setup](docs/project-clone.md) and [conversation workspaces](docs/workspaces.md) for directory options.
|
|
96
69
|
|
|
97
70
|
<a id="run-from-source"></a>
|
|
98
71
|
|
|
99
72
|
### 🛠️ Run from source
|
|
100
73
|
|
|
101
|
-
|
|
74
|
+
For local development or source deployments, use **pnpm 12.11.2**:
|
|
102
75
|
|
|
103
76
|
```sh
|
|
104
|
-
git clone https://github.com/yuzheng14/
|
|
77
|
+
git clone https://github.com/yuzheng14/covro.git
|
|
105
78
|
cd covro
|
|
106
79
|
pnpm install --frozen-lockfile
|
|
107
80
|
cp config.example.json config.local.json
|
|
@@ -109,67 +82,29 @@ pnpm build
|
|
|
109
82
|
pnpm start -- --config ./config.local.json
|
|
110
83
|
```
|
|
111
84
|
|
|
112
|
-
Open **<http://127.0.0.1:8787>** and click **+** beside **Unassigned** in the sidebar to send a task without choosing a project.
|
|
113
|
-
|
|
114
|
-
To work in a project directory, click **Add project**, then choose an existing host directory or **Clone Git repository**. Set **Service configuration → Data and projects → Project base directory (workDir, optional)** to start from a shared host directory. For example, with `workDir=/workspace/projects`, enter `demo` to add `/workspace/projects/demo`; cloning a `demo` repository defaults to that path too. Absolute paths override the prefix. The final server path is shown before submission and the destination remains editable. Saving `workDir` applies immediately to subsequent imports and survives refreshes and restarts, without moving existing projects. Leave it blank to keep entering absolute paths. Git cloning uses the host’s existing credentials, with progress and cancellation in the dialog. [Directory configuration, clone requirements and recovery](docs/project-clone.md).
|
|
115
|
-
|
|
116
|
-
Unassigned conversations use separate directories under `<dataDir>/workspaces/`, allocated on the first send. Their files are retained until you explicitly remove them; archiving does not delete files. See [conversation workspaces](docs/workspaces.md) for directory, recovery, and backup details.
|
|
117
|
-
|
|
118
85
|
For local development, run `pnpm dev` instead and open <http://127.0.0.1:5173>.
|
|
119
86
|
|
|
120
87
|
<a id="access-from-another-device"></a>
|
|
121
88
|
|
|
122
89
|
## 🌐 Access from another device
|
|
123
90
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
| Setup | How to connect |
|
|
127
|
-
| ------------------------------ | -------------------------------------------------------------------- |
|
|
128
|
-
| On the host computer | Open the local address |
|
|
129
|
-
| Your devices through Tailscale | Configure Tailscale Serve and add its HTTPS origin to `publicOrigin` |
|
|
130
|
-
| Through Cloudflare | Use a tunnel with Cloudflare Access and Covro's JWT verification |
|
|
91
|
+
Fresh installations listen on loopback only. To connect from another device, configure **Tailscale Serve** or **Cloudflare Tunnel with Access** using the [deployment guide](docs/deployment.md).
|
|
131
92
|
|
|
132
|
-
|
|
93
|
+
The host computer must stay awake and online. When adding projects remotely, enter directories on that computer.
|
|
133
94
|
|
|
134
95
|
## Updates and release channels
|
|
135
96
|
|
|
136
|
-
|
|
97
|
+
Use the update panel to check versions and choose stable, beta, or dev. Beta and Dev also receive newer stable releases. **macOS and Linux npm global installations** support managed upgrades from this panel or `covro update`; other installations use their original update method.
|
|
137
98
|
|
|
138
|
-
|
|
139
|
-
covro update status
|
|
140
|
-
covro update
|
|
141
|
-
covro update --channel dev
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
| Channel | npm tag | Choose it for |
|
|
145
|
-
| ------- | ---------------- | ------------------------------------------------ |
|
|
146
|
-
| Stable | `latest` | Regular use |
|
|
147
|
-
| Beta | `beta`, `latest` | Maintainer-selected Beta tags or GitHub Releases |
|
|
148
|
-
| Dev | `dev`, `latest` | New main-branch changes after CI passes |
|
|
149
|
-
|
|
150
|
-
Stable checks only `latest`. Beta and Dev each compare their own tag with `latest` and select the newest version by SemVer; Dev does not receive Beta. Installing a stable version keeps your selected subscription, so future Beta or Dev updates remain available. Older candidates require explicit downgrade permission.
|
|
151
|
-
|
|
152
|
-
Successful Dev and Beta npm publications also create a [GitHub Pre-release](https://github.com/yuzheng14/covro/releases) with automatically generated notes. The comparison starts from whichever has the newer source commit: the preceding version in the same channel or a stable version. Push a Beta tag to publish both the npm package and its Pre-release; existing release notes are preserved on retries. Beta notes also include compatibility declarations from the selected source. Stable releases retain their grouped changelog.
|
|
153
|
-
|
|
154
|
-
Before installing, the update panel displays the selected version’s GitHub Release notes with Markdown and a link to the original. Notes follow the exact target version; some Beta / Dev versions have no matching Release. Missing notes or GitHub connection failures do not block updates.
|
|
155
|
-
|
|
156
|
-
Each release declares its recommended and verified Codex CLI versions. The update panel shows the current and candidate combinations. Automatic upgrades require a verified combination; an unverified combination needs explicit confirmation for that exact upgrade. Unknown versions, invalid/missing declarations, and explicitly unsupported combinations block managed upgrades. The CLI offers `covro update --allow-unverified-codex` for the same explicit attempt. Covro does not upgrade your Codex CLI.
|
|
99
|
+
Automatic installation is off by default and requires a verified Codex combination. Unverified combinations need explicit confirmation; unknown versions, missing or invalid compatibility declarations, and explicitly unsupported combinations block managed upgrades. Covro does not upgrade Codex CLI. See [updates and recovery](docs/distribution.md) for commands, compatibility checks, and backups.
|
|
157
100
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
DB Schema **7** is tracked independently of the application version. Releases declare the schema and the verified backup migration range; an older application cannot open a newer database. See [database compatibility](docs/database.md).
|
|
161
|
-
|
|
162
|
-
Managed upgrades create and validate a private backup of the Covro database and service configuration before replacing the installation. A failed backup blocks activation. These snapshots do not include Codex history, credentials or project files. See [backup scope](docs/backups.md).
|
|
163
|
-
|
|
164
|
-
Use `covro backup create`, `covro backup list` and `covro backup verify ID` for manual snapshots. Preview offline recovery with `covro backup restore ID`; stop the service and repeat with `--confirm ID` to apply it. See [recovery instructions](docs/backups.md#manual-backups-and-offline-recovery).
|
|
165
|
-
|
|
166
|
-
See [distribution and recovery](docs/distribution.md) and [release operations](docs/releases.md) for details.
|
|
101
|
+
DB Schema **7** is tracked separately from the application version; older applications cannot open newer databases. Backups cover Covro’s database and service configuration, excluding project files, Codex history, and credentials. Restore requires stopping the service; see [backups](docs/backups.md) and [database compatibility](docs/database.md).
|
|
167
102
|
|
|
168
103
|
## Your computer, your workspace
|
|
169
104
|
|
|
170
|
-
Covro
|
|
105
|
+
Covro connects to your existing CLI through `codex app-server`. Tasks, projects, and Codex history stay on the host computer, using your Codex login and configuration. Login credentials are not copied into the browser; Codex still uses its configured model provider.
|
|
171
106
|
|
|
172
|
-
|
|
107
|
+
Covro is for a single user. The [Shell panel](docs/shell.md) runs non-interactive commands using Codex’s configured sandbox. An interactive terminal, file editor, Git GUI, and multi-user team management are outside the current scope.
|
|
173
108
|
|
|
174
109
|
## Development and contribution
|
|
175
110
|
|
|
@@ -184,26 +119,29 @@ pnpm test:e2e
|
|
|
184
119
|
|
|
185
120
|
Browser tests require the Chromium version used by the existing Playwright dependency. Tests and CI use explicit fixtures; they do not send real model requests.
|
|
186
121
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
PR titles must follow Conventional Commits, for example `feat(ui): add JSON preview` or `fix: preserve scroll position`. See [PR checks and squash merge conventions](docs/contributing.md) for supported types, Release PRs, and release behavior.
|
|
122
|
+
Use `pnpm format` to fix formatting; PR titles follow Conventional Commits. See [contribution and release conventions](docs/contributing.md).
|
|
190
123
|
|
|
191
|
-
Found a problem or have an idea? [Open an issue](https://github.com/yuzheng14/
|
|
124
|
+
Found a problem or have an idea? [Open an issue](https://github.com/yuzheng14/covro/issues) with your OS, Node.js and Codex versions, installation method, and steps to reproduce. Small, focused PRs are welcome; update both READMEs when changing user-facing facts or setup instructions.
|
|
192
125
|
|
|
193
126
|
<a id="documentation"></a>
|
|
194
127
|
|
|
195
128
|
## 📚 Documentation
|
|
196
129
|
|
|
197
|
-
| Guide
|
|
198
|
-
|
|
|
199
|
-
| [Detailed usage · 中文](docs/usage.zh-CN.md)
|
|
200
|
-
| [Deployment](docs/deployment.md)
|
|
201
|
-
| [Distribution](docs/distribution.md)
|
|
202
|
-
| [Compatibility](docs/compatibility.md)
|
|
203
|
-
| [Slash commands](docs/slash-commands.md)
|
|
204
|
-
| [Architecture](docs/architecture.md)
|
|
205
|
-
| [Verification](docs/verification.md)
|
|
206
|
-
| [
|
|
130
|
+
| Guide | Contents |
|
|
131
|
+
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
132
|
+
| [Detailed usage · 中文](docs/usage.zh-CN.md) | Projects, conversations, approvals, notifications, images, and recovery |
|
|
133
|
+
| [Deployment](docs/deployment.md) | Local access, Tailscale, and Cloudflare Access |
|
|
134
|
+
| [Distribution](docs/distribution.md) | CLI, services, data locations, upgrades, and repair |
|
|
135
|
+
| [Compatibility](docs/compatibility.md) | Verified Codex versions and behavior boundaries |
|
|
136
|
+
| [Slash commands](docs/slash-commands.md) | Supported commands and usage |
|
|
137
|
+
| [Architecture](docs/architecture.md) | How the gateway, Codex adapter, and browser fit together |
|
|
138
|
+
| [Verification](docs/verification.md) | Test coverage and recorded live checks |
|
|
139
|
+
| [Projects](docs/project-clone.md) · [Workspaces](docs/workspaces.md) | Importing, cloning, and conversation directories |
|
|
140
|
+
| [Languages](docs/i18n.md) · [History loading](docs/session-history.md) | Interface language and conversation loading |
|
|
141
|
+
| [Shell](docs/shell.md) | Command execution and sandbox limits |
|
|
142
|
+
| [Backups](docs/backups.md) · [Database](docs/database.md) | Snapshot scope, compatibility, and offline recovery |
|
|
143
|
+
| [Contributing](docs/contributing.md) · [Releases](docs/releases.md) | Formatting, PRs, and publishing |
|
|
144
|
+
| [Brand assets](docs/brand.md) | Editable SVG logo and wordmarks |
|
|
207
145
|
|
|
208
146
|
## License
|
|
209
147
|
|
package/README.zh-CN.md
CHANGED
|
@@ -29,25 +29,14 @@
|
|
|
29
29
|
|
|
30
30
|
## ✨ 你可以做什么
|
|
31
31
|
|
|
32
|
-
- 📱
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
- ⚡ **更快打开长会话。** 优先显示最近消息,向上滚动时提前加载历史;本机会话列表和历史分片可先显示缓存,再由服务端核对更新。[加载与缓存说明](docs/session-history.md)。
|
|
38
|
-
- 📖 **一边看产出,一边继续讨论。** 电脑上将 Markdown 文档、JSON 文件与会话并排打开,继续向 Codex 提问;Markdown 支持代码、表格、图片和 Mermaid 图表,回复也可直接显示图表,可查看或复制图表源码,并以实际大小查看宽图。JSON 支持格式化缩进、语法高亮,格式无效时保留原文,可复制完整原文,手机上也有全屏阅读器。TXT、CSV、TSV、TOML、YAML/YML、JSONL、LOG 和 INI 文件按纯文本展示,保留空白并支持切换自动换行。文件预览保持只读,所有支持的文本格式均限制为 2 MiB,仅支持 UTF-8。
|
|
39
|
-
- 🔎 **逐行查看代码变更。** 在同一只读预览窗口查看某轮或某工具的 Codex 补丁快照,按顺序连续浏览全部文件,支持行号、行内文字高亮和区块跳转;长 diff 默认折叠,展开后按需渲染,阅读时文件标题栏吸顶,随时收起当前文件。
|
|
40
|
-
- ✍️ **切换任务,草稿还在。** 每个会话分别保留当前页面中的草稿、粘贴图片和模型设置。手机和平板按 Enter 换行、点击发送按钮提交;桌面保留 Enter 发送、Shift + Enter 换行。完成后可以复制或导出结果。在命令输出区域右上角一键复制全部已加载结果,截断内容会明确提示。
|
|
41
|
-
- 🖥️ **在任务旁运行命令。** 打开 **Shell**,在所选项目目录执行命令、查看实时标准输出和错误输出、中断执行,并复用近期命令。面板沿用 Codex 配置的沙箱,最长运行十分钟,不支持交互输入;关闭面板后命令仍继续运行。[能力与限制](docs/shell.md)。
|
|
42
|
-
- 🛟 **保留可恢复的数据快照。** 从侧栏打开**备份与恢复**,手动创建服务端备份,查看进度和已验证的记录;升级前使用同一套备份能力。恢复通过停服后的 CLI 执行。[范围与恢复步骤](docs/backups.md)。
|
|
43
|
-
|
|
44
|
-
Mermaid 图表在代码块闭合后于本地渲染,自动适配浅色/深色。渲染失败时保留源码;渲染上限为 50,000 个源码字符、500 条边。
|
|
45
|
-
|
|
46
|
-
本地图片预览在加载后 30 秒内直接复用已有图片;过期后再次打开时,先显示已有预览,再由服务端核对更新。
|
|
32
|
+
- 📱 **随时随地跟进任务。** 用电脑或手机查看改动、处理审批、回答问题。关闭页面,任务仍会继续。
|
|
33
|
+
- 🗂️ **集中管理项目与会话。** 无需项目即可开始任务,在一个工作台查看并行进展,接续或 Fork Codex CLI 会话。
|
|
34
|
+
- 📖 **一边看产出,一边讨论。** 电脑上将文档、图表和代码变更与会话并排阅读,手机上使用全屏阅读器。
|
|
35
|
+
|
|
36
|
+
操作方式与使用细节见[使用指南](docs/usage.zh-CN.md)。
|
|
47
37
|
|
|
48
38
|
<details>
|
|
49
39
|
<summary><strong>📱 手机上也能舒服地使用</strong></summary>
|
|
50
|
-
<p>查看结果、回答问题、补充下一步要求,不必每次都回到电脑前。</p>
|
|
51
40
|
<img src="docs/assets/workspace-mobile.png" alt="手机屏幕上的 Covro 会话" width="320" />
|
|
52
41
|
</details>
|
|
53
42
|
|
|
@@ -55,7 +44,7 @@ Mermaid 图表在代码块闭合后于本地渲染,自动适配浅色/深色
|
|
|
55
44
|
|
|
56
45
|
## 🚀 开始使用
|
|
57
46
|
|
|
58
|
-
需要 **Node.js 24.x,版本不低于 24.19**,以及已经安装、登录的 **Codex CLI
|
|
47
|
+
需要 **Node.js 24.x,版本不低于 24.19**,以及已经安装、登录的 **Codex CLI**。界面支持简体中文、英语、日语和韩语。
|
|
59
48
|
|
|
60
49
|
<!-- codex-compatibility:start -->
|
|
61
50
|
|
|
@@ -63,45 +52,29 @@ Mermaid 图表在代码块闭合后于本地渲染,自动适配浅色/深色
|
|
|
63
52
|
|
|
64
53
|
<!-- codex-compatibility:end -->
|
|
65
54
|
|
|
55
|
+
其他 Codex 版本及使用确认要求见[兼容性说明](docs/compatibility.md)。
|
|
56
|
+
|
|
66
57
|
<a id="npm-安装"></a>
|
|
67
58
|
|
|
68
59
|
### 📦 npm 安装
|
|
69
60
|
|
|
70
|
-
首个公开 npm 版本正在准备中。`@covro/covro` 发布前,请先[从源码运行](#从源码运行);发布后,只需安装并启动:
|
|
71
|
-
|
|
72
61
|
```sh
|
|
73
62
|
npm install -g @covro/covro
|
|
74
63
|
covro
|
|
75
64
|
```
|
|
76
65
|
|
|
77
|
-
`covro`
|
|
78
|
-
|
|
79
|
-
| 命令 | 用途 |
|
|
80
|
-
| ------------------------- | -------------------------------------------- |
|
|
81
|
-
| `covro status` | 查看运行实例与访问地址 |
|
|
82
|
-
| `covro doctor` | 诊断运行实例的会话和 GitHub 凭证,不输出令牌 |
|
|
83
|
-
| `covro logs` | 查看最近的服务日志 |
|
|
84
|
-
| `covro stop` | 停止服务 |
|
|
85
|
-
| `covro run` | 在前台运行 |
|
|
86
|
-
| `covro service install` | 在 macOS 或 Linux 上主动启用登录自启 |
|
|
87
|
-
| `covro service uninstall` | 移除登录自启 |
|
|
88
|
-
|
|
89
|
-
npm 包名为 `@covro/covro`,命令为 `covro`。开发渠道使用 `npm install -g @covro/covro@dev` 安装。
|
|
90
|
-
|
|
91
|
-
npm CLI 默认使用 `~/.covro/config.json`,数据目录固定在配置文件旁。可以通过 `covro --config /absolute/path/config.json` 沿用已有配置。
|
|
66
|
+
`covro` 默认在后台启动并输出本机访问地址,使用 `covro stop` 停止。配置、日志、登录自启、macOS 凭证诊断和版本渠道见[安装与服务管理](docs/distribution.md)。
|
|
92
67
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
macOS 后台启动使用已登录用户的 GUI launchd 域,使权限允许的命令能够访问已有钥匙串凭证;这不会开启登录自启,登录自启仍需显式运行 `covro service install`。没有桌面会话时仍支持 headless 启动,并提示钥匙串访问限制。安装此修复后,已有实例需要执行 `covro stop` 和 `covro start` 重启。详见[启动与凭证诊断](docs/distribution.md#macos-sessions-and-credentials)。
|
|
68
|
+
打开 **<http://127.0.0.1:8787>**,点击 **未关联项目** 右侧的 **+** 即可发送第一条任务。也可通过 **添加项目** 导入主机目录或克隆 Git 仓库。目录选项见[项目配置](docs/project-clone.md)和[会话工作目录](docs/workspaces.md)。
|
|
96
69
|
|
|
97
70
|
<a id="从源码运行"></a>
|
|
98
71
|
|
|
99
72
|
### 🛠️ 从源码运行
|
|
100
73
|
|
|
101
|
-
|
|
74
|
+
参与开发或从源码部署时,使用 **pnpm 12.11.2**:
|
|
102
75
|
|
|
103
76
|
```sh
|
|
104
|
-
git clone https://github.com/yuzheng14/
|
|
77
|
+
git clone https://github.com/yuzheng14/covro.git
|
|
105
78
|
cd covro
|
|
106
79
|
pnpm install --frozen-lockfile
|
|
107
80
|
cp config.example.json config.local.json
|
|
@@ -109,67 +82,29 @@ pnpm build
|
|
|
109
82
|
pnpm start -- --config ./config.local.json
|
|
110
83
|
```
|
|
111
84
|
|
|
112
|
-
打开 **<http://127.0.0.1:8787>**,点击侧栏 **未关联项目** 标题右侧的 **+** 即可直接发送任务,无需选择项目。
|
|
113
|
-
|
|
114
|
-
如需操作项目目录,点击 **添加项目**,选择已有目录或 **克隆 Git 仓库**。可在 **服务配置 → 数据与项目 → 项目基础目录(workDir,可选)** 设置共用的主机目录。例如 `workDir=/workspace/projects` 时,填写 `demo` 即添加 `/workspace/projects/demo`,克隆 `demo` 仓库时也默认使用该路径。绝对路径直接使用,不再拼接前缀;提交前会显示最终服务器路径,目录可自行编辑。`workDir` 保存后立即用于后续添加和克隆,刷新或重启后仍保留,不会移动已有项目;留空时继续填写绝对路径。克隆沿用主机已有的 Git 认证,弹窗可查看进度或取消。[目录配置、克隆要求与失败恢复](docs/project-clone.md)。
|
|
115
|
-
|
|
116
|
-
未关联项目的会话在首次发送时分配 `<dataDir>/workspaces/` 下的独立目录。文件持续保留,归档不会删除文件;目录、恢复与备份规则见[会话工作目录](docs/workspaces.md)。
|
|
117
|
-
|
|
118
85
|
本地开发可以改用 `pnpm dev`,打开 <http://127.0.0.1:5173>。
|
|
119
86
|
|
|
120
87
|
<a id="从其他设备访问"></a>
|
|
121
88
|
|
|
122
89
|
## 🌐 从其他设备访问
|
|
123
90
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
| 使用方式 | 连接方法 |
|
|
127
|
-
| ----------------------------- | -------------------------------------------------------- |
|
|
128
|
-
| 在运行服务的电脑上 | 打开本机地址 |
|
|
129
|
-
| 通过 Tailscale 访问自己的设备 | 配置 Tailscale Serve,并将 HTTPS 地址加入 `publicOrigin` |
|
|
130
|
-
| 通过 Cloudflare 访问 | 使用 Tunnel、Cloudflare Access 及 Covro 的 JWT 校验 |
|
|
91
|
+
新安装默认只监听回环地址。从其他设备访问时,请按[部署指南](docs/deployment.md)配置 **Tailscale Serve** 或 **Cloudflare Tunnel 与 Access**。
|
|
131
92
|
|
|
132
|
-
|
|
93
|
+
运行服务的电脑需要保持唤醒并在线。远程添加项目时,填写的仍是这台电脑上的目录。
|
|
133
94
|
|
|
134
95
|
## 更新与版本渠道
|
|
135
96
|
|
|
136
|
-
|
|
97
|
+
在更新面板检查版本,选择稳定版、预览版或开发版;预览版和开发版也会接收更新的稳定版本。**macOS 和 Linux 的 npm 全局安装**支持在此面板或通过 `covro update` 受管升级;其他安装方式沿用原更新方法。
|
|
137
98
|
|
|
138
|
-
|
|
139
|
-
covro update status
|
|
140
|
-
covro update
|
|
141
|
-
covro update --channel dev
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
| 渠道 | npm 标签 | 适合 |
|
|
145
|
-
| ------ | ---------------- | -------------------------------------------------- |
|
|
146
|
-
| 稳定版 | `latest` | 日常使用 |
|
|
147
|
-
| 预览版 | `beta`、`latest` | 维护者通过 Beta 标签或 GitHub Release 选定的预览版 |
|
|
148
|
-
| 开发版 | `dev`、`latest` | CI 通过后的 main 分支新功能 |
|
|
149
|
-
|
|
150
|
-
稳定版只检查 `latest`;预览版和开发版分别比较自身标签与 `latest`,按 SemVer 选择最新版本,开发版不接收预览版。安装稳定版后仍保留所选订阅,继续接收后续预览版或开发版;安装较旧候选版本需要明确允许降级。
|
|
151
|
-
|
|
152
|
-
开发版和预览版 npm 发布成功后,还会创建带 GitHub 自动生成说明的 [GitHub Pre-release](https://github.com/yuzheng14/covro/releases)。比较起点取同一渠道的先前版本与稳定版本中源码提交较新的那个。推送 Beta 标签即可发布 npm 包并创建对应的 Pre-release;重跑时保留已有发布说明。Beta 说明还会附上所选源码的兼容性声明。稳定版仍保留原来的分组 Changelog。
|
|
153
|
-
|
|
154
|
-
安装前,更新面板会展示所选目标版本的 GitHub Release 说明,支持 Markdown 和原文链接。说明始终对应确切目标版本;部分 Beta / Dev 版本没有对应 Release。说明缺失或 GitHub 连接失败不会阻止更新。
|
|
155
|
-
|
|
156
|
-
每个发行版声明推荐和已验证的 Codex CLI 版本,更新面板会同时显示当前与目标组合。自动升级只接受已验证组合;未验证组合需要对确切目标明确确认。版本未知、声明缺失/无效或明确不支持的组合会阻止受管升级。CLI 可通过 `covro update --allow-unverified-codex` 明确尝试同一组合。Covro 不会自动升级你的 Codex CLI。
|
|
99
|
+
自动安装默认关闭,且只接受已验证的 Codex 组合。未验证组合需要明确确认;版本未知、兼容声明缺失或无效、明确不支持的组合会阻止受管升级。Covro 不会升级 Codex CLI。完整命令、兼容检查和备份说明见[更新与恢复](docs/distribution.md)。
|
|
157
100
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
DB Schema **7** 独立于应用版本管理。发行版声明 Schema 及经过验证的备份迁移范围;旧应用不能打开更新的数据库。详见[数据库兼容规则](docs/database.md)。
|
|
161
|
-
|
|
162
|
-
受管升级会在替换安装前创建并验证私有备份,覆盖 Covro 数据库与服务配置;备份失败会阻止激活。快照不包含 Codex 历史、凭据或项目文件。详见[备份范围](docs/backups.md)。
|
|
163
|
-
|
|
164
|
-
使用 `covro backup create`、`covro backup list` 和 `covro backup verify ID` 创建与检查手动备份。先运行 `covro backup restore ID` 预检;停服后加 `--confirm ID` 执行恢复。详见[恢复步骤](docs/backups.md#manual-backups-and-offline-recovery)。
|
|
165
|
-
|
|
166
|
-
详细说明见[分发与恢复](docs/distribution.md)、[发版操作](docs/releases.md)。
|
|
101
|
+
DB Schema **7** 独立于应用版本管理,旧应用不能打开更新的数据库。备份覆盖 Covro 数据库和服务配置,不包含项目文件、Codex 历史或凭据。恢复需要停服,详见[备份与恢复](docs/backups.md)和[数据库兼容规则](docs/database.md)。
|
|
167
102
|
|
|
168
103
|
## 你的电脑,你的工作台
|
|
169
104
|
|
|
170
|
-
Covro
|
|
105
|
+
Covro 通过 `codex app-server` 连接已有 CLI,沿用你的 Codex 登录与配置。任务在运行服务的电脑上执行,项目和 Codex 历史也留在那里;登录凭据不会复制到浏览器,Codex 仍会访问你配置的模型提供方。
|
|
171
106
|
|
|
172
|
-
|
|
107
|
+
Covro 面向单用户。[Shell 面板](docs/shell.md)沿用 Codex 配置的沙箱执行非交互命令。交互终端、文件编辑器、Git 图形界面与多人团队管理不在当前范围内。
|
|
173
108
|
|
|
174
109
|
## 开发与参与
|
|
175
110
|
|
|
@@ -184,26 +119,29 @@ pnpm test:e2e
|
|
|
184
119
|
|
|
185
120
|
浏览器测试需要现有 Playwright 依赖所对应的 Chromium。测试与 CI 使用明确的测试夹具,不发起真实模型请求。
|
|
186
121
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
PR 标题须符合 Conventional Commits,例如 `feat(ui): add JSON preview` 或 `fix: preserve scroll position`。支持的 type、Release PR 检查及 squash 合并与发版约定见[开发与 PR 约定](docs/contributing.md)。
|
|
122
|
+
使用 `pnpm format` 修复格式,PR 标题遵循 Conventional Commits,详见[开发与发版约定](docs/contributing.md)。
|
|
190
123
|
|
|
191
|
-
遇到问题或有想法,欢迎[提交 Issue](https://github.com/yuzheng14/
|
|
124
|
+
遇到问题或有想法,欢迎[提交 Issue](https://github.com/yuzheng14/covro/issues),附上操作系统、Node.js 与 Codex 版本、安装方式和复现步骤。也欢迎范围明确的小 PR;修改面向使用者的事实或安装步骤时,请同步更新两份 README。
|
|
192
125
|
|
|
193
126
|
<a id="文档导航"></a>
|
|
194
127
|
|
|
195
128
|
## 📚 文档导航
|
|
196
129
|
|
|
197
|
-
| 指南
|
|
198
|
-
|
|
|
199
|
-
| [详细使用指南](docs/usage.zh-CN.md)
|
|
200
|
-
| [部署](docs/deployment.md)
|
|
201
|
-
| [分发](docs/distribution.md)
|
|
202
|
-
| [兼容性](docs/compatibility.md)
|
|
203
|
-
| [Slash 命令](docs/slash-commands.md)
|
|
204
|
-
| [架构](docs/architecture.md)
|
|
205
|
-
| [验证记录](docs/verification.md)
|
|
206
|
-
| [
|
|
130
|
+
| 指南 | 内容 |
|
|
131
|
+
| -------------------------------------------------------------- | ------------------------------------ |
|
|
132
|
+
| [详细使用指南](docs/usage.zh-CN.md) | 项目、会话、审批、通知、图片和恢复 |
|
|
133
|
+
| [部署](docs/deployment.md) | 本机、Tailscale 与 Cloudflare Access |
|
|
134
|
+
| [分发](docs/distribution.md) | CLI、服务、数据位置、升级与修复 |
|
|
135
|
+
| [兼容性](docs/compatibility.md) | 已验证的 Codex 版本与行为边界 |
|
|
136
|
+
| [Slash 命令](docs/slash-commands.md) | 支持的命令和用法 |
|
|
137
|
+
| [架构](docs/architecture.md) | 网关、Codex 适配器与浏览器的协作方式 |
|
|
138
|
+
| [验证记录](docs/verification.md) | 测试范围与真实环境检查记录 |
|
|
139
|
+
| [项目](docs/project-clone.md) · [工作目录](docs/workspaces.md) | 导入、克隆与会话目录 |
|
|
140
|
+
| [语言](docs/i18n.md) · [历史加载](docs/session-history.md) | 界面语言与会话加载 |
|
|
141
|
+
| [Shell](docs/shell.md) | 命令执行与沙箱限制 |
|
|
142
|
+
| [备份](docs/backups.md) · [数据库](docs/database.md) | 快照范围、兼容性与停服恢复 |
|
|
143
|
+
| [开发约定](docs/contributing.md) · [发版](docs/releases.md) | 格式、PR 与发布流程 |
|
|
144
|
+
| [品牌素材](docs/brand.md) | 可编辑的 SVG 图标与完整标识 |
|
|
207
145
|
|
|
208
146
|
## 许可证
|
|
209
147
|
|
package/dist/web/assets/{abnfDiagram-WEYOIA3C-CgSmgOr1.js → abnfDiagram-WEYOIA3C-Cjx0OXcz.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e,t}from"./mermaid-parser.core-
|
|
1
|
+
import{m as e,t}from"./mermaid-parser.core-BTsSiR1J.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-m1aZIffM.js";import"./chunk-DSNLSHJZ-D0FOol-u.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-CPc4Cyjo.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-CMDsDlBl.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-
|
|
1
|
+
import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-BxX2PIsO.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
package/dist/web/assets/{architecture-WOLXFQ4H-DMTD1pHe.js → architecture-WOLXFQ4H-BoyiZK3I.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-
|
|
1
|
+
import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-BTsSiR1J.js";
|