vg-coder-cli 2.0.30 → 2.0.32

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.
Files changed (40) hide show
  1. package/ARCHITECTURE.md +255 -0
  2. package/README.md +0 -11
  3. package/change.sh +0 -0
  4. package/dist/vg-coder-bundle.js +42 -0
  5. package/gulpfile.js +111 -0
  6. package/package.json +19 -11
  7. package/scripts/postinstall.js +13 -3
  8. package/src/index.js +28 -220
  9. package/src/server/api-server.js +120 -428
  10. package/src/server/views/css/bubble.css +81 -0
  11. package/src/server/views/css/code-viewer.css +58 -0
  12. package/src/server/views/css/terminal.css +59 -155
  13. package/src/server/views/dashboard.css +78 -678
  14. package/src/server/views/dashboard.html +39 -278
  15. package/src/server/views/js/api.js +2 -22
  16. package/src/server/views/js/config.js +27 -15
  17. package/src/server/views/js/event-protocol.js +263 -0
  18. package/src/server/views/js/features/bubble-features/index.js +125 -0
  19. package/src/server/views/js/features/bubble-features/paste-run-feature.js +16 -0
  20. package/src/server/views/js/features/bubble-features/terminal-feature.js +16 -0
  21. package/src/server/views/js/features/bubble.js +175 -0
  22. package/src/server/views/js/features/code-viewer.js +90 -0
  23. package/src/server/views/js/features/commands.js +34 -81
  24. package/src/server/views/js/features/editor-tabs.js +19 -46
  25. package/src/server/views/js/features/git-view.js +63 -81
  26. package/src/server/views/js/features/iframe-manager.js +3 -97
  27. package/src/server/views/js/features/monaco-manager.js +19 -39
  28. package/src/server/views/js/features/project-switcher.js +7 -63
  29. package/src/server/views/js/features/resize.js +5 -16
  30. package/src/server/views/js/features/structure.js +38 -106
  31. package/src/server/views/js/features/terminal.js +102 -418
  32. package/src/server/views/js/handlers.js +60 -43
  33. package/src/server/views/js/main.js +75 -179
  34. package/src/server/views/js/shadow-entry.js +21 -0
  35. package/src/server/views/js/utils.js +48 -28
  36. package/src/server/views/vg-coder/_metadata/generated_indexed_rulesets/_ruleset1 +0 -0
  37. package/src/server/views/vg-coder/controller.js +33 -258
  38. package/vetgo-auto/chrome/src/utils/injector-script.ts +33 -258
  39. package/vetgo-auto/vg-coder.zip +0 -0
  40. package/src/server/views/dashboard.js +0 -457
@@ -0,0 +1,81 @@
1
+ /* --- BUBBLE FEATURE STYLES --- */
2
+
3
+ .vg-bubble {
4
+ position: fixed;
5
+ bottom: 50px;
6
+ right: 20px;
7
+ width: 60px;
8
+ height: 60px;
9
+ border-radius: 50%;
10
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
11
+ cursor: grab;
12
+ z-index: 2147483647; /* Highest priority */
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: center;
16
+ transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
17
+ pointer-events: auto; /* Always clickable */
18
+ user-select: none;
19
+ }
20
+
21
+ .vg-bubble:active {
22
+ cursor: grabbing;
23
+ transform: scale(0.95);
24
+ }
25
+
26
+ .vg-bubble:hover {
27
+ transform: scale(1.1);
28
+ }
29
+
30
+ .vg-bubble-icon {
31
+ font-size: 30px;
32
+ line-height: 1;
33
+ pointer-events: none; /* Let clicks pass to bubble */
34
+ }
35
+
36
+ /* Bubble Quick Actions Menu */
37
+ .vg-bubble-menu {
38
+ position: absolute;
39
+ bottom: 70px;
40
+ right: 0;
41
+ background: var(--ios-card);
42
+ border-radius: 12px;
43
+ padding: 8px;
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 8px;
47
+ box-shadow: 0 4px 15px rgba(0,0,0,0.2);
48
+ opacity: 1;
49
+ visibility: visible;
50
+ transform: translateY(0);
51
+ transition: all 0.2s ease;
52
+ pointer-events: auto;
53
+ }
54
+
55
+ .vg-bubble:hover .vg-bubble-menu {
56
+ opacity: 1;
57
+ visibility: visible;
58
+ transform: translateY(0);
59
+ pointer-events: auto;
60
+ }
61
+
62
+ .bubble-action-btn {
63
+ background: var(--ios-input-bg);
64
+ border: none;
65
+ border-radius: 8px;
66
+ padding: 8px 12px;
67
+ font-size: 14px;
68
+ font-weight: 600;
69
+ cursor: pointer;
70
+ color: var(--text-primary);
71
+ white-space: nowrap;
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 6px;
75
+ transition: background 0.2s;
76
+ }
77
+
78
+ .bubble-action-btn:hover {
79
+ background: var(--ios-blue);
80
+ color: white;
81
+ }
@@ -0,0 +1,58 @@
1
+ /* Code Viewer Styles */
2
+ .code-viewer-container {
3
+ width: 100%;
4
+ height: 100%;
5
+ overflow: auto;
6
+ background: var(--code-bg, #1e1e1e);
7
+ position: relative;
8
+ }
9
+
10
+ .cv-wrapper {
11
+ min-height: 100%;
12
+ }
13
+
14
+ .cv-wrapper pre {
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ .cv-wrapper code {
20
+ font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
21
+ font-size: 13px;
22
+ line-height: 1.5;
23
+ display: block;
24
+ padding: 15px;
25
+ overflow-x: auto;
26
+ background: transparent; /* Let container handle bg */
27
+ }
28
+
29
+ /* Scrollbar styling for code view */
30
+ .code-viewer-container::-webkit-scrollbar {
31
+ width: 10px;
32
+ height: 10px;
33
+ }
34
+
35
+ .code-viewer-container::-webkit-scrollbar-thumb {
36
+ background: #424242;
37
+ border-radius: 5px;
38
+ }
39
+
40
+ .code-viewer-container::-webkit-scrollbar-corner {
41
+ background: transparent;
42
+ }
43
+
44
+ /* States */
45
+ .cv-loading, .cv-empty {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ height: 100%;
50
+ color: var(--text-secondary, #888);
51
+ font-size: 13px;
52
+ }
53
+
54
+ .cv-error {
55
+ padding: 20px;
56
+ color: var(--ios-red, #ff3b30);
57
+ font-family: monospace;
58
+ }
@@ -5,7 +5,7 @@
5
5
  left: 0;
6
6
  width: 0;
7
7
  height: 0;
8
- z-index: 10000; /* Cao hơn mọi thứ */
8
+ z-index: 10000;
9
9
  }
10
10
 
11
11
  /* Style cho từng cửa sổ terminal */
@@ -20,26 +20,13 @@
20
20
  display: flex;
21
21
  flex-direction: column;
22
22
  overflow: hidden;
23
- resize: both; /* Cho phép resize cửa sổ */
23
+ resize: both;
24
24
  min-width: 300px;
25
25
  min-height: 200px;
26
26
  transition: height 0.2s ease, width 0.2s ease;
27
27
  }
28
28
 
29
- /* --- TRẠNG THÁI MINIMIZED --- */
30
- .floating-terminal.minimized {
31
- height: 36px !important; /* Chỉ hiện header */
32
- min-height: 36px !important;
33
- width: 200px !important; /* Thu nhỏ chiều ngang */
34
- resize: none; /* Không cho resize khi đang minimize */
35
- overflow: hidden;
36
- }
37
-
38
- .floating-terminal.minimized .terminal-body {
39
- display: none;
40
- }
41
-
42
- /* Header dùng để drag */
29
+ /* Header */
43
30
  .terminal-header {
44
31
  background: #252526;
45
32
  padding: 8px 12px;
@@ -50,168 +37,85 @@
50
37
  border-bottom: 1px solid #333;
51
38
  user-select: none;
52
39
  height: 36px;
40
+ flex-shrink: 0;
53
41
  }
54
42
 
55
- .terminal-header:active {
56
- cursor: grabbing;
57
- }
43
+ .terminal-header:active { cursor: grabbing; }
58
44
 
59
45
  .terminal-title-group {
60
- display: flex;
61
- align-items: center;
62
- gap: 8px;
63
- color: #ccc;
64
- font-family: monospace;
65
- font-size: 12px;
66
- font-weight: 600;
67
- white-space: nowrap;
68
- overflow: hidden;
69
- text-overflow: ellipsis;
46
+ display: flex; align-items: center; gap: 8px;
47
+ color: #ccc; font-family: monospace; font-size: 12px; font-weight: 600;
48
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
70
49
  }
71
50
 
72
- /* Copy Button Group */
73
- .terminal-copy-group {
74
- display: flex;
75
- gap: 4px;
76
- margin-left: auto;
77
- margin-right: 8px;
78
- align-items: center;
79
- }
51
+ .terminal-controls { display: flex; gap: 6px; }
80
52
 
81
- .copy-btn {
82
- padding: 3px 6px;
83
- font-size: 10px;
84
- border-radius: 3px;
85
- background: #2d2d30;
86
- border: 1px solid #3e3e42;
87
- color: #ccc;
88
- cursor: pointer;
89
- transition: all 0.2s;
90
- display: flex;
91
- align-items: center;
92
- gap: 3px;
93
- white-space: nowrap;
94
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
95
- }
96
-
97
- .copy-btn:hover {
98
- background: #3e3e42;
99
- border-color: #555;
100
- transform: translateY(-1px);
101
- }
102
-
103
- .copy-btn:active {
104
- transform: translateY(0);
105
- }
106
-
107
- .token-badge {
108
- font-size: 9px;
109
- color: #888;
110
- font-weight: 600;
111
- min-width: 20px;
112
- text-align: right;
113
- }
114
-
115
- /* Specific button colors */
116
- .copy-smart:hover {
117
- border-color: #4a9eff;
118
- }
119
-
120
- .copy-errors:hover {
121
- border-color: #f48771;
53
+ .term-btn {
54
+ width: 12px; height: 12px; border-radius: 50%; border: none;
55
+ cursor: pointer; display: flex; align-items: center; justify-content: center;
56
+ padding: 0; font-size: 8px; color: rgba(0,0,0,0.5);
122
57
  }
58
+ .term-btn:hover { color: rgba(0,0,0,0.8); }
59
+ .term-btn.close { background: #FF5F56; }
60
+ .term-btn.minimize { background: #FFBD2E; }
61
+ .term-btn.maximize { background: #27C93F; }
123
62
 
124
- .copy-recent:hover {
125
- border-color: #89d185;
63
+ /* Body Xterm */
64
+ .terminal-body {
65
+ flex: 1;
66
+ position: relative;
67
+ padding: 5px 5px 0 5px; /* Bottom padding 0 để dính với input */
68
+ background: #1e1e1e;
69
+ overflow: hidden;
126
70
  }
127
71
 
128
- .copy-all:hover {
129
- border-color: #dcdcaa;
130
- }
72
+ /* Scrollbar customization */
73
+ .xterm-viewport::-webkit-scrollbar { width: 8px; }
74
+ .xterm-viewport::-webkit-scrollbar-thumb { background: #424242; border-radius: 4px; }
131
75
 
132
- /* Clear Button */
133
- .term-btn-clear {
134
- width: 24px;
135
- height: 24px;
136
- border-radius: 4px;
137
- background: #2d2d30;
138
- border: 1px solid #3e3e42;
139
- color: #ccc;
140
- cursor: pointer;
76
+ /* --- NEW: SEPARATE INPUT ROW --- */
77
+ .terminal-input-row {
141
78
  display: flex;
142
79
  align-items: center;
143
- justify-content: center;
144
- font-size: 14px;
145
- margin-left: 4px;
146
- margin-right: 8px;
147
- transition: all 0.2s;
148
- }
149
-
150
- .term-btn-clear:hover {
151
- background: #3e3e42;
152
- border-color: #f48771;
153
- transform: translateY(-1px);
80
+ padding: 4px 8px;
81
+ background: #252526; /* Slightly lighter than body */
82
+ border-top: 1px solid #333;
83
+ height: 32px;
84
+ flex-shrink: 0;
154
85
  }
155
86
 
156
- .term-btn-clear:active {
157
- transform: translateY(0);
158
- }
159
-
160
- .terminal-controls {
161
- display: flex;
162
- gap: 6px;
87
+ .terminal-prompt {
88
+ color: #34C759; /* Green prompt */
89
+ font-family: 'Menlo', 'Monaco', monospace;
90
+ font-weight: bold;
91
+ margin-right: 8px;
92
+ user-select: none;
93
+ font-size: 14px;
163
94
  }
164
95
 
165
- .term-btn {
166
- width: 12px;
167
- height: 12px;
168
- border-radius: 50%;
96
+ .terminal-input {
97
+ flex: 1;
98
+ background: transparent;
169
99
  border: none;
170
- cursor: pointer;
171
- display: flex;
172
- align-items: center;
173
- justify-content: center;
100
+ color: #fff;
101
+ font-family: 'Menlo', 'Monaco', monospace;
102
+ font-size: 13px;
103
+ outline: none;
174
104
  padding: 0;
175
- font-size: 8px;
176
- color: rgba(0,0,0,0.5);
177
- }
178
-
179
- .term-btn:hover {
180
- color: rgba(0,0,0,0.8);
181
105
  }
182
106
 
183
- .term-btn.close {
184
- background: #FF5F56;
185
- }
186
- .term-btn.close:hover {
187
- background: #ff3b30;
107
+ .terminal-input::placeholder {
108
+ color: #666;
188
109
  }
189
110
 
190
- .term-btn.minimize {
191
- background: #FFBD2E;
192
- }
193
- .term-btn.minimize:hover {
194
- background: #ffad08;
195
- }
196
-
197
- .term-btn.maximize {
198
- background: #27C93F;
199
- }
200
-
201
- /* Phần nội dung chứa xterm */
202
- .terminal-body {
203
- flex: 1;
204
- position: relative;
205
- padding: 5px;
206
- background: #1e1e1e;
207
- overflow: hidden;
208
- }
209
-
210
- /* Scrollbar customization */
211
- .xterm-viewport::-webkit-scrollbar {
212
- width: 8px;
111
+ /* Minimized State */
112
+ .floating-terminal.minimized {
113
+ height: 36px !important;
114
+ min-height: 36px !important;
115
+ width: 200px !important;
116
+ resize: none;
213
117
  }
214
- .xterm-viewport::-webkit-scrollbar-thumb {
215
- background: #424242;
216
- border-radius: 4px;
118
+ .floating-terminal.minimized .terminal-body,
119
+ .floating-terminal.minimized .terminal-input-row {
120
+ display: none;
217
121
  }