claudeck 1.0.0 → 1.0.2

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.
@@ -1,66 +1 @@
1
- [
2
- {
3
- "name": "Frontend",
4
- "path": "/Users/hamedfarag/WakeCap/Frontend",
5
- "systemPrompt": ""
6
- },
7
- {
8
- "name": "Frontend Docs",
9
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-docs",
10
- "systemPrompt": ""
11
- },
12
- {
13
- "name": "FE2.0 - Training Center",
14
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-training-center",
15
- "systemPrompt": ""
16
- },
17
- {
18
- "name": "Vertex",
19
- "path": "/Users/hamedfarag/WakeCap/Backend/wakecap-apps-manager",
20
- "systemPrompt": ""
21
- },
22
- {
23
- "name": "Public Site",
24
- "path": "/Users/hamedfarag/WakeCap/Frontend/wakecap-public-site",
25
- "systemPrompt": ""
26
- },
27
- {
28
- "name": "FE-2.0",
29
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0",
30
- "systemPrompt": ""
31
- },
32
- {
33
- "name": "DOCS",
34
- "path": "/Users/hamedfarag/WakeCap/DOCS",
35
- "systemPrompt": "You are an expert in writing technical plans, with some points and some details we need to create a plan with these points and for each point we need to show the document the following (problem statement, impact on the system , release date , dependencies), the output always in markdown"
36
- },
37
- {
38
- "name": "Playground",
39
- "path": "/Users/hamedfarag/WakeCap/PLAYGROUND",
40
- "systemPrompt": ""
41
- },
42
- {
43
- "name": "wakecap-api-services",
44
- "path": "/Users/hamedfarag/WakeCap/PLAYGROUND/@wakecap/api-services/wakecap-api-services"
45
- },
46
- {
47
- "name": "fe-microapp-templates",
48
- "path": "/Users/hamedfarag/WakeCap/Frontend/fe-microapp-templates"
49
- },
50
- {
51
- "name": "aiMarketplace",
52
- "path": "/Users/hamedfarag/Personal/aiMarketplace"
53
- },
54
- {
55
- "name": "orchestrator-agent-with-adws",
56
- "path": "/Users/hamedfarag/WakeCap/tac/orchestrator-agent-with-adws"
57
- },
58
- {
59
- "name": "frontend-common-services",
60
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-common-services"
61
- },
62
- {
63
- "name": "frontend-helpers",
64
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-helpers"
65
- }
66
- ]
1
+ []
package/config/repos.json CHANGED
@@ -1,86 +1,4 @@
1
1
  {
2
- "groups": [
3
- {
4
- "id": "g_1772808718495",
5
- "name": "frontend-2.0",
6
- "parentId": null
7
- },
8
- {
9
- "id": "g_1773040762896",
10
- "name": "Packages",
11
- "parentId": null
12
- }
13
- ],
14
- "repos": [
15
- {
16
- "id": "r_1772810331715",
17
- "name": "frontend-2.0-drones",
18
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-drones",
19
- "groupId": "g_1772808718495",
20
- "url": null
21
- },
22
- {
23
- "id": "r_1772810479470",
24
- "name": "frontend-2.0-equipments",
25
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-equipments",
26
- "groupId": "g_1772808718495",
27
- "url": null
28
- },
29
- {
30
- "id": "r_1772810510888",
31
- "name": "frontend-components",
32
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-components",
33
- "groupId": "g_1773040762896",
34
- "url": "https://github.com/wakecap/frontend-components"
35
- },
36
- {
37
- "id": "r_1772810597927",
38
- "name": "frontend-2.0-hwm",
39
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-hwm",
40
- "groupId": "g_1772808718495",
41
- "url": null
42
- },
43
- {
44
- "id": "r_1772811012777",
45
- "name": "fe-microapp-templates",
46
- "path": "/Users/hamedfarag/WakeCap/Frontend/fe-microapp-templates",
47
- "groupId": "g_1772808718495",
48
- "url": "https://github.com/wakecap/fe-microapp-templates"
49
- },
50
- {
51
- "id": "r_1772811056665",
52
- "name": "frontend-2.0-siteguard",
53
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-siteguard",
54
- "groupId": "g_1772808718495",
55
- "url": null
56
- },
57
- {
58
- "id": "r_1772962801720",
59
- "name": "frontend-2.0",
60
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0",
61
- "groupId": null,
62
- "url": "https://github.com/wakecap/frontend-2.0"
63
- },
64
- {
65
- "id": "r_1773040777472",
66
- "name": "frontend-helpers",
67
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-helpers",
68
- "groupId": "g_1773040762896",
69
- "url": "https://github.com/wakecap/frontend-helpers"
70
- },
71
- {
72
- "id": "r_1773041006726",
73
- "name": "frontend-2.0-training-center",
74
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-2.0-training-center",
75
- "groupId": "g_1772808718495",
76
- "url": null
77
- },
78
- {
79
- "id": "r_1773046824777",
80
- "name": "frontend-docs",
81
- "path": "/Users/hamedfarag/WakeCap/Frontend/frontend-docs",
82
- "groupId": "g_1773040762896",
83
- "url": null
84
- }
85
- ]
2
+ "groups": [],
3
+ "repos": []
86
4
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudeck",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "A browser-based UI for Claude Code — chat, run workflows, manage MCP servers, track costs, and orchestrate autonomous agents from a local web interface. Installable as a PWA.",
6
6
  "main": "server.js",
@@ -62,6 +62,13 @@
62
62
  height: 36px;
63
63
  padding: 0 6px;
64
64
  gap: 0;
65
+ overflow-x: auto;
66
+ overflow-y: hidden;
67
+ scrollbar-width: none; /* Firefox */
68
+ -ms-overflow-style: none; /* IE/Edge */
69
+ }
70
+ .right-panel-tab-bar::-webkit-scrollbar {
71
+ display: none; /* Chrome/Safari */
65
72
  }
66
73
 
67
74
  .right-panel-tab {
package/public/index.html CHANGED
@@ -268,6 +268,11 @@
268
268
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/>
269
269
  </svg>
270
270
  </button>
271
+ <button id="remove-project-btn" class="add-project-btn sidebar-tooltip" data-tooltip="Remove project">
272
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
273
+ <polyline points="3 6 5 6 21 6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>
274
+ </svg>
275
+ </button>
271
276
  <button id="add-project-btn" class="add-project-btn sidebar-tooltip" data-tooltip="Add project">+</button>
272
277
  <button id="system-prompt-edit-btn" class="system-prompt-edit-btn sidebar-tooltip" data-tooltip="System prompt">&#9881;</button>
273
278
  </div>
@@ -283,6 +283,19 @@ export async function addProject(name, path) {
283
283
  return res.json();
284
284
  }
285
285
 
286
+ export async function deleteProject(path) {
287
+ const res = await fetch("/api/projects", {
288
+ method: "DELETE",
289
+ headers: { "Content-Type": "application/json" },
290
+ body: JSON.stringify({ path }),
291
+ });
292
+ if (!res.ok) {
293
+ const err = await res.json();
294
+ throw new Error(err.error);
295
+ }
296
+ return res.json();
297
+ }
298
+
286
299
  export async function fetchProjectCommands(path) {
287
300
  const res = await fetch(`/api/projects/commands?path=${encodeURIComponent(path)}`);
288
301
  return res.json();
@@ -259,6 +259,7 @@ export const $ = {
259
259
 
260
260
  // Add project modal
261
261
  openVscodeBtn: document.getElementById("open-vscode-btn"),
262
+ removeProjectBtn: document.getElementById("remove-project-btn"),
262
263
  addProjectBtn: document.getElementById("add-project-btn"),
263
264
  addProjectModal: document.getElementById("add-project-modal"),
264
265
  addProjectClose: document.getElementById("add-project-close"),
@@ -278,6 +278,36 @@ $.openVscodeBtn.addEventListener("click", async () => {
278
278
  } catch { /* ignore */ }
279
279
  });
280
280
 
281
+ // Remove project
282
+ $.removeProjectBtn.addEventListener("click", async () => {
283
+ const path = $.projectSelect.value;
284
+ if (!path) return;
285
+ const name = $.projectSelect.options[$.projectSelect.selectedIndex].textContent;
286
+ if (!confirm(`Remove "${name}" from your projects?\n\nThis only removes it from Claudeck — your files won't be deleted.`)) return;
287
+ try {
288
+ await api.deleteProject(path);
289
+ // Remove from dropdown
290
+ const opt = [...$.projectSelect.options].find(o => o.value === path);
291
+ if (opt) opt.remove();
292
+ // Remove from state
293
+ const projects = getState("projectsData");
294
+ const idx = projects.findIndex(p => p.path === path);
295
+ if (idx !== -1) projects.splice(idx, 1);
296
+ // Reset selection
297
+ $.projectSelect.value = "";
298
+ localStorage.removeItem("claudeck-cwd");
299
+ updateSystemPromptIndicator();
300
+ updateHeaderProjectName();
301
+ updateSessionControls();
302
+ loadProjectCommands();
303
+ $.messagesDiv.innerHTML = "";
304
+ showWhalyPlaceholder();
305
+ loadSessions();
306
+ } catch (err) {
307
+ alert("Failed to remove project: " + err.message);
308
+ }
309
+ });
310
+
281
311
  // Add project button & modal event listeners
282
312
  $.addProjectBtn.addEventListener("click", openAddProjectModal);
283
313
  $.addProjectClose.addEventListener("click", closeAddProjectModal);
@@ -68,7 +68,9 @@ function restoreTab(tabName) {
68
68
  function applyTab(tabName) {
69
69
  // Update tab buttons
70
70
  $.rightPanel.querySelectorAll(".right-panel-tab").forEach((btn) => {
71
- btn.classList.toggle("active", btn.dataset.tab === tabName);
71
+ const isActive = btn.dataset.tab === tabName;
72
+ btn.classList.toggle("active", isActive);
73
+ if (isActive) btn.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
72
74
  });
73
75
 
74
76
  // Update panes
@@ -297,6 +297,9 @@ function mountTab(tab) {
297
297
 
298
298
  localStorage.setItem('claudeck-right-panel-tab', tab.id);
299
299
  emit('rightPanel:tabChanged', tab.id);
300
+
301
+ // Scroll active tab into view
302
+ btn.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
300
303
  });
301
304
  }
302
305