@qnote/q-ai-note 1.0.4 → 1.0.6

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.
@@ -46,14 +46,55 @@ body {
46
46
  .sidebar-header {
47
47
  padding: 18px 16px;
48
48
  border-bottom: 1px solid var(--border);
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 10px;
49
52
  }
50
53
 
51
54
  .sidebar-header h1 {
52
55
  font-size: 18px;
53
- font-weight: 500;
56
+ font-weight: 600;
57
+ letter-spacing: 0.2px;
54
58
  color: var(--text);
55
59
  }
56
60
 
61
+ .brand-mark {
62
+ position: relative;
63
+ width: 24px;
64
+ height: 24px;
65
+ flex: 0 0 24px;
66
+ }
67
+
68
+ .brand-ring {
69
+ position: absolute;
70
+ inset: 0;
71
+ border-radius: 50%;
72
+ border: 2px solid #3b82f6;
73
+ box-shadow: inset 0 0 0 1px rgba(59, 130, 246, 0.12);
74
+ }
75
+
76
+ .brand-tail {
77
+ position: absolute;
78
+ right: -1px;
79
+ bottom: 1px;
80
+ width: 11px;
81
+ height: 2px;
82
+ background: #3b82f6;
83
+ border-radius: 999px;
84
+ transform: rotate(38deg);
85
+ transform-origin: right center;
86
+ }
87
+
88
+ .brand-dot {
89
+ position: absolute;
90
+ right: -1px;
91
+ top: 1px;
92
+ width: 5px;
93
+ height: 5px;
94
+ border-radius: 50%;
95
+ background: #8b5cf6;
96
+ }
97
+
57
98
  .nav-list {
58
99
  list-style: none;
59
100
  padding: 12px 0;
@@ -97,6 +138,10 @@ body {
97
138
  display: none;
98
139
  }
99
140
 
141
+ .hidden {
142
+ display: none !important;
143
+ }
144
+
100
145
  @keyframes fadeIn {
101
146
  from { opacity: 0; transform: translateY(8px); }
102
147
  to { opacity: 1; transform: translateY(0); }
@@ -195,6 +240,13 @@ h2 {
195
240
  white-space: pre-wrap;
196
241
  }
197
242
 
243
+ .insight-box-header {
244
+ display: flex;
245
+ align-items: center;
246
+ justify-content: space-between;
247
+ margin-bottom: 8px;
248
+ }
249
+
198
250
  .changes-list {
199
251
  display: flex;
200
252
  flex-direction: column;
@@ -405,6 +457,11 @@ h2 {
405
457
  background: linear-gradient(135deg, #e8f0fe 0%, #f0f7ff 100%);
406
458
  }
407
459
 
460
+ .tree-parent-header.is-selected {
461
+ background: linear-gradient(135deg, #dbeafe 0%, #eef6ff 100%);
462
+ box-shadow: inset 0 0 0 1px #8bb8ff;
463
+ }
464
+
408
465
  .tree-parent-header .node-status {
409
466
  width: 10px;
410
467
  height: 10px;
@@ -594,6 +651,24 @@ h2 {
594
651
  padding-left: 2px;
595
652
  }
596
653
 
654
+ .dense-lane-drag-handle {
655
+ width: fit-content;
656
+ font-size: 12px;
657
+ color: #7a8ca8;
658
+ border: 1px dashed #d5deed;
659
+ border-radius: 6px;
660
+ padding: 0 6px;
661
+ margin: 0 0 6px 0;
662
+ cursor: grab;
663
+ user-select: none;
664
+ }
665
+
666
+ .dense-lane-drag-handle:hover {
667
+ color: #4b6ea8;
668
+ border-color: #b8cae6;
669
+ background: #f5f9ff;
670
+ }
671
+
597
672
  .dense-lane:last-child {
598
673
  border-right: none;
599
674
  padding-right: 0;
@@ -706,6 +781,12 @@ h2 {
706
781
  background: #f7faff;
707
782
  }
708
783
 
784
+ .lane-tree-node-row.is-selected {
785
+ border-color: #80aef5;
786
+ background: #edf5ff;
787
+ box-shadow: inset 0 0 0 1px #80aef5;
788
+ }
789
+
709
790
  .lane-tree-node-row:focus-visible {
710
791
  outline: 2px solid #c2dbff;
711
792
  outline-offset: 1px;
@@ -739,6 +820,101 @@ h2 {
739
820
  pointer-events: auto;
740
821
  }
741
822
 
823
+ .lane-tree-node-row.drag-over-target {
824
+ border-color: #7ba5ec;
825
+ background: #edf4ff;
826
+ }
827
+
828
+ .lane-tree-node-row[data-drop-position="before"] {
829
+ box-shadow: inset 0 2px 0 #5f8fe0;
830
+ }
831
+
832
+ .lane-tree-node-row[data-drop-position="after"] {
833
+ box-shadow: inset 0 -2px 0 #5f8fe0;
834
+ }
835
+
836
+ .lane-tree-node-row[data-drop-position="child"] {
837
+ border-style: dashed;
838
+ }
839
+
840
+ .lane-tree-node-row.is-dragging {
841
+ opacity: 0.45;
842
+ }
843
+
844
+ .dense-lane.lane-drag-over-target {
845
+ background: #f3f8ff;
846
+ border-color: #bfd7ff;
847
+ }
848
+
849
+ .dense-lane.is-lane-dragging {
850
+ opacity: 0.5;
851
+ }
852
+
853
+ .tree-node-preview-wrapper,
854
+ .lane-node-preview-wrapper {
855
+ padding: 2px 8px 6px 8px;
856
+ }
857
+
858
+ .node-entity-preview-strip {
859
+ display: flex;
860
+ flex-wrap: wrap;
861
+ gap: 6px;
862
+ align-items: center;
863
+ margin-top: 2px;
864
+ }
865
+
866
+ .entity-preview-box {
867
+ display: inline-flex;
868
+ align-items: center;
869
+ gap: 4px;
870
+ max-width: 188px;
871
+ border: 1px solid transparent;
872
+ background: #f8fafc;
873
+ color: #334155;
874
+ padding: 2px 6px;
875
+ cursor: pointer;
876
+ font-size: 11px;
877
+ }
878
+
879
+ .entity-preview-box .entity-preview-type {
880
+ font-weight: 600;
881
+ text-transform: capitalize;
882
+ }
883
+
884
+ .entity-preview-box .entity-preview-title {
885
+ max-width: 108px;
886
+ white-space: nowrap;
887
+ overflow: hidden;
888
+ text-overflow: ellipsis;
889
+ }
890
+
891
+ .entity-preview-box.issue {
892
+ border-radius: 4px;
893
+ border-color: #fecaca;
894
+ background: #fff1f2;
895
+ color: #9f1239;
896
+ }
897
+
898
+ .entity-preview-box.knowledge {
899
+ border-radius: 999px;
900
+ border-style: dashed;
901
+ border-color: #a7f3d0;
902
+ background: #f0fdf4;
903
+ color: #065f46;
904
+ }
905
+
906
+ .entity-preview-box.capability {
907
+ border-radius: 2px;
908
+ border-color: #bfdbfe;
909
+ background: #eff6ff;
910
+ color: #1d4ed8;
911
+ }
912
+
913
+ .entity-preview-more {
914
+ font-size: 11px;
915
+ color: #64748b;
916
+ }
917
+
742
918
  /* Leaf Node Block */
743
919
  .tree-leaf-node {
744
920
  position: relative;
@@ -755,10 +931,15 @@ h2 {
755
931
  transition: all 0.2s;
756
932
  display: flex;
757
933
  align-items: center;
934
+ flex-wrap: wrap;
758
935
  gap: 6px;
759
936
  overflow: visible;
760
937
  }
761
938
 
939
+ .tree-leaf-node > .node-entity-preview-strip {
940
+ width: 100%;
941
+ }
942
+
762
943
  .tree-leaf-grid > .tree-leaf-node {
763
944
  width: auto;
764
945
  min-width: 0;
@@ -770,6 +951,12 @@ h2 {
770
951
  box-shadow: 0 4px 10px rgba(0,0,0,0.1);
771
952
  }
772
953
 
954
+ .tree-leaf-node.is-selected {
955
+ border-color: #7aa9f8;
956
+ background: linear-gradient(180deg, #f5f9ff 0%, #ffffff 100%);
957
+ box-shadow: 0 0 0 2px rgba(122, 169, 248, 0.28), 0 6px 14px rgba(58, 108, 196, 0.12);
958
+ }
959
+
773
960
  .tree-leaf-node .node-status {
774
961
  display: inline-flex;
775
962
  width: 6px;
@@ -1140,8 +1327,8 @@ h2 {
1140
1327
 
1141
1328
  .diary-item {
1142
1329
  position: relative;
1143
- padding: 16px 20px;
1144
- margin-bottom: 16px;
1330
+ padding: 12px 16px;
1331
+ margin-bottom: 12px;
1145
1332
  background: var(--bg);
1146
1333
  border-radius: 12px;
1147
1334
  box-shadow: var(--shadow);
@@ -1162,17 +1349,68 @@ h2 {
1162
1349
  .diary-meta {
1163
1350
  font-size: 12px;
1164
1351
  color: var(--text-secondary);
1165
- margin-bottom: 8px;
1352
+ min-height: 24px;
1353
+ display: flex;
1354
+ align-items: center;
1355
+ flex-wrap: wrap;
1356
+ gap: 4px;
1357
+ }
1358
+
1359
+ .diary-open-node-link {
1360
+ border: none;
1361
+ background: transparent;
1362
+ color: #1d4ed8;
1363
+ font-size: 12px;
1364
+ padding: 0;
1365
+ cursor: pointer;
1366
+ text-decoration: underline;
1367
+ }
1368
+
1369
+ .diary-head-row {
1370
+ display: flex;
1371
+ align-items: center;
1372
+ justify-content: space-between;
1373
+ gap: 8px;
1374
+ margin-bottom: 6px;
1166
1375
  }
1167
1376
 
1168
1377
  .diary-content {
1169
- line-height: 1.6;
1378
+ line-height: 1.45;
1379
+ }
1380
+
1381
+ .diary-content p {
1382
+ margin: 0 0 6px;
1383
+ }
1384
+
1385
+ .diary-content h1,
1386
+ .diary-content h2,
1387
+ .diary-content h3,
1388
+ .diary-content h4,
1389
+ .diary-content h5,
1390
+ .diary-content h6 {
1391
+ margin: 0 0 8px;
1392
+ font-size: 14px;
1393
+ line-height: 1.4;
1394
+ }
1395
+
1396
+ .diary-content ul {
1397
+ margin: 0 0 8px 18px;
1398
+ padding: 0;
1399
+ }
1400
+
1401
+ .diary-content code {
1402
+ background: #f2f4f7;
1403
+ border-radius: 4px;
1404
+ padding: 1px 4px;
1405
+ font-size: 12px;
1170
1406
  }
1171
1407
 
1172
1408
  .diary-actions {
1173
1409
  display: flex;
1410
+ flex-wrap: wrap;
1174
1411
  gap: 8px;
1175
- margin-top: 12px;
1412
+ margin-top: 0;
1413
+ flex-shrink: 0;
1176
1414
  }
1177
1415
 
1178
1416
  .diary-actions button {
@@ -1194,6 +1432,150 @@ h2 {
1194
1432
  color: var(--text-secondary);
1195
1433
  }
1196
1434
 
1435
+ .diary-actions .edit {
1436
+ background: #eff6ff;
1437
+ color: #1d4ed8;
1438
+ }
1439
+
1440
+ #diary-edit-dialog {
1441
+ width: min(980px, 95vw);
1442
+ max-width: none;
1443
+ background: #fff;
1444
+ overflow: hidden;
1445
+ }
1446
+
1447
+ #diary-edit-dialog textarea {
1448
+ width: 100%;
1449
+ min-height: 280px;
1450
+ border: 1px solid var(--border);
1451
+ border-radius: 8px;
1452
+ padding: 10px 12px;
1453
+ font-size: 14px;
1454
+ font-family: inherit;
1455
+ resize: vertical;
1456
+ }
1457
+
1458
+ .diary-edit-shell {
1459
+ display: flex;
1460
+ flex-direction: column;
1461
+ }
1462
+
1463
+ .diary-edit-header {
1464
+ padding: 18px 22px 10px;
1465
+ border-bottom: 1px solid #edf0f5;
1466
+ background: linear-gradient(180deg, #fbfdff 0%, #f7faff 100%);
1467
+ }
1468
+
1469
+ .diary-edit-header h3 {
1470
+ margin: 0;
1471
+ font-size: 20px;
1472
+ }
1473
+
1474
+ .diary-edit-header p {
1475
+ margin: 6px 0 0;
1476
+ font-size: 12px;
1477
+ color: #64748b;
1478
+ }
1479
+
1480
+ .diary-edit-body {
1481
+ display: grid;
1482
+ grid-template-columns: 1fr 1fr;
1483
+ gap: 12px;
1484
+ padding: 12px 22px 14px;
1485
+ }
1486
+
1487
+ .diary-edit-pane {
1488
+ border: 1px solid #e7ecf4;
1489
+ border-radius: 10px;
1490
+ background: #fff;
1491
+ min-width: 0;
1492
+ }
1493
+
1494
+ .diary-edit-pane-title {
1495
+ font-size: 12px;
1496
+ font-weight: 600;
1497
+ color: #475569;
1498
+ padding: 8px 10px;
1499
+ border-bottom: 1px solid #edf0f5;
1500
+ background: #f8fafc;
1501
+ border-radius: 10px 10px 0 0;
1502
+ }
1503
+
1504
+ .diary-edit-pane textarea {
1505
+ border: none !important;
1506
+ border-radius: 0 0 10px 10px !important;
1507
+ margin: 0 !important;
1508
+ }
1509
+
1510
+ .diary-edit-pane textarea:focus {
1511
+ outline: none;
1512
+ }
1513
+
1514
+ .diary-edit-preview {
1515
+ min-height: 280px;
1516
+ max-height: 420px;
1517
+ overflow: auto;
1518
+ padding: 10px 12px;
1519
+ }
1520
+
1521
+ .diary-edit-preview.is-empty {
1522
+ color: #94a3b8;
1523
+ font-style: italic;
1524
+ }
1525
+
1526
+ .diary-edit-actions {
1527
+ align-items: center;
1528
+ gap: 10px;
1529
+ }
1530
+
1531
+ .diary-edit-shortcut-hint {
1532
+ margin-right: auto;
1533
+ font-size: 12px;
1534
+ color: #64748b;
1535
+ }
1536
+
1537
+ @media (max-width: 960px) {
1538
+ .diary-edit-body {
1539
+ grid-template-columns: 1fr;
1540
+ }
1541
+
1542
+ #diary-edit-dialog textarea,
1543
+ .diary-edit-preview {
1544
+ min-height: 180px;
1545
+ }
1546
+ }
1547
+
1548
+ .drawer-diary-quick-form {
1549
+ border: 1px solid #e5e7eb;
1550
+ border-radius: 10px;
1551
+ background: #fff;
1552
+ padding: 10px;
1553
+ margin: 8px 0 10px;
1554
+ }
1555
+
1556
+ .sandbox-diary-quick-meta {
1557
+ font-size: 12px;
1558
+ color: #64748b;
1559
+ margin-bottom: 6px;
1560
+ }
1561
+
1562
+ #drawer-diary-content {
1563
+ width: 100%;
1564
+ min-height: 66px;
1565
+ border: 1px solid #d8e0ed;
1566
+ border-radius: 8px;
1567
+ padding: 8px 10px;
1568
+ font-size: 13px;
1569
+ resize: vertical;
1570
+ }
1571
+
1572
+ .sandbox-diary-quick-actions {
1573
+ margin-top: 8px;
1574
+ display: flex;
1575
+ gap: 8px;
1576
+ justify-content: flex-end;
1577
+ }
1578
+
1197
1579
  /* Settings */
1198
1580
  .settings-form {
1199
1581
  background: var(--bg);
@@ -1392,16 +1774,24 @@ dialog::backdrop {
1392
1774
  /* Sandbox Layout - Left/Right */
1393
1775
  .sandbox-layout {
1394
1776
  display: grid;
1395
- grid-template-columns: minmax(0, 72fr) minmax(280px, 28fr);
1777
+ grid-template-columns: minmax(0, 1fr);
1396
1778
  gap: 16px;
1397
- height: calc(100vh - 180px);
1779
+ min-height: 320px;
1398
1780
  padding-right: 8px;
1399
1781
  box-sizing: border-box;
1400
1782
  position: relative;
1401
1783
  }
1402
1784
 
1403
- .sandbox-layout.presentation-mode {
1404
- grid-template-columns: minmax(0, 82fr) minmax(240px, 18fr);
1785
+ .sandbox-layout.show-chat {
1786
+ grid-template-columns: minmax(0, 72fr) minmax(280px, 28fr);
1787
+ }
1788
+
1789
+ .sandbox-layout .sandbox-chat-section {
1790
+ display: none;
1791
+ }
1792
+
1793
+ .sandbox-layout.show-chat .sandbox-chat-section {
1794
+ display: flex;
1405
1795
  }
1406
1796
 
1407
1797
  .sandbox-layout.is-fullscreen {
@@ -1413,12 +1803,24 @@ dialog::backdrop {
1413
1803
  align-items: stretch;
1414
1804
  }
1415
1805
 
1806
+ .sandbox-layout.is-fullscreen.show-chat {
1807
+ grid-template-columns: minmax(0, 72fr) minmax(280px, 28fr);
1808
+ }
1809
+
1416
1810
  .sandbox-layout.is-fullscreen .sandbox-tree-section,
1417
1811
  .sandbox-layout.is-fullscreen .sandbox-chat-section {
1418
1812
  min-height: 0;
1419
1813
  }
1420
1814
 
1421
- .sandbox-layout.is-fullscreen .sandbox-chat-section {
1815
+ .sandbox-layout.is-fullscreen:not(.show-chat) .sandbox-chat-section {
1816
+ display: none;
1817
+ }
1818
+
1819
+ #page-sandbox-detail.is-sandbox-fullscreen #sandbox-overview {
1820
+ display: none;
1821
+ }
1822
+
1823
+ #page-sandbox-detail.is-sandbox-fullscreen .back-link {
1422
1824
  display: none;
1423
1825
  }
1424
1826
 
@@ -1760,11 +2162,15 @@ dialog::backdrop {
1760
2162
 
1761
2163
  @media (max-width: 1366px) {
1762
2164
  .sandbox-layout {
2165
+ grid-template-columns: minmax(0, 1fr);
2166
+ }
2167
+
2168
+ .sandbox-layout.show-chat {
1763
2169
  grid-template-columns: minmax(0, 70fr) minmax(260px, 30fr);
1764
2170
  }
1765
2171
 
1766
- .sandbox-layout.presentation-mode {
1767
- grid-template-columns: minmax(0, 80fr) minmax(220px, 20fr);
2172
+ .sandbox-layout.is-fullscreen.show-chat {
2173
+ grid-template-columns: minmax(0, 70fr) minmax(260px, 30fr);
1768
2174
  }
1769
2175
 
1770
2176
  .node-entity-drawer {
@@ -1777,6 +2183,21 @@ dialog::backdrop {
1777
2183
  }
1778
2184
  }
1779
2185
 
2186
+ .ai-toggle-btn {
2187
+ background: linear-gradient(135deg, #2563eb, #1d4ed8);
2188
+ color: #fff;
2189
+ border-color: transparent;
2190
+ box-shadow: 0 6px 14px rgba(37, 99, 235, 0.24);
2191
+ }
2192
+
2193
+ .ai-toggle-btn:hover {
2194
+ background: linear-gradient(135deg, #1d4ed8, #1e40af);
2195
+ }
2196
+
2197
+ .ai-toggle-btn .icon {
2198
+ margin-right: 4px;
2199
+ }
2200
+
1780
2201
  .sandbox-chat-section .chat-container {
1781
2202
  flex: 1;
1782
2203
  height: auto;