create-walle 0.9.3 → 0.9.4
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 +2 -1
- package/package.json +1 -1
- package/template/claude-task-manager/db.js +5 -1
- package/template/claude-task-manager/public/css/walle.css +317 -0
- package/template/claude-task-manager/public/index.html +404 -101
- package/template/claude-task-manager/public/js/walle.js +1256 -86
- package/template/claude-task-manager/server.js +189 -14
- package/template/docs/site/api/README.md +146 -0
- package/template/docs/site/skills/README.md +99 -5
- package/template/package.json +1 -1
- package/template/wall-e/agent.js +54 -0
- package/template/wall-e/api-walle.js +452 -3
- package/template/wall-e/brain.js +45 -1
- package/template/wall-e/channels/telegram-channel.js +96 -0
- package/template/wall-e/chat.js +61 -2
- package/template/wall-e/coding-context.js +252 -0
- package/template/wall-e/coding-orchestrator.js +625 -0
- package/template/wall-e/coding-review.js +189 -0
- package/template/wall-e/core-tasks.js +12 -3
- package/template/wall-e/deploy.sh +4 -4
- package/template/wall-e/fly.toml +2 -2
- package/template/wall-e/package.json +4 -1
- package/template/wall-e/skills/_bundled/coding-agent/SKILL.md +17 -0
- package/template/wall-e/skills/_bundled/coding-agent/run.js +142 -0
- package/template/wall-e/skills/_bundled/email-sync/SKILL.md +12 -7
- package/template/wall-e/skills/_bundled/email-sync/mail-reader.jxa +76 -46
- package/template/wall-e/skills/_bundled/email-sync/run.js +42 -2
- package/template/wall-e/skills/_bundled/glean-team-sync/SKILL.md +57 -0
- package/template/wall-e/skills/_bundled/glean-team-sync/run.js +254 -0
- package/template/wall-e/skills/_bundled/slack-mentions/SKILL.md +1 -1
- package/template/wall-e/skills/_bundled/slack-mentions/run.js +268 -121
- package/template/wall-e/skills/_templates/data-fetcher.md +27 -0
- package/template/wall-e/skills/_templates/manual-action.md +19 -0
- package/template/wall-e/skills/_templates/periodic-checker.md +29 -0
- package/template/wall-e/skills/_templates/script-runner.md +21 -0
- package/template/wall-e/skills/claude-code-reader.js +16 -4
- package/template/wall-e/skills/skill-executor.js +23 -1
- package/template/wall-e/skills/skill-validator.js +73 -0
- package/template/wall-e/tests/brain.test.js +3 -3
- package/template/wall-e/tests/coding-agent-integration.test.js +240 -0
- package/template/wall-e/tests/coding-context.test.js +212 -0
- package/template/wall-e/tests/coding-orchestrator.test.js +303 -0
- package/template/wall-e/tests/coding-review.test.js +141 -0
- package/template/claude-task-manager/package-lock.json +0 -1607
- package/template/claude-task-manager/tests/test-ai-search.js +0 -61
- package/template/claude-task-manager/tests/test-editor-ux.js +0 -76
- package/template/claude-task-manager/tests/test-editor-ux2.js +0 -51
- package/template/claude-task-manager/tests/test-features-v2.js +0 -127
- package/template/claude-task-manager/tests/test-insights-cached.js +0 -78
- package/template/claude-task-manager/tests/test-insights.js +0 -124
- package/template/claude-task-manager/tests/test-permissions-v2.js +0 -127
- package/template/claude-task-manager/tests/test-permissions.js +0 -122
- package/template/claude-task-manager/tests/test-pin.js +0 -51
- package/template/claude-task-manager/tests/test-prompts.js +0 -164
- package/template/claude-task-manager/tests/test-recent-sessions.js +0 -96
- package/template/claude-task-manager/tests/test-review.js +0 -104
- package/template/claude-task-manager/tests/test-send-dropdown.js +0 -76
- package/template/claude-task-manager/tests/test-send-final.js +0 -30
- package/template/claude-task-manager/tests/test-send-fixes.js +0 -76
- package/template/claude-task-manager/tests/test-send-integration.js +0 -107
- package/template/claude-task-manager/tests/test-send-visual.js +0 -34
- package/template/claude-task-manager/tests/test-session-create.js +0 -147
- package/template/claude-task-manager/tests/test-sidebar-ux.js +0 -83
- package/template/claude-task-manager/tests/test-url-hash.js +0 -68
- package/template/claude-task-manager/tests/test-ux-crop.js +0 -34
- package/template/claude-task-manager/tests/test-ux-review.js +0 -130
- package/template/claude-task-manager/tests/test-zoom-card.js +0 -76
- package/template/claude-task-manager/tests/test-zoom.js +0 -92
- package/template/claude-task-manager/tests/test-zoom2.js +0 -67
- package/template/docs/openclaw-vs-walle-comparison.md +0 -103
- package/template/docs/ux-improvement-plan.md +0 -84
- package/template/wall-e/docs/specs/2026-04-01-publish-plan.md +0 -112
- package/template/wall-e/docs/specs/SKILL-FORMAT.md +0 -326
- package/template/wall-e/package-lock.json +0 -533
- package/template/wall-e/skills/_bundled/slack-mentions/.watermark.json +0 -4
package/README.md
CHANGED
|
@@ -22,7 +22,8 @@ An always-on AI agent that learns from your Slack, email, calendar, and Claude C
|
|
|
22
22
|
- **Second Brain** — Automatically ingests your digital life into a searchable memory store with full-text search, knowledge extraction, and pattern detection
|
|
23
23
|
- **Proactive Intelligence** — Surfaces time-sensitive items, suggests actions, and delivers morning briefings and weekly reflections without being asked
|
|
24
24
|
- **Chat with Tools** — Talk to Wall-E in the browser — it can search your memories, look up people, run skills, and call external tools via MCP (Slack, Glean, etc.)
|
|
25
|
-
- **
|
|
25
|
+
- **14 Bundled Skills** — Morning briefing, weekly reflection, proactive alerts, Slack mentions, email sync, calendar integration, coding agent, and more
|
|
26
|
+
- **Skill Management GUI** — Search, filter, create, edit, and monitor skills from the browser with rich cards, config forms, execution history, export/import, and pre-flight validation
|
|
26
27
|
- **Multi-Device** — Share your brain across machines via Dropbox or iCloud
|
|
27
28
|
|
|
28
29
|
## Install
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-walle",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "CTM + Wall-E — Claude Task Manager dashboard and your personal digital twin AI agent. Terminal multiplexer, prompt editor, task queue, and an agent that learns from Slack, email & calendar.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-walle": "bin/create-walle.js"
|
|
@@ -1721,6 +1721,10 @@ function addStartupTask(sessionId, label, cmd, args, cwd) {
|
|
|
1721
1721
|
).run(sessionId, label || '', cmd || '', JSON.stringify(args || []), cwd || '');
|
|
1722
1722
|
}
|
|
1723
1723
|
|
|
1724
|
+
function updateStartupTaskLabel(sessionId, label) {
|
|
1725
|
+
getDb().prepare('UPDATE startup_tasks SET label = ? WHERE session_id = ?').run(label || '', sessionId);
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1724
1728
|
function removeStartupTask(sessionId) {
|
|
1725
1729
|
getDb().prepare('DELETE FROM startup_tasks WHERE session_id = ?').run(sessionId);
|
|
1726
1730
|
}
|
|
@@ -1766,6 +1770,6 @@ module.exports = {
|
|
|
1766
1770
|
replaceInsightRecommendations, listInsightRecommendations,
|
|
1767
1771
|
startAnalysisRun, completeAnalysisRun, getLastAnalysisRun,
|
|
1768
1772
|
getInsightsData,
|
|
1769
|
-
addStartupTask, removeStartupTask, listStartupTasks, clearStartupTasks,
|
|
1773
|
+
addStartupTask, updateStartupTaskLabel, removeStartupTask, listStartupTasks, clearStartupTasks,
|
|
1770
1774
|
DEFAULT_IMAGES_DIR, BACKUP_DIR,
|
|
1771
1775
|
};
|
|
@@ -237,6 +237,22 @@
|
|
|
237
237
|
.walle-chat-msg.user:hover .we-edit-btn { opacity: 0.7; }
|
|
238
238
|
.we-edit-btn:hover { opacity: 1 !important; color: var(--accent); }
|
|
239
239
|
|
|
240
|
+
/* Branch navigation (ChatGPT-style) */
|
|
241
|
+
.we-branch-nav {
|
|
242
|
+
display: inline-flex; align-items: center; gap: 2px;
|
|
243
|
+
margin-left: 8px; vertical-align: middle;
|
|
244
|
+
}
|
|
245
|
+
.we-branch-btn {
|
|
246
|
+
background: none; border: 1px solid var(--border, #444); color: var(--fg);
|
|
247
|
+
font-size: 14px; padding: 0 5px; border-radius: 3px; cursor: pointer;
|
|
248
|
+
line-height: 18px; opacity: 0.7; transition: opacity 0.15s;
|
|
249
|
+
}
|
|
250
|
+
.we-branch-btn:hover { opacity: 1; color: var(--accent); border-color: var(--accent); }
|
|
251
|
+
.we-branch-btn.disabled { opacity: 0.2; cursor: default; pointer-events: none; }
|
|
252
|
+
.we-branch-label {
|
|
253
|
+
font-size: 11px; color: var(--fg-muted, #888); min-width: 20px; text-align: center;
|
|
254
|
+
}
|
|
255
|
+
|
|
240
256
|
/* Edit inline form */
|
|
241
257
|
.we-edit-row { margin-top: 4px; }
|
|
242
258
|
.we-edit-input {
|
|
@@ -877,3 +893,304 @@
|
|
|
877
893
|
.we-bi-btn.snooze:hover { background: rgba(250,176,5,0.1); }
|
|
878
894
|
.we-bi-btn.dismiss { color: #666; border-color: rgba(255,255,255,0.08); }
|
|
879
895
|
.we-bi-btn.dismiss:hover { color: #e03131; border-color: rgba(224,49,49,0.3); }
|
|
896
|
+
|
|
897
|
+
/* ===== Skills Tab — Redesigned (Phase 1) ===== */
|
|
898
|
+
|
|
899
|
+
/* Analytics Summary Bar */
|
|
900
|
+
.we-skills-analytics {
|
|
901
|
+
display: flex; gap: 16px; padding: 10px 16px; margin-bottom: 12px;
|
|
902
|
+
background: var(--bg-lighter, #1e1e2e); border: 1px solid var(--border);
|
|
903
|
+
border-radius: 8px; flex-wrap: wrap;
|
|
904
|
+
}
|
|
905
|
+
.we-skills-analytics-item {
|
|
906
|
+
display: flex; flex-direction: column; align-items: center; min-width: 80px;
|
|
907
|
+
}
|
|
908
|
+
.we-skills-analytics-value { font-size: 20px; font-weight: 700; color: var(--accent); }
|
|
909
|
+
.we-skills-analytics-label { font-size: 10px; color: var(--fg-muted, #888); margin-top: 2px; }
|
|
910
|
+
.we-skills-analytics-item.failing .we-skills-analytics-value { color: #e03131; cursor: pointer; }
|
|
911
|
+
|
|
912
|
+
/* Toolbar: search, filters, sort */
|
|
913
|
+
.we-skills-toolbar {
|
|
914
|
+
display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;
|
|
915
|
+
}
|
|
916
|
+
.we-skills-search {
|
|
917
|
+
flex: 1; min-width: 160px; padding: 6px 10px; border-radius: 6px;
|
|
918
|
+
border: 1px solid var(--border); background: var(--bg); color: var(--fg);
|
|
919
|
+
font-size: 12px;
|
|
920
|
+
}
|
|
921
|
+
.we-skills-search:focus { outline: none; border-color: var(--accent); }
|
|
922
|
+
.we-skills-search::placeholder { color: #666; }
|
|
923
|
+
|
|
924
|
+
/* Category/status pill filters */
|
|
925
|
+
.we-skills-pills { display: flex; gap: 4px; flex-wrap: wrap; }
|
|
926
|
+
.we-skills-pill {
|
|
927
|
+
padding: 3px 10px; border-radius: 12px; font-size: 11px; cursor: pointer;
|
|
928
|
+
border: 1px solid var(--border); background: transparent; color: var(--fg-muted, #888);
|
|
929
|
+
transition: all 0.15s; white-space: nowrap;
|
|
930
|
+
}
|
|
931
|
+
.we-skills-pill:hover { background: rgba(255,255,255,0.06); color: var(--fg); }
|
|
932
|
+
.we-skills-pill.active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
|
933
|
+
|
|
934
|
+
/* Redesigned skill card */
|
|
935
|
+
.we-skill-card {
|
|
936
|
+
display: flex; background: var(--bg-lighter, #1e1e2e);
|
|
937
|
+
border: 1px solid var(--border); border-radius: 8px;
|
|
938
|
+
margin-bottom: 8px; overflow: hidden; cursor: pointer;
|
|
939
|
+
transition: border-color 0.15s;
|
|
940
|
+
}
|
|
941
|
+
.we-skill-card:hover { border-color: var(--accent); }
|
|
942
|
+
.we-skill-card-stripe {
|
|
943
|
+
width: 4px; flex-shrink: 0;
|
|
944
|
+
}
|
|
945
|
+
.we-skill-card-stripe.healthy { background: #5c940d; }
|
|
946
|
+
.we-skill-card-stripe.failing { background: #e8590c; }
|
|
947
|
+
.we-skill-card-stripe.disabled { background: #555; }
|
|
948
|
+
.we-skill-card-stripe.warning { background: #fab005; }
|
|
949
|
+
|
|
950
|
+
.we-skill-card-body { flex: 1; padding: 10px 14px; min-width: 0; }
|
|
951
|
+
|
|
952
|
+
.we-skill-card-header {
|
|
953
|
+
display: flex; align-items: center; gap: 8px; margin-bottom: 4px; flex-wrap: wrap;
|
|
954
|
+
}
|
|
955
|
+
.we-skill-card-name { font-size: 13px; font-weight: 600; color: var(--fg); }
|
|
956
|
+
.we-skill-card-badge {
|
|
957
|
+
font-size: 9px; font-weight: 600; padding: 1px 6px; border-radius: 3px;
|
|
958
|
+
text-transform: uppercase; letter-spacing: 0.3px;
|
|
959
|
+
}
|
|
960
|
+
.we-skill-card-badge.version { background: rgba(59,130,246,0.15); color: #60a5fa; }
|
|
961
|
+
.we-skill-card-badge.bundled { background: rgba(136,136,136,0.15); color: #888; }
|
|
962
|
+
.we-skill-card-badge.user { background: rgba(92,148,13,0.15); color: #5c940d; }
|
|
963
|
+
.we-skill-card-badge.workspace { background: rgba(130,80,223,0.15); color: #a78bfa; }
|
|
964
|
+
.we-skill-card-badge.registry { background: rgba(232,89,12,0.15); color: #e8590c; }
|
|
965
|
+
.we-skill-card-badge.agent { background: rgba(59,130,246,0.1); color: #60a5fa; }
|
|
966
|
+
.we-skill-card-badge.script { background: rgba(250,176,5,0.1); color: #fab005; }
|
|
967
|
+
|
|
968
|
+
.we-skill-card-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 4px; }
|
|
969
|
+
.we-skill-tag {
|
|
970
|
+
display: inline-block; padding: 1px 6px; border-radius: 3px; font-size: 10px;
|
|
971
|
+
font-weight: 500; background: rgba(255,255,255,0.06); color: var(--fg-muted, #888);
|
|
972
|
+
}
|
|
973
|
+
.we-skill-tag.sync { background: rgba(16,152,173,0.15); color: #1098ad; }
|
|
974
|
+
.we-skill-tag.data { background: rgba(54,79,199,0.15); color: #748ffc; }
|
|
975
|
+
.we-skill-tag.communication { background: rgba(92,148,13,0.15); color: #a9e34b; }
|
|
976
|
+
.we-skill-tag.coding { background: rgba(130,80,223,0.15); color: #b197fc; }
|
|
977
|
+
.we-skill-tag.monitoring { background: rgba(232,89,12,0.15); color: #ff922b; }
|
|
978
|
+
.we-skill-tag.automation { background: rgba(250,176,5,0.15); color: #ffd43b; }
|
|
979
|
+
|
|
980
|
+
.we-skill-card-desc {
|
|
981
|
+
font-size: 12px; color: #999; line-height: 1.4; margin-bottom: 4px;
|
|
982
|
+
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
|
|
983
|
+
overflow: hidden;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
.we-skill-card-stats {
|
|
987
|
+
display: flex; gap: 12px; align-items: center; font-size: 11px; color: var(--fg-muted, #888);
|
|
988
|
+
}
|
|
989
|
+
.we-skill-rate-bar {
|
|
990
|
+
display: inline-block; width: 40px; height: 4px; border-radius: 2px;
|
|
991
|
+
background: var(--border); overflow: hidden; vertical-align: middle;
|
|
992
|
+
}
|
|
993
|
+
.we-skill-rate-fill { height: 100%; border-radius: 2px; background: #5c940d; }
|
|
994
|
+
.we-skill-rate-fill.low { background: #e03131; }
|
|
995
|
+
.we-skill-rate-fill.mid { background: #fab005; }
|
|
996
|
+
|
|
997
|
+
.we-skill-card-actions {
|
|
998
|
+
display: flex; align-items: center; gap: 6px; padding: 10px 14px;
|
|
999
|
+
flex-shrink: 0;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
/* Toggle switch */
|
|
1003
|
+
.we-toggle {
|
|
1004
|
+
position: relative; display: inline-block; width: 32px; height: 18px;
|
|
1005
|
+
flex-shrink: 0;
|
|
1006
|
+
}
|
|
1007
|
+
.we-toggle input { opacity: 0; width: 0; height: 0; }
|
|
1008
|
+
.we-toggle-slider {
|
|
1009
|
+
position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
|
|
1010
|
+
background-color: #444; transition: 0.2s; border-radius: 18px;
|
|
1011
|
+
}
|
|
1012
|
+
.we-toggle-slider::before {
|
|
1013
|
+
position: absolute; content: ""; height: 14px; width: 14px;
|
|
1014
|
+
left: 2px; bottom: 2px; background-color: #ccc;
|
|
1015
|
+
transition: 0.2s; border-radius: 50%;
|
|
1016
|
+
}
|
|
1017
|
+
.we-toggle input:checked + .we-toggle-slider { background-color: #5c940d; }
|
|
1018
|
+
.we-toggle input:checked + .we-toggle-slider::before { transform: translateX(14px); }
|
|
1019
|
+
|
|
1020
|
+
/* Overflow menu */
|
|
1021
|
+
.we-skill-overflow {
|
|
1022
|
+
position: relative; display: inline-block;
|
|
1023
|
+
}
|
|
1024
|
+
.we-skill-overflow-btn {
|
|
1025
|
+
background: none; border: 1px solid rgba(255,255,255,0.1); color: #888;
|
|
1026
|
+
font-size: 14px; padding: 2px 6px; border-radius: 4px; cursor: pointer;
|
|
1027
|
+
line-height: 1;
|
|
1028
|
+
}
|
|
1029
|
+
.we-skill-overflow-btn:hover { color: #ccc; border-color: rgba(255,255,255,0.2); }
|
|
1030
|
+
.we-skill-overflow-menu {
|
|
1031
|
+
display: none; position: absolute; right: 0; top: 100%; margin-top: 4px;
|
|
1032
|
+
background: #1e1e2e; border: 1px solid rgba(255,255,255,0.15);
|
|
1033
|
+
border-radius: 6px; min-width: 150px; padding: 4px 0; z-index: 1000;
|
|
1034
|
+
box-shadow: 0 4px 16px rgba(0,0,0,0.5);
|
|
1035
|
+
}
|
|
1036
|
+
.we-skill-overflow-menu.open { display: block; }
|
|
1037
|
+
.we-skill-overflow-item {
|
|
1038
|
+
padding: 6px 12px; font-size: 12px; color: #ccc; cursor: pointer; white-space: nowrap;
|
|
1039
|
+
}
|
|
1040
|
+
.we-skill-overflow-item:hover { background: rgba(255,255,255,0.08); color: #fff; }
|
|
1041
|
+
.we-skill-overflow-item.danger { color: #e03131; }
|
|
1042
|
+
.we-skill-overflow-item.danger:hover { background: rgba(224,49,49,0.15); }
|
|
1043
|
+
|
|
1044
|
+
/* ===== Skill Detail Panel (Slide-Over) ===== */
|
|
1045
|
+
.we-skill-detail {
|
|
1046
|
+
position: fixed; top: 0; right: -480px; width: 480px; height: 100vh;
|
|
1047
|
+
background: var(--bg, #1a1b26); border-left: 1px solid var(--border);
|
|
1048
|
+
z-index: 900; display: flex; flex-direction: column;
|
|
1049
|
+
transition: right 0.25s ease;
|
|
1050
|
+
box-shadow: -4px 0 20px rgba(0,0,0,0.4);
|
|
1051
|
+
}
|
|
1052
|
+
.we-skill-detail.open { right: 0; }
|
|
1053
|
+
.we-skill-detail-backdrop {
|
|
1054
|
+
display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
|
|
1055
|
+
background: rgba(0,0,0,0.4); z-index: 899;
|
|
1056
|
+
}
|
|
1057
|
+
.we-skill-detail-backdrop.open { display: block; }
|
|
1058
|
+
|
|
1059
|
+
.we-skill-detail-header {
|
|
1060
|
+
display: flex; align-items: center; gap: 10px; padding: 14px 16px;
|
|
1061
|
+
border-bottom: 1px solid var(--border); flex-shrink: 0;
|
|
1062
|
+
}
|
|
1063
|
+
.we-skill-detail-close {
|
|
1064
|
+
background: none; border: none; color: #888; font-size: 18px; cursor: pointer;
|
|
1065
|
+
padding: 2px 6px; line-height: 1;
|
|
1066
|
+
}
|
|
1067
|
+
.we-skill-detail-close:hover { color: #ccc; }
|
|
1068
|
+
.we-skill-detail-title { font-size: 15px; font-weight: 700; color: var(--fg); flex: 1; }
|
|
1069
|
+
|
|
1070
|
+
.we-skill-detail-tabs {
|
|
1071
|
+
display: flex; gap: 2px; padding: 0 16px; border-bottom: 1px solid var(--border);
|
|
1072
|
+
flex-shrink: 0;
|
|
1073
|
+
}
|
|
1074
|
+
.we-skill-detail-tab {
|
|
1075
|
+
padding: 8px 12px; font-size: 12px; color: var(--fg-muted, #888); cursor: pointer;
|
|
1076
|
+
border-bottom: 2px solid transparent; background: none; border-top: none;
|
|
1077
|
+
border-left: none; border-right: none; transition: all 0.15s;
|
|
1078
|
+
}
|
|
1079
|
+
.we-skill-detail-tab:hover { color: var(--fg); }
|
|
1080
|
+
.we-skill-detail-tab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
|
|
1081
|
+
|
|
1082
|
+
.we-skill-detail-content {
|
|
1083
|
+
flex: 1; overflow-y: auto; padding: 16px;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
/* Config form */
|
|
1087
|
+
.we-config-form { display: flex; flex-direction: column; gap: 12px; }
|
|
1088
|
+
.we-config-field { display: flex; flex-direction: column; gap: 4px; }
|
|
1089
|
+
.we-config-label { font-size: 12px; font-weight: 600; color: var(--fg); }
|
|
1090
|
+
.we-config-help { font-size: 11px; color: var(--fg-muted, #888); }
|
|
1091
|
+
.we-config-input {
|
|
1092
|
+
padding: 6px 10px; border-radius: 4px; border: 1px solid var(--border);
|
|
1093
|
+
background: var(--bg); color: var(--fg); font-size: 12px;
|
|
1094
|
+
}
|
|
1095
|
+
.we-config-input:focus { outline: none; border-color: var(--accent); }
|
|
1096
|
+
.we-config-select {
|
|
1097
|
+
padding: 6px 10px; border-radius: 4px; border: 1px solid var(--border);
|
|
1098
|
+
background: var(--bg); color: var(--fg); font-size: 12px;
|
|
1099
|
+
}
|
|
1100
|
+
.we-config-save { margin-top: 8px; align-self: flex-start; }
|
|
1101
|
+
|
|
1102
|
+
/* Execution history table */
|
|
1103
|
+
.we-exec-table { width: 100%; border-collapse: collapse; font-size: 12px; }
|
|
1104
|
+
.we-exec-table th {
|
|
1105
|
+
text-align: left; padding: 6px 8px; color: #666; font-weight: 500;
|
|
1106
|
+
font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px;
|
|
1107
|
+
border-bottom: 1px solid rgba(255,255,255,0.1);
|
|
1108
|
+
}
|
|
1109
|
+
.we-exec-table td {
|
|
1110
|
+
padding: 6px 8px; border-bottom: 1px solid rgba(255,255,255,0.04);
|
|
1111
|
+
color: #bbb;
|
|
1112
|
+
}
|
|
1113
|
+
.we-exec-status { font-size: 10px; font-weight: 600; text-transform: uppercase; }
|
|
1114
|
+
.we-exec-status.success { color: #5c940d; }
|
|
1115
|
+
.we-exec-status.failure { color: #e03131; }
|
|
1116
|
+
|
|
1117
|
+
/* Source viewer */
|
|
1118
|
+
.we-skill-source-view {
|
|
1119
|
+
background: #0d1117; border: 1px solid rgba(255,255,255,0.08);
|
|
1120
|
+
border-radius: 6px; padding: 12px; font-family: 'SF Mono', 'Fira Code', monospace;
|
|
1121
|
+
font-size: 12px; line-height: 1.5; color: #c9d1d9; white-space: pre-wrap;
|
|
1122
|
+
overflow-x: auto; max-height: 500px; overflow-y: auto;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
/* Requirements validation */
|
|
1126
|
+
.we-req-list { list-style: none; padding: 0; margin: 8px 0; }
|
|
1127
|
+
.we-req-item {
|
|
1128
|
+
display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 12px;
|
|
1129
|
+
}
|
|
1130
|
+
.we-req-icon { width: 16px; text-align: center; }
|
|
1131
|
+
.we-req-icon.ok { color: #5c940d; }
|
|
1132
|
+
.we-req-icon.missing { color: #e03131; }
|
|
1133
|
+
.we-req-suggestion { font-size: 11px; color: var(--fg-muted, #888); font-style: italic; }
|
|
1134
|
+
|
|
1135
|
+
/* ===== Skill Editor ===== */
|
|
1136
|
+
.we-skill-editor { display: flex; flex-direction: column; gap: 12px; }
|
|
1137
|
+
.we-skill-editor-row { display: flex; gap: 12px; }
|
|
1138
|
+
.we-skill-editor-row > * { flex: 1; }
|
|
1139
|
+
.we-skill-editor-textarea {
|
|
1140
|
+
width: 100%; min-height: 200px; padding: 10px; border-radius: 6px;
|
|
1141
|
+
border: 1px solid var(--border); background: var(--bg); color: var(--fg);
|
|
1142
|
+
font-family: 'SF Mono', 'Fira Code', monospace; font-size: 12px;
|
|
1143
|
+
line-height: 1.5; resize: vertical;
|
|
1144
|
+
}
|
|
1145
|
+
.we-skill-editor-textarea:focus { outline: none; border-color: var(--accent); }
|
|
1146
|
+
|
|
1147
|
+
/* Template cards */
|
|
1148
|
+
.we-template-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; margin: 12px 0; }
|
|
1149
|
+
.we-template-card {
|
|
1150
|
+
padding: 12px; border-radius: 6px; border: 1px solid var(--border);
|
|
1151
|
+
background: var(--bg-lighter, #1e1e2e); cursor: pointer; transition: border-color 0.15s;
|
|
1152
|
+
}
|
|
1153
|
+
.we-template-card:hover { border-color: var(--accent); }
|
|
1154
|
+
.we-template-name { font-size: 12px; font-weight: 600; color: var(--fg); margin-bottom: 4px; }
|
|
1155
|
+
.we-template-desc { font-size: 11px; color: var(--fg-muted, #888); line-height: 1.4; }
|
|
1156
|
+
|
|
1157
|
+
/* Claude Code Skills — grouped, collapsible, searchable */
|
|
1158
|
+
.we-cc-skills { margin-top: 8px; }
|
|
1159
|
+
.we-cc-skills-header {
|
|
1160
|
+
display: flex; align-items: center; gap: 8px;
|
|
1161
|
+
font-size: 13px; font-weight: 600; color: var(--fg);
|
|
1162
|
+
padding: 10px 14px; cursor: pointer; user-select: none;
|
|
1163
|
+
background: var(--bg-lighter, #1e1e2e); border: 1px solid var(--border);
|
|
1164
|
+
border-radius: 8px;
|
|
1165
|
+
}
|
|
1166
|
+
.we-cc-skills-header:hover { border-color: var(--accent); }
|
|
1167
|
+
.we-cc-skills-toggle { font-size: 10px; color: var(--fg-muted); transition: transform 0.15s; }
|
|
1168
|
+
.we-cc-search {
|
|
1169
|
+
margin-left: auto; padding: 4px 8px; font-size: 11px;
|
|
1170
|
+
background: var(--bg, #14141e); border: 1px solid var(--border);
|
|
1171
|
+
border-radius: 4px; color: var(--fg); width: 160px;
|
|
1172
|
+
}
|
|
1173
|
+
.we-cc-search:focus { outline: none; border-color: var(--accent); }
|
|
1174
|
+
.we-cc-search::placeholder { color: #666; }
|
|
1175
|
+
.we-cc-skills-body { padding: 4px 0; }
|
|
1176
|
+
.we-cc-group { margin: 4px 0; }
|
|
1177
|
+
.we-cc-group-header {
|
|
1178
|
+
display: flex; align-items: center; gap: 6px;
|
|
1179
|
+
font-size: 12px; font-weight: 600; color: var(--fg-muted);
|
|
1180
|
+
padding: 6px 14px; cursor: pointer; user-select: none;
|
|
1181
|
+
}
|
|
1182
|
+
.we-cc-group-header:hover { color: var(--fg); }
|
|
1183
|
+
.we-cc-group-toggle { font-size: 9px; color: var(--fg-muted); }
|
|
1184
|
+
.we-cc-group-count { font-weight: 400; color: var(--fg-muted, #666); font-size: 11px; }
|
|
1185
|
+
.we-cc-group-body {
|
|
1186
|
+
display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
1187
|
+
gap: 6px; padding: 4px 14px 8px;
|
|
1188
|
+
}
|
|
1189
|
+
.we-cc-skill-card {
|
|
1190
|
+
padding: 8px 10px; border-radius: 6px;
|
|
1191
|
+
border: 1px solid var(--border); background: var(--bg, #14141e);
|
|
1192
|
+
transition: border-color 0.15s;
|
|
1193
|
+
}
|
|
1194
|
+
.we-cc-skill-card:hover { border-color: var(--accent); }
|
|
1195
|
+
.we-cc-skill-name { font-size: 11px; font-weight: 600; color: var(--fg); margin-bottom: 2px; }
|
|
1196
|
+
.we-cc-skill-desc { font-size: 10px; color: var(--fg-muted, #888); line-height: 1.3; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
|