@loicngr/kobo 1.11.28 → 1.11.29
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.
- package/CHANGELOG.md +4 -0
- package/dist/server/routes/workspaces.js +16 -6
- package/dist/server/services/comparison-stats-service.js +43 -0
- package/package.json +1 -1
- package/src/client/dist/pwa/assets/{ActivityFeed-LDzg5XPx.js → ActivityFeed-Dm-h5c8M.js} +1 -1
- package/src/client/dist/pwa/assets/{ChangelogPage-CjiWI9Qa.js → ChangelogPage-tLjrU4kh.js} +1 -1
- package/src/client/dist/pwa/assets/{ClosePopup-CK6wvsMy.js → ClosePopup-CekolbY5.js} +1 -1
- package/src/client/dist/pwa/assets/ComparisonPanel-CsdFl1JL.js +2 -0
- package/src/client/dist/pwa/assets/ComparisonPanel-x1iuICgd.css +1 -0
- package/src/client/dist/pwa/assets/{CreatePage-DHBa7ZL5.js → CreatePage-B1iRRP_d.js} +1 -1
- package/src/client/dist/pwa/assets/{DashboardPage-Xev4suQ7.js → DashboardPage-CNTYrE-N.js} +1 -1
- package/src/client/dist/pwa/assets/{DiffViewer-D0BQ5Dip.js → DiffViewer-CxXPJSsu.js} +3 -3
- package/src/client/dist/pwa/assets/{DocumentsPanel-7hMCYUTd.js → DocumentsPanel-Du7qG8uv.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-BASeszPg.js → DrawerToggleButton-D0i0wUjb.js} +1 -1
- package/src/client/dist/pwa/assets/{GitPanel-D-rwHnFn.js → GitPanel-tuTj7lhu.js} +3 -3
- package/src/client/dist/pwa/assets/{HealthPage-BKXqP1li.js → HealthPage-DL_RBg9X.js} +1 -1
- package/src/client/dist/pwa/assets/{MainLayout-DnPtpWgP.js → MainLayout-CuPokl9k.js} +2 -2
- package/src/client/dist/pwa/assets/{QBtnDropdown-52YHuBbx.js → QBtnDropdown-VaaGdcMX.js} +1 -1
- package/src/client/dist/pwa/assets/{SchedulePanel-C7NK1hIK.js → SchedulePanel-CyWvfNkF.js} +1 -1
- package/src/client/dist/pwa/assets/{SearchPage-Cm8chltA.js → SearchPage-c_MuOKwZ.js} +1 -1
- package/src/client/dist/pwa/assets/{SettingsPage-B4xs1RUl.js → SettingsPage-QkPo7j0B.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-CSPk8QtK.js → TerminalPanel-Io_WshA3.js} +1 -1
- package/src/client/dist/pwa/assets/{TouchPan-CpO61wPy.js → TouchPan-DO0Y0lcH.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-DZrbJ0vD.js → WorkspaceAttentionLabels-NqQsltOl.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspacePage-D0-FkRVJ.js → WorkspacePage-Ct8QYOU_.js} +3 -3
- package/src/client/dist/pwa/assets/{build-path-tree-DH4SSsEz.js → build-path-tree-CmeIBsJq.js} +1 -1
- package/src/client/dist/pwa/assets/{de-Bf_OsgDw.js → de-DUTfyzTm.js} +1 -1
- package/src/client/dist/pwa/assets/{documents-CDZqd_g5.js → documents-DuT_pUBs.js} +1 -1
- package/src/client/dist/pwa/assets/{editor.api-CMsYdZTX.js → editor.api-B7h7KULV.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-Db4w0alg.js → efforts-CFRBNt5s.js} +1 -1
- package/src/client/dist/pwa/assets/{engineFeatures-BjtQR0vB.js → engineFeatures-DmG1z2N2.js} +1 -1
- package/src/client/dist/pwa/assets/{es-1ib0e9jm.js → es-ft4_w4dQ.js} +1 -1
- package/src/client/dist/pwa/assets/{expand-template-DY8ntqUb.js → expand-template-DXzAXadA.js} +1 -1
- package/src/client/dist/pwa/assets/{format-C-9jMgWb.js → format-klpA_BIb.js} +1 -1
- package/src/client/dist/pwa/assets/{fr-nj0BrM3X.js → fr-SGSKyQ_T.js} +1 -1
- package/src/client/dist/pwa/assets/{freemarker2-KxB1BtrL.js → freemarker2-AB32EM-g.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-7TByd_Zc.js → handlebars-C87HpXgr.js} +1 -1
- package/src/client/dist/pwa/assets/{html-BoVZ_gre.js → html-fZ2Q-EN9.js} +1 -1
- package/src/client/dist/pwa/assets/{i18n-BubYp85n.js → i18n-jUVcMUna.js} +1 -1
- package/src/client/dist/pwa/assets/{index-Ck1_qrff.js → index-BgV6UXly.js} +3 -3
- package/src/client/dist/pwa/assets/{it-B9MEgvg1.js → it-C5q5LNGX.js} +1 -1
- package/src/client/dist/pwa/assets/{javascript-BLL8vPQy.js → javascript-DaRn-B3h.js} +1 -1
- package/src/client/dist/pwa/assets/{layout-CFuk4mdG.js → layout-DdQC-2Sz.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-DzcT-R6k.js → liquid-BxIQD86X.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-Bguo999w.js → mdx-BB8ir9N_.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-CM7FH-iZ.js → monaco-contributions-B0YHWDBM.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco.contribution-Dkq0qtWA.js → monaco.contribution-Nxc5lpNj.js} +2 -2
- package/src/client/dist/pwa/assets/{network-auth-C0moem8_.js → network-auth-0EqcSNjT.js} +1 -1
- package/src/client/dist/pwa/assets/{notify-theme-C7mNmzKx.js → notify-theme-CJQIBqdX.js} +1 -1
- package/src/client/dist/pwa/assets/{pending-diff-open-BaQ_SNEF.js → pending-diff-open-BTLtsmQt.js} +1 -1
- package/src/client/dist/pwa/assets/{permissionModes-CJZsT9Fl.js → permissionModes-BR2CNlno.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-54JZHVy2.js → project-color-CZmTicBX.js} +1 -1
- package/src/client/dist/pwa/assets/{python-D5RQNiPF.js → python-BdCzK6Il.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-CVwoDJol.js → razor-ClnzXrTz.js} +1 -1
- package/src/client/dist/pwa/assets/{render-chat-markdown-NAmPVIQp.js → render-chat-markdown-CzR8e-Uh.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-qdgwClKe.js → typescript-Dk26pRlO.js} +1 -1
- package/src/client/dist/pwa/assets/{use-onboarding-DbYF8ZX_.js → use-onboarding-BwDLVLlc.js} +1 -1
- package/src/client/dist/pwa/assets/{use-quasar-B4eIgSfZ.js → use-quasar-B2sgdABh.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-DNSfQSlk.js → xml-DdBTQmk2.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-6gnX2NnP.js → yaml-DTv5uGmK.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/client/dist/pwa/assets/ComparisonPanel-C0hI2D1O.css +0 -1
- package/src/client/dist/pwa/assets/ComparisonPanel-D6eEciwQ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,B as a,H as o,Rt as s,U as c,V as l,W as u,Wt as ee,X as te,Z as d,_n as f,fn as ne}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{l as p,t as m}from"./QBtn-B7WFdfmy.js";import{Jt as h,Kt as g,ct as _,o as ie,p as ae}from"./index-Ck1_qrff.js";import{_ as oe,a as se}from"./permissionModes-CJZsT9Fl.js";import{n as v,t as ce}from"./use-quasar-B4eIgSfZ.js";import{t as le}from"./QBadge-BgS0-MXB.js";import{t as ue}from"./QChip-DpUYTCOJ.js";import{t as y}from"./QBtnToggle-eMu_yinY.js";function de(e,t){let n=Math.max(1,Math.floor(t));switch(e){case`minutes`:return`*/${n} * * * *`;case`hours`:return`0 */${n} * * *`;case`days`:return`0 0 */${n} * *`}}function fe(e){return Math.max(1,Math.floor(e))>1}var pe={class:`column q-pa-md q-gutter-lg`},me={class:`row items-center no-wrap q-gutter-sm`},he={class:`schedule-header__icon`},ge={class:`text-subtitle1 text-weight-medium`},_e={class:`text-caption text-kobo-3`},ve={class:`row items-center justify-between q-mb-sm`},ye={class:`text-subtitle2`},be={class:`text-body2 text-weight-medium`},xe={class:`text-caption text-kobo-3`},Se={key:1,class:`column q-gutter-sm`},b={class:`row items-start no-wrap q-gutter-sm`},x={class:`schedule-item__icon schedule-item__icon--wakeup`},S={class:`col min-width-zero`},C={class:`text-caption text-kobo-3`},w={class:`text-body2 text-weight-medium`},T={key:0,class:`prompt-preview schedule-item__prompt`},E={class:`row items-start no-wrap q-gutter-sm`},D={class:`schedule-item__icon schedule-item__icon--cron`},O={class:`col min-width-zero`},k={class:`text-body2 text-weight-medium ellipsis`},A={class:`text-caption text-kobo-3`},j={class:`row items-center q-gutter-xs q-mt-sm`},Ce={key:0,class:`text-caption text-kobo-3`},we={class:`prompt-preview schedule-item__prompt`},Te={class:`row items-center justify-between q-mb-sm`},Ee={class:`text-subtitle2`},De={class:`text-caption text-kobo-3`},Oe={class:`text-body2 text-weight-medium`},ke={class:`text-caption text-kobo-3`},Ae={class:`column q-gutter-y-xs`},je={class:`field-label`},Me={class:`text-body2 text-weight-medium`},Ne={class:`text-caption text-kobo-3`},Pe={class:`column q-gutter-y-xs`},Fe={class:`field-label`},Ie={class:`row items-center no-wrap q-gutter-sm`},Le={class:`text-body2 text-kobo-2`},Re={key:0,class:`text-caption text-warning`},ze={class:`column q-gutter-y-xs`},Be={class:`field-label`},Ve={class:`one-shot-option row items-center justify-between no-wrap q-pa-sm`},He={class:`text-body2`},Ue={class:`text-caption text-kobo-3`},M=v(r({__name:`SchedulePanel`,props:{workspaceId:{}},setup(r){let v=r,{t:M}=re(),N=ce(),P=ae(),F=a(()=>P.pendingWakeups[v.workspaceId]??null),I=a(()=>P.crons[v.workspaceId]??[]),L=a(()=>I.value.length+ +!!F.value);ne(()=>v.workspaceId,e=>{e&&P.fetchCrons(e)},{immediate:!0});function R(e){return new Date(e).toLocaleString(void 0,{weekday:`short`,day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`})}function We(e){let t=Date.now()-new Date(e).getTime();if(Number.isNaN(t)||t<0)return`—`;let n=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`}),r=Math.floor(t/1e3);if(r<60)return n.format(-r,`second`);let i=Math.floor(r/60);if(i<60)return n.format(-i,`minute`);let a=Math.floor(i/60);return a<24?n.format(-a,`hour`):n.format(-Math.floor(a/24),`day`)}async function Ge(){try{let e=await fetch(`/api/workspaces/${v.workspaceId}/pending-wakeup`,{method:`DELETE`});if(!e.ok)throw Error(`HTTP ${e.status}`)}catch(e){N.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}async function Ke(e){try{await P.cancelCron(v.workspaceId,e)}catch(e){N.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}let z=t(`wakeup`),B=t(15),V=t(`minutes`),H=t(``),U=t(``),W=t(``),G=t(`fresh`),K=t(!1),q=t(!1),qe=a(()=>[{label:M(`schedule.typeWakeup`),value:`wakeup`,icon:`alarm`},{label:M(`schedule.typeRecurring`),value:`cron`,icon:`event_repeat`}]),J=a(()=>[{label:M(`schedule.modeFresh`),value:`fresh`,icon:`add_comment`},{label:M(`schedule.modeResume`),value:`resume`,icon:`history`}]),Je=a(()=>[{label:M(`schedule.unitMinutes`),value:`minutes`},{label:M(`schedule.unitHours`),value:`hours`},{label:M(`schedule.unitDays`),value:`days`}]);async function Y(){if(!(!U.value.trim()||q.value)){q.value=!0;try{let e=H.value.trim()||de(V.value,B.value);await P.createCron(v.workspaceId,{expression:e,prompt:U.value,label:W.value.trim()||void 0,mode:G.value,oneShot:K.value}),U.value=``,W.value=``,H.value=``,N.notify({type:`positive`,message:M(`schedule.cronCreated`),position:`top`,timeout:2500})}catch(e){N.notify({type:`negative`,message:String(e instanceof Error?e.message:e),position:`top`,timeout:5e3})}finally{q.value=!1}}}let X=t(15),Z=t(``),Q=t(`fresh`),$=t(!1);async function Ye(){if(!(!Z.value.trim()||!(X.value>0)||$.value)){$.value=!0;try{await P.scheduleManualWakeup(v.workspaceId,{delaySeconds:Math.round(X.value*60),prompt:Z.value,mode:Q.value}),Z.value=``,N.notify({type:`positive`,message:M(`schedule.wakeupCreated`),position:`top`,timeout:2500})}catch(e){N.notify({type:`negative`,message:String(e instanceof Error?e.message:e),position:`top`,timeout:5e3})}finally{$.value=!1}}}return(t,r)=>(s(),u(`div`,pe,[l(`header`,me,[l(`div`,he,[d(p,{name:`calendar_month`,size:`22px`})]),l(`div`,null,[l(`div`,ge,n(t.$t(`schedule.panelTitle`)),1),l(`div`,_e,n(t.$t(`schedule.panelDescription`)),1)])]),l(`section`,null,[l(`div`,ve,[l(`div`,ye,n(t.$t(`schedule.activeTitle`)),1),L.value>0?(s(),o(le,{key:0,rounded:``,color:`primary`,label:L.value},null,8,[`label`])):c(``,!0)]),L.value===0?(s(),o(g,{key:0,dark:``,flat:``,bordered:``,class:`empty-state row items-center q-gutter-sm q-pa-md`},{default:f(()=>[d(p,{name:`event_available`,size:`24px`,color:`kobo-3`}),l(`div`,null,[l(`div`,be,n(t.$t(`schedule.emptyTitle`)),1),l(`div`,xe,n(t.$t(`schedule.emptyDescription`)),1)])]),_:1})):(s(),u(`div`,Se,[F.value?(s(),o(g,{key:0,dark:``,flat:``,bordered:``,class:`schedule-item schedule-item--wakeup`},{default:f(()=>[d(h,null,{default:f(()=>[l(`div`,b,[l(`div`,x,[d(p,{name:`alarm`,size:`18px`})]),l(`div`,S,[l(`div`,C,n(t.$t(`schedule.wakeupTitle`)),1),l(`div`,w,n(R(F.value.targetAt)),1)]),d(m,{flat:``,dense:``,round:``,icon:`delete_outline`,size:`sm`,color:`kobo-2`,title:t.$t(`schedule.cancelWakeup`),onClick:Ge},null,8,[`title`])]),F.value.reason?(s(),u(`div`,T,n(F.value.reason),1)):c(``,!0)]),_:1})]),_:1})):c(``,!0),(s(!0),u(i,null,ee(I.value,e=>(s(),o(g,{key:e.id,dark:``,flat:``,bordered:``,class:`schedule-item`},{default:f(()=>[d(h,null,{default:f(()=>[l(`div`,E,[l(`div`,D,[d(p,{name:`event_repeat`,size:`18px`})]),l(`div`,O,[l(`div`,k,n(e.label||e.expression),1),l(`div`,A,n(t.$t(`schedule.nextFireAt`,{time:R(e.nextFireAt)})),1)]),d(m,{flat:``,dense:``,round:``,icon:`delete_outline`,size:`sm`,color:`kobo-2`,title:t.$t(`schedule.cancelCron`),onClick:t=>Ke(e.id)},null,8,[`title`,`onClick`])]),l(`div`,j,[d(ue,{dense:``,square:``,color:`blue-grey-9`,"text-color":`kobo-2`,size:`sm`},{default:f(()=>[te(n(e.expression),1)]),_:2},1024),e.lastFiredAt?(s(),u(`span`,Ce,n(t.$t(`schedule.lastFiredAt`,{time:We(e.lastFiredAt)})),1)):c(``,!0)]),l(`div`,we,n(e.prompt),1)]),_:2},1024)]),_:2},1024))),128))]))]),l(`section`,null,[l(`div`,Te,[l(`div`,null,[l(`div`,Ee,n(t.$t(`schedule.createTitle`)),1),l(`div`,De,n(t.$t(`schedule.createDescription`)),1)])]),d(g,{dark:``,flat:``,bordered:``,class:`create-card`},{default:f(()=>[d(y,{modelValue:z.value,"onUpdate:modelValue":r[0]||=e=>z.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`primary`,color:`blue-grey-10`,"text-color":`kobo-2`,options:qe.value,class:`type-toggle`},null,8,[`modelValue`,`options`]),z.value===`wakeup`?(s(),o(h,{key:0,class:`column q-gutter-y-md`},{default:f(()=>[l(`div`,null,[l(`div`,Oe,n(t.$t(`schedule.addWakeupTitle`)),1),l(`div`,ke,n(t.$t(`schedule.wakeupDescription`)),1)]),d(_,{modelValue:X.value,"onUpdate:modelValue":r[1]||=e=>X.value=e,modelModifiers:{number:!0},type:`number`,dense:``,dark:``,outlined:``,min:`1`,label:t.$t(`schedule.delayMinutes`)},{prepend:f(()=>[d(p,{name:`timer`,size:`18px`})]),_:1},8,[`modelValue`,`label`]),d(_,{modelValue:Z.value,"onUpdate:modelValue":r[2]||=e=>Z.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,label:t.$t(`schedule.promptLabel`),hint:t.$t(`schedule.promptHint`)},null,8,[`modelValue`,`label`,`hint`]),l(`div`,Ae,[l(`div`,je,n(t.$t(`schedule.sessionModeTitle`)),1),d(y,{modelValue:Q.value,"onUpdate:modelValue":r[3]||=e=>Q.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`blue-grey-7`,color:`transparent`,"text-color":`kobo-2`,options:J.value,class:`session-toggle`},null,8,[`modelValue`,`options`])]),d(m,{"no-caps":``,unelevated:``,color:`primary`,icon:`alarm_add`,loading:$.value,disable:!Z.value.trim()||!(X.value>0),label:t.$t(`schedule.addWakeupBtn`),class:`full-width action-button`,onClick:Ye},null,8,[`loading`,`disable`,`label`])]),_:1})):(s(),o(h,{key:1,class:`column q-gutter-y-md`},{default:f(()=>[l(`div`,null,[l(`div`,Me,n(t.$t(`schedule.addCronTitle`)),1),l(`div`,Ne,n(t.$t(`schedule.cronDescription`)),1)]),d(_,{modelValue:W.value,"onUpdate:modelValue":r[4]||=e=>W.value=e,dense:``,dark:``,outlined:``,label:t.$t(`schedule.labelOptional`)},null,8,[`modelValue`,`label`]),l(`div`,Pe,[l(`div`,Fe,n(t.$t(`schedule.frequencyTitle`)),1),l(`div`,Ie,[l(`span`,Le,n(t.$t(`schedule.every`)),1),d(_,{modelValue:B.value,"onUpdate:modelValue":r[5]||=e=>B.value=e,modelModifiers:{number:!0},type:`number`,dense:``,dark:``,outlined:``,min:`1`,class:`frequency-value`},null,8,[`modelValue`]),d(se,{modelValue:V.value,"onUpdate:modelValue":r[6]||=e=>V.value=e,options:Je.value,dense:``,dark:``,outlined:``,"options-dense":``,"emit-value":``,"map-options":``,class:`col min-width-zero`},null,8,[`modelValue`,`options`])]),V.value===`days`&&e(fe)(B.value)?(s(),u(`div`,Re,n(t.$t(`schedule.daysDriftWarning`)),1)):c(``,!0)]),d(_,{modelValue:U.value,"onUpdate:modelValue":r[7]||=e=>U.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,label:t.$t(`schedule.promptLabel`),hint:t.$t(`schedule.promptHint`)},null,8,[`modelValue`,`label`,`hint`]),d(oe,{dense:``,"dense-toggle":``,"switch-toggle-side":``,icon:`code`,label:t.$t(`schedule.advancedExpression`),caption:t.$t(`schedule.advancedDescription`),class:`advanced-section`},{default:f(()=>[d(_,{modelValue:H.value,"onUpdate:modelValue":r[8]||=e=>H.value=e,dense:``,dark:``,outlined:``,label:t.$t(`schedule.cronExpressionLabel`),hint:t.$t(`schedule.advancedHint`),class:`q-mt-sm`},null,8,[`modelValue`,`label`,`hint`])]),_:1},8,[`label`,`caption`]),l(`div`,ze,[l(`div`,Be,n(t.$t(`schedule.sessionModeTitle`)),1),d(y,{modelValue:G.value,"onUpdate:modelValue":r[9]||=e=>G.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`blue-grey-7`,color:`transparent`,"text-color":`kobo-2`,options:J.value,class:`session-toggle`},null,8,[`modelValue`,`options`])]),l(`div`,Ve,[l(`div`,null,[l(`div`,He,n(t.$t(`schedule.oneShot`)),1),l(`div`,Ue,n(t.$t(`schedule.oneShotHint`)),1)]),d(ie,{modelValue:K.value,"onUpdate:modelValue":r[10]||=e=>K.value=e,dense:``},null,8,[`modelValue`])]),d(m,{"no-caps":``,unelevated:``,color:`primary`,icon:`add_task`,loading:q.value,disable:!U.value.trim(),label:t.$t(`schedule.addCronBtn`),class:`full-width action-button`,onClick:Y},null,8,[`loading`,`disable`,`label`])]),_:1}))]),_:1})])]))}}),[[`__scopeId`,`data-v-127c3cf8`]]);export{M as default};
|
|
1
|
+
import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,B as a,H as o,Rt as s,U as c,V as l,W as u,Wt as ee,X as te,Z as d,_n as f,fn as ne}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{l as p,t as m}from"./QBtn-B7WFdfmy.js";import{Jt as h,Kt as g,ct as _,o as ie,p as ae}from"./index-BgV6UXly.js";import{_ as oe,a as se}from"./permissionModes-BR2CNlno.js";import{n as v,t as ce}from"./use-quasar-B2sgdABh.js";import{t as le}from"./QBadge-BgS0-MXB.js";import{t as ue}from"./QChip-DpUYTCOJ.js";import{t as y}from"./QBtnToggle-eMu_yinY.js";function de(e,t){let n=Math.max(1,Math.floor(t));switch(e){case`minutes`:return`*/${n} * * * *`;case`hours`:return`0 */${n} * * *`;case`days`:return`0 0 */${n} * *`}}function fe(e){return Math.max(1,Math.floor(e))>1}var pe={class:`column q-pa-md q-gutter-lg`},me={class:`row items-center no-wrap q-gutter-sm`},he={class:`schedule-header__icon`},ge={class:`text-subtitle1 text-weight-medium`},_e={class:`text-caption text-kobo-3`},ve={class:`row items-center justify-between q-mb-sm`},ye={class:`text-subtitle2`},be={class:`text-body2 text-weight-medium`},xe={class:`text-caption text-kobo-3`},Se={key:1,class:`column q-gutter-sm`},b={class:`row items-start no-wrap q-gutter-sm`},x={class:`schedule-item__icon schedule-item__icon--wakeup`},S={class:`col min-width-zero`},C={class:`text-caption text-kobo-3`},w={class:`text-body2 text-weight-medium`},T={key:0,class:`prompt-preview schedule-item__prompt`},E={class:`row items-start no-wrap q-gutter-sm`},D={class:`schedule-item__icon schedule-item__icon--cron`},O={class:`col min-width-zero`},k={class:`text-body2 text-weight-medium ellipsis`},A={class:`text-caption text-kobo-3`},j={class:`row items-center q-gutter-xs q-mt-sm`},Ce={key:0,class:`text-caption text-kobo-3`},we={class:`prompt-preview schedule-item__prompt`},Te={class:`row items-center justify-between q-mb-sm`},Ee={class:`text-subtitle2`},De={class:`text-caption text-kobo-3`},Oe={class:`text-body2 text-weight-medium`},ke={class:`text-caption text-kobo-3`},Ae={class:`column q-gutter-y-xs`},je={class:`field-label`},Me={class:`text-body2 text-weight-medium`},Ne={class:`text-caption text-kobo-3`},Pe={class:`column q-gutter-y-xs`},Fe={class:`field-label`},Ie={class:`row items-center no-wrap q-gutter-sm`},Le={class:`text-body2 text-kobo-2`},Re={key:0,class:`text-caption text-warning`},ze={class:`column q-gutter-y-xs`},Be={class:`field-label`},Ve={class:`one-shot-option row items-center justify-between no-wrap q-pa-sm`},He={class:`text-body2`},Ue={class:`text-caption text-kobo-3`},M=v(r({__name:`SchedulePanel`,props:{workspaceId:{}},setup(r){let v=r,{t:M}=re(),N=ce(),P=ae(),F=a(()=>P.pendingWakeups[v.workspaceId]??null),I=a(()=>P.crons[v.workspaceId]??[]),L=a(()=>I.value.length+ +!!F.value);ne(()=>v.workspaceId,e=>{e&&P.fetchCrons(e)},{immediate:!0});function R(e){return new Date(e).toLocaleString(void 0,{weekday:`short`,day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`})}function We(e){let t=Date.now()-new Date(e).getTime();if(Number.isNaN(t)||t<0)return`—`;let n=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`}),r=Math.floor(t/1e3);if(r<60)return n.format(-r,`second`);let i=Math.floor(r/60);if(i<60)return n.format(-i,`minute`);let a=Math.floor(i/60);return a<24?n.format(-a,`hour`):n.format(-Math.floor(a/24),`day`)}async function Ge(){try{let e=await fetch(`/api/workspaces/${v.workspaceId}/pending-wakeup`,{method:`DELETE`});if(!e.ok)throw Error(`HTTP ${e.status}`)}catch(e){N.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}async function Ke(e){try{await P.cancelCron(v.workspaceId,e)}catch(e){N.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}let z=t(`wakeup`),B=t(15),V=t(`minutes`),H=t(``),U=t(``),W=t(``),G=t(`fresh`),K=t(!1),q=t(!1),qe=a(()=>[{label:M(`schedule.typeWakeup`),value:`wakeup`,icon:`alarm`},{label:M(`schedule.typeRecurring`),value:`cron`,icon:`event_repeat`}]),J=a(()=>[{label:M(`schedule.modeFresh`),value:`fresh`,icon:`add_comment`},{label:M(`schedule.modeResume`),value:`resume`,icon:`history`}]),Je=a(()=>[{label:M(`schedule.unitMinutes`),value:`minutes`},{label:M(`schedule.unitHours`),value:`hours`},{label:M(`schedule.unitDays`),value:`days`}]);async function Y(){if(!(!U.value.trim()||q.value)){q.value=!0;try{let e=H.value.trim()||de(V.value,B.value);await P.createCron(v.workspaceId,{expression:e,prompt:U.value,label:W.value.trim()||void 0,mode:G.value,oneShot:K.value}),U.value=``,W.value=``,H.value=``,N.notify({type:`positive`,message:M(`schedule.cronCreated`),position:`top`,timeout:2500})}catch(e){N.notify({type:`negative`,message:String(e instanceof Error?e.message:e),position:`top`,timeout:5e3})}finally{q.value=!1}}}let X=t(15),Z=t(``),Q=t(`fresh`),$=t(!1);async function Ye(){if(!(!Z.value.trim()||!(X.value>0)||$.value)){$.value=!0;try{await P.scheduleManualWakeup(v.workspaceId,{delaySeconds:Math.round(X.value*60),prompt:Z.value,mode:Q.value}),Z.value=``,N.notify({type:`positive`,message:M(`schedule.wakeupCreated`),position:`top`,timeout:2500})}catch(e){N.notify({type:`negative`,message:String(e instanceof Error?e.message:e),position:`top`,timeout:5e3})}finally{$.value=!1}}}return(t,r)=>(s(),u(`div`,pe,[l(`header`,me,[l(`div`,he,[d(p,{name:`calendar_month`,size:`22px`})]),l(`div`,null,[l(`div`,ge,n(t.$t(`schedule.panelTitle`)),1),l(`div`,_e,n(t.$t(`schedule.panelDescription`)),1)])]),l(`section`,null,[l(`div`,ve,[l(`div`,ye,n(t.$t(`schedule.activeTitle`)),1),L.value>0?(s(),o(le,{key:0,rounded:``,color:`primary`,label:L.value},null,8,[`label`])):c(``,!0)]),L.value===0?(s(),o(g,{key:0,dark:``,flat:``,bordered:``,class:`empty-state row items-center q-gutter-sm q-pa-md`},{default:f(()=>[d(p,{name:`event_available`,size:`24px`,color:`kobo-3`}),l(`div`,null,[l(`div`,be,n(t.$t(`schedule.emptyTitle`)),1),l(`div`,xe,n(t.$t(`schedule.emptyDescription`)),1)])]),_:1})):(s(),u(`div`,Se,[F.value?(s(),o(g,{key:0,dark:``,flat:``,bordered:``,class:`schedule-item schedule-item--wakeup`},{default:f(()=>[d(h,null,{default:f(()=>[l(`div`,b,[l(`div`,x,[d(p,{name:`alarm`,size:`18px`})]),l(`div`,S,[l(`div`,C,n(t.$t(`schedule.wakeupTitle`)),1),l(`div`,w,n(R(F.value.targetAt)),1)]),d(m,{flat:``,dense:``,round:``,icon:`delete_outline`,size:`sm`,color:`kobo-2`,title:t.$t(`schedule.cancelWakeup`),onClick:Ge},null,8,[`title`])]),F.value.reason?(s(),u(`div`,T,n(F.value.reason),1)):c(``,!0)]),_:1})]),_:1})):c(``,!0),(s(!0),u(i,null,ee(I.value,e=>(s(),o(g,{key:e.id,dark:``,flat:``,bordered:``,class:`schedule-item`},{default:f(()=>[d(h,null,{default:f(()=>[l(`div`,E,[l(`div`,D,[d(p,{name:`event_repeat`,size:`18px`})]),l(`div`,O,[l(`div`,k,n(e.label||e.expression),1),l(`div`,A,n(t.$t(`schedule.nextFireAt`,{time:R(e.nextFireAt)})),1)]),d(m,{flat:``,dense:``,round:``,icon:`delete_outline`,size:`sm`,color:`kobo-2`,title:t.$t(`schedule.cancelCron`),onClick:t=>Ke(e.id)},null,8,[`title`,`onClick`])]),l(`div`,j,[d(ue,{dense:``,square:``,color:`blue-grey-9`,"text-color":`kobo-2`,size:`sm`},{default:f(()=>[te(n(e.expression),1)]),_:2},1024),e.lastFiredAt?(s(),u(`span`,Ce,n(t.$t(`schedule.lastFiredAt`,{time:We(e.lastFiredAt)})),1)):c(``,!0)]),l(`div`,we,n(e.prompt),1)]),_:2},1024)]),_:2},1024))),128))]))]),l(`section`,null,[l(`div`,Te,[l(`div`,null,[l(`div`,Ee,n(t.$t(`schedule.createTitle`)),1),l(`div`,De,n(t.$t(`schedule.createDescription`)),1)])]),d(g,{dark:``,flat:``,bordered:``,class:`create-card`},{default:f(()=>[d(y,{modelValue:z.value,"onUpdate:modelValue":r[0]||=e=>z.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`primary`,color:`blue-grey-10`,"text-color":`kobo-2`,options:qe.value,class:`type-toggle`},null,8,[`modelValue`,`options`]),z.value===`wakeup`?(s(),o(h,{key:0,class:`column q-gutter-y-md`},{default:f(()=>[l(`div`,null,[l(`div`,Oe,n(t.$t(`schedule.addWakeupTitle`)),1),l(`div`,ke,n(t.$t(`schedule.wakeupDescription`)),1)]),d(_,{modelValue:X.value,"onUpdate:modelValue":r[1]||=e=>X.value=e,modelModifiers:{number:!0},type:`number`,dense:``,dark:``,outlined:``,min:`1`,label:t.$t(`schedule.delayMinutes`)},{prepend:f(()=>[d(p,{name:`timer`,size:`18px`})]),_:1},8,[`modelValue`,`label`]),d(_,{modelValue:Z.value,"onUpdate:modelValue":r[2]||=e=>Z.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,label:t.$t(`schedule.promptLabel`),hint:t.$t(`schedule.promptHint`)},null,8,[`modelValue`,`label`,`hint`]),l(`div`,Ae,[l(`div`,je,n(t.$t(`schedule.sessionModeTitle`)),1),d(y,{modelValue:Q.value,"onUpdate:modelValue":r[3]||=e=>Q.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`blue-grey-7`,color:`transparent`,"text-color":`kobo-2`,options:J.value,class:`session-toggle`},null,8,[`modelValue`,`options`])]),d(m,{"no-caps":``,unelevated:``,color:`primary`,icon:`alarm_add`,loading:$.value,disable:!Z.value.trim()||!(X.value>0),label:t.$t(`schedule.addWakeupBtn`),class:`full-width action-button`,onClick:Ye},null,8,[`loading`,`disable`,`label`])]),_:1})):(s(),o(h,{key:1,class:`column q-gutter-y-md`},{default:f(()=>[l(`div`,null,[l(`div`,Me,n(t.$t(`schedule.addCronTitle`)),1),l(`div`,Ne,n(t.$t(`schedule.cronDescription`)),1)]),d(_,{modelValue:W.value,"onUpdate:modelValue":r[4]||=e=>W.value=e,dense:``,dark:``,outlined:``,label:t.$t(`schedule.labelOptional`)},null,8,[`modelValue`,`label`]),l(`div`,Pe,[l(`div`,Fe,n(t.$t(`schedule.frequencyTitle`)),1),l(`div`,Ie,[l(`span`,Le,n(t.$t(`schedule.every`)),1),d(_,{modelValue:B.value,"onUpdate:modelValue":r[5]||=e=>B.value=e,modelModifiers:{number:!0},type:`number`,dense:``,dark:``,outlined:``,min:`1`,class:`frequency-value`},null,8,[`modelValue`]),d(se,{modelValue:V.value,"onUpdate:modelValue":r[6]||=e=>V.value=e,options:Je.value,dense:``,dark:``,outlined:``,"options-dense":``,"emit-value":``,"map-options":``,class:`col min-width-zero`},null,8,[`modelValue`,`options`])]),V.value===`days`&&e(fe)(B.value)?(s(),u(`div`,Re,n(t.$t(`schedule.daysDriftWarning`)),1)):c(``,!0)]),d(_,{modelValue:U.value,"onUpdate:modelValue":r[7]||=e=>U.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,label:t.$t(`schedule.promptLabel`),hint:t.$t(`schedule.promptHint`)},null,8,[`modelValue`,`label`,`hint`]),d(oe,{dense:``,"dense-toggle":``,"switch-toggle-side":``,icon:`code`,label:t.$t(`schedule.advancedExpression`),caption:t.$t(`schedule.advancedDescription`),class:`advanced-section`},{default:f(()=>[d(_,{modelValue:H.value,"onUpdate:modelValue":r[8]||=e=>H.value=e,dense:``,dark:``,outlined:``,label:t.$t(`schedule.cronExpressionLabel`),hint:t.$t(`schedule.advancedHint`),class:`q-mt-sm`},null,8,[`modelValue`,`label`,`hint`])]),_:1},8,[`label`,`caption`]),l(`div`,ze,[l(`div`,Be,n(t.$t(`schedule.sessionModeTitle`)),1),d(y,{modelValue:G.value,"onUpdate:modelValue":r[9]||=e=>G.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`blue-grey-7`,color:`transparent`,"text-color":`kobo-2`,options:J.value,class:`session-toggle`},null,8,[`modelValue`,`options`])]),l(`div`,Ve,[l(`div`,null,[l(`div`,He,n(t.$t(`schedule.oneShot`)),1),l(`div`,Ue,n(t.$t(`schedule.oneShotHint`)),1)]),d(ie,{modelValue:K.value,"onUpdate:modelValue":r[10]||=e=>K.value=e,dense:``},null,8,[`modelValue`])]),d(m,{"no-caps":``,unelevated:``,color:`primary`,icon:`add_task`,loading:q.value,disable:!U.value.trim(),label:t.$t(`schedule.addCronBtn`),class:`full-width action-button`,onClick:Y},null,8,[`loading`,`disable`,`label`])]),_:1}))]),_:1})])]))}}),[[`__scopeId`,`data-v-127c3cf8`]]);export{M as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,H as a,Rt as o,U as s,V as c,W as l,Wt as u,Z as d,_n as f,fn as p}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as m}from"./vue-i18n-DtajJy_8.js";import{l as h}from"./QBtn-B7WFdfmy.js";import{n as g}from"./pinia-ClsyLh3i.js";import{ct as _,l as v,n as y,o as b}from"./index-
|
|
1
|
+
import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,H as a,Rt as o,U as s,V as c,W as l,Wt as u,Z as d,_n as f,fn as p}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as m}from"./vue-i18n-DtajJy_8.js";import{l as h}from"./QBtn-B7WFdfmy.js";import{n as g}from"./pinia-ClsyLh3i.js";import{ct as _,l as v,n as y,o as b}from"./index-BgV6UXly.js";import{n as x}from"./use-quasar-B2sgdABh.js";import{t as S}from"./QSpace-D3PNLwa4.js";import{t as C}from"./QBadge-BgS0-MXB.js";import{t as w}from"./formatters-CQ90Icr4.js";import{t as T}from"./QPage-RpDxx5ah.js";import{t as E}from"./DrawerToggleButton-D0i0wUjb.js";var D=g(`search`,{state:()=>({query:``,includeArchived:!1,results:[],loading:!1,error:``,_requestToken:0}),actions:{async search(){let e=this.query.trim();if(!e){this._requestToken++,this.results=[],this.error=``,this.loading=!1;return}let t=++this._requestToken;this.loading=!0,this.error=``;try{let n=new URLSearchParams({q:e});this.includeArchived&&n.set(`includeArchived`,`true`);let r=await fetch(`/api/search?${n.toString()}`);if(!r.ok){let e=`HTTP ${r.status}`;try{let t=await r.json();t?.error&&(e=t.error)}catch{}throw Error(e)}let i=await r.json();if(t!==this._requestToken)return;this.results=i}catch(e){if(t!==this._requestToken)return;this.error=e instanceof Error?e.message:String(e),this.results=[]}finally{t===this._requestToken&&(this.loading=!1)}},clear(){this._requestToken++,this.query=``,this.results=[],this.error=``,this.loading=!1}}}),O={class:`search-header`},k={class:`row items-center`},A={class:`text-h5 q-mb-md`},j={class:`row items-center q-mt-sm q-gutter-sm`},M={key:0,class:`text-caption text-kobo-3`},N={key:0,class:`text-kobo-3 text-caption`},P={key:1,class:`text-negative text-caption`},F={key:2,class:`text-kobo-3 text-caption`},I={key:3,class:`search-results`},L=[`onClick`],R={class:`row items-center q-mb-xs text-caption`},z={class:`text-kobo-2 text-weight-medium`},B={class:`text-kobo-3`},V={class:`search-snippet text-body2 text-kobo-2`},H=x(r({__name:`SearchPage`,setup(r){let g=D(),x=y(),{t:H}=m(),{timeAgo:U}=w(),W=t(null),G=null;function K(){G&&clearTimeout(G),G=setTimeout(()=>{g.search()},250)}p(()=>g.includeArchived,()=>{g.query.trim().length>0&&g.search()});function q(e){x.push({name:`workspace`,params:{id:e.workspaceId},query:{eventId:e.eventId,...e.sessionId?{session:e.sessionId}:{}}})}function J(e){return e===`user:message`?H(`search.eventType.userMessage`):e===`agent:output`?H(`search.eventType.agentOutput`):e}return(t,r)=>(o(),a(T,{class:`q-pa-md search-page`},{default:f(()=>[c(`div`,O,[c(`div`,k,[d(E,{class:`q-mr-sm`}),c(`h2`,A,n(t.$t(`search.title`)),1)]),d(_,{ref_key:`inputEl`,ref:W,modelValue:e(g).query,"onUpdate:modelValue":[r[0]||=t=>e(g).query=t,K],dense:``,dark:``,outlined:``,clearable:``,autofocus:``,placeholder:t.$t(`search.placeholder`),onClear:r[1]||=t=>e(g).clear()},{prepend:f(()=>[d(h,{name:`search`})]),_:1},8,[`modelValue`,`placeholder`]),c(`div`,j,[d(b,{modelValue:e(g).includeArchived,"onUpdate:modelValue":r[2]||=t=>e(g).includeArchived=t,label:t.$t(`search.includeArchived`),dense:``,dark:``,color:`primary`,size:`sm`},null,8,[`modelValue`,`label`]),d(S),e(g).results.length>0?(o(),l(`span`,M,n(t.$t(`search.resultCount`,{n:e(g).results.length})),1)):s(``,!0)])]),d(v,{dark:``,class:`q-my-md`}),e(g).loading?(o(),l(`div`,N,n(t.$t(`search.loading`)),1)):e(g).error?(o(),l(`div`,P,n(t.$t(`search.error`,{message:e(g).error})),1)):e(g).query.trim().length>0&&e(g).results.length===0?(o(),l(`div`,F,n(t.$t(`search.noResults`)),1)):e(g).results.length>0?(o(),l(`div`,I,[(o(!0),l(i,null,u(e(g).results,(r,i)=>(o(),l(`div`,{key:`${r.workspaceId}-${r.timestamp}-${i}`,class:`search-result q-pa-sm q-mb-sm cursor-pointer`,onClick:e=>q(r)},[c(`div`,R,[c(`span`,z,n(r.workspaceName),1),r.archived?(o(),a(C,{key:0,color:`kobo-3`,class:`q-ml-xs`,label:t.$t(`common.archive`)},null,8,[`label`])):s(``,!0),d(S),d(C,{color:r.type===`user:message`?`blue-grey-7`:`primary`,class:`q-mr-sm`,label:J(r.type)},null,8,[`color`,`label`]),c(`span`,B,n(e(U)(r.timestamp)),1)]),c(`div`,V,n(r.snippet),1)],8,L))),128))])):s(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-14eefe01`]]);export{H as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/browser-Bg25_sDh.js","assets/rolldown-runtime-hePW80VL.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{B as t,C as n,wt as r,xt as i,yt as a}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as o,A as s,B as c,C as l,H as u,It as d,J as f,Mt as p,Ot as m,Rt as h,S as g,Tt as _,U as v,V as y,W as b,Wt as x,X as S,Z as C,_n as w,fn as ee,lt as te,st as T,t as ne,ut as E,yn as D}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{K as ie,X as ae,Z as oe,c as se,l as O,rt as k,t as A,w as j,y as ce}from"./QBtn-B7WFdfmy.js";import{a as le,i as ue}from"./pinia-ClsyLh3i.js";import{i as de,n as fe,t as pe}from"./private.use-form-D8Yuc3aU.js";import{A as me,D as he,E as ge,F as _e,I as ve,Jt as ye,Kt as be,L as xe,M as Se,N as Ce,O as M,P as we,Q as Te,R as Ee,T as De,Xt as Oe,Yt as N,Z as ke,Zt as Ae,a as je,ct as P,et as Me,i as Ne,j as Pe,l as Fe,o as F,qt as Ie,r as Le,s as Re,st as ze,tt as Be,vt as Ve,w as He,x as Ue,z as We}from"./index-Ck1_qrff.js";import{n as I,r as L,t as R}from"./QItemSection-CEUi4Tz0.js";import{_ as Ge,a as z,c as Ke,d as qe,l as Je,m as B,n as Ye,p as Xe,r as Ze,s as Qe,t as $e,u as et,y as tt}from"./permissionModes-CJZsT9Fl.js";import{n as nt,r as V,t as rt}from"./use-quasar-B4eIgSfZ.js";import{t as it}from"./TouchPan-CpO61wPy.js";import{t as H}from"./QSpace-D3PNLwa4.js";import{t as at}from"./QChip-DpUYTCOJ.js";import{t as ot}from"./ClosePopup-CK6wvsMy.js";import{n as st,t as ct}from"./layout-CFuk4mdG.js";import{t as lt}from"./QBtnDropdown-52YHuBbx.js";import{n as ut,t as dt}from"./use-onboarding-DbYF8ZX_.js";import{t as ft}from"./QBanner-CDiXUya7.js";import{t as pt}from"./project-color-54JZHVy2.js";import{t as mt}from"./QPage-RpDxx5ah.js";import{t as ht}from"./DrawerToggleButton-BASeszPg.js";var gt=`q-slider__marker-labels`,_t=e=>({value:e}),vt=({marker:e})=>E(`div`,{key:e.value,style:e.style,class:e.classes},e.label),U=[34,37,40,33,39,38],yt={...le,...de,min:{type:Number,default:0},max:{type:Number,default:100},innerMin:Number,innerMax:Number,step:{type:Number,default:1,validator:e=>e>=0},snap:Boolean,vertical:Boolean,reverse:Boolean,color:String,markerLabelsClass:String,label:Boolean,labelColor:String,labelTextColor:String,labelAlways:Boolean,switchLabelSide:Boolean,markers:[Boolean,Number],markerLabels:[Boolean,Array,Object,Function],switchMarkerLabelsSide:Boolean,trackImg:String,trackColor:String,innerTrackImg:String,innerTrackColor:String,selectionColor:String,selectionImg:String,thumbSize:{type:String,default:`20px`},trackSize:{type:String,default:`4px`},disable:Boolean,readonly:Boolean,dense:Boolean,tabindex:[String,Number],thumbColor:String,thumbPath:{type:String,default:`M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0`}},bt=[`pan`,`update:modelValue`,`change`];function xt({updateValue:e,updatePosition:t,getDragging:r,formAttrs:i}){let{props:a,emit:o,slots:s,proxy:{$q:l}}=T(),u=ue(a,l),d=fe(i),f=n(!1),p=n(!1),h=n(!1),g=n(!1),_=c(()=>a.vertical?`--v`:`--h`),v=c(()=>`-`+(a.switchLabelSide?`switched`:`standard`)),y=c(()=>a.vertical?a.reverse:a.reverse!==(l.lang.rtl===!0)),b=c(()=>!Number.isFinite(a.innerMin)||a.innerMin<a.min?a.min:a.innerMin),x=c(()=>!Number.isFinite(a.innerMax)||a.innerMax>a.max?a.max:a.innerMax),S=c(()=>!a.disable&&!a.readonly&&b.value<x.value),C=c(()=>{if(a.step===0)return e=>e;let e=(String(a.step).trim().split(`.`)[1]||``).length;return t=>Number.parseFloat(t.toFixed(e))}),w=c(()=>a.step===0?1:a.step),ee=c(()=>S.value?a.tabindex||0:-1),te=c(()=>a.max-a.min),ne=c(()=>x.value-b.value),D=c(()=>M(b.value)),re=c(()=>M(x.value)),ae=c(()=>a.vertical?y.value?`bottom`:`top`:y.value?`right`:`left`),oe=c(()=>a.vertical?`height`:`width`),se=c(()=>a.vertical?`width`:`height`),O=c(()=>a.vertical?`vertical`:`horizontal`),k=c(()=>{let e={role:`slider`,"aria-valuemin":b.value,"aria-valuemax":x.value,"aria-orientation":O.value,"data-step":a.step};return a.disable?e[`aria-disabled`]=`true`:a.readonly&&(e[`aria-readonly`]=`true`),e}),A=c(()=>`q-slider q-slider${_.value} q-slider--${f.value?``:`in`}active inline no-wrap `+(a.vertical?`row`:`column`)+(a.disable?` disabled`:` q-slider--enabled`+(S.value?` q-slider--editable`:``))+(h.value===`both`?` q-slider--focus`:``)+(a.label||a.labelAlways?` q-slider--label`:``)+(a.labelAlways?` q-slider--label-always`:``)+(u.value?` q-slider--dark`:``)+(a.dense?` q-slider--dense q-slider--dense`+_.value:``));function j(e){let t=`q-slider__`+e;return`${t} ${t}${_.value} ${t}${_.value}${v.value}`}function le(e){let t=`q-slider__`+e;return`${t} ${t}${_.value}`}let de=c(()=>{let e=a.selectionColor||a.color;return`q-slider__selection absolute`+(e===void 0?``:` text-${e}`)}),pe=c(()=>le(`markers`)+` absolute overflow-hidden`),me=c(()=>le(`track-container`)),he=c(()=>j(`pin`)),ge=c(()=>j(`label`)),_e=c(()=>j(`text-container`)),ve=c(()=>j(`marker-labels-container`)+(a.markerLabelsClass===void 0?``:` ${a.markerLabelsClass}`)),ye=c(()=>`q-slider__track relative-position no-outline`+(a.trackColor===void 0?``:` bg-${a.trackColor}`)),be=c(()=>{let e={[se.value]:a.trackSize};return a.trackImg!==void 0&&(e.backgroundImage=`url(${a.trackImg}) !important`),e}),xe=c(()=>`q-slider__inner absolute`+(a.innerTrackColor===void 0?``:` bg-${a.innerTrackColor}`)),Se=c(()=>{let e=re.value-D.value,t={[ae.value]:`${100*D.value}%`,[oe.value]:e===0?`2px`:`${100*e}%`};return a.innerTrackImg!==void 0&&(t.backgroundImage=`url(${a.innerTrackImg}) !important`),t});function Ce(e){let{min:t,max:n,step:r}=a,i=t+e*(n-t);if(r>0){let e=(i-b.value)%r;i+=(Math.abs(e)>=r/2?(e<0?-1:1)*r:0)-e}return i=C.value(i),B(i,b.value,x.value)}function M(e){return te.value===0?0:(e-a.min)/te.value}function we(e,t){let n=ie(e),r=a.vertical?B((n.top-t.top)/t.height,0,1):B((n.left-t.left)/t.width,0,1);return B(y.value?1-r:r,D.value,re.value)}let Te=c(()=>Oe(a.markers)&&a.markers>0?a.markers:w.value),Ee=c(()=>{let e=[],t=Te.value,n=a.max,r=a.min;do e.push(r),r+=t;while(r<n);return e.push(n),e}),De=c(()=>{let e=` ${gt}${_.value}-`;return`q-slider__marker-labels${e}${a.switchMarkerLabelsSide?`switched`:`standard`}${e}${y.value?`rtl`:`ltr`}`}),N=c(()=>a.markerLabels===!1?null:P(a.markerLabels).map((e,t)=>({index:t,value:e.value,label:e.label||e.value,classes:De.value+(e.classes===void 0?``:` `+e.classes),style:{...Me(e.value),...e.style}}))),ke=c(()=>({markerList:N.value,markerMap:Ne.value,classes:De.value,getStyle:Me})),je=c(()=>{let e=ne.value===0?`2px`:100*Te.value/ne.value;return{...Se.value,backgroundSize:a.vertical?`2px ${e}%`:`${e}% 2px`}});function P(e){if(e===!1)return null;if(e===!0)return Ee.value.map(_t);if(typeof e==`function`)return Ee.value.map(t=>{let n=e(t);return Ae(n)?{...n,value:t}:{value:t,label:n}});let t=({value:e})=>e>=a.min&&e<=a.max;return Array.isArray(e)?e.map(e=>Ae(e)?e:{value:e}).filter(t):Object.keys(e).map(t=>{let n=e[t],r=Number(t);return Ae(n)?{...n,value:r}:{value:r,label:n}}).filter(t)}function Me(e){return{[ae.value]:`${100*(e-a.min)/te.value}%`}}let Ne=c(()=>{if(a.markerLabels===!1)return null;let e={};return N.value.forEach(t=>{e[t.value]=t}),e});function Pe(){if(s[`marker-label-group`]!==void 0)return s[`marker-label-group`](ke.value);let e=s[`marker-label`]||vt;return N.value.map(t=>e({marker:t,...ke.value}))}let Fe=c(()=>[[it,F,void 0,{[O.value]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]);function F(n){n.isFinal?(g.value!==void 0&&(t(n.evt),n.touch&&e(!0),g.value=void 0,o(`pan`,`end`)),f.value=!1,h.value=!1):n.isFirst?(g.value=r(n.evt),t(n.evt),e(),f.value=!0,o(`pan`,`start`)):(t(n.evt),e())}function Ie(){h.value=!1}function Le(n){t(n,r(n)),e(),p.value=!0,f.value=!0,document.addEventListener(`mouseup`,Re,!0)}function Re(){p.value=!1,f.value=!1,e(!0),Ie(),document.removeEventListener(`mouseup`,Re,!0)}function ze(n){t(n,r(n)),e(!0)}function Be(t){U.includes(t.keyCode)&&e(!0)}function Ve(e){if(a.vertical)return null;let t=l.lang.rtl===a.reverse?e:1-e;return{transform:`translateX(calc(${2*t-1} * ${a.thumbSize} / 2 + ${50-100*t}%))`}}function He(e){let t=c(()=>!p.value&&(h.value===e.focusValue||h.value===`both`)?` q-slider--focus`:``),n=c(()=>`q-slider__thumb q-slider__thumb${_.value} q-slider__thumb${_.value}-${y.value?`rtl`:`ltr`} absolute non-selectable`+t.value+(e.thumbColor.value===void 0?``:` text-${e.thumbColor.value}`)),r=c(()=>({width:a.thumbSize,height:a.thumbSize,[ae.value]:`${100*e.ratio.value}%`,zIndex:h.value===e.focusValue?2:void 0})),i=c(()=>e.labelColor.value===void 0?``:` text-${e.labelColor.value}`),o=c(()=>Ve(e.ratio.value)),s=c(()=>`q-slider__text`+(e.labelTextColor.value===void 0?``:` text-${e.labelTextColor.value}`));return()=>{let t=[E(`svg`,{class:`q-slider__thumb-shape absolute-full`,viewBox:`0 0 20 20`,"aria-hidden":`true`},[E(`path`,{d:a.thumbPath})]),E(`div`,{class:`q-slider__focus-ring fit`})];return(a.label||a.labelAlways)&&t.push(E(`div`,{class:he.value+` absolute fit no-pointer-events`+i.value},[E(`div`,{class:ge.value,style:{minWidth:a.thumbSize}},[E(`div`,{class:_e.value,style:o.value},[E(`span`,{class:s.value},e.label.value)])])])),e.injectFormInput!==!1&&a.name!==void 0&&!a.disable&&d(t,`push`),E(`div`,{class:n.value,style:r.value,...e.getNodeData()},t)}}function Ue(e,t,n,r){let i=[];a.innerTrackColor!==`transparent`&&i.push(E(`div`,{key:`inner`,class:xe.value,style:Se.value})),a.selectionColor!==`transparent`&&i.push(E(`div`,{key:`selection`,class:de.value,style:e.value})),a.markers!==!1&&i.push(E(`div`,{key:`marker`,class:pe.value,style:je.value})),r(i);let o=[ce(`div`,{key:`trackC`,class:me.value,tabindex:t.value,...n.value},[E(`div`,{class:ye.value,style:be.value},i)],`slide`,S.value,()=>Fe.value)];return a.markerLabels!==!1&&o[a.switchMarkerLabelsSide?`unshift`:`push`](E(`div`,{key:`markerL`,class:ve.value},Pe())),o}return m(()=>{document.removeEventListener(`mouseup`,Re,!0)}),{state:{active:f,focus:h,preventFocus:p,dragging:g,editable:S,classes:A,tabindex:ee,attributes:k,roundValueFn:C,keyStep:w,trackLen:te,innerMin:b,innerMinRatio:D,innerMax:x,innerMaxRatio:re,positionProp:ae,sizeProp:oe,isReversed:y},methods:{onActivate:Le,onMobileClick:ze,onBlur:Ie,onKeyup:Be,getContent:Ue,getThumbRenderFn:He,convertRatioToModel:Ce,convertModelToRatio:M,getDraggingRatio:we}}}var St=()=>({}),Ct=oe({name:`QSlider`,props:{...yt,modelValue:{required:!0,default:null,validator:e=>typeof e==`number`||e===null},labelValue:[String,Number]},emits:bt,setup(e,{emit:t}){let{proxy:{$q:r}}=T(),{state:i,methods:a}=xt({updateValue:g,updatePosition:v,getDragging:_,formAttrs:pe(e)}),o=n(null),s=n(0),l=n(0);function u(){l.value=e.modelValue===null?i.innerMin.value:B(e.modelValue,i.innerMin.value,i.innerMax.value)}ee(()=>`${e.modelValue}|${i.innerMin.value}|${i.innerMax.value}`,u,{immediate:!0});let d=c(()=>a.convertModelToRatio(l.value)),f=c(()=>i.active.value?s.value:d.value),p=c(()=>{let t={[i.positionProp.value]:`${100*i.innerMinRatio.value}%`,[i.sizeProp.value]:`${100*(f.value-i.innerMinRatio.value)}%`};return e.selectionImg!==void 0&&(t.backgroundImage=`url(${e.selectionImg}) !important`),t}),m=a.getThumbRenderFn({focusValue:!0,getNodeData:St,ratio:f,label:c(()=>e.labelValue===void 0?l.value:e.labelValue),thumbColor:c(()=>e.thumbColor||e.color),labelColor:c(()=>e.labelColor),labelTextColor:c(()=>e.labelTextColor)}),h=c(()=>i.editable.value?r.platform.is.mobile?{onClick:a.onMobileClick}:{onMousedown:a.onActivate,onFocus:y,onBlur:a.onBlur,onKeydown:b,onKeyup:a.onKeyup}:{});function g(n){l.value!==e.modelValue&&t(`update:modelValue`,l.value),n&&t(`change`,l.value)}function _(){return o.value.getBoundingClientRect()}function v(t,n=i.dragging.value){let r=a.getDraggingRatio(t,n);l.value=a.convertRatioToModel(r),s.value=!e.snap||e.step===0?r:a.convertModelToRatio(l.value)}function y(){i.focus.value=!0}function b(t){if(!U.includes(t.keyCode))return;ae(t);let n=([34,33].includes(t.keyCode)?10:1)*i.keyStep.value,r=([34,37,40].includes(t.keyCode)?-1:1)*(i.isReversed.value?-1:1)*(e.vertical?-1:1)*n;l.value=B(i.roundValueFn.value(l.value+r),i.innerMin.value,i.innerMax.value),g()}return()=>{let t=a.getContent(p,i.tabindex,h,e=>{e.push(m())});return E(`div`,{ref:o,class:i.classes.value+(e.modelValue===null?` q-slider--no-value`:``),...i.attributes.value,"aria-valuenow":e.modelValue},t)}}});function wt(e,t=new WeakMap){if(Object(e)!==e)return e;if(t.has(e))return t.get(e);let n=e instanceof Date?new Date(e):e instanceof RegExp?new RegExp(e.source,e.flags):e instanceof Set?new Set:e instanceof Map?new Map:typeof e.constructor==`function`?e.prototype!==void 0&&typeof e.prototype.constructor==`function`?e:new e.constructor:Object.create(null);if(typeof e.constructor==`function`&&typeof e.valueOf==`function`){let n=e.valueOf();if(Object(n)!==n){let r=new e.constructor(n);return t.set(e,r),r}}return t.set(e,n),e instanceof Set?e.forEach(e=>{n.add(wt(e,t))}):e instanceof Map&&e.forEach((e,r)=>{n.set(r,wt(e,t))}),Object.assign(n,...Object.keys(e).map(n=>({[n]:wt(e[n],t)})))}var Tt=oe({name:`QPopupEdit`,props:{modelValue:{required:!0},title:String,buttons:Boolean,labelSet:String,labelCancel:String,color:{type:String,default:`primary`},validate:{type:Function,default:()=>!0},autoSave:Boolean,cover:{type:Boolean,default:!0},disable:Boolean},emits:[`update:modelValue`,`save`,`cancel`,`beforeShow`,`show`,`beforeHide`,`hide`],setup(e,{slots:t,emit:r}){let{proxy:i}=T(),{$q:a}=i,o=n(null),s=n(``),l=n(``),u=!1,d=c(()=>k({initialValue:s.value,validate:e.validate,set:f,cancel:p,updatePosition:m},`value`,()=>l.value,e=>{l.value=e}));function f(){e.validate(l.value)&&(h()&&(r(`save`,l.value,s.value),r(`update:modelValue`,l.value)),g())}function p(){h()&&r(`cancel`,l.value,s.value),g()}function m(){_(()=>{o.value.updatePosition()})}function h(){return!N(l.value,s.value)}function g(){u=!0,o.value.hide()}function v(){u=!1,s.value=wt(e.modelValue),l.value=wt(e.modelValue),r(`beforeShow`)}function y(){r(`show`)}function b(){!u&&h()&&(e.autoSave&&e.validate(l.value)?(r(`save`,l.value,s.value),r(`update:modelValue`,l.value)):r(`cancel`,l.value,s.value)),r(`beforeHide`)}function x(){r(`hide`)}function S(){let n=t.default===void 0?[]:[t.default(d.value)].flat();return e.title&&n.unshift(E(`div`,{class:`q-dialog__title q-mt-sm q-mb-sm`},e.title)),e.buttons&&n.push(E(`div`,{class:`q-popup-edit__buttons row justify-center no-wrap`},[E(A,{flat:!0,color:e.color,label:e.labelCancel||a.lang.label.cancel,onClick:p}),E(A,{flat:!0,color:e.color,label:e.labelSet||a.lang.label.set,onClick:f})])),n}return Object.assign(i,{set:f,cancel:p,show(e){o.value?.show(e)},hide(e){o.value?.hide(e)},updatePosition:m}),()=>{if(!e.disable)return E(Xe,{ref:o,class:`q-popup-edit`,cover:e.cover,onBeforeShow:v,onShow:y,onBeforeHide:b,onHide:x,onEscapeKey:p},S)}}}),Et={class:`text-h6`},Dt=[`title`],Ot={key:1,class:`row justify-center q-mt-sm`},kt=o({__name:`FolderPickerDialog`,props:{modelValue:{type:Boolean},initialPath:{}},emits:[`update:modelValue`,`select`],setup(e,{emit:t}){let i=e,a=t,o=n(``),c=n(null),l=n([]),d=n(!1),f=n(``);async function p(e){d.value=!0,f.value=``;try{let t=e?`?path=${encodeURIComponent(e)}`:``,n=await fetch(`/api/fs/list-dirs${t}`),r=await n.json();if(!n.ok){f.value=r?.error??`HTTP ${n.status}`;return}o.value=r.path??``,c.value=r.parent??null,l.value=Array.isArray(r.entries)?r.entries:[]}catch(e){f.value=e instanceof Error?e.message:String(e)}finally{d.value=!1}}function m(){o.value&&(a(`select`,o.value),a(`update:modelValue`,!1))}return ee(()=>i.modelValue,e=>{e&&p(i.initialPath||void 0)}),(t,n)=>(h(),u(Ve,{"model-value":e.modelValue,"onUpdate:modelValue":n[1]||=e=>t.$emit(`update:modelValue`,e)},{default:w(()=>[C(be,{class:`text-kobo-1`,style:{"min-width":`480px`,"max-width":`90vw`,background:`var(--kobo-surface)`}},{default:w(()=>[C(ye,{class:`row items-center q-pb-none`},{default:w(()=>[y(`div`,Et,r(t.$t(`folderPicker.title`)),1),C(H),D(C(A,{flat:``,dense:``,round:``,icon:`close`,color:`kobo-2`},null,512),[[ot]])]),_:1}),C(ye,null,{default:w(()=>[y(`div`,{class:`text-caption text-kobo-3 ellipsis q-mb-sm`,style:{"font-family":`monospace`},title:o.value},r(o.value||`…`),9,Dt),f.value?(h(),u(ft,{key:0,dense:``,class:`bg-red-9 text-white q-mb-sm rounded-borders`},{default:w(()=>[S(r(f.value),1)]),_:1})):v(``,!0),C(L,{bordered:``,separator:``,class:`rounded-borders`,style:{"max-height":`320px`,"overflow-y":`auto`}},{default:w(()=>[c.value?D((h(),u(I,{key:0,clickable:``,onClick:n[0]||=e=>p(c.value)},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`arrow_upward`,color:`kobo-2`})]),_:1}),C(R,null,{default:w(()=>[S(r(t.$t(`folderPicker.parent`)),1)]),_:1})]),_:1})),[[se]]):v(``,!0),(h(!0),b(s,null,x(l.value,e=>D((h(),u(I,{key:e.path,clickable:``,onClick:t=>p(e.path)},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`folder`,color:`amber-6`})]),_:1}),C(R,null,{default:w(()=>[S(r(e.name),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[se]])),128)),!d.value&&l.value.length===0?(h(),u(I,{key:1},{default:w(()=>[C(R,{class:`text-kobo-3`},{default:w(()=>[S(r(t.$t(`folderPicker.empty`)),1)]),_:1})]),_:1})):v(``,!0)]),_:1}),d.value?(h(),b(`div`,Ot,[C(j,{size:`20px`,color:`kobo-2`})])):v(``,!0)]),_:1}),C(ze,{align:`right`},{default:w(()=>[D(C(A,{flat:``,label:t.$t(`common.cancel`),color:`kobo-2`},null,8,[`label`]),[[ot]]),C(A,{flat:``,label:t.$t(`folderPicker.select`),color:`primary`,disable:!o.value||d.value,onClick:m},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),At={class:`notification-sounds-grid q-mt-md`},jt={class:`text-subtitle2`},Mt={class:`text-kobo-3 text-caption q-mb-sm`},Nt={class:`row items-center q-gutter-sm`},Pt={class:`row items-center q-gutter-sm q-mt-sm`},W={class:`text-kobo-2 text-caption volume-label`},Ft={class:`text-kobo-2 text-caption volume-value`},It=nt(o({__name:`PrNotificationSoundSettings`,props:{modelValue:{},generalSound:{}},emits:[`update:modelValue`],setup(e,{emit:n}){let i=e,a=n,{t:o}=re(),l=c(()=>[{soundKey:`audioPrCiFailedSound`,enabledKey:`audioPrCiFailedEnabled`,volumeKey:`audioPrCiFailedVolume`,title:o(`settings.prCiFailedSound`),description:o(`settings.prCiFailedSoundHint`)},{soundKey:`audioPrCiRecoveredSound`,enabledKey:`audioPrCiRecoveredEnabled`,volumeKey:`audioPrCiRecoveredVolume`,title:o(`settings.prCiRecoveredSound`),description:o(`settings.prCiRecoveredSoundHint`)},{soundKey:`audioPrChangesRequestedSound`,enabledKey:`audioPrChangesRequestedEnabled`,volumeKey:`audioPrChangesRequestedVolume`,title:o(`settings.prChangesRequestedSound`),description:o(`settings.prChangesRequestedSoundHint`)},{soundKey:`audioPrApprovedSound`,enabledKey:`audioPrApprovedEnabled`,volumeKey:`audioPrApprovedVolume`,title:o(`settings.prApprovedSound`),description:o(`settings.prApprovedSoundHint`)},{soundKey:`audioPrMergeConflictSound`,enabledKey:`audioPrMergeConflictEnabled`,volumeKey:`audioPrMergeConflictVolume`,title:o(`settings.prMergeConflictSound`),description:o(`settings.prMergeConflictSoundHint`)},{soundKey:`audioPrReadyToMergeSound`,enabledKey:`audioPrReadyToMergeEnabled`,volumeKey:`audioPrReadyToMergeVolume`,title:o(`settings.prReadyToMergeSound`),description:o(`settings.prReadyToMergeSoundHint`)},{soundKey:`audioPrMergedSound`,enabledKey:`audioPrMergedEnabled`,volumeKey:`audioPrMergedVolume`,title:o(`settings.prMergedSound`),description:o(`settings.prMergedSoundHint`)}]),u=c(()=>[{label:o(`settings.soundGeneral`),value:Ce},...we.map(e=>({label:o(e.labelKey),value:e.id}))]);function d(e,t){a(`update:modelValue`,{...i.modelValue,[e]:t})}function f(e){let t=Ee(i.modelValue[e.soundKey]);t!==null&&Ue(t??i.generalSound,i.modelValue[e.volumeKey])}return(n,i)=>(h(),b(`div`,At,[(h(!0),b(s,null,x(l.value,n=>(h(),b(`div`,{key:n.soundKey,class:`notification-sound-card q-pa-md rounded-borders`},[y(`div`,jt,r(n.title),1),y(`div`,Mt,r(n.description),1),C(F,{"model-value":e.modelValue[n.enabledKey],label:t(o)(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`,"onUpdate:modelValue":e=>d(n.enabledKey,!!e)},null,8,[`model-value`,`label`,`onUpdate:modelValue`]),y(`div`,Nt,[C(z,{"model-value":e.modelValue[n.soundKey],options:u.value,label:n.title,disable:!e.modelValue[n.enabledKey],dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`,"onUpdate:modelValue":e=>d(n.soundKey,String(e))},null,8,[`model-value`,`options`,`label`,`disable`,`onUpdate:modelValue`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:t(o)(`settings.notificationSoundPreview`),disable:!e.modelValue[n.enabledKey],onClick:e=>f(n)},null,8,[`label`,`disable`,`onClick`])]),y(`div`,Pt,[y(`div`,W,r(t(o)(`settings.notificationVolume`)),1),C(Ct,{"model-value":e.modelValue[n.volumeKey],min:0,max:1,step:.05,disable:!e.modelValue[n.enabledKey],"aria-label":t(o)(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`,"onUpdate:modelValue":e=>d(n.volumeKey,Number(e))},null,8,[`model-value`,`disable`,`aria-label`,`onUpdate:modelValue`]),y(`div`,Ft,r(Math.round(e.modelValue[n.volumeKey]*100))+`% `,1)])]))),128))]))}}),[[`__scopeId`,`data-v-41966330`]]),Lt=nt(o({__name:`SettingsNavList`,props:{navItems:{},activeTab:{}},emits:[`select`],setup(e,{emit:t}){let n=t;return(t,i)=>(h(),u(L,{dense:``,class:`settings-nav__list`},{default:w(()=>[(h(!0),b(s,null,x(e.navItems,t=>D((h(),u(I,{key:t.value,clickable:``,"data-tour":`settings-nav-${t.value}`,class:a([`settings-nav__item`,{"settings-nav__item--active":e.activeTab===t.value}]),onClick:e=>n(`select`,t.value)},{default:w(()=>[C(R,{avatar:``,class:`settings-nav__icon`},{default:w(()=>[C(O,{name:t.icon,size:`16px`},null,8,[`name`])]),_:2},1024),C(R,{class:`settings-nav__label`},{default:w(()=>[S(r(t.label),1)]),_:2},1024)]),_:2},1032,[`data-tour`,`class`,`onClick`])),[[se,!1]])),128))]),_:1}))}}),[[`__scopeId`,`data-v-fac6b946`]]),Rt={class:`whip-shortcut-recorder`},zt={class:`text-caption text-kobo-2 q-mb-xs`},Bt={class:`row items-center no-wrap q-gutter-xs`},Vt={"data-testid":`whip-shortcut-value`},Ht={key:0,role:`status`,"aria-live":`polite`,class:`q-sr-only`},Ut={key:1,role:`alert`,class:`text-negative text-caption q-mt-xs`},Wt=nt(o({__name:`WhipShortcutRecorder`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:i}){let a=e,o=i,{t:s}=re(),l=he(),u=n(!1),d=n(``),f=c(()=>u.value?s(`settings.whipShortcutRecording`):M(a.modelValue,l)),p=c(()=>u.value?s(`settings.whipShortcutRecordingLabel`):s(`settings.whipShortcutButtonLabel`,{shortcut:f.value}));function g(){u.value&&(u.value=!1,window.removeEventListener(`keydown`,_,!0))}function _(e){e.preventDefault(),e.stopPropagation();let t=ge(e,l);if(t.status!==`pending`){if(t.status===`reserved`){d.value=s(`settings.whipShortcutReserved`);return}d.value=``,t.status===`accepted`&&o(`update:modelValue`,t.shortcut),g()}}function x(){u.value||(d.value=``,u.value=!0,window.addEventListener(`keydown`,_,!0))}function ee(){g(),d.value=``,o(`update:modelValue`,me)}return m(g),(e,n)=>(h(),b(`div`,Rt,[y(`div`,zt,r(t(s)(`settings.whipShortcut`)),1),y(`div`,Bt,[C(A,{"data-testid":`whip-shortcut-recorder`,dense:``,"no-caps":``,outline:``,color:`primary`,"aria-label":p.value,"aria-pressed":u.value,onClick:x},{default:w(()=>[y(`span`,Vt,r(f.value),1),C(V,null,{default:w(()=>[S(r(t(s)(`settings.whipShortcutHint`)),1)]),_:1})]),_:1},8,[`aria-label`,`aria-pressed`]),C(A,{"data-testid":`whip-shortcut-reset`,dense:``,flat:``,round:``,size:`sm`,color:`kobo-2`,icon:`restart_alt`,"aria-label":t(s)(`settings.whipShortcutReset`),onClick:ee},{default:w(()=>[C(V,null,{default:w(()=>[S(r(t(s)(`settings.whipShortcutReset`)),1)]),_:1})]),_:1},8,[`aria-label`])]),u.value?(h(),b(`div`,Ht,r(t(s)(`settings.whipShortcutRecording`)),1)):v(``,!0),d.value?(h(),b(`div`,Ut,r(d.value),1)):v(``,!0)]))}}),[[`__scopeId`,`data-v-d8618bd9`]]);function Gt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Kt(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Kt(e[n],t[n]))return!1;return!0}return Gt(e)&&Gt(t)?qt(e,t):!1}function qt(e,t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.hasOwn(t,r)||!Kt(e[r],t[r]))return!1;return!0}function G(e){if(Array.isArray(e))return e.map(G);if(e instanceof Date)return new Date(e.getTime());if(typeof e==`object`&&e){let t={};for(let[n,r]of Object.entries(e))t[n]=G(r);return t}return e}function Jt(e){return G(e)}function Yt(e){return e?{disabled:!1,hintKey:null}:{disabled:!0,hintKey:`settings.whipVolumeMasterAudioDisabled`}}var Xt={key:0,class:`settings-load-error`},Zt={class:`column`},Qt={class:`settings-load-error__title`},$t={class:`settings-load-error__detail`},en={class:`settings-load-error__hint`},tn={class:`settings-layout`},nn={key:0,class:`settings-nav`},rn={class:`settings-nav__title`},an={class:`settings-nav`},on={class:`settings-nav__title`},sn={class:`settings-content`},cn={class:`settings-content__header`},ln={class:`settings-content__title`},un={class:`settings-panels`},dn={class:`settings-global-wrap`},fn={key:0,"data-tour":`settings-card-general`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},pn={class:`text-subtitle2 q-mb-sm`},mn={key:1,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},hn={class:`text-subtitle2 q-mb-sm`},gn={class:`text-caption text-kobo-3 q-mt-xs`},_n={key:2,"data-tour":`settings-card-skills`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},vn={class:`text-subtitle2 q-mb-sm`},yn={class:`text-caption text-kobo-3 q-mt-xs`},bn={key:3,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xn={class:`text-subtitle2 q-mb-sm`},Sn={class:`text-caption text-kobo-3 q-mb-xs q-mt-sm`},Cn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},wn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Tn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},En={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Dn={key:4,"data-tour":`settings-card-agents`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},On={class:`text-subtitle2 q-mb-sm`},kn={class:`text-subtitle2 q-mb-sm q-mt-md`},An={class:`text-subtitle2 q-mb-sm q-mt-md`},jn={class:`text-caption text-kobo-3 q-mb-sm`},Mn={class:`text-subtitle2 q-mb-sm q-mt-md`},Nn={key:5,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Pn={class:`text-subtitle2 q-mb-sm`},Fn={class:`row items-center q-gutter-lg`},In={key:6,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ln={class:`text-subtitle2 q-mb-xs`},Rn={class:`text-kobo-3 text-caption q-mb-md`},zn={key:0,class:`column q-gutter-sm q-mt-md`},Bn={class:`row items-center q-gutter-sm`},Vn={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},Hn={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Un={key:0,class:`text-kobo-3 text-caption`},Wn={key:7,"data-tour":`settings-card-notifications`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Gn={class:`text-subtitle2 q-mb-sm`},Kn={class:`notification-sounds-grid q-mt-md`},qn={class:`notification-sound-card q-pa-md rounded-borders`},Jn={class:`text-subtitle2`},Yn={class:`text-kobo-3 text-caption q-mb-sm`},Xn={class:`column q-gutter-xs q-mb-sm`},Zn={class:`row items-center q-gutter-sm q-mb-sm`},Qn={class:`row items-center q-gutter-sm`},$n={class:`row items-center q-gutter-sm q-mt-sm`},er={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},tr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},nr={class:`notification-sound-card q-pa-md rounded-borders`},rr={class:`text-subtitle2`},ir={class:`text-kobo-3 text-caption q-mb-sm`},ar={class:`row items-center q-gutter-sm`},or={class:`row items-center q-gutter-sm q-mt-sm`},sr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},cr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},lr={class:`notification-sound-card q-pa-md rounded-borders`},ur={class:`text-subtitle2`},dr={class:`text-kobo-3 text-caption q-mb-sm`},fr={class:`row items-center q-gutter-sm`},pr={class:`row items-center q-gutter-sm q-mt-sm`},mr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},hr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},gr={class:`notification-sound-card q-pa-md rounded-borders`},_r={class:`text-subtitle2`},vr={class:`text-kobo-3 text-caption q-mb-sm`},yr={class:`row items-center q-gutter-sm`},br={class:`row items-center q-gutter-sm q-mt-sm`},xr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},Sr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Cr={key:8,"data-tour":`settings-card-voice`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},wr={class:`row items-center q-mb-sm`},Tr={class:`text-subtitle2`},Er={class:`column q-gutter-xs`},Dr={class:`row items-center q-gutter-sm`},Or={class:`row items-center q-gutter-sm`},kr={class:`q-pa-sm text-caption text-kobo-2`},Ar={class:`q-mb-sm`},jr={class:`q-mb-sm`},Mr={href:`https://github.com/ggml-org/whisper.cpp`,target:`_blank`,rel:`noopener noreferrer`,class:`text-kobo-2`},Nr={class:`q-mb-xs text-kobo-2`},Pr={class:`q-mb-sm`},Fr={class:`q-mb-xs text-kobo-2`},Ir={key:9,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Lr={class:`text-subtitle2 q-mb-sm`},Rr={class:`row q-col-gutter-sm`},zr={class:`col-12 col-sm-6`},Br={class:`col-12 col-sm-6`},Vr={key:10,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Hr={class:`text-subtitle2 q-mb-sm`},Ur={key:0,class:`voice-models-dir row items-center q-gutter-sm q-mb-md`},Wr={class:`text-caption text-kobo-2 ellipsis-2-lines`,style:{flex:`1`,"min-width":`0`,"word-break":`break-all`}},Gr={class:`column q-gutter-sm`},Kr={class:`row items-center q-gutter-sm`},qr={class:`text-body2 text-kobo-1`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},Jr={class:`text-caption text-kobo-3`},Yr={key:0,class:`q-mt-sm`},Xr={class:`row items-center q-mt-xs`},Zr={class:`text-caption text-kobo-3`},Qr={class:`text-caption text-kobo-2`},$r={key:1,class:`text-caption text-kobo-3 q-mt-xs ellipsis`,style:{"font-family":`var(--kobo-font-mono, monospace)`,"word-break":`break-all`}},ei={key:11,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ti={class:`text-subtitle2 q-mb-sm`},ni={class:`q-pa-sm column q-gutter-sm`},ri={class:`row items-center q-gutter-sm`},ii={class:`text-caption text-kobo-2`},ai={class:`text-caption text-kobo-2`,style:{"min-width":`40px`,"text-align":`right`}},oi={class:`text-caption text-kobo-3`},si={class:`text-caption text-kobo-3`},ci={class:`text-caption text-kobo-3`},li={class:`text-caption text-kobo-3`},ui={class:`q-pa-sm column q-gutter-sm`},di={key:12,"data-tour":`settings-card-prompts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},fi={class:`row items-center q-mb-sm`},pi={class:`text-subtitle2`},mi={class:`text-caption text-kobo-3 q-mb-sm`},hi={class:`q-mb-sm`},gi={class:`row items-center q-mb-sm q-mt-md`},_i={class:`text-subtitle2`},vi={class:`text-caption text-kobo-3 q-mb-sm`},yi={class:`row items-center q-mb-sm q-mt-md`},bi={class:`text-subtitle2`},xi={class:`text-caption text-kobo-3 q-mb-sm`},Si={class:`row items-center q-mb-sm q-mt-md`},Ci={class:`text-subtitle2`},wi={class:`text-caption text-kobo-3 q-mb-sm`},Ti={class:`row items-center q-mb-sm q-mt-md`},Ei={class:`text-subtitle2`},Di={class:`text-caption text-kobo-3 q-mb-sm`},Oi={key:13,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ki={class:`text-subtitle2 q-mb-sm`},Ai={class:`text-caption text-kobo-3 q-mb-sm`},ji={key:14,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Mi={class:`text-subtitle2 q-mb-sm`},Ni={class:`text-caption text-kobo-3 q-mb-sm`},Pi={key:15,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Fi={class:`text-subtitle2 q-mb-sm`},Ii={class:`text-caption text-kobo-3 q-mb-sm`},Li={key:16,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ri={class:`text-subtitle2 q-mb-sm`},zi={class:`text-caption text-kobo-3 q-mb-sm`},Bi={class:`q-mb-sm`},Vi={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},Hi={key:18,"data-tour":`settings-card-sentry`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ui={class:`text-subtitle2 q-mb-sm`},Wi={class:`text-caption text-kobo-3 q-mb-sm`},Gi={class:`q-mb-sm`},Ki={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},qi={key:20,"data-tour":`settings-card-forge`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ji={class:`text-subtitle2 q-mb-sm`},Yi={class:`text-caption text-kobo-3 q-mb-md`},Xi={class:`text-subtitle2 q-mb-sm`},Zi={class:`text-caption text-kobo-3 q-mb-sm`},Qi={class:`q-mb-sm`},$i={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},ea={class:`q-mb-sm`},ta={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},na={class:`row items-center q-mb-sm`},ra={class:`text-subtitle2`},ia={class:`text-caption text-kobo-3 q-mb-xs`},aa={class:`text-subtitle2 q-mb-sm`},oa={class:`text-caption text-kobo-3 q-mb-sm`},sa={class:`q-mb-sm`},ca={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},la={class:`q-mb-sm`},ua={class:`row items-center q-mb-xs`},da={class:`field-label-sub text-caption text-kobo-3 col`},fa=[`src`,`alt`],pa={key:1,class:`text-caption text-kobo-3 q-py-sm`},ma={key:0,class:`text-caption text-orange-5 q-mb-xs`},ha={class:`text-subtitle2 q-mb-sm`},ga={class:`row items-center q-mb-sm`},_a={class:`text-subtitle2`},va={class:`text-caption text-kobo-3 q-mb-xs`},ya={key:24,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ba={class:`text-subtitle2 q-mb-sm`},xa={class:`text-caption text-kobo-3 q-mb-sm`},Sa={key:25,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ca={class:`text-subtitle2 q-mb-sm`},wa={class:`text-caption text-kobo-3 q-mb-sm`},Ta={class:`row items-center no-wrap`},Ea={key:1,class:`text-caption text-kobo-3 q-mb-sm`},Da={class:`row items-center q-gutter-sm`},Oa={key:26,"data-tour":`settings-card-scripts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ka={class:`text-subtitle2 q-mb-sm`},Aa={class:`text-caption text-kobo-3 q-mb-sm`},ja={key:27,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ma={class:`text-subtitle2 q-mb-sm`},Na={class:`text-caption text-kobo-3 q-mb-sm`},Pa={key:28,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Fa={class:`text-subtitle2 q-mb-sm`},Ia={class:`text-caption text-kobo-3 q-mb-sm`},La={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Ra={key:29,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},za={class:`text-subtitle2 q-mb-sm`},Ba={class:`text-caption text-kobo-3 q-mb-sm`},Va={key:30,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ha={class:`text-subtitle2 q-mb-sm`},Ua={class:`text-caption text-kobo-3 q-mb-sm`},Wa={key:31,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ga={class:`text-subtitle2 q-mb-sm`},Ka={class:`text-caption text-kobo-3 q-mb-sm`},qa={key:32,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ja={class:`text-subtitle2 q-mb-sm`},Ya={class:`text-caption text-kobo-3 q-mb-sm`},Xa={key:33,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Za={class:`row items-center justify-between q-mb-sm`},Qa={class:`text-subtitle2`},$a={class:`text-caption text-kobo-3 q-mb-xs`},eo={class:`text-caption text-kobo-3 mono-guide q-mb-sm`},to={key:34,"data-tour":`settings-card-worktrees`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},no={class:`text-subtitle2 q-mb-sm`},ro={class:`text-caption text-kobo-3 q-mb-sm`},io={class:`text-caption text-kobo-3 q-mt-xs`},ao={"data-tour":`settings-card-worktrees-purge`},oo={class:`text-caption text-kobo-3 q-mt-xs`},so={"data-tour":`settings-card-worktrees-retention`},co={class:`text-subtitle2 q-mb-sm`},lo={class:`text-caption text-negative q-mb-sm`},uo={class:`text-caption text-kobo-3 q-mb-sm`},fo={key:0,class:`text-caption text-kobo-3 q-mt-sm`},po={class:`q-pa-sm text-caption text-kobo-2`,style:{"line-height":`1.55`}},mo={class:`text-weight-medium text-kobo-1 q-mb-xs`},ho={class:`q-mb-xs`},go={class:`purge-docs-code`},_o={class:`text-kobo-3 q-mb-md`},vo={class:`text-weight-medium text-kobo-1 q-mb-xs`},yo={class:`q-mb-xs`},bo={class:`q-pl-md q-my-xs`},xo={class:`purge-docs-code`},So={class:`text-kobo-3 q-mb-md`},Co={class:`text-weight-medium text-kobo-1 q-mb-xs`},wo={class:`q-mb-xs`},To={class:`q-mb-xs text-kobo-3`},Eo={class:`purge-docs-code`},Do={class:`q-mb-xs text-kobo-3`},Oo={class:`purge-docs-code`},ko={class:`text-kobo-3`},Ao={key:35,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},jo={class:`text-subtitle2 q-mb-sm`},Mo={class:`text-caption text-kobo-3 q-mb-sm`},No={key:1,class:`q-mt-md`},Po={class:`text-caption text-kobo-3 q-mt-xs`},Fo={class:`q-mt-md`},Io={class:`text-caption text-kobo-3 q-mb-xs`},Lo={class:`q-mt-md`},Ro={class:`text-caption text-kobo-3 q-mb-xs`},zo={key:0,class:`text-caption text-kobo-3`},Bo={key:0,class:`q-mt-md`},Vo={class:`text-caption text-kobo-3 q-mb-xs`},Ho=[`src`,`alt`],Uo={key:36,"data-tour":`settings-card-export`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Wo={class:`text-subtitle2 q-mb-sm`},Go={class:`text-caption text-kobo-3 q-mb-sm`},Ko={class:`row q-gutter-sm`},qo={key:0,class:`q-pa-none`},Jo={class:`row q-gutter-md`,style:{"min-height":`500px`}},Yo={class:`project-list-col`},Xo={class:`settings-card rounded-borders`,style:{height:`100%`}},Zo={class:`q-pa-sm`},Qo={class:`text-caption text-uppercase text-weight-bold q-px-sm q-py-xs text-kobo-3`,style:{"letter-spacing":`0.05em`}},$o={key:0,class:`q-pa-md text-center text-caption text-kobo-3`},es={class:`q-pa-sm`},ts={class:`project-form-col`},ns={class:`settings-card rounded-borders q-pa-lg`,style:{height:`100%`}},rs={class:`row items-center q-mb-md`},is={class:`text-subtitle1 text-weight-medium text-kobo-1`},as={key:0,class:`q-mb-md`},os={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ss={class:`text-caption text-kobo-3 q-mt-xs`},cs={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ls={class:`text-subtitle2 q-mb-md`},us={class:`q-mb-md`},ds={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},fs={class:`q-mb-md`},ps={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ms={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},hs={class:`row items-center q-gutter-xs`},gs={class:`text-caption text-kobo-3 q-mt-xs`},_s={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},vs={class:`text-subtitle2 q-mb-md`},ys={class:`q-mb-md`},bs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},xs={class:`q-mb-md`},Ss={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Cs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ws={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ts={class:`text-subtitle2 q-mb-md`},Es={class:`q-mb-md`},Ds={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Os={class:`text-caption text-kobo-3 q-mb-xs`},ks={class:`q-mb-md`},As={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},js={class:`text-caption text-kobo-3 q-mb-xs`},Ms={class:`q-mb-md`},Ns={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Ps={class:`text-caption text-kobo-3 q-mb-xs`},Fs={key:0,class:`q-mb-md`},Is={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Ls={class:`text-caption text-kobo-3 q-mb-xs`},Rs={key:1,class:`q-mb-md`},zs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Bs={class:`text-caption text-kobo-3 q-mb-xs`},Vs={class:`q-mb-md`},Hs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Us={class:`text-caption text-kobo-3 q-mb-xs`},Ws={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Gs={class:`text-caption text-kobo-3 q-mt-xs`},Ks={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},qs={class:`text-subtitle2 q-mb-md`},Js={class:`q-mb-md`},Ys={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Xs={class:`text-caption text-kobo-3 q-mb-xs`},Zs={class:`text-caption text-kobo-3 q-mt-xs`},Qs={class:`q-mb-md`},$s={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ec={class:`text-caption text-kobo-3 q-mb-xs`},tc={class:`field-label-sub text-caption q-mt-sm q-mb-xs text-kobo-3`},nc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},rc={class:`text-caption text-kobo-3 q-mb-xs`},ic={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ac={class:`text-caption text-kobo-3 q-mb-xs`},oc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},sc={class:`text-caption text-kobo-3 q-mb-xs`},cc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},lc={class:`text-caption text-kobo-3 q-mb-xs`},uc={class:`row items-center justify-between q-mb-xs`},dc={class:`field-label text-body2 text-weight-medium text-kobo-3`},fc={class:`text-caption text-kobo-3 q-mb-xs`},pc={class:`text-caption text-kobo-3 mono-guide q-mb-sm`},mc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},hc={class:`text-subtitle2 q-mb-md`},gc={class:`q-mb-md`},_c={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},vc={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},yc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},bc={class:`text-subtitle2 q-mb-xs`},xc={class:`text-caption text-kobo-3 q-mb-sm`},Sc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Cc={class:`text-subtitle2 q-mb-xs`},wc={class:`text-caption text-kobo-3 q-mb-sm`},Tc={key:1,class:`column items-center justify-center`,style:{height:`100%`,"min-height":`300px`}},Ec={class:`text-body2 text-kobo-3`},Dc={key:1,class:`q-pa-none`},Oc={"data-tour":`settings-card-templates`,class:`settings-card rounded-borders q-pa-lg`},kc={class:`row items-center justify-between q-mb-md`},Ac={class:`text-subtitle1 text-weight-medium text-kobo-1`},jc={class:`row q-gutter-sm items-center`},Mc={key:0,class:`text-kobo-3 q-py-lg text-center`},Nc={key:1,class:`column q-gutter-sm`},Pc={class:`row items-start justify-between no-wrap`},Fc={class:`col`},Ic={class:`text-body1 text-weight-medium`,style:{"font-family":`var(--kobo-font-mono)`}},Lc={class:`text-caption text-kobo-2 q-mt-xs`},Rc={class:`row no-wrap q-gutter-xs`},zc={class:`text-caption text-kobo-3 q-mt-lg`,style:{"font-family":`var(--kobo-font-mono)`}},Bc={class:`settings-savebar__label`},Vc={class:`text-subtitle1`},Hc={class:`q-pl-md q-pt-xs`,style:{"font-size":`11px`,"font-family":`var(--kobo-font-mono)`,columns:`2`,"column-gap":`24px`}},Uc={key:0,class:`text-negative text-caption`},Wc=2500,Gc=nt(o({__name:`SettingsPage`,setup(o){let m=rt(),_=He(),T=Be(),{t:E,locale:ie}=re(),{startTour:ae}=dt(),{isMobile:oe}=st(),se=ct(),k=n(`general`),j=n(!1);function ce(e){k.value=e,oe.value&&(j.value=!1)}function le(){j.value=!1,se.toggleLeft()}let ue=c(()=>[{value:`general`,icon:`tune`,label:E(`settings.nav.general`)},{value:`agents`,icon:`smart_toy`,label:E(`settings.nav.agents`)},{value:`skills`,icon:`extension`,label:E(`settings.nav.skills`)},{value:`prompts`,icon:`text_snippet`,label:E(`settings.nav.prompts`)},{value:`scripts`,icon:`terminal`,label:E(`settings.nav.scripts`)},{value:`notion`,icon:`integration_instructions`,label:E(`settings.nav.notion`)},{value:`sentry`,icon:`bug_report`,label:E(`settings.nav.sentry`)},{value:`forge`,icon:`account_tree`,label:E(`settings.nav.forge`)},{value:`voice`,icon:`mic`,label:E(`settings.nav.voice`)},{value:`notifications`,icon:`notifications`,label:E(`settings.nav.notifications`)},{value:`worktrees`,icon:`account_tree`,label:E(`settings.nav.worktrees`)},{value:`projects`,icon:`folder`,label:E(`settings.projects`)},{value:`templates`,icon:`description`,label:E(`templates.title`)},{value:`export`,icon:`import_export`,label:E(`settings.nav.export`)}]),de=c(()=>ue.value.find(e=>e.value===k.value)?.label??``),fe=c(()=>[`general`,`agents`,`skills`,`prompts`,`scripts`,`notion`,`sentry`,`forge`,`voice`,`notifications`,`worktrees`,`export`].includes(k.value)),pe=n(`auto`),he=n(`auto`),ge=n(``),M=n(``),Ee=n(``),Oe=n(``),N=n(``),Ae=n(``),B=n(``),Xe=n(``),nt=n(!1),it=n(5),gt=n(0),_t=n(0),vt=n(0),U=n({enabled:!1,token:``,behindProxy:!1,urls:[]}),yt=n(!1),bt=n(``);function xt(e){try{let t=new URL(e),n=window.location.port?`:${window.location.port}`:``;return`${window.location.protocol}//${t.hostname}${n}`}catch{return e}}let St=c(()=>U.value.urls.map(xt));async function wt(){try{let e=await fetch(`/api/settings/network`);if(!e.ok)throw Error(`HTTP ${e.status}`);U.value=await e.json(),await Et()}catch{m.notify({type:`negative`,message:E(`settings.network.loadFailed`),position:`top`})}}async function Et(){let t=St.value[0];if(!t||!U.value.token){bt.value=``;return}let n=`${t}/?token=${encodeURIComponent(U.value.token)}`;try{let{default:t}=await Te(async()=>{let{default:t}=await import(`./browser-Bg25_sDh.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]));bt.value=await t.toDataURL(n,{margin:1,width:200})}catch{bt.value=``}}async function Dt(e){try{let t=await fetch(`/api/settings/network`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();U.value={enabled:n.enabled,token:n.token,behindProxy:n.behindProxy,urls:n.urls},n.restartRequired&&(yt.value=!0),await Et()}catch{m.notify({type:`negative`,message:E(`settings.network.updateFailed`),position:`top`}),await wt()}}function Ot(e){Dt({enabled:e})}function At(e){Dt({behindProxy:e})}function jt(){m.dialog({title:E(`settings.network.title`),message:E(`settings.network.regenerateConfirm`),cancel:!0,persistent:!0}).onOk(()=>{Dt({regenerate:!0})})}function Mt(){Hd(U.value.token)}let Nt=n(!0),Pt=n(typeof Notification>`u`?`unsupported`:Notification.permission),W=n(!0),Ft=n(!1),Rt=n(!1),zt=n(!1),Bt=n(Pe),Vt=n(Ce),Ht=n(Ce),Ut=n(Ce),Gt=n(1),Kt=n(1),G=n(1),Gc=n(1),Kc=n({...Se}),qc=n(``),Jc=n(``),Yc=n(``),Xc=n(``),Zc=n(!1),Qc=n(!0),$c=n(!1),el=n(me),tl=n(1),nl=c(()=>Yt(W.value)),rl=c(()=>{switch(Pt.value){case`granted`:return{color:`positive`,label:E(`settings.browserNotificationGranted`)};case`denied`:return{color:`negative`,label:E(`settings.browserNotificationDenied`)};case`default`:return{color:`warning`,label:E(`settings.browserNotificationAsk`)};default:return{color:`kobo-3`,label:E(`settings.browserNotificationUnsupported`)}}});async function il(){if(typeof Notification>`u`){m.notify({type:`negative`,message:E(`settings.browserNotificationUnsupported`),position:`top`});return}if(Notification.permission==="default"?Pt.value=await Notification.requestPermission():Pt.value=Notification.permission,Pt.value!==`granted`){m.notify({type:`warning`,message:E(`settings.browserNotificationPermissionNeeded`),position:`top`});return}new Notification(E(`settings.browserNotificationTestTitle`),{body:E(`settings.browserNotificationTestBody`),icon:`/favicon.ico`})}let al=n(null),K=n({});async function ol(e){al.value=e;try{let t=await fetch(`/api/${e}/test`,{method:`POST`}),n=await t.json();K.value[e]=t.ok?n:{ok:!1,durationMs:0,detail:n.error??`HTTP ${t.status}`}}catch(t){K.value[e]={ok:!1,durationMs:0,detail:t instanceof Error?t.message:String(t)}}finally{al.value=null}}let sl=n([]),cl=n(!1),ll=n(``),ul=c(()=>sl.value.map(e=>({label:`${e.name} — ${e.email}`,value:e.id,name:e.name,email:e.email,avatarUrl:e.avatarUrl})));async function dl(e=!1){if(!cl.value&&!(!e&&sl.value.length>0)){cl.value=!0,ll.value=``;try{let e=await fetch(`/api/notion/users`),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);sl.value=Array.isArray(t.users)?t.users:[]}catch(e){ll.value=e instanceof Error?e.message:String(e),sl.value=[]}finally{cl.value=!1}}}let fl=n(``),pl=n(``),q=n(null),ml=n(`bypass`),hl=n(`bypass`),gl=n(``),_l=n(``),vl=n(``),yl=n(``),J=n(!0),bl=n(!0),xl=n([]),Y=n([]),Sl=n(``),Cl=n(``),wl=n(``),Tl=n(`no-tasks`),El=n(!1),Dl=n(``),Ol=n(``),kl=n(``),Al=n(``),jl=n(``),Ml=n(``),Nl=n(!1);function Pl(e){Q.value.path=e}let Fl=c(()=>[{label:E(`settings.cleanupScriptMode.inherit`),value:``},{label:E(`settings.cleanupScriptMode.idle`),value:`idle`},{label:E(`settings.cleanupScriptMode.noTasks`),value:`no-tasks`}]),Il=n(De),Ll=n(null),Rl=n(!0);function zl(e){let t=e.trim().replace(/^\/+|\/+$/g,``);return t.length===0||t.length>50||!/^[A-Za-z0-9._/-]+$/.test(t)||t.includes(`..`)?``:t}function Bl(){let e=zl(Sl.value);!e||Y.value.includes(e)||(Y.value.push(e),Sl.value=``)}function Vl(e){Y.value.splice(e,1)}function Hl(e,t){let n=zl(t);if(!n)return;let r=Y.value.indexOf(n);(r===-1||r===e)&&(Y.value[e]=n)}function Ul(e,t){let n=e+t;if(n<0||n>=Y.value.length)return;let r=Y.value;[r[e],r[n]]=[r[n],r[e]]}let Wl=n(!1),Gl=n(`superpowers`),Kl=c(()=>{switch(Gl.value){case`gstack`:return`settings.skillSuite.gstackHint`;case`ecc`:return`settings.skillSuite.eccHint`;case`superpowers+gstack`:return`settings.skillSuite.superpowersGstackHint`;case`superpowers+gstack+ecc`:return`settings.skillSuite.allThreeHint`;case`custom`:return`settings.skillSuite.customHint`;default:return`settings.skillSuite.superpowersHint`}}),ql=n(``),Jl=n(``),Yl=n(``),Xl=n(``),Zl=n(``),Ql=n(null),$l=c(()=>[{value:`custom`,label:E(`settings.skillSuite.agnostic`)},{value:`superpowers`,label:E(`settings.skillSuite.superpowers`)},{value:`gstack`,label:E(`settings.skillSuite.gstack`)},{value:`ecc`,label:E(`settings.skillSuite.ecc`)},{value:`superpowers+gstack`,label:E(`settings.skillSuite.superpowersGstack`)},{value:`superpowers+gstack+ecc`,label:E(`settings.skillSuite.allThree`)}]);async function eu(e,t){Ql.value=e;try{let n=await fetch(`/api/settings/skill-suite-prompts/${t}`);if(!n.ok)throw Error(await n.text());let r=await n.json(),i={reviewTemplate:ql,autoLoopReviewGate:Jl,autoLoopGroomingIntro:Yl,qaPromptTemplate:Xl,brainstormingInstruction:Zl};i[e].value=r[e],m.notify({type:`positive`,message:E(`settings.skillSuite.imported`),position:`top`})}catch(e){m.notify({type:`negative`,message:`${E(`settings.skillSuite.importFailed`)}: ${String(e)}`,position:`top`})}finally{Ql.value=null}}let tu=n(!1),nu=n(`alt`),ru=n(`auto`),iu=n(null),au=n(``),ou=n(``),su=n(0),cu=n(``),lu=n(!1),uu=n(!0),du=n(null),fu=n(!1);function pu(){m.dialog({title:E(`settings.skillSuite.reloadDefaults`),message:E(`settings.skillSuite.reloadDefaultsConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{ql.value=qe,Jl.value=Ke,Yl.value=Qe,Xl.value=et,Zl.value=Je})}function mu(e){let t=e===`global`?jl.value:Q.value.changeSourceBranchScript,n=()=>{e===`global`?jl.value=Ml.value:Q.value.changeSourceBranchScript=Ml.value};if(!t.trim()||t===Ml.value){n();return}m.dialog({title:E(`settings.changeSourceBranchScript.replaceConfirmTitle`),message:E(`settings.changeSourceBranchScript.replaceConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(n)}function hu(e){return!e||e===`tiny`||e===`base`?.1:.2}let gu=[e=>e.trim().length>0||E(`settings.worktreesPathRequired`)],_u=n(!1),X=n(-1),Z=n(!1),Q=n({path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}}),vu=[`defaultModel`,`forge`,`prPromptTemplate`,`reviewPromptTemplate`,`ciFixPromptTemplate`,`notionInitialPromptTemplate`,`sentryInitialPromptTemplate`,`gitConventions`,`setupScript`,`taskPromptTemplate`,`cleanupScript`,`cleanupScriptMode`,`archiveScript`,`changeSourceBranchScript`,`sessionEndedScript`,`prMergedScript`,`autoLoopDisabledScript`,`devServer`,`e2e`,`finalization`],yu=n(null),bu=n(null),xu=c(()=>_.projects.map(e=>({value:e.path,label:qd(e)||e.path})));function Su(e){let t=_.projects.find(t=>t.path===e);t&&(Q.value.defaultModel=t.defaultModel??``,Q.value.forge=t.forge??`auto`,Q.value.prPromptTemplate=t.prPromptTemplate??``,Q.value.reviewPromptTemplate=t.reviewPromptTemplate??``,Q.value.ciFixPromptTemplate=t.ciFixPromptTemplate??``,Q.value.notionInitialPromptTemplate=t.notionInitialPromptTemplate??``,Q.value.sentryInitialPromptTemplate=t.sentryInitialPromptTemplate??``,Q.value.gitConventions=t.gitConventions??``,Q.value.setupScript=t.setupScript??``,Q.value.devServer={startCommand:t.devServer?.startCommand??``,stopCommand:t.devServer?.stopCommand??``},Q.value.e2e={framework:t.e2e?.framework??``,skill:t.e2e?.skill??``,prompt:t.e2e?.prompt??``},Q.value.finalization={prompt:t.finalization?.prompt??``})}function Cu(){let e={defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}};return vu.every(t=>JSON.stringify(Q.value[t])===JSON.stringify(e[t]))}function wu(e){if(e===null){yu.value=null,bu.value=null;return}if(bu.value===null&&Cu()){Su(e),yu.value=e,bu.value=e;return}let t=_.projects.find(t=>t.path===e),n=t&&qd(t)||e;m.dialog({title:E(`settings.copyFromConfirmTitle`),message:E(`settings.copyFromConfirm`,{project:n}),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{Su(e),yu.value=e,bu.value=e}).onCancel(()=>{yu.value=bu.value})}let Tu=n([]),Eu=n([]);async function Du(){try{let e=await fetch(`/api/skills`);e.ok&&(Tu.value=await e.json())}catch{}}function Ou(e,t){t(()=>{let t=e.trim().toLowerCase();Eu.value=t?Tu.value.filter(e=>e.toLowerCase().includes(t)):Tu.value.slice()})}let ku=n([]),Au=n(!1),ju=n(!1),Mu=n(!1),Nu=n(!1),Pu=n(null),Fu=n(``),Iu=n(``),Lu=n(``),Ru=n(``),zu=n(!1),Bu=n(!1),Vu=c(()=>[...T.templates].sort((e,t)=>e.slug.localeCompare(t.slug))),Hu=[`{workspace_name}`,`{working_branch}`,`{source_branch}`,`{project_path}`,`{worktree_path}`,`{commit_count}`,`{unpushed_count}`,`{files_changed}`,`{insertions}`,`{deletions}`,`{pr_number}`,`{pr_url}`,`{pr_state}`,`{session_name}`];function Uu(){Pu.value=null,Fu.value=``,Iu.value=``,Lu.value=``,Ru.value=``,Nu.value=!0}function Wu(e){Pu.value=e.slug,Fu.value=e.slug,Iu.value=e.description,Lu.value=e.content,Ru.value=``,Nu.value=!0}async function Gu(){Ru.value=``;let e=Fu.value.trim(),t=Iu.value.trim();if(Pu.value===null&&!/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)){Ru.value=E(`templates.slugInvalid`);return}if(!t){Ru.value=E(`templates.descriptionRequired`);return}if(!Lu.value.trim()){Ru.value=E(`templates.contentRequired`);return}zu.value=!0;try{Pu.value===null?await T.createTemplate({slug:e,description:t,content:Lu.value}):await T.updateTemplate(Pu.value,{description:t,content:Lu.value}),Nu.value=!1}catch(e){Ru.value=e instanceof Error?e.message:E(`templates.createFailed`)}finally{zu.value=!1}}function Ku(){m.dialog({title:E(`templates.reloadDefaults`),message:E(`templates.reloadDefaultsConfirmMessage`),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.reloadDefaults`),color:`primary`}}).onOk(async()=>{Bu.value=!0;try{let e=await T.reloadDefaults();m.notify({type:`positive`,message:E(`templates.reloadDefaultsSuccess`,{added:e.added.length,kept:e.kept.length}),position:`top`,timeout:4e3})}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.reloadDefaultsFailed`),position:`top`})}finally{Bu.value=!1}})}async function qu(e){m.dialog({title:E(`templates.deleteTemplate`),message:`${E(`templates.deleteConfirm`,{slug:e.slug})}\n\n${E(`templates.deleteConfirmMessage`)}`,dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.deleteTemplate`),color:`red-5`}}).onOk(async()=>{try{await T.deleteTemplate(e.slug)}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.deleteFailed`),position:`top`})}})}function Ju(e){m.dialog({title:E(`templates.resetConfirmTitle`),message:E(`templates.resetConfirmMessage`,{slug:e.slug}),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.resetToDefault`),color:`primary`}}).onOk(async()=>{try{await T.resetToDefault(e.slug),m.notify({type:`positive`,message:E(`templates.resetSuccess`,{slug:e.slug}),position:`top`})}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.resetFailed`),position:`top`})}})}let Yu=[{label:`English`,value:`en`},{label:`Français`,value:`fr`},{label:`Deutsch`,value:`de`},{label:`Español`,value:`es`},{label:`Italiano`,value:`it`}];function Xu(e){ke(e).catch(e=>{console.error(`[i18n] locale load failed:`,e),m.notify({type:`negative`,message:E(`settings.localeLoadFailed`),position:`top`})}),localStorage.setItem(`kobo:locale`,e)}let Zu=c(()=>[...Ze.map(e=>({label:E(e.i18nLabelKey),value:e.value}))]),Qu=c(()=>[...Ye.map(e=>({label:E(e.i18nLabelKey),value:e.value}))]),$u=c(()=>[{label:E(`settings.useGlobal`),value:``},...Zu.value]),ed=c(()=>[{label:E(`settings.forge.auto`),value:`auto`},{label:E(`settings.forge.github`),value:`github`},{label:E(`settings.forge.gitlab`),value:`gitlab`},{label:E(`settings.forge.bitbucketCommunity`),value:`bitbucket-community`},{label:E(`settings.forge.none`),value:`none`}]),td=c(()=>$e[`claude-code`].map(e=>({label:E(`agentPermissionMode.${e}`),value:e}))),nd=c(()=>$e.codex.map(e=>({label:E(`agentPermissionMode.${e}`),value:e}))),rd=c(()=>[{name:`{{pr_number}}`,description:E(`settings.var.prNumber`)},{name:`{{pr_url}}`,description:E(`settings.var.prUrl`)},{name:`{{branch_name}}`,description:E(`settings.var.branchName`)},{name:`{{source_branch}}`,description:E(`settings.var.sourceBranch`)},{name:`{{workspace_name}}`,description:E(`settings.var.workspaceName`)},{name:`{{project_name}}`,description:E(`settings.var.projectName`)},{name:`{{notion_url}}`,description:E(`settings.var.notionUrl`)},{name:`{{commits}}`,description:E(`settings.var.commits`)},{name:`{{diff_stats}}`,description:E(`settings.var.diffStats`)},{name:`{{tasks}}`,description:E(`settings.var.tasks`)},{name:`{{acceptance_criteria}}`,description:E(`settings.var.acceptanceCriteria`)}]),id=c(()=>[{label:E(`settings.mcpAutoSelect`),value:``},..._.activeMcpServers.map(e=>({label:e.key,value:e.key}))]),ad=c(()=>we.map(e=>({label:E(e.labelKey),value:e.id}))),od=c(()=>[{label:E(`settings.soundGeneral`),value:Ce},...ad.value]),sd=c(()=>[{label:E(`voice.noneModel`),value:null}].concat(_.voiceModels.map(e=>({label:e.installed?`${e.name}`:`${e.name} (${E(`voice.notInstalled`)})`,value:e.name})))),cd=[{label:`auto`,value:`auto`},{label:`ar`,value:`ar`},{label:`de`,value:`de`},{label:`en`,value:`en`},{label:`es`,value:`es`},{label:`fr`,value:`fr`},{label:`hi`,value:`hi`},{label:`it`,value:`it`},{label:`ja`,value:`ja`},{label:`ko`,value:`ko`},{label:`nl`,value:`nl`},{label:`pl`,value:`pl`},{label:`pt`,value:`pt`},{label:`ru`,value:`ru`},{label:`tr`,value:`tr`},{label:`uk`,value:`uk`},{label:`vi`,value:`vi`},{label:`zh`,value:`zh`}];function ld(){Ue(Bt.value,Gt.value)}function ud(){Ue(Vt.value,Kt.value)}function dd(){Ue(Ht.value,G.value)}function fd(){Ue(Ut.value,Gc.value)}let $=c(()=>X.value<0||X.value>=_.projects.length?null:_.projects[X.value]??null),pd=n(_d()),md=n({});function hd(){return{claudeModel:pe.value,codexModel:he.value,prPrompt:ge.value,reviewPrompt:M.value,ciFixPrompt:Ee.value,finalizationPrompt:Oe.value,gitConventions:N.value,editorCommand:Ae.value,fileManagerCommand:B.value,terminalCommand:Xe.value,autoPurgeOnPrMerged:nt.value,autoLoopMaxRetries:it.value,awaitingUserReminderMinutes:gt.value,wsEventsRetentionDays:_t.value,wsEventsKeepPerWorkspace:vt.value,browserNotifications:Nt.value,audioNotifications:W.value,audioQuestionNotifications:Ft.value,audioWorkspaceCreatedNotifications:Rt.value,audioAgentErrorNotifications:zt.value,audioNotificationSound:Bt.value,audioQuestionSound:Vt.value,audioWorkspaceCreatedSound:Ht.value,audioAgentErrorSound:Ut.value,audioNotificationVolume:Gt.value,audioQuestionVolume:Kt.value,audioWorkspaceCreatedVolume:G.value,audioAgentErrorVolume:Gc.value,prNotificationSounds:Kc.value,notionStatusProperty:qc.value,notionStatus:Jc.value,notionAssigneeProperty:Yc.value,notionUserId:Xc.value,notionInitialPrompt:fl.value,sentryInitialPrompt:pl.value,claudePermissionMode:ml.value,codexPermissionMode:hl.value,notionMcpKey:gl.value,sentryMcpKey:_l.value,bitbucketToken:vl.value,bitbucketUsername:yl.value,notionEnabled:J.value,sentryEnabled:bl.value,showVerboseSystemMessages:Zc.value,showThinkingBlocks:Qc.value,whipEnabled:$c.value,whipShortcut:el.value,whipVolume:tl.value,tags:xl.value,branchPrefixes:Y.value,setupScript:Cl.value,cleanupScript:wl.value,cleanupScriptMode:Tl.value,cleanupScriptOnlyOnChanges:El.value,archiveScript:Dl.value,changeSourceBranchScript:jl.value,sessionEndedScript:Ol.value,prMergedScript:kl.value,autoLoopDisabledScript:Al.value,worktreesPath:Il.value,worktreesPrefixByProject:Rl.value,flattenWorkspaceList:Wl.value,skillSuite:Gl.value,customReviewTemplate:ql.value,customAutoLoopReviewGate:Jl.value,customAutoLoopGroomingIntro:Yl.value,customQaPromptTemplate:Xl.value,customBrainstormingInstruction:Zl.value,voiceEnabled:tu.value,voicePttKey:nu.value,voiceLanguage:ru.value,voiceModel:iu.value,voiceCommandPath:au.value,voiceFfmpegPath:ou.value,voiceTemperature:su.value,voicePrompt:cu.value,voiceTranslateToEnglish:lu.value,voiceSuppressNst:uu.value}}function gd(){return{...Q.value}}function _d(){return Jt(hd())}function vd(){return Jt(gd())}let yd=c(()=>!qt(hd(),pd.value)),bd=c(()=>!qt(gd(),md.value)),xd=c(()=>_.loadError?!1:yd.value?!0:bd.value&&($.value!==null||Z.value)),Sd=c(()=>bd.value&&($.value!==null||Z.value)?ju.value:_u.value);function Cd(){bd.value&&($.value!==null||Z.value)?Ud():Pd()}function wd(){fu.value=!0;let e=_.global.defaultModelByEngine??{};pe.value=e[`claude-code`]??`auto`,he.value=e.codex??`auto`,ge.value=_.global.prPromptTemplate,M.value=_.global.reviewPromptTemplate??``,Ee.value=_.global.ciFixPromptTemplate??``,Oe.value=_.global.finalizationPrompt??``,N.value=_.global.gitConventions,Ae.value=_.global.editorCommand??``,B.value=_.global.fileManagerCommand??``,Xe.value=_.global.terminalCommand??``,nt.value=_.global.autoPurgeOnPrMerged??!1,it.value=_.global.autoLoopMaxRetries??5,gt.value=_.global.awaitingUserReminderMinutes??0,_t.value=_.global.wsEventsRetentionDays??0,vt.value=_.global.wsEventsKeepPerWorkspace??0,Nt.value=_.global.browserNotifications??!0,W.value=_.global.audioNotifications??!0,Ft.value=_.global.audioQuestionNotifications??!1,Rt.value=_.global.audioWorkspaceCreatedNotifications??!1,zt.value=_.global.audioAgentErrorNotifications??!1,Bt.value=We(_.global.audioNotificationSound),Vt.value=xe(_.global.audioQuestionSound),Ht.value=xe(_.global.audioWorkspaceCreatedSound),Ut.value=xe(_.global.audioAgentErrorSound);let t=Object.fromEntries(ve.map(e=>[e,xe(_.global[e])])),n=Object.fromEntries(_e.map(e=>{let t=_.global[e];if(e.endsWith(`Enabled`))return[e,typeof t==`boolean`&&t];let n=Number(t);return[e,Number.isFinite(n)?Math.max(0,Math.min(1,n)):1]}));Kc.value={...t,...n};let r=_.global.audioNotificationVolume;Gt.value=typeof r==`number`&&Number.isFinite(r)?Math.max(0,Math.min(1,r)):1;let i=_.global.audioQuestionVolume;Kt.value=typeof i==`number`&&Number.isFinite(i)?Math.max(0,Math.min(1,i)):1;let a=_.global.audioWorkspaceCreatedVolume;G.value=typeof a==`number`&&Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;let o=_.global.audioAgentErrorVolume;Gc.value=typeof o==`number`&&Number.isFinite(o)?Math.max(0,Math.min(1,o)):1,qc.value=_.global.notionStatusProperty??``,Jc.value=_.global.notionInProgressStatus??``,Yc.value=_.global.notionAssigneeProperty??``,Xc.value=_.global.notionUserId??``,fl.value=_.global.notionInitialPromptTemplate??``,pl.value=_.global.sentryInitialPromptTemplate??``;{let e=_.global.defaultPermissionModeByEngine??{},t=e=>e===`plan`||e===`bypass`||e===`strict`||e===`interactive`,n=e[`claude-code`];ml.value=t(n)?n:`bypass`;let r=e.codex;hl.value=t(r)?r:`bypass`}gl.value=_.global.notionMcpKey??``,_l.value=_.global.sentryMcpKey??``,vl.value=_.global.bitbucketToken??``,yl.value=_.global.bitbucketUsername??``,J.value=_.global.notionEnabled??!0,bl.value=_.global.sentryEnabled??!0,Zc.value=_.showVerboseSystemMessages,Qc.value=_.global.showThinkingBlocks??!0,$c.value=_.global.whipEnabled??!1,el.value=_.global.whipShortcut??`mod+shift+x`,tl.value=_.global.whipVolume??1,xl.value=Array.isArray(_.global.tags)?[..._.global.tags]:[],Y.value=Array.isArray(_.global.branchPrefixes)?[..._.global.branchPrefixes]:[],Cl.value=_.global.setupScript??``,wl.value=_.global.cleanupScript??``,Tl.value=_.global.cleanupScriptMode===`idle`?`idle`:`no-tasks`,El.value=_.global.cleanupScriptOnlyOnChanges??!1,Dl.value=_.global.archiveScript??``,Ol.value=_.global.sessionEndedScript??``,kl.value=_.global.prMergedScript??``,Al.value=_.global.autoLoopDisabledScript??``,jl.value=_.global.changeSourceBranchScript??``,Il.value=_.global.worktreesPath??`.worktrees`,Rl.value=_.global.worktreesPrefixByProject??!1,Wl.value=_.global.flattenWorkspaceList??!1,Gl.value=_.global.skillSuite??`superpowers`,ql.value=_.global.customReviewTemplate??``,Jl.value=_.global.customAutoLoopReviewGate??``,Yl.value=_.global.customAutoLoopGroomingIntro??``,Xl.value=_.global.customQaPromptTemplate??``,Zl.value=_.global.customBrainstormingInstruction??``,tu.value=_.global.voiceEnabled??!1,nu.value=_.global.voicePttKey===`ctrl+space`?`ctrl+space`:`alt`,ru.value=_.global.voiceLanguage??`auto`,iu.value=_.global.voiceModel??null,au.value=_.global.voiceCommandPath??``,ou.value=_.global.voiceFfmpegPath??``,su.value=typeof _.global.voiceTemperature==`number`?_.global.voiceTemperature:0,cu.value=_.global.voicePrompt??``,lu.value=_.global.voiceTranslateToEnglish??!1,uu.value=_.global.voiceSuppressNonSpeechTokens??!0,fu.value=!1,pd.value=_d()}ee(()=>iu.value,(e,t)=>{fu.value||e!==t&&(su.value=hu(e))});function Td(e){if(!e){Q.value={path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}},ku.value=[],md.value=vd();return}Q.value={path:e.path,displayName:e.displayName,color:e.color??null,defaultSourceBranch:e.defaultSourceBranch,defaultModel:e.defaultModel,forge:e.forge??`auto`,prPromptTemplate:e.prPromptTemplate,reviewPromptTemplate:e.reviewPromptTemplate??``,ciFixPromptTemplate:e.ciFixPromptTemplate??``,notionInitialPromptTemplate:e.notionInitialPromptTemplate??``,sentryInitialPromptTemplate:e.sentryInitialPromptTemplate??``,gitConventions:e.gitConventions??``,setupScript:e.setupScript??``,taskPromptTemplate:e.taskPromptTemplate??``,cleanupScript:e.cleanupScript??``,cleanupScriptMode:e.cleanupScriptMode??``,archiveScript:e.archiveScript??``,changeSourceBranchScript:e.changeSourceBranchScript??``,sessionEndedScript:e.sessionEndedScript??``,prMergedScript:e.prMergedScript??``,autoLoopDisabledScript:e.autoLoopDisabledScript??``,devServer:{startCommand:e.devServer?.startCommand??``,stopCommand:e.devServer?.stopCommand??``},e2e:{framework:e.e2e?.framework??``,skill:e.e2e?.skill??``,prompt:e.e2e?.prompt??``},finalization:{prompt:e.finalization?.prompt??``}},md.value=vd(),e.path&&Ed(e.path)}async function Ed(e){if(!e.trim()){ku.value=[];return}Au.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();ku.value=n.local??n.branches??[]}catch{ku.value=[]}finally{Au.value=!1}}let Dd=null;ee(()=>Q.value.path,e=>{Dd&&clearTimeout(Dd),Dd=setTimeout(()=>{Ed(e)},500)}),ee(X,()=>{Z.value=!1,Td($.value)});let Od=n(null);async function kd(){try{let e=await fetch(`/api/settings/export`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`kobo-config-${new Date().toISOString().replace(/[:.]/g,`-`)}.json`,i.click(),URL.revokeObjectURL(r),m.notify({type:`positive`,message:E(`settings.exportSuccess`),position:`top`,timeout:3e3})}catch(e){m.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}function Ad(){Od.value?.click()}async function jd(e){let t=e.target,n=t.files?.[0];if(n)try{m.dialog({title:E(`settings.importConfirmTitle`),message:E(`settings.importConfirmMessage`),cancel:!0,persistent:!0,dark:!0}).onOk(async()=>{try{let e=await n.text(),t=JSON.parse(e),r=await fetch(`/api/settings/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}await _.fetchSettings(),wd(),m.notify({type:`positive`,message:E(`settings.importSuccess`),position:`top`,timeout:3e3})}catch(e){m.notify({type:`negative`,message:String(e),position:`top`,timeout:5e3})}})}finally{t.value=``}}async function Md(e){if(q.value===null){q.value=e;try{let t=await _.fetchGlobalDefaults(),n={prPromptTemplate:ge,reviewPromptTemplate:M,ciFixPromptTemplate:Ee,finalizationPrompt:Oe,gitConventions:N,notionInitialPromptTemplate:fl,sentryInitialPromptTemplate:pl};n[e].value=t[e]}catch(e){console.error(`[SettingsPage] resetFieldToDefault failed:`,e),m.notify({type:`negative`,message:E(`settings.resetFailed`),position:`top`})}finally{q.value=null}}}async function Nd(){let e=e=>e===0?1/0:e,t=_.global.wsEventsRetentionDays??0,n=_t.value;if(e(n)>=e(t))return!0;let r=E(`settings.retentionConfirmMessageUnknown`,{days:n});try{let e=await _.previewRetention(n,vt.value);r=E(`settings.retentionConfirmMessage`,{days:n,count:e.deletable,total:e.total})}catch(e){console.error(`[SettingsPage] retention preview failed:`,e)}return await new Promise(e=>{m.dialog({title:E(`settings.retentionConfirmTitle`),message:r,cancel:!0,persistent:!0,dark:!0}).onOk(()=>e(!0)).onCancel(()=>e(!1)).onDismiss(()=>e(!1))})}async function Pd(){if(await Ll.value?.validate()!==!1&&await Nd()){_u.value=!0;try{await _.updateGlobal({defaultModelByEngine:{"claude-code":pe.value,codex:he.value},prPromptTemplate:ge.value,reviewPromptTemplate:M.value,ciFixPromptTemplate:Ee.value,finalizationPrompt:Oe.value,gitConventions:N.value,editorCommand:Ae.value,fileManagerCommand:B.value,terminalCommand:Xe.value,autoPurgeOnPrMerged:nt.value,autoLoopMaxRetries:it.value,awaitingUserReminderMinutes:gt.value,wsEventsRetentionDays:_t.value,wsEventsKeepPerWorkspace:vt.value,browserNotifications:Nt.value,audioNotifications:W.value,audioQuestionNotifications:Ft.value,audioWorkspaceCreatedNotifications:Rt.value,audioAgentErrorNotifications:zt.value,audioNotificationSound:Bt.value,audioQuestionSound:Vt.value,audioWorkspaceCreatedSound:Ht.value,audioAgentErrorSound:Ut.value,audioNotificationVolume:Gt.value,audioQuestionVolume:Kt.value,audioWorkspaceCreatedVolume:G.value,audioAgentErrorVolume:Gc.value,...Kc.value,notionStatusProperty:qc.value,notionInProgressStatus:Jc.value,notionAssigneeProperty:Yc.value,notionUserId:Xc.value,notionInitialPromptTemplate:fl.value,sentryInitialPromptTemplate:pl.value,defaultPermissionModeByEngine:{"claude-code":ml.value,codex:hl.value},notionMcpKey:gl.value,sentryMcpKey:_l.value,bitbucketToken:vl.value,bitbucketUsername:yl.value,notionEnabled:J.value,sentryEnabled:bl.value,showThinkingBlocks:Qc.value,whipEnabled:$c.value,whipShortcut:el.value,whipVolume:tl.value,tags:xl.value,branchPrefixes:Y.value,setupScript:Cl.value,cleanupScript:wl.value,cleanupScriptMode:Tl.value,cleanupScriptOnlyOnChanges:El.value,archiveScript:Dl.value,changeSourceBranchScript:jl.value,sessionEndedScript:Ol.value,prMergedScript:kl.value,autoLoopDisabledScript:Al.value,worktreesPath:Il.value,worktreesPrefixByProject:Rl.value,flattenWorkspaceList:Wl.value,skillSuite:Gl.value,customReviewTemplate:ql.value,customAutoLoopReviewGate:Jl.value,customAutoLoopGroomingIntro:Yl.value,customQaPromptTemplate:Xl.value,customBrainstormingInstruction:Zl.value,voiceEnabled:tu.value,voicePttKey:nu.value,voiceLanguage:ru.value,voiceModel:iu.value,voiceCommandPath:au.value.trim(),voiceFfmpegPath:ou.value.trim(),voiceTemperature:su.value,voicePrompt:cu.value,voiceTranslateToEnglish:lu.value,voiceSuppressNonSpeechTokens:uu.value}),_.setVerboseSystemMessages(Zc.value),pd.value=_d(),m.notify({type:`positive`,message:E(`settings.saved`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.saveError`),position:`top`})}finally{_u.value=!1}}}async function Fd(e){du.value=e,Bd();try{await _.downloadVoiceModel(e)}catch{m.notify({type:`negative`,message:E(`voice.downloadFailed`),position:`top`})}finally{du.value=null,Vd()}}async function Id(e){du.value=e;try{await _.deleteVoiceModel(e),iu.value===e&&(iu.value=null)}catch{m.notify({type:`negative`,message:E(`voice.deleteFailed`),position:`top`})}finally{du.value=null}}async function Ld(e){try{await _.cancelVoiceModelDownload(e)}catch{m.notify({type:`negative`,message:E(`voice.cancelFailed`),position:`top`})}}function Rd(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}let zd=null;function Bd(){zd||=setInterval(()=>{document.visibilityState!==`hidden`&&_.fetchVoiceModels().catch(e=>{console.error(`[settings] voice model polling failed:`,e)})},Wc)}function Vd(){zd&&=(clearInterval(zd),null)}async function Hd(e){try{await navigator.clipboard.writeText(e),m.notify({type:`positive`,message:E(`common.copied`),position:`top`,timeout:1200})}catch{m.notify({type:`negative`,message:E(`common.copyFailed`),position:`top`})}}async function Ud(){if(!Q.value.path.trim()){m.notify({type:`negative`,message:E(`settings.projectPathRequired`),position:`top`});return}ju.value=!0;try{await _.upsertProject(Q.value.path.trim(),{displayName:Q.value.displayName,color:Q.value.color,defaultSourceBranch:Q.value.defaultSourceBranch,defaultModel:Q.value.defaultModel,forge:Q.value.forge,prPromptTemplate:Q.value.prPromptTemplate,reviewPromptTemplate:Q.value.reviewPromptTemplate,ciFixPromptTemplate:Q.value.ciFixPromptTemplate,notionInitialPromptTemplate:Q.value.notionInitialPromptTemplate,sentryInitialPromptTemplate:Q.value.sentryInitialPromptTemplate,gitConventions:Q.value.gitConventions,setupScript:Q.value.setupScript,taskPromptTemplate:Q.value.taskPromptTemplate,cleanupScript:Q.value.cleanupScript,cleanupScriptMode:Q.value.cleanupScriptMode,archiveScript:Q.value.archiveScript,changeSourceBranchScript:Q.value.changeSourceBranchScript,sessionEndedScript:Q.value.sessionEndedScript,prMergedScript:Q.value.prMergedScript,autoLoopDisabledScript:Q.value.autoLoopDisabledScript,devServer:Q.value.devServer,e2e:Q.value.e2e,finalization:Q.value.finalization}),Z.value=!1;let e=_.projects.findIndex(e=>e.path===Q.value.path.trim());e>=0&&(X.value=e),md.value=vd(),m.notify({type:`positive`,message:E(`settings.projectSaved`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.projectSaveError`),position:`top`})}finally{ju.value=!1}}function Wd(){if(!$.value)return;let e=$.value.displayName||$.value.path;m.dialog({title:E(`settings.deleteProjectConfirmTitle`),message:E(`settings.deleteProjectConfirmMessage`,{name:e}),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`common.delete`),color:`red-5`}}).onOk(async()=>{if($.value){Mu.value=!0;try{await _.deleteProject($.value.path),X.value=-1,Z.value=!1,Td(null),m.notify({type:`positive`,message:E(`settings.projectDeleted`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.projectDeleteError`),position:`top`})}finally{Mu.value=!1}}})}function Gd(){X.value=-1,Z.value=!0,Td(null),yu.value=null,bu.value=null}function Kd(e){if(bd.value&&($.value!==null||Z.value)){m.dialog({title:E(`settings.unsavedChanges.title`),message:E(`settings.unsavedChanges.message`),dark:!0,persistent:!0,ok:{flat:!0,label:E(`settings.unsavedChanges.discard`),color:`negative`},cancel:{flat:!0,label:E(`settings.unsavedChanges.cancel`),color:`kobo-2`}}).onOk(()=>{Z.value=!1,X.value=e,yu.value=null,bu.value=null});return}Z.value=!1,X.value=e,yu.value=null,bu.value=null}function qd(e){if(e.displayName)return e.displayName;let t=e.path.split(`/`);return t[t.length-1]??e.path}let Jd=n([]);function Yd(e,t){t(()=>{Jd.value=e?ku.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):ku.value})}async function Xd(){await _.fetchSettings(),_.loadError||wd()}return p(async()=>{await Promise.all([_.fetchSettings(),_.fetchActiveMcpServers(),Du()]);try{let e=await _.fetchGlobalDefaults();Ml.value=e.changeSourceBranchScript??``}catch(e){console.error(`[SettingsPage] fetchGlobalDefaults failed:`,e)}await _.fetchVoiceModels(),await _.fetchVoiceRuntime(),wd(),_.global.notionEnabled&&dl().catch(()=>{}),wt(),Le(`settings:global`,()=>yd.value),Le(`settings:project`,()=>bd.value&&($.value!==null||Z.value))}),d(()=>{Dd&&clearTimeout(Dd),Vd(),Ne(`settings:global`),Ne(`settings:project`)}),(e,n)=>(h(),u(mt,{class:`settings-page`},{default:w(()=>[t(_).loadError?(h(),b(`div`,Xt,[C(O,{name:`error`,size:`18px`}),y(`div`,Zt,[y(`span`,Qt,r(e.$t(`settings.loadFailed`)),1),y(`span`,$t,r(t(_).loadError),1),y(`span`,en,r(e.$t(`settings.loadFailedHint`)),1)]),C(H),C(A,{dense:``,flat:``,"no-caps":``,icon:`refresh`,label:e.$t(`common.retry`),onClick:Xd},null,8,[`label`])])):v(``,!0),y(`div`,tn,[t(oe)?(h(),u(ut,{key:1,modelValue:j.value,"onUpdate:modelValue":n[0]||=e=>j.value=e,side:`left`,overlay:``,behavior:`mobile`,width:240},{default:w(()=>[C(L,null,{default:w(()=>[C(I,{clickable:``,onClick:le},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`arrow_back`})]),_:1}),C(R,null,{default:w(()=>[S(r(e.$t(`workspaceList.title`)),1)]),_:1})]),_:1}),C(Fe)]),_:1}),y(`div`,an,[y(`div`,on,r(e.$t(`settings.title`)),1),C(Lt,{"nav-items":ue.value,"active-tab":k.value,onSelect:ce},null,8,[`nav-items`,`active-tab`])])]),_:1},8,[`modelValue`])):(h(),b(`aside`,nn,[y(`div`,rn,r(e.$t(`settings.title`)),1),C(Lt,{"nav-items":ue.value,"active-tab":k.value,onSelect:ce},null,8,[`nav-items`,`active-tab`])])),y(`main`,sn,[y(`header`,cn,[C(ht,{"exclude-mobile":``,class:`q-mr-sm`}),t(oe)?(h(),u(A,{key:0,flat:``,dense:``,round:``,icon:`menu`,"aria-label":e.$t(`settings.openNav`),class:`settings-content__nav-toggle`,onClick:n[1]||=e=>j.value=!0},{default:w(()=>[C(V,null,{default:w(()=>[S(r(e.$t(`settings.openNav`)),1)]),_:1})]),_:1},8,[`aria-label`])):v(``,!0),y(`h2`,ln,r(de.value),1)]),y(`div`,un,[D(y(`div`,dn,[k.value===`general`?(h(),b(`div`,fn,[y(`div`,pn,r(e.$t(`settings.language`)),1),C(z,{"model-value":t(ie),options:Yu,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`,"onUpdate:modelValue":Xu},null,8,[`model-value`])])):v(``,!0),k.value===`general`?(h(),b(`div`,mn,[y(`div`,hn,r(e.$t(`settings.workspaceListSection`)),1),C(F,{modelValue:Wl.value,"onUpdate:modelValue":n[2]||=e=>Wl.value=e,label:e.$t(`settings.flattenWorkspaceList`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),y(`div`,gn,r(e.$t(`settings.flattenWorkspaceListHint`)),1)])):v(``,!0),k.value===`skills`?(h(),b(`div`,_n,[y(`div`,vn,r(e.$t(`settings.skillSuite.section`)),1),C(je,{modelValue:Gl.value,"onUpdate:modelValue":n[3]||=e=>Gl.value=e,options:[{label:e.$t(`settings.skillSuite.superpowers`),value:`superpowers`},{label:e.$t(`settings.skillSuite.gstack`),value:`gstack`},{label:e.$t(`settings.skillSuite.ecc`),value:`ecc`},{label:e.$t(`settings.skillSuite.superpowersGstack`),value:`superpowers+gstack`},{label:e.$t(`settings.skillSuite.allThree`),value:`superpowers+gstack+ecc`},{label:e.$t(`settings.skillSuite.custom`),value:`custom`}],type:`radio`,color:`primary`,dense:``,dark:``,inline:``},null,8,[`modelValue`,`options`]),y(`div`,yn,r(e.$t(Kl.value)),1),C(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`restart_alt`,label:e.$t(`settings.skillSuite.reloadDefaults`),disable:Gl.value!==`custom`,class:`q-mt-sm`,onClick:pu},null,8,[`label`,`disable`])])):v(``,!0),k.value===`skills`&&Gl.value===`custom`?(h(),b(`div`,bn,[y(`div`,xn,r(e.$t(`settings.skillSuite.customPrompts`)),1),y(`div`,Sn,r(e.$t(`settings.skillSuite.reviewTemplate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`reviewTemplate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`reviewTemplate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:ql.value,"onUpdate:modelValue":n[4]||=e=>ql.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,Cn,r(e.$t(`settings.skillSuite.autoLoopReviewGate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`autoLoopReviewGate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`autoLoopReviewGate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Jl.value,"onUpdate:modelValue":n[5]||=e=>Jl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,wn,r(e.$t(`settings.skillSuite.autoLoopGroomingIntro`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`autoLoopGroomingIntro`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`autoLoopGroomingIntro`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Yl.value,"onUpdate:modelValue":n[6]||=e=>Yl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,Tn,r(e.$t(`settings.skillSuite.qaTemplate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`qaPromptTemplate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`qaPromptTemplate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Xl.value,"onUpdate:modelValue":n[7]||=e=>Xl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,En,r(e.$t(`settings.skillSuite.brainstormingInstruction`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`brainstormingInstruction`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`brainstormingInstruction`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Zl.value,"onUpdate:modelValue":n[8]||=e=>Zl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])])):v(``,!0),k.value===`agents`?(h(),b(`div`,Dn,[y(`div`,On,r(e.$t(`settings.defaultModelClaude`)),1),C(z,{modelValue:pe.value,"onUpdate:modelValue":n[9]||=e=>pe.value=e,options:Zu.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,kn,r(e.$t(`settings.defaultModelCodex`)),1),C(z,{modelValue:he.value,"onUpdate:modelValue":n[10]||=e=>he.value=e,options:Qu.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,An,r(e.$t(`settings.defaultPermissionModeClaude`)),1),y(`div`,jn,r(e.$t(`settings.defaultPermissionModeHint`)),1),C(z,{modelValue:ml.value,"onUpdate:modelValue":n[11]||=e=>ml.value=e,options:td.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,Mn,r(e.$t(`settings.defaultPermissionModeCodex`)),1),C(z,{modelValue:hl.value,"onUpdate:modelValue":n[12]||=e=>hl.value=e,options:nd.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])])):v(``,!0),k.value===`general`?(h(),b(`div`,Nn,[y(`div`,Pn,r(e.$t(`settings.activityFeed`)),1),y(`div`,Fn,[C(F,{modelValue:Zc.value,"onUpdate:modelValue":n[13]||=e=>Zc.value=e,label:e.$t(`settings.verboseMessages`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),C(F,{modelValue:Qc.value,"onUpdate:modelValue":n[14]||=e=>Qc.value=e,label:e.$t(`settings.showThinkingBlocks`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`])])])):v(``,!0),k.value===`general`?(h(),b(`div`,In,[y(`div`,Ln,r(e.$t(`settings.whipSettings`)),1),y(`div`,Rn,r(e.$t(`settings.whipSettingsHint`)),1),C(F,{modelValue:$c.value,"onUpdate:modelValue":n[15]||=e=>$c.value=e,label:e.$t(`settings.whipEnabled`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},{default:w(()=>[C(V,null,{default:w(()=>[S(r(e.$t(`settings.whipEnabledHint`)),1)]),_:1})]),_:1},8,[`modelValue`,`label`]),$c.value?(h(),b(`div`,zn,[C(Wt,{modelValue:el.value,"onUpdate:modelValue":n[16]||=e=>el.value=e},null,8,[`modelValue`]),y(`div`,Bn,[y(`div`,Vn,r(e.$t(`settings.whipVolume`)),1),C(Ct,{modelValue:tl.value,"onUpdate:modelValue":n[17]||=e=>tl.value=e,min:0,max:1,step:.05,disable:nl.value.disabled,"aria-label":e.$t(`settings.whipVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,Hn,r(Math.round(tl.value*100))+`% `,1)]),nl.value.hintKey?(h(),b(`div`,Un,r(e.$t(nl.value.hintKey)),1)):v(``,!0)])):v(``,!0)])):v(``,!0),k.value===`notifications`?(h(),b(`div`,Wn,[y(`div`,Gn,r(e.$t(`settings.notifications`)),1),y(`div`,Kn,[y(`div`,qn,[y(`div`,Jn,r(e.$t(`settings.notificationSound`)),1),y(`div`,Yn,r(e.$t(`settings.notificationSoundHint`)),1),y(`div`,Xn,[C(F,{modelValue:Nt.value,"onUpdate:modelValue":n[18]||=e=>Nt.value=e,label:e.$t(`settings.enableBrowserNotifications`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),C(F,{modelValue:W.value,"onUpdate:modelValue":n[19]||=e=>W.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`])]),y(`div`,Zn,[C(at,{dense:``,square:``,color:rl.value.color,"text-color":`white`,icon:`notifications`},{default:w(()=>[S(r(rl.value.label),1)]),_:1},8,[`color`]),C(A,{flat:``,dense:``,"no-caps":``,color:`primary`,icon:`notifications_active`,label:e.$t(`settings.testBrowserNotification`),onClick:il},null,8,[`label`])]),y(`div`,Qn,[C(z,{modelValue:Bt.value,"onUpdate:modelValue":n[20]||=e=>Bt.value=e,options:ad.value,label:e.$t(`settings.notificationSound`),disable:!W.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!W.value,onClick:ld},null,8,[`label`,`disable`])]),y(`div`,$n,[y(`div`,er,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Gt.value,"onUpdate:modelValue":n[21]||=e=>Gt.value=e,min:0,max:1,step:.05,disable:!W.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,tr,r(Math.round(Gt.value*100))+`% `,1)])]),y(`div`,nr,[y(`div`,rr,r(e.$t(`settings.questionSound`)),1),y(`div`,ir,r(e.$t(`settings.questionSoundHint`)),1),C(F,{modelValue:Ft.value,"onUpdate:modelValue":n[22]||=e=>Ft.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,ar,[C(z,{modelValue:Vt.value,"onUpdate:modelValue":n[23]||=e=>Vt.value=e,options:od.value,label:e.$t(`settings.questionSound`),disable:!Ft.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!Ft.value,onClick:ud},null,8,[`label`,`disable`])]),y(`div`,or,[y(`div`,sr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Kt.value,"onUpdate:modelValue":n[24]||=e=>Kt.value=e,min:0,max:1,step:.05,disable:!Ft.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,cr,r(Math.round(Kt.value*100))+`% `,1)])]),y(`div`,lr,[y(`div`,ur,r(e.$t(`settings.workspaceCreatedSound`)),1),y(`div`,dr,r(e.$t(`settings.workspaceCreatedSoundHint`)),1),C(F,{modelValue:Rt.value,"onUpdate:modelValue":n[25]||=e=>Rt.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,fr,[C(z,{modelValue:Ht.value,"onUpdate:modelValue":n[26]||=e=>Ht.value=e,options:od.value,label:e.$t(`settings.workspaceCreatedSound`),disable:!Rt.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!Rt.value,onClick:dd},null,8,[`label`,`disable`])]),y(`div`,pr,[y(`div`,mr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:G.value,"onUpdate:modelValue":n[27]||=e=>G.value=e,min:0,max:1,step:.05,disable:!Rt.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,hr,r(Math.round(G.value*100))+`% `,1)])]),y(`div`,gr,[y(`div`,_r,r(e.$t(`settings.agentErrorSound`)),1),y(`div`,vr,r(e.$t(`settings.agentErrorSoundHint`)),1),C(F,{modelValue:zt.value,"onUpdate:modelValue":n[28]||=e=>zt.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,yr,[C(z,{modelValue:Ut.value,"onUpdate:modelValue":n[29]||=e=>Ut.value=e,options:od.value,label:e.$t(`settings.agentErrorSound`),disable:!zt.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!zt.value,onClick:fd},null,8,[`label`,`disable`])]),y(`div`,br,[y(`div`,xr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Gc.value,"onUpdate:modelValue":n[30]||=e=>Gc.value=e,min:0,max:1,step:.05,disable:!zt.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,Sr,r(Math.round(Gc.value*100))+`%`,1)])])]),C(It,{modelValue:Kc.value,"onUpdate:modelValue":n[31]||=e=>Kc.value=e,"general-sound":Bt.value},null,8,[`modelValue`,`general-sound`])])):v(``,!0),k.value===`voice`?(h(),b(`div`,Cr,[y(`div`,wr,[y(`div`,Tr,r(e.$t(`voice.sectionRuntime`)),1),C(H),C(A,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,color:`kobo-2`,label:t(E)(`common.refresh`),onClick:n[32]||=e=>t(_).fetchVoiceRuntime()},null,8,[`label`])]),y(`div`,Er,[y(`div`,Dr,[C(O,{name:t(_).voiceRuntime?.available?`check_circle`:`cancel`,color:t(_).voiceRuntime?.available?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),y(`span`,{class:a([`text-caption`,t(_).voiceRuntime?.available?`text-green-5`:`text-red-5`])},r(t(_).voiceRuntime?.available?t(E)(`voice.runtimeReady`,{command:t(_).voiceRuntime?.command??`whisper-cli`}):t(E)(`voice.runtimeMissing`,{command:t(_).voiceRuntime?.command??`whisper-cli`})),3)]),y(`div`,Or,[C(O,{name:t(_).voiceRuntime?.ffmpegAvailable?`check_circle`:`cancel`,color:t(_).voiceRuntime?.ffmpegAvailable?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),y(`span`,{class:a([`text-caption`,t(_).voiceRuntime?.ffmpegAvailable?`text-green-5`:`text-red-5`])},r(t(_).voiceRuntime?.ffmpegAvailable?t(E)(`voice.ffmpegReady`):t(E)(`voice.ffmpegMissing`)),3)])]),C(Ge,{dense:``,dark:``,icon:`help_outline`,label:e.$t(`voice.installGuideTitle`),class:`variables-panel rounded-borders q-mt-sm`},{default:w(()=>[y(`div`,kr,[y(`div`,Ar,r(e.$t(`voice.installGuideIntro`)),1),y(`div`,jr,[y(`a`,Mr,r(e.$t(`voice.installLink`)),1)]),y(`div`,Nr,r(e.$t(`voice.installGuideUbuntuTitle`)),1),n[128]||=y(`pre`,{class:`mono-guide q-mb-sm`},`sudo apt update
|
|
2
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{B as t,C as n,wt as r,xt as i,yt as a}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as o,A as s,B as c,C as l,H as u,It as d,J as f,Mt as p,Ot as m,Rt as h,S as g,Tt as _,U as v,V as y,W as b,Wt as x,X as S,Z as C,_n as w,fn as ee,lt as te,st as T,t as ne,ut as E,yn as D}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{K as ie,X as ae,Z as oe,c as se,l as O,rt as k,t as A,w as j,y as ce}from"./QBtn-B7WFdfmy.js";import{a as le,i as ue}from"./pinia-ClsyLh3i.js";import{i as de,n as fe,t as pe}from"./private.use-form-D8Yuc3aU.js";import{A as me,D as he,E as ge,F as _e,I as ve,Jt as ye,Kt as be,L as xe,M as Se,N as Ce,O as M,P as we,Q as Te,R as Ee,T as De,Xt as Oe,Yt as N,Z as ke,Zt as Ae,a as je,ct as P,et as Me,i as Ne,j as Pe,l as Fe,o as F,qt as Ie,r as Le,s as Re,st as ze,tt as Be,vt as Ve,w as He,x as Ue,z as We}from"./index-BgV6UXly.js";import{n as I,r as L,t as R}from"./QItemSection-CEUi4Tz0.js";import{_ as Ge,a as z,c as Ke,d as qe,l as Je,m as B,n as Ye,p as Xe,r as Ze,s as Qe,t as $e,u as et,y as tt}from"./permissionModes-BR2CNlno.js";import{n as nt,r as V,t as rt}from"./use-quasar-B2sgdABh.js";import{t as it}from"./TouchPan-DO0Y0lcH.js";import{t as H}from"./QSpace-D3PNLwa4.js";import{t as at}from"./QChip-DpUYTCOJ.js";import{t as ot}from"./ClosePopup-CekolbY5.js";import{n as st,t as ct}from"./layout-DdQC-2Sz.js";import{t as lt}from"./QBtnDropdown-VaaGdcMX.js";import{n as ut,t as dt}from"./use-onboarding-BwDLVLlc.js";import{t as ft}from"./QBanner-CDiXUya7.js";import{t as pt}from"./project-color-CZmTicBX.js";import{t as mt}from"./QPage-RpDxx5ah.js";import{t as ht}from"./DrawerToggleButton-D0i0wUjb.js";var gt=`q-slider__marker-labels`,_t=e=>({value:e}),vt=({marker:e})=>E(`div`,{key:e.value,style:e.style,class:e.classes},e.label),U=[34,37,40,33,39,38],yt={...le,...de,min:{type:Number,default:0},max:{type:Number,default:100},innerMin:Number,innerMax:Number,step:{type:Number,default:1,validator:e=>e>=0},snap:Boolean,vertical:Boolean,reverse:Boolean,color:String,markerLabelsClass:String,label:Boolean,labelColor:String,labelTextColor:String,labelAlways:Boolean,switchLabelSide:Boolean,markers:[Boolean,Number],markerLabels:[Boolean,Array,Object,Function],switchMarkerLabelsSide:Boolean,trackImg:String,trackColor:String,innerTrackImg:String,innerTrackColor:String,selectionColor:String,selectionImg:String,thumbSize:{type:String,default:`20px`},trackSize:{type:String,default:`4px`},disable:Boolean,readonly:Boolean,dense:Boolean,tabindex:[String,Number],thumbColor:String,thumbPath:{type:String,default:`M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0`}},bt=[`pan`,`update:modelValue`,`change`];function xt({updateValue:e,updatePosition:t,getDragging:r,formAttrs:i}){let{props:a,emit:o,slots:s,proxy:{$q:l}}=T(),u=ue(a,l),d=fe(i),f=n(!1),p=n(!1),h=n(!1),g=n(!1),_=c(()=>a.vertical?`--v`:`--h`),v=c(()=>`-`+(a.switchLabelSide?`switched`:`standard`)),y=c(()=>a.vertical?a.reverse:a.reverse!==(l.lang.rtl===!0)),b=c(()=>!Number.isFinite(a.innerMin)||a.innerMin<a.min?a.min:a.innerMin),x=c(()=>!Number.isFinite(a.innerMax)||a.innerMax>a.max?a.max:a.innerMax),S=c(()=>!a.disable&&!a.readonly&&b.value<x.value),C=c(()=>{if(a.step===0)return e=>e;let e=(String(a.step).trim().split(`.`)[1]||``).length;return t=>Number.parseFloat(t.toFixed(e))}),w=c(()=>a.step===0?1:a.step),ee=c(()=>S.value?a.tabindex||0:-1),te=c(()=>a.max-a.min),ne=c(()=>x.value-b.value),D=c(()=>M(b.value)),re=c(()=>M(x.value)),ae=c(()=>a.vertical?y.value?`bottom`:`top`:y.value?`right`:`left`),oe=c(()=>a.vertical?`height`:`width`),se=c(()=>a.vertical?`width`:`height`),O=c(()=>a.vertical?`vertical`:`horizontal`),k=c(()=>{let e={role:`slider`,"aria-valuemin":b.value,"aria-valuemax":x.value,"aria-orientation":O.value,"data-step":a.step};return a.disable?e[`aria-disabled`]=`true`:a.readonly&&(e[`aria-readonly`]=`true`),e}),A=c(()=>`q-slider q-slider${_.value} q-slider--${f.value?``:`in`}active inline no-wrap `+(a.vertical?`row`:`column`)+(a.disable?` disabled`:` q-slider--enabled`+(S.value?` q-slider--editable`:``))+(h.value===`both`?` q-slider--focus`:``)+(a.label||a.labelAlways?` q-slider--label`:``)+(a.labelAlways?` q-slider--label-always`:``)+(u.value?` q-slider--dark`:``)+(a.dense?` q-slider--dense q-slider--dense`+_.value:``));function j(e){let t=`q-slider__`+e;return`${t} ${t}${_.value} ${t}${_.value}${v.value}`}function le(e){let t=`q-slider__`+e;return`${t} ${t}${_.value}`}let de=c(()=>{let e=a.selectionColor||a.color;return`q-slider__selection absolute`+(e===void 0?``:` text-${e}`)}),pe=c(()=>le(`markers`)+` absolute overflow-hidden`),me=c(()=>le(`track-container`)),he=c(()=>j(`pin`)),ge=c(()=>j(`label`)),_e=c(()=>j(`text-container`)),ve=c(()=>j(`marker-labels-container`)+(a.markerLabelsClass===void 0?``:` ${a.markerLabelsClass}`)),ye=c(()=>`q-slider__track relative-position no-outline`+(a.trackColor===void 0?``:` bg-${a.trackColor}`)),be=c(()=>{let e={[se.value]:a.trackSize};return a.trackImg!==void 0&&(e.backgroundImage=`url(${a.trackImg}) !important`),e}),xe=c(()=>`q-slider__inner absolute`+(a.innerTrackColor===void 0?``:` bg-${a.innerTrackColor}`)),Se=c(()=>{let e=re.value-D.value,t={[ae.value]:`${100*D.value}%`,[oe.value]:e===0?`2px`:`${100*e}%`};return a.innerTrackImg!==void 0&&(t.backgroundImage=`url(${a.innerTrackImg}) !important`),t});function Ce(e){let{min:t,max:n,step:r}=a,i=t+e*(n-t);if(r>0){let e=(i-b.value)%r;i+=(Math.abs(e)>=r/2?(e<0?-1:1)*r:0)-e}return i=C.value(i),B(i,b.value,x.value)}function M(e){return te.value===0?0:(e-a.min)/te.value}function we(e,t){let n=ie(e),r=a.vertical?B((n.top-t.top)/t.height,0,1):B((n.left-t.left)/t.width,0,1);return B(y.value?1-r:r,D.value,re.value)}let Te=c(()=>Oe(a.markers)&&a.markers>0?a.markers:w.value),Ee=c(()=>{let e=[],t=Te.value,n=a.max,r=a.min;do e.push(r),r+=t;while(r<n);return e.push(n),e}),De=c(()=>{let e=` ${gt}${_.value}-`;return`q-slider__marker-labels${e}${a.switchMarkerLabelsSide?`switched`:`standard`}${e}${y.value?`rtl`:`ltr`}`}),N=c(()=>a.markerLabels===!1?null:P(a.markerLabels).map((e,t)=>({index:t,value:e.value,label:e.label||e.value,classes:De.value+(e.classes===void 0?``:` `+e.classes),style:{...Me(e.value),...e.style}}))),ke=c(()=>({markerList:N.value,markerMap:Ne.value,classes:De.value,getStyle:Me})),je=c(()=>{let e=ne.value===0?`2px`:100*Te.value/ne.value;return{...Se.value,backgroundSize:a.vertical?`2px ${e}%`:`${e}% 2px`}});function P(e){if(e===!1)return null;if(e===!0)return Ee.value.map(_t);if(typeof e==`function`)return Ee.value.map(t=>{let n=e(t);return Ae(n)?{...n,value:t}:{value:t,label:n}});let t=({value:e})=>e>=a.min&&e<=a.max;return Array.isArray(e)?e.map(e=>Ae(e)?e:{value:e}).filter(t):Object.keys(e).map(t=>{let n=e[t],r=Number(t);return Ae(n)?{...n,value:r}:{value:r,label:n}}).filter(t)}function Me(e){return{[ae.value]:`${100*(e-a.min)/te.value}%`}}let Ne=c(()=>{if(a.markerLabels===!1)return null;let e={};return N.value.forEach(t=>{e[t.value]=t}),e});function Pe(){if(s[`marker-label-group`]!==void 0)return s[`marker-label-group`](ke.value);let e=s[`marker-label`]||vt;return N.value.map(t=>e({marker:t,...ke.value}))}let Fe=c(()=>[[it,F,void 0,{[O.value]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]);function F(n){n.isFinal?(g.value!==void 0&&(t(n.evt),n.touch&&e(!0),g.value=void 0,o(`pan`,`end`)),f.value=!1,h.value=!1):n.isFirst?(g.value=r(n.evt),t(n.evt),e(),f.value=!0,o(`pan`,`start`)):(t(n.evt),e())}function Ie(){h.value=!1}function Le(n){t(n,r(n)),e(),p.value=!0,f.value=!0,document.addEventListener(`mouseup`,Re,!0)}function Re(){p.value=!1,f.value=!1,e(!0),Ie(),document.removeEventListener(`mouseup`,Re,!0)}function ze(n){t(n,r(n)),e(!0)}function Be(t){U.includes(t.keyCode)&&e(!0)}function Ve(e){if(a.vertical)return null;let t=l.lang.rtl===a.reverse?e:1-e;return{transform:`translateX(calc(${2*t-1} * ${a.thumbSize} / 2 + ${50-100*t}%))`}}function He(e){let t=c(()=>!p.value&&(h.value===e.focusValue||h.value===`both`)?` q-slider--focus`:``),n=c(()=>`q-slider__thumb q-slider__thumb${_.value} q-slider__thumb${_.value}-${y.value?`rtl`:`ltr`} absolute non-selectable`+t.value+(e.thumbColor.value===void 0?``:` text-${e.thumbColor.value}`)),r=c(()=>({width:a.thumbSize,height:a.thumbSize,[ae.value]:`${100*e.ratio.value}%`,zIndex:h.value===e.focusValue?2:void 0})),i=c(()=>e.labelColor.value===void 0?``:` text-${e.labelColor.value}`),o=c(()=>Ve(e.ratio.value)),s=c(()=>`q-slider__text`+(e.labelTextColor.value===void 0?``:` text-${e.labelTextColor.value}`));return()=>{let t=[E(`svg`,{class:`q-slider__thumb-shape absolute-full`,viewBox:`0 0 20 20`,"aria-hidden":`true`},[E(`path`,{d:a.thumbPath})]),E(`div`,{class:`q-slider__focus-ring fit`})];return(a.label||a.labelAlways)&&t.push(E(`div`,{class:he.value+` absolute fit no-pointer-events`+i.value},[E(`div`,{class:ge.value,style:{minWidth:a.thumbSize}},[E(`div`,{class:_e.value,style:o.value},[E(`span`,{class:s.value},e.label.value)])])])),e.injectFormInput!==!1&&a.name!==void 0&&!a.disable&&d(t,`push`),E(`div`,{class:n.value,style:r.value,...e.getNodeData()},t)}}function Ue(e,t,n,r){let i=[];a.innerTrackColor!==`transparent`&&i.push(E(`div`,{key:`inner`,class:xe.value,style:Se.value})),a.selectionColor!==`transparent`&&i.push(E(`div`,{key:`selection`,class:de.value,style:e.value})),a.markers!==!1&&i.push(E(`div`,{key:`marker`,class:pe.value,style:je.value})),r(i);let o=[ce(`div`,{key:`trackC`,class:me.value,tabindex:t.value,...n.value},[E(`div`,{class:ye.value,style:be.value},i)],`slide`,S.value,()=>Fe.value)];return a.markerLabels!==!1&&o[a.switchMarkerLabelsSide?`unshift`:`push`](E(`div`,{key:`markerL`,class:ve.value},Pe())),o}return m(()=>{document.removeEventListener(`mouseup`,Re,!0)}),{state:{active:f,focus:h,preventFocus:p,dragging:g,editable:S,classes:A,tabindex:ee,attributes:k,roundValueFn:C,keyStep:w,trackLen:te,innerMin:b,innerMinRatio:D,innerMax:x,innerMaxRatio:re,positionProp:ae,sizeProp:oe,isReversed:y},methods:{onActivate:Le,onMobileClick:ze,onBlur:Ie,onKeyup:Be,getContent:Ue,getThumbRenderFn:He,convertRatioToModel:Ce,convertModelToRatio:M,getDraggingRatio:we}}}var St=()=>({}),Ct=oe({name:`QSlider`,props:{...yt,modelValue:{required:!0,default:null,validator:e=>typeof e==`number`||e===null},labelValue:[String,Number]},emits:bt,setup(e,{emit:t}){let{proxy:{$q:r}}=T(),{state:i,methods:a}=xt({updateValue:g,updatePosition:v,getDragging:_,formAttrs:pe(e)}),o=n(null),s=n(0),l=n(0);function u(){l.value=e.modelValue===null?i.innerMin.value:B(e.modelValue,i.innerMin.value,i.innerMax.value)}ee(()=>`${e.modelValue}|${i.innerMin.value}|${i.innerMax.value}`,u,{immediate:!0});let d=c(()=>a.convertModelToRatio(l.value)),f=c(()=>i.active.value?s.value:d.value),p=c(()=>{let t={[i.positionProp.value]:`${100*i.innerMinRatio.value}%`,[i.sizeProp.value]:`${100*(f.value-i.innerMinRatio.value)}%`};return e.selectionImg!==void 0&&(t.backgroundImage=`url(${e.selectionImg}) !important`),t}),m=a.getThumbRenderFn({focusValue:!0,getNodeData:St,ratio:f,label:c(()=>e.labelValue===void 0?l.value:e.labelValue),thumbColor:c(()=>e.thumbColor||e.color),labelColor:c(()=>e.labelColor),labelTextColor:c(()=>e.labelTextColor)}),h=c(()=>i.editable.value?r.platform.is.mobile?{onClick:a.onMobileClick}:{onMousedown:a.onActivate,onFocus:y,onBlur:a.onBlur,onKeydown:b,onKeyup:a.onKeyup}:{});function g(n){l.value!==e.modelValue&&t(`update:modelValue`,l.value),n&&t(`change`,l.value)}function _(){return o.value.getBoundingClientRect()}function v(t,n=i.dragging.value){let r=a.getDraggingRatio(t,n);l.value=a.convertRatioToModel(r),s.value=!e.snap||e.step===0?r:a.convertModelToRatio(l.value)}function y(){i.focus.value=!0}function b(t){if(!U.includes(t.keyCode))return;ae(t);let n=([34,33].includes(t.keyCode)?10:1)*i.keyStep.value,r=([34,37,40].includes(t.keyCode)?-1:1)*(i.isReversed.value?-1:1)*(e.vertical?-1:1)*n;l.value=B(i.roundValueFn.value(l.value+r),i.innerMin.value,i.innerMax.value),g()}return()=>{let t=a.getContent(p,i.tabindex,h,e=>{e.push(m())});return E(`div`,{ref:o,class:i.classes.value+(e.modelValue===null?` q-slider--no-value`:``),...i.attributes.value,"aria-valuenow":e.modelValue},t)}}});function wt(e,t=new WeakMap){if(Object(e)!==e)return e;if(t.has(e))return t.get(e);let n=e instanceof Date?new Date(e):e instanceof RegExp?new RegExp(e.source,e.flags):e instanceof Set?new Set:e instanceof Map?new Map:typeof e.constructor==`function`?e.prototype!==void 0&&typeof e.prototype.constructor==`function`?e:new e.constructor:Object.create(null);if(typeof e.constructor==`function`&&typeof e.valueOf==`function`){let n=e.valueOf();if(Object(n)!==n){let r=new e.constructor(n);return t.set(e,r),r}}return t.set(e,n),e instanceof Set?e.forEach(e=>{n.add(wt(e,t))}):e instanceof Map&&e.forEach((e,r)=>{n.set(r,wt(e,t))}),Object.assign(n,...Object.keys(e).map(n=>({[n]:wt(e[n],t)})))}var Tt=oe({name:`QPopupEdit`,props:{modelValue:{required:!0},title:String,buttons:Boolean,labelSet:String,labelCancel:String,color:{type:String,default:`primary`},validate:{type:Function,default:()=>!0},autoSave:Boolean,cover:{type:Boolean,default:!0},disable:Boolean},emits:[`update:modelValue`,`save`,`cancel`,`beforeShow`,`show`,`beforeHide`,`hide`],setup(e,{slots:t,emit:r}){let{proxy:i}=T(),{$q:a}=i,o=n(null),s=n(``),l=n(``),u=!1,d=c(()=>k({initialValue:s.value,validate:e.validate,set:f,cancel:p,updatePosition:m},`value`,()=>l.value,e=>{l.value=e}));function f(){e.validate(l.value)&&(h()&&(r(`save`,l.value,s.value),r(`update:modelValue`,l.value)),g())}function p(){h()&&r(`cancel`,l.value,s.value),g()}function m(){_(()=>{o.value.updatePosition()})}function h(){return!N(l.value,s.value)}function g(){u=!0,o.value.hide()}function v(){u=!1,s.value=wt(e.modelValue),l.value=wt(e.modelValue),r(`beforeShow`)}function y(){r(`show`)}function b(){!u&&h()&&(e.autoSave&&e.validate(l.value)?(r(`save`,l.value,s.value),r(`update:modelValue`,l.value)):r(`cancel`,l.value,s.value)),r(`beforeHide`)}function x(){r(`hide`)}function S(){let n=t.default===void 0?[]:[t.default(d.value)].flat();return e.title&&n.unshift(E(`div`,{class:`q-dialog__title q-mt-sm q-mb-sm`},e.title)),e.buttons&&n.push(E(`div`,{class:`q-popup-edit__buttons row justify-center no-wrap`},[E(A,{flat:!0,color:e.color,label:e.labelCancel||a.lang.label.cancel,onClick:p}),E(A,{flat:!0,color:e.color,label:e.labelSet||a.lang.label.set,onClick:f})])),n}return Object.assign(i,{set:f,cancel:p,show(e){o.value?.show(e)},hide(e){o.value?.hide(e)},updatePosition:m}),()=>{if(!e.disable)return E(Xe,{ref:o,class:`q-popup-edit`,cover:e.cover,onBeforeShow:v,onShow:y,onBeforeHide:b,onHide:x,onEscapeKey:p},S)}}}),Et={class:`text-h6`},Dt=[`title`],Ot={key:1,class:`row justify-center q-mt-sm`},kt=o({__name:`FolderPickerDialog`,props:{modelValue:{type:Boolean},initialPath:{}},emits:[`update:modelValue`,`select`],setup(e,{emit:t}){let i=e,a=t,o=n(``),c=n(null),l=n([]),d=n(!1),f=n(``);async function p(e){d.value=!0,f.value=``;try{let t=e?`?path=${encodeURIComponent(e)}`:``,n=await fetch(`/api/fs/list-dirs${t}`),r=await n.json();if(!n.ok){f.value=r?.error??`HTTP ${n.status}`;return}o.value=r.path??``,c.value=r.parent??null,l.value=Array.isArray(r.entries)?r.entries:[]}catch(e){f.value=e instanceof Error?e.message:String(e)}finally{d.value=!1}}function m(){o.value&&(a(`select`,o.value),a(`update:modelValue`,!1))}return ee(()=>i.modelValue,e=>{e&&p(i.initialPath||void 0)}),(t,n)=>(h(),u(Ve,{"model-value":e.modelValue,"onUpdate:modelValue":n[1]||=e=>t.$emit(`update:modelValue`,e)},{default:w(()=>[C(be,{class:`text-kobo-1`,style:{"min-width":`480px`,"max-width":`90vw`,background:`var(--kobo-surface)`}},{default:w(()=>[C(ye,{class:`row items-center q-pb-none`},{default:w(()=>[y(`div`,Et,r(t.$t(`folderPicker.title`)),1),C(H),D(C(A,{flat:``,dense:``,round:``,icon:`close`,color:`kobo-2`},null,512),[[ot]])]),_:1}),C(ye,null,{default:w(()=>[y(`div`,{class:`text-caption text-kobo-3 ellipsis q-mb-sm`,style:{"font-family":`monospace`},title:o.value},r(o.value||`…`),9,Dt),f.value?(h(),u(ft,{key:0,dense:``,class:`bg-red-9 text-white q-mb-sm rounded-borders`},{default:w(()=>[S(r(f.value),1)]),_:1})):v(``,!0),C(L,{bordered:``,separator:``,class:`rounded-borders`,style:{"max-height":`320px`,"overflow-y":`auto`}},{default:w(()=>[c.value?D((h(),u(I,{key:0,clickable:``,onClick:n[0]||=e=>p(c.value)},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`arrow_upward`,color:`kobo-2`})]),_:1}),C(R,null,{default:w(()=>[S(r(t.$t(`folderPicker.parent`)),1)]),_:1})]),_:1})),[[se]]):v(``,!0),(h(!0),b(s,null,x(l.value,e=>D((h(),u(I,{key:e.path,clickable:``,onClick:t=>p(e.path)},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`folder`,color:`amber-6`})]),_:1}),C(R,null,{default:w(()=>[S(r(e.name),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[se]])),128)),!d.value&&l.value.length===0?(h(),u(I,{key:1},{default:w(()=>[C(R,{class:`text-kobo-3`},{default:w(()=>[S(r(t.$t(`folderPicker.empty`)),1)]),_:1})]),_:1})):v(``,!0)]),_:1}),d.value?(h(),b(`div`,Ot,[C(j,{size:`20px`,color:`kobo-2`})])):v(``,!0)]),_:1}),C(ze,{align:`right`},{default:w(()=>[D(C(A,{flat:``,label:t.$t(`common.cancel`),color:`kobo-2`},null,8,[`label`]),[[ot]]),C(A,{flat:``,label:t.$t(`folderPicker.select`),color:`primary`,disable:!o.value||d.value,onClick:m},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),At={class:`notification-sounds-grid q-mt-md`},jt={class:`text-subtitle2`},Mt={class:`text-kobo-3 text-caption q-mb-sm`},Nt={class:`row items-center q-gutter-sm`},Pt={class:`row items-center q-gutter-sm q-mt-sm`},W={class:`text-kobo-2 text-caption volume-label`},Ft={class:`text-kobo-2 text-caption volume-value`},It=nt(o({__name:`PrNotificationSoundSettings`,props:{modelValue:{},generalSound:{}},emits:[`update:modelValue`],setup(e,{emit:n}){let i=e,a=n,{t:o}=re(),l=c(()=>[{soundKey:`audioPrCiFailedSound`,enabledKey:`audioPrCiFailedEnabled`,volumeKey:`audioPrCiFailedVolume`,title:o(`settings.prCiFailedSound`),description:o(`settings.prCiFailedSoundHint`)},{soundKey:`audioPrCiRecoveredSound`,enabledKey:`audioPrCiRecoveredEnabled`,volumeKey:`audioPrCiRecoveredVolume`,title:o(`settings.prCiRecoveredSound`),description:o(`settings.prCiRecoveredSoundHint`)},{soundKey:`audioPrChangesRequestedSound`,enabledKey:`audioPrChangesRequestedEnabled`,volumeKey:`audioPrChangesRequestedVolume`,title:o(`settings.prChangesRequestedSound`),description:o(`settings.prChangesRequestedSoundHint`)},{soundKey:`audioPrApprovedSound`,enabledKey:`audioPrApprovedEnabled`,volumeKey:`audioPrApprovedVolume`,title:o(`settings.prApprovedSound`),description:o(`settings.prApprovedSoundHint`)},{soundKey:`audioPrMergeConflictSound`,enabledKey:`audioPrMergeConflictEnabled`,volumeKey:`audioPrMergeConflictVolume`,title:o(`settings.prMergeConflictSound`),description:o(`settings.prMergeConflictSoundHint`)},{soundKey:`audioPrReadyToMergeSound`,enabledKey:`audioPrReadyToMergeEnabled`,volumeKey:`audioPrReadyToMergeVolume`,title:o(`settings.prReadyToMergeSound`),description:o(`settings.prReadyToMergeSoundHint`)},{soundKey:`audioPrMergedSound`,enabledKey:`audioPrMergedEnabled`,volumeKey:`audioPrMergedVolume`,title:o(`settings.prMergedSound`),description:o(`settings.prMergedSoundHint`)}]),u=c(()=>[{label:o(`settings.soundGeneral`),value:Ce},...we.map(e=>({label:o(e.labelKey),value:e.id}))]);function d(e,t){a(`update:modelValue`,{...i.modelValue,[e]:t})}function f(e){let t=Ee(i.modelValue[e.soundKey]);t!==null&&Ue(t??i.generalSound,i.modelValue[e.volumeKey])}return(n,i)=>(h(),b(`div`,At,[(h(!0),b(s,null,x(l.value,n=>(h(),b(`div`,{key:n.soundKey,class:`notification-sound-card q-pa-md rounded-borders`},[y(`div`,jt,r(n.title),1),y(`div`,Mt,r(n.description),1),C(F,{"model-value":e.modelValue[n.enabledKey],label:t(o)(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`,"onUpdate:modelValue":e=>d(n.enabledKey,!!e)},null,8,[`model-value`,`label`,`onUpdate:modelValue`]),y(`div`,Nt,[C(z,{"model-value":e.modelValue[n.soundKey],options:u.value,label:n.title,disable:!e.modelValue[n.enabledKey],dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`,"onUpdate:modelValue":e=>d(n.soundKey,String(e))},null,8,[`model-value`,`options`,`label`,`disable`,`onUpdate:modelValue`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:t(o)(`settings.notificationSoundPreview`),disable:!e.modelValue[n.enabledKey],onClick:e=>f(n)},null,8,[`label`,`disable`,`onClick`])]),y(`div`,Pt,[y(`div`,W,r(t(o)(`settings.notificationVolume`)),1),C(Ct,{"model-value":e.modelValue[n.volumeKey],min:0,max:1,step:.05,disable:!e.modelValue[n.enabledKey],"aria-label":t(o)(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`,"onUpdate:modelValue":e=>d(n.volumeKey,Number(e))},null,8,[`model-value`,`disable`,`aria-label`,`onUpdate:modelValue`]),y(`div`,Ft,r(Math.round(e.modelValue[n.volumeKey]*100))+`% `,1)])]))),128))]))}}),[[`__scopeId`,`data-v-41966330`]]),Lt=nt(o({__name:`SettingsNavList`,props:{navItems:{},activeTab:{}},emits:[`select`],setup(e,{emit:t}){let n=t;return(t,i)=>(h(),u(L,{dense:``,class:`settings-nav__list`},{default:w(()=>[(h(!0),b(s,null,x(e.navItems,t=>D((h(),u(I,{key:t.value,clickable:``,"data-tour":`settings-nav-${t.value}`,class:a([`settings-nav__item`,{"settings-nav__item--active":e.activeTab===t.value}]),onClick:e=>n(`select`,t.value)},{default:w(()=>[C(R,{avatar:``,class:`settings-nav__icon`},{default:w(()=>[C(O,{name:t.icon,size:`16px`},null,8,[`name`])]),_:2},1024),C(R,{class:`settings-nav__label`},{default:w(()=>[S(r(t.label),1)]),_:2},1024)]),_:2},1032,[`data-tour`,`class`,`onClick`])),[[se,!1]])),128))]),_:1}))}}),[[`__scopeId`,`data-v-fac6b946`]]),Rt={class:`whip-shortcut-recorder`},zt={class:`text-caption text-kobo-2 q-mb-xs`},Bt={class:`row items-center no-wrap q-gutter-xs`},Vt={"data-testid":`whip-shortcut-value`},Ht={key:0,role:`status`,"aria-live":`polite`,class:`q-sr-only`},Ut={key:1,role:`alert`,class:`text-negative text-caption q-mt-xs`},Wt=nt(o({__name:`WhipShortcutRecorder`,props:{modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:i}){let a=e,o=i,{t:s}=re(),l=he(),u=n(!1),d=n(``),f=c(()=>u.value?s(`settings.whipShortcutRecording`):M(a.modelValue,l)),p=c(()=>u.value?s(`settings.whipShortcutRecordingLabel`):s(`settings.whipShortcutButtonLabel`,{shortcut:f.value}));function g(){u.value&&(u.value=!1,window.removeEventListener(`keydown`,_,!0))}function _(e){e.preventDefault(),e.stopPropagation();let t=ge(e,l);if(t.status!==`pending`){if(t.status===`reserved`){d.value=s(`settings.whipShortcutReserved`);return}d.value=``,t.status===`accepted`&&o(`update:modelValue`,t.shortcut),g()}}function x(){u.value||(d.value=``,u.value=!0,window.addEventListener(`keydown`,_,!0))}function ee(){g(),d.value=``,o(`update:modelValue`,me)}return m(g),(e,n)=>(h(),b(`div`,Rt,[y(`div`,zt,r(t(s)(`settings.whipShortcut`)),1),y(`div`,Bt,[C(A,{"data-testid":`whip-shortcut-recorder`,dense:``,"no-caps":``,outline:``,color:`primary`,"aria-label":p.value,"aria-pressed":u.value,onClick:x},{default:w(()=>[y(`span`,Vt,r(f.value),1),C(V,null,{default:w(()=>[S(r(t(s)(`settings.whipShortcutHint`)),1)]),_:1})]),_:1},8,[`aria-label`,`aria-pressed`]),C(A,{"data-testid":`whip-shortcut-reset`,dense:``,flat:``,round:``,size:`sm`,color:`kobo-2`,icon:`restart_alt`,"aria-label":t(s)(`settings.whipShortcutReset`),onClick:ee},{default:w(()=>[C(V,null,{default:w(()=>[S(r(t(s)(`settings.whipShortcutReset`)),1)]),_:1})]),_:1},8,[`aria-label`])]),u.value?(h(),b(`div`,Ht,r(t(s)(`settings.whipShortcutRecording`)),1)):v(``,!0),d.value?(h(),b(`div`,Ut,r(d.value),1)):v(``,!0)]))}}),[[`__scopeId`,`data-v-d8618bd9`]]);function Gt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Kt(e,t){if(e===t)return!0;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Kt(e[n],t[n]))return!1;return!0}return Gt(e)&&Gt(t)?qt(e,t):!1}function qt(e,t){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.hasOwn(t,r)||!Kt(e[r],t[r]))return!1;return!0}function G(e){if(Array.isArray(e))return e.map(G);if(e instanceof Date)return new Date(e.getTime());if(typeof e==`object`&&e){let t={};for(let[n,r]of Object.entries(e))t[n]=G(r);return t}return e}function Jt(e){return G(e)}function Yt(e){return e?{disabled:!1,hintKey:null}:{disabled:!0,hintKey:`settings.whipVolumeMasterAudioDisabled`}}var Xt={key:0,class:`settings-load-error`},Zt={class:`column`},Qt={class:`settings-load-error__title`},$t={class:`settings-load-error__detail`},en={class:`settings-load-error__hint`},tn={class:`settings-layout`},nn={key:0,class:`settings-nav`},rn={class:`settings-nav__title`},an={class:`settings-nav`},on={class:`settings-nav__title`},sn={class:`settings-content`},cn={class:`settings-content__header`},ln={class:`settings-content__title`},un={class:`settings-panels`},dn={class:`settings-global-wrap`},fn={key:0,"data-tour":`settings-card-general`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},pn={class:`text-subtitle2 q-mb-sm`},mn={key:1,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},hn={class:`text-subtitle2 q-mb-sm`},gn={class:`text-caption text-kobo-3 q-mt-xs`},_n={key:2,"data-tour":`settings-card-skills`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},vn={class:`text-subtitle2 q-mb-sm`},yn={class:`text-caption text-kobo-3 q-mt-xs`},bn={key:3,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xn={class:`text-subtitle2 q-mb-sm`},Sn={class:`text-caption text-kobo-3 q-mb-xs q-mt-sm`},Cn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},wn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Tn={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},En={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Dn={key:4,"data-tour":`settings-card-agents`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},On={class:`text-subtitle2 q-mb-sm`},kn={class:`text-subtitle2 q-mb-sm q-mt-md`},An={class:`text-subtitle2 q-mb-sm q-mt-md`},jn={class:`text-caption text-kobo-3 q-mb-sm`},Mn={class:`text-subtitle2 q-mb-sm q-mt-md`},Nn={key:5,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Pn={class:`text-subtitle2 q-mb-sm`},Fn={class:`row items-center q-gutter-lg`},In={key:6,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ln={class:`text-subtitle2 q-mb-xs`},Rn={class:`text-kobo-3 text-caption q-mb-md`},zn={key:0,class:`column q-gutter-sm q-mt-md`},Bn={class:`row items-center q-gutter-sm`},Vn={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},Hn={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Un={key:0,class:`text-kobo-3 text-caption`},Wn={key:7,"data-tour":`settings-card-notifications`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Gn={class:`text-subtitle2 q-mb-sm`},Kn={class:`notification-sounds-grid q-mt-md`},qn={class:`notification-sound-card q-pa-md rounded-borders`},Jn={class:`text-subtitle2`},Yn={class:`text-kobo-3 text-caption q-mb-sm`},Xn={class:`column q-gutter-xs q-mb-sm`},Zn={class:`row items-center q-gutter-sm q-mb-sm`},Qn={class:`row items-center q-gutter-sm`},$n={class:`row items-center q-gutter-sm q-mt-sm`},er={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},tr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},nr={class:`notification-sound-card q-pa-md rounded-borders`},rr={class:`text-subtitle2`},ir={class:`text-kobo-3 text-caption q-mb-sm`},ar={class:`row items-center q-gutter-sm`},or={class:`row items-center q-gutter-sm q-mt-sm`},sr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},cr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},lr={class:`notification-sound-card q-pa-md rounded-borders`},ur={class:`text-subtitle2`},dr={class:`text-kobo-3 text-caption q-mb-sm`},fr={class:`row items-center q-gutter-sm`},pr={class:`row items-center q-gutter-sm q-mt-sm`},mr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},hr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},gr={class:`notification-sound-card q-pa-md rounded-borders`},_r={class:`text-subtitle2`},vr={class:`text-kobo-3 text-caption q-mb-sm`},yr={class:`row items-center q-gutter-sm`},br={class:`row items-center q-gutter-sm q-mt-sm`},xr={class:`text-kobo-2 text-caption`,style:{"min-width":`58px`}},Sr={class:`text-kobo-2 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Cr={key:8,"data-tour":`settings-card-voice`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},wr={class:`row items-center q-mb-sm`},Tr={class:`text-subtitle2`},Er={class:`column q-gutter-xs`},Dr={class:`row items-center q-gutter-sm`},Or={class:`row items-center q-gutter-sm`},kr={class:`q-pa-sm text-caption text-kobo-2`},Ar={class:`q-mb-sm`},jr={class:`q-mb-sm`},Mr={href:`https://github.com/ggml-org/whisper.cpp`,target:`_blank`,rel:`noopener noreferrer`,class:`text-kobo-2`},Nr={class:`q-mb-xs text-kobo-2`},Pr={class:`q-mb-sm`},Fr={class:`q-mb-xs text-kobo-2`},Ir={key:9,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Lr={class:`text-subtitle2 q-mb-sm`},Rr={class:`row q-col-gutter-sm`},zr={class:`col-12 col-sm-6`},Br={class:`col-12 col-sm-6`},Vr={key:10,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Hr={class:`text-subtitle2 q-mb-sm`},Ur={key:0,class:`voice-models-dir row items-center q-gutter-sm q-mb-md`},Wr={class:`text-caption text-kobo-2 ellipsis-2-lines`,style:{flex:`1`,"min-width":`0`,"word-break":`break-all`}},Gr={class:`column q-gutter-sm`},Kr={class:`row items-center q-gutter-sm`},qr={class:`text-body2 text-kobo-1`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},Jr={class:`text-caption text-kobo-3`},Yr={key:0,class:`q-mt-sm`},Xr={class:`row items-center q-mt-xs`},Zr={class:`text-caption text-kobo-3`},Qr={class:`text-caption text-kobo-2`},$r={key:1,class:`text-caption text-kobo-3 q-mt-xs ellipsis`,style:{"font-family":`var(--kobo-font-mono, monospace)`,"word-break":`break-all`}},ei={key:11,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ti={class:`text-subtitle2 q-mb-sm`},ni={class:`q-pa-sm column q-gutter-sm`},ri={class:`row items-center q-gutter-sm`},ii={class:`text-caption text-kobo-2`},ai={class:`text-caption text-kobo-2`,style:{"min-width":`40px`,"text-align":`right`}},oi={class:`text-caption text-kobo-3`},si={class:`text-caption text-kobo-3`},ci={class:`text-caption text-kobo-3`},li={class:`text-caption text-kobo-3`},ui={class:`q-pa-sm column q-gutter-sm`},di={key:12,"data-tour":`settings-card-prompts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},fi={class:`row items-center q-mb-sm`},pi={class:`text-subtitle2`},mi={class:`text-caption text-kobo-3 q-mb-sm`},hi={class:`q-mb-sm`},gi={class:`row items-center q-mb-sm q-mt-md`},_i={class:`text-subtitle2`},vi={class:`text-caption text-kobo-3 q-mb-sm`},yi={class:`row items-center q-mb-sm q-mt-md`},bi={class:`text-subtitle2`},xi={class:`text-caption text-kobo-3 q-mb-sm`},Si={class:`row items-center q-mb-sm q-mt-md`},Ci={class:`text-subtitle2`},wi={class:`text-caption text-kobo-3 q-mb-sm`},Ti={class:`row items-center q-mb-sm q-mt-md`},Ei={class:`text-subtitle2`},Di={class:`text-caption text-kobo-3 q-mb-sm`},Oi={key:13,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ki={class:`text-subtitle2 q-mb-sm`},Ai={class:`text-caption text-kobo-3 q-mb-sm`},ji={key:14,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Mi={class:`text-subtitle2 q-mb-sm`},Ni={class:`text-caption text-kobo-3 q-mb-sm`},Pi={key:15,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Fi={class:`text-subtitle2 q-mb-sm`},Ii={class:`text-caption text-kobo-3 q-mb-sm`},Li={key:16,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ri={class:`text-subtitle2 q-mb-sm`},zi={class:`text-caption text-kobo-3 q-mb-sm`},Bi={class:`q-mb-sm`},Vi={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},Hi={key:18,"data-tour":`settings-card-sentry`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ui={class:`text-subtitle2 q-mb-sm`},Wi={class:`text-caption text-kobo-3 q-mb-sm`},Gi={class:`q-mb-sm`},Ki={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},qi={key:20,"data-tour":`settings-card-forge`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ji={class:`text-subtitle2 q-mb-sm`},Yi={class:`text-caption text-kobo-3 q-mb-md`},Xi={class:`text-subtitle2 q-mb-sm`},Zi={class:`text-caption text-kobo-3 q-mb-sm`},Qi={class:`q-mb-sm`},$i={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},ea={class:`q-mb-sm`},ta={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},na={class:`row items-center q-mb-sm`},ra={class:`text-subtitle2`},ia={class:`text-caption text-kobo-3 q-mb-xs`},aa={class:`text-subtitle2 q-mb-sm`},oa={class:`text-caption text-kobo-3 q-mb-sm`},sa={class:`q-mb-sm`},ca={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},la={class:`q-mb-sm`},ua={class:`row items-center q-mb-xs`},da={class:`field-label-sub text-caption text-kobo-3 col`},fa=[`src`,`alt`],pa={key:1,class:`text-caption text-kobo-3 q-py-sm`},ma={key:0,class:`text-caption text-orange-5 q-mb-xs`},ha={class:`text-subtitle2 q-mb-sm`},ga={class:`row items-center q-mb-sm`},_a={class:`text-subtitle2`},va={class:`text-caption text-kobo-3 q-mb-xs`},ya={key:24,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ba={class:`text-subtitle2 q-mb-sm`},xa={class:`text-caption text-kobo-3 q-mb-sm`},Sa={key:25,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ca={class:`text-subtitle2 q-mb-sm`},wa={class:`text-caption text-kobo-3 q-mb-sm`},Ta={class:`row items-center no-wrap`},Ea={key:1,class:`text-caption text-kobo-3 q-mb-sm`},Da={class:`row items-center q-gutter-sm`},Oa={key:26,"data-tour":`settings-card-scripts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ka={class:`text-subtitle2 q-mb-sm`},Aa={class:`text-caption text-kobo-3 q-mb-sm`},ja={key:27,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ma={class:`text-subtitle2 q-mb-sm`},Na={class:`text-caption text-kobo-3 q-mb-sm`},Pa={key:28,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Fa={class:`text-subtitle2 q-mb-sm`},Ia={class:`text-caption text-kobo-3 q-mb-sm`},La={class:`text-caption text-kobo-3 q-mt-md q-mb-xs`},Ra={key:29,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},za={class:`text-subtitle2 q-mb-sm`},Ba={class:`text-caption text-kobo-3 q-mb-sm`},Va={key:30,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ha={class:`text-subtitle2 q-mb-sm`},Ua={class:`text-caption text-kobo-3 q-mb-sm`},Wa={key:31,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ga={class:`text-subtitle2 q-mb-sm`},Ka={class:`text-caption text-kobo-3 q-mb-sm`},qa={key:32,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ja={class:`text-subtitle2 q-mb-sm`},Ya={class:`text-caption text-kobo-3 q-mb-sm`},Xa={key:33,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Za={class:`row items-center justify-between q-mb-sm`},Qa={class:`text-subtitle2`},$a={class:`text-caption text-kobo-3 q-mb-xs`},eo={class:`text-caption text-kobo-3 mono-guide q-mb-sm`},to={key:34,"data-tour":`settings-card-worktrees`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},no={class:`text-subtitle2 q-mb-sm`},ro={class:`text-caption text-kobo-3 q-mb-sm`},io={class:`text-caption text-kobo-3 q-mt-xs`},ao={"data-tour":`settings-card-worktrees-purge`},oo={class:`text-caption text-kobo-3 q-mt-xs`},so={"data-tour":`settings-card-worktrees-retention`},co={class:`text-subtitle2 q-mb-sm`},lo={class:`text-caption text-negative q-mb-sm`},uo={class:`text-caption text-kobo-3 q-mb-sm`},fo={key:0,class:`text-caption text-kobo-3 q-mt-sm`},po={class:`q-pa-sm text-caption text-kobo-2`,style:{"line-height":`1.55`}},mo={class:`text-weight-medium text-kobo-1 q-mb-xs`},ho={class:`q-mb-xs`},go={class:`purge-docs-code`},_o={class:`text-kobo-3 q-mb-md`},vo={class:`text-weight-medium text-kobo-1 q-mb-xs`},yo={class:`q-mb-xs`},bo={class:`q-pl-md q-my-xs`},xo={class:`purge-docs-code`},So={class:`text-kobo-3 q-mb-md`},Co={class:`text-weight-medium text-kobo-1 q-mb-xs`},wo={class:`q-mb-xs`},To={class:`q-mb-xs text-kobo-3`},Eo={class:`purge-docs-code`},Do={class:`q-mb-xs text-kobo-3`},Oo={class:`purge-docs-code`},ko={class:`text-kobo-3`},Ao={key:35,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},jo={class:`text-subtitle2 q-mb-sm`},Mo={class:`text-caption text-kobo-3 q-mb-sm`},No={key:1,class:`q-mt-md`},Po={class:`text-caption text-kobo-3 q-mt-xs`},Fo={class:`q-mt-md`},Io={class:`text-caption text-kobo-3 q-mb-xs`},Lo={class:`q-mt-md`},Ro={class:`text-caption text-kobo-3 q-mb-xs`},zo={key:0,class:`text-caption text-kobo-3`},Bo={key:0,class:`q-mt-md`},Vo={class:`text-caption text-kobo-3 q-mb-xs`},Ho=[`src`,`alt`],Uo={key:36,"data-tour":`settings-card-export`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Wo={class:`text-subtitle2 q-mb-sm`},Go={class:`text-caption text-kobo-3 q-mb-sm`},Ko={class:`row q-gutter-sm`},qo={key:0,class:`q-pa-none`},Jo={class:`row q-gutter-md`,style:{"min-height":`500px`}},Yo={class:`project-list-col`},Xo={class:`settings-card rounded-borders`,style:{height:`100%`}},Zo={class:`q-pa-sm`},Qo={class:`text-caption text-uppercase text-weight-bold q-px-sm q-py-xs text-kobo-3`,style:{"letter-spacing":`0.05em`}},$o={key:0,class:`q-pa-md text-center text-caption text-kobo-3`},es={class:`q-pa-sm`},ts={class:`project-form-col`},ns={class:`settings-card rounded-borders q-pa-lg`,style:{height:`100%`}},rs={class:`row items-center q-mb-md`},is={class:`text-subtitle1 text-weight-medium text-kobo-1`},as={key:0,class:`q-mb-md`},os={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ss={class:`text-caption text-kobo-3 q-mt-xs`},cs={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ls={class:`text-subtitle2 q-mb-md`},us={class:`q-mb-md`},ds={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},fs={class:`q-mb-md`},ps={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ms={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},hs={class:`row items-center q-gutter-xs`},gs={class:`text-caption text-kobo-3 q-mt-xs`},_s={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},vs={class:`text-subtitle2 q-mb-md`},ys={class:`q-mb-md`},bs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},xs={class:`q-mb-md`},Ss={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Cs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ws={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ts={class:`text-subtitle2 q-mb-md`},Es={class:`q-mb-md`},Ds={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Os={class:`text-caption text-kobo-3 q-mb-xs`},ks={class:`q-mb-md`},As={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},js={class:`text-caption text-kobo-3 q-mb-xs`},Ms={class:`q-mb-md`},Ns={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Ps={class:`text-caption text-kobo-3 q-mb-xs`},Fs={key:0,class:`q-mb-md`},Is={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Ls={class:`text-caption text-kobo-3 q-mb-xs`},Rs={key:1,class:`q-mb-md`},zs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Bs={class:`text-caption text-kobo-3 q-mb-xs`},Vs={class:`q-mb-md`},Hs={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Us={class:`text-caption text-kobo-3 q-mb-xs`},Ws={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Gs={class:`text-caption text-kobo-3 q-mt-xs`},Ks={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},qs={class:`text-subtitle2 q-mb-md`},Js={class:`q-mb-md`},Ys={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},Xs={class:`text-caption text-kobo-3 q-mb-xs`},Zs={class:`text-caption text-kobo-3 q-mt-xs`},Qs={class:`q-mb-md`},$s={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ec={class:`text-caption text-kobo-3 q-mb-xs`},tc={class:`field-label-sub text-caption q-mt-sm q-mb-xs text-kobo-3`},nc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},rc={class:`text-caption text-kobo-3 q-mb-xs`},ic={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},ac={class:`text-caption text-kobo-3 q-mb-xs`},oc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},sc={class:`text-caption text-kobo-3 q-mb-xs`},cc={class:`field-label text-body2 text-weight-medium q-mb-xs text-kobo-3`},lc={class:`text-caption text-kobo-3 q-mb-xs`},uc={class:`row items-center justify-between q-mb-xs`},dc={class:`field-label text-body2 text-weight-medium text-kobo-3`},fc={class:`text-caption text-kobo-3 q-mb-xs`},pc={class:`text-caption text-kobo-3 mono-guide q-mb-sm`},mc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},hc={class:`text-subtitle2 q-mb-md`},gc={class:`q-mb-md`},_c={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},vc={class:`field-label-sub text-caption q-mb-xs text-kobo-3`},yc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},bc={class:`text-subtitle2 q-mb-xs`},xc={class:`text-caption text-kobo-3 q-mb-sm`},Sc={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Cc={class:`text-subtitle2 q-mb-xs`},wc={class:`text-caption text-kobo-3 q-mb-sm`},Tc={key:1,class:`column items-center justify-center`,style:{height:`100%`,"min-height":`300px`}},Ec={class:`text-body2 text-kobo-3`},Dc={key:1,class:`q-pa-none`},Oc={"data-tour":`settings-card-templates`,class:`settings-card rounded-borders q-pa-lg`},kc={class:`row items-center justify-between q-mb-md`},Ac={class:`text-subtitle1 text-weight-medium text-kobo-1`},jc={class:`row q-gutter-sm items-center`},Mc={key:0,class:`text-kobo-3 q-py-lg text-center`},Nc={key:1,class:`column q-gutter-sm`},Pc={class:`row items-start justify-between no-wrap`},Fc={class:`col`},Ic={class:`text-body1 text-weight-medium`,style:{"font-family":`var(--kobo-font-mono)`}},Lc={class:`text-caption text-kobo-2 q-mt-xs`},Rc={class:`row no-wrap q-gutter-xs`},zc={class:`text-caption text-kobo-3 q-mt-lg`,style:{"font-family":`var(--kobo-font-mono)`}},Bc={class:`settings-savebar__label`},Vc={class:`text-subtitle1`},Hc={class:`q-pl-md q-pt-xs`,style:{"font-size":`11px`,"font-family":`var(--kobo-font-mono)`,columns:`2`,"column-gap":`24px`}},Uc={key:0,class:`text-negative text-caption`},Wc=2500,Gc=nt(o({__name:`SettingsPage`,setup(o){let m=rt(),_=He(),T=Be(),{t:E,locale:ie}=re(),{startTour:ae}=dt(),{isMobile:oe}=st(),se=ct(),k=n(`general`),j=n(!1);function ce(e){k.value=e,oe.value&&(j.value=!1)}function le(){j.value=!1,se.toggleLeft()}let ue=c(()=>[{value:`general`,icon:`tune`,label:E(`settings.nav.general`)},{value:`agents`,icon:`smart_toy`,label:E(`settings.nav.agents`)},{value:`skills`,icon:`extension`,label:E(`settings.nav.skills`)},{value:`prompts`,icon:`text_snippet`,label:E(`settings.nav.prompts`)},{value:`scripts`,icon:`terminal`,label:E(`settings.nav.scripts`)},{value:`notion`,icon:`integration_instructions`,label:E(`settings.nav.notion`)},{value:`sentry`,icon:`bug_report`,label:E(`settings.nav.sentry`)},{value:`forge`,icon:`account_tree`,label:E(`settings.nav.forge`)},{value:`voice`,icon:`mic`,label:E(`settings.nav.voice`)},{value:`notifications`,icon:`notifications`,label:E(`settings.nav.notifications`)},{value:`worktrees`,icon:`account_tree`,label:E(`settings.nav.worktrees`)},{value:`projects`,icon:`folder`,label:E(`settings.projects`)},{value:`templates`,icon:`description`,label:E(`templates.title`)},{value:`export`,icon:`import_export`,label:E(`settings.nav.export`)}]),de=c(()=>ue.value.find(e=>e.value===k.value)?.label??``),fe=c(()=>[`general`,`agents`,`skills`,`prompts`,`scripts`,`notion`,`sentry`,`forge`,`voice`,`notifications`,`worktrees`,`export`].includes(k.value)),pe=n(`auto`),he=n(`auto`),ge=n(``),M=n(``),Ee=n(``),Oe=n(``),N=n(``),Ae=n(``),B=n(``),Xe=n(``),nt=n(!1),it=n(5),gt=n(0),_t=n(0),vt=n(0),U=n({enabled:!1,token:``,behindProxy:!1,urls:[]}),yt=n(!1),bt=n(``);function xt(e){try{let t=new URL(e),n=window.location.port?`:${window.location.port}`:``;return`${window.location.protocol}//${t.hostname}${n}`}catch{return e}}let St=c(()=>U.value.urls.map(xt));async function wt(){try{let e=await fetch(`/api/settings/network`);if(!e.ok)throw Error(`HTTP ${e.status}`);U.value=await e.json(),await Et()}catch{m.notify({type:`negative`,message:E(`settings.network.loadFailed`),position:`top`})}}async function Et(){let t=St.value[0];if(!t||!U.value.token){bt.value=``;return}let n=`${t}/?token=${encodeURIComponent(U.value.token)}`;try{let{default:t}=await Te(async()=>{let{default:t}=await import(`./browser-Bg25_sDh.js`).then(t=>e(t.default,1));return{default:t}},__vite__mapDeps([0,1]));bt.value=await t.toDataURL(n,{margin:1,width:200})}catch{bt.value=``}}async function Dt(e){try{let t=await fetch(`/api/settings/network`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();U.value={enabled:n.enabled,token:n.token,behindProxy:n.behindProxy,urls:n.urls},n.restartRequired&&(yt.value=!0),await Et()}catch{m.notify({type:`negative`,message:E(`settings.network.updateFailed`),position:`top`}),await wt()}}function Ot(e){Dt({enabled:e})}function At(e){Dt({behindProxy:e})}function jt(){m.dialog({title:E(`settings.network.title`),message:E(`settings.network.regenerateConfirm`),cancel:!0,persistent:!0}).onOk(()=>{Dt({regenerate:!0})})}function Mt(){Hd(U.value.token)}let Nt=n(!0),Pt=n(typeof Notification>`u`?`unsupported`:Notification.permission),W=n(!0),Ft=n(!1),Rt=n(!1),zt=n(!1),Bt=n(Pe),Vt=n(Ce),Ht=n(Ce),Ut=n(Ce),Gt=n(1),Kt=n(1),G=n(1),Gc=n(1),Kc=n({...Se}),qc=n(``),Jc=n(``),Yc=n(``),Xc=n(``),Zc=n(!1),Qc=n(!0),$c=n(!1),el=n(me),tl=n(1),nl=c(()=>Yt(W.value)),rl=c(()=>{switch(Pt.value){case`granted`:return{color:`positive`,label:E(`settings.browserNotificationGranted`)};case`denied`:return{color:`negative`,label:E(`settings.browserNotificationDenied`)};case`default`:return{color:`warning`,label:E(`settings.browserNotificationAsk`)};default:return{color:`kobo-3`,label:E(`settings.browserNotificationUnsupported`)}}});async function il(){if(typeof Notification>`u`){m.notify({type:`negative`,message:E(`settings.browserNotificationUnsupported`),position:`top`});return}if(Notification.permission==="default"?Pt.value=await Notification.requestPermission():Pt.value=Notification.permission,Pt.value!==`granted`){m.notify({type:`warning`,message:E(`settings.browserNotificationPermissionNeeded`),position:`top`});return}new Notification(E(`settings.browserNotificationTestTitle`),{body:E(`settings.browserNotificationTestBody`),icon:`/favicon.ico`})}let al=n(null),K=n({});async function ol(e){al.value=e;try{let t=await fetch(`/api/${e}/test`,{method:`POST`}),n=await t.json();K.value[e]=t.ok?n:{ok:!1,durationMs:0,detail:n.error??`HTTP ${t.status}`}}catch(t){K.value[e]={ok:!1,durationMs:0,detail:t instanceof Error?t.message:String(t)}}finally{al.value=null}}let sl=n([]),cl=n(!1),ll=n(``),ul=c(()=>sl.value.map(e=>({label:`${e.name} — ${e.email}`,value:e.id,name:e.name,email:e.email,avatarUrl:e.avatarUrl})));async function dl(e=!1){if(!cl.value&&!(!e&&sl.value.length>0)){cl.value=!0,ll.value=``;try{let e=await fetch(`/api/notion/users`),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);sl.value=Array.isArray(t.users)?t.users:[]}catch(e){ll.value=e instanceof Error?e.message:String(e),sl.value=[]}finally{cl.value=!1}}}let fl=n(``),pl=n(``),q=n(null),ml=n(`bypass`),hl=n(`bypass`),gl=n(``),_l=n(``),vl=n(``),yl=n(``),J=n(!0),bl=n(!0),xl=n([]),Y=n([]),Sl=n(``),Cl=n(``),wl=n(``),Tl=n(`no-tasks`),El=n(!1),Dl=n(``),Ol=n(``),kl=n(``),Al=n(``),jl=n(``),Ml=n(``),Nl=n(!1);function Pl(e){Q.value.path=e}let Fl=c(()=>[{label:E(`settings.cleanupScriptMode.inherit`),value:``},{label:E(`settings.cleanupScriptMode.idle`),value:`idle`},{label:E(`settings.cleanupScriptMode.noTasks`),value:`no-tasks`}]),Il=n(De),Ll=n(null),Rl=n(!0);function zl(e){let t=e.trim().replace(/^\/+|\/+$/g,``);return t.length===0||t.length>50||!/^[A-Za-z0-9._/-]+$/.test(t)||t.includes(`..`)?``:t}function Bl(){let e=zl(Sl.value);!e||Y.value.includes(e)||(Y.value.push(e),Sl.value=``)}function Vl(e){Y.value.splice(e,1)}function Hl(e,t){let n=zl(t);if(!n)return;let r=Y.value.indexOf(n);(r===-1||r===e)&&(Y.value[e]=n)}function Ul(e,t){let n=e+t;if(n<0||n>=Y.value.length)return;let r=Y.value;[r[e],r[n]]=[r[n],r[e]]}let Wl=n(!1),Gl=n(`superpowers`),Kl=c(()=>{switch(Gl.value){case`gstack`:return`settings.skillSuite.gstackHint`;case`ecc`:return`settings.skillSuite.eccHint`;case`superpowers+gstack`:return`settings.skillSuite.superpowersGstackHint`;case`superpowers+gstack+ecc`:return`settings.skillSuite.allThreeHint`;case`custom`:return`settings.skillSuite.customHint`;default:return`settings.skillSuite.superpowersHint`}}),ql=n(``),Jl=n(``),Yl=n(``),Xl=n(``),Zl=n(``),Ql=n(null),$l=c(()=>[{value:`custom`,label:E(`settings.skillSuite.agnostic`)},{value:`superpowers`,label:E(`settings.skillSuite.superpowers`)},{value:`gstack`,label:E(`settings.skillSuite.gstack`)},{value:`ecc`,label:E(`settings.skillSuite.ecc`)},{value:`superpowers+gstack`,label:E(`settings.skillSuite.superpowersGstack`)},{value:`superpowers+gstack+ecc`,label:E(`settings.skillSuite.allThree`)}]);async function eu(e,t){Ql.value=e;try{let n=await fetch(`/api/settings/skill-suite-prompts/${t}`);if(!n.ok)throw Error(await n.text());let r=await n.json(),i={reviewTemplate:ql,autoLoopReviewGate:Jl,autoLoopGroomingIntro:Yl,qaPromptTemplate:Xl,brainstormingInstruction:Zl};i[e].value=r[e],m.notify({type:`positive`,message:E(`settings.skillSuite.imported`),position:`top`})}catch(e){m.notify({type:`negative`,message:`${E(`settings.skillSuite.importFailed`)}: ${String(e)}`,position:`top`})}finally{Ql.value=null}}let tu=n(!1),nu=n(`alt`),ru=n(`auto`),iu=n(null),au=n(``),ou=n(``),su=n(0),cu=n(``),lu=n(!1),uu=n(!0),du=n(null),fu=n(!1);function pu(){m.dialog({title:E(`settings.skillSuite.reloadDefaults`),message:E(`settings.skillSuite.reloadDefaultsConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{ql.value=qe,Jl.value=Ke,Yl.value=Qe,Xl.value=et,Zl.value=Je})}function mu(e){let t=e===`global`?jl.value:Q.value.changeSourceBranchScript,n=()=>{e===`global`?jl.value=Ml.value:Q.value.changeSourceBranchScript=Ml.value};if(!t.trim()||t===Ml.value){n();return}m.dialog({title:E(`settings.changeSourceBranchScript.replaceConfirmTitle`),message:E(`settings.changeSourceBranchScript.replaceConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(n)}function hu(e){return!e||e===`tiny`||e===`base`?.1:.2}let gu=[e=>e.trim().length>0||E(`settings.worktreesPathRequired`)],_u=n(!1),X=n(-1),Z=n(!1),Q=n({path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}}),vu=[`defaultModel`,`forge`,`prPromptTemplate`,`reviewPromptTemplate`,`ciFixPromptTemplate`,`notionInitialPromptTemplate`,`sentryInitialPromptTemplate`,`gitConventions`,`setupScript`,`taskPromptTemplate`,`cleanupScript`,`cleanupScriptMode`,`archiveScript`,`changeSourceBranchScript`,`sessionEndedScript`,`prMergedScript`,`autoLoopDisabledScript`,`devServer`,`e2e`,`finalization`],yu=n(null),bu=n(null),xu=c(()=>_.projects.map(e=>({value:e.path,label:qd(e)||e.path})));function Su(e){let t=_.projects.find(t=>t.path===e);t&&(Q.value.defaultModel=t.defaultModel??``,Q.value.forge=t.forge??`auto`,Q.value.prPromptTemplate=t.prPromptTemplate??``,Q.value.reviewPromptTemplate=t.reviewPromptTemplate??``,Q.value.ciFixPromptTemplate=t.ciFixPromptTemplate??``,Q.value.notionInitialPromptTemplate=t.notionInitialPromptTemplate??``,Q.value.sentryInitialPromptTemplate=t.sentryInitialPromptTemplate??``,Q.value.gitConventions=t.gitConventions??``,Q.value.setupScript=t.setupScript??``,Q.value.devServer={startCommand:t.devServer?.startCommand??``,stopCommand:t.devServer?.stopCommand??``},Q.value.e2e={framework:t.e2e?.framework??``,skill:t.e2e?.skill??``,prompt:t.e2e?.prompt??``},Q.value.finalization={prompt:t.finalization?.prompt??``})}function Cu(){let e={defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}};return vu.every(t=>JSON.stringify(Q.value[t])===JSON.stringify(e[t]))}function wu(e){if(e===null){yu.value=null,bu.value=null;return}if(bu.value===null&&Cu()){Su(e),yu.value=e,bu.value=e;return}let t=_.projects.find(t=>t.path===e),n=t&&qd(t)||e;m.dialog({title:E(`settings.copyFromConfirmTitle`),message:E(`settings.copyFromConfirm`,{project:n}),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{Su(e),yu.value=e,bu.value=e}).onCancel(()=>{yu.value=bu.value})}let Tu=n([]),Eu=n([]);async function Du(){try{let e=await fetch(`/api/skills`);e.ok&&(Tu.value=await e.json())}catch{}}function Ou(e,t){t(()=>{let t=e.trim().toLowerCase();Eu.value=t?Tu.value.filter(e=>e.toLowerCase().includes(t)):Tu.value.slice()})}let ku=n([]),Au=n(!1),ju=n(!1),Mu=n(!1),Nu=n(!1),Pu=n(null),Fu=n(``),Iu=n(``),Lu=n(``),Ru=n(``),zu=n(!1),Bu=n(!1),Vu=c(()=>[...T.templates].sort((e,t)=>e.slug.localeCompare(t.slug))),Hu=[`{workspace_name}`,`{working_branch}`,`{source_branch}`,`{project_path}`,`{worktree_path}`,`{commit_count}`,`{unpushed_count}`,`{files_changed}`,`{insertions}`,`{deletions}`,`{pr_number}`,`{pr_url}`,`{pr_state}`,`{session_name}`];function Uu(){Pu.value=null,Fu.value=``,Iu.value=``,Lu.value=``,Ru.value=``,Nu.value=!0}function Wu(e){Pu.value=e.slug,Fu.value=e.slug,Iu.value=e.description,Lu.value=e.content,Ru.value=``,Nu.value=!0}async function Gu(){Ru.value=``;let e=Fu.value.trim(),t=Iu.value.trim();if(Pu.value===null&&!/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)){Ru.value=E(`templates.slugInvalid`);return}if(!t){Ru.value=E(`templates.descriptionRequired`);return}if(!Lu.value.trim()){Ru.value=E(`templates.contentRequired`);return}zu.value=!0;try{Pu.value===null?await T.createTemplate({slug:e,description:t,content:Lu.value}):await T.updateTemplate(Pu.value,{description:t,content:Lu.value}),Nu.value=!1}catch(e){Ru.value=e instanceof Error?e.message:E(`templates.createFailed`)}finally{zu.value=!1}}function Ku(){m.dialog({title:E(`templates.reloadDefaults`),message:E(`templates.reloadDefaultsConfirmMessage`),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.reloadDefaults`),color:`primary`}}).onOk(async()=>{Bu.value=!0;try{let e=await T.reloadDefaults();m.notify({type:`positive`,message:E(`templates.reloadDefaultsSuccess`,{added:e.added.length,kept:e.kept.length}),position:`top`,timeout:4e3})}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.reloadDefaultsFailed`),position:`top`})}finally{Bu.value=!1}})}async function qu(e){m.dialog({title:E(`templates.deleteTemplate`),message:`${E(`templates.deleteConfirm`,{slug:e.slug})}\n\n${E(`templates.deleteConfirmMessage`)}`,dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.deleteTemplate`),color:`red-5`}}).onOk(async()=>{try{await T.deleteTemplate(e.slug)}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.deleteFailed`),position:`top`})}})}function Ju(e){m.dialog({title:E(`templates.resetConfirmTitle`),message:E(`templates.resetConfirmMessage`,{slug:e.slug}),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`templates.resetToDefault`),color:`primary`}}).onOk(async()=>{try{await T.resetToDefault(e.slug),m.notify({type:`positive`,message:E(`templates.resetSuccess`,{slug:e.slug}),position:`top`})}catch(e){m.notify({type:`negative`,message:e instanceof Error?e.message:E(`templates.resetFailed`),position:`top`})}})}let Yu=[{label:`English`,value:`en`},{label:`Français`,value:`fr`},{label:`Deutsch`,value:`de`},{label:`Español`,value:`es`},{label:`Italiano`,value:`it`}];function Xu(e){ke(e).catch(e=>{console.error(`[i18n] locale load failed:`,e),m.notify({type:`negative`,message:E(`settings.localeLoadFailed`),position:`top`})}),localStorage.setItem(`kobo:locale`,e)}let Zu=c(()=>[...Ze.map(e=>({label:E(e.i18nLabelKey),value:e.value}))]),Qu=c(()=>[...Ye.map(e=>({label:E(e.i18nLabelKey),value:e.value}))]),$u=c(()=>[{label:E(`settings.useGlobal`),value:``},...Zu.value]),ed=c(()=>[{label:E(`settings.forge.auto`),value:`auto`},{label:E(`settings.forge.github`),value:`github`},{label:E(`settings.forge.gitlab`),value:`gitlab`},{label:E(`settings.forge.bitbucketCommunity`),value:`bitbucket-community`},{label:E(`settings.forge.none`),value:`none`}]),td=c(()=>$e[`claude-code`].map(e=>({label:E(`agentPermissionMode.${e}`),value:e}))),nd=c(()=>$e.codex.map(e=>({label:E(`agentPermissionMode.${e}`),value:e}))),rd=c(()=>[{name:`{{pr_number}}`,description:E(`settings.var.prNumber`)},{name:`{{pr_url}}`,description:E(`settings.var.prUrl`)},{name:`{{branch_name}}`,description:E(`settings.var.branchName`)},{name:`{{source_branch}}`,description:E(`settings.var.sourceBranch`)},{name:`{{workspace_name}}`,description:E(`settings.var.workspaceName`)},{name:`{{project_name}}`,description:E(`settings.var.projectName`)},{name:`{{notion_url}}`,description:E(`settings.var.notionUrl`)},{name:`{{commits}}`,description:E(`settings.var.commits`)},{name:`{{diff_stats}}`,description:E(`settings.var.diffStats`)},{name:`{{tasks}}`,description:E(`settings.var.tasks`)},{name:`{{acceptance_criteria}}`,description:E(`settings.var.acceptanceCriteria`)}]),id=c(()=>[{label:E(`settings.mcpAutoSelect`),value:``},..._.activeMcpServers.map(e=>({label:e.key,value:e.key}))]),ad=c(()=>we.map(e=>({label:E(e.labelKey),value:e.id}))),od=c(()=>[{label:E(`settings.soundGeneral`),value:Ce},...ad.value]),sd=c(()=>[{label:E(`voice.noneModel`),value:null}].concat(_.voiceModels.map(e=>({label:e.installed?`${e.name}`:`${e.name} (${E(`voice.notInstalled`)})`,value:e.name})))),cd=[{label:`auto`,value:`auto`},{label:`ar`,value:`ar`},{label:`de`,value:`de`},{label:`en`,value:`en`},{label:`es`,value:`es`},{label:`fr`,value:`fr`},{label:`hi`,value:`hi`},{label:`it`,value:`it`},{label:`ja`,value:`ja`},{label:`ko`,value:`ko`},{label:`nl`,value:`nl`},{label:`pl`,value:`pl`},{label:`pt`,value:`pt`},{label:`ru`,value:`ru`},{label:`tr`,value:`tr`},{label:`uk`,value:`uk`},{label:`vi`,value:`vi`},{label:`zh`,value:`zh`}];function ld(){Ue(Bt.value,Gt.value)}function ud(){Ue(Vt.value,Kt.value)}function dd(){Ue(Ht.value,G.value)}function fd(){Ue(Ut.value,Gc.value)}let $=c(()=>X.value<0||X.value>=_.projects.length?null:_.projects[X.value]??null),pd=n(_d()),md=n({});function hd(){return{claudeModel:pe.value,codexModel:he.value,prPrompt:ge.value,reviewPrompt:M.value,ciFixPrompt:Ee.value,finalizationPrompt:Oe.value,gitConventions:N.value,editorCommand:Ae.value,fileManagerCommand:B.value,terminalCommand:Xe.value,autoPurgeOnPrMerged:nt.value,autoLoopMaxRetries:it.value,awaitingUserReminderMinutes:gt.value,wsEventsRetentionDays:_t.value,wsEventsKeepPerWorkspace:vt.value,browserNotifications:Nt.value,audioNotifications:W.value,audioQuestionNotifications:Ft.value,audioWorkspaceCreatedNotifications:Rt.value,audioAgentErrorNotifications:zt.value,audioNotificationSound:Bt.value,audioQuestionSound:Vt.value,audioWorkspaceCreatedSound:Ht.value,audioAgentErrorSound:Ut.value,audioNotificationVolume:Gt.value,audioQuestionVolume:Kt.value,audioWorkspaceCreatedVolume:G.value,audioAgentErrorVolume:Gc.value,prNotificationSounds:Kc.value,notionStatusProperty:qc.value,notionStatus:Jc.value,notionAssigneeProperty:Yc.value,notionUserId:Xc.value,notionInitialPrompt:fl.value,sentryInitialPrompt:pl.value,claudePermissionMode:ml.value,codexPermissionMode:hl.value,notionMcpKey:gl.value,sentryMcpKey:_l.value,bitbucketToken:vl.value,bitbucketUsername:yl.value,notionEnabled:J.value,sentryEnabled:bl.value,showVerboseSystemMessages:Zc.value,showThinkingBlocks:Qc.value,whipEnabled:$c.value,whipShortcut:el.value,whipVolume:tl.value,tags:xl.value,branchPrefixes:Y.value,setupScript:Cl.value,cleanupScript:wl.value,cleanupScriptMode:Tl.value,cleanupScriptOnlyOnChanges:El.value,archiveScript:Dl.value,changeSourceBranchScript:jl.value,sessionEndedScript:Ol.value,prMergedScript:kl.value,autoLoopDisabledScript:Al.value,worktreesPath:Il.value,worktreesPrefixByProject:Rl.value,flattenWorkspaceList:Wl.value,skillSuite:Gl.value,customReviewTemplate:ql.value,customAutoLoopReviewGate:Jl.value,customAutoLoopGroomingIntro:Yl.value,customQaPromptTemplate:Xl.value,customBrainstormingInstruction:Zl.value,voiceEnabled:tu.value,voicePttKey:nu.value,voiceLanguage:ru.value,voiceModel:iu.value,voiceCommandPath:au.value,voiceFfmpegPath:ou.value,voiceTemperature:su.value,voicePrompt:cu.value,voiceTranslateToEnglish:lu.value,voiceSuppressNst:uu.value}}function gd(){return{...Q.value}}function _d(){return Jt(hd())}function vd(){return Jt(gd())}let yd=c(()=>!qt(hd(),pd.value)),bd=c(()=>!qt(gd(),md.value)),xd=c(()=>_.loadError?!1:yd.value?!0:bd.value&&($.value!==null||Z.value)),Sd=c(()=>bd.value&&($.value!==null||Z.value)?ju.value:_u.value);function Cd(){bd.value&&($.value!==null||Z.value)?Ud():Pd()}function wd(){fu.value=!0;let e=_.global.defaultModelByEngine??{};pe.value=e[`claude-code`]??`auto`,he.value=e.codex??`auto`,ge.value=_.global.prPromptTemplate,M.value=_.global.reviewPromptTemplate??``,Ee.value=_.global.ciFixPromptTemplate??``,Oe.value=_.global.finalizationPrompt??``,N.value=_.global.gitConventions,Ae.value=_.global.editorCommand??``,B.value=_.global.fileManagerCommand??``,Xe.value=_.global.terminalCommand??``,nt.value=_.global.autoPurgeOnPrMerged??!1,it.value=_.global.autoLoopMaxRetries??5,gt.value=_.global.awaitingUserReminderMinutes??0,_t.value=_.global.wsEventsRetentionDays??0,vt.value=_.global.wsEventsKeepPerWorkspace??0,Nt.value=_.global.browserNotifications??!0,W.value=_.global.audioNotifications??!0,Ft.value=_.global.audioQuestionNotifications??!1,Rt.value=_.global.audioWorkspaceCreatedNotifications??!1,zt.value=_.global.audioAgentErrorNotifications??!1,Bt.value=We(_.global.audioNotificationSound),Vt.value=xe(_.global.audioQuestionSound),Ht.value=xe(_.global.audioWorkspaceCreatedSound),Ut.value=xe(_.global.audioAgentErrorSound);let t=Object.fromEntries(ve.map(e=>[e,xe(_.global[e])])),n=Object.fromEntries(_e.map(e=>{let t=_.global[e];if(e.endsWith(`Enabled`))return[e,typeof t==`boolean`&&t];let n=Number(t);return[e,Number.isFinite(n)?Math.max(0,Math.min(1,n)):1]}));Kc.value={...t,...n};let r=_.global.audioNotificationVolume;Gt.value=typeof r==`number`&&Number.isFinite(r)?Math.max(0,Math.min(1,r)):1;let i=_.global.audioQuestionVolume;Kt.value=typeof i==`number`&&Number.isFinite(i)?Math.max(0,Math.min(1,i)):1;let a=_.global.audioWorkspaceCreatedVolume;G.value=typeof a==`number`&&Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;let o=_.global.audioAgentErrorVolume;Gc.value=typeof o==`number`&&Number.isFinite(o)?Math.max(0,Math.min(1,o)):1,qc.value=_.global.notionStatusProperty??``,Jc.value=_.global.notionInProgressStatus??``,Yc.value=_.global.notionAssigneeProperty??``,Xc.value=_.global.notionUserId??``,fl.value=_.global.notionInitialPromptTemplate??``,pl.value=_.global.sentryInitialPromptTemplate??``;{let e=_.global.defaultPermissionModeByEngine??{},t=e=>e===`plan`||e===`bypass`||e===`strict`||e===`interactive`,n=e[`claude-code`];ml.value=t(n)?n:`bypass`;let r=e.codex;hl.value=t(r)?r:`bypass`}gl.value=_.global.notionMcpKey??``,_l.value=_.global.sentryMcpKey??``,vl.value=_.global.bitbucketToken??``,yl.value=_.global.bitbucketUsername??``,J.value=_.global.notionEnabled??!0,bl.value=_.global.sentryEnabled??!0,Zc.value=_.showVerboseSystemMessages,Qc.value=_.global.showThinkingBlocks??!0,$c.value=_.global.whipEnabled??!1,el.value=_.global.whipShortcut??`mod+shift+x`,tl.value=_.global.whipVolume??1,xl.value=Array.isArray(_.global.tags)?[..._.global.tags]:[],Y.value=Array.isArray(_.global.branchPrefixes)?[..._.global.branchPrefixes]:[],Cl.value=_.global.setupScript??``,wl.value=_.global.cleanupScript??``,Tl.value=_.global.cleanupScriptMode===`idle`?`idle`:`no-tasks`,El.value=_.global.cleanupScriptOnlyOnChanges??!1,Dl.value=_.global.archiveScript??``,Ol.value=_.global.sessionEndedScript??``,kl.value=_.global.prMergedScript??``,Al.value=_.global.autoLoopDisabledScript??``,jl.value=_.global.changeSourceBranchScript??``,Il.value=_.global.worktreesPath??`.worktrees`,Rl.value=_.global.worktreesPrefixByProject??!1,Wl.value=_.global.flattenWorkspaceList??!1,Gl.value=_.global.skillSuite??`superpowers`,ql.value=_.global.customReviewTemplate??``,Jl.value=_.global.customAutoLoopReviewGate??``,Yl.value=_.global.customAutoLoopGroomingIntro??``,Xl.value=_.global.customQaPromptTemplate??``,Zl.value=_.global.customBrainstormingInstruction??``,tu.value=_.global.voiceEnabled??!1,nu.value=_.global.voicePttKey===`ctrl+space`?`ctrl+space`:`alt`,ru.value=_.global.voiceLanguage??`auto`,iu.value=_.global.voiceModel??null,au.value=_.global.voiceCommandPath??``,ou.value=_.global.voiceFfmpegPath??``,su.value=typeof _.global.voiceTemperature==`number`?_.global.voiceTemperature:0,cu.value=_.global.voicePrompt??``,lu.value=_.global.voiceTranslateToEnglish??!1,uu.value=_.global.voiceSuppressNonSpeechTokens??!0,fu.value=!1,pd.value=_d()}ee(()=>iu.value,(e,t)=>{fu.value||e!==t&&(su.value=hu(e))});function Td(e){if(!e){Q.value={path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}},ku.value=[],md.value=vd();return}Q.value={path:e.path,displayName:e.displayName,color:e.color??null,defaultSourceBranch:e.defaultSourceBranch,defaultModel:e.defaultModel,forge:e.forge??`auto`,prPromptTemplate:e.prPromptTemplate,reviewPromptTemplate:e.reviewPromptTemplate??``,ciFixPromptTemplate:e.ciFixPromptTemplate??``,notionInitialPromptTemplate:e.notionInitialPromptTemplate??``,sentryInitialPromptTemplate:e.sentryInitialPromptTemplate??``,gitConventions:e.gitConventions??``,setupScript:e.setupScript??``,taskPromptTemplate:e.taskPromptTemplate??``,cleanupScript:e.cleanupScript??``,cleanupScriptMode:e.cleanupScriptMode??``,archiveScript:e.archiveScript??``,changeSourceBranchScript:e.changeSourceBranchScript??``,sessionEndedScript:e.sessionEndedScript??``,prMergedScript:e.prMergedScript??``,autoLoopDisabledScript:e.autoLoopDisabledScript??``,devServer:{startCommand:e.devServer?.startCommand??``,stopCommand:e.devServer?.stopCommand??``},e2e:{framework:e.e2e?.framework??``,skill:e.e2e?.skill??``,prompt:e.e2e?.prompt??``},finalization:{prompt:e.finalization?.prompt??``}},md.value=vd(),e.path&&Ed(e.path)}async function Ed(e){if(!e.trim()){ku.value=[];return}Au.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();ku.value=n.local??n.branches??[]}catch{ku.value=[]}finally{Au.value=!1}}let Dd=null;ee(()=>Q.value.path,e=>{Dd&&clearTimeout(Dd),Dd=setTimeout(()=>{Ed(e)},500)}),ee(X,()=>{Z.value=!1,Td($.value)});let Od=n(null);async function kd(){try{let e=await fetch(`/api/settings/export`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`kobo-config-${new Date().toISOString().replace(/[:.]/g,`-`)}.json`,i.click(),URL.revokeObjectURL(r),m.notify({type:`positive`,message:E(`settings.exportSuccess`),position:`top`,timeout:3e3})}catch(e){m.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}function Ad(){Od.value?.click()}async function jd(e){let t=e.target,n=t.files?.[0];if(n)try{m.dialog({title:E(`settings.importConfirmTitle`),message:E(`settings.importConfirmMessage`),cancel:!0,persistent:!0,dark:!0}).onOk(async()=>{try{let e=await n.text(),t=JSON.parse(e),r=await fetch(`/api/settings/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}await _.fetchSettings(),wd(),m.notify({type:`positive`,message:E(`settings.importSuccess`),position:`top`,timeout:3e3})}catch(e){m.notify({type:`negative`,message:String(e),position:`top`,timeout:5e3})}})}finally{t.value=``}}async function Md(e){if(q.value===null){q.value=e;try{let t=await _.fetchGlobalDefaults(),n={prPromptTemplate:ge,reviewPromptTemplate:M,ciFixPromptTemplate:Ee,finalizationPrompt:Oe,gitConventions:N,notionInitialPromptTemplate:fl,sentryInitialPromptTemplate:pl};n[e].value=t[e]}catch(e){console.error(`[SettingsPage] resetFieldToDefault failed:`,e),m.notify({type:`negative`,message:E(`settings.resetFailed`),position:`top`})}finally{q.value=null}}}async function Nd(){let e=e=>e===0?1/0:e,t=_.global.wsEventsRetentionDays??0,n=_t.value;if(e(n)>=e(t))return!0;let r=E(`settings.retentionConfirmMessageUnknown`,{days:n});try{let e=await _.previewRetention(n,vt.value);r=E(`settings.retentionConfirmMessage`,{days:n,count:e.deletable,total:e.total})}catch(e){console.error(`[SettingsPage] retention preview failed:`,e)}return await new Promise(e=>{m.dialog({title:E(`settings.retentionConfirmTitle`),message:r,cancel:!0,persistent:!0,dark:!0}).onOk(()=>e(!0)).onCancel(()=>e(!1)).onDismiss(()=>e(!1))})}async function Pd(){if(await Ll.value?.validate()!==!1&&await Nd()){_u.value=!0;try{await _.updateGlobal({defaultModelByEngine:{"claude-code":pe.value,codex:he.value},prPromptTemplate:ge.value,reviewPromptTemplate:M.value,ciFixPromptTemplate:Ee.value,finalizationPrompt:Oe.value,gitConventions:N.value,editorCommand:Ae.value,fileManagerCommand:B.value,terminalCommand:Xe.value,autoPurgeOnPrMerged:nt.value,autoLoopMaxRetries:it.value,awaitingUserReminderMinutes:gt.value,wsEventsRetentionDays:_t.value,wsEventsKeepPerWorkspace:vt.value,browserNotifications:Nt.value,audioNotifications:W.value,audioQuestionNotifications:Ft.value,audioWorkspaceCreatedNotifications:Rt.value,audioAgentErrorNotifications:zt.value,audioNotificationSound:Bt.value,audioQuestionSound:Vt.value,audioWorkspaceCreatedSound:Ht.value,audioAgentErrorSound:Ut.value,audioNotificationVolume:Gt.value,audioQuestionVolume:Kt.value,audioWorkspaceCreatedVolume:G.value,audioAgentErrorVolume:Gc.value,...Kc.value,notionStatusProperty:qc.value,notionInProgressStatus:Jc.value,notionAssigneeProperty:Yc.value,notionUserId:Xc.value,notionInitialPromptTemplate:fl.value,sentryInitialPromptTemplate:pl.value,defaultPermissionModeByEngine:{"claude-code":ml.value,codex:hl.value},notionMcpKey:gl.value,sentryMcpKey:_l.value,bitbucketToken:vl.value,bitbucketUsername:yl.value,notionEnabled:J.value,sentryEnabled:bl.value,showThinkingBlocks:Qc.value,whipEnabled:$c.value,whipShortcut:el.value,whipVolume:tl.value,tags:xl.value,branchPrefixes:Y.value,setupScript:Cl.value,cleanupScript:wl.value,cleanupScriptMode:Tl.value,cleanupScriptOnlyOnChanges:El.value,archiveScript:Dl.value,changeSourceBranchScript:jl.value,sessionEndedScript:Ol.value,prMergedScript:kl.value,autoLoopDisabledScript:Al.value,worktreesPath:Il.value,worktreesPrefixByProject:Rl.value,flattenWorkspaceList:Wl.value,skillSuite:Gl.value,customReviewTemplate:ql.value,customAutoLoopReviewGate:Jl.value,customAutoLoopGroomingIntro:Yl.value,customQaPromptTemplate:Xl.value,customBrainstormingInstruction:Zl.value,voiceEnabled:tu.value,voicePttKey:nu.value,voiceLanguage:ru.value,voiceModel:iu.value,voiceCommandPath:au.value.trim(),voiceFfmpegPath:ou.value.trim(),voiceTemperature:su.value,voicePrompt:cu.value,voiceTranslateToEnglish:lu.value,voiceSuppressNonSpeechTokens:uu.value}),_.setVerboseSystemMessages(Zc.value),pd.value=_d(),m.notify({type:`positive`,message:E(`settings.saved`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.saveError`),position:`top`})}finally{_u.value=!1}}}async function Fd(e){du.value=e,Bd();try{await _.downloadVoiceModel(e)}catch{m.notify({type:`negative`,message:E(`voice.downloadFailed`),position:`top`})}finally{du.value=null,Vd()}}async function Id(e){du.value=e;try{await _.deleteVoiceModel(e),iu.value===e&&(iu.value=null)}catch{m.notify({type:`negative`,message:E(`voice.deleteFailed`),position:`top`})}finally{du.value=null}}async function Ld(e){try{await _.cancelVoiceModelDownload(e)}catch{m.notify({type:`negative`,message:E(`voice.cancelFailed`),position:`top`})}}function Rd(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e/1024,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n<10?n.toFixed(1):Math.round(n)} ${t[r]}`}let zd=null;function Bd(){zd||=setInterval(()=>{document.visibilityState!==`hidden`&&_.fetchVoiceModels().catch(e=>{console.error(`[settings] voice model polling failed:`,e)})},Wc)}function Vd(){zd&&=(clearInterval(zd),null)}async function Hd(e){try{await navigator.clipboard.writeText(e),m.notify({type:`positive`,message:E(`common.copied`),position:`top`,timeout:1200})}catch{m.notify({type:`negative`,message:E(`common.copyFailed`),position:`top`})}}async function Ud(){if(!Q.value.path.trim()){m.notify({type:`negative`,message:E(`settings.projectPathRequired`),position:`top`});return}ju.value=!0;try{await _.upsertProject(Q.value.path.trim(),{displayName:Q.value.displayName,color:Q.value.color,defaultSourceBranch:Q.value.defaultSourceBranch,defaultModel:Q.value.defaultModel,forge:Q.value.forge,prPromptTemplate:Q.value.prPromptTemplate,reviewPromptTemplate:Q.value.reviewPromptTemplate,ciFixPromptTemplate:Q.value.ciFixPromptTemplate,notionInitialPromptTemplate:Q.value.notionInitialPromptTemplate,sentryInitialPromptTemplate:Q.value.sentryInitialPromptTemplate,gitConventions:Q.value.gitConventions,setupScript:Q.value.setupScript,taskPromptTemplate:Q.value.taskPromptTemplate,cleanupScript:Q.value.cleanupScript,cleanupScriptMode:Q.value.cleanupScriptMode,archiveScript:Q.value.archiveScript,changeSourceBranchScript:Q.value.changeSourceBranchScript,sessionEndedScript:Q.value.sessionEndedScript,prMergedScript:Q.value.prMergedScript,autoLoopDisabledScript:Q.value.autoLoopDisabledScript,devServer:Q.value.devServer,e2e:Q.value.e2e,finalization:Q.value.finalization}),Z.value=!1;let e=_.projects.findIndex(e=>e.path===Q.value.path.trim());e>=0&&(X.value=e),md.value=vd(),m.notify({type:`positive`,message:E(`settings.projectSaved`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.projectSaveError`),position:`top`})}finally{ju.value=!1}}function Wd(){if(!$.value)return;let e=$.value.displayName||$.value.path;m.dialog({title:E(`settings.deleteProjectConfirmTitle`),message:E(`settings.deleteProjectConfirmMessage`,{name:e}),dark:!0,cancel:{flat:!0,label:E(`common.cancel`),color:`kobo-2`},ok:{flat:!0,label:E(`common.delete`),color:`red-5`}}).onOk(async()=>{if($.value){Mu.value=!0;try{await _.deleteProject($.value.path),X.value=-1,Z.value=!1,Td(null),m.notify({type:`positive`,message:E(`settings.projectDeleted`),position:`top`})}catch{m.notify({type:`negative`,message:E(`settings.projectDeleteError`),position:`top`})}finally{Mu.value=!1}}})}function Gd(){X.value=-1,Z.value=!0,Td(null),yu.value=null,bu.value=null}function Kd(e){if(bd.value&&($.value!==null||Z.value)){m.dialog({title:E(`settings.unsavedChanges.title`),message:E(`settings.unsavedChanges.message`),dark:!0,persistent:!0,ok:{flat:!0,label:E(`settings.unsavedChanges.discard`),color:`negative`},cancel:{flat:!0,label:E(`settings.unsavedChanges.cancel`),color:`kobo-2`}}).onOk(()=>{Z.value=!1,X.value=e,yu.value=null,bu.value=null});return}Z.value=!1,X.value=e,yu.value=null,bu.value=null}function qd(e){if(e.displayName)return e.displayName;let t=e.path.split(`/`);return t[t.length-1]??e.path}let Jd=n([]);function Yd(e,t){t(()=>{Jd.value=e?ku.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):ku.value})}async function Xd(){await _.fetchSettings(),_.loadError||wd()}return p(async()=>{await Promise.all([_.fetchSettings(),_.fetchActiveMcpServers(),Du()]);try{let e=await _.fetchGlobalDefaults();Ml.value=e.changeSourceBranchScript??``}catch(e){console.error(`[SettingsPage] fetchGlobalDefaults failed:`,e)}await _.fetchVoiceModels(),await _.fetchVoiceRuntime(),wd(),_.global.notionEnabled&&dl().catch(()=>{}),wt(),Le(`settings:global`,()=>yd.value),Le(`settings:project`,()=>bd.value&&($.value!==null||Z.value))}),d(()=>{Dd&&clearTimeout(Dd),Vd(),Ne(`settings:global`),Ne(`settings:project`)}),(e,n)=>(h(),u(mt,{class:`settings-page`},{default:w(()=>[t(_).loadError?(h(),b(`div`,Xt,[C(O,{name:`error`,size:`18px`}),y(`div`,Zt,[y(`span`,Qt,r(e.$t(`settings.loadFailed`)),1),y(`span`,$t,r(t(_).loadError),1),y(`span`,en,r(e.$t(`settings.loadFailedHint`)),1)]),C(H),C(A,{dense:``,flat:``,"no-caps":``,icon:`refresh`,label:e.$t(`common.retry`),onClick:Xd},null,8,[`label`])])):v(``,!0),y(`div`,tn,[t(oe)?(h(),u(ut,{key:1,modelValue:j.value,"onUpdate:modelValue":n[0]||=e=>j.value=e,side:`left`,overlay:``,behavior:`mobile`,width:240},{default:w(()=>[C(L,null,{default:w(()=>[C(I,{clickable:``,onClick:le},{default:w(()=>[C(R,{avatar:``},{default:w(()=>[C(O,{name:`arrow_back`})]),_:1}),C(R,null,{default:w(()=>[S(r(e.$t(`workspaceList.title`)),1)]),_:1})]),_:1}),C(Fe)]),_:1}),y(`div`,an,[y(`div`,on,r(e.$t(`settings.title`)),1),C(Lt,{"nav-items":ue.value,"active-tab":k.value,onSelect:ce},null,8,[`nav-items`,`active-tab`])])]),_:1},8,[`modelValue`])):(h(),b(`aside`,nn,[y(`div`,rn,r(e.$t(`settings.title`)),1),C(Lt,{"nav-items":ue.value,"active-tab":k.value,onSelect:ce},null,8,[`nav-items`,`active-tab`])])),y(`main`,sn,[y(`header`,cn,[C(ht,{"exclude-mobile":``,class:`q-mr-sm`}),t(oe)?(h(),u(A,{key:0,flat:``,dense:``,round:``,icon:`menu`,"aria-label":e.$t(`settings.openNav`),class:`settings-content__nav-toggle`,onClick:n[1]||=e=>j.value=!0},{default:w(()=>[C(V,null,{default:w(()=>[S(r(e.$t(`settings.openNav`)),1)]),_:1})]),_:1},8,[`aria-label`])):v(``,!0),y(`h2`,ln,r(de.value),1)]),y(`div`,un,[D(y(`div`,dn,[k.value===`general`?(h(),b(`div`,fn,[y(`div`,pn,r(e.$t(`settings.language`)),1),C(z,{"model-value":t(ie),options:Yu,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`,"onUpdate:modelValue":Xu},null,8,[`model-value`])])):v(``,!0),k.value===`general`?(h(),b(`div`,mn,[y(`div`,hn,r(e.$t(`settings.workspaceListSection`)),1),C(F,{modelValue:Wl.value,"onUpdate:modelValue":n[2]||=e=>Wl.value=e,label:e.$t(`settings.flattenWorkspaceList`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),y(`div`,gn,r(e.$t(`settings.flattenWorkspaceListHint`)),1)])):v(``,!0),k.value===`skills`?(h(),b(`div`,_n,[y(`div`,vn,r(e.$t(`settings.skillSuite.section`)),1),C(je,{modelValue:Gl.value,"onUpdate:modelValue":n[3]||=e=>Gl.value=e,options:[{label:e.$t(`settings.skillSuite.superpowers`),value:`superpowers`},{label:e.$t(`settings.skillSuite.gstack`),value:`gstack`},{label:e.$t(`settings.skillSuite.ecc`),value:`ecc`},{label:e.$t(`settings.skillSuite.superpowersGstack`),value:`superpowers+gstack`},{label:e.$t(`settings.skillSuite.allThree`),value:`superpowers+gstack+ecc`},{label:e.$t(`settings.skillSuite.custom`),value:`custom`}],type:`radio`,color:`primary`,dense:``,dark:``,inline:``},null,8,[`modelValue`,`options`]),y(`div`,yn,r(e.$t(Kl.value)),1),C(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`restart_alt`,label:e.$t(`settings.skillSuite.reloadDefaults`),disable:Gl.value!==`custom`,class:`q-mt-sm`,onClick:pu},null,8,[`label`,`disable`])])):v(``,!0),k.value===`skills`&&Gl.value===`custom`?(h(),b(`div`,bn,[y(`div`,xn,r(e.$t(`settings.skillSuite.customPrompts`)),1),y(`div`,Sn,r(e.$t(`settings.skillSuite.reviewTemplate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`reviewTemplate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`reviewTemplate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:ql.value,"onUpdate:modelValue":n[4]||=e=>ql.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,Cn,r(e.$t(`settings.skillSuite.autoLoopReviewGate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`autoLoopReviewGate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`autoLoopReviewGate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Jl.value,"onUpdate:modelValue":n[5]||=e=>Jl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,wn,r(e.$t(`settings.skillSuite.autoLoopGroomingIntro`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`autoLoopGroomingIntro`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`autoLoopGroomingIntro`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Yl.value,"onUpdate:modelValue":n[6]||=e=>Yl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,Tn,r(e.$t(`settings.skillSuite.qaTemplate`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`qaPromptTemplate`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`qaPromptTemplate`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Xl.value,"onUpdate:modelValue":n[7]||=e=>Xl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),y(`div`,En,r(e.$t(`settings.skillSuite.brainstormingInstruction`)),1),C(lt,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`kobo-2`,icon:`download`,label:e.$t(`settings.skillSuite.importPrompt`),loading:Ql.value===`brainstormingInstruction`,class:`q-mb-sm`},{default:w(()=>[C(L,{dense:``},{default:w(()=>[(h(!0),b(s,null,x($l.value,e=>D((h(),u(I,{key:e.value,clickable:``,onClick:t=>eu(`brainstormingInstruction`,e.value)},{default:w(()=>[C(R,null,{default:w(()=>[S(r(e.label),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[ot]])),128))]),_:1})]),_:1},8,[`label`,`loading`]),C(P,{modelValue:Zl.value,"onUpdate:modelValue":n[8]||=e=>Zl.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])])):v(``,!0),k.value===`agents`?(h(),b(`div`,Dn,[y(`div`,On,r(e.$t(`settings.defaultModelClaude`)),1),C(z,{modelValue:pe.value,"onUpdate:modelValue":n[9]||=e=>pe.value=e,options:Zu.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,kn,r(e.$t(`settings.defaultModelCodex`)),1),C(z,{modelValue:he.value,"onUpdate:modelValue":n[10]||=e=>he.value=e,options:Qu.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,An,r(e.$t(`settings.defaultPermissionModeClaude`)),1),y(`div`,jn,r(e.$t(`settings.defaultPermissionModeHint`)),1),C(z,{modelValue:ml.value,"onUpdate:modelValue":n[11]||=e=>ml.value=e,options:td.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),y(`div`,Mn,r(e.$t(`settings.defaultPermissionModeCodex`)),1),C(z,{modelValue:hl.value,"onUpdate:modelValue":n[12]||=e=>hl.value=e,options:nd.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])])):v(``,!0),k.value===`general`?(h(),b(`div`,Nn,[y(`div`,Pn,r(e.$t(`settings.activityFeed`)),1),y(`div`,Fn,[C(F,{modelValue:Zc.value,"onUpdate:modelValue":n[13]||=e=>Zc.value=e,label:e.$t(`settings.verboseMessages`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),C(F,{modelValue:Qc.value,"onUpdate:modelValue":n[14]||=e=>Qc.value=e,label:e.$t(`settings.showThinkingBlocks`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`])])])):v(``,!0),k.value===`general`?(h(),b(`div`,In,[y(`div`,Ln,r(e.$t(`settings.whipSettings`)),1),y(`div`,Rn,r(e.$t(`settings.whipSettingsHint`)),1),C(F,{modelValue:$c.value,"onUpdate:modelValue":n[15]||=e=>$c.value=e,label:e.$t(`settings.whipEnabled`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},{default:w(()=>[C(V,null,{default:w(()=>[S(r(e.$t(`settings.whipEnabledHint`)),1)]),_:1})]),_:1},8,[`modelValue`,`label`]),$c.value?(h(),b(`div`,zn,[C(Wt,{modelValue:el.value,"onUpdate:modelValue":n[16]||=e=>el.value=e},null,8,[`modelValue`]),y(`div`,Bn,[y(`div`,Vn,r(e.$t(`settings.whipVolume`)),1),C(Ct,{modelValue:tl.value,"onUpdate:modelValue":n[17]||=e=>tl.value=e,min:0,max:1,step:.05,disable:nl.value.disabled,"aria-label":e.$t(`settings.whipVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,Hn,r(Math.round(tl.value*100))+`% `,1)]),nl.value.hintKey?(h(),b(`div`,Un,r(e.$t(nl.value.hintKey)),1)):v(``,!0)])):v(``,!0)])):v(``,!0),k.value===`notifications`?(h(),b(`div`,Wn,[y(`div`,Gn,r(e.$t(`settings.notifications`)),1),y(`div`,Kn,[y(`div`,qn,[y(`div`,Jn,r(e.$t(`settings.notificationSound`)),1),y(`div`,Yn,r(e.$t(`settings.notificationSoundHint`)),1),y(`div`,Xn,[C(F,{modelValue:Nt.value,"onUpdate:modelValue":n[18]||=e=>Nt.value=e,label:e.$t(`settings.enableBrowserNotifications`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),C(F,{modelValue:W.value,"onUpdate:modelValue":n[19]||=e=>W.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`])]),y(`div`,Zn,[C(at,{dense:``,square:``,color:rl.value.color,"text-color":`white`,icon:`notifications`},{default:w(()=>[S(r(rl.value.label),1)]),_:1},8,[`color`]),C(A,{flat:``,dense:``,"no-caps":``,color:`primary`,icon:`notifications_active`,label:e.$t(`settings.testBrowserNotification`),onClick:il},null,8,[`label`])]),y(`div`,Qn,[C(z,{modelValue:Bt.value,"onUpdate:modelValue":n[20]||=e=>Bt.value=e,options:ad.value,label:e.$t(`settings.notificationSound`),disable:!W.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!W.value,onClick:ld},null,8,[`label`,`disable`])]),y(`div`,$n,[y(`div`,er,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Gt.value,"onUpdate:modelValue":n[21]||=e=>Gt.value=e,min:0,max:1,step:.05,disable:!W.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,tr,r(Math.round(Gt.value*100))+`% `,1)])]),y(`div`,nr,[y(`div`,rr,r(e.$t(`settings.questionSound`)),1),y(`div`,ir,r(e.$t(`settings.questionSoundHint`)),1),C(F,{modelValue:Ft.value,"onUpdate:modelValue":n[22]||=e=>Ft.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,ar,[C(z,{modelValue:Vt.value,"onUpdate:modelValue":n[23]||=e=>Vt.value=e,options:od.value,label:e.$t(`settings.questionSound`),disable:!Ft.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!Ft.value,onClick:ud},null,8,[`label`,`disable`])]),y(`div`,or,[y(`div`,sr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Kt.value,"onUpdate:modelValue":n[24]||=e=>Kt.value=e,min:0,max:1,step:.05,disable:!Ft.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,cr,r(Math.round(Kt.value*100))+`% `,1)])]),y(`div`,lr,[y(`div`,ur,r(e.$t(`settings.workspaceCreatedSound`)),1),y(`div`,dr,r(e.$t(`settings.workspaceCreatedSoundHint`)),1),C(F,{modelValue:Rt.value,"onUpdate:modelValue":n[25]||=e=>Rt.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,fr,[C(z,{modelValue:Ht.value,"onUpdate:modelValue":n[26]||=e=>Ht.value=e,options:od.value,label:e.$t(`settings.workspaceCreatedSound`),disable:!Rt.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!Rt.value,onClick:dd},null,8,[`label`,`disable`])]),y(`div`,pr,[y(`div`,mr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:G.value,"onUpdate:modelValue":n[27]||=e=>G.value=e,min:0,max:1,step:.05,disable:!Rt.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,hr,r(Math.round(G.value*100))+`% `,1)])]),y(`div`,gr,[y(`div`,_r,r(e.$t(`settings.agentErrorSound`)),1),y(`div`,vr,r(e.$t(`settings.agentErrorSoundHint`)),1),C(F,{modelValue:zt.value,"onUpdate:modelValue":n[28]||=e=>zt.value=e,label:e.$t(`settings.enableAudio`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption q-mb-sm`},null,8,[`modelValue`,`label`]),y(`div`,yr,[C(z,{modelValue:Ut.value,"onUpdate:modelValue":n[29]||=e=>Ut.value=e,options:od.value,label:e.$t(`settings.agentErrorSound`),disable:!zt.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`primary`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),C(A,{flat:``,dense:``,color:`primary`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!zt.value,onClick:fd},null,8,[`label`,`disable`])]),y(`div`,br,[y(`div`,xr,r(e.$t(`settings.notificationVolume`)),1),C(Ct,{modelValue:Gc.value,"onUpdate:modelValue":n[30]||=e=>Gc.value=e,min:0,max:1,step:.05,disable:!zt.value,"aria-label":e.$t(`settings.notificationVolume`),dark:``,dense:``,color:`primary`,class:`col`},null,8,[`modelValue`,`disable`,`aria-label`]),y(`div`,Sr,r(Math.round(Gc.value*100))+`%`,1)])])]),C(It,{modelValue:Kc.value,"onUpdate:modelValue":n[31]||=e=>Kc.value=e,"general-sound":Bt.value},null,8,[`modelValue`,`general-sound`])])):v(``,!0),k.value===`voice`?(h(),b(`div`,Cr,[y(`div`,wr,[y(`div`,Tr,r(e.$t(`voice.sectionRuntime`)),1),C(H),C(A,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,color:`kobo-2`,label:t(E)(`common.refresh`),onClick:n[32]||=e=>t(_).fetchVoiceRuntime()},null,8,[`label`])]),y(`div`,Er,[y(`div`,Dr,[C(O,{name:t(_).voiceRuntime?.available?`check_circle`:`cancel`,color:t(_).voiceRuntime?.available?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),y(`span`,{class:a([`text-caption`,t(_).voiceRuntime?.available?`text-green-5`:`text-red-5`])},r(t(_).voiceRuntime?.available?t(E)(`voice.runtimeReady`,{command:t(_).voiceRuntime?.command??`whisper-cli`}):t(E)(`voice.runtimeMissing`,{command:t(_).voiceRuntime?.command??`whisper-cli`})),3)]),y(`div`,Or,[C(O,{name:t(_).voiceRuntime?.ffmpegAvailable?`check_circle`:`cancel`,color:t(_).voiceRuntime?.ffmpegAvailable?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),y(`span`,{class:a([`text-caption`,t(_).voiceRuntime?.ffmpegAvailable?`text-green-5`:`text-red-5`])},r(t(_).voiceRuntime?.ffmpegAvailable?t(E)(`voice.ffmpegReady`):t(E)(`voice.ffmpegMissing`)),3)])]),C(Ge,{dense:``,dark:``,icon:`help_outline`,label:e.$t(`voice.installGuideTitle`),class:`variables-panel rounded-borders q-mt-sm`},{default:w(()=>[y(`div`,kr,[y(`div`,Ar,r(e.$t(`voice.installGuideIntro`)),1),y(`div`,jr,[y(`a`,Mr,r(e.$t(`voice.installLink`)),1)]),y(`div`,Nr,r(e.$t(`voice.installGuideUbuntuTitle`)),1),n[128]||=y(`pre`,{class:`mono-guide q-mb-sm`},`sudo apt update
|
|
3
3
|
sudo apt install -y cmake build-essential ffmpeg
|
|
4
4
|
git clone https://github.com/ggml-org/whisper.cpp.git
|
|
5
5
|
cd whisper.cpp
|