@tom2012/cc-web 2026.4.20-a → 2026.4.20-b
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 +1 -1
- package/backend/dist/memory-prompts.d.ts +10 -1
- package/backend/dist/memory-prompts.d.ts.map +1 -1
- package/backend/dist/memory-prompts.js +18 -8
- package/backend/dist/memory-prompts.js.map +1 -1
- package/backend/dist/routes/memory-prompts.js +2 -2
- package/backend/dist/routes/memory-prompts.js.map +1 -1
- package/frontend/dist/assets/{AssistantMessageContent-DzGlJZME.js → AssistantMessageContent-CDu_OO0W.js} +2 -2
- package/frontend/dist/assets/{GraphPreview-Df4zqgJs.js → GraphPreview-Ch_3lozG.js} +1 -1
- package/frontend/dist/assets/{MobilePage-D3ggStjX.js → MobilePage-BUyBZIGk.js} +3 -3
- package/frontend/dist/assets/{OfficePreview-CIXT9uvd.js → OfficePreview-DvPUEwFE.js} +2 -2
- package/frontend/dist/assets/{ProjectPage-DoiarouB.js → ProjectPage-DEXix3V3.js} +4 -4
- package/frontend/dist/assets/{SettingsPage-693hhVDA.js → SettingsPage-BD5u0Nov.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-55E7AYyy.js → SkillHubPage-Cqip4-le.js} +1 -1
- package/frontend/dist/assets/{chevron-down-zLVvEBvS.js → chevron-down-B7gSUQDO.js} +1 -1
- package/frontend/dist/assets/{chevron-up-C907M-oZ.js → chevron-up-CzlZZUvo.js} +1 -1
- package/frontend/dist/assets/{index-DEbOn6wL.js → index-C0RwSVk6.js} +3 -3
- package/frontend/dist/assets/{index-B9N188yi.js → index-CWOuXpJO.js} +1 -1
- package/frontend/dist/assets/{index-B2PXH3fu.js → index-CXWm66yF.js} +1 -1
- package/frontend/dist/assets/{index-DnJcqEPe.css → index-C_UILLvR.css} +1 -1
- package/frontend/dist/assets/{jszip.min-DhKLLoKz.js → jszip.min-CQA8ZeOj.js} +1 -1
- package/frontend/dist/assets/{search-DcwWTq6u.js → search-BqD4Nj-c.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A self-hosted web application (distributed as npm package) that provides a browser-based interface for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI sessions. Create projects, each with a persistent terminal running Claude Code, and interact with them through a real-time terminal UI.
|
|
4
4
|
|
|
5
|
-
**Current version**: v2026.4.20-
|
|
5
|
+
**Current version**: v2026.4.20-b | [GitHub](https://github.com/zbc0315/cc-web) | MIT License
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -17,14 +17,23 @@ export interface MemoryPromptItem {
|
|
|
17
17
|
name: string;
|
|
18
18
|
preview: string;
|
|
19
19
|
inserted: boolean;
|
|
20
|
+
lineCount: number;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
/** Line count as shown to the user: strips a single trailing `\n` before
|
|
23
|
+
* counting, so "a\nb\n" (editor shows 2 lines) and "a\nb" both return 2. */
|
|
24
|
+
export declare function lineCountOf(content: string): number;
|
|
25
|
+
export interface MemoryListResult {
|
|
26
|
+
items: MemoryPromptItem[];
|
|
27
|
+
claudeMdLineCount: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function listMemoryPrompts(folderPath: string): MemoryListResult;
|
|
22
30
|
export type ToggleAction = 'insert' | 'remove';
|
|
23
31
|
export interface ToggleResult {
|
|
24
32
|
ok: boolean;
|
|
25
33
|
changed: boolean;
|
|
26
34
|
inserted: boolean;
|
|
27
35
|
reason?: string;
|
|
36
|
+
claudeMdLineCount?: number;
|
|
28
37
|
}
|
|
29
38
|
export declare function toggleMemoryPrompt(folderPath: string, filename: string, action: ToggleAction): ToggleResult;
|
|
30
39
|
//# sourceMappingURL=memory-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompts.d.ts","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"memory-prompts.d.ts","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AA+BD;6EAC6E;AAC7E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CA8BtE;AAID,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,YAAY,CAiEd"}
|
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.lineCountOf = lineCountOf;
|
|
36
37
|
exports.listMemoryPrompts = listMemoryPrompts;
|
|
37
38
|
exports.toggleMemoryPrompt = toggleMemoryPrompt;
|
|
38
39
|
const fs = __importStar(require("fs"));
|
|
@@ -62,7 +63,13 @@ function previewOf(content) {
|
|
|
62
63
|
const line = content.split('\n').find((l) => l.trim()) ?? '';
|
|
63
64
|
return line.trim().slice(0, 200);
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
/** Line count as shown to the user: strips a single trailing `\n` before
|
|
67
|
+
* counting, so "a\nb\n" (editor shows 2 lines) and "a\nb" both return 2. */
|
|
68
|
+
function lineCountOf(content) {
|
|
69
|
+
if (content.length === 0)
|
|
70
|
+
return 0;
|
|
71
|
+
return content.replace(/\n$/, '').split('\n').length;
|
|
72
|
+
}
|
|
66
73
|
function listMemoryPrompts(folderPath) {
|
|
67
74
|
const dir = memoryDir(folderPath);
|
|
68
75
|
let files = [];
|
|
@@ -70,7 +77,8 @@ function listMemoryPrompts(folderPath) {
|
|
|
70
77
|
files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
71
78
|
}
|
|
72
79
|
catch {
|
|
73
|
-
|
|
80
|
+
// dir missing is normal — still return CLAUDE.md line count
|
|
81
|
+
return { items: [], claudeMdLineCount: lineCountOf((0, agent_prompts_1.readClaudeMd)(folderPath)) };
|
|
74
82
|
}
|
|
75
83
|
const claudeMd = (0, agent_prompts_1.readClaudeMd)(folderPath);
|
|
76
84
|
const out = [];
|
|
@@ -88,16 +96,18 @@ function listMemoryPrompts(folderPath) {
|
|
|
88
96
|
if (!stat || !stat.isFile())
|
|
89
97
|
continue;
|
|
90
98
|
let preview = '';
|
|
99
|
+
let lineCount = 0;
|
|
91
100
|
try {
|
|
92
101
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
93
102
|
preview = previewOf(content);
|
|
103
|
+
lineCount = lineCountOf(content.replace(/\r\n/g, '\n'));
|
|
94
104
|
}
|
|
95
105
|
catch { /* unreadable — still list it with empty preview */ }
|
|
96
106
|
const inserted = blockRegex(name).test(claudeMd);
|
|
97
|
-
out.push({ filename, name, preview, inserted });
|
|
107
|
+
out.push({ filename, name, preview, inserted, lineCount });
|
|
98
108
|
}
|
|
99
109
|
out.sort((a, b) => a.name.localeCompare(b.name));
|
|
100
|
-
return out;
|
|
110
|
+
return { items: out, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
101
111
|
}
|
|
102
112
|
function toggleMemoryPrompt(folderPath, filename, action) {
|
|
103
113
|
// Guard filename — reject anything that could escape memory/ via the name.
|
|
@@ -114,13 +124,13 @@ function toggleMemoryPrompt(folderPath, filename, action) {
|
|
|
114
124
|
const currentlyInserted = re.test(claudeMd);
|
|
115
125
|
if (action === 'remove') {
|
|
116
126
|
if (!currentlyInserted) {
|
|
117
|
-
return { ok: true, changed: false, inserted: false, reason: 'not-present' };
|
|
127
|
+
return { ok: true, changed: false, inserted: false, reason: 'not-present', claudeMdLineCount: lineCountOf(claudeMd) };
|
|
118
128
|
}
|
|
119
129
|
claudeMd = claudeMd.replace(re, '\n\n');
|
|
120
130
|
// Collapse any runs of 3+ blank lines left behind into 2
|
|
121
131
|
claudeMd = claudeMd.replace(/\n{3,}/g, '\n\n');
|
|
122
132
|
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
123
|
-
return { ok: true, changed: true, inserted: false };
|
|
133
|
+
return { ok: true, changed: true, inserted: false, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
124
134
|
}
|
|
125
135
|
// Insert (or refresh in place). Symlink guard mirrors `listMemoryPrompts`
|
|
126
136
|
// so a client can't bypass the list's lstat filter by posting a filename
|
|
@@ -156,12 +166,12 @@ function toggleMemoryPrompt(folderPath, filename, action) {
|
|
|
156
166
|
claudeMd = claudeMd.replace(re, `\n\n${block}\n\n`);
|
|
157
167
|
claudeMd = claudeMd.replace(/\n{3,}/g, '\n\n');
|
|
158
168
|
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
159
|
-
return { ok: true, changed: true, inserted: true, reason: 'refreshed' };
|
|
169
|
+
return { ok: true, changed: true, inserted: true, reason: 'refreshed', claudeMdLineCount: lineCountOf(claudeMd) };
|
|
160
170
|
}
|
|
161
171
|
// Append with separating blank line if CLAUDE.md doesn't already end with one
|
|
162
172
|
const sep = claudeMd.length === 0 ? '' : claudeMd.endsWith('\n\n') ? '' : claudeMd.endsWith('\n') ? '\n' : '\n\n';
|
|
163
173
|
claudeMd = claudeMd + sep + block + '\n';
|
|
164
174
|
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
165
|
-
return { ok: true, changed: true, inserted: true };
|
|
175
|
+
return { ok: true, changed: true, inserted: true, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
166
176
|
}
|
|
167
177
|
//# sourceMappingURL=memory-prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,12 @@ function resolveProjectFolder(projectId, username, res) {
|
|
|
21
21
|
return project.folderPath;
|
|
22
22
|
}
|
|
23
23
|
// GET /api/memory/project/:projectId
|
|
24
|
-
// → { items: MemoryPromptItem[] }
|
|
24
|
+
// → { items: MemoryPromptItem[], claudeMdLineCount: number }
|
|
25
25
|
router.get('/project/:projectId', (req, res) => {
|
|
26
26
|
const folder = resolveProjectFolder(req.params.projectId, req.user?.username || '', res);
|
|
27
27
|
if (!folder)
|
|
28
28
|
return;
|
|
29
|
-
res.json(
|
|
29
|
+
res.json((0, memory_prompts_1.listMemoryPrompts)(folder));
|
|
30
30
|
});
|
|
31
31
|
// POST /api/memory/project/:projectId/toggle body: { filename, action }
|
|
32
32
|
router.post('/project/:projectId/toggle', (req, res) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../../src/routes/memory-prompts.ts"],"names":[],"mappings":";;AAAA,qCAA2C;AAE3C,sCAAoE;AACpE,sDAA0E;AAE1E,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;+DAC+D;AAC/D,SAAS,oBAAoB,CAAC,SAAiB,EAAE,QAAgB,EAAE,GAAa;IAC9E,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACpF,IACE,CAAC,IAAA,oBAAW,EAAC,QAAQ,CAAC;QACtB,CAAC,IAAA,uBAAc,EAAC,OAAO,EAAE,QAAQ,CAAC;QAClC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,EAChF,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,CAAC;AAC5B,CAAC;AAED,qCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../../src/routes/memory-prompts.ts"],"names":[],"mappings":";;AAAA,qCAA2C;AAE3C,sCAAoE;AACpE,sDAA0E;AAE1E,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB;+DAC+D;AAC/D,SAAS,oBAAoB,CAAC,SAAiB,EAAE,QAAgB,EAAE,GAAa;IAC9E,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACpF,IACE,CAAC,IAAA,oBAAW,EAAC,QAAQ,CAAC;QACtB,CAAC,IAAA,uBAAc,EAAC,OAAO,EAAE,QAAQ,CAAC;QAClC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,EAChF,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,CAAC;AAC5B,CAAC;AAED,qCAAqC;AACrC,6DAA6D;AAC7D,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAgB,EAAE,GAAa,EAAQ,EAAE;IAC1E,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,GAAG,CAAC,IAAI,CAAC,IAAA,kCAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,GAAgB,EAAE,GAAa,EAAQ,EAAE;IAClF,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA6C,CAAC;IAC1F,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,mCAAkB,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|