@assistkick/create 1.2.0 → 1.3.0
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/package.json +2 -1
- package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
- package/templates/assistkick-product-system/packages/backend/src/routes/kanban.ts +4 -4
- package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +49 -2
- package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
- package/templates/assistkick-product-system/packages/backend/src/server.ts +19 -6
- package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
- package/templates/assistkick-product-system/packages/backend/src/services/init.ts +69 -2
- package/templates/assistkick-product-system/packages/backend/src/services/project_service.ts +71 -0
- package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
- package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
- package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +88 -17
- package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.ts +114 -39
- package/templates/assistkick-product-system/packages/backend/src/services/terminal_ws_handler.ts +28 -14
- package/templates/assistkick-product-system/packages/frontend/src/App.tsx +1 -1
- package/templates/assistkick-product-system/packages/frontend/src/api/client.ts +151 -0
- package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
- package/templates/assistkick-product-system/packages/frontend/src/components/KanbanView.tsx +208 -95
- package/templates/assistkick-product-system/packages/frontend/src/components/ProjectSelector.tsx +17 -1
- package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +238 -105
- package/templates/assistkick-product-system/packages/frontend/src/components/Toolbar.tsx +15 -13
- package/templates/assistkick-product-system/packages/frontend/src/constants/graph.ts +1 -0
- package/templates/assistkick-product-system/packages/frontend/src/hooks/useProjects.ts +4 -0
- package/templates/assistkick-product-system/packages/frontend/src/routes/dashboard.tsx +22 -4
- package/templates/assistkick-product-system/packages/frontend/src/styles/index.css +486 -38
- package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
- package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +14 -0
- package/templates/assistkick-product-system/packages/shared/db/schema.ts +5 -0
- package/templates/assistkick-product-system/packages/shared/lib/claude-service.ts +54 -1
- package/templates/assistkick-product-system/packages/shared/lib/git_workflow.ts +25 -0
- package/templates/assistkick-product-system/packages/shared/lib/pipeline-state-store.ts +4 -0
- package/templates/assistkick-product-system/packages/shared/lib/pipeline.ts +329 -89
- package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
- package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
- package/templates/assistkick-product-system/packages/shared/tools/get_kanban.ts +2 -1
- package/templates/assistkick-product-system/packages/shared/tools/move_card.ts +3 -2
- package/templates/assistkick-product-system/packages/shared/tools/update_node.ts +2 -2
- package/templates/assistkick-product-system/tests/kanban.test.ts +1 -1
- package/templates/assistkick-product-system/tests/pipeline_stats_all_cards.test.ts +1 -1
- package/templates/assistkick-product-system/tests/web_terminal.test.ts +189 -150
- package/templates/skills/assistkick-bootstrap/SKILL.md +33 -25
- package/templates/skills/assistkick-code-reviewer/SKILL.md +23 -15
- package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
- package/templates/skills/assistkick-debugger/SKILL.md +30 -22
- package/templates/skills/assistkick-developer/SKILL.md +37 -29
- package/templates/skills/assistkick-interview/SKILL.md +34 -26
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
box-sizing: border-box;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
html, body {
|
|
51
|
+
html, body, #root {
|
|
52
52
|
width: 100%;
|
|
53
53
|
height: 100%;
|
|
54
54
|
overflow: hidden;
|
|
@@ -58,6 +58,19 @@ html, body {
|
|
|
58
58
|
color: var(--text-primary);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
.app-container {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
height: 100%;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.main-content {
|
|
69
|
+
flex: 1;
|
|
70
|
+
overflow: hidden;
|
|
71
|
+
position: relative;
|
|
72
|
+
}
|
|
73
|
+
|
|
61
74
|
/* Toolbar */
|
|
62
75
|
.toolbar {
|
|
63
76
|
display: flex;
|
|
@@ -1193,16 +1206,16 @@ html, body {
|
|
|
1193
1206
|
padding: 16px;
|
|
1194
1207
|
overflow-y: auto;
|
|
1195
1208
|
flex: 1;
|
|
1196
|
-
font-size:
|
|
1209
|
+
font-size: 14px;
|
|
1197
1210
|
line-height: 1.6;
|
|
1198
1211
|
}
|
|
1199
1212
|
|
|
1200
|
-
.panel-body h1 { font-size:
|
|
1201
|
-
.panel-body h2 { font-size:
|
|
1202
|
-
.panel-body h3 { font-size:
|
|
1203
|
-
.panel-body p { margin: 4px 0; color: var(--text-
|
|
1213
|
+
.panel-body h1 { font-size: 18px; margin: 12px 0 8px; color: var(--text-primary); }
|
|
1214
|
+
.panel-body h2 { font-size: 16px; margin: 12px 0 6px; color: var(--text-primary); }
|
|
1215
|
+
.panel-body h3 { font-size: 15px; margin: 10px 0 4px; color: var(--text-primary); }
|
|
1216
|
+
.panel-body p { margin: 4px 0; color: var(--text-primary); }
|
|
1204
1217
|
.panel-body ul { padding-left: 20px; margin: 4px 0; }
|
|
1205
|
-
.panel-body li { color: var(--text-
|
|
1218
|
+
.panel-body li { color: var(--text-primary); margin: 2px 0; }
|
|
1206
1219
|
.panel-body code {
|
|
1207
1220
|
background: var(--bg-tertiary);
|
|
1208
1221
|
padding: 1px 4px;
|
|
@@ -1752,7 +1765,7 @@ html, body {
|
|
|
1752
1765
|
.panel-task-list-toggle {
|
|
1753
1766
|
background: none;
|
|
1754
1767
|
border: none;
|
|
1755
|
-
color: var(--text-
|
|
1768
|
+
color: var(--text-primary);
|
|
1756
1769
|
font-size: 12px;
|
|
1757
1770
|
font-family: var(--font-mono);
|
|
1758
1771
|
cursor: pointer;
|
|
@@ -1790,10 +1803,9 @@ html, body {
|
|
|
1790
1803
|
/* Tool call activity indicators */
|
|
1791
1804
|
.kanban-tool-calls {
|
|
1792
1805
|
display: flex;
|
|
1793
|
-
flex-
|
|
1806
|
+
flex-wrap: wrap;
|
|
1794
1807
|
gap: 2px;
|
|
1795
|
-
|
|
1796
|
-
padding: 2px 8px;
|
|
1808
|
+
padding: 2px 0;
|
|
1797
1809
|
}
|
|
1798
1810
|
|
|
1799
1811
|
.kanban-tool-badge {
|
|
@@ -1805,6 +1817,69 @@ html, body {
|
|
|
1805
1817
|
color: var(--accent-blue, #4dabf7);
|
|
1806
1818
|
}
|
|
1807
1819
|
|
|
1820
|
+
/* Per-stage stats with tabs */
|
|
1821
|
+
.kanban-stage-stats {
|
|
1822
|
+
margin-top: 4px;
|
|
1823
|
+
border-top: 1px solid var(--border-color);
|
|
1824
|
+
padding-top: 2px;
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1827
|
+
.kanban-stage-tabs {
|
|
1828
|
+
display: flex;
|
|
1829
|
+
gap: 0;
|
|
1830
|
+
border-bottom: 1px solid var(--border-color);
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
.kanban-stage-tab {
|
|
1834
|
+
background: none;
|
|
1835
|
+
border: none;
|
|
1836
|
+
border-bottom: 2px solid transparent;
|
|
1837
|
+
color: var(--text-secondary);
|
|
1838
|
+
font-size: 10px;
|
|
1839
|
+
font-family: var(--font-mono);
|
|
1840
|
+
padding: 2px 8px;
|
|
1841
|
+
cursor: pointer;
|
|
1842
|
+
transition: color 0.15s, border-color 0.15s;
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
.kanban-stage-tab:hover {
|
|
1846
|
+
color: var(--text-primary);
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
.kanban-stage-tab.active {
|
|
1850
|
+
color: var(--accent-blue, #4dabf7);
|
|
1851
|
+
border-bottom-color: var(--accent-blue, #4dabf7);
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1854
|
+
.kanban-stage-body {
|
|
1855
|
+
padding: 3px 4px;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
.kanban-stage-meta {
|
|
1859
|
+
display: flex;
|
|
1860
|
+
flex-wrap: wrap;
|
|
1861
|
+
gap: 4px;
|
|
1862
|
+
padding: 2px 0;
|
|
1863
|
+
}
|
|
1864
|
+
|
|
1865
|
+
.kanban-stage-meta-item {
|
|
1866
|
+
font-size: 10px;
|
|
1867
|
+
font-family: var(--font-mono);
|
|
1868
|
+
color: var(--text-secondary);
|
|
1869
|
+
background: rgba(255, 255, 255, 0.05);
|
|
1870
|
+
padding: 1px 4px;
|
|
1871
|
+
border-radius: 3px;
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
.kanban-stage-model {
|
|
1875
|
+
opacity: 0.7;
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
.kanban-stop-reason {
|
|
1879
|
+
color: var(--accent-orange, #ffa94d);
|
|
1880
|
+
background: rgba(255, 169, 77, 0.1);
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1808
1883
|
/* Work Summary (Side Panel) */
|
|
1809
1884
|
.panel-work-summary {
|
|
1810
1885
|
margin-top: 12px;
|
|
@@ -2752,14 +2827,174 @@ html, body {
|
|
|
2752
2827
|
font-size: 14px;
|
|
2753
2828
|
}
|
|
2754
2829
|
|
|
2755
|
-
/* Terminal View */
|
|
2830
|
+
/* Terminal View — multi-session layout */
|
|
2756
2831
|
.terminal-view {
|
|
2757
|
-
flex-direction:
|
|
2832
|
+
flex-direction: row;
|
|
2758
2833
|
height: 100%;
|
|
2759
2834
|
width: 100%;
|
|
2835
|
+
overflow: hidden;
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2838
|
+
/* Sidebar — session list */
|
|
2839
|
+
.terminal-sidebar {
|
|
2840
|
+
display: flex;
|
|
2841
|
+
flex-direction: column;
|
|
2842
|
+
width: 220px;
|
|
2843
|
+
min-width: 220px;
|
|
2844
|
+
border-right: 1px solid var(--border-color);
|
|
2845
|
+
background: var(--bg-secondary);
|
|
2846
|
+
overflow: hidden;
|
|
2847
|
+
}
|
|
2848
|
+
|
|
2849
|
+
.terminal-sidebar-header {
|
|
2850
|
+
padding: 10px 12px;
|
|
2851
|
+
font-size: 11px;
|
|
2852
|
+
font-family: var(--font-mono);
|
|
2853
|
+
text-transform: uppercase;
|
|
2854
|
+
letter-spacing: 0.08em;
|
|
2855
|
+
color: var(--text-muted);
|
|
2856
|
+
border-bottom: 1px solid var(--border-color);
|
|
2857
|
+
flex-shrink: 0;
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
.terminal-session-list {
|
|
2861
|
+
flex: 1;
|
|
2862
|
+
overflow-y: auto;
|
|
2863
|
+
}
|
|
2864
|
+
|
|
2865
|
+
.terminal-no-sessions {
|
|
2866
|
+
padding: 16px 12px;
|
|
2867
|
+
font-size: 12px;
|
|
2868
|
+
color: var(--text-muted);
|
|
2869
|
+
font-family: var(--font-mono);
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
.terminal-session-item {
|
|
2873
|
+
display: flex;
|
|
2874
|
+
flex-direction: column;
|
|
2875
|
+
padding: 8px 10px;
|
|
2876
|
+
cursor: pointer;
|
|
2877
|
+
border-bottom: 1px solid var(--border-color);
|
|
2760
2878
|
position: relative;
|
|
2761
2879
|
}
|
|
2762
2880
|
|
|
2881
|
+
.terminal-session-item:hover {
|
|
2882
|
+
background: var(--tab-hover-bg);
|
|
2883
|
+
}
|
|
2884
|
+
|
|
2885
|
+
.terminal-session-item--active {
|
|
2886
|
+
background: var(--tab-active-bg);
|
|
2887
|
+
border-left: 2px solid var(--accent);
|
|
2888
|
+
padding-left: 8px;
|
|
2889
|
+
}
|
|
2890
|
+
|
|
2891
|
+
.terminal-session-name {
|
|
2892
|
+
font-size: 12px;
|
|
2893
|
+
font-family: var(--font-mono);
|
|
2894
|
+
color: var(--text-primary);
|
|
2895
|
+
white-space: nowrap;
|
|
2896
|
+
overflow: hidden;
|
|
2897
|
+
text-overflow: ellipsis;
|
|
2898
|
+
padding-right: 20px;
|
|
2899
|
+
}
|
|
2900
|
+
|
|
2901
|
+
.terminal-session-project {
|
|
2902
|
+
font-size: 11px;
|
|
2903
|
+
color: var(--text-muted);
|
|
2904
|
+
font-family: var(--font-mono);
|
|
2905
|
+
white-space: nowrap;
|
|
2906
|
+
overflow: hidden;
|
|
2907
|
+
text-overflow: ellipsis;
|
|
2908
|
+
padding-right: 20px;
|
|
2909
|
+
margin-top: 2px;
|
|
2910
|
+
}
|
|
2911
|
+
|
|
2912
|
+
.terminal-session-kill {
|
|
2913
|
+
position: absolute;
|
|
2914
|
+
top: 8px;
|
|
2915
|
+
right: 8px;
|
|
2916
|
+
width: 18px;
|
|
2917
|
+
height: 18px;
|
|
2918
|
+
border: none;
|
|
2919
|
+
background: transparent;
|
|
2920
|
+
color: var(--text-muted);
|
|
2921
|
+
cursor: pointer;
|
|
2922
|
+
font-size: 11px;
|
|
2923
|
+
display: flex;
|
|
2924
|
+
align-items: center;
|
|
2925
|
+
justify-content: center;
|
|
2926
|
+
border-radius: 3px;
|
|
2927
|
+
padding: 0;
|
|
2928
|
+
line-height: 1;
|
|
2929
|
+
}
|
|
2930
|
+
|
|
2931
|
+
.terminal-session-kill:hover {
|
|
2932
|
+
background: var(--error-color);
|
|
2933
|
+
color: #fff;
|
|
2934
|
+
}
|
|
2935
|
+
|
|
2936
|
+
/* New session area at sidebar bottom */
|
|
2937
|
+
.terminal-new-session {
|
|
2938
|
+
display: flex;
|
|
2939
|
+
flex-direction: column;
|
|
2940
|
+
gap: 6px;
|
|
2941
|
+
padding: 10px;
|
|
2942
|
+
border-top: 1px solid var(--border-color);
|
|
2943
|
+
flex-shrink: 0;
|
|
2944
|
+
}
|
|
2945
|
+
|
|
2946
|
+
.terminal-project-picker {
|
|
2947
|
+
width: 100%;
|
|
2948
|
+
padding: 5px 8px;
|
|
2949
|
+
font-size: 12px;
|
|
2950
|
+
font-family: var(--font-mono);
|
|
2951
|
+
background: var(--bg-tertiary);
|
|
2952
|
+
color: var(--text-primary);
|
|
2953
|
+
border: 1px solid var(--border-color);
|
|
2954
|
+
border-radius: 4px;
|
|
2955
|
+
cursor: pointer;
|
|
2956
|
+
}
|
|
2957
|
+
|
|
2958
|
+
.terminal-new-session-btn {
|
|
2959
|
+
width: 100%;
|
|
2960
|
+
padding: 6px 8px;
|
|
2961
|
+
font-size: 12px;
|
|
2962
|
+
font-family: var(--font-mono);
|
|
2963
|
+
background: var(--accent);
|
|
2964
|
+
color: #fff;
|
|
2965
|
+
border: none;
|
|
2966
|
+
border-radius: 4px;
|
|
2967
|
+
cursor: pointer;
|
|
2968
|
+
}
|
|
2969
|
+
|
|
2970
|
+
.terminal-new-session-btn:hover:not(:disabled) {
|
|
2971
|
+
opacity: 0.85;
|
|
2972
|
+
}
|
|
2973
|
+
|
|
2974
|
+
.terminal-new-session-btn:disabled {
|
|
2975
|
+
opacity: 0.5;
|
|
2976
|
+
cursor: not-allowed;
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
/* Right panel — terminal content */
|
|
2980
|
+
.terminal-panel {
|
|
2981
|
+
flex: 1;
|
|
2982
|
+
display: flex;
|
|
2983
|
+
flex-direction: column;
|
|
2984
|
+
min-width: 0;
|
|
2985
|
+
position: relative;
|
|
2986
|
+
}
|
|
2987
|
+
|
|
2988
|
+
.terminal-empty-state {
|
|
2989
|
+
flex: 1;
|
|
2990
|
+
display: flex;
|
|
2991
|
+
align-items: center;
|
|
2992
|
+
justify-content: center;
|
|
2993
|
+
color: var(--text-muted);
|
|
2994
|
+
font-size: 13px;
|
|
2995
|
+
font-family: var(--font-mono);
|
|
2996
|
+
}
|
|
2997
|
+
|
|
2763
2998
|
.terminal-container {
|
|
2764
2999
|
flex: 1;
|
|
2765
3000
|
padding: 4px;
|
|
@@ -2780,6 +3015,7 @@ html, body {
|
|
|
2780
3015
|
color: #1e1e2e;
|
|
2781
3016
|
font-size: 13px;
|
|
2782
3017
|
font-family: var(--font-mono);
|
|
3018
|
+
flex-shrink: 0;
|
|
2783
3019
|
}
|
|
2784
3020
|
|
|
2785
3021
|
.terminal-reconnect-btn {
|
|
@@ -2801,31 +3037,7 @@ html, body {
|
|
|
2801
3037
|
color: var(--text-secondary);
|
|
2802
3038
|
font-size: 13px;
|
|
2803
3039
|
font-family: var(--font-mono);
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
.terminal-overlay {
|
|
2807
|
-
position: absolute;
|
|
2808
|
-
inset: 0;
|
|
2809
|
-
display: flex;
|
|
2810
|
-
align-items: center;
|
|
2811
|
-
justify-content: center;
|
|
2812
|
-
background: rgba(0,0,0,0.6);
|
|
2813
|
-
z-index: 10;
|
|
2814
|
-
}
|
|
2815
|
-
|
|
2816
|
-
.terminal-connect-btn {
|
|
2817
|
-
padding: 12px 24px;
|
|
2818
|
-
border: 1px solid var(--accent);
|
|
2819
|
-
border-radius: 6px;
|
|
2820
|
-
background: var(--accent);
|
|
2821
|
-
color: #fff;
|
|
2822
|
-
font-size: 14px;
|
|
2823
|
-
font-family: var(--font-mono);
|
|
2824
|
-
cursor: pointer;
|
|
2825
|
-
}
|
|
2826
|
-
|
|
2827
|
-
.terminal-connect-btn:hover {
|
|
2828
|
-
opacity: 0.9;
|
|
3040
|
+
flex-shrink: 0;
|
|
2829
3041
|
}
|
|
2830
3042
|
|
|
2831
3043
|
/* Login Page */
|
|
@@ -3356,3 +3568,239 @@ html, body {
|
|
|
3356
3568
|
font-size: 14px;
|
|
3357
3569
|
padding: 12px 0;
|
|
3358
3570
|
}
|
|
3571
|
+
|
|
3572
|
+
/* ===== Git Repo Modal ===== */
|
|
3573
|
+
|
|
3574
|
+
.project-selector-git-btn {
|
|
3575
|
+
color: var(--text-secondary);
|
|
3576
|
+
}
|
|
3577
|
+
|
|
3578
|
+
.project-selector-git-btn.connected {
|
|
3579
|
+
color: var(--accent);
|
|
3580
|
+
}
|
|
3581
|
+
|
|
3582
|
+
.project-selector-git-btn svg {
|
|
3583
|
+
display: block;
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3586
|
+
.git-modal-overlay {
|
|
3587
|
+
position: fixed;
|
|
3588
|
+
top: 0;
|
|
3589
|
+
left: 0;
|
|
3590
|
+
right: 0;
|
|
3591
|
+
bottom: 0;
|
|
3592
|
+
background: rgba(0, 0, 0, 0.5);
|
|
3593
|
+
z-index: 1000;
|
|
3594
|
+
display: flex;
|
|
3595
|
+
align-items: center;
|
|
3596
|
+
justify-content: center;
|
|
3597
|
+
}
|
|
3598
|
+
|
|
3599
|
+
.git-modal {
|
|
3600
|
+
background: var(--bg-secondary);
|
|
3601
|
+
border: 1px solid var(--border-color);
|
|
3602
|
+
border-radius: 8px;
|
|
3603
|
+
width: 480px;
|
|
3604
|
+
max-width: 90vw;
|
|
3605
|
+
max-height: 80vh;
|
|
3606
|
+
overflow-y: auto;
|
|
3607
|
+
box-shadow: 0 8px 32px var(--panel-shadow);
|
|
3608
|
+
font-family: var(--font-mono);
|
|
3609
|
+
font-size: 13px;
|
|
3610
|
+
}
|
|
3611
|
+
|
|
3612
|
+
.git-modal-header {
|
|
3613
|
+
display: flex;
|
|
3614
|
+
justify-content: space-between;
|
|
3615
|
+
align-items: center;
|
|
3616
|
+
padding: 16px 20px 12px;
|
|
3617
|
+
border-bottom: 1px solid var(--border-color);
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
.git-modal-header h3 {
|
|
3621
|
+
margin: 0;
|
|
3622
|
+
font-size: 14px;
|
|
3623
|
+
color: var(--text-primary);
|
|
3624
|
+
font-weight: 600;
|
|
3625
|
+
}
|
|
3626
|
+
|
|
3627
|
+
.git-modal-close {
|
|
3628
|
+
background: none;
|
|
3629
|
+
border: none;
|
|
3630
|
+
color: var(--text-secondary);
|
|
3631
|
+
cursor: pointer;
|
|
3632
|
+
font-size: 18px;
|
|
3633
|
+
padding: 0 4px;
|
|
3634
|
+
line-height: 1;
|
|
3635
|
+
}
|
|
3636
|
+
|
|
3637
|
+
.git-modal-close:hover {
|
|
3638
|
+
color: var(--text-primary);
|
|
3639
|
+
}
|
|
3640
|
+
|
|
3641
|
+
.git-modal-error {
|
|
3642
|
+
padding: 8px 20px;
|
|
3643
|
+
color: var(--error-color);
|
|
3644
|
+
font-size: 12px;
|
|
3645
|
+
background: rgba(255, 107, 107, 0.08);
|
|
3646
|
+
border-bottom: 1px solid var(--border-color);
|
|
3647
|
+
}
|
|
3648
|
+
|
|
3649
|
+
.git-modal-success {
|
|
3650
|
+
padding: 8px 20px;
|
|
3651
|
+
color: #69db7c;
|
|
3652
|
+
font-size: 12px;
|
|
3653
|
+
background: rgba(105, 219, 124, 0.08);
|
|
3654
|
+
border-bottom: 1px solid var(--border-color);
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3657
|
+
.git-modal-tabs {
|
|
3658
|
+
display: flex;
|
|
3659
|
+
border-bottom: 1px solid var(--border-color);
|
|
3660
|
+
padding: 0 16px;
|
|
3661
|
+
}
|
|
3662
|
+
|
|
3663
|
+
.git-modal-tab {
|
|
3664
|
+
background: none;
|
|
3665
|
+
border: none;
|
|
3666
|
+
color: var(--text-secondary);
|
|
3667
|
+
cursor: pointer;
|
|
3668
|
+
font-family: var(--font-mono);
|
|
3669
|
+
font-size: 12px;
|
|
3670
|
+
padding: 10px 12px;
|
|
3671
|
+
border-bottom: 2px solid transparent;
|
|
3672
|
+
}
|
|
3673
|
+
|
|
3674
|
+
.git-modal-tab:hover {
|
|
3675
|
+
color: var(--text-primary);
|
|
3676
|
+
}
|
|
3677
|
+
|
|
3678
|
+
.git-modal-tab.active {
|
|
3679
|
+
color: var(--accent);
|
|
3680
|
+
border-bottom-color: var(--accent);
|
|
3681
|
+
}
|
|
3682
|
+
|
|
3683
|
+
.git-modal-body {
|
|
3684
|
+
padding: 16px 20px;
|
|
3685
|
+
}
|
|
3686
|
+
|
|
3687
|
+
.git-modal-loading {
|
|
3688
|
+
color: var(--text-muted);
|
|
3689
|
+
text-align: center;
|
|
3690
|
+
padding: 20px 0;
|
|
3691
|
+
}
|
|
3692
|
+
|
|
3693
|
+
.git-modal-info {
|
|
3694
|
+
color: var(--text-secondary);
|
|
3695
|
+
font-size: 12px;
|
|
3696
|
+
line-height: 1.5;
|
|
3697
|
+
margin-bottom: 12px;
|
|
3698
|
+
}
|
|
3699
|
+
|
|
3700
|
+
.git-status-row {
|
|
3701
|
+
display: flex;
|
|
3702
|
+
justify-content: space-between;
|
|
3703
|
+
padding: 6px 0;
|
|
3704
|
+
border-bottom: 1px solid var(--border-color);
|
|
3705
|
+
}
|
|
3706
|
+
|
|
3707
|
+
.git-status-label {
|
|
3708
|
+
color: var(--text-secondary);
|
|
3709
|
+
font-size: 12px;
|
|
3710
|
+
}
|
|
3711
|
+
|
|
3712
|
+
.git-status-value {
|
|
3713
|
+
color: var(--text-primary);
|
|
3714
|
+
font-size: 12px;
|
|
3715
|
+
}
|
|
3716
|
+
|
|
3717
|
+
.git-status-value.connected {
|
|
3718
|
+
color: #69db7c;
|
|
3719
|
+
}
|
|
3720
|
+
|
|
3721
|
+
.git-status-url {
|
|
3722
|
+
max-width: 240px;
|
|
3723
|
+
overflow: hidden;
|
|
3724
|
+
text-overflow: ellipsis;
|
|
3725
|
+
white-space: nowrap;
|
|
3726
|
+
}
|
|
3727
|
+
|
|
3728
|
+
.git-modal-label {
|
|
3729
|
+
display: block;
|
|
3730
|
+
color: var(--text-secondary);
|
|
3731
|
+
font-size: 11px;
|
|
3732
|
+
text-transform: uppercase;
|
|
3733
|
+
letter-spacing: 0.05em;
|
|
3734
|
+
margin-bottom: 6px;
|
|
3735
|
+
margin-top: 12px;
|
|
3736
|
+
}
|
|
3737
|
+
|
|
3738
|
+
.git-modal-select {
|
|
3739
|
+
width: 100%;
|
|
3740
|
+
padding: 8px 10px;
|
|
3741
|
+
background: var(--bg-tertiary);
|
|
3742
|
+
border: 1px solid var(--border-color);
|
|
3743
|
+
border-radius: 4px;
|
|
3744
|
+
color: var(--text-primary);
|
|
3745
|
+
font-family: var(--font-mono);
|
|
3746
|
+
font-size: 12px;
|
|
3747
|
+
}
|
|
3748
|
+
|
|
3749
|
+
.git-modal-input {
|
|
3750
|
+
width: 100%;
|
|
3751
|
+
padding: 8px 10px;
|
|
3752
|
+
background: var(--bg-tertiary);
|
|
3753
|
+
border: 1px solid var(--border-color);
|
|
3754
|
+
border-radius: 4px;
|
|
3755
|
+
color: var(--text-primary);
|
|
3756
|
+
font-family: var(--font-mono);
|
|
3757
|
+
font-size: 12px;
|
|
3758
|
+
box-sizing: border-box;
|
|
3759
|
+
}
|
|
3760
|
+
|
|
3761
|
+
.git-modal-input:focus {
|
|
3762
|
+
outline: none;
|
|
3763
|
+
border-color: var(--accent);
|
|
3764
|
+
}
|
|
3765
|
+
|
|
3766
|
+
.git-modal-btn {
|
|
3767
|
+
display: inline-block;
|
|
3768
|
+
padding: 8px 16px;
|
|
3769
|
+
border: 1px solid var(--border-color);
|
|
3770
|
+
border-radius: 4px;
|
|
3771
|
+
background: var(--bg-tertiary);
|
|
3772
|
+
color: var(--text-primary);
|
|
3773
|
+
font-family: var(--font-mono);
|
|
3774
|
+
font-size: 12px;
|
|
3775
|
+
cursor: pointer;
|
|
3776
|
+
margin-top: 12px;
|
|
3777
|
+
}
|
|
3778
|
+
|
|
3779
|
+
.git-modal-btn:hover {
|
|
3780
|
+
background: var(--tab-hover-bg);
|
|
3781
|
+
}
|
|
3782
|
+
|
|
3783
|
+
.git-modal-btn:disabled {
|
|
3784
|
+
opacity: 0.5;
|
|
3785
|
+
cursor: not-allowed;
|
|
3786
|
+
}
|
|
3787
|
+
|
|
3788
|
+
.git-modal-btn-primary {
|
|
3789
|
+
background: var(--accent);
|
|
3790
|
+
color: #fff;
|
|
3791
|
+
border-color: var(--accent);
|
|
3792
|
+
}
|
|
3793
|
+
|
|
3794
|
+
.git-modal-btn-primary:hover {
|
|
3795
|
+
opacity: 0.9;
|
|
3796
|
+
}
|
|
3797
|
+
|
|
3798
|
+
.git-modal-btn-danger {
|
|
3799
|
+
color: var(--error-color);
|
|
3800
|
+
border-color: var(--error-color);
|
|
3801
|
+
margin-top: 16px;
|
|
3802
|
+
}
|
|
3803
|
+
|
|
3804
|
+
.git-modal-btn-danger:hover {
|
|
3805
|
+
background: rgba(255, 107, 107, 0.1);
|
|
3806
|
+
}
|
package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE `pipeline_state` ADD `stage_stats_json` text;
|
package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
ALTER TABLE `projects` ADD `repo_url` text;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE `projects` ADD `github_installation_id` text;--> statement-breakpoint
|
|
3
|
+
ALTER TABLE `projects` ADD `github_repo_full_name` text;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE `projects` ADD `base_branch` text;
|