@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.
Files changed (49) hide show
  1. package/package.json +2 -1
  2. package/templates/assistkick-product-system/packages/backend/src/routes/git.ts +231 -0
  3. package/templates/assistkick-product-system/packages/backend/src/routes/kanban.ts +4 -4
  4. package/templates/assistkick-product-system/packages/backend/src/routes/pipeline.ts +49 -2
  5. package/templates/assistkick-product-system/packages/backend/src/routes/terminal.ts +82 -0
  6. package/templates/assistkick-product-system/packages/backend/src/server.ts +19 -6
  7. package/templates/assistkick-product-system/packages/backend/src/services/github_app_service.ts +146 -0
  8. package/templates/assistkick-product-system/packages/backend/src/services/init.ts +69 -2
  9. package/templates/assistkick-product-system/packages/backend/src/services/project_service.ts +71 -0
  10. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.test.ts +87 -0
  11. package/templates/assistkick-product-system/packages/backend/src/services/project_workspace_service.ts +194 -0
  12. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.test.ts +88 -17
  13. package/templates/assistkick-product-system/packages/backend/src/services/pty_session_manager.ts +114 -39
  14. package/templates/assistkick-product-system/packages/backend/src/services/terminal_ws_handler.ts +28 -14
  15. package/templates/assistkick-product-system/packages/frontend/src/App.tsx +1 -1
  16. package/templates/assistkick-product-system/packages/frontend/src/api/client.ts +151 -0
  17. package/templates/assistkick-product-system/packages/frontend/src/components/GitRepoModal.tsx +352 -0
  18. package/templates/assistkick-product-system/packages/frontend/src/components/KanbanView.tsx +208 -95
  19. package/templates/assistkick-product-system/packages/frontend/src/components/ProjectSelector.tsx +17 -1
  20. package/templates/assistkick-product-system/packages/frontend/src/components/TerminalView.tsx +238 -105
  21. package/templates/assistkick-product-system/packages/frontend/src/components/Toolbar.tsx +15 -13
  22. package/templates/assistkick-product-system/packages/frontend/src/constants/graph.ts +1 -0
  23. package/templates/assistkick-product-system/packages/frontend/src/hooks/useProjects.ts +4 -0
  24. package/templates/assistkick-product-system/packages/frontend/src/routes/dashboard.tsx +22 -4
  25. package/templates/assistkick-product-system/packages/frontend/src/styles/index.css +486 -38
  26. package/templates/assistkick-product-system/packages/shared/db/migrations/0001_vengeful_wallop.sql +1 -0
  27. package/templates/assistkick-product-system/packages/shared/db/migrations/0002_greedy_excalibur.sql +4 -0
  28. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0001_snapshot.json +826 -0
  29. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/0002_snapshot.json +854 -0
  30. package/templates/assistkick-product-system/packages/shared/db/migrations/meta/_journal.json +14 -0
  31. package/templates/assistkick-product-system/packages/shared/db/schema.ts +5 -0
  32. package/templates/assistkick-product-system/packages/shared/lib/claude-service.ts +54 -1
  33. package/templates/assistkick-product-system/packages/shared/lib/git_workflow.ts +25 -0
  34. package/templates/assistkick-product-system/packages/shared/lib/pipeline-state-store.ts +4 -0
  35. package/templates/assistkick-product-system/packages/shared/lib/pipeline.ts +329 -89
  36. package/templates/assistkick-product-system/packages/shared/lib/pipeline_orchestrator.ts +186 -0
  37. package/templates/assistkick-product-system/packages/shared/tools/db_explorer.ts +275 -0
  38. package/templates/assistkick-product-system/packages/shared/tools/get_kanban.ts +2 -1
  39. package/templates/assistkick-product-system/packages/shared/tools/move_card.ts +3 -2
  40. package/templates/assistkick-product-system/packages/shared/tools/update_node.ts +2 -2
  41. package/templates/assistkick-product-system/tests/kanban.test.ts +1 -1
  42. package/templates/assistkick-product-system/tests/pipeline_stats_all_cards.test.ts +1 -1
  43. package/templates/assistkick-product-system/tests/web_terminal.test.ts +189 -150
  44. package/templates/skills/assistkick-bootstrap/SKILL.md +33 -25
  45. package/templates/skills/assistkick-code-reviewer/SKILL.md +23 -15
  46. package/templates/skills/assistkick-db-explorer/SKILL.md +86 -0
  47. package/templates/skills/assistkick-debugger/SKILL.md +30 -22
  48. package/templates/skills/assistkick-developer/SKILL.md +37 -29
  49. 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: 12px;
1209
+ font-size: 14px;
1197
1210
  line-height: 1.6;
1198
1211
  }
1199
1212
 
1200
- .panel-body h1 { font-size: 16px; margin: 12px 0 8px; color: var(--text-primary); }
1201
- .panel-body h2 { font-size: 14px; margin: 12px 0 6px; color: var(--text-primary); }
1202
- .panel-body h3 { font-size: 13px; margin: 10px 0 4px; color: var(--text-primary); }
1203
- .panel-body p { margin: 4px 0; color: var(--text-secondary); }
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-secondary); margin: 2px 0; }
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-secondary);
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-direction: column;
1806
+ flex-wrap: wrap;
1794
1807
  gap: 2px;
1795
- margin-top: 2px;
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: column;
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
+ }
@@ -0,0 +1 @@
1
+ ALTER TABLE `pipeline_state` ADD `stage_stats_json` text;
@@ -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;