codexmate 0.1.24 → 0.1.27

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 (50) hide show
  1. package/cli/session-usage.js +10 -4
  2. package/cli.js +737 -200
  3. package/lib/cli-sessions.js +1 -1
  4. package/package.json +3 -3
  5. package/plugins/prompt-templates/computed.mjs +1 -1
  6. package/plugins/prompt-templates/index.mjs +3 -3
  7. package/plugins/prompt-templates/manifest.mjs +5 -3
  8. package/plugins/prompt-templates/methods.mjs +9 -2
  9. package/plugins/registry.mjs +5 -2
  10. package/plugins/text-tools/computed.mjs +23 -0
  11. package/plugins/text-tools/index.mjs +14 -0
  12. package/plugins/text-tools/manifest.mjs +20 -0
  13. package/plugins/text-tools/methods.mjs +24 -0
  14. package/plugins/text-tools/overview.mjs +12 -0
  15. package/plugins/text-tools/ownership.mjs +7 -0
  16. package/tools/dev/launch.js +147 -0
  17. package/web-ui/app.js +15 -5
  18. package/web-ui/index.html +1 -2
  19. package/web-ui/logic.markdown-editor.mjs +5 -57
  20. package/web-ui/logic.prompts-token-count.mjs +49 -0
  21. package/web-ui/logic.sessions.mjs +30 -15
  22. package/web-ui/modules/app.computed.dashboard.mjs +1 -0
  23. package/web-ui/modules/app.computed.prompts.mjs +18 -0
  24. package/web-ui/modules/app.computed.session.mjs +3 -1
  25. package/web-ui/modules/app.methods.navigation.mjs +79 -3
  26. package/web-ui/modules/app.methods.prompts-editor.mjs +6 -64
  27. package/web-ui/modules/app.methods.session-actions.mjs +10 -4
  28. package/web-ui/modules/app.methods.session-browser.mjs +34 -45
  29. package/web-ui/modules/app.methods.session-timeline.mjs +1 -0
  30. package/web-ui/modules/app.methods.web-ui-preferences.mjs +7 -1
  31. package/web-ui/modules/i18n/locales/en.mjs +20 -1
  32. package/web-ui/modules/i18n/locales/ja.mjs +20 -1
  33. package/web-ui/modules/i18n/locales/vi.mjs +20 -1
  34. package/web-ui/modules/i18n/locales/zh-tw.mjs +20 -1
  35. package/web-ui/modules/i18n/locales/zh.mjs +20 -1
  36. package/web-ui/modules/plugins.computed.mjs +8 -2
  37. package/web-ui/modules/plugins.methods.mjs +8 -2
  38. package/web-ui/partials/index/layout-header.html +23 -6
  39. package/web-ui/partials/index/panel-plugins.html +45 -5
  40. package/web-ui/partials/index/panel-prompts.html +16 -17
  41. package/web-ui/partials/index/panel-sessions.html +19 -4
  42. package/web-ui/res/web-ui-render.precompiled.js +193 -93
  43. package/web-ui/session-helpers.mjs +1 -2
  44. package/web-ui/source-bundle.cjs +1 -0
  45. package/web-ui/styles/base-theme.css +24 -0
  46. package/web-ui/styles/modals-core.css +48 -0
  47. package/web-ui/styles/prompts-editor.css +3 -66
  48. package/web-ui/styles/sessions-list.css +1 -1
  49. package/web-ui/styles/sessions-preview.css +56 -7
  50. package/web-ui/styles/sessions-toolbar-trash.css +1 -7
@@ -456,6 +456,54 @@
456
456
  font-weight: var(--font-weight-secondary);
457
457
  }
458
458
 
459
+ .agents-diff-token-summary {
460
+ display: flex;
461
+ align-items: center;
462
+ gap: 8px;
463
+ margin-bottom: 8px;
464
+ font-size: var(--font-size-caption);
465
+ color: var(--color-text-tertiary);
466
+ }
467
+
468
+ .agents-diff-token-label {
469
+ display: inline-flex;
470
+ align-items: center;
471
+ }
472
+
473
+ .agents-diff-token-delta {
474
+ display: inline-flex;
475
+ align-items: center;
476
+ padding: 2px 8px;
477
+ border-radius: 999px;
478
+ border: 1px solid transparent;
479
+ font-weight: var(--font-weight-secondary);
480
+ font-variant-numeric: tabular-nums;
481
+ }
482
+
483
+ .agents-diff-token-delta--add {
484
+ color: #2b6a3b;
485
+ background: rgba(57, 181, 97, 0.12);
486
+ border-color: rgba(57, 181, 97, 0.2);
487
+ }
488
+
489
+ .agents-diff-token-delta--del {
490
+ color: #8a2f36;
491
+ background: rgba(220, 95, 108, 0.12);
492
+ border-color: rgba(220, 95, 108, 0.2);
493
+ }
494
+
495
+ .agents-diff-token-delta--same {
496
+ color: var(--color-text-tertiary);
497
+ background: rgba(127, 127, 127, 0.1);
498
+ border-color: rgba(127, 127, 127, 0.2);
499
+ }
500
+
501
+ .prompts-token-hint {
502
+ margin-left: 4px;
503
+ color: var(--color-text-tertiary);
504
+ font-variant-numeric: tabular-nums;
505
+ }
506
+
459
507
  .agents-diff-summary {
460
508
  display: flex;
461
509
  align-items: center;
@@ -1,10 +1,7 @@
1
1
  /*
2
- * Prompts-panel Markdown editor: syntax-highlight overlay, toolbar,
3
- * split live preview (desktop) and edit/preview switch (mobile).
4
- * Overlay alignment contract: the backdrop <pre> must mirror the
5
- * textarea's font, font-size, line-height, padding and white-space
6
- * exactly (.form-input padding 13px var(--spacing-sm), .template-editor
7
- * mono font 13px / 1.45, white-space pre).
2
+ * Prompts-panel Markdown editor: split live preview (desktop) and
3
+ * edit/preview switch (mobile). The editor pane itself is a plain
4
+ * textarea without any syntax-highlight overlay.
8
5
  */
9
6
 
10
7
  .prompts-md-toolbar {
@@ -125,66 +122,6 @@
125
122
  width: 100%;
126
123
  min-height: 75vh;
127
124
  max-height: none;
128
- color: transparent;
129
- caret-color: var(--color-text-primary);
130
- background: transparent;
131
- position: relative;
132
- z-index: 2;
133
- }
134
-
135
- .prompts-edit-pane .template-editor::selection {
136
- color: transparent;
137
- background: var(--color-brand-subtle);
138
- }
139
-
140
- .prompts-highlight-backdrop {
141
- position: absolute;
142
- inset: 0;
143
- z-index: 1;
144
- margin: 0;
145
- padding: 13px var(--spacing-sm);
146
- border: none;
147
- overflow: hidden;
148
- white-space: pre;
149
- font-family: var(--font-family-mono);
150
- font-size: 13px;
151
- line-height: 1.45;
152
- color: var(--color-text-primary);
153
- pointer-events: none;
154
- }
155
-
156
- /* highlight.js markdown token colors (light theme) */
157
- .prompts-highlight-backdrop .hljs-section {
158
- color: var(--color-brand-dark);
159
- font-weight: var(--font-weight-secondary);
160
- }
161
-
162
- .prompts-highlight-backdrop .hljs-strong {
163
- color: var(--color-text-primary);
164
- font-weight: 700;
165
- }
166
-
167
- .prompts-highlight-backdrop .hljs-emphasis {
168
- color: var(--color-text-secondary);
169
- font-style: italic;
170
- }
171
-
172
- .prompts-highlight-backdrop .hljs-bullet {
173
- color: var(--color-brand);
174
- }
175
-
176
- .prompts-highlight-backdrop .hljs-code {
177
- color: #7C5CBF;
178
- }
179
-
180
- .prompts-highlight-backdrop .hljs-quote {
181
- color: var(--color-text-tertiary);
182
- font-style: italic;
183
- }
184
-
185
- .prompts-highlight-backdrop .hljs-link,
186
- .prompts-highlight-backdrop .hljs-symbol {
187
- color: #3B7EA1;
188
125
  }
189
126
 
190
127
  .prompts-preview-pane {
@@ -375,7 +375,7 @@
375
375
  grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
376
376
  gap: var(--spacing-md);
377
377
  align-items: start;
378
- height: min(72vh, 760px);
378
+ height: min(760px, calc(100dvh - 340px));
379
379
  min-height: 360px;
380
380
  }
381
381
 
@@ -632,13 +632,6 @@
632
632
 
633
633
  .session-source-pills {
634
634
  max-width: 100%;
635
- overflow-x: auto;
636
- flex-wrap: nowrap;
637
- scrollbar-width: none;
638
- }
639
-
640
- .session-source-pills::-webkit-scrollbar {
641
- display: none;
642
635
  }
643
636
 
644
637
  .session-path-select,
@@ -709,3 +702,59 @@
709
702
  transform: none;
710
703
  box-shadow: none;
711
704
  }
705
+
706
+
707
+ .session-match-nav-btn {
708
+ display: inline-flex;
709
+ align-items: center;
710
+ justify-content: center;
711
+ width: 28px;
712
+ height: 28px;
713
+ padding: 0;
714
+ border: 1px solid var(--border-subtle, rgba(0, 0, 0, 0.12));
715
+ border-radius: var(--radius-sm, 6px);
716
+ background: transparent;
717
+ color: var(--text-secondary, inherit);
718
+ cursor: pointer;
719
+ }
720
+
721
+ .session-match-nav-btn svg {
722
+ width: 14px;
723
+ height: 14px;
724
+ }
725
+
726
+ .session-match-nav-btn:hover {
727
+ background: var(--bg-hover, rgba(0, 0, 0, 0.06));
728
+ }
729
+
730
+ .session-match-nav-btn[disabled] {
731
+ opacity: 0.5;
732
+ cursor: not-allowed;
733
+ }
734
+
735
+ /* Session preview jump buttons (floating bottom-right, persistent top/bottom pair) */
736
+ .session-preview-jump {
737
+ position: fixed;
738
+ right: 12px;
739
+ bottom: calc(16px + env(safe-area-inset-bottom, 0px));
740
+ z-index: 5;
741
+ display: flex;
742
+ flex-direction: column;
743
+ align-items: center;
744
+ gap: 8px;
745
+ pointer-events: none;
746
+ }
747
+
748
+ .session-preview-jump .session-match-nav-btn {
749
+ pointer-events: auto;
750
+ width: 28px;
751
+ height: 28px;
752
+ border-radius: 50%;
753
+ background: var(--color-surface-elevated, rgba(255, 255, 255, 0.92));
754
+ box-shadow: var(--shadow-float, 0 4px 16px rgba(0, 0, 0, 0.16));
755
+ }
756
+
757
+ .session-preview-jump .session-match-nav-btn svg {
758
+ width: 14px;
759
+ height: 14px;
760
+ }
@@ -151,6 +151,7 @@
151
151
 
152
152
  .session-source-pills {
153
153
  display: flex;
154
+ flex-wrap: wrap;
154
155
  gap: 3px;
155
156
  padding: 2px;
156
157
  border-radius: var(--radius-md);
@@ -611,10 +612,3 @@
611
612
  max-width: 100%;
612
613
  }
613
614
 
614
- /* ===== Session preview match highlight ===== */
615
- .session-msg-content mark {
616
- background: rgba(200, 121, 99, 0.18);
617
- color: var(--color-brand-dark);
618
- border-radius: 2px;
619
- padding: 0 1px;
620
- }