memorix 1.0.7 → 1.0.9

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.
@@ -671,6 +671,8 @@ body {
671
671
  .graph-layout {
672
672
  display: flex;
673
673
  gap: 0;
674
+ flex: 1 1 auto;
675
+ min-height: 0;
674
676
  height: calc(100vh - 140px);
675
677
  border: 1px solid var(--border-subtle);
676
678
  border-radius: var(--radius-lg);
@@ -881,6 +883,8 @@ body {
881
883
  #cytoscape-mount {
882
884
  flex: 1;
883
885
  min-height: 0;
886
+ height: 100%;
887
+ overflow: hidden;
884
888
  }
885
889
 
886
890
  .graph-status-bar {
@@ -1083,6 +1087,48 @@ body {
1083
1087
  color: var(--accent-purple);
1084
1088
  }
1085
1089
 
1090
+ /* ── Knowledge Graph Page Shell ──────────────────────────── */
1091
+ .kg-page-shell {
1092
+ display: flex;
1093
+ flex-direction: column;
1094
+ height: 100%;
1095
+ overflow: hidden;
1096
+ }
1097
+
1098
+ .kg-page-shell .page-header {
1099
+ flex-shrink: 0;
1100
+ padding: 16px 20px 8px;
1101
+ }
1102
+
1103
+ .kg-page-shell .graph-layout {
1104
+ flex: 1;
1105
+ min-height: 0;
1106
+ }
1107
+
1108
+ @media (max-width: 768px) {
1109
+ .kg-page-shell .graph-layout {
1110
+ flex-direction: column;
1111
+ height: auto;
1112
+ min-height: 60vh;
1113
+ }
1114
+ .kg-page-shell .graph-filter-panel {
1115
+ width: 100% !important;
1116
+ max-height: 180px;
1117
+ border-right: none;
1118
+ border-bottom: 1px solid var(--border-subtle);
1119
+ flex-shrink: 0;
1120
+ }
1121
+ .kg-page-shell .graph-inspector {
1122
+ width: 100% !important;
1123
+ max-height: 200px;
1124
+ border-left: none;
1125
+ border-top: 1px solid var(--border-subtle);
1126
+ }
1127
+ .kg-page-shell #graph-container {
1128
+ min-height: 300px;
1129
+ }
1130
+ }
1131
+
1086
1132
  /* ── Graph Tooltip ────────────────────────────────────────── */
1087
1133
  .graph-tooltip {
1088
1134
  position: absolute;
@@ -2706,6 +2752,623 @@ mark {
2706
2752
  color: var(--accent-green);
2707
2753
  }
2708
2754
 
2755
+ #page-knowledge.page.active,
2756
+ #page-graph.page.active {
2757
+ display: flex;
2758
+ flex-direction: column;
2759
+ height: 100%;
2760
+ min-height: 0;
2761
+ padding: 24px 28px;
2762
+ box-sizing: border-box;
2763
+ overflow: hidden;
2764
+ }
2765
+
2766
+ .knowledge-page-shell {
2767
+ display: flex;
2768
+ flex-direction: column;
2769
+ flex: 1 1 auto;
2770
+ min-height: 0;
2771
+ width: 100%;
2772
+ gap: 14px;
2773
+ }
2774
+
2775
+ .knowledge-topbar {
2776
+ display: flex;
2777
+ flex-direction: column;
2778
+ gap: 14px;
2779
+ flex: 0 0 auto;
2780
+ }
2781
+
2782
+ .knowledge-header {
2783
+ display: flex;
2784
+ align-items: flex-start;
2785
+ justify-content: space-between;
2786
+ gap: 24px;
2787
+ margin-bottom: 0;
2788
+ }
2789
+
2790
+ .knowledge-title-block {
2791
+ min-width: 0;
2792
+ flex: 1 1 auto;
2793
+ }
2794
+
2795
+ .knowledge-title-block .page-title {
2796
+ margin-bottom: 4px;
2797
+ font-size: 22px;
2798
+ letter-spacing: -0.3px;
2799
+ }
2800
+
2801
+ .knowledge-title-block .page-subtitle {
2802
+ font-size: 13px;
2803
+ }
2804
+
2805
+ .knowledge-project-line {
2806
+ display: inline-block;
2807
+ max-width: min(760px, 100%);
2808
+ margin-top: 8px;
2809
+ padding: 4px 10px;
2810
+ border: 1px solid var(--border-subtle);
2811
+ border-radius: var(--radius-pill);
2812
+ background: var(--bg-surface);
2813
+ color: var(--text-muted);
2814
+ font-family: var(--font-mono);
2815
+ font-size: 11px;
2816
+ white-space: nowrap;
2817
+ overflow: hidden;
2818
+ text-overflow: ellipsis;
2819
+ vertical-align: top;
2820
+ }
2821
+
2822
+ .knowledge-generated {
2823
+ flex-shrink: 0;
2824
+ min-width: 160px;
2825
+ padding: 8px 12px;
2826
+ border: 1px solid var(--border-subtle);
2827
+ border-radius: var(--radius-md);
2828
+ background: var(--bg-surface);
2829
+ }
2830
+
2831
+ .knowledge-generated span {
2832
+ display: block;
2833
+ margin-bottom: 2px;
2834
+ color: var(--text-muted);
2835
+ font-size: 10px;
2836
+ font-weight: 600;
2837
+ letter-spacing: 0.04em;
2838
+ text-transform: uppercase;
2839
+ }
2840
+
2841
+ .knowledge-generated strong {
2842
+ display: block;
2843
+ color: var(--text-secondary);
2844
+ font-family: var(--font-mono);
2845
+ font-size: 12px;
2846
+ font-weight: 500;
2847
+ line-height: 1.4;
2848
+ }
2849
+
2850
+ .knowledge-stats-grid {
2851
+ display: grid;
2852
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2853
+ gap: 12px;
2854
+ margin-bottom: 0;
2855
+ }
2856
+
2857
+ #page-knowledge .knowledge-stats-grid .stat-card {
2858
+ padding: 14px 16px;
2859
+ border-radius: var(--radius-md);
2860
+ box-shadow: none;
2861
+ }
2862
+
2863
+ #page-knowledge .knowledge-stats-grid .stat-card:hover {
2864
+ transform: none;
2865
+ box-shadow: var(--elevation-1);
2866
+ }
2867
+
2868
+ #page-knowledge .knowledge-stats-grid .stat-label {
2869
+ margin-bottom: 6px;
2870
+ font-size: 10px;
2871
+ letter-spacing: 0.6px;
2872
+ }
2873
+
2874
+ #page-knowledge .knowledge-stats-grid .stat-value {
2875
+ font-size: 24px;
2876
+ }
2877
+
2878
+ .knowledge-jump {
2879
+ display: flex;
2880
+ align-items: center;
2881
+ gap: 6px;
2882
+ flex-wrap: wrap;
2883
+ padding: 8px 10px;
2884
+ border: 1px solid var(--border-subtle);
2885
+ border-radius: var(--radius-md);
2886
+ background: var(--bg-surface);
2887
+ }
2888
+
2889
+ .knowledge-jump-label {
2890
+ margin: 0 4px 0 0;
2891
+ color: var(--text-muted);
2892
+ font-size: 10px;
2893
+ font-weight: 700;
2894
+ letter-spacing: 0.06em;
2895
+ text-transform: uppercase;
2896
+ }
2897
+
2898
+ .knowledge-jump-chip {
2899
+ display: inline-flex;
2900
+ align-items: center;
2901
+ gap: 6px;
2902
+ max-width: 240px;
2903
+ min-height: 26px;
2904
+ padding: 3px 10px;
2905
+ border: 1px solid var(--border-subtle);
2906
+ border-radius: var(--radius-pill);
2907
+ color: var(--text-secondary);
2908
+ background: var(--bg-base);
2909
+ font-size: 12px;
2910
+ font-weight: 500;
2911
+ text-decoration: none;
2912
+ white-space: nowrap;
2913
+ overflow: hidden;
2914
+ text-overflow: ellipsis;
2915
+ transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
2916
+ }
2917
+
2918
+ .knowledge-jump-chip:hover {
2919
+ border-color: rgba(208, 188, 255, 0.28);
2920
+ background: var(--bg-card-hover);
2921
+ color: var(--text-primary);
2922
+ }
2923
+
2924
+ .knowledge-jump-chip span {
2925
+ flex-shrink: 0;
2926
+ min-width: 16px;
2927
+ padding: 0 6px;
2928
+ border-radius: var(--radius-pill);
2929
+ background: rgba(208, 188, 255, 0.1);
2930
+ color: var(--accent-purple);
2931
+ font-family: var(--font-mono);
2932
+ font-size: 10px;
2933
+ text-align: center;
2934
+ }
2935
+
2936
+ .knowledge-overview-card {
2937
+ display: flex;
2938
+ align-items: flex-start;
2939
+ gap: 16px;
2940
+ padding: 12px 16px;
2941
+ border: 1px solid var(--border-subtle);
2942
+ border-radius: var(--radius-md);
2943
+ background: var(--bg-surface);
2944
+ scroll-margin-top: 24px;
2945
+ }
2946
+
2947
+ .knowledge-overview-card--empty {
2948
+ background: rgba(255, 255, 255, 0.015);
2949
+ border-style: dashed;
2950
+ border-color: var(--border-medium);
2951
+ }
2952
+
2953
+ .knowledge-overview-meta {
2954
+ display: flex;
2955
+ flex-direction: column;
2956
+ gap: 2px;
2957
+ flex: 0 0 220px;
2958
+ min-width: 0;
2959
+ }
2960
+
2961
+ .knowledge-overview-label {
2962
+ font-size: 10px;
2963
+ font-weight: 700;
2964
+ letter-spacing: 0.06em;
2965
+ text-transform: uppercase;
2966
+ color: var(--text-muted);
2967
+ }
2968
+
2969
+ .knowledge-overview-title {
2970
+ font-size: 13px;
2971
+ font-weight: 600;
2972
+ color: var(--text-primary);
2973
+ white-space: nowrap;
2974
+ overflow: hidden;
2975
+ text-overflow: ellipsis;
2976
+ }
2977
+
2978
+ .knowledge-overview-body {
2979
+ flex: 1 1 auto;
2980
+ min-width: 0;
2981
+ display: flex;
2982
+ flex-direction: column;
2983
+ gap: 8px;
2984
+ }
2985
+
2986
+ .knowledge-summary--overview {
2987
+ margin: 0;
2988
+ -webkit-line-clamp: 2;
2989
+ line-clamp: 2;
2990
+ }
2991
+
2992
+ .knowledge-sections-region {
2993
+ flex: 1 1 auto;
2994
+ min-height: 0;
2995
+ display: grid;
2996
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2997
+ grid-auto-rows: 1fr;
2998
+ gap: 14px;
2999
+ }
3000
+
3001
+ .knowledge-sections-region > .knowledge-section:last-child:nth-child(3n+2) {
3002
+ grid-column: span 2;
3003
+ }
3004
+
3005
+ .knowledge-sections-region > .knowledge-section:last-child:nth-child(3n+1) {
3006
+ grid-column: 1 / -1;
3007
+ }
3008
+
3009
+ .knowledge-section {
3010
+ display: flex;
3011
+ flex-direction: column;
3012
+ min-width: 0;
3013
+ min-height: 0;
3014
+ max-height: 100%;
3015
+ scroll-margin-top: 24px;
3016
+ background: var(--bg-card);
3017
+ border: 1px solid var(--border-subtle);
3018
+ border-radius: var(--radius-md);
3019
+ box-shadow: none;
3020
+ overflow: hidden;
3021
+ }
3022
+
3023
+ .knowledge-section .panel-header.knowledge-section-header {
3024
+ display: flex;
3025
+ align-items: center;
3026
+ justify-content: space-between;
3027
+ gap: 10px;
3028
+ padding: 10px 14px;
3029
+ border-bottom: 1px solid var(--border-subtle);
3030
+ background: var(--bg-surface);
3031
+ flex: 0 0 auto;
3032
+ }
3033
+
3034
+ .knowledge-section .panel-title {
3035
+ font-size: 12px;
3036
+ font-weight: 700;
3037
+ letter-spacing: 0.04em;
3038
+ text-transform: uppercase;
3039
+ color: var(--text-secondary);
3040
+ }
3041
+
3042
+ .knowledge-section-meta {
3043
+ color: var(--text-muted);
3044
+ font-size: 11px;
3045
+ font-family: var(--font-mono);
3046
+ white-space: nowrap;
3047
+ }
3048
+
3049
+ .knowledge-section-body {
3050
+ flex: 1 1 auto;
3051
+ min-height: 0;
3052
+ display: flex;
3053
+ flex-direction: column;
3054
+ gap: 8px;
3055
+ padding: 10px;
3056
+ overflow-y: auto;
3057
+ }
3058
+
3059
+ .knowledge-item {
3060
+ display: flex;
3061
+ flex-direction: column;
3062
+ gap: 6px;
3063
+ padding: 10px 12px;
3064
+ border: 1px solid var(--border-subtle);
3065
+ border-radius: var(--radius-sm);
3066
+ background: var(--bg-surface);
3067
+ }
3068
+
3069
+ .knowledge-item-head {
3070
+ display: flex;
3071
+ align-items: flex-start;
3072
+ justify-content: space-between;
3073
+ gap: 8px;
3074
+ min-width: 0;
3075
+ }
3076
+
3077
+ .knowledge-item-head h3 {
3078
+ margin: 0;
3079
+ color: var(--text-primary);
3080
+ font-size: 13px;
3081
+ font-weight: 600;
3082
+ line-height: 1.35;
3083
+ overflow-wrap: anywhere;
3084
+ }
3085
+
3086
+ .knowledge-item-head .type-badge {
3087
+ flex-shrink: 0;
3088
+ font-size: 10px;
3089
+ padding: 2px 6px;
3090
+ }
3091
+
3092
+ .knowledge-entity {
3093
+ max-width: 100%;
3094
+ color: var(--accent-cyan);
3095
+ font-family: var(--font-mono);
3096
+ font-size: 11px;
3097
+ white-space: nowrap;
3098
+ overflow: hidden;
3099
+ text-overflow: ellipsis;
3100
+ }
3101
+
3102
+ .knowledge-summary {
3103
+ display: -webkit-box;
3104
+ margin: 0;
3105
+ color: var(--text-secondary);
3106
+ font-size: 12.5px;
3107
+ line-height: 1.5;
3108
+ overflow: hidden;
3109
+ -webkit-box-orient: vertical;
3110
+ -webkit-line-clamp: 3;
3111
+ line-clamp: 3;
3112
+ overflow-wrap: anywhere;
3113
+ }
3114
+
3115
+ .knowledge-ref-list {
3116
+ display: flex;
3117
+ flex-wrap: wrap;
3118
+ gap: 4px;
3119
+ margin-top: 2px;
3120
+ }
3121
+
3122
+ .knowledge-ref-chip {
3123
+ display: inline-flex;
3124
+ align-items: center;
3125
+ max-width: 100%;
3126
+ padding: 1px 6px;
3127
+ border: 1px solid rgba(128, 216, 255, 0.16);
3128
+ border-radius: var(--radius-pill);
3129
+ background: rgba(128, 216, 255, 0.07);
3130
+ color: var(--accent-cyan);
3131
+ font-family: var(--font-mono);
3132
+ font-size: 10px;
3133
+ line-height: 1.4;
3134
+ white-space: nowrap;
3135
+ overflow: hidden;
3136
+ text-overflow: ellipsis;
3137
+ }
3138
+
3139
+ .knowledge-ref-chip[data-kind="mini-skill"] {
3140
+ border-color: rgba(208, 188, 255, 0.18);
3141
+ background: rgba(208, 188, 255, 0.08);
3142
+ color: var(--accent-purple);
3143
+ }
3144
+
3145
+ .knowledge-ref-chip[data-kind="git"] {
3146
+ border-color: rgba(105, 240, 174, 0.18);
3147
+ background: rgba(105, 240, 174, 0.08);
3148
+ color: var(--accent-green);
3149
+ }
3150
+
3151
+ .knowledge-ref-empty {
3152
+ color: var(--text-muted);
3153
+ font-family: var(--font-mono);
3154
+ font-size: 11px;
3155
+ }
3156
+
3157
+ .knowledge-section-empty {
3158
+ display: flex;
3159
+ align-items: flex-start;
3160
+ gap: 10px;
3161
+ padding: 14px;
3162
+ border: 1px dashed var(--border-medium);
3163
+ border-radius: var(--radius-sm);
3164
+ background: rgba(255, 255, 255, 0.015);
3165
+ color: var(--text-muted);
3166
+ }
3167
+
3168
+ .knowledge-section-empty .iconify {
3169
+ flex-shrink: 0;
3170
+ color: var(--text-muted);
3171
+ font-size: 18px;
3172
+ }
3173
+
3174
+ .knowledge-section-empty strong,
3175
+ .knowledge-section-empty span {
3176
+ display: block;
3177
+ }
3178
+
3179
+ .knowledge-section-empty strong {
3180
+ margin-bottom: 2px;
3181
+ color: var(--text-secondary);
3182
+ font-size: 12px;
3183
+ }
3184
+
3185
+ .knowledge-section-empty span {
3186
+ font-size: 11px;
3187
+ line-height: 1.45;
3188
+ }
3189
+
3190
+ .knowledge-empty-overview,
3191
+ .knowledge-error-panel {
3192
+ flex: 1 1 auto;
3193
+ min-height: 0;
3194
+ margin-bottom: 0;
3195
+ display: flex;
3196
+ align-items: center;
3197
+ justify-content: center;
3198
+ }
3199
+
3200
+ .knowledge-empty-overview .panel-body,
3201
+ .knowledge-error-panel .panel-body {
3202
+ padding: 42px 24px;
3203
+ text-align: center;
3204
+ }
3205
+
3206
+ .knowledge-state-icon {
3207
+ display: flex;
3208
+ justify-content: center;
3209
+ margin-bottom: 12px;
3210
+ color: var(--accent-purple);
3211
+ font-size: 36px;
3212
+ }
3213
+
3214
+ .knowledge-loading {
3215
+ flex-direction: column;
3216
+ gap: 12px;
3217
+ color: var(--text-muted);
3218
+ font-size: 13px;
3219
+ }
3220
+
3221
+ @media (max-width: 1399px) {
3222
+ .knowledge-sections-region {
3223
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3224
+ }
3225
+
3226
+ .knowledge-sections-region > .knowledge-section:last-child:nth-child(3n+2),
3227
+ .knowledge-sections-region > .knowledge-section:last-child:nth-child(3n+1) {
3228
+ grid-column: auto;
3229
+ }
3230
+
3231
+ .knowledge-sections-region > .knowledge-section:last-child:nth-child(odd) {
3232
+ grid-column: 1 / -1;
3233
+ }
3234
+ }
3235
+
3236
+ @media (max-width: 900px) {
3237
+ #page-knowledge.page.active,
3238
+ #page-graph.page.active {
3239
+ height: auto;
3240
+ min-height: 100vh;
3241
+ overflow: visible;
3242
+ padding: 20px 18px;
3243
+ }
3244
+
3245
+ .knowledge-page-shell {
3246
+ flex: 0 0 auto;
3247
+ }
3248
+
3249
+ .knowledge-stats-grid {
3250
+ grid-template-columns: 1fr 1fr;
3251
+ }
3252
+
3253
+ .knowledge-sections-region {
3254
+ grid-template-columns: 1fr;
3255
+ grid-auto-rows: auto;
3256
+ }
3257
+
3258
+ .knowledge-sections-region > .knowledge-section:last-child {
3259
+ grid-column: auto;
3260
+ }
3261
+
3262
+ .knowledge-section {
3263
+ max-height: none;
3264
+ }
3265
+
3266
+ .knowledge-section-body {
3267
+ max-height: 60vh;
3268
+ }
3269
+
3270
+ .knowledge-overview-card {
3271
+ flex-direction: column;
3272
+ gap: 8px;
3273
+ }
3274
+
3275
+ .knowledge-overview-meta {
3276
+ flex: 0 0 auto;
3277
+ }
3278
+
3279
+ .knowledge-header {
3280
+ display: block;
3281
+ }
3282
+
3283
+ .knowledge-generated {
3284
+ width: fit-content;
3285
+ max-width: 100%;
3286
+ margin-top: 12px;
3287
+ }
3288
+ }
3289
+
3290
+ @media (max-width: 600px) {
3291
+ #page-knowledge.page.active,
3292
+ #page-graph.page.active {
3293
+ padding: 14px 12px;
3294
+ }
3295
+
3296
+ #page-knowledge .page-title {
3297
+ font-size: 20px;
3298
+ line-height: 1.25;
3299
+ overflow-wrap: anywhere;
3300
+ }
3301
+
3302
+ #page-knowledge .page-subtitle {
3303
+ font-size: 12.5px;
3304
+ line-height: 1.45;
3305
+ }
3306
+
3307
+ .knowledge-stats-grid {
3308
+ grid-template-columns: 1fr;
3309
+ }
3310
+
3311
+ #page-knowledge .knowledge-stats-grid .stat-card {
3312
+ padding: 12px 14px;
3313
+ }
3314
+
3315
+ #page-knowledge .knowledge-stats-grid .stat-value {
3316
+ font-size: 22px;
3317
+ }
3318
+
3319
+ .knowledge-title-block {
3320
+ width: 100%;
3321
+ }
3322
+
3323
+ .knowledge-generated {
3324
+ width: 100%;
3325
+ min-width: 0;
3326
+ padding: 8px 12px;
3327
+ }
3328
+
3329
+ .knowledge-generated strong {
3330
+ overflow-wrap: anywhere;
3331
+ }
3332
+
3333
+ .knowledge-jump {
3334
+ align-items: stretch;
3335
+ padding: 8px;
3336
+ }
3337
+
3338
+ .knowledge-jump-label {
3339
+ width: 100%;
3340
+ }
3341
+
3342
+ .knowledge-jump-chip {
3343
+ max-width: 100%;
3344
+ min-width: 0;
3345
+ flex: 1 1 100%;
3346
+ justify-content: flex-start;
3347
+ }
3348
+
3349
+ .knowledge-jump-chip span {
3350
+ margin-left: auto;
3351
+ }
3352
+
3353
+ .knowledge-item-head {
3354
+ flex-direction: column;
3355
+ align-items: flex-start;
3356
+ }
3357
+
3358
+ .knowledge-section-body {
3359
+ max-height: 50vh;
3360
+ padding: 8px;
3361
+ }
3362
+
3363
+ .knowledge-item {
3364
+ padding: 8px 10px;
3365
+ }
3366
+
3367
+ .knowledge-section-empty {
3368
+ padding: 10px 12px;
3369
+ }
3370
+ }
3371
+
2709
3372
  /* ============================================================
2710
3373
  * Config Provenance Page
2711
3374
  * ============================================================ */