codexmate 0.0.44 → 0.0.45

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.
@@ -138,6 +138,18 @@ return function render(_ctx, _cache) {
138
138
  onPointerdown: $event => (_ctx.onMainTabPointerDown('plugins', $event)),
139
139
  onClick: $event => (_ctx.onMainTabClick('plugins', $event))
140
140
  }, _toDisplayString(_ctx.t('tab.plugins')), 43 /* TEXT, CLASS, PROPS, NEED_HYDRATION */, ["tabindex", "aria-selected", "onPointerdown", "onClick"]),
141
+ _createElementVNode("button", {
142
+ type: "button",
143
+ class: _normalizeClass(["top-tab", { active: _ctx.isMainTabNavActive('prompts') }]),
144
+ id: "tab-prompts",
145
+ role: "tab",
146
+ "data-main-tab": "prompts",
147
+ tabindex: _ctx.mainTab === 'prompts' ? 0 : -1,
148
+ "aria-selected": _ctx.mainTab === 'prompts',
149
+ "aria-controls": "panel-prompts",
150
+ onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
151
+ onClick: $event => (_ctx.onMainTabClick('prompts', $event))
152
+ }, _toDisplayString(_ctx.t('tab.prompts')), 43 /* TEXT, CLASS, PROPS, NEED_HYDRATION */, ["tabindex", "aria-selected", "onPointerdown", "onClick"]),
141
153
  _createElementVNode("button", {
142
154
  type: "button",
143
155
  class: _normalizeClass(["top-tab", { active: _ctx.isMainTabNavActive('settings') }]),
@@ -309,6 +321,41 @@ return function render(_ctx, _cache) {
309
321
  ])
310
322
  ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"])
311
323
  ], 8 /* PROPS */, ["aria-label"]),
324
+ _createElementVNode("div", {
325
+ class: "side-section",
326
+ role: "navigation",
327
+ "aria-label": _ctx.t('side.prompts')
328
+ }, [
329
+ _createElementVNode("div", { class: "side-section-title" }, _toDisplayString(_ctx.t('side.prompts')), 1 /* TEXT */),
330
+ _createElementVNode("button", {
331
+ id: "side-tab-prompts-agents",
332
+ "data-main-tab": "prompts",
333
+ "data-prompts-sub-tab": "codex",
334
+ "aria-current": _ctx.mainTab === 'prompts' && _ctx.promptsSubTab === 'codex' ? 'page' : null,
335
+ class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('prompts') && _ctx.promptsSubTab === 'codex' }]),
336
+ onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
337
+ onClick: $event => {_ctx.switchPromptsSubTab('codex'); _ctx.onMainTabClick('prompts')}
338
+ }, [
339
+ _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts.agents')), 1 /* TEXT */),
340
+ _createElementVNode("div", { class: "side-item-meta" }, [
341
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.agents.meta')), 1 /* TEXT */)
342
+ ])
343
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"]),
344
+ _createElementVNode("button", {
345
+ id: "side-tab-prompts-claude",
346
+ "data-main-tab": "prompts",
347
+ "data-prompts-sub-tab": "claude-md",
348
+ "aria-current": _ctx.mainTab === 'prompts' && _ctx.promptsSubTab === 'claude-md' ? 'page' : null,
349
+ class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('prompts') && _ctx.promptsSubTab === 'claude-md' }]),
350
+ onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
351
+ onClick: $event => {_ctx.switchPromptsSubTab('claude-md'); _ctx.onMainTabClick('prompts')}
352
+ }, [
353
+ _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts.claude')), 1 /* TEXT */),
354
+ _createElementVNode("div", { class: "side-item-meta" }, [
355
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.claude.meta')), 1 /* TEXT */)
356
+ ])
357
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"])
358
+ ], 8 /* PROPS */, ["aria-label"]),
312
359
  _createElementVNode("div", {
313
360
  class: "side-section",
314
361
  role: "navigation",
@@ -1058,16 +1105,6 @@ return function render(_ctx, _cache) {
1058
1105
  ])
1059
1106
  ]))
1060
1107
  : _createCommentVNode("v-if", true),
1061
- _createElementVNode("div", { class: "selector-section" }, [
1062
- _createElementVNode("div", { class: "selector-header" }, [
1063
- _createElementVNode("span", { class: "selector-title" }, "AGENTS.md")
1064
- ]),
1065
- _createElementVNode("button", {
1066
- class: "btn-tool",
1067
- onClick: _ctx.openAgentsEditor,
1068
- disabled: _ctx.loading || !!_ctx.initError || _ctx.agentsLoading
1069
- }, _toDisplayString(_ctx.agentsLoading ? _ctx.t('config.modelLoading') : _ctx.t('config.agents.open')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
1070
- ]),
1071
1108
  _createElementVNode("div", { class: "selector-section" }, [
1072
1109
  _createElementVNode("div", { class: "selector-header" }, [
1073
1110
  _createElementVNode("span", { class: "selector-title" }, _toDisplayString(_ctx.t('config.models')), 1 /* TEXT */),
@@ -1821,17 +1858,6 @@ return function render(_ctx, _cache) {
1821
1858
  disabled: _ctx.loading || !!_ctx.initError
1822
1859
  }, _toDisplayString(_ctx.t('config.template.openEditor')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
1823
1860
  ]),
1824
- _createElementVNode("div", { class: "selector-section" }, [
1825
- _createElementVNode("div", { class: "selector-header" }, [
1826
- _createElementVNode("span", { class: "selector-title" }, "CLAUDE.md")
1827
- ]),
1828
- _createElementVNode("button", {
1829
- class: "btn-tool",
1830
- onClick: _ctx.openClaudeMdEditor,
1831
- disabled: _ctx.loading || !!_ctx.initError || _ctx.agentsLoading
1832
- }, _toDisplayString(_ctx.agentsLoading ? _ctx.t('config.modelLoading') : _ctx.t('claude.md.open')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
1833
- _createElementVNode("div", { class: "config-template-hint" }, _toDisplayString(_ctx.t('claude.md.hint')), 1 /* TEXT */)
1834
- ]),
1835
1861
  _createElementVNode("div", { class: "selector-section" }, [
1836
1862
  _createElementVNode("div", { class: "selector-header" }, [
1837
1863
  _createElementVNode("span", { class: "selector-title" }, _toDisplayString(_ctx.t('config.health.title')), 1 /* TEXT */)
@@ -2650,31 +2676,163 @@ return function render(_ctx, _cache) {
2650
2676
  _createElementVNode("button", {
2651
2677
  class: "btn-session-refresh",
2652
2678
  onClick: _ctx.loadActiveSessionDetail,
2653
- disabled: _ctx.sessionDetailLoading || !_ctx.activeSession
2654
- }, _toDisplayString(_ctx.sessionDetailLoading ? _ctx.t('sessions.preview.loading') : _ctx.t('sessions.preview.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
2679
+ disabled: _ctx.sessionDetailLoading || !_ctx.activeSession,
2680
+ title: _ctx.sessionDetailLoading ? _ctx.t('sessions.preview.loading') : _ctx.t('sessions.preview.refresh'),
2681
+ "aria-label": _ctx.sessionDetailLoading ? _ctx.t('sessions.preview.loading') : _ctx.t('sessions.preview.refresh')
2682
+ }, [
2683
+ (_openBlock(), _createElementBlock("svg", {
2684
+ viewBox: "0 0 16 16",
2685
+ fill: "none",
2686
+ stroke: "currentColor",
2687
+ "stroke-width": "1.8",
2688
+ "stroke-linecap": "round",
2689
+ "stroke-linejoin": "round"
2690
+ }, [
2691
+ _createElementVNode("path", { d: "M2.5 8a5.5 5.5 0 0 1 9.4-3.8" }),
2692
+ _createElementVNode("path", { d: "M13.5 8a5.5 5.5 0 0 1-9.4 3.8" }),
2693
+ _createElementVNode("polyline", { points: "2.5 2 2.5 5 5.5 5" }),
2694
+ _createElementVNode("polyline", { points: "13.5 14 13.5 11 10.5 11" })
2695
+ ]))
2696
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"]),
2655
2697
  (_ctx.isDeleteAvailable(_ctx.activeSession))
2656
2698
  ? (_openBlock(), _createElementBlock("button", {
2657
2699
  key: 0,
2658
2700
  class: "btn-session-delete",
2659
2701
  onClick: $event => (_ctx.deleteSession(_ctx.activeSession)),
2660
- disabled: !_ctx.activeSession || _ctx.sessionsLoading || _ctx.sessionDeleting[_ctx.getSessionExportKey(_ctx.activeSession)]
2661
- }, _toDisplayString((_ctx.activeSession && _ctx.sessionDeleting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleting') : _ctx.t('sessions.preview.moving')) : (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleteHard') : _ctx.t('sessions.preview.moveToTrash'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
2702
+ disabled: !_ctx.activeSession || _ctx.sessionsLoading || _ctx.sessionDeleting[_ctx.getSessionExportKey(_ctx.activeSession)],
2703
+ title: (_ctx.activeSession && _ctx.sessionDeleting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleting') : _ctx.t('sessions.preview.moving')) : (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleteHard') : _ctx.t('sessions.preview.moveToTrash')),
2704
+ "aria-label": (_ctx.activeSession && _ctx.sessionDeleting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleting') : _ctx.t('sessions.preview.moving')) : (_ctx.sessionTrashEnabled === false ? _ctx.t('sessions.preview.deleteHard') : _ctx.t('sessions.preview.moveToTrash'))
2705
+ }, [
2706
+ (_openBlock(), _createElementBlock("svg", {
2707
+ viewBox: "0 0 16 16",
2708
+ fill: "none",
2709
+ stroke: "currentColor",
2710
+ "stroke-width": "1.8",
2711
+ "stroke-linecap": "round",
2712
+ "stroke-linejoin": "round"
2713
+ }, [
2714
+ _createElementVNode("polyline", { points: "3 4 4 4 13 4" }),
2715
+ _createElementVNode("path", { d: "M5.5 4V2.5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1V4" }),
2716
+ _createElementVNode("path", { d: "M12 4v9.5a1.5 1.5 0 0 1-1.5 1.5h-5A1.5 1.5 0 0 1 4 13.5V4" })
2717
+ ]))
2718
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"]))
2662
2719
  : _createCommentVNode("v-if", true),
2663
2720
  _createElementVNode("button", {
2664
2721
  class: "btn-session-export",
2665
2722
  onClick: $event => (_ctx.exportSession(_ctx.activeSession)),
2666
- disabled: !_ctx.activeSession || _ctx.sessionExporting[_ctx.getSessionExportKey(_ctx.activeSession)]
2667
- }, _toDisplayString((_ctx.activeSession && _ctx.sessionExporting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? _ctx.t('sessions.preview.exporting') : _ctx.t('sessions.preview.export')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
2668
- _createElementVNode("button", {
2669
- class: "btn-session-open",
2670
- onClick: $event => (_ctx.copySessionLink(_ctx.activeSession)),
2671
- disabled: !_ctx.activeSession
2672
- }, _toDisplayString(_ctx.t('sessions.preview.copyLink')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
2723
+ disabled: !_ctx.activeSession || _ctx.sessionExporting[_ctx.getSessionExportKey(_ctx.activeSession)],
2724
+ title: (_ctx.activeSession && _ctx.sessionExporting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? _ctx.t('sessions.preview.exporting') : _ctx.t('sessions.preview.export'),
2725
+ "aria-label": (_ctx.activeSession && _ctx.sessionExporting[_ctx.getSessionExportKey(_ctx.activeSession)]) ? _ctx.t('sessions.preview.exporting') : _ctx.t('sessions.preview.export')
2726
+ }, [
2727
+ (_openBlock(), _createElementBlock("svg", {
2728
+ viewBox: "0 0 16 16",
2729
+ fill: "none",
2730
+ stroke: "currentColor",
2731
+ "stroke-width": "1.8",
2732
+ "stroke-linecap": "round",
2733
+ "stroke-linejoin": "round"
2734
+ }, [
2735
+ _createElementVNode("path", { d: "M8 2v8" }),
2736
+ _createElementVNode("polyline", { points: "4 7 8 10.5 12 7" }),
2737
+ _createElementVNode("path", { d: "M2.5 12v1.5a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V12" })
2738
+ ]))
2739
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"]),
2740
+ _createElementVNode("div", { class: "session-link-group" }, [
2741
+ _createElementVNode("button", {
2742
+ class: "btn-session-open",
2743
+ onClick: $event => (_ctx.copySessionLink(_ctx.activeSession)),
2744
+ disabled: !_ctx.activeSession || !_ctx.canBuildStandaloneUrl(_ctx.activeSession),
2745
+ title: _ctx.t('sessions.preview.copyLink'),
2746
+ "aria-label": _ctx.t('sessions.preview.copyLink')
2747
+ }, [
2748
+ (_openBlock(), _createElementBlock("svg", {
2749
+ viewBox: "0 0 16 16",
2750
+ fill: "none",
2751
+ stroke: "currentColor",
2752
+ "stroke-width": "1.8",
2753
+ "stroke-linecap": "round",
2754
+ "stroke-linejoin": "round"
2755
+ }, [
2756
+ _createElementVNode("rect", {
2757
+ x: "6",
2758
+ y: "2.5",
2759
+ width: "4",
2760
+ height: "2",
2761
+ rx: "1"
2762
+ }),
2763
+ _createElementVNode("path", { d: "M4.5 4h7a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5" }),
2764
+ _createElementVNode("line", {
2765
+ x1: "6",
2766
+ y1: "7.5",
2767
+ x2: "10",
2768
+ y2: "7.5"
2769
+ }),
2770
+ _createElementVNode("line", {
2771
+ x1: "6",
2772
+ y1: "10",
2773
+ x2: "10",
2774
+ y2: "10"
2775
+ })
2776
+ ]))
2777
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"]),
2778
+ _createElementVNode("button", {
2779
+ class: "btn-session-open",
2780
+ onClick: $event => (_ctx.openSessionLink(_ctx.activeSession)),
2781
+ disabled: !_ctx.activeSession || !_ctx.canBuildStandaloneUrl(_ctx.activeSession),
2782
+ title: _ctx.t('sessions.preview.openLink'),
2783
+ "aria-label": _ctx.t('sessions.preview.openLink')
2784
+ }, [
2785
+ (_openBlock(), _createElementBlock("svg", {
2786
+ viewBox: "0 0 16 16",
2787
+ fill: "none",
2788
+ stroke: "currentColor",
2789
+ "stroke-width": "1.8",
2790
+ "stroke-linecap": "round",
2791
+ "stroke-linejoin": "round"
2792
+ }, [
2793
+ _createElementVNode("path", { d: "M12 2h-8.5A1.5 1.5 0 0 0 2 3.5v8A1.5 1.5 0 0 0 3.5 13h8a1.5 1.5 0 0 0 1.5-1.5v-3" }),
2794
+ _createElementVNode("path", { d: "M13 2v4h-4" }),
2795
+ _createElementVNode("path", { d: "M13 2L7 8" })
2796
+ ]))
2797
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"])
2798
+ ]),
2673
2799
  _createElementVNode("button", {
2674
2800
  class: "btn-session-open",
2675
2801
  onClick: $event => (_ctx.copySessionPath(_ctx.activeSession)),
2676
- disabled: !_ctx.activeSession || !_ctx.getSessionFilePath(_ctx.activeSession)
2677
- }, _toDisplayString(_ctx.t('sessions.preview.copyPath')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
2802
+ disabled: !_ctx.activeSession || !_ctx.getSessionFilePath(_ctx.activeSession),
2803
+ title: _ctx.t('sessions.preview.copyPath'),
2804
+ "aria-label": _ctx.t('sessions.preview.copyPath')
2805
+ }, [
2806
+ (_openBlock(), _createElementBlock("svg", {
2807
+ viewBox: "0 0 16 16",
2808
+ fill: "none",
2809
+ stroke: "currentColor",
2810
+ "stroke-width": "1.8",
2811
+ "stroke-linecap": "round",
2812
+ "stroke-linejoin": "round"
2813
+ }, [
2814
+ _createElementVNode("rect", {
2815
+ x: "6",
2816
+ y: "2.5",
2817
+ width: "4",
2818
+ height: "2",
2819
+ rx: "1"
2820
+ }),
2821
+ _createElementVNode("path", { d: "M4.5 4h7a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5" }),
2822
+ _createElementVNode("line", {
2823
+ x1: "6",
2824
+ y1: "7.5",
2825
+ x2: "10",
2826
+ y2: "7.5"
2827
+ }),
2828
+ _createElementVNode("line", {
2829
+ x1: "6",
2830
+ y1: "10",
2831
+ x2: "10",
2832
+ y2: "10"
2833
+ })
2834
+ ]))
2835
+ ], 8 /* PROPS */, ["onClick", "disabled", "title", "aria-label"])
2678
2836
  ])
2679
2837
  ], 512 /* NEED_PATCH */),
2680
2838
  (_ctx.sessionDetailLoading && !_ctx.sessionPreviewLoadingMore)
@@ -2980,80 +3138,106 @@ return function render(_ctx, _cache) {
2980
3138
  }, [
2981
3139
  _createElementVNode("div", { class: "usage-card-title" }, _toDisplayString(_ctx.t('usage.daily.title')), 1 /* TEXT */),
2982
3140
  _createElementVNode("div", { class: "usage-wave-container" }, [
2983
- (_openBlock(), _createElementBlock("svg", {
2984
- class: "usage-wave-chart",
2985
- viewBox: "0 0 800 140",
2986
- preserveAspectRatio: "none"
2987
- }, [
2988
- _createElementVNode("defs", null, [
2989
- _createElementVNode("linearGradient", {
2990
- id: 'wave-gradient-' + _ctx.sessionsUsageTimeRange,
2991
- x1: "0",
2992
- y1: "0",
2993
- x2: "0",
2994
- y2: "1"
2995
- }, [
2996
- _createElementVNode("stop", {
2997
- offset: "0%",
2998
- "stop-color": 'var(--color-brand)',
2999
- "stop-opacity": "0.35"
3000
- }),
3001
- _createElementVNode("stop", {
3002
- offset: "100%",
3003
- "stop-color": 'var(--color-brand)',
3004
- "stop-opacity": "0"
3005
- })
3006
- ], 8 /* PROPS */, ["id"])
3007
- ]),
3008
- _createElementVNode("path", {
3009
- d: _ctx.sessionUsageWave.areaPath,
3010
- fill: 'url(#wave-gradient-' + _ctx.sessionsUsageTimeRange + ')',
3011
- class: "usage-wave-area"
3012
- }, null, 8 /* PROPS */, ["d", "fill"]),
3013
- _createElementVNode("path", {
3014
- d: _ctx.sessionUsageWave.linePath,
3015
- fill: "none",
3016
- stroke: 'var(--color-brand)',
3017
- "stroke-width": "2.5",
3018
- "stroke-linecap": "round",
3019
- "stroke-linejoin": "round",
3020
- class: "usage-wave-line"
3021
- }, null, 8 /* PROPS */, ["d"]),
3022
- (_ctx.sessionsUsageSelectedDay)
3023
- ? (_openBlock(), _createElementBlock("line", {
3024
- key: 0,
3141
+ _createElementVNode("div", { class: "usage-wave-yaxis" }, [
3142
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionUsageWave.yTicks, (tick) => {
3143
+ return (_openBlock(), _createElementBlock("span", {
3144
+ key: tick.value,
3145
+ class: "usage-wave-ytick",
3146
+ style: _normalizeStyle({ bottom: tick.percent + '%' })
3147
+ }, _toDisplayString(tick.label), 5 /* TEXT, STYLE */))
3148
+ }), 128 /* KEYED_FRAGMENT */))
3149
+ ]),
3150
+ _createElementVNode("div", { class: "usage-wave-chart-area" }, [
3151
+ (_openBlock(), _createElementBlock("svg", {
3152
+ class: "usage-wave-chart",
3153
+ viewBox: "0 0 800 140",
3154
+ preserveAspectRatio: "none"
3155
+ }, [
3156
+ _createElementVNode("defs", null, [
3157
+ _createElementVNode("linearGradient", {
3158
+ id: 'wave-gradient-' + _ctx.sessionsUsageTimeRange,
3159
+ x1: "0",
3160
+ y1: "0",
3161
+ x2: "0",
3162
+ y2: "1"
3163
+ }, [
3164
+ _createElementVNode("stop", {
3165
+ offset: "0%",
3166
+ "stop-color": 'var(--color-brand)',
3167
+ "stop-opacity": "0.35"
3168
+ }),
3169
+ _createElementVNode("stop", {
3170
+ offset: "100%",
3171
+ "stop-color": 'var(--color-brand)',
3172
+ "stop-opacity": "0"
3173
+ })
3174
+ ], 8 /* PROPS */, ["id"])
3175
+ ]),
3176
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionUsageWave.yTicks, (tick) => {
3177
+ return (_openBlock(), _createElementBlock("line", {
3178
+ key: 'g-' + tick.value,
3025
3179
  x1: "0",
3026
3180
  x2: _ctx.sessionUsageWave.width,
3027
- y1: _ctx.sessionUsageWave.hoverY,
3028
- y2: _ctx.sessionUsageWave.hoverY,
3181
+ y1: tick.y,
3182
+ y2: tick.y,
3029
3183
  stroke: "currentColor",
3030
- "stroke-width": "1",
3031
- "stroke-dasharray": "4 4",
3032
- opacity: "0.5",
3033
- class: "usage-wave-hover-line"
3184
+ "stroke-width": "0.5",
3185
+ opacity: "0.12",
3186
+ class: "usage-wave-gridline"
3034
3187
  }, null, 8 /* PROPS */, ["x2", "y1", "y2"]))
3035
- : _createCommentVNode("v-if", true),
3036
- (_ctx.sessionsUsageSelectedDay)
3037
- ? (_openBlock(), _createElementBlock("circle", {
3038
- key: 1,
3039
- cx: _ctx.sessionUsageWave.hoverX,
3040
- cy: _ctx.sessionUsageWave.hoverY,
3041
- r: "5",
3042
- fill: 'var(--color-surface)',
3043
- stroke: 'var(--color-brand)',
3044
- "stroke-width": "2.5",
3045
- class: "usage-wave-hover-point"
3046
- }, null, 8 /* PROPS */, ["cx", "cy"]))
3047
- : _createCommentVNode("v-if", true)
3048
- ])),
3049
- _createElementVNode("div", { class: "usage-wave-labels" }, [
3050
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionUsageWave.labels, (label) => {
3051
- return (_openBlock(), _createElementBlock("span", {
3052
- key: label.key,
3053
- class: _normalizeClass(["usage-wave-label", { active: _ctx.sessionsUsageSelectedDay === label.key }]),
3054
- onClick: $event => (_ctx.selectSessionsUsageDay(label.key))
3055
- }, _toDisplayString(label.text), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
3056
- }), 128 /* KEYED_FRAGMENT */))
3188
+ }), 128 /* KEYED_FRAGMENT */)),
3189
+ _createElementVNode("path", {
3190
+ d: _ctx.sessionUsageWave.areaPath,
3191
+ fill: 'url(#wave-gradient-' + _ctx.sessionsUsageTimeRange + ')',
3192
+ class: "usage-wave-area"
3193
+ }, null, 8 /* PROPS */, ["d", "fill"]),
3194
+ _createElementVNode("path", {
3195
+ d: _ctx.sessionUsageWave.linePath,
3196
+ fill: "none",
3197
+ stroke: 'var(--color-brand)',
3198
+ "stroke-width": "2.5",
3199
+ "stroke-linecap": "round",
3200
+ "stroke-linejoin": "round",
3201
+ class: "usage-wave-line"
3202
+ }, null, 8 /* PROPS */, ["d"]),
3203
+ (_ctx.sessionsUsageSelectedDay)
3204
+ ? (_openBlock(), _createElementBlock("line", {
3205
+ key: 0,
3206
+ x1: "0",
3207
+ x2: _ctx.sessionUsageWave.width,
3208
+ y1: _ctx.sessionUsageWave.hoverY,
3209
+ y2: _ctx.sessionUsageWave.hoverY,
3210
+ stroke: "currentColor",
3211
+ "stroke-width": "1",
3212
+ "stroke-dasharray": "4 4",
3213
+ opacity: "0.5",
3214
+ class: "usage-wave-hover-line"
3215
+ }, null, 8 /* PROPS */, ["x2", "y1", "y2"]))
3216
+ : _createCommentVNode("v-if", true),
3217
+ (_ctx.sessionsUsageSelectedDay)
3218
+ ? (_openBlock(), _createElementBlock("circle", {
3219
+ key: 1,
3220
+ cx: _ctx.sessionUsageWave.hoverX,
3221
+ cy: _ctx.sessionUsageWave.hoverY,
3222
+ r: "5",
3223
+ fill: 'var(--color-surface)',
3224
+ stroke: 'var(--color-brand)',
3225
+ "stroke-width": "2.5",
3226
+ class: "usage-wave-hover-point"
3227
+ }, null, 8 /* PROPS */, ["cx", "cy"]))
3228
+ : _createCommentVNode("v-if", true)
3229
+ ])),
3230
+ _createElementVNode("div", { class: "usage-wave-labels" }, [
3231
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionUsageWave.labels, (label) => {
3232
+ return (_openBlock(), _createElementBlock("button", {
3233
+ key: label.key,
3234
+ type: "button",
3235
+ class: _normalizeClass(["usage-wave-label", { active: _ctx.sessionsUsageSelectedDay === label.key }]),
3236
+ "aria-pressed": _ctx.sessionsUsageSelectedDay === label.key,
3237
+ onClick: $event => (_ctx.selectSessionsUsageDay(label.key))
3238
+ }, _toDisplayString(label.text), 11 /* TEXT, CLASS, PROPS */, ["aria-pressed", "onClick"]))
3239
+ }), 128 /* KEYED_FRAGMENT */))
3240
+ ])
3057
3241
  ])
3058
3242
  ]),
3059
3243
  (_ctx.sessionsUsageSelectedDaySummary)
@@ -5364,15 +5548,169 @@ return function render(_ctx, _cache) {
5364
5548
  style: {"display":"none"},
5365
5549
  onChange: _ctx.handlePromptTemplatesImportChange
5366
5550
  }, null, 40 /* PROPS, NEED_HYDRATION */, ["onChange"]),
5367
- _createCommentVNode(" 加载状态 "),
5368
- (_ctx.loading)
5551
+ _createCommentVNode(" Prompts editor "),
5552
+ (_ctx.mainTab === 'prompts')
5369
5553
  ? (_openBlock(), _createElementBlock("div", {
5370
5554
  key: 1,
5555
+ class: "mode-content mode-cards",
5556
+ id: "panel-prompts",
5557
+ role: "tabpanel",
5558
+ "aria-labelledby": "tab-prompts"
5559
+ }, [
5560
+ _createElementVNode("div", { class: "segmented-control" }, [
5561
+ _createElementVNode("button", {
5562
+ type: "button",
5563
+ class: _normalizeClass(['segment', { active: _ctx.promptsSubTab === 'codex' }]),
5564
+ onClick: $event => (_ctx.switchPromptsSubTab('codex'))
5565
+ }, _toDisplayString(_ctx.t('prompts.subTab.codex')), 11 /* TEXT, CLASS, PROPS */, ["onClick"]),
5566
+ _createElementVNode("button", {
5567
+ type: "button",
5568
+ class: _normalizeClass(['segment', { active: _ctx.promptsSubTab === 'claude-md' }]),
5569
+ onClick: $event => (_ctx.switchPromptsSubTab('claude-md'))
5570
+ }, _toDisplayString(_ctx.t('prompts.subTab.claude')), 11 /* TEXT, CLASS, PROPS */, ["onClick"])
5571
+ ]),
5572
+ _createElementVNode("div", { class: "prompts-editor" }, [
5573
+ _createElementVNode("div", { class: "prompts-editor-toolbar" }, [
5574
+ _createElementVNode("div", { class: "form-hint" }, [
5575
+ _createTextVNode(_toDisplayString(_ctx.agentsPath || _ctx.t('common.notLoaded')) + " ", 1 /* TEXT */),
5576
+ (_ctx.agentsPath)
5577
+ ? (_openBlock(), _createElementBlock("span", { key: 0 }, " (" + _toDisplayString(_ctx.agentsExists ? _ctx.t('common.exists') : _ctx.t('common.notExistsWillCreateOnSave')) + ") ", 1 /* TEXT */))
5578
+ : _createCommentVNode("v-if", true)
5579
+ ]),
5580
+ _createElementVNode("div", { class: "prompts-editor-actions" }, [
5581
+ _createElementVNode("div", { class: "prompts-editor-group prompts-editor-group--secondary" }, [
5582
+ _createElementVNode("button", {
5583
+ class: "btn-mini",
5584
+ onClick: _ctx.exportAgentsContent,
5585
+ disabled: _ctx.agentsLoading
5586
+ }, _toDisplayString(_ctx.t('modal.agents.export')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
5587
+ _createElementVNode("button", {
5588
+ class: "btn-mini",
5589
+ onClick: _ctx.copyAgentsContent,
5590
+ disabled: _ctx.agentsLoading
5591
+ }, _toDisplayString(_ctx.t('modal.agents.copy')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
5592
+ _createElementVNode("button", {
5593
+ class: "btn-mini",
5594
+ onClick: _ctx.pasteAgentsContent,
5595
+ disabled: _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible
5596
+ }, _toDisplayString(_ctx.t('common.paste')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
5597
+ ]),
5598
+ _createElementVNode("div", { class: "prompts-editor-group prompts-editor-group--workflow" }, [
5599
+ _createElementVNode("button", {
5600
+ class: "btn-mini",
5601
+ onClick: _ctx.loadPromptsContent,
5602
+ disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
5603
+ }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
5604
+ (_ctx.agentsDiffVisible)
5605
+ ? (_openBlock(), _createElementBlock("button", {
5606
+ key: 0,
5607
+ class: "btn-mini",
5608
+ onClick: _ctx.resetAgentsDiffState,
5609
+ disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
5610
+ }, _toDisplayString(_ctx.t('common.backToEdit')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
5611
+ : _createCommentVNode("v-if", true),
5612
+ _createElementVNode("button", {
5613
+ class: "btn-mini btn-confirm-mini",
5614
+ onClick: _ctx.applyAgentsContent,
5615
+ disabled: _ctx.agentsSaving || _ctx.agentsLoading || _ctx.agentsDiffLoading || (!_ctx.agentsDiffVisible && !_ctx.hasAgentsContentChanged()) || (_ctx.agentsDiffVisible && !_ctx.agentsDiffHasChanges)
5616
+ }, _toDisplayString(_ctx.agentsSaving ? (_ctx.agentsDiffVisible ? _ctx.t('common.saving') : _ctx.t('common.previewing')) : (_ctx.agentsDiffVisible ? _ctx.t('common.save') : _ctx.t('common.preview'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
5617
+ ])
5618
+ ])
5619
+ ]),
5620
+ _createElementVNode("div", { class: "form-group" }, [
5621
+ (_ctx.agentsDiffVisible)
5622
+ ? (_openBlock(), _createElementBlock("div", { key: 0 }, [
5623
+ (!_ctx.agentsDiffLoading && !_ctx.agentsDiffError && !_ctx.agentsDiffTruncated && (_ctx.agentsDiffStats.added || _ctx.agentsDiffStats.removed))
5624
+ ? (_openBlock(), _createElementBlock("div", {
5625
+ key: 0,
5626
+ class: "agents-diff-summary"
5627
+ }, [
5628
+ _createElementVNode("span", { class: "agents-diff-stat add" }, "+" + _toDisplayString(_ctx.agentsDiffStats.added), 1 /* TEXT */),
5629
+ _createElementVNode("span", { class: "agents-diff-stat del" }, "-" + _toDisplayString(_ctx.agentsDiffStats.removed), 1 /* TEXT */)
5630
+ ]))
5631
+ : _createCommentVNode("v-if", true),
5632
+ (_ctx.agentsDiffLoading)
5633
+ ? (_openBlock(), _createElementBlock("div", {
5634
+ key: 1,
5635
+ class: "state-message"
5636
+ }, _toDisplayString(_ctx.t('diff.generating')), 1 /* TEXT */))
5637
+ : (_ctx.agentsDiffError)
5638
+ ? (_openBlock(), _createElementBlock("div", {
5639
+ key: 2,
5640
+ class: "state-message error"
5641
+ }, _toDisplayString(_ctx.agentsDiffError), 1 /* TEXT */))
5642
+ : (_ctx.agentsDiffTruncated)
5643
+ ? (_openBlock(), _createElementBlock("div", {
5644
+ key: 3,
5645
+ class: "agents-diff-empty"
5646
+ }, _toDisplayString(_ctx.t('diff.tooLargeSkip')), 1 /* TEXT */))
5647
+ : (!_ctx.agentsDiffHasChanges)
5648
+ ? (_openBlock(), _createElementBlock("div", {
5649
+ key: 4,
5650
+ class: "agents-diff-empty"
5651
+ }, _toDisplayString(_ctx.t('diff.noChanges')), 1 /* TEXT */))
5652
+ : (_openBlock(), _createElementBlock("div", {
5653
+ key: 5,
5654
+ class: "agents-diff-view agents-diff-editor"
5655
+ }, [
5656
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.agentsDiffLines, (line, index) => {
5657
+ return (_openBlock(), _createElementBlock("div", {
5658
+ key: line.key || (line.type + '-' + index),
5659
+ class: _normalizeClass(['agents-diff-line', line.type])
5660
+ }, [
5661
+ _createElementVNode("span", { class: "agents-diff-line-sign" }, _toDisplayString(line.type === 'add' ? '+' : (line.type === 'del' ? '-' : ' ')), 1 /* TEXT */),
5662
+ _createElementVNode("span", { class: "agents-diff-line-text" }, _toDisplayString(line.value), 1 /* TEXT */)
5663
+ ], 2 /* CLASS */))
5664
+ }), 128 /* KEYED_FRAGMENT */))
5665
+ ]))
5666
+ ]))
5667
+ : _createCommentVNode("v-if", true),
5668
+ _createElementVNode("div", {
5669
+ class: _normalizeClass(['editor-frame', { 'editor-frame--loading': _ctx.agentsLoading }])
5670
+ }, [
5671
+ (_ctx.agentsLoading)
5672
+ ? (_openBlock(), _createElementBlock("div", {
5673
+ key: 0,
5674
+ class: "editor-skeleton"
5675
+ }, [
5676
+ (_openBlock(), _createElementBlock(_Fragment, null, _renderList(6, (i) => {
5677
+ return _createElementVNode("div", {
5678
+ class: "skeleton-line",
5679
+ key: i
5680
+ })
5681
+ }), 64 /* STABLE_FRAGMENT */))
5682
+ ]))
5683
+ : _createCommentVNode("v-if", true),
5684
+ _withDirectives(_createElementVNode("textarea", {
5685
+ "onUpdate:modelValue": $event => ((_ctx.agentsContent) = $event),
5686
+ class: "form-input template-editor",
5687
+ spellcheck: "false",
5688
+ readonly: _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible,
5689
+ onInput: _ctx.onAgentsContentInput,
5690
+ placeholder: _ctx.t(_ctx.promptsSubTab === 'claude-md' ? 'modal.agents.placeholder.claudeMd' : 'modal.agents.placeholder')
5691
+ }, null, 40 /* PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "readonly", "onInput", "placeholder"]), [
5692
+ [_vModelText, _ctx.agentsContent]
5693
+ ])
5694
+ ], 2 /* CLASS */),
5695
+ (_ctx.promptsContextHint)
5696
+ ? (_openBlock(), _createElementBlock("div", {
5697
+ key: 1,
5698
+ class: _normalizeClass(['prompts-context-hint', { 'prompts-context-hint--warn': _ctx.promptsContextHint.warn }])
5699
+ }, _toDisplayString(_ctx.promptsContextHint.text), 3 /* TEXT, CLASS */))
5700
+ : _createCommentVNode("v-if", true)
5701
+ ])
5702
+ ])
5703
+ ]))
5704
+ : _createCommentVNode("v-if", true),
5705
+ _createCommentVNode(" 加载状态 "),
5706
+ (_ctx.loading && _ctx.mainTab !== 'usage')
5707
+ ? (_openBlock(), _createElementBlock("div", {
5708
+ key: 2,
5371
5709
  class: "state-message"
5372
5710
  }, _toDisplayString(_ctx.t('app.loadingConfig')), 1 /* TEXT */))
5373
5711
  : (_ctx.initError)
5374
5712
  ? (_openBlock(), _createElementBlock("div", {
5375
- key: 2,
5713
+ key: 3,
5376
5714
  class: "state-message error"
5377
5715
  }, [
5378
5716
  _createCommentVNode(" 错误状态 "),
@@ -7187,7 +7525,26 @@ return function render(_ctx, _cache) {
7187
7525
  class: "btn-mini btn-modal-copy",
7188
7526
  onClick: _ctx.pasteAgentsContent,
7189
7527
  disabled: _ctx.agentsLoading || _ctx.agentsSaving || _ctx.agentsDiffVisible
7190
- }, _toDisplayString(_ctx.t('common.paste')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
7528
+ }, _toDisplayString(_ctx.t('common.paste')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
7529
+ _createElementVNode("span", { class: "prompts-editor-actions-sep" }),
7530
+ _createElementVNode("button", {
7531
+ class: "btn-mini",
7532
+ onClick: _ctx.closeAgentsModal,
7533
+ disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
7534
+ }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
7535
+ (_ctx.agentsDiffVisible)
7536
+ ? (_openBlock(), _createElementBlock("button", {
7537
+ key: 0,
7538
+ class: "btn-mini",
7539
+ onClick: _ctx.resetAgentsDiffState,
7540
+ disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
7541
+ }, _toDisplayString(_ctx.t('common.backToEdit')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
7542
+ : _createCommentVNode("v-if", true),
7543
+ _createElementVNode("button", {
7544
+ class: "btn-mini btn-confirm-mini",
7545
+ onClick: _ctx.applyAgentsContent,
7546
+ disabled: _ctx.agentsSaving || _ctx.agentsLoading || _ctx.agentsDiffLoading || (_ctx.agentsDiffVisible && !_ctx.agentsDiffHasChanges)
7547
+ }, _toDisplayString(_ctx.agentsSaving ? (_ctx.agentsDiffVisible ? _ctx.t('common.saving') : _ctx.t('common.previewing')) : (_ctx.agentsDiffVisible ? _ctx.t('common.save') : _ctx.t('common.preview'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
7191
7548
  ])
7192
7549
  ]),
7193
7550
  _createElementVNode("div", { class: "modal-editor-body" }, [
@@ -7299,26 +7656,6 @@ return function render(_ctx, _cache) {
7299
7656
  }, _toDisplayString(_ctx.t('diff.viewHint.preview')), 1 /* TEXT */))
7300
7657
  ])
7301
7658
  ])
7302
- ]),
7303
- _createElementVNode("div", { class: "btn-group modal-editor-footer" }, [
7304
- _createElementVNode("button", {
7305
- class: "btn btn-cancel",
7306
- onClick: _ctx.closeAgentsModal,
7307
- disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
7308
- }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
7309
- (_ctx.agentsDiffVisible)
7310
- ? (_openBlock(), _createElementBlock("button", {
7311
- key: 0,
7312
- class: "btn",
7313
- onClick: _ctx.resetAgentsDiffState,
7314
- disabled: _ctx.agentsSaving || _ctx.agentsDiffLoading
7315
- }, _toDisplayString(_ctx.t('common.backToEdit')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
7316
- : _createCommentVNode("v-if", true),
7317
- _createElementVNode("button", {
7318
- class: "btn btn-confirm",
7319
- onClick: _ctx.applyAgentsContent,
7320
- disabled: _ctx.agentsSaving || _ctx.agentsLoading || _ctx.agentsDiffLoading || (_ctx.agentsDiffVisible && !_ctx.agentsDiffHasChanges)
7321
- }, _toDisplayString(_ctx.agentsSaving ? (_ctx.agentsDiffVisible ? _ctx.t('common.applying') : _ctx.t('common.confirming')) : (_ctx.agentsDiffVisible ? _ctx.t('common.apply') : _ctx.t('common.confirm'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
7322
7659
  ])
7323
7660
  ])
7324
7661
  ], 8 /* PROPS */, ["onClick"]))