codex-devtools 0.1.11 → 0.2.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.
@@ -573,6 +573,9 @@ video {
573
573
  .inline {
574
574
  display: inline;
575
575
  }
576
+ .table {
577
+ display: table;
578
+ }
576
579
  .transform {
577
580
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
578
581
  }
@@ -943,24 +946,327 @@ select {
943
946
  }
944
947
 
945
948
  .dashboard-shell,
946
- .settings-shell {
949
+ .settings-shell,
950
+ .stats-shell {
947
951
  max-width: 980px;
948
952
  margin: 0 auto;
949
953
  padding: 24px;
950
954
  }
951
955
 
952
956
  .dashboard-header h2,
953
- .settings-header h2 {
957
+ .settings-header h2,
958
+ .stats-header h2 {
954
959
  margin: 0;
955
960
  font-size: 1.25rem;
956
961
  }
957
962
 
958
963
  .dashboard-header p,
959
- .settings-header p {
964
+ .settings-header p,
965
+ .stats-header p {
960
966
  margin: 6px 0 0;
961
967
  color: var(--text-muted);
962
968
  }
963
969
 
970
+ .stats-controls {
971
+ margin-top: 16px;
972
+ border: 1px solid var(--border-subtle);
973
+ background: linear-gradient(145deg, rgba(59, 130, 246, 0.08), transparent 35%), var(--bg-panel);
974
+ border-radius: 12px;
975
+ padding: 14px;
976
+ display: grid;
977
+ gap: 8px;
978
+ }
979
+
980
+ .stats-error {
981
+ margin: 12px 0 0;
982
+ color: #fca5a5;
983
+ border: 1px solid rgba(239, 68, 68, 0.38);
984
+ border-radius: 10px;
985
+ padding: 10px 12px;
986
+ background: rgba(127, 29, 29, 0.18);
987
+ }
988
+
989
+ .stats-kpi-grid {
990
+ margin-top: 16px;
991
+ display: grid;
992
+ gap: 12px;
993
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
994
+ }
995
+
996
+ .stats-section {
997
+ margin-top: 16px;
998
+ border: 1px solid var(--border-subtle);
999
+ background: var(--bg-panel);
1000
+ border-radius: 12px;
1001
+ padding: 14px;
1002
+ }
1003
+
1004
+ .stats-section-header {
1005
+ display: flex;
1006
+ justify-content: space-between;
1007
+ align-items: baseline;
1008
+ gap: 10px;
1009
+ margin-bottom: 12px;
1010
+ }
1011
+
1012
+ .stats-section-header h3 {
1013
+ margin: 0;
1014
+ font-size: 0.95rem;
1015
+ }
1016
+
1017
+ .stats-section-subtle {
1018
+ color: var(--text-muted);
1019
+ font-size: 0.75rem;
1020
+ text-transform: uppercase;
1021
+ letter-spacing: 0.06em;
1022
+ }
1023
+
1024
+ .stats-section-header-actions {
1025
+ margin-left: auto;
1026
+ display: inline-flex;
1027
+ align-items: center;
1028
+ gap: 8px;
1029
+ }
1030
+
1031
+ .stats-section-header-actions .sidebar-label,
1032
+ .stats-section-header-actions .stats-section-subtle {
1033
+ white-space: nowrap;
1034
+ }
1035
+
1036
+ .stats-contrib-select {
1037
+ width: auto;
1038
+ min-width: 156px;
1039
+ padding: 6px 9px;
1040
+ font-size: 0.78rem;
1041
+ }
1042
+
1043
+ .stats-day-list {
1044
+ list-style: none;
1045
+ margin: 0;
1046
+ padding: 0;
1047
+ display: grid;
1048
+ gap: 8px;
1049
+ }
1050
+
1051
+ .stats-day-row {
1052
+ display: grid;
1053
+ gap: 10px;
1054
+ align-items: center;
1055
+ grid-template-columns: 94px minmax(0, 1fr) 86px;
1056
+ }
1057
+
1058
+ .stats-day-label,
1059
+ .stats-day-value {
1060
+ color: var(--text-secondary);
1061
+ font-family: var(--font-mono);
1062
+ font-size: 0.76rem;
1063
+ }
1064
+
1065
+ .stats-day-value {
1066
+ text-align: right;
1067
+ }
1068
+
1069
+ .stats-day-bar-wrap {
1070
+ height: 10px;
1071
+ border-radius: 999px;
1072
+ background: rgba(59, 130, 246, 0.14);
1073
+ border: 1px solid rgba(59, 130, 246, 0.28);
1074
+ overflow: hidden;
1075
+ }
1076
+
1077
+ .stats-day-bar {
1078
+ height: 100%;
1079
+ border-radius: inherit;
1080
+ background: linear-gradient(90deg, rgba(59, 130, 246, 0.8), rgba(56, 189, 248, 0.85));
1081
+ }
1082
+
1083
+ .stats-contrib-frame {
1084
+ display: grid;
1085
+ grid-template-columns: 30px minmax(0, 1fr);
1086
+ gap: 8px;
1087
+ }
1088
+
1089
+ .stats-contrib-weekdays {
1090
+ display: grid;
1091
+ grid-template-rows: repeat(7, 12px);
1092
+ gap: 3px;
1093
+ padding-top: 18px;
1094
+ }
1095
+
1096
+ .stats-contrib-weekdays span {
1097
+ font-size: 0.63rem;
1098
+ line-height: 12px;
1099
+ color: var(--text-muted);
1100
+ text-align: right;
1101
+ }
1102
+
1103
+ .stats-contrib-scroll {
1104
+ min-width: 0;
1105
+ overflow-x: auto;
1106
+ overflow-y: hidden;
1107
+ padding-bottom: 2px;
1108
+ }
1109
+
1110
+ .stats-contrib-months {
1111
+ display: grid;
1112
+ gap: 3px;
1113
+ margin-bottom: 4px;
1114
+ min-width: -moz-max-content;
1115
+ min-width: max-content;
1116
+ }
1117
+
1118
+ .stats-contrib-month {
1119
+ font-size: 0.66rem;
1120
+ color: var(--text-muted);
1121
+ font-family: var(--font-mono);
1122
+ }
1123
+
1124
+ .stats-contrib-weeks {
1125
+ display: flex;
1126
+ gap: 3px;
1127
+ min-width: -moz-max-content;
1128
+ min-width: max-content;
1129
+ }
1130
+
1131
+ .stats-contrib-week {
1132
+ display: grid;
1133
+ grid-template-rows: repeat(7, 12px);
1134
+ gap: 3px;
1135
+ }
1136
+
1137
+ .stats-contrib-cell {
1138
+ width: 12px;
1139
+ height: 12px;
1140
+ border-radius: 3px;
1141
+ border: 1px solid rgba(59, 130, 246, 0.25);
1142
+ background: rgba(59, 130, 246, 0.08);
1143
+ cursor: pointer;
1144
+ }
1145
+
1146
+ .stats-contrib-cell.level-0 {
1147
+ background: rgba(59, 130, 246, 0.08);
1148
+ border-color: rgba(59, 130, 246, 0.2);
1149
+ }
1150
+
1151
+ .stats-contrib-cell.level-1 {
1152
+ background: rgba(59, 130, 246, 0.28);
1153
+ border-color: rgba(59, 130, 246, 0.3);
1154
+ }
1155
+
1156
+ .stats-contrib-cell.level-2 {
1157
+ background: rgba(59, 130, 246, 0.46);
1158
+ border-color: rgba(59, 130, 246, 0.45);
1159
+ }
1160
+
1161
+ .stats-contrib-cell.level-3 {
1162
+ background: rgba(59, 130, 246, 0.64);
1163
+ border-color: rgba(59, 130, 246, 0.6);
1164
+ }
1165
+
1166
+ .stats-contrib-cell.level-4 {
1167
+ background: rgba(59, 130, 246, 0.82);
1168
+ border-color: rgba(59, 130, 246, 0.78);
1169
+ }
1170
+
1171
+ .stats-contrib-cell.is-empty {
1172
+ background: rgba(59, 130, 246, 0.05);
1173
+ }
1174
+
1175
+ .stats-contrib-cell.is-padding {
1176
+ background: transparent;
1177
+ border-color: transparent;
1178
+ cursor: default;
1179
+ }
1180
+
1181
+ .stats-contrib-tooltip {
1182
+ position: fixed;
1183
+ z-index: 30;
1184
+ max-width: min(320px, calc(100vw - 24px));
1185
+ border: 1px solid var(--border-strong);
1186
+ border-radius: 8px;
1187
+ background: var(--bg-panel-raised);
1188
+ color: var(--text-primary);
1189
+ padding: 6px 8px;
1190
+ font-size: 0.72rem;
1191
+ font-family: var(--font-mono);
1192
+ line-height: 1.3;
1193
+ pointer-events: none;
1194
+ white-space: nowrap;
1195
+ }
1196
+
1197
+ .stats-grid-2 {
1198
+ display: grid;
1199
+ gap: 12px;
1200
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1201
+ }
1202
+
1203
+ .stats-top-list {
1204
+ list-style: none;
1205
+ margin: 0;
1206
+ padding: 0;
1207
+ display: grid;
1208
+ gap: 8px;
1209
+ }
1210
+
1211
+ .stats-top-item {
1212
+ display: flex;
1213
+ justify-content: space-between;
1214
+ gap: 10px;
1215
+ font-size: 0.84rem;
1216
+ color: var(--text-secondary);
1217
+ }
1218
+
1219
+ .stats-heatmap-grid {
1220
+ display: grid;
1221
+ gap: 8px;
1222
+ grid-template-columns: repeat(12, minmax(0, 1fr));
1223
+ }
1224
+
1225
+ .stats-heat-cell {
1226
+ border: 1px solid rgba(59, 130, 246, 0.24);
1227
+ border-radius: 8px;
1228
+ min-height: 56px;
1229
+ display: grid;
1230
+ gap: 4px;
1231
+ align-content: center;
1232
+ justify-items: center;
1233
+ padding: 6px 4px;
1234
+ }
1235
+
1236
+ .stats-heat-cell span {
1237
+ font-size: 0.68rem;
1238
+ color: var(--text-secondary);
1239
+ font-family: var(--font-mono);
1240
+ }
1241
+
1242
+ .stats-heat-cell strong {
1243
+ font-size: 0.76rem;
1244
+ }
1245
+
1246
+ .stats-table-wrap {
1247
+ overflow: auto;
1248
+ }
1249
+
1250
+ .stats-table {
1251
+ width: 100%;
1252
+ border-collapse: collapse;
1253
+ font-size: 0.8rem;
1254
+ }
1255
+
1256
+ .stats-table th,
1257
+ .stats-table td {
1258
+ padding: 7px 8px;
1259
+ border-bottom: 1px solid var(--border-subtle);
1260
+ text-align: left;
1261
+ }
1262
+
1263
+ .stats-table th {
1264
+ font-size: 0.72rem;
1265
+ color: var(--text-muted);
1266
+ text-transform: uppercase;
1267
+ letter-spacing: 0.06em;
1268
+ }
1269
+
964
1270
  .dashboard-stats {
965
1271
  display: grid;
966
1272
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
@@ -1200,6 +1506,48 @@ select {
1200
1506
  max-width: 100%;
1201
1507
  overflow-x: auto;
1202
1508
  }
1509
+
1510
+ .stats-grid-2 {
1511
+ grid-template-columns: 1fr;
1512
+ }
1513
+
1514
+ .stats-heatmap-grid {
1515
+ grid-template-columns: repeat(6, minmax(0, 1fr));
1516
+ }
1517
+
1518
+ .stats-day-row {
1519
+ grid-template-columns: 76px minmax(0, 1fr) 74px;
1520
+ gap: 8px;
1521
+ }
1522
+
1523
+ .stats-section-header-actions {
1524
+ width: 100%;
1525
+ margin-left: 0;
1526
+ justify-content: space-between;
1527
+ }
1528
+
1529
+ .stats-contrib-select {
1530
+ flex: 1;
1531
+ min-width: 0;
1532
+ max-width: 180px;
1533
+ }
1534
+
1535
+ .stats-contrib-frame {
1536
+ grid-template-columns: 1fr;
1537
+ }
1538
+
1539
+ .stats-contrib-weekdays {
1540
+ display: none;
1541
+ }
1542
+
1543
+ .stats-contrib-month {
1544
+ font-size: 0.6rem;
1545
+ }
1546
+
1547
+ .chat-session-token-strip {
1548
+ flex-wrap: wrap;
1549
+ gap: 8px;
1550
+ }
1203
1551
  }
1204
1552
 
1205
1553
  .chat-shell {
@@ -1671,15 +2019,23 @@ select {
1671
2019
  justify-content: space-between;
1672
2020
  align-items: center;
1673
2021
  gap: 10px;
2022
+ width: 100%;
2023
+ border: 0;
2024
+ background: transparent;
2025
+ text-align: left;
2026
+ font: inherit;
1674
2027
  padding: 8px 10px;
1675
2028
  cursor: pointer;
1676
2029
  color: var(--text-secondary);
1677
2030
  font-size: 0.78rem;
1678
- list-style: none;
2031
+ -webkit-appearance: none;
2032
+ -moz-appearance: none;
2033
+ appearance: none;
1679
2034
  }
1680
2035
 
1681
- .chat-system-prelude-summary::-webkit-details-marker {
1682
- display: none;
2036
+ .chat-system-prelude-summary:focus-visible {
2037
+ outline: 2px solid var(--accent);
2038
+ outline-offset: -2px;
1683
2039
  }
1684
2040
 
1685
2041
  .chat-system-prelude-summary-hint {
@@ -1701,24 +2057,39 @@ select {
1701
2057
  overflow-wrap: anywhere;
1702
2058
  }
1703
2059
 
1704
- .chat-model-summary {
2060
+ .chat-session-token-sticky {
1705
2061
  display: flex;
1706
- justify-content: center;
2062
+ justify-content: flex-start;
1707
2063
  margin: 0 0 10px;
1708
2064
  }
1709
2065
 
1710
- .chat-model-summary-label {
2066
+ .chat-session-token-strip {
2067
+ display: inline-flex;
2068
+ align-items: center;
2069
+ gap: 10px;
1711
2070
  border: 1px solid var(--border-subtle);
1712
- border-radius: 999px;
1713
- background: var(--bg-panel-raised);
1714
- color: var(--text-secondary);
1715
- font-size: 0.74rem;
1716
- padding: 4px 10px;
2071
+ border-radius: 8px;
2072
+ background: var(--bg-panel);
2073
+ padding: 4px 8px;
2074
+ font-size: 0.72rem;
2075
+ color: var(--text-muted);
1717
2076
  }
1718
2077
 
1719
- .chat-model-summary-label code {
2078
+ .chat-session-token-pair {
2079
+ display: inline-flex;
2080
+ align-items: center;
2081
+ gap: 4px;
2082
+ white-space: nowrap;
2083
+ }
2084
+
2085
+ .chat-session-token-key {
2086
+ color: var(--text-muted);
2087
+ }
2088
+
2089
+ .chat-session-token-value {
1720
2090
  font-family: var(--font-mono);
1721
- font-size: 0.72rem;
2091
+ font-size: 0.75rem;
2092
+ color: var(--text-secondary);
1722
2093
  }
1723
2094
 
1724
2095
  .chat-model-change {
@@ -7,8 +7,8 @@
7
7
  <link rel="icon" type="image/png" sizes="32x32" href="./assets/32x32-DQgygEFU.png" />
8
8
  <link rel="icon" type="image/png" sizes="16x16" href="./assets/16x16-B2_QkmoB.png" />
9
9
  <title>codex-devtools</title>
10
- <script type="module" crossorigin src="./assets/index-BEzdp8iI.js"></script>
11
- <link rel="stylesheet" crossorigin href="./assets/index-BTmVA30y.css">
10
+ <script type="module" crossorigin src="./assets/index-5ydAmpDO.js"></script>
11
+ <link rel="stylesheet" crossorigin href="./assets/index-Cgat1ue6.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "codex-devtools",
3
3
  "type": "module",
4
- "version": "0.1.11",
4
+ "version": "0.2.1",
5
5
  "description": "Desktop app for inspecting Codex session data",
6
6
  "license": "MIT",
7
7
  "author": {