@logicseek/hello-cc 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +164 -0
- package/README.md +31 -6
- package/README.zh-CN.md +31 -7
- package/assets/logo.svg +84 -0
- package/bin/hcc.mjs +2388 -290
- package/docs/README.md +24 -0
- package/docs/README.zh-CN.md +24 -0
- package/docs/commands.md +135 -0
- package/docs/commands.zh-CN.md +126 -0
- package/docs/design.md +12 -4
- package/docs/guide.md +83 -71
- package/docs/guide.zh-CN.md +74 -68
- package/docs/implementation.md +21 -1
- package/package.json +7 -1
- package/scripts/github-release.mjs +190 -0
- package/scripts/regression.mjs +852 -31
- package/scripts/release-notes.mjs +112 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
This project keeps one changelog file. Add one section per release, with the
|
|
4
|
+
newest version first. Do not create a new changelog file for every release.
|
|
5
|
+
|
|
6
|
+
Before publishing, run:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm run release:check
|
|
10
|
+
npm run release:notes
|
|
11
|
+
npm run release:github:dry-run
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Pushing a `v*` tag runs the GitHub Release workflow, which creates or updates
|
|
15
|
+
the release description from the current changelog section. Use
|
|
16
|
+
`npm run release:github` with `GH_TOKEN` or `GITHUB_TOKEN` only for local
|
|
17
|
+
backfills.
|
|
18
|
+
|
|
19
|
+
## 0.1.3
|
|
20
|
+
|
|
21
|
+
### Summary
|
|
22
|
+
|
|
23
|
+
hello-cc 0.1.3 improves the Web console for day-to-day remote operation and
|
|
24
|
+
hardens the release workflow. The Web UI now supports English/Chinese labels,
|
|
25
|
+
resizable left and right sidebars, remote token defaults, and a cleaner
|
|
26
|
+
resume/session experience. Release notes can now be published automatically from
|
|
27
|
+
the changelog through GitHub Actions, so tag-based releases and manual backfills
|
|
28
|
+
use the same checked release body.
|
|
29
|
+
|
|
30
|
+
### Highlights
|
|
31
|
+
|
|
32
|
+
- Added a Web language selector with English and Chinese labels for the main
|
|
33
|
+
project/session controls, action menu, state panel, detected-session view, and
|
|
34
|
+
status text.
|
|
35
|
+
- Added full-height draggable left and right sidebar dividers while preserving
|
|
36
|
+
the compact collapse buttons and persisted sidebar widths.
|
|
37
|
+
- Reapplied sidebar width clamps after collapse/expand transitions so restored
|
|
38
|
+
panels cannot squeeze the center terminal below its usable width.
|
|
39
|
+
- Kept bare `hcc web` remote-friendly by default with a saved token, while
|
|
40
|
+
preserving `--local` and explicit token/no-token controls.
|
|
41
|
+
- Added provider resume controls and resumable-session selection in the Web
|
|
42
|
+
start form so Claude/Codex resume flows are available from the browser.
|
|
43
|
+
- Added `scripts/github-release.mjs` plus `release:github` and
|
|
44
|
+
`release:github:dry-run` npm scripts to create or update GitHub Releases from
|
|
45
|
+
`CHANGELOG.md`.
|
|
46
|
+
- Added `.github/workflows/github-release.yml` so pushing `v*` tags publishes
|
|
47
|
+
the GitHub Release description with the repository `GITHUB_TOKEN`, and
|
|
48
|
+
`workflow_dispatch` can backfill older releases without a personal token.
|
|
49
|
+
- Tightened generated coordination guidance so read-only reviews do not take
|
|
50
|
+
advisory locks and mutating work remains explicitly locked.
|
|
51
|
+
- Expanded regression coverage for Web i18n, sidebar resizing, release notes,
|
|
52
|
+
GitHub Release automation, and generated coordination guidance.
|
|
53
|
+
|
|
54
|
+
### Validation
|
|
55
|
+
|
|
56
|
+
The 0.1.3 release should be validated with:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
git diff --check
|
|
60
|
+
node --check bin/hcc.mjs
|
|
61
|
+
node --check scripts/regression.mjs
|
|
62
|
+
node --check scripts/github-release.mjs
|
|
63
|
+
node --check scripts/release-notes.mjs
|
|
64
|
+
npm run release:check
|
|
65
|
+
npm run release:github:dry-run -- --version 0.1.3
|
|
66
|
+
npm pack --dry-run --json
|
|
67
|
+
npm publish --dry-run --registry=https://registry.npmjs.org/ --access public
|
|
68
|
+
npm test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The expected full regression marker is:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
FULL_REGRESSION_OK
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 0.1.2
|
|
78
|
+
|
|
79
|
+
### Summary
|
|
80
|
+
|
|
81
|
+
hello-cc 0.1.2 tightens the public release surface after the first scoped npm
|
|
82
|
+
publish. It adds a first-class update command, makes uninstall discoverable in
|
|
83
|
+
top-level help, and reorganizes the documentation so the npm package page and
|
|
84
|
+
GitHub release notes have a clear, detailed description of what changed. It also
|
|
85
|
+
adds explicit team task orchestration and makes schema migrations cover
|
|
86
|
+
registered project databases.
|
|
87
|
+
|
|
88
|
+
### Highlights
|
|
89
|
+
|
|
90
|
+
- Added `hcc update`, which updates the global npm install by running
|
|
91
|
+
`npm install -g @logicseek/hello-cc@latest`.
|
|
92
|
+
- Added `hcc update --tag`, `hcc update --registry`, and `hcc update --dry-run`
|
|
93
|
+
for controlled upgrades and release verification.
|
|
94
|
+
- Made `hcc uninstall` visible in top-level `hcc --help`, matching the README
|
|
95
|
+
and command reference.
|
|
96
|
+
- Kept uninstall behavior conservative: `hcc uninstall` removes hooks and
|
|
97
|
+
shims, while `hcc uninstall --purge --yes` is required to remove project data.
|
|
98
|
+
- Split documentation into a short README, a user guide, command reference, and
|
|
99
|
+
documentation index in both English and Chinese.
|
|
100
|
+
- Added `hcc team plan`, `hcc team start`, and `hcc team status` for explicit
|
|
101
|
+
parent-task splits into auditable child tasks.
|
|
102
|
+
- Added task hierarchy metadata so team subtasks remain visible through the
|
|
103
|
+
normal task/state/timeline surfaces.
|
|
104
|
+
- Extended schema migration startup so registered project databases are migrated
|
|
105
|
+
alongside the current project database when the CLI opens state.
|
|
106
|
+
- Changed bare `hcc web` to listen on `0.0.0.0` with a saved URL token by
|
|
107
|
+
default. The token is generated on first use and reused across restarts; use
|
|
108
|
+
`--local` for loopback-only access or `--no-token` only in trusted local/test
|
|
109
|
+
environments.
|
|
110
|
+
- Restored the Star History chart at the bottom of both README files.
|
|
111
|
+
- Included README-linked package assets in the npm tarball so the package page
|
|
112
|
+
renders the project logo correctly.
|
|
113
|
+
|
|
114
|
+
### Documentation
|
|
115
|
+
|
|
116
|
+
- `README.md` and `README.zh-CN.md` now focus on product positioning, install
|
|
117
|
+
and maintenance commands, quick start, a basic workflow, and links to docs.
|
|
118
|
+
- `docs/guide.md` and `docs/guide.zh-CN.md` describe practical usage and avoid
|
|
119
|
+
embedding the full command list.
|
|
120
|
+
- `docs/commands.md` and `docs/commands.zh-CN.md` provide the compact command
|
|
121
|
+
reference.
|
|
122
|
+
- `docs/README.md` and `docs/README.zh-CN.md` provide the documentation index.
|
|
123
|
+
- English documentation links now point to English user docs, and Chinese
|
|
124
|
+
documentation links point to Chinese user docs.
|
|
125
|
+
|
|
126
|
+
### Validation
|
|
127
|
+
|
|
128
|
+
The 0.1.2 release should be validated with:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
git diff --check
|
|
132
|
+
node --check bin/hcc.mjs
|
|
133
|
+
node --check scripts/regression.mjs
|
|
134
|
+
node --check lib/setup.mjs
|
|
135
|
+
node --check lib/discover.mjs
|
|
136
|
+
npm pack --dry-run --json
|
|
137
|
+
npm publish --dry-run --registry=https://registry.npmjs.org/ --access public
|
|
138
|
+
npm test
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The package dry run should include `CHANGELOG.md`, `assets/logo.svg`, and the
|
|
142
|
+
English and Chinese command reference files.
|
|
143
|
+
|
|
144
|
+
The expected full regression marker is:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
FULL_REGRESSION_OK
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Release Notes Source
|
|
151
|
+
|
|
152
|
+
Use this changelog section as the source for the GitHub Release notes for
|
|
153
|
+
`v0.1.2`. The npm package metadata keeps a short description, while the package
|
|
154
|
+
README and this changelog provide the detailed release description.
|
|
155
|
+
|
|
156
|
+
Publish or backfill the GitHub Release description with:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
GH_TOKEN=... npm run release:github -- --version 0.1.2
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
After `.github/workflows/github-release.yml` is on the default branch, the same
|
|
163
|
+
backfill can be run from GitHub Actions with `workflow_dispatch` and version
|
|
164
|
+
`0.1.2`, without a personal token.
|
package/README.md
CHANGED
|
@@ -32,12 +32,14 @@ doing.
|
|
|
32
32
|
so agents can answer from current project state.
|
|
33
33
|
- **Conflict avoidance**: advisory locks and handoffs make multi-agent editing
|
|
34
34
|
explicit.
|
|
35
|
+
- **Explicit team splits**: `hcc team plan/start/status` turns one parallel
|
|
36
|
+
task into auditable child tasks without hidden auto-spawning.
|
|
35
37
|
- **Resume-friendly identity**: resumed Claude/Codex sessions map back to
|
|
36
38
|
stable peers when provider session ids are available.
|
|
37
39
|
- **One console, many projects**: one local Web runtime can switch between
|
|
38
40
|
registered project roots.
|
|
39
41
|
|
|
40
|
-
## Install
|
|
42
|
+
## Install And Manage
|
|
41
43
|
|
|
42
44
|
Node.js 24 or newer is required.
|
|
43
45
|
|
|
@@ -48,7 +50,7 @@ npm install -g @logicseek/hello-cc
|
|
|
48
50
|
Update an existing global install:
|
|
49
51
|
|
|
50
52
|
```bash
|
|
51
|
-
|
|
53
|
+
hcc update
|
|
52
54
|
```
|
|
53
55
|
|
|
54
56
|
Or run it without a global install:
|
|
@@ -57,6 +59,18 @@ Or run it without a global install:
|
|
|
57
59
|
npx @logicseek/hello-cc web
|
|
58
60
|
```
|
|
59
61
|
|
|
62
|
+
Remove hooks and shims from this machine:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
hcc uninstall
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Remove the global npm package:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm uninstall -g @logicseek/hello-cc
|
|
72
|
+
```
|
|
73
|
+
|
|
60
74
|
## Quick Start
|
|
61
75
|
|
|
62
76
|
Run this inside the project you want agents to share:
|
|
@@ -66,7 +80,8 @@ cd /path/to/project
|
|
|
66
80
|
hcc web
|
|
67
81
|
```
|
|
68
82
|
|
|
69
|
-
Then open the printed
|
|
83
|
+
Then open the printed URL. By default, `hcc web` listens on LAN interfaces and
|
|
84
|
+
uses a saved URL token, generating one on first use. It initializes the project bus, installs
|
|
70
85
|
Claude/Codex hooks and shims, starts or reuses the Web console, and returns the
|
|
71
86
|
terminal to you.
|
|
72
87
|
|
|
@@ -110,12 +125,14 @@ generic session-isolation assumptions.
|
|
|
110
125
|
|
|
111
126
|
## Documentation
|
|
112
127
|
|
|
113
|
-
- [
|
|
114
|
-
|
|
128
|
+
- [Documentation Index](docs/README.md): all user and implementation docs.
|
|
129
|
+
- [User Guide](docs/guide.md): setup, Web console, workflows, coordination
|
|
130
|
+
semantics, and environment behavior.
|
|
131
|
+
- [Command Reference](docs/commands.md): compact public command list.
|
|
132
|
+
- [Changelog](CHANGELOG.md): release notes for published versions.
|
|
115
133
|
- [Design Notes](docs/design.md): product boundaries and coordination model.
|
|
116
134
|
- [Implementation Notes](docs/implementation.md): architecture and internal
|
|
117
135
|
protocol.
|
|
118
|
-
- [中文用户指南](docs/guide.zh-CN.md)
|
|
119
136
|
|
|
120
137
|
## Testing
|
|
121
138
|
|
|
@@ -129,3 +146,11 @@ temporary tmux sessions, and a temporary Web runtime to test the main flows.
|
|
|
129
146
|
## License
|
|
130
147
|
|
|
131
148
|
[Apache-2.0](LICENSE)
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
<p align="center">
|
|
153
|
+
<a href="https://star-history.com/#Dullne/hello-cc&Date">
|
|
154
|
+
<img src="https://api.star-history.com/svg?repos=Dullne/hello-cc&type=Date" width="600" alt="Star History Chart">
|
|
155
|
+
</a>
|
|
156
|
+
</p>
|
package/README.zh-CN.md
CHANGED
|
@@ -23,10 +23,12 @@
|
|
|
23
23
|
- **Web 控制真实终端**:浏览器 attach 到和本地终端相同的 tmux pane,不是浏览器里另开的临时 shell。
|
|
24
24
|
- **Claude/Codex 感知项目状态**:hooks 会在模型回答前注入实时 `hcc` 状态。
|
|
25
25
|
- **减少编辑冲突**:通过 advisory lock 和 handoff 显式协调多 agent 修改。
|
|
26
|
+
- **显式团队拆分**:`hcc team plan/start/status` 可以把一个并行任务拆成可审计
|
|
27
|
+
子任务,不会隐藏地自动启动进程。
|
|
26
28
|
- **resume 友好的稳定身份**:当 provider 暴露 session id 时,恢复会话会映射回稳定 peer。
|
|
27
29
|
- **一个控制台管理多个项目**:单个本地 Web runtime 可以在多个 project root 之间切换。
|
|
28
30
|
|
|
29
|
-
##
|
|
31
|
+
## 安装和维护
|
|
30
32
|
|
|
31
33
|
需要 Node.js 24 或更新版本。
|
|
32
34
|
|
|
@@ -37,7 +39,7 @@ npm install -g @logicseek/hello-cc
|
|
|
37
39
|
更新已有的全局安装:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
|
|
42
|
+
hcc update
|
|
41
43
|
```
|
|
42
44
|
|
|
43
45
|
也可以不全局安装,直接运行:
|
|
@@ -46,6 +48,18 @@ npm install -g @logicseek/hello-cc@latest
|
|
|
46
48
|
npx @logicseek/hello-cc web
|
|
47
49
|
```
|
|
48
50
|
|
|
51
|
+
移除本机 hooks 和 shims:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
hcc uninstall
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
移除全局 npm 包:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm uninstall -g @logicseek/hello-cc
|
|
61
|
+
```
|
|
62
|
+
|
|
49
63
|
## 快速开始
|
|
50
64
|
|
|
51
65
|
在需要多个 agent 共享状态的项目中运行:
|
|
@@ -55,7 +69,9 @@ cd /path/to/project
|
|
|
55
69
|
hcc web
|
|
56
70
|
```
|
|
57
71
|
|
|
58
|
-
|
|
72
|
+
然后打开命令输出里的 URL。默认情况下,`hcc web` 会监听内网地址,并在 URL
|
|
73
|
+
里附带固定 token;首次使用时自动生成并保存,之后默认复用。它会初始化项目总线,
|
|
74
|
+
安装 Claude/Codex hooks 和 shims,启动或复用 Web 控制台,然后把终端还给你。
|
|
59
75
|
|
|
60
76
|
第一次安装 shim 后,打开新终端或重新加载 shell:
|
|
61
77
|
|
|
@@ -95,10 +111,10 @@ hcc task done --id 1 --summary "Done"
|
|
|
95
111
|
|
|
96
112
|
## 文档
|
|
97
113
|
|
|
98
|
-
- [
|
|
99
|
-
- [
|
|
100
|
-
- [
|
|
101
|
-
- [
|
|
114
|
+
- [文档目录](docs/README.zh-CN.md):全部用户文档和实现文档入口。
|
|
115
|
+
- [用户指南](docs/guide.zh-CN.md):安装、Web 控制台、协作流程、协作语义和环境变量行为。
|
|
116
|
+
- [命令参考](docs/commands.zh-CN.md):紧凑公共命令清单。
|
|
117
|
+
- [更新日志](CHANGELOG.md):已发布版本的 release notes。
|
|
102
118
|
|
|
103
119
|
## 测试
|
|
104
120
|
|
|
@@ -111,3 +127,11 @@ npm test
|
|
|
111
127
|
## License
|
|
112
128
|
|
|
113
129
|
[Apache-2.0](LICENSE)
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
<p align="center">
|
|
134
|
+
<a href="https://star-history.com/#Dullne/hello-cc&Date">
|
|
135
|
+
<img src="https://api.star-history.com/svg?repos=Dullne/hello-cc&type=Date" width="600" alt="Star History Chart">
|
|
136
|
+
</a>
|
|
137
|
+
</p>
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="240" height="240">
|
|
2
|
+
<defs>
|
|
3
|
+
<filter id="outerGlow" x="-10%" y="-10%" width="120%" height="120%">
|
|
4
|
+
<feGaussianBlur stdDeviation="4" result="blur"/>
|
|
5
|
+
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
6
|
+
</filter>
|
|
7
|
+
<radialGradient id="bgGrad" cx="40%" cy="35%" r="70%">
|
|
8
|
+
<stop offset="0%" stop-color="#1a2028"/>
|
|
9
|
+
<stop offset="100%" stop-color="#0a0c0f"/>
|
|
10
|
+
</radialGradient>
|
|
11
|
+
<!-- Text gradient: white → teal, connects wordmark to mesh -->
|
|
12
|
+
<linearGradient id="textGrad" x1="0" y1="0" x2="0" y2="1">
|
|
13
|
+
<stop offset="0%" stop-color="#eef2f6"/>
|
|
14
|
+
<stop offset="100%" stop-color="#40c4aa"/>
|
|
15
|
+
</linearGradient>
|
|
16
|
+
</defs>
|
|
17
|
+
|
|
18
|
+
<!-- Badge -->
|
|
19
|
+
<circle cx="120" cy="120" r="114" fill="url(#bgGrad)" filter="url(#outerGlow)"/>
|
|
20
|
+
<circle cx="120" cy="120" r="113" fill="none" stroke="#303640" stroke-width="1.5"/>
|
|
21
|
+
<circle cx="120" cy="120" r="105" fill="none" stroke="#40c4aa" stroke-width="0.4" opacity="0.25"/>
|
|
22
|
+
|
|
23
|
+
<!--
|
|
24
|
+
Mesh pentagon — center (120, 108), circumradius R=65
|
|
25
|
+
Shifted down 8px from previous (was 100) for visual balance
|
|
26
|
+
|
|
27
|
+
Top: (120, 43)
|
|
28
|
+
Upper-right: (182, 88)
|
|
29
|
+
Lower-right: (158, 161)
|
|
30
|
+
Lower-left: ( 82, 161)
|
|
31
|
+
Upper-left: ( 58, 88)
|
|
32
|
+
-->
|
|
33
|
+
|
|
34
|
+
<!-- Connections -->
|
|
35
|
+
<g stroke="#40c4aa" stroke-width="1.4" opacity="0.20" fill="none">
|
|
36
|
+
<line x1="120" y1="43" x2="182" y2="88"/>
|
|
37
|
+
<line x1="120" y1="43" x2="158" y2="161"/>
|
|
38
|
+
<line x1="120" y1="43" x2="82" y2="161"/>
|
|
39
|
+
<line x1="120" y1="43" x2="58" y2="88"/>
|
|
40
|
+
<line x1="182" y1="88" x2="158" y2="161"/>
|
|
41
|
+
<line x1="182" y1="88" x2="82" y2="161"/>
|
|
42
|
+
<line x1="182" y1="88" x2="58" y2="88"/>
|
|
43
|
+
<line x1="158" y1="161" x2="82" y2="161"/>
|
|
44
|
+
<line x1="158" y1="161" x2="58" y2="88"/>
|
|
45
|
+
<line x1="82" y1="161" x2="58" y2="88"/>
|
|
46
|
+
</g>
|
|
47
|
+
|
|
48
|
+
<!-- Spoke lines from center hub -->
|
|
49
|
+
<g stroke="#40c4aa" stroke-width="0.8" opacity="0.12">
|
|
50
|
+
<line x1="120" y1="108" x2="120" y2="43"/>
|
|
51
|
+
<line x1="120" y1="108" x2="182" y2="88"/>
|
|
52
|
+
<line x1="120" y1="108" x2="158" y2="161"/>
|
|
53
|
+
<line x1="120" y1="108" x2="82" y2="161"/>
|
|
54
|
+
<line x1="120" y1="108" x2="58" y2="88"/>
|
|
55
|
+
</g>
|
|
56
|
+
|
|
57
|
+
<!-- Node halos — all equal (flat peer mesh, no hierarchy) -->
|
|
58
|
+
<circle cx="120" cy="43" r="14" fill="none" stroke="#40c4aa" stroke-width="1" opacity="0.20"/>
|
|
59
|
+
<circle cx="182" cy="88" r="14" fill="none" stroke="#40c4aa" stroke-width="1" opacity="0.20"/>
|
|
60
|
+
<circle cx="158" cy="161" r="14" fill="none" stroke="#40c4aa" stroke-width="1" opacity="0.20"/>
|
|
61
|
+
<circle cx="82" cy="161" r="14" fill="none" stroke="#40c4aa" stroke-width="1" opacity="0.20"/>
|
|
62
|
+
<circle cx="58" cy="88" r="14" fill="none" stroke="#40c4aa" stroke-width="1" opacity="0.20"/>
|
|
63
|
+
|
|
64
|
+
<!-- All 5 nodes — same size, same style -->
|
|
65
|
+
<circle cx="120" cy="43" r="10" fill="#40c4aa" opacity="0.85"/>
|
|
66
|
+
<circle cx="182" cy="88" r="10" fill="#40c4aa" opacity="0.85"/>
|
|
67
|
+
<circle cx="158" cy="161" r="10" fill="#40c4aa" opacity="0.85"/>
|
|
68
|
+
<circle cx="82" cy="161" r="10" fill="#40c4aa" opacity="0.85"/>
|
|
69
|
+
<circle cx="58" cy="88" r="10" fill="#40c4aa" opacity="0.85"/>
|
|
70
|
+
|
|
71
|
+
<!-- Center hub -->
|
|
72
|
+
<circle cx="120" cy="108" r="6" fill="#8ee8d8" opacity="1.0"/>
|
|
73
|
+
|
|
74
|
+
<!-- "hcc" wordmark -->
|
|
75
|
+
<text
|
|
76
|
+
x="120" y="210"
|
|
77
|
+
font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
|
78
|
+
font-size="30"
|
|
79
|
+
font-weight="700"
|
|
80
|
+
fill="url(#textGrad)"
|
|
81
|
+
text-anchor="middle"
|
|
82
|
+
letter-spacing="5"
|
|
83
|
+
>hcc</text>
|
|
84
|
+
</svg>
|