@syke1/mcp-server 1.4.0 → 1.4.1

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.
@@ -120,6 +120,34 @@
120
120
  </div>
121
121
  </section>
122
122
 
123
+ <!-- Tree Resize Handle -->
124
+ <div id="tree-resize-handle"></div>
125
+
126
+ <!-- File Tree Panel -->
127
+ <aside id="file-tree-panel">
128
+ <div id="tree-header">
129
+ <div class="tree-title-row">
130
+ <span class="tree-title">FILE TREE</span>
131
+ <span id="tree-file-count" class="tree-count">0</span>
132
+ </div>
133
+ <div id="tree-search-bar">
134
+ <input type="text" id="tree-search-input" placeholder="FILTER FILES...">
135
+ <button id="tree-sort-btn" class="tree-tool-btn">SORT</button>
136
+ <div id="tree-sort-menu" class="hidden">
137
+ <div class="tree-sort-option active" data-sort="name">BY NAME</div>
138
+ <div class="tree-sort-option" data-sort="layer">BY LAYER</div>
139
+ <div class="tree-sort-option" data-sort="risk">BY RISK</div>
140
+ <div class="tree-sort-option" data-sort="deps">BY DEPS</div>
141
+ <div class="tree-sort-option" data-sort="modified">BY RECENT</div>
142
+ </div>
143
+ <button id="tree-collapse-all" class="tree-tool-btn" title="Toggle expand">&#9660;</button>
144
+ </div>
145
+ </div>
146
+ <div id="tree-scroll-container">
147
+ <div id="tree-content"></div>
148
+ </div>
149
+ </aside>
150
+
123
151
  <!-- Resize Handle -->
124
152
  <div id="resize-handle"></div>
125
153
 
@@ -266,6 +294,20 @@
266
294
  <div class="set-row"><label>Reset Distance</label><input type="range" id="set-cam-resetDistance" min="500" max="5000" step="100"><span class="set-val"></span></div>
267
295
  </div>
268
296
 
297
+ <!-- FILE TREE -->
298
+ <div class="set-section-hdr"><span class="set-arrow open">&#9654;</span> FILE TREE <button class="set-rst-btn" data-group="fileTree">RST</button></div>
299
+ <div class="set-section-body">
300
+ <div class="set-row"><label>Panel Width</label><input type="range" id="set-ft-panelWidth" min="200" max="500" step="10"><span class="set-val"></span></div>
301
+ <div class="set-row"><label>Font Size</label><input type="range" id="set-ft-fontSize" min="9" max="14" step="1"><span class="set-val"></span></div>
302
+ <div class="set-row"><label>Indent Size</label><input type="range" id="set-ft-indentSize" min="8" max="24" step="2"><span class="set-val"></span></div>
303
+ <div class="set-row"><label>Pulse Duration</label><input type="range" id="set-ft-pulseDuration" min="2" max="10" step="1"><span class="set-val"></span></div>
304
+ <div class="set-row set-row-checkbox"><label>Show Line Count</label><input type="checkbox" id="set-ft-showLineCount"><span class="set-val"></span></div>
305
+ <div class="set-row set-row-checkbox"><label>Show Deps</label><input type="checkbox" id="set-ft-showDeps"><span class="set-val"></span></div>
306
+ <div class="set-row set-row-checkbox"><label>Show Risk</label><input type="checkbox" id="set-ft-showRisk"><span class="set-val"></span></div>
307
+ <div class="set-row set-row-checkbox"><label>Auto-scroll</label><input type="checkbox" id="set-ft-autoScrollOnChange"><span class="set-val"></span></div>
308
+ <div class="set-row set-row-checkbox"><label>Compact Mode</label><input type="checkbox" id="set-ft-compactMode"><span class="set-val"></span></div>
309
+ </div>
310
+
269
311
  <!-- ADVANCED (collapsed by default) -->
270
312
  <div class="set-section-hdr"><span class="set-arrow">&#9654;</span> ADVANCED <button class="set-rst-btn" data-group="physics">RST</button></div>
271
313
  <div class="set-section-body collapsed">
@@ -355,6 +397,7 @@
355
397
  <div class="shortcut-row"><kbd>F</kbd><span>Focus on selected</span></div>
356
398
  <div class="shortcut-row"><kbd>C</kbd><span>View code</span></div>
357
399
  <div class="shortcut-row"><kbd>S</kbd><span>Simulate deletion</span></div>
400
+ <div class="shortcut-row"><kbd>T</kbd><span>Toggle file tree</span></div>
358
401
  <div class="shortcut-row"><kbd>D</kbd><span>Detect cycles</span></div>
359
402
  <div class="shortcut-row"><kbd>?</kbd><span>Show shortcuts</span></div>
360
403
  <div class="shortcut-row"><kbd>Esc</kbd><span>Deselect / Close</span></div>
@@ -1207,7 +1207,7 @@ main {
1207
1207
  position: fixed;
1208
1208
  bottom: 0;
1209
1209
  left: 0;
1210
- right: 380px;
1210
+ right: var(--right-offset, 380px);
1211
1211
  background: var(--bg-secondary);
1212
1212
  border-top: 1px solid var(--border);
1213
1213
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
@@ -2297,7 +2297,7 @@ main {
2297
2297
  position: fixed;
2298
2298
  bottom: 0;
2299
2299
  left: 0;
2300
- right: 380px;
2300
+ right: var(--right-offset, 380px);
2301
2301
  height: 28px;
2302
2302
  background: rgba(5, 10, 24, 0.85);
2303
2303
  border-top: 1px solid rgba(0, 212, 255, 0.1);
@@ -2553,3 +2553,565 @@ main {
2553
2553
  border: none;
2554
2554
  border-radius: 1px;
2555
2555
  }
2556
+
2557
+ /* ═══════════════════════════════════════════ */
2558
+ /* FILE TREE PANEL */
2559
+ /* ═══════════════════════════════════════════ */
2560
+
2561
+ /* Tree Resize Handle (identical pattern to #resize-handle) */
2562
+ #tree-resize-handle {
2563
+ width: 8px;
2564
+ cursor: col-resize;
2565
+ background: var(--bg-secondary);
2566
+ position: relative;
2567
+ flex-shrink: 0;
2568
+ z-index: 20;
2569
+ transition: background 0.2s;
2570
+ border-left: 1px solid var(--border);
2571
+ border-right: 1px solid var(--border);
2572
+ }
2573
+
2574
+ #tree-resize-handle::before {
2575
+ content: '';
2576
+ position: absolute;
2577
+ top: 50%;
2578
+ left: 50%;
2579
+ transform: translate(-50%, -50%);
2580
+ width: 2px;
2581
+ height: 48px;
2582
+ border-radius: 2px;
2583
+ background: var(--text-secondary);
2584
+ opacity: 0.5;
2585
+ transition: all 0.2s;
2586
+ }
2587
+
2588
+ #tree-resize-handle:hover {
2589
+ background: rgba(0, 212, 255, 0.08);
2590
+ border-color: var(--accent-dim);
2591
+ }
2592
+
2593
+ #tree-resize-handle:hover::before {
2594
+ background: var(--accent);
2595
+ height: 64px;
2596
+ opacity: 1;
2597
+ box-shadow: var(--glow-cyan);
2598
+ }
2599
+
2600
+ #tree-resize-handle.dragging {
2601
+ background: rgba(0, 212, 255, 0.12);
2602
+ border-color: var(--accent);
2603
+ }
2604
+
2605
+ #tree-resize-handle.dragging::before {
2606
+ background: var(--accent);
2607
+ height: 100%;
2608
+ opacity: 1;
2609
+ box-shadow: var(--glow-cyan);
2610
+ }
2611
+
2612
+ /* File Tree Panel */
2613
+ #file-tree-panel {
2614
+ flex: 0 0 280px;
2615
+ width: 280px;
2616
+ display: flex;
2617
+ flex-direction: column;
2618
+ background: var(--bg-secondary);
2619
+ border-left: 1px solid var(--border);
2620
+ border-right: 1px solid var(--border);
2621
+ overflow: hidden;
2622
+ position: relative;
2623
+ font-family: 'Consolas', 'JetBrains Mono', monospace;
2624
+ }
2625
+
2626
+ #file-tree-panel.hidden {
2627
+ display: none;
2628
+ }
2629
+
2630
+ #file-tree-panel::before {
2631
+ content: '';
2632
+ position: absolute;
2633
+ top: 0; left: -1px;
2634
+ width: 1px;
2635
+ height: 100%;
2636
+ background: linear-gradient(180deg, var(--accent) 0%, transparent 30%, transparent 70%, var(--accent) 100%);
2637
+ opacity: 0.2;
2638
+ }
2639
+
2640
+ /* Tree Header */
2641
+ #tree-header {
2642
+ padding: 10px 12px 8px;
2643
+ border-bottom: 1px solid var(--border);
2644
+ flex-shrink: 0;
2645
+ }
2646
+
2647
+ .tree-title-row {
2648
+ display: flex;
2649
+ align-items: center;
2650
+ justify-content: space-between;
2651
+ margin-bottom: 8px;
2652
+ }
2653
+
2654
+ .tree-title {
2655
+ font-size: 10px;
2656
+ font-weight: 700;
2657
+ color: var(--accent);
2658
+ letter-spacing: 3px;
2659
+ }
2660
+
2661
+ .tree-count {
2662
+ font-size: 9px;
2663
+ color: var(--text-secondary);
2664
+ background: rgba(0,212,255,0.08);
2665
+ border: 1px solid var(--border);
2666
+ border-radius: 2px;
2667
+ padding: 1px 6px;
2668
+ font-variant-numeric: tabular-nums;
2669
+ }
2670
+
2671
+ /* Tree Search Bar */
2672
+ #tree-search-bar {
2673
+ display: flex;
2674
+ gap: 4px;
2675
+ align-items: center;
2676
+ position: relative;
2677
+ }
2678
+
2679
+ #tree-search-input {
2680
+ flex: 1;
2681
+ padding: 4px 8px;
2682
+ background: rgba(0,0,0,0.3);
2683
+ color: var(--accent);
2684
+ border: 1px solid var(--border);
2685
+ border-radius: 2px;
2686
+ font-size: 10px;
2687
+ font-family: inherit;
2688
+ letter-spacing: 1px;
2689
+ outline: none;
2690
+ transition: border-color 0.2s;
2691
+ }
2692
+
2693
+ #tree-search-input::placeholder {
2694
+ color: var(--text-secondary);
2695
+ letter-spacing: 2px;
2696
+ font-size: 9px;
2697
+ }
2698
+
2699
+ #tree-search-input:focus {
2700
+ border-color: var(--accent);
2701
+ box-shadow: var(--glow-cyan);
2702
+ }
2703
+
2704
+ .tree-tool-btn {
2705
+ padding: 3px 8px;
2706
+ background: transparent;
2707
+ color: var(--text-secondary);
2708
+ border: 1px solid var(--border);
2709
+ border-radius: 2px;
2710
+ cursor: pointer;
2711
+ font-size: 9px;
2712
+ font-family: inherit;
2713
+ font-weight: 600;
2714
+ letter-spacing: 1px;
2715
+ transition: all 0.2s;
2716
+ }
2717
+
2718
+ .tree-tool-btn:hover {
2719
+ color: var(--accent);
2720
+ border-color: var(--accent);
2721
+ }
2722
+
2723
+ /* Sort Dropdown Menu */
2724
+ #tree-sort-menu {
2725
+ position: absolute;
2726
+ top: 100%;
2727
+ right: 32px;
2728
+ margin-top: 4px;
2729
+ background: rgba(10,22,40,0.97);
2730
+ border: 1px solid var(--accent-dim);
2731
+ border-radius: 3px;
2732
+ z-index: 100;
2733
+ box-shadow: var(--glow-cyan), 0 8px 24px rgba(0,0,0,0.5);
2734
+ backdrop-filter: blur(8px);
2735
+ min-width: 120px;
2736
+ }
2737
+
2738
+ #tree-sort-menu.hidden { display: none; }
2739
+
2740
+ .tree-sort-option {
2741
+ padding: 6px 12px;
2742
+ font-size: 9px;
2743
+ letter-spacing: 2px;
2744
+ color: var(--text-primary);
2745
+ cursor: pointer;
2746
+ transition: all 0.15s;
2747
+ }
2748
+
2749
+ .tree-sort-option:hover {
2750
+ background: rgba(0,212,255,0.12);
2751
+ color: var(--accent);
2752
+ }
2753
+
2754
+ .tree-sort-option.active {
2755
+ color: var(--accent);
2756
+ background: rgba(0,212,255,0.06);
2757
+ }
2758
+
2759
+ /* Tree Scroll Container */
2760
+ #tree-scroll-container {
2761
+ flex: 1;
2762
+ overflow-y: auto;
2763
+ overflow-x: hidden;
2764
+ }
2765
+
2766
+ #tree-scroll-container::-webkit-scrollbar { width: 4px; }
2767
+ #tree-scroll-container::-webkit-scrollbar-track { background: transparent; }
2768
+ #tree-scroll-container::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
2769
+ #tree-scroll-container::-webkit-scrollbar-thumb:hover { background: var(--accent-dim); }
2770
+
2771
+ /* Tree Content */
2772
+ #tree-content {
2773
+ padding: 6px 0 6px 0;
2774
+ }
2775
+
2776
+ /* ═══════════════════════════════════════════ */
2777
+ /* METRO RAIL TREE (GitKraken-style) */
2778
+ /* ═══════════════════════════════════════════ */
2779
+
2780
+ /* ── Tree Group: wraps sibling nodes, draws vertical rail line ── */
2781
+ .tree-group {
2782
+ position: relative;
2783
+ margin-left: 16px;
2784
+ }
2785
+
2786
+ #tree-content > .tree-group {
2787
+ margin-left: 4px;
2788
+ }
2789
+
2790
+ /* Vertical rail line spanning entire group */
2791
+ .tree-group::before {
2792
+ content: '';
2793
+ position: absolute;
2794
+ left: 11px;
2795
+ top: 14px;
2796
+ bottom: 14px;
2797
+ width: 2px;
2798
+ background: linear-gradient(180deg,
2799
+ rgba(0,212,255,0.08),
2800
+ rgba(0,212,255,0.22) 15%,
2801
+ rgba(0,212,255,0.22) 85%,
2802
+ rgba(0,212,255,0.08)
2803
+ );
2804
+ border-radius: 1px;
2805
+ z-index: 1;
2806
+ }
2807
+
2808
+ /* Subtle glow on the line */
2809
+ .tree-group::after {
2810
+ content: '';
2811
+ position: absolute;
2812
+ left: 9px;
2813
+ top: 14px;
2814
+ bottom: 14px;
2815
+ width: 6px;
2816
+ background: rgba(0,212,255,0.04);
2817
+ border-radius: 3px;
2818
+ z-index: 0;
2819
+ filter: blur(2px);
2820
+ }
2821
+
2822
+ .tree-group.single-child::before,
2823
+ .tree-group.single-child::after {
2824
+ display: none;
2825
+ }
2826
+
2827
+ /* ── Tree Node (file/folder row) ── */
2828
+ .tree-node {
2829
+ display: flex;
2830
+ align-items: center;
2831
+ position: relative;
2832
+ min-height: 30px;
2833
+ padding-left: 30px;
2834
+ padding-right: 8px;
2835
+ cursor: pointer;
2836
+ transition: all 0.15s;
2837
+ font-size: 11px;
2838
+ color: var(--text-primary);
2839
+ border-right: 2px solid transparent;
2840
+ }
2841
+
2842
+ .tree-node:hover {
2843
+ background: rgba(0,212,255,0.06);
2844
+ }
2845
+
2846
+ .tree-node:hover .tree-name {
2847
+ color: var(--accent);
2848
+ }
2849
+
2850
+ .tree-node.selected {
2851
+ background: rgba(0,212,255,0.1);
2852
+ border-right-color: var(--accent);
2853
+ }
2854
+
2855
+ .tree-node.compact {
2856
+ min-height: 24px;
2857
+ }
2858
+
2859
+ /* ── The Dot: sits ON the vertical rail line ── */
2860
+ .tree-dot {
2861
+ position: absolute;
2862
+ left: 5px;
2863
+ top: 50%;
2864
+ transform: translateY(-50%);
2865
+ width: 12px;
2866
+ height: 12px;
2867
+ border-radius: 50%;
2868
+ border: 2.5px solid var(--bg-secondary);
2869
+ z-index: 3;
2870
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
2871
+ }
2872
+
2873
+ /* File dots: filled solid */
2874
+ .tree-node[data-type="file"] .tree-dot {
2875
+ /* background + box-shadow set inline via style attr */
2876
+ }
2877
+
2878
+ /* Folder dots: hollow ring with glow */
2879
+ .tree-node[data-type="folder"] .tree-dot {
2880
+ background: var(--bg-secondary) !important;
2881
+ border-width: 2.5px;
2882
+ }
2883
+
2884
+ /* Hover: dot grows + stronger glow */
2885
+ .tree-node:hover .tree-dot {
2886
+ transform: translateY(-50%) scale(1.35);
2887
+ }
2888
+
2889
+ /* Selected: dot pulses */
2890
+ .tree-node.selected .tree-dot {
2891
+ transform: translateY(-50%) scale(1.4);
2892
+ border-color: var(--bg-primary);
2893
+ }
2894
+
2895
+ /* ── Folder toggle arrow (after dot, before name) ── */
2896
+ .tree-toggle {
2897
+ display: inline-flex;
2898
+ align-items: center;
2899
+ justify-content: center;
2900
+ width: 14px;
2901
+ height: 14px;
2902
+ font-size: 7px;
2903
+ color: var(--text-secondary);
2904
+ transition: transform 0.2s ease, color 0.15s;
2905
+ flex-shrink: 0;
2906
+ user-select: none;
2907
+ margin-right: 2px;
2908
+ }
2909
+
2910
+ .tree-toggle.open {
2911
+ transform: rotate(90deg);
2912
+ }
2913
+
2914
+ .tree-node:hover .tree-toggle {
2915
+ color: var(--accent);
2916
+ }
2917
+
2918
+ /* ── Tree node name ── */
2919
+ .tree-name {
2920
+ flex: 1;
2921
+ overflow: hidden;
2922
+ text-overflow: ellipsis;
2923
+ white-space: nowrap;
2924
+ transition: color 0.15s;
2925
+ }
2926
+
2927
+ .tree-name.folder-name {
2928
+ font-weight: 600;
2929
+ color: var(--text-secondary);
2930
+ letter-spacing: 0.3px;
2931
+ }
2932
+
2933
+ .tree-node:hover .tree-name.folder-name {
2934
+ color: var(--accent);
2935
+ }
2936
+
2937
+ /* Folder file count badge */
2938
+ .tree-folder-count {
2939
+ font-size: 8px;
2940
+ color: var(--text-secondary);
2941
+ margin-left: 6px;
2942
+ padding: 0 5px;
2943
+ background: rgba(0,212,255,0.06);
2944
+ border: 1px solid rgba(26,45,77,0.4);
2945
+ border-radius: 8px;
2946
+ font-variant-numeric: tabular-nums;
2947
+ flex-shrink: 0;
2948
+ opacity: 0.7;
2949
+ }
2950
+
2951
+ /* ── Badges ── */
2952
+ .tree-badge {
2953
+ font-size: 8px;
2954
+ padding: 0 4px;
2955
+ border-radius: 2px;
2956
+ margin-left: 4px;
2957
+ font-weight: 700;
2958
+ letter-spacing: 0.5px;
2959
+ flex-shrink: 0;
2960
+ }
2961
+
2962
+ .tree-badge.badge-deps {
2963
+ color: var(--text-secondary);
2964
+ background: rgba(90,117,153,0.15);
2965
+ }
2966
+
2967
+ .tree-badge.badge-lines {
2968
+ color: var(--text-secondary);
2969
+ background: rgba(90,117,153,0.15);
2970
+ }
2971
+
2972
+ .tree-badge.badge-risk-HIGH {
2973
+ color: var(--risk-high);
2974
+ background: rgba(255,45,85,0.15);
2975
+ }
2976
+
2977
+ .tree-badge.badge-risk-MEDIUM {
2978
+ color: var(--risk-medium);
2979
+ background: rgba(255,159,10,0.15);
2980
+ }
2981
+
2982
+ .tree-badge.badge-risk-LOW {
2983
+ color: var(--risk-low);
2984
+ background: rgba(48,209,88,0.15);
2985
+ }
2986
+
2987
+ .tree-badge.badge-risk-NONE {
2988
+ color: var(--risk-none);
2989
+ background: rgba(58,79,111,0.1);
2990
+ }
2991
+
2992
+ /* Modification status badges */
2993
+ .tree-mod-badge {
2994
+ font-size: 8px;
2995
+ font-weight: 700;
2996
+ padding: 0 5px;
2997
+ border-radius: 2px;
2998
+ margin-left: 4px;
2999
+ letter-spacing: 0.5px;
3000
+ flex-shrink: 0;
3001
+ }
3002
+
3003
+ .tree-mod-badge.mod-M {
3004
+ color: var(--risk-medium);
3005
+ background: rgba(255,159,10,0.2);
3006
+ }
3007
+
3008
+ .tree-mod-badge.mod-A {
3009
+ color: var(--risk-low);
3010
+ background: rgba(48,209,88,0.2);
3011
+ }
3012
+
3013
+ .tree-mod-badge.mod-D {
3014
+ color: var(--risk-high);
3015
+ background: rgba(255,45,85,0.2);
3016
+ }
3017
+
3018
+ /* ── Modified file: white pulse animation ── */
3019
+ @keyframes tree-file-pulse {
3020
+ 0%, 100% {
3021
+ text-shadow: 0 0 6px rgba(255,255,255,0.3);
3022
+ }
3023
+ 50% {
3024
+ text-shadow: 0 0 14px rgba(255,255,255,0.7);
3025
+ }
3026
+ }
3027
+
3028
+ @keyframes tree-dot-pulse {
3029
+ 0%, 100% {
3030
+ transform: translateY(-50%) scale(1);
3031
+ box-shadow: 0 0 8px rgba(255,255,255,0.4);
3032
+ }
3033
+ 50% {
3034
+ transform: translateY(-50%) scale(1.5);
3035
+ box-shadow: 0 0 16px rgba(255,255,255,0.8);
3036
+ }
3037
+ }
3038
+
3039
+ .tree-node.modified {
3040
+ color: #ffffff;
3041
+ animation: tree-file-pulse 1.5s ease-in-out infinite;
3042
+ }
3043
+
3044
+ .tree-node.modified .tree-name {
3045
+ color: #ffffff;
3046
+ font-weight: 700;
3047
+ }
3048
+
3049
+ .tree-node.modified .tree-dot {
3050
+ background: #ffffff !important;
3051
+ border-color: rgba(255,255,255,0.6) !important;
3052
+ animation: tree-dot-pulse 1.5s ease-in-out infinite;
3053
+ }
3054
+
3055
+ /* Folder glow when child is modified */
3056
+ .tree-node.folder-glow .tree-dot {
3057
+ box-shadow: 0 0 10px rgba(255,255,255,0.3) !important;
3058
+ }
3059
+
3060
+ .tree-node.folder-glow .tree-name {
3061
+ color: rgba(255,255,255,0.6);
3062
+ }
3063
+
3064
+ /* ── Rail line glow when group has modifications ── */
3065
+ .tree-group.has-modified::before {
3066
+ background: linear-gradient(180deg,
3067
+ rgba(0,212,255,0.08),
3068
+ rgba(255,255,255,0.3) 15%,
3069
+ rgba(255,255,255,0.3) 85%,
3070
+ rgba(0,212,255,0.08)
3071
+ );
3072
+ }
3073
+
3074
+ /* ── Checkbox styling for SET panel ── */
3075
+ .set-row-checkbox {
3076
+ justify-content: space-between;
3077
+ }
3078
+
3079
+ .set-row-checkbox input[type="checkbox"] {
3080
+ -webkit-appearance: none;
3081
+ appearance: none;
3082
+ width: 32px;
3083
+ height: 16px;
3084
+ border-radius: 8px;
3085
+ background: var(--border);
3086
+ position: relative;
3087
+ cursor: pointer;
3088
+ transition: all 0.2s;
3089
+ flex-shrink: 0;
3090
+ }
3091
+
3092
+ .set-row-checkbox input[type="checkbox"]::before {
3093
+ content: '';
3094
+ position: absolute;
3095
+ top: 2px;
3096
+ left: 2px;
3097
+ width: 12px;
3098
+ height: 12px;
3099
+ border-radius: 50%;
3100
+ background: var(--text-secondary);
3101
+ transition: all 0.2s;
3102
+ }
3103
+
3104
+ .set-row-checkbox input[type="checkbox"]:checked {
3105
+ background: rgba(0,212,255,0.3);
3106
+ border-color: var(--accent);
3107
+ }
3108
+
3109
+ .set-row-checkbox input[type="checkbox"]:checked::before {
3110
+ left: 18px;
3111
+ background: var(--accent);
3112
+ box-shadow: 0 0 6px rgba(0,212,255,0.5);
3113
+ }
3114
+
3115
+ .set-row-checkbox .set-val {
3116
+ display: none;
3117
+ }
@@ -746,6 +746,7 @@ function createWebServer(getGraphFn, initialFileCache, switchProjectFn, getProje
746
746
  fileCount: graph.files.size,
747
747
  edgeCount,
748
748
  plan: license?.plan || "free",
749
+ planSource: license?.source || "default",
749
750
  expiresAt: license?.expiresAt || null,
750
751
  freeFileLimit: 50,
751
752
  sykeVersion,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syke1/mcp-server",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "mcpName": "io.github.khalomsky/syke",
5
5
  "description": "AI code impact analysis MCP server — dependency graphs, cascade detection, and a mandatory build gate for AI coding agents",
6
6
  "main": "dist/index.js",