zen-gitsync 2.12.6 → 2.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +751 -695
- package/package.json +1 -1
- package/scripts/README_COLOR_CONVERTER.md +196 -196
- package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
- package/scripts/README_SPACING_CONVERTER.md +126 -126
- package/scripts/README_STYLE_VARS.md +180 -180
- package/src/ui/public/assets/EditorView-DkH7PwMR.js +0 -0
- package/src/ui/public/assets/SourceMapView-BG6MIju7.js +3 -0
- package/src/ui/public/assets/SourceMapView-P9hbpXgz.css +1 -0
- package/src/ui/public/assets/WorkbenchView-CDKIBwuO.css +1 -0
- package/src/ui/public/assets/WorkbenchView-DgwZOvhW.js +1 -0
- package/src/ui/public/assets/_plugin-vue_export-helper-opDPZuCO.js +9 -0
- package/src/ui/public/assets/{css.worker-Wv5dxAWO.js → css.worker-CvXBzhp8.js} +1 -1
- package/src/ui/public/assets/{html.worker-CQP8QQsS.js → html.worker-BO6WuOEO.js} +1 -1
- package/src/ui/public/assets/index-DPihtJfT.js +65 -0
- package/src/ui/public/assets/index-tejX3YgJ.css +1 -0
- package/src/ui/public/assets/{json.worker-DzV-CpCQ.js → json.worker-BkJRGcCJ.js} +1 -1
- package/src/ui/public/assets/{ts.worker-Dth06zuC.js → ts.worker-B0J26iPs.js} +15 -15
- package/src/ui/public/assets/{vendor-BB71wW_m.js → vendor-A4IPqbyo.js} +249 -242
- package/src/ui/public/assets/vendor-DpYOE9sy.css +1 -0
- package/src/ui/public/favicon.svg +75 -75
- package/src/ui/public/index.html +23 -22
- package/src/ui/public/logo.svg +74 -74
- package/src/ui/server/index.js +9 -0
- package/src/ui/server/routes/workbench.js +873 -0
- package/src/ui/public/assets/EditorView-CItjMDNe.js +0 -0
- package/src/ui/public/assets/SourceMapView-DyMK80hS.css +0 -1
- package/src/ui/public/assets/SourceMapView-qlixRY_C.js +0 -3
- package/src/ui/public/assets/index-BFhllyJb.js +0 -73
- package/src/ui/public/assets/index-wBVvNuoD.css +0 -1
- package/src/ui/public/assets/vendor-B2yudN8R.css +0 -1
- /package/src/ui/public/assets/{editor.worker-Bd9IXS8d.js → editor.worker-Cn2oRESe.js} +0 -0
- /package/src/ui/public/assets/{rolldown-runtime-BM3Ffeng.js → rolldown-runtime-CMxvf4Kt.js} +0 -0
package/README.md
CHANGED
|
@@ -1,695 +1,751 @@
|
|
|
1
|
-
# zen-gitsync
|
|
2
|
-
|
|
3
|
-
[English](#zen-gitsync) | [中文](#zh)
|
|
4
|
-
|
|
5
|
-
A Git automation platform with interactive commits, scheduled sync, custom command orchestration, file locking, and a visual GUI.
|
|
6
|
-
|
|
7
|
-
## Table of Contents
|
|
8
|
-
|
|
9
|
-
- [Installation](#installation)
|
|
10
|
-
- [What''s New](#v2xx--whats-new)
|
|
11
|
-
- [GUI](#gui)
|
|
12
|
-
- [Core Git Panel](#core-git-panel)
|
|
13
|
-
- [Branch Management](#branch-management)
|
|
14
|
-
- [Stash Management](#stash-management)
|
|
15
|
-
- [Tag Management](#tag-management)
|
|
16
|
-
- [Commit Message Templates](#commit-message-templates)
|
|
17
|
-
- [Custom Commands](#custom-commands)
|
|
18
|
-
- [Flow Orchestration](#flow-orchestration-visual-workflow-designer)
|
|
19
|
-
- [NPM Scripts Panel](#npm-scripts-panel)
|
|
20
|
-
- [Built-in Terminal](#built-in-terminal)
|
|
21
|
-
- [Project Startup](#project-startup)
|
|
22
|
-
- [Built-in Code Editor](#built-in-code-editor)
|
|
23
|
-
- [Source Map](#source-map-ai-codebase-visualization)
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
53
|
-
- **
|
|
54
|
-
- **
|
|
55
|
-
- **
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
|
79
|
-
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
| AI commit message
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
|
207
|
-
|
|
208
|
-
|
|
|
209
|
-
|
|
|
210
|
-
|
|
|
211
|
-
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
|
225
|
-
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
$ g
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
$ g -y
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
###
|
|
304
|
-
```bash
|
|
305
|
-
$ g
|
|
306
|
-
$ g
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
###
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
###
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
$ g
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
-
|
|
392
|
-
-
|
|
393
|
-
-
|
|
394
|
-
-
|
|
395
|
-
-
|
|
396
|
-
-
|
|
397
|
-
-
|
|
398
|
-
-
|
|
399
|
-
-
|
|
400
|
-
-
|
|
401
|
-
-
|
|
402
|
-
-
|
|
403
|
-
-
|
|
404
|
-
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
-
|
|
498
|
-
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
-
|
|
531
|
-
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
|
588
|
-
|
|
589
|
-
|
|
|
590
|
-
|
|
|
591
|
-
|
|
|
592
|
-
|
|
|
593
|
-
|
|
|
594
|
-
|
|
|
595
|
-
|
|
596
|
-
---
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
```
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
```
|
|
675
|
-
|
|
676
|
-
####
|
|
677
|
-
```
|
|
678
|
-
$ g
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
$ g
|
|
695
|
-
```
|
|
1
|
+
# zen-gitsync
|
|
2
|
+
|
|
3
|
+
[English](#zen-gitsync) | [中文](#zh)
|
|
4
|
+
|
|
5
|
+
A Git automation platform with interactive commits, scheduled sync, custom command orchestration, file locking, and a visual GUI.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Installation](#installation)
|
|
10
|
+
- [What''s New](#v2xx--whats-new)
|
|
11
|
+
- [GUI](#gui)
|
|
12
|
+
- [Core Git Panel](#core-git-panel)
|
|
13
|
+
- [Branch Management](#branch-management)
|
|
14
|
+
- [Stash Management](#stash-management)
|
|
15
|
+
- [Tag Management](#tag-management)
|
|
16
|
+
- [Commit Message Templates](#commit-message-templates)
|
|
17
|
+
- [Custom Commands](#custom-commands)
|
|
18
|
+
- [Flow Orchestration](#flow-orchestration-visual-workflow-designer)
|
|
19
|
+
- [NPM Scripts Panel](#npm-scripts-panel)
|
|
20
|
+
- [Built-in Terminal](#built-in-terminal)
|
|
21
|
+
- [Project Startup](#project-startup)
|
|
22
|
+
- [Built-in Code Editor](#built-in-code-editor)
|
|
23
|
+
- [Source Map](#source-map-ai-codebase-visualization)
|
|
24
|
+
- [Workbench](#workbench-task-driven-claude-execution)
|
|
25
|
+
- [Settings](#settings)
|
|
26
|
+
- [CLI Commands](#cli-commands)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
Install globally via npm:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g zen-gitsync
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## v2.x.x — What''s New
|
|
41
|
+
|
|
42
|
+
- **Visual GUI** — Full graphical interface for Git operations
|
|
43
|
+
- **Branch management** — Create, switch, and track local/remote branches
|
|
44
|
+
- **Stash management** — Save and restore stashes with locked-file filtering
|
|
45
|
+
- **Tag management** — Create lightweight and annotated tags
|
|
46
|
+
- **Merge support** — Detect and complete in-progress merges
|
|
47
|
+
- **Flow orchestration** — Drag-and-drop visual workflow designer
|
|
48
|
+
- **NPM scripts panel** — Discover and run npm scripts from `package.json`
|
|
49
|
+
- **Built-in terminal** — Run commands with real-time streaming output
|
|
50
|
+
- **Custom commands** — Save, parameterize, and reuse shell commands
|
|
51
|
+
- **Project startup** — Auto-run commands or workflows when a project opens
|
|
52
|
+
- **Built-in code editor** — Monaco-based file editor with Markdown preview
|
|
53
|
+
- **Source map** — AI-generated interactive codebase dependency graph
|
|
54
|
+
- **Workbench** — task-driven Claude execution with prompt presets, subtask splitting, isolated bypass-permissions windows, live stdout streaming, AI-generated presets, and sub-task file attachments
|
|
55
|
+
- **Reset to remote** — One-click `git reset --hard origin/<branch>` from the Git panel (auto-refreshes branch info first to avoid wrong-target resets)
|
|
56
|
+
- **AI commit message** — Generate commit message from staged diff automatically
|
|
57
|
+
- **Selection-scoped diff** — AI commit message and quick commit/push use only the diff of currently selected files when the Git view is the active tab
|
|
58
|
+
- **Commit templates** — Save type/scope/description/message templates
|
|
59
|
+
- **Theme & language** — Light/dark theme and Chinese/English UI
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## GUI
|
|
64
|
+
|
|
65
|
+
### Launch the GUI:
|
|
66
|
+
```shell
|
|
67
|
+
$ g ui
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
The GUI runs as a local web server and opens in your default browser. It attaches to the current Git repository automatically. The activity bar on the left switches between four views: **Git**, **Editor**, **Source Map**, and **Workbench**.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Core Git Panel
|
|
77
|
+
|
|
78
|
+
| Feature | Description |
|
|
79
|
+
|---|---|
|
|
80
|
+
| File list | Shows all changed files grouped by staged / unstaged / untracked / conflicted |
|
|
81
|
+
| View toggle | Switch between flat list and directory tree view (persisted) |
|
|
82
|
+
| Selection mode | Multi-select files to stage or stash only chosen files. When the Git view is the active tab, **Quick Commit / Quick Push** and **AI commit message** automatically scope their action to the current selection (button label switches to *Commit Selected* / *Push Selected*). |
|
|
83
|
+
| Per-file actions | Stage, unstage, or revert individual files |
|
|
84
|
+
| Stage | Stage all or selected files (respects locked files) |
|
|
85
|
+
| Commit | Structured form (type / scope / description / body / footer) or free-text |
|
|
86
|
+
| AI commit message | Generate commit message from staged diff using an AI model |
|
|
87
|
+
| Push | Push to remote with live progress modal |
|
|
88
|
+
| Quick commit+push | One-click stage → commit → push |
|
|
89
|
+
| Pull / Fetch | Pull from or fetch the upstream branch |
|
|
90
|
+
| Reset to remote | One-click `git reset --hard origin/<branch>`; auto-refreshes branch info first to avoid stale-branch targets; hidden when working tree is clean and no unpushed commits |
|
|
91
|
+
| Merge | Merge another branch; detects and surfaces in-progress merge state |
|
|
92
|
+
| Diff viewer | Monaco-based side-by-side diff for any changed file |
|
|
93
|
+
| Commit log | Browse commit history with author, date, branch tags, and changed files |
|
|
94
|
+
| Remote URL | Display and one-click copy the remote repository URL |
|
|
95
|
+
| Auto-refresh | Silently refreshes status and branch info when the window gains focus, the tab becomes visible, or you switch back to the **Git** view in the Activity Bar |
|
|
96
|
+
|
|
97
|
+
#### Structured Commit Form
|
|
98
|
+
|
|
99
|
+
The commit form supports two modes toggled by a switch:
|
|
100
|
+
|
|
101
|
+
- **Standard mode** — separate fields for type (`feat` / `fix` / `docs` / `style` / `refactor` / `test` / `chore`), scope, short description, body, and footer — produces a Conventional Commits message automatically
|
|
102
|
+
- **Free-text mode** — single text area for any commit message
|
|
103
|
+
|
|
104
|
+
In either mode, click **AI Generate** to fill in the fields automatically based on the staged diff.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### Branch Management
|
|
109
|
+
|
|
110
|
+
- View all local and remote branches
|
|
111
|
+
- Create a new branch from any base branch
|
|
112
|
+
- Switch branches
|
|
113
|
+
- Track upstream status (commits ahead / behind)
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Stash Management
|
|
118
|
+
|
|
119
|
+
- Save stash with an optional message
|
|
120
|
+
- Optionally include untracked files
|
|
121
|
+
- Optionally exclude locked files from stash
|
|
122
|
+
- Apply, pop, or drop individual stash entries
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Tag Management
|
|
127
|
+
|
|
128
|
+
- Create **lightweight** or **annotated** tags
|
|
129
|
+
- Target a specific commit
|
|
130
|
+
- List, push, or delete tags
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### Commit Message Templates
|
|
135
|
+
|
|
136
|
+
Save reusable templates for:
|
|
137
|
+
- **Type** — `feat`, `fix`, `chore`, …
|
|
138
|
+
- **Scope** — component or module name
|
|
139
|
+
- **Description** — short summary
|
|
140
|
+
- **Full message** — complete commit message
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### Custom Commands
|
|
145
|
+
|
|
146
|
+

|
|
147
|
+
|
|
148
|
+
Create, manage, and run shell commands from the sidebar:
|
|
149
|
+
|
|
150
|
+
- Define commands with a name, shell command, and working directory
|
|
151
|
+
- Add **parameters** with names, descriptions, and default values (referenced via `{{paramName}}`)
|
|
152
|
+
- Run a command instantly in a new terminal session
|
|
153
|
+
- Save command **templates** for quick reuse
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### Flow Orchestration (Visual Workflow Designer)
|
|
158
|
+
|
|
159
|
+
Build automated pipelines with a drag-and-drop canvas:
|
|
160
|
+
|
|
161
|
+
| Node type | Purpose |
|
|
162
|
+
|---|---|
|
|
163
|
+
| **Start** | Entry point of the flow (one per flow, not deletable) |
|
|
164
|
+
| **Command** | Execute a saved custom command |
|
|
165
|
+
| **Wait** | Pause execution for 1–3600 seconds |
|
|
166
|
+
| **Version** | Bump `package.json` version (patch / minor / major) or modify a dependency |
|
|
167
|
+
|
|
168
|
+
- Nodes are executed in topological order
|
|
169
|
+
- Flows are saved and editable
|
|
170
|
+
- Each node can be individually enabled or disabled
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### NPM Scripts Panel
|
|
175
|
+
|
|
176
|
+
- Automatically discovers all `package.json` files in the project tree
|
|
177
|
+
- Lists their `scripts` entries
|
|
178
|
+
- Run any script with one click
|
|
179
|
+
- Configure the scan root and exclusion patterns per package
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### Built-in Terminal
|
|
184
|
+
|
|
185
|
+
- Open new terminal sessions from within the GUI
|
|
186
|
+
- Commands stream output in real time (Server-Sent Events)
|
|
187
|
+
- Running processes are tracked and can be stopped individually
|
|
188
|
+
- Cross-platform: uses `cmd.exe` on Windows, `sh` on Unix
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
### Project Startup
|
|
193
|
+
|
|
194
|
+
Configure commands or workflows to run automatically when a project is opened:
|
|
195
|
+
|
|
196
|
+
- Toggle auto-run on / off
|
|
197
|
+
- Drag to reorder startup items
|
|
198
|
+
- Mix custom commands and flow workflows in any order
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### Built-in Code Editor
|
|
203
|
+
|
|
204
|
+
A full IDE-like editor (second icon in the activity bar) for browsing and editing project files without leaving the tool:
|
|
205
|
+
|
|
206
|
+
| Feature | Description |
|
|
207
|
+
|---|---|
|
|
208
|
+
| File tree | Collapsible directory tree with file-type icons |
|
|
209
|
+
| Multi-tab editing | Open multiple files simultaneously; tabs show unsaved (●) indicator |
|
|
210
|
+
| Monaco editor | Syntax highlighting for JS, TS, Vue, Python, Go, JSON, CSS, and more |
|
|
211
|
+
| Markdown preview | Toggle between source and rendered preview for `.md` files |
|
|
212
|
+
| Save | `Ctrl+S` to save; optional auto-save on focus loss |
|
|
213
|
+
| Create | New file or folder inline in the file tree |
|
|
214
|
+
| Rename / Delete | Rename or delete any file or folder directly from the tree |
|
|
215
|
+
| Resizable sidebar | Drag the divider to adjust file tree width |
|
|
216
|
+
| Theme sync | Editor theme follows the global light / dark setting |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### Source Map (AI Codebase Visualization)
|
|
221
|
+
|
|
222
|
+
A dedicated view (third icon in the activity bar) that uses an AI model to build a visual dependency graph of your project:
|
|
223
|
+
|
|
224
|
+
| Feature | Description |
|
|
225
|
+
|---|---|
|
|
226
|
+
| File scanner | Recursively scans all source files and builds a file tree |
|
|
227
|
+
| AI analysis | Sends file contents to an OpenAI-compatible model to infer structure |
|
|
228
|
+
| Dependency graph | Interactive node-edge graph (drag, zoom, fit-view, minimap) |
|
|
229
|
+
| Subsystems | Automatically clusters files into color-coded subsystems |
|
|
230
|
+
| Node detail | Click a node to view its source code in a Monaco editor panel |
|
|
231
|
+
| Tech stack | Detects the language and frameworks in use |
|
|
232
|
+
| Entry point | Identifies the main entry file and function |
|
|
233
|
+
| Analysis log | Real-time progress log during scanning and analysis |
|
|
234
|
+
| Resizable panels | File tree, graph, and source panels are all independently resizable |
|
|
235
|
+
|
|
236
|
+
Configure the model endpoint, API key, and model name in **Settings → AI**.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### Workbench (Task-Driven Claude Execution)
|
|
241
|
+
|
|
242
|
+
A dedicated view (fourth icon in the activity bar) for batch-running Claude against your repo. Define a task, split it into ordered subtasks, attach a reusable prompt preset, then click **Run task** — each subtask launches in its own terminal window with `claude --permission-mode bypassPermissions`, so context never piles up.
|
|
243
|
+
|
|
244
|
+
| Feature | Description |
|
|
245
|
+
|---|---|
|
|
246
|
+
| Task list | Create, edit, delete tasks; each shows its subtask count |
|
|
247
|
+
| Subtask breakdown | Add / edit / remove subtasks per task, with per-subtask status |
|
|
248
|
+
| Subtask attachments | Attach up to 9 files per subtask (image / PDF / text / Markdown / CSV / JSON / log, ≤ 5 MB each); their absolute paths are appended to the prompt so Claude reads them directly |
|
|
249
|
+
| Prompt presets | Reusable prompt templates with `{{task.title}}` / `{{task.desc}}` / `{{sub.title}}` / `{{sub.desc}}` / `{{repo.path}}` / `{{branch}}` variable interpolation |
|
|
250
|
+
| AI prompt generation | "New / Edit preset" dialog has an **AI Generate** button — the server reads the current project tree (depth 2) + README + manifests (package.json / pyproject.toml / go.mod / Cargo.toml / …) and asks the configured LLM to draft a project-aware preset (name + body) |
|
|
251
|
+
| Per-subtask override | Override the preset's content for a specific subtask in its description field |
|
|
252
|
+
| Sequential execution | Runs subtasks in declared order; the next one starts only after the previous process exits |
|
|
253
|
+
| Pipe-mode launcher | Spawns `claude -p "<prompt>" --output-format text --permission-mode bypassPermissions --dangerously-skip-permissions` with stdout/stderr piped to the server — no external terminal window is opened, so output streams directly into the UI |
|
|
254
|
+
| Isolated windows | Every subtask runs as its own detached process with fresh context, so memory and conversation state never accumulate across subtasks |
|
|
255
|
+
| Live log | Each running subtask has an expandable "执行日志 / Execution log" panel that auto-scrolls and shows accumulated `stdout` + `stderr` (capped at 256 KB server-side, last 64 KB rendered client-side) |
|
|
256
|
+
| Live status | Subtask status (todo / pending / running / done / error) and PID stream in real time over SSE |
|
|
257
|
+
| Cross-view indicator | While any Workbench subtask is running, a pulsing dot appears on the Workbench icon in the Activity Bar so you can see job state from the Git or Editor view |
|
|
258
|
+
|
|
259
|
+
Prompt presets and tasks are persisted to `~/.zen-gitsync/prompts.json` and `~/.zen-gitsync/tasks.json` (cross-project, shared across repos).
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
### Settings
|
|
264
|
+
|
|
265
|
+
| Setting | Description |
|
|
266
|
+
|---|---|
|
|
267
|
+
| Git user | Set `user.name` and `user.email` |
|
|
268
|
+
| Default commit message | Fallback message when none is provided |
|
|
269
|
+
| Theme | Light / dark (follows system preference by default) |
|
|
270
|
+
| Language | Chinese / English |
|
|
271
|
+
| File locking | Lock files so they are never staged or stashed |
|
|
272
|
+
| NPM paths | Configure where to look for `package.json` files |
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Development Notes
|
|
277
|
+
|
|
278
|
+
### Line endings
|
|
279
|
+
|
|
280
|
+
The repo ships a `.gitattributes` that locks source files to **LF** and Windows scripts (`.bat` / `.cmd` / `.ps1`) to **CRLF**. This takes precedence over `core.autocrlf`, so the working tree is identical on Windows, macOS, and Linux — generated files like `auto-imports.d.ts` and `components.d.ts` will not show up as "modified" just because the dev server rewrote them with different line endings.
|
|
281
|
+
|
|
282
|
+
If you change `.gitattributes` rules, renormalize the index in one shot:
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
git add --renormalize .
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## CLI Commands
|
|
291
|
+
|
|
292
|
+
### Interactive commit:
|
|
293
|
+
```bash
|
|
294
|
+
$ g
|
|
295
|
+
Enter your commit message: fix login page style
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Commit directly (skip prompt):
|
|
299
|
+
```bash
|
|
300
|
+
$ g -y
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Commit with inline message:
|
|
304
|
+
```bash
|
|
305
|
+
$ g -m <message>
|
|
306
|
+
$ g -m=<message>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Set default commit message:
|
|
310
|
+
```bash
|
|
311
|
+
$ g --set-default-message="update"
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Get current config:
|
|
315
|
+
```bash
|
|
316
|
+
$ g get-config
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Show help:
|
|
320
|
+
```shell
|
|
321
|
+
$ g -h
|
|
322
|
+
$ g --help
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Scheduled auto-commit (default interval: 1 hour):
|
|
326
|
+
```bash
|
|
327
|
+
$ g -y --interval
|
|
328
|
+
$ g -y --interval=<seconds>
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Specify working directory:
|
|
332
|
+
```bash
|
|
333
|
+
$ g --path=<path>
|
|
334
|
+
$ g --cwd=<path>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Sync a folder in background (Windows):
|
|
338
|
+
```shell
|
|
339
|
+
start /min cmd /k "g -y --path=<your-folder> --interval"
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Scheduled command execution (Windows):
|
|
343
|
+
```shell
|
|
344
|
+
start /min cmd /k "g --cmd=\"echo hello\" --cmd-interval=5" # every 5 seconds
|
|
345
|
+
start /min cmd /k "g --cmd=\"echo at-time\" --at=23:59" # once at 23:59
|
|
346
|
+
start /min cmd /k "g --cmd=\"echo daily\" --at=23:59 --daily" # daily at 23:59
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### Suppress git diff output:
|
|
350
|
+
```shell
|
|
351
|
+
$ g --no-diff
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Print formatted git log:
|
|
355
|
+
```shell
|
|
356
|
+
$ g log
|
|
357
|
+
$ g log --n=5
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### File locking (only effective within the tool):
|
|
361
|
+
```shell
|
|
362
|
+
# Lock a file (locked files are excluded from commits and stashes)
|
|
363
|
+
$ g --lock-file=config.json
|
|
364
|
+
|
|
365
|
+
# Unlock a file
|
|
366
|
+
$ g --unlock-file=config.json
|
|
367
|
+
|
|
368
|
+
# List all locked files
|
|
369
|
+
$ g --list-locked
|
|
370
|
+
|
|
371
|
+
# Check if a file is locked
|
|
372
|
+
$ g --check-lock=config.json
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
<a name="zh"></a>
|
|
378
|
+
|
|
379
|
+
# zen-gitsync
|
|
380
|
+
|
|
381
|
+
[English](#zen-gitsync) | [中文](#zh)
|
|
382
|
+
|
|
383
|
+
`zen-gitsync` 是一个 Git 自动化工作平台,支持交互式提交、定时同步、自定义命令编排、文件锁定与可视化 GUI 界面。
|
|
384
|
+
|
|
385
|
+
## 目录
|
|
386
|
+
|
|
387
|
+
- [安装](#安装)
|
|
388
|
+
- [新特性](#v2xx--新特性)
|
|
389
|
+
- [GUI 界面](#gui-界面)
|
|
390
|
+
- [核心 Git 面板](#核心-git-面板)
|
|
391
|
+
- [分支管理](#分支管理)
|
|
392
|
+
- [Stash 管理](#stash-管理)
|
|
393
|
+
- [Tag 管理](#tag-管理)
|
|
394
|
+
- [提交信息模板](#提交信息模板)
|
|
395
|
+
- [自定义命令](#自定义命令)
|
|
396
|
+
- [可视化流程编排](#可视化流程编排)
|
|
397
|
+
- [NPM 脚本面板](#npm-脚本面板)
|
|
398
|
+
- [内置终端](#内置终端)
|
|
399
|
+
- [项目启动](#项目启动)
|
|
400
|
+
- [内置代码编辑器](#内置代码编辑器)
|
|
401
|
+
- [源码地图](#源码地图ai-代码库可视化)
|
|
402
|
+
- [工作台](#工作台任务驱动的-claude-执行)
|
|
403
|
+
- [设置](#设置)
|
|
404
|
+
- [命令行](#命令行)
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## 安装
|
|
409
|
+
|
|
410
|
+
通过 npm 全局安装:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
npm install -g zen-gitsync
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## v2.x.x — 新特性
|
|
419
|
+
|
|
420
|
+
- **可视化 GUI** — 完整的 Git 图形操作界面
|
|
421
|
+
- **分支管理** — 创建、切换、追踪本地/远程分支
|
|
422
|
+
- **Stash 管理** — 储藏与恢复变更,支持排除锁定文件
|
|
423
|
+
- **Tag 管理** — 创建轻量/附注标签
|
|
424
|
+
- **合并支持** — 自动检测并引导完成进行中的合并
|
|
425
|
+
- **可视化流程编排** — 拖拽式工作流设计器
|
|
426
|
+
- **NPM 脚本面板** — 发现并运行 `package.json` 中的脚本
|
|
427
|
+
- **内置终端** — 实时流式输出的命令执行终端
|
|
428
|
+
- **自定义命令** — 保存、参数化并复用 Shell 命令
|
|
429
|
+
- **项目启动** — 打开项目时自动运行命令或工作流
|
|
430
|
+
- **内置代码编辑器** — 基于 Monaco 的文件编辑器,支持 Markdown 预览
|
|
431
|
+
- **源码地图** — AI 生成的交互式代码库依赖关系图
|
|
432
|
+
- **工作台** — 任务驱动的 Claude 执行视图:提示词预置、子任务拆分、独立 bypass-permissions 进程、stdout 实时回传、AI 自动生成预置提示词、子任务附件
|
|
433
|
+
- **重置到远程** — 在 Git 面板一键执行 `git reset --hard origin/<branch>`(点击前会先自动刷新分支信息,避免重置到陈旧分支)
|
|
434
|
+
- **AI 生成提交信息** — 基于 staged diff 自动生成提交消息
|
|
435
|
+
- **选择模式差异** — 当 Git 视图为当前激活标签时,AI 生成提交信息与一键提交/推送仅作用于当前勾选文件的 diff
|
|
436
|
+
- **提交模板** — 保存类型/范围/描述/完整提交信息模板
|
|
437
|
+
- **主题与语言** — 支持明/暗主题,中英文界面切换
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## GUI 界面
|
|
442
|
+
|
|
443
|
+
### 启动图形界面:
|
|
444
|
+
```shell
|
|
445
|
+
$ g ui
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+

|
|
449
|
+
|
|
450
|
+
GUI 以本地 Web 服务器形式运行,自动在浏览器中打开,并附加到当前 Git 仓库。左侧 Activity Bar 可在四个视图之间切换:**Git**、**编辑器**、**源码地图**、**工作台**。
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
### 核心 Git 面板
|
|
455
|
+
|
|
456
|
+
| 功能 | 说明 |
|
|
457
|
+
|---|---|
|
|
458
|
+
| 文件列表 | 按已暂存/未暂存/未追踪/冲突分组显示所有变更文件 |
|
|
459
|
+
| 视图切换 | 平铺列表与目录树形视图切换(持久化保存) |
|
|
460
|
+
| 选择模式 | 多选文件,仅对选中文件执行暂存或储藏。在 Git 视图下,**一键提交 / 一键推送** 与 **AI 生成提交信息** 会自动仅作用于当前勾选的文件(按钮文案切换为「一键提交所选」/「一键推送所选」) |
|
|
461
|
+
| 单文件操作 | 对每个文件独立执行暂存、取消暂存或还原 |
|
|
462
|
+
| 暂存 | 暂存全部或选中文件(自动排除锁定文件) |
|
|
463
|
+
| 提交 | 结构化表单(类型/范围/描述/正文/页脚)或自由文本 |
|
|
464
|
+
| AI 生成提交信息 | 基于 staged diff 自动生成提交消息 |
|
|
465
|
+
| 推送 | 推送到远程,实时显示进度弹窗 |
|
|
466
|
+
| 快速提交+推送 | 一键完成暂存 → 提交 → 推送 |
|
|
467
|
+
| 拉取 / Fetch | 从上游拉取或仅获取远程信息 |
|
|
468
|
+
| 重置到远程 | 一键执行 `git reset --hard origin/<branch>`;点击前会先刷新分支信息,避免重置到陈旧分支;当工作区干净且无未推送提交时按钮自动隐藏 |
|
|
469
|
+
| 合并 | 合并其他分支,自动检测并引导处理合并中间状态 |
|
|
470
|
+
| Diff 查看器 | 基于 Monaco 编辑器的并排文件差异视图 |
|
|
471
|
+
| 提交日志 | 浏览历史提交(作者、时间、分支标签、变更文件) |
|
|
472
|
+
| 远程地址 | 显示并一键复制远程仓库 URL |
|
|
473
|
+
| 自动刷新 | 窗口获得焦点、标签页重新可见,或从 Activity Bar 切回 **Git** 视图时,自动静默刷新文件状态与分支信息 |
|
|
474
|
+
|
|
475
|
+
#### 结构化提交表单
|
|
476
|
+
|
|
477
|
+
提交表单支持通过开关切换两种模式:
|
|
478
|
+
|
|
479
|
+
- **标准模式** — 分别填写类型(`feat` / `fix` / `docs` / `style` / `refactor` / `test` / `chore`)、范围、简短描述、正文和页脚,自动组合成符合 Conventional Commits 规范的提交信息
|
|
480
|
+
- **自由模式** — 单一文本框,输入任意提交信息
|
|
481
|
+
|
|
482
|
+
两种模式下均可点击 **AI 生成** 按钮,根据当前 staged diff 自动填充提交信息。
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
### 分支管理
|
|
487
|
+
|
|
488
|
+
- 查看所有本地和远程分支
|
|
489
|
+
- 从任意基础分支创建新分支
|
|
490
|
+
- 切换分支
|
|
491
|
+
- 追踪上游状态(领先/落后提交数)
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
### Stash 管理
|
|
496
|
+
|
|
497
|
+
- 创建 stash,支持自定义备注
|
|
498
|
+
- 可选是否包含未追踪文件
|
|
499
|
+
- 可选排除已锁定的文件
|
|
500
|
+
- 应用(apply)、弹出(pop)或删除(drop)单条 stash
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
### Tag 管理
|
|
505
|
+
|
|
506
|
+
- 创建**轻量标签**或**附注标签**
|
|
507
|
+
- 可指定特定 commit
|
|
508
|
+
- 列出、推送或删除标签
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
### 提交信息模板
|
|
513
|
+
|
|
514
|
+
为以下内容保存可复用模板:
|
|
515
|
+
- **类型** — `feat`、`fix`、`chore` 等
|
|
516
|
+
- **范围** — 组件或模块名
|
|
517
|
+
- **描述** — 简短说明
|
|
518
|
+
- **完整信息** — 完整提交消息
|
|
519
|
+
|
|
520
|
+
---
|
|
521
|
+
|
|
522
|
+
### 自定义命令
|
|
523
|
+
|
|
524
|
+

|
|
525
|
+
|
|
526
|
+
在侧边栏创建、管理并运行 Shell 命令:
|
|
527
|
+
|
|
528
|
+
- 定义命令(名称、Shell 命令、工作目录)
|
|
529
|
+
- 添加**参数**(名称、描述、默认值,通过 `{{paramName}}` 引用)
|
|
530
|
+
- 一键在新终端会话中执行命令
|
|
531
|
+
- 保存**命令模板**快速复用
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
### 可视化流程编排
|
|
536
|
+
|
|
537
|
+
通过拖拽画布构建自动化流程:
|
|
538
|
+
|
|
539
|
+
| 节点类型 | 用途 |
|
|
540
|
+
|---|---|
|
|
541
|
+
| **开始节点** | 流程入口(每个流程唯一,不可删除) |
|
|
542
|
+
| **命令节点** | 执行一个已保存的自定义命令 |
|
|
543
|
+
| **等待节点** | 暂停执行 1–3600 秒 |
|
|
544
|
+
| **版本节点** | 修改 `package.json` 版本号(patch/minor/major)或依赖版本 |
|
|
545
|
+
|
|
546
|
+
- 节点按拓扑顺序执行
|
|
547
|
+
- 流程可保存并二次编辑
|
|
548
|
+
- 每个节点可单独启用/禁用
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
### NPM 脚本面板
|
|
553
|
+
|
|
554
|
+
- 自动扫描项目中所有 `package.json` 文件
|
|
555
|
+
- 列出其中的 `scripts` 条目
|
|
556
|
+
- 一键运行任意脚本
|
|
557
|
+
- 可配置扫描根路径和排除规则
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
### 内置终端
|
|
562
|
+
|
|
563
|
+
- 在 GUI 内直接打开新的终端会话
|
|
564
|
+
- 命令输出实时流式显示(Server-Sent Events)
|
|
565
|
+
- 追踪运行中的进程,随时可以停止
|
|
566
|
+
- 跨平台:Windows 使用 `cmd.exe`,Unix 使用 `sh`
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
### 项目启动
|
|
571
|
+
|
|
572
|
+
配置在项目打开时自动执行的命令或工作流:
|
|
573
|
+
|
|
574
|
+
- 一键开启/关闭自动运行
|
|
575
|
+
- 拖拽调整启动项顺序
|
|
576
|
+
- 可混合使用自定义命令与流程工作流
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
### 内置代码编辑器
|
|
581
|
+
|
|
582
|
+
Activity Bar 第二个视图,在 GUI 内直接浏览并编辑项目文件:
|
|
583
|
+
|
|
584
|
+
| 功能 | 说明 |
|
|
585
|
+
|---|---|
|
|
586
|
+
| 文件树 | 可折叠的目录树,附带文件类型图标 |
|
|
587
|
+
| 多标签页 | 同时打开多个文件,未保存文件显示 ● 标记 |
|
|
588
|
+
| Monaco 编辑器 | 支持 JS、TS、Vue、Python、Go、JSON、CSS 等语法高亮 |
|
|
589
|
+
| Markdown 预览 | `.md` 文件可切换源码与渲染预览模式 |
|
|
590
|
+
| 保存 | `Ctrl+S` 手动保存;可选失去焦点时自动保存 |
|
|
591
|
+
| 新建 | 在文件树中内联创建文件或文件夹 |
|
|
592
|
+
| 重命名 / 删除 | 在树中直接对文件或文件夹重命名、删除 |
|
|
593
|
+
| 侧边栏调整 | 拖拽分隔条自由调整文件树宽度 |
|
|
594
|
+
| 主题同步 | 编辑器主题跟随全局明/暗设置 |
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
### 源码地图(AI 代码库可视化)
|
|
599
|
+
|
|
600
|
+
Activity Bar 第三个视图,调用 AI 模型将项目代码库生成可交互的依赖关系图:
|
|
601
|
+
|
|
602
|
+
| 功能 | 说明 |
|
|
603
|
+
|---|---|
|
|
604
|
+
| 文件扫描 | 递归扫描所有源码文件并构建文件树 |
|
|
605
|
+
| AI 分析 | 将文件内容发送到 OpenAI 兼容接口,推断项目结构 |
|
|
606
|
+
| 依赖关系图 | 可拖拽、缩放、适配视图的节点边图(带缩略图导航) |
|
|
607
|
+
| 子系统聚类 | 自动将文件聚类为颜色区分的子系统 |
|
|
608
|
+
| 节点详情 | 点击节点在右侧 Monaco 面板中查看对应源码 |
|
|
609
|
+
| 技术栈检测 | 识别项目使用的语言和框架 |
|
|
610
|
+
| 入口点识别 | 标记主入口文件和入口函数 |
|
|
611
|
+
| 分析日志 | 扫描与分析过程实时输出进度日志 |
|
|
612
|
+
| 多面板布局 | 文件树、关系图、源码三个面板均可独立拖拽调整宽度 |
|
|
613
|
+
|
|
614
|
+
在 **设置 → AI** 中配置模型接口地址、API Key 和模型名称。
|
|
615
|
+
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
### 工作台(任务驱动的 Claude 执行)
|
|
619
|
+
|
|
620
|
+
Activity Bar 第四个视图,用于在当前仓库上批量调度 Claude:定义任务、拆成有序子任务、绑定可复用的提示词预置,点 **执行任务** 后按顺序依次执行。
|
|
621
|
+
|
|
622
|
+
| 功能 | 说明 |
|
|
623
|
+
|---|---|
|
|
624
|
+
| 任务列表 | 新建、编辑、删除任务;每条任务显示子任务数量 |
|
|
625
|
+
| 子任务拆分 | 增删改子任务,实时显示每个子任务的执行状态 |
|
|
626
|
+
| 子任务附件 | 每个子任务最多挂 9 个附件(图片 / PDF / 文本 / Markdown / CSV / JSON / log,单个 ≤ 5 MB);执行时绝对路径会自动追加到 prompt 末尾,Claude 直接按路径读取 |
|
|
627
|
+
| 提示词预置 | 可复用提示词模板,支持 `{{task.title}}` / `{{task.desc}}` / `{{sub.title}}` / `{{sub.desc}}` / `{{repo.path}}` / `{{branch}}` 变量插值 |
|
|
628
|
+
| AI 生成预置 | 「新建 / 编辑预置」对话框内置 **AI 生成** 按钮:服务端读取当前项目目录树(depth=2)+ README + 9 种 manifest(package.json / pyproject.toml / go.mod / Cargo.toml …),调用已配置的 LLM 一键产出贴合项目结构的提示词(名称 + 正文),生成后用户可继续手动调整再保存 |
|
|
629
|
+
| 子任务覆盖 | 在子任务描述框可独立覆盖预置提示词的内容 |
|
|
630
|
+
| 顺序执行 | 按声明顺序依次执行子任务;上一个进程退出后才启动下一个 |
|
|
631
|
+
| 管道模式启动 | 直接以 `claude -p "<prompt>" --output-format text --permission-mode bypassPermissions --dangerously-skip-permissions` 拉起进程,stdout / stderr 通过管道回传服务端,不再弹外部终端窗口 |
|
|
632
|
+
| 独立上下文 | 每个子任务都是独立的 detached 进程,上下文与状态不会跨子任务累积 |
|
|
633
|
+
| 实时日志 | 正在执行的子任务可展开「执行日志」面板,自动滚到底,展示累积的 stdout / stderr(服务端缓存 256 KB,客户端渲染最近 64 KB) |
|
|
634
|
+
| 实时状态 | 子任务状态(todo / pending / running / done / error)和 PID 通过 SSE 实时推送 |
|
|
635
|
+
| 跨视图指示 | 任意子任务运行中时,Activity Bar 上的工作台图标会显示脉动小圆点;切换到 Git 或编辑器视图也能看到运行状态 |
|
|
636
|
+
|
|
637
|
+
提示词预置与任务数据持久化到 `~/.zen-gitsync/prompts.json` 和 `~/.zen-gitsync/tasks.json`(跨项目共享)。子任务附件落盘在 `~/.zen-gitsync/workbench-images/<subId>/`。
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
### 设置
|
|
642
|
+
|
|
643
|
+
| 设置项 | 说明 |
|
|
644
|
+
|---|---|
|
|
645
|
+
| Git 用户信息 | 设置 `user.name` 和 `user.email` |
|
|
646
|
+
| 默认提交信息 | 未填写时的回退提交消息 |
|
|
647
|
+
| 主题 | 明亮/暗黑模式(默认跟随系统) |
|
|
648
|
+
| 语言 | 中文 / English |
|
|
649
|
+
| 文件锁定 | 锁定文件,使其永远不被暂存或储藏 |
|
|
650
|
+
| NPM 路径 | 配置 `package.json` 的扫描位置 |
|
|
651
|
+
|
|
652
|
+
---
|
|
653
|
+
|
|
654
|
+
## 开发约定
|
|
655
|
+
|
|
656
|
+
### 行尾规范
|
|
657
|
+
|
|
658
|
+
仓库根的 `.gitattributes` 把**所有源代码锁定为 LF**(`.ts` `.js` `.vue` `.json` `.md` 等),**Windows 脚本锁定为 CRLF**(`.bat` / `.cmd` / `.ps1`)。`.gitattributes` 的优先级高于 `core.autocrlf`,所以无论本地 git 怎么配,签出与提交的行尾都一致;dev server 重新生成的 `auto-imports.d.ts`、`components.d.ts` 不会再因为行尾不一致而显示为"内容相同的 modified"。
|
|
659
|
+
|
|
660
|
+
如果你修改了 `.gitattributes` 的规则,需要一次性重新归一索引:
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
git add --renormalize .
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
---
|
|
667
|
+
|
|
668
|
+
## 命令行
|
|
669
|
+
|
|
670
|
+
#### 交互式提交:
|
|
671
|
+
```bash
|
|
672
|
+
$ g
|
|
673
|
+
请输入你的提交信息: 修复了登录页样式问题
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
#### 直接提交(跳过输入):
|
|
677
|
+
```bash
|
|
678
|
+
$ g -y
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
#### 传入 message 直接提交:
|
|
682
|
+
```bash
|
|
683
|
+
$ g -m <message>
|
|
684
|
+
$ g -m=<message>
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
#### 设置默认提交信息:
|
|
688
|
+
```bash
|
|
689
|
+
$ g --set-default-message="提交"
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
#### 获取当前配置:
|
|
693
|
+
```bash
|
|
694
|
+
$ g get-config
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
#### 查看帮助:
|
|
698
|
+
```shell
|
|
699
|
+
$ g -h
|
|
700
|
+
$ g --help
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
#### 定时执行自动提交(默认间隔 1 小时):
|
|
704
|
+
```bash
|
|
705
|
+
$ g -y --interval
|
|
706
|
+
$ g -y --interval=<seconds>
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
#### 指定目录提交:
|
|
710
|
+
```bash
|
|
711
|
+
$ g --path=<path>
|
|
712
|
+
$ g --cwd=<path>
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
#### 后台同步文件夹(Windows):
|
|
716
|
+
```shell
|
|
717
|
+
start /min cmd /k "g -y --path=你要同步的文件夹 --interval"
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
#### 定时执行命令(Windows):
|
|
721
|
+
```shell
|
|
722
|
+
start /min cmd /k "g --cmd=\"echo hello\" --cmd-interval=5" # 每5秒执行一次
|
|
723
|
+
start /min cmd /k "g --cmd=\"echo at-time\" --at=23:59" # 在23:59执行一次
|
|
724
|
+
start /min cmd /k "g --cmd=\"echo daily\" --at=23:59 --daily" # 每天23:59执行一次
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
#### 不显示 git diff 内容:
|
|
728
|
+
```shell
|
|
729
|
+
$ g --no-diff
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
#### 格式化打印 git log:
|
|
733
|
+
```shell
|
|
734
|
+
$ g log
|
|
735
|
+
$ g log --n=5
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
#### 文件锁定功能(仅在工具中有效):
|
|
739
|
+
```shell
|
|
740
|
+
# 锁定文件(锁定后的文件不会被暂存或储藏)
|
|
741
|
+
$ g --lock-file=config.json
|
|
742
|
+
|
|
743
|
+
# 解锁文件
|
|
744
|
+
$ g --unlock-file=config.json
|
|
745
|
+
|
|
746
|
+
# 查看所有锁定的文件
|
|
747
|
+
$ g --list-locked
|
|
748
|
+
|
|
749
|
+
# 检查文件是否被锁定
|
|
750
|
+
$ g --check-lock=config.json
|
|
751
|
+
```
|