@loicngr/kobo 1.7.32 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/mcp-server/kobo-tasks-server.js +4 -0
  3. package/dist/server/routes/workspaces.js +11 -9
  4. package/dist/server/services/agent/engines/claude-code/engine.js +37 -4
  5. package/dist/server/services/agent/engines/claude-code/stop-hook.js +56 -0
  6. package/dist/server/services/cron-service.js +12 -6
  7. package/dist/server/services/wakeup-service.js +9 -0
  8. package/package.json +2 -2
  9. package/src/client/dist/spa/assets/{ActivityFeed-COdkQaiZ.js → ActivityFeed-Y1RkIPW1.js} +1 -1
  10. package/src/client/dist/spa/assets/{ChangelogPage-BXD8H3j-.js → ChangelogPage-DcPmypaS.js} +1 -1
  11. package/src/client/dist/spa/assets/{CreatePage-DX4TjLqr.js → CreatePage-DO_pMGS3.js} +1 -1
  12. package/src/client/dist/spa/assets/{DiffViewer-BUjVXGyZ.js → DiffViewer-DRvbmHwK.js} +3 -3
  13. package/src/client/dist/spa/assets/{HealthPage-DM7fvP4v.js → HealthPage-BvOR0B7B.js} +1 -1
  14. package/src/client/dist/spa/assets/{MainLayout-DtTxmFXf.css → MainLayout-KmjhECRT.css} +1 -1
  15. package/src/client/dist/spa/assets/MainLayout-M5TW3GL1.js +37 -0
  16. package/src/client/dist/spa/assets/{QSelect-DERXhq6x.js → QSelect-DgGpVy88.js} +1 -1
  17. package/src/client/dist/spa/assets/{SearchPage-OaTRqd2Q.js → SearchPage-Qc2SXUjf.js} +1 -1
  18. package/src/client/dist/spa/assets/{SettingsPage-BBk3MB8w.js → SettingsPage-G4xXwNwc.js} +1 -1
  19. package/src/client/dist/spa/assets/{WorkspacePage-k_qzLoLC.js → WorkspacePage-DeGm-XQp.js} +3 -3
  20. package/src/client/dist/spa/assets/{cssMode-CdNIff6x.js → cssMode-DfDzxSXu.js} +1 -1
  21. package/src/client/dist/spa/assets/{editor.api2-CEAFHkwY.js → editor.api2-Byu6kw7p.js} +1 -1
  22. package/src/client/dist/spa/assets/{editor.main-DuQa2C4S.js → editor.main-VujCgCtA.js} +2 -2
  23. package/src/client/dist/spa/assets/{engineFeatures-DChekJQO.js → engineFeatures-6A3KLQRO.js} +1 -1
  24. package/src/client/dist/spa/assets/{expand-template-BXNt_oWH.js → expand-template-CRHCd-I8.js} +1 -1
  25. package/src/client/dist/spa/assets/{freemarker2-DXz2Sr_a.js → freemarker2-Ce85qzU_.js} +1 -1
  26. package/src/client/dist/spa/assets/{handlebars-B6DHJ8jd.js → handlebars-BLTKFzzh.js} +1 -1
  27. package/src/client/dist/spa/assets/{html-_UvZHIUo.js → html-Brx-Keq8.js} +1 -1
  28. package/src/client/dist/spa/assets/{htmlMode-DZ0ixGc6.js → htmlMode-Cn-qtgzd.js} +1 -1
  29. package/src/client/dist/spa/assets/i18n-Cl6Gt8Eh.js +1 -0
  30. package/src/client/dist/spa/assets/{index-CNin8jPU.js → index-CyseQlfR.js} +6 -6
  31. package/src/client/dist/spa/assets/{javascript-C6Gf4Ys2.js → javascript-ywvG3uUF.js} +1 -1
  32. package/src/client/dist/spa/assets/{jsonMode-aE8EPidy.js → jsonMode-DjYQF9SH.js} +1 -1
  33. package/src/client/dist/spa/assets/{kobo-commands-Ip0ObeCE.js → kobo-commands-BSkMs22T.js} +1 -1
  34. package/src/client/dist/spa/assets/{liquid-CSp27lUC.js → liquid-CZjmNn4a.js} +1 -1
  35. package/src/client/dist/spa/assets/{lspLanguageFeatures-UxO-LpRp.js → lspLanguageFeatures-DJiFF8Wc.js} +1 -1
  36. package/src/client/dist/spa/assets/{mdx-BSCEgQSy.js → mdx-DPvLr_Xj.js} +1 -1
  37. package/src/client/dist/spa/assets/{monaco.contribution-DqqsS1kc.js → monaco.contribution-rZ1avSXN.js} +2 -2
  38. package/src/client/dist/spa/assets/{python-CA5lSk1U.js → python-agZmzvad.js} +1 -1
  39. package/src/client/dist/spa/assets/{razor-BznM4hXD.js → razor-D-6K3O2-.js} +1 -1
  40. package/src/client/dist/spa/assets/{render-chat-markdown-BJsZCnSw.js → render-chat-markdown-8LO2n7Of.js} +1 -1
  41. package/src/client/dist/spa/assets/{tsMode-NbGeOvoN.js → tsMode-BxYiDnB8.js} +1 -1
  42. package/src/client/dist/spa/assets/{typescript-kHDph5jb.js → typescript-Cv7_rzaO.js} +1 -1
  43. package/src/client/dist/spa/assets/{use-onboarding-C4tGLHsr.js → use-onboarding-Dy-3eSVP.js} +1 -1
  44. package/src/client/dist/spa/assets/{workers-DFjmWZva.js → workers-JYdpxrSy.js} +1 -1
  45. package/src/client/dist/spa/assets/{xml-BXzZhhmL.js → xml-CshFLvoE.js} +1 -1
  46. package/src/client/dist/spa/assets/{yaml-DQNlz7_W.js → yaml-DL8TzVD_.js} +1 -1
  47. package/src/client/dist/spa/index.html +1 -1
  48. package/src/mcp-server/kobo-tasks-server.ts +4 -0
  49. package/src/client/dist/spa/assets/MainLayout-CbUZOTwz.js +0 -37
  50. package/src/client/dist/spa/assets/i18n-DXMuiAyu.js +0 -1
@@ -1,4 +1,4 @@
1
- import{$ as e,A as t,C as n,L as r,M as i,N as a,P as o,T as s,U as c,j as l,k as u,p as d}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{A as f,M as p,N as m,O as h,P as g,S as _,a as v,b as y,t as ee}from"./QIcon-C6C3QeM4.js";import{u as b}from"./use-id-By86THzm.js";import{z as x}from"./notifications-C4MxuXC7.js";import{a as S,c as C,d as w,l as T,n as E,o as D,s as O,u as k}from"./QInput-CLZtb8E0.js";import{_ as te}from"./index-CNin8jPU.js";import{n as ne,t as re}from"./QItemSection-O9WBXftL.js";import{t as ie}from"./QItemLabel-BYSjzk-t.js";import{f as A}from"./QTooltip-CyRLTG6i.js";import{t as ae}from"./QChip-BpS8c1sW.js";import{t as oe}from"./QMenu-D_9kEp2i.js";var j=!1;{let e=document.createElement(`div`);e.setAttribute(`dir`,`rtl`),Object.assign(e.style,{width:`1px`,height:`1px`,overflow:`auto`});let t=document.createElement(`div`);Object.assign(t.style,{width:`1000px`,height:`1px`}),document.body.append(e),e.append(t),e.scrollLeft=-1e3,j=e.scrollLeft>=0,e.remove()}var M=`You are reviewing code changes on workspace "{{workspace_name}}" in project {{project_name}}.
1
+ import{$ as e,A as t,C as n,L as r,M as i,N as a,P as o,T as s,U as c,j as l,k as u,p as d}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{A as f,M as p,N as m,O as h,P as g,S as _,a as v,b as y,t as ee}from"./QIcon-C6C3QeM4.js";import{u as b}from"./use-id-By86THzm.js";import{z as x}from"./notifications-C4MxuXC7.js";import{a as S,c as C,d as w,l as T,n as E,o as D,s as O,u as k}from"./QInput-CLZtb8E0.js";import{_ as te}from"./index-CyseQlfR.js";import{n as ne,t as re}from"./QItemSection-O9WBXftL.js";import{t as ie}from"./QItemLabel-BYSjzk-t.js";import{f as A}from"./QTooltip-CyRLTG6i.js";import{t as ae}from"./QChip-BpS8c1sW.js";import{t as oe}from"./QMenu-D_9kEp2i.js";var j=!1;{let e=document.createElement(`div`);e.setAttribute(`dir`,`rtl`),Object.assign(e.style,{width:`1px`,height:`1px`,overflow:`auto`});let t=document.createElement(`div`);Object.assign(t.style,{width:`1000px`,height:`1px`}),document.body.append(e),e.append(t),e.scrollLeft=-1e3,j=e.scrollLeft>=0,e.remove()}var M=`You are reviewing code changes on workspace "{{workspace_name}}" in project {{project_name}}.
2
2
 
3
3
  Branch: {{branch_name}} (base: {{source_branch}})
4
4
  Base commit: {{base_commit}}
@@ -1 +1 @@
1
- import{$ as e,B as t,R as n,S as r,U as i,W as a,_ as o,b as s,c,ct as l,g as u,h as d,it as f,m as p}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{t as m}from"./QIcon-C6C3QeM4.js";import{a as h,r as g}from"./use-id-By86THzm.js";import{n as _}from"./vue-i18n-C5Tx4bGk.js";import{t as v}from"./QInput-CLZtb8E0.js";import{t as y}from"./QToggle-Dwr3hSLw.js";import{i as b}from"./index-CNin8jPU.js";import{t as x}from"./_plugin-vue_export-helper-BzmG9fMN.js";import{t as S}from"./QBadge-CIC5n8w7.js";import{t as C}from"./QSpace-CrVsndpV.js";import{t as w}from"./formatters-wq5wP2If.js";import{t as T}from"./QPage-C6xc9fOe.js";var E=h(`search`,{state:()=>({query:``,includeArchived:!1,results:[],loading:!1,error:``}),actions:{async search(){let e=this.query.trim();if(!e){this.results=[],this.error=``;return}this.loading=!0,this.error=``;try{let t=new URLSearchParams({q:e});this.includeArchived&&t.set(`includeArchived`,`true`);let n=await fetch(`/api/search?${t.toString()}`);if(!n.ok){let e=`HTTP ${n.status}`;try{let t=await n.json();t?.error&&(e=t.error)}catch{}throw Error(e)}this.results=await n.json()}catch(e){this.error=e instanceof Error?e.message:String(e),this.results=[]}finally{this.loading=!1}},clear(){this.query=``,this.results=[],this.error=``}}}),D={class:`search-header`},O={class:`text-h5 q-mb-md`},k={class:`row items-center q-mt-sm q-gutter-sm`},A={key:0,class:`text-caption text-grey-6`},j={key:0,class:`text-grey-6 text-caption`},M={key:1,class:`text-negative text-caption`},N={key:2,class:`text-grey-6 text-caption`},P={key:3,class:`search-results`},F=[`onClick`],I={class:`row items-center q-mb-xs text-caption`},L={class:`text-grey-5 text-weight-medium`},R={class:`text-grey-6`},z={class:`search-snippet text-body2 text-grey-4`},B=x(r({__name:`SearchPage`,setup(r){let h=E(),x=b(),{t:B}=_(),{timeAgo:V}=w(),H=e(null),U=null;function W(){U&&clearTimeout(U),U=setTimeout(()=>{h.search()},250)}i(()=>h.includeArchived,()=>{h.query.trim().length>0&&h.search()});function G(e){x.push({name:`workspace`,params:{id:e}})}function K(e){return e===`user:message`?B(`search.eventType.userMessage`):e===`agent:output`?B(`search.eventType.agentOutput`):e}return(e,r)=>(n(),d(T,{class:`q-pa-md search-page`},{default:a(()=>[p(`div`,D,[p(`h2`,O,l(e.$t(`search.title`)),1),s(v,{ref_key:`inputEl`,ref:H,modelValue:f(h).query,"onUpdate:modelValue":[r[0]||=e=>f(h).query=e,W],dense:``,dark:``,outlined:``,clearable:``,autofocus:``,placeholder:e.$t(`search.placeholder`),onClear:r[1]||=e=>f(h).clear()},{prepend:a(()=>[s(m,{name:`search`})]),_:1},8,[`modelValue`,`placeholder`]),p(`div`,k,[s(y,{modelValue:f(h).includeArchived,"onUpdate:modelValue":r[2]||=e=>f(h).includeArchived=e,label:e.$t(`search.includeArchived`),dense:``,dark:``,color:`indigo-4`,size:`sm`},null,8,[`modelValue`,`label`]),s(C),f(h).results.length>0?(n(),o(`span`,A,l(e.$t(`search.resultCount`,{n:f(h).results.length})),1)):u(``,!0)])]),s(g,{dark:``,class:`q-my-md`}),f(h).loading?(n(),o(`div`,j,l(e.$t(`search.loading`)),1)):f(h).error?(n(),o(`div`,M,l(e.$t(`search.error`,{message:f(h).error})),1)):f(h).query.trim().length>0&&f(h).results.length===0?(n(),o(`div`,N,l(e.$t(`search.noResults`)),1)):f(h).results.length>0?(n(),o(`div`,P,[(n(!0),o(c,null,t(f(h).results,(t,r)=>(n(),o(`div`,{key:`${t.workspaceId}-${t.timestamp}-${r}`,class:`search-result q-pa-sm q-mb-sm cursor-pointer`,onClick:e=>G(t.workspaceId)},[p(`div`,I,[p(`span`,L,l(t.workspaceName),1),t.archived?(n(),d(S,{key:0,color:`grey-7`,class:`q-ml-xs`,label:e.$t(`common.archive`)},null,8,[`label`])):u(``,!0),s(C),s(S,{color:t.type===`user:message`?`blue-grey-7`:`indigo-7`,class:`q-mr-sm`,label:K(t.type)},null,8,[`color`,`label`]),p(`span`,R,l(f(V)(t.timestamp)),1)]),p(`div`,z,l(t.snippet),1)],8,F))),128))])):u(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-6f728e16`]]);export{B as default};
1
+ import{$ as e,B as t,R as n,S as r,U as i,W as a,_ as o,b as s,c,ct as l,g as u,h as d,it as f,m as p}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{t as m}from"./QIcon-C6C3QeM4.js";import{a as h,r as g}from"./use-id-By86THzm.js";import{n as _}from"./vue-i18n-C5Tx4bGk.js";import{t as v}from"./QInput-CLZtb8E0.js";import{t as y}from"./QToggle-Dwr3hSLw.js";import{i as b}from"./index-CyseQlfR.js";import{t as x}from"./_plugin-vue_export-helper-BzmG9fMN.js";import{t as S}from"./QBadge-CIC5n8w7.js";import{t as C}from"./QSpace-CrVsndpV.js";import{t as w}from"./formatters-wq5wP2If.js";import{t as T}from"./QPage-C6xc9fOe.js";var E=h(`search`,{state:()=>({query:``,includeArchived:!1,results:[],loading:!1,error:``}),actions:{async search(){let e=this.query.trim();if(!e){this.results=[],this.error=``;return}this.loading=!0,this.error=``;try{let t=new URLSearchParams({q:e});this.includeArchived&&t.set(`includeArchived`,`true`);let n=await fetch(`/api/search?${t.toString()}`);if(!n.ok){let e=`HTTP ${n.status}`;try{let t=await n.json();t?.error&&(e=t.error)}catch{}throw Error(e)}this.results=await n.json()}catch(e){this.error=e instanceof Error?e.message:String(e),this.results=[]}finally{this.loading=!1}},clear(){this.query=``,this.results=[],this.error=``}}}),D={class:`search-header`},O={class:`text-h5 q-mb-md`},k={class:`row items-center q-mt-sm q-gutter-sm`},A={key:0,class:`text-caption text-grey-6`},j={key:0,class:`text-grey-6 text-caption`},M={key:1,class:`text-negative text-caption`},N={key:2,class:`text-grey-6 text-caption`},P={key:3,class:`search-results`},F=[`onClick`],I={class:`row items-center q-mb-xs text-caption`},L={class:`text-grey-5 text-weight-medium`},R={class:`text-grey-6`},z={class:`search-snippet text-body2 text-grey-4`},B=x(r({__name:`SearchPage`,setup(r){let h=E(),x=b(),{t:B}=_(),{timeAgo:V}=w(),H=e(null),U=null;function W(){U&&clearTimeout(U),U=setTimeout(()=>{h.search()},250)}i(()=>h.includeArchived,()=>{h.query.trim().length>0&&h.search()});function G(e){x.push({name:`workspace`,params:{id:e}})}function K(e){return e===`user:message`?B(`search.eventType.userMessage`):e===`agent:output`?B(`search.eventType.agentOutput`):e}return(e,r)=>(n(),d(T,{class:`q-pa-md search-page`},{default:a(()=>[p(`div`,D,[p(`h2`,O,l(e.$t(`search.title`)),1),s(v,{ref_key:`inputEl`,ref:H,modelValue:f(h).query,"onUpdate:modelValue":[r[0]||=e=>f(h).query=e,W],dense:``,dark:``,outlined:``,clearable:``,autofocus:``,placeholder:e.$t(`search.placeholder`),onClear:r[1]||=e=>f(h).clear()},{prepend:a(()=>[s(m,{name:`search`})]),_:1},8,[`modelValue`,`placeholder`]),p(`div`,k,[s(y,{modelValue:f(h).includeArchived,"onUpdate:modelValue":r[2]||=e=>f(h).includeArchived=e,label:e.$t(`search.includeArchived`),dense:``,dark:``,color:`indigo-4`,size:`sm`},null,8,[`modelValue`,`label`]),s(C),f(h).results.length>0?(n(),o(`span`,A,l(e.$t(`search.resultCount`,{n:f(h).results.length})),1)):u(``,!0)])]),s(g,{dark:``,class:`q-my-md`}),f(h).loading?(n(),o(`div`,j,l(e.$t(`search.loading`)),1)):f(h).error?(n(),o(`div`,M,l(e.$t(`search.error`,{message:f(h).error})),1)):f(h).query.trim().length>0&&f(h).results.length===0?(n(),o(`div`,N,l(e.$t(`search.noResults`)),1)):f(h).results.length>0?(n(),o(`div`,P,[(n(!0),o(c,null,t(f(h).results,(t,r)=>(n(),o(`div`,{key:`${t.workspaceId}-${t.timestamp}-${r}`,class:`search-result q-pa-sm q-mb-sm cursor-pointer`,onClick:e=>G(t.workspaceId)},[p(`div`,I,[p(`span`,L,l(t.workspaceName),1),t.archived?(n(),d(S,{key:0,color:`grey-7`,class:`q-ml-xs`,label:e.$t(`common.archive`)},null,8,[`label`])):u(``,!0),s(C),s(S,{color:t.type===`user:message`?`blue-grey-7`:`indigo-7`,class:`q-mr-sm`,label:K(t.type)},null,8,[`color`,`label`]),p(`span`,R,l(f(V)(t.timestamp)),1)]),p(`div`,z,l(t.snippet),1)],8,F))),128))])):u(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-6f728e16`]]);export{B as default};
@@ -1,4 +1,4 @@
1
- import{$ as e,B as t,C as n,F as r,G as i,I as a,M as o,R as s,S as c,T as l,U as u,W as d,_ as f,a as p,at as m,b as h,c as g,ct as _,g as v,h as y,it as b,k as x,m as S,n as ee,o as te,ot as ne,p as C,v as re,w as ie,y as w}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{L as ae,N as oe,P as T,i as se,k as ce,l as le,n as ue,r as de,t as E}from"./QIcon-C6C3QeM4.js";import{r as fe}from"./use-id-By86THzm.js";import{B as pe,V as D,a as me,c as he,i as ge,l as _e,n as ve,o as ye,s as be,z as O}from"./notifications-C4MxuXC7.js";import{n as xe,r as Se}from"./QRadio-B_TurTzx.js";import{c as Ce,t as k}from"./QBtn-DwemGTZv.js";import{n as we}from"./vue-i18n-C5Tx4bGk.js";import{i as Te,o as A,r as Ee,t as j}from"./QInput-CLZtb8E0.js";import{t as De}from"./QCheckbox-o3UHW596.js";import{t as M}from"./QToggle-Dwr3hSLw.js";import{_ as Oe,b as ke,g as Ae,t as je,x as Me}from"./index-CNin8jPU.js";import{n as N,t as P}from"./QItemSection-O9WBXftL.js";import{t as F}from"./QItemLabel-BYSjzk-t.js";import{d as I,t as Ne}from"./QTooltip-CyRLTG6i.js";import{t as Pe}from"./QExpansionItem-C9vmJqEO.js";import{t as Fe}from"./TouchPan-BmfIMD00.js";import{t as Ie}from"./_plugin-vue_export-helper-BzmG9fMN.js";import{t as L}from"./QSpace-CrVsndpV.js";import{t as Le}from"./QChip-BpS8c1sW.js";import{t as R}from"./QList-DRW_oyZ4.js";import{t as Re}from"./QMenu-D_9kEp2i.js";import{t as ze}from"./ClosePopup-DD10nToj.js";import{t as Be}from"./use-quasar-DcJRs0ay.js";import{a as Ve,i as He,n as Ue,o as We,r as Ge,t as z}from"./QSelect-DERXhq6x.js";import{n as Ke,t as qe}from"./use-onboarding-C4tGLHsr.js";import{t as Je}from"./QPage-C6xc9fOe.js";import{n as Ye,r as Xe,t as Ze}from"./permissionModes-CJN6Olox.js";import{t as B}from"./QBanner-BxBEdhfp.js";var Qe=`q-slider__marker-labels`,V=e=>({value:e}),$e=({marker:e})=>l(`div`,{key:e.value,style:e.style,class:e.classes},e.label),et=[34,37,40,33,39,38],tt={...de,...A,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`}},H=[`pan`,`update:modelValue`,`change`];function nt({updateValue:t,updatePosition:r,getDragging:i,formAttrs:a}){let{props:s,emit:c,slots:u,proxy:{$q:d}}=n(),f=ue(s,d),p=Te(a),m=e(!1),h=e(!1),g=e(!1),_=e(!1),v=C(()=>s.vertical?`--v`:`--h`),y=C(()=>`-`+(s.switchLabelSide?`switched`:`standard`)),b=C(()=>s.vertical?s.reverse:s.reverse!==(d.lang.rtl===!0)),x=C(()=>!Number.isFinite(s.innerMin)||s.innerMin<s.min?s.min:s.innerMin),S=C(()=>!Number.isFinite(s.innerMax)||s.innerMax>s.max?s.max:s.innerMax),ee=C(()=>!s.disable&&!s.readonly&&x.value<S.value),te=C(()=>{if(s.step===0)return e=>e;let e=(String(s.step).trim().split(`.`)[1]||``).length;return t=>Number.parseFloat(t.toFixed(e))}),ne=C(()=>s.step===0?1:s.step),re=C(()=>ee.value?s.tabindex||0:-1),ie=C(()=>s.max-s.min),w=C(()=>S.value-x.value),ae=C(()=>j(x.value)),oe=C(()=>j(S.value)),T=C(()=>s.vertical?b.value?`bottom`:`top`:b.value?`right`:`left`),le=C(()=>s.vertical?`height`:`width`),de=C(()=>s.vertical?`width`:`height`),E=C(()=>s.vertical?`vertical`:`horizontal`),fe=C(()=>{let e={role:`slider`,"aria-valuemin":x.value,"aria-valuemax":S.value,"aria-orientation":E.value,"data-step":s.step};return s.disable?e[`aria-disabled`]=`true`:s.readonly&&(e[`aria-readonly`]=`true`),e}),me=C(()=>`q-slider q-slider${v.value} q-slider--${m.value?``:`in`}active inline no-wrap `+(s.vertical?`row`:`column`)+(s.disable?` disabled`:` q-slider--enabled`+(ee.value?` q-slider--editable`:``))+(g.value===`both`?` q-slider--focus`:``)+(s.label||s.labelAlways?` q-slider--label`:``)+(s.labelAlways?` q-slider--label-always`:``)+(f.value?` q-slider--dark`:``)+(s.dense?` q-slider--dense q-slider--dense`+v.value:``));function he(e){let t=`q-slider__`+e;return`${t} ${t}${v.value} ${t}${v.value}${y.value}`}function ge(e){let t=`q-slider__`+e;return`${t} ${t}${v.value}`}let _e=C(()=>{let e=s.selectionColor||s.color;return`q-slider__selection absolute`+(e===void 0?``:` text-${e}`)}),ve=C(()=>ge(`markers`)+` absolute overflow-hidden`),ye=C(()=>ge(`track-container`)),be=C(()=>he(`pin`)),O=C(()=>he(`label`)),xe=C(()=>he(`text-container`)),Se=C(()=>he(`marker-labels-container`)+(s.markerLabelsClass===void 0?``:` ${s.markerLabelsClass}`)),Ce=C(()=>`q-slider__track relative-position no-outline`+(s.trackColor===void 0?``:` bg-${s.trackColor}`)),k=C(()=>{let e={[de.value]:s.trackSize};return s.trackImg!==void 0&&(e.backgroundImage=`url(${s.trackImg}) !important`),e}),we=C(()=>`q-slider__inner absolute`+(s.innerTrackColor===void 0?``:` bg-${s.innerTrackColor}`)),A=C(()=>{let e=oe.value-ae.value,t={[T.value]:`${100*ae.value}%`,[le.value]:e===0?`2px`:`${100*e}%`};return s.innerTrackImg!==void 0&&(t.backgroundImage=`url(${s.innerTrackImg}) !important`),t});function Ee(e){let{min:t,max:n,step:r}=s,i=t+e*(n-t);if(r>0){let e=(i-x.value)%r;i+=(Math.abs(e)>=r/2?(e<0?-1:1)*r:0)-e}return i=te.value(i),I(i,x.value,S.value)}function j(e){return ie.value===0?0:(e-s.min)/ie.value}function De(e,t){let n=ce(e),r=s.vertical?I((n.top-t.top)/t.height,0,1):I((n.left-t.left)/t.width,0,1);return I(b.value?1-r:r,ae.value,oe.value)}let M=C(()=>pe(s.markers)?s.markers:ne.value),Oe=C(()=>{let e=[],t=M.value,n=s.max,r=s.min;do e.push(r),r+=t;while(r<n);return e.push(n),e}),ke=C(()=>{let e=` ${Qe}${v.value}-`;return`q-slider__marker-labels${e}${s.switchMarkerLabelsSide?`switched`:`standard`}${e}${b.value?`rtl`:`ltr`}`}),Ae=C(()=>s.markerLabels===!1?null:N(s.markerLabels).map((e,t)=>({index:t,value:e.value,label:e.label||e.value,classes:ke.value+(e.classes===void 0?``:` `+e.classes),style:{...P(e.value),...e.style}}))),je=C(()=>({markerList:Ae.value,markerMap:F.value,classes:ke.value,getStyle:P})),Me=C(()=>{let e=w.value===0?`2px`:100*M.value/w.value;return{...A.value,backgroundSize:s.vertical?`2px ${e}%`:`${e}% 2px`}});function N(e){if(e===!1)return null;if(e===!0)return Oe.value.map(V);if(typeof e==`function`)return Oe.value.map(t=>{let n=e(t);return D(n)?{...n,value:t}:{value:t,label:n}});let t=({value:e})=>e>=s.min&&e<=s.max;return Array.isArray(e)?e.map(e=>D(e)?e:{value:e}).filter(t):Object.keys(e).map(t=>{let n=e[t],r=Number(t);return D(n)?{...n,value:r}:{value:r,label:n}}).filter(t)}function P(e){return{[T.value]:`${100*(e-s.min)/ie.value}%`}}let F=C(()=>{if(s.markerLabels===!1)return null;let e={};return Ae.value.forEach(t=>{e[t.value]=t}),e});function Ne(){if(u[`marker-label-group`]!==void 0)return u[`marker-label-group`](je.value);let e=u[`marker-label`]||$e;return Ae.value.map(t=>e({marker:t,...je.value}))}let Pe=C(()=>[[Fe,Ie,void 0,{[E.value]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]);function Ie(e){e.isFinal?(_.value!==void 0&&(r(e.evt),e.touch&&t(!0),_.value=void 0,c(`pan`,`end`)),m.value=!1,g.value=!1):e.isFirst?(_.value=i(e.evt),r(e.evt),t(),m.value=!0,c(`pan`,`start`)):(r(e.evt),t())}function L(){g.value=!1}function Le(e){r(e,i(e)),t(),h.value=!0,m.value=!0,document.addEventListener(`mouseup`,R,!0)}function R(){h.value=!1,m.value=!1,t(!0),L(),document.removeEventListener(`mouseup`,R,!0)}function Re(e){r(e,i(e)),t(!0)}function ze(e){et.includes(e.keyCode)&&t(!0)}function Be(e){if(s.vertical)return null;let t=d.lang.rtl===s.reverse?e:1-e;return{transform:`translateX(calc(${2*t-1} * ${s.thumbSize} / 2 + ${50-100*t}%))`}}function Ve(e){let t=C(()=>!h.value&&(g.value===e.focusValue||g.value===`both`)?` q-slider--focus`:``),n=C(()=>`q-slider__thumb q-slider__thumb${v.value} q-slider__thumb${v.value}-${b.value?`rtl`:`ltr`} absolute non-selectable`+t.value+(e.thumbColor.value===void 0?``:` text-${e.thumbColor.value}`)),r=C(()=>({width:s.thumbSize,height:s.thumbSize,[T.value]:`${100*e.ratio.value}%`,zIndex:g.value===e.focusValue?2:void 0})),i=C(()=>e.labelColor.value===void 0?``:` text-${e.labelColor.value}`),a=C(()=>Be(e.ratio.value)),o=C(()=>`q-slider__text`+(e.labelTextColor.value===void 0?``:` text-${e.labelTextColor.value}`));return()=>{let t=[l(`svg`,{class:`q-slider__thumb-shape absolute-full`,viewBox:`0 0 20 20`,"aria-hidden":`true`},[l(`path`,{d:s.thumbPath})]),l(`div`,{class:`q-slider__focus-ring fit`})];return(s.label||s.labelAlways)&&(t.push(l(`div`,{class:be.value+` absolute fit no-pointer-events`+i.value},[l(`div`,{class:O.value,style:{minWidth:s.thumbSize}},[l(`div`,{class:xe.value,style:a.value},[l(`span`,{class:o.value},e.label.value)])])])),s.name!==void 0&&!s.disable&&p(t,`push`)),l(`div`,{class:n.value,style:r.value,...e.getNodeData()},t)}}function He(e,t,n,r){let i=[];s.innerTrackColor!==`transparent`&&i.push(l(`div`,{key:`inner`,class:we.value,style:A.value})),s.selectionColor!==`transparent`&&i.push(l(`div`,{key:`selection`,class:_e.value,style:e.value})),s.markers!==!1&&i.push(l(`div`,{key:`marker`,class:ve.value,style:Me.value})),r(i);let a=[se(`div`,{key:`trackC`,class:ye.value,tabindex:t.value,...n.value},[l(`div`,{class:Ce.value,style:k.value},i)],`slide`,ee.value,()=>Pe.value)];return s.markerLabels!==!1&&a[s.switchMarkerLabelsSide?`unshift`:`push`](l(`div`,{key:`markerL`,class:Se.value},Ne())),a}return o(()=>{document.removeEventListener(`mouseup`,R,!0)}),{state:{active:m,focus:g,preventFocus:h,dragging:_,editable:ee,classes:me,tabindex:re,attributes:fe,roundValueFn:te,keyStep:ne,trackLen:ie,innerMin:x,innerMinRatio:ae,innerMax:S,innerMaxRatio:oe,positionProp:T,sizeProp:le,isReversed:b},methods:{onActivate:Le,onMobileClick:Re,onBlur:L,onKeyup:ze,getContent:He,getThumbRenderFn:Ve,convertRatioToModel:Ee,convertModelToRatio:j,getDraggingRatio:De}}}var rt=()=>({}),it=T({name:`QSlider`,props:{...tt,modelValue:{required:!0,default:null,validator:e=>typeof e==`number`||e===null},labelValue:[String,Number]},emits:H,setup(t,{emit:r}){let{proxy:{$q:i}}=n(),{state:a,methods:o}=nt({updateValue:v,updatePosition:b,getDragging:y,formAttrs:Ee(t)}),s=e(null),c=e(0),d=e(0);function f(){d.value=t.modelValue===null?a.innerMin.value:I(t.modelValue,a.innerMin.value,a.innerMax.value)}u(()=>`${t.modelValue}|${a.innerMin.value}|${a.innerMax.value}`,f,{immediate:!0});let p=C(()=>o.convertModelToRatio(d.value)),m=C(()=>a.active.value?c.value:p.value),h=C(()=>{let e={[a.positionProp.value]:`${100*a.innerMinRatio.value}%`,[a.sizeProp.value]:`${100*(m.value-a.innerMinRatio.value)}%`};return t.selectionImg!==void 0&&(e.backgroundImage=`url(${t.selectionImg}) !important`),e}),g=o.getThumbRenderFn({focusValue:!0,getNodeData:rt,ratio:m,label:C(()=>t.labelValue===void 0?d.value:t.labelValue),thumbColor:C(()=>t.thumbColor||t.color),labelColor:C(()=>t.labelColor),labelTextColor:C(()=>t.labelTextColor)}),_=C(()=>a.editable.value?i.platform.is.mobile?{onClick:o.onMobileClick}:{onMousedown:o.onActivate,onFocus:x,onBlur:o.onBlur,onKeydown:S,onKeyup:o.onKeyup}:{});function v(e){d.value!==t.modelValue&&r(`update:modelValue`,d.value),e&&r(`change`,d.value)}function y(){return s.value.getBoundingClientRect()}function b(e,n=a.dragging.value){let r=o.getDraggingRatio(e,n);d.value=o.convertRatioToModel(r),c.value=!t.snap||t.step===0?r:o.convertModelToRatio(d.value)}function x(){a.focus.value=!0}function S(e){if(!et.includes(e.keyCode))return;oe(e);let n=([34,33].includes(e.keyCode)?10:1)*a.keyStep.value,r=([34,37,40].includes(e.keyCode)?-1:1)*(a.isReversed.value?-1:1)*(t.vertical?-1:1)*n;d.value=I(a.roundValueFn.value(d.value+r),a.innerMin.value,a.innerMax.value),v()}return()=>{let e=o.getContent(h,a.tabindex,_,e=>{e.push(g())});return l(`div`,{ref:s,class:a.classes.value+(t.modelValue===null?` q-slider--no-value`:``),...a.attributes.value,"aria-valuenow":t.modelValue},e)}}});function U(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(U(e,t))}):e instanceof Map&&e.forEach((e,r)=>{n.set(r,U(e,t))}),Object.assign(n,...Object.keys(e).map(n=>({[n]:U(e[n],t)})))}var at=T({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(t,{slots:r,emit:i}){let{proxy:a}=n(),{$q:o}=a,s=e(null),c=e(``),u=e(``),d=!1,f=C(()=>ae({initialValue:c.value,validate:t.validate,set:p,cancel:m,updatePosition:h},`value`,()=>u.value,e=>{u.value=e}));function p(){t.validate(u.value)&&(g()&&(i(`save`,u.value,c.value),i(`update:modelValue`,u.value)),_())}function m(){g()&&i(`cancel`,u.value,c.value),_()}function h(){x(()=>{s.value.updatePosition()})}function g(){return!O(u.value,c.value)}function _(){d=!0,s.value.hide()}function v(){d=!1,c.value=U(t.modelValue),u.value=U(t.modelValue),i(`beforeShow`)}function y(){i(`show`)}function b(){!d&&g()&&(t.autoSave&&t.validate(u.value)?(i(`save`,u.value,c.value),i(`update:modelValue`,u.value)):i(`cancel`,u.value,c.value)),i(`beforeHide`)}function S(){i(`hide`)}function ee(){let e=r.default===void 0?[]:[r.default(f.value)].flat();return t.title&&e.unshift(l(`div`,{class:`q-dialog__title q-mt-sm q-mb-sm`},t.title)),t.buttons&&e.push(l(`div`,{class:`q-popup-edit__buttons row justify-center no-wrap`},[l(k,{flat:!0,color:t.color,label:t.labelCancel||o.lang.label.cancel,onClick:m}),l(k,{flat:!0,color:t.color,label:t.labelSet||o.lang.label.set,onClick:p})])),e}return Object.assign(a,{set:p,cancel:m,show(e){s.value?.show(e)},hide(e){s.value?.hide(e)},updatePosition:h}),()=>{if(!t.disable)return l(Re,{ref:s,class:`q-popup-edit`,cover:t.cover,onBeforeShow:v,onShow:y,onBeforeHide:b,onHide:S,onEscapeKey:m},ee)}}}),ot={class:`text-h6`},st=[`title`],ct={key:1,class:`row justify-center q-mt-sm`},lt=c({__name:`FolderPickerDialog`,props:{modelValue:{type:Boolean},initialPath:{}},emits:[`update:modelValue`,`select`],setup(n,{emit:r}){let a=n,o=r,c=e(``),l=e(null),p=e([]),m=e(!1),b=e(``);async function x(e){m.value=!0,b.value=``;try{let t=e?`?path=${encodeURIComponent(e)}`:``,n=await fetch(`/api/fs/list-dirs${t}`),r=await n.json();if(!n.ok){b.value=r?.error??`HTTP ${n.status}`;return}c.value=r.path??``,l.value=r.parent??null,p.value=Array.isArray(r.entries)?r.entries:[]}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{m.value=!1}}function ee(){c.value&&(o(`select`,c.value),o(`update:modelValue`,!1))}return u(()=>a.modelValue,e=>{e&&x(a.initialPath||void 0)}),(e,r)=>(s(),y(Oe,{"model-value":n.modelValue,"onUpdate:modelValue":r[1]||=t=>e.$emit(`update:modelValue`,t)},{default:d(()=>[h(ke,{class:`text-grey-3`,style:{"min-width":`480px`,"max-width":`90vw`,background:`#1e1e3a`}},{default:d(()=>[h(Me,{class:`row items-center q-pb-none`},{default:d(()=>[S(`div`,ot,_(e.$t(`folderPicker.title`)),1),h(L),i(h(k,{flat:``,dense:``,round:``,icon:`close`,color:`grey-5`},null,512),[[ze]])]),_:1}),h(Me,null,{default:d(()=>[S(`div`,{class:`text-caption text-grey-6 ellipsis q-mb-sm`,style:{"font-family":`monospace`},title:c.value},_(c.value||`…`),9,st),b.value?(s(),y(B,{key:0,dense:``,class:`bg-red-9 text-white q-mb-sm rounded-borders`},{default:d(()=>[w(_(b.value),1)]),_:1})):v(``,!0),h(R,{bordered:``,separator:``,class:`rounded-borders`,style:{"max-height":`320px`,"overflow-y":`auto`}},{default:d(()=>[l.value?i((s(),y(N,{key:0,clickable:``,onClick:r[0]||=e=>x(l.value)},{default:d(()=>[h(P,{avatar:``},{default:d(()=>[h(E,{name:`arrow_upward`,color:`grey-5`})]),_:1}),h(P,null,{default:d(()=>[w(_(e.$t(`folderPicker.parent`)),1)]),_:1})]),_:1})),[[Ce]]):v(``,!0),(s(!0),f(g,null,t(p.value,e=>i((s(),y(N,{key:e.path,clickable:``,onClick:t=>x(e.path)},{default:d(()=>[h(P,{avatar:``},{default:d(()=>[h(E,{name:`folder`,color:`amber-6`})]),_:1}),h(P,null,{default:d(()=>[w(_(e.name),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[Ce]])),128)),!m.value&&p.value.length===0?(s(),y(N,{key:1},{default:d(()=>[h(P,{class:`text-grey-7`},{default:d(()=>[w(_(e.$t(`folderPicker.empty`)),1)]),_:1})]),_:1})):v(``,!0)]),_:1}),m.value?(s(),f(`div`,ct,[h(le,{size:`20px`,color:`grey-5`})])):v(``,!0)]),_:1}),h(xe,{align:`right`},{default:d(()=>[i(h(k,{flat:``,label:e.$t(`common.cancel`),color:`grey-5`},null,8,[`label`]),[[ze]]),h(k,{flat:``,label:e.$t(`folderPicker.select`),color:`primary`,disable:!c.value||m.value,onClick:ee},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),ut={class:`settings-layout`},dt={class:`settings-nav`},ft={class:`settings-nav__title`},pt={class:`settings-content`},mt={class:`settings-content__header`},ht={class:`settings-content__title`},gt={class:`settings-panels`},_t={class:`settings-global-wrap`},vt={"data-tour":`settings-card-general`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},yt={class:`text-subtitle2 q-mb-sm`},bt={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xt={class:`text-subtitle2 q-mb-sm`},St={class:`text-caption text-grey-7 q-mt-xs`},Ct={"data-tour":`settings-card-skills`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},wt={class:`text-subtitle2 q-mb-sm`},Tt={class:`text-caption text-grey-6 q-mt-xs`},Et={key:0,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dt={class:`text-subtitle2 q-mb-sm`},Ot={class:`text-caption text-grey-6 q-mb-xs q-mt-sm`},kt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},At={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},jt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},Mt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},Nt={"data-tour":`settings-card-agents`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Pt={class:`text-subtitle2 q-mb-sm`},Ft={class:`text-subtitle2 q-mb-sm q-mt-md`},It={class:`text-subtitle2 q-mb-sm q-mt-md`},Lt={class:`text-caption text-grey-7 q-mb-sm`},Rt={class:`text-subtitle2 q-mb-sm q-mt-md`},zt={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Bt={class:`text-subtitle2 q-mb-sm`},Vt={"data-tour":`settings-card-notifications`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ht={class:`text-subtitle2 q-mb-sm`},Ut={class:`column q-gutter-xs`},Wt={class:`row items-center q-gutter-sm q-mt-sm`},Gt={class:`row items-center q-gutter-sm q-mt-sm`},Kt={class:`text-grey-5 text-caption`,style:{"min-width":`80px`}},qt={class:`text-grey-5 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Jt={"data-tour":`settings-card-voice`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Yt={class:`row items-center q-mb-sm`},Xt={class:`text-subtitle2`},Zt={class:`column q-gutter-xs`},Qt={class:`row items-center q-gutter-sm`},$t={class:`row items-center q-gutter-sm`},en={class:`q-pa-sm text-caption text-grey-5`},tn={class:`q-mb-sm`},nn={class:`q-mb-sm`},rn={href:`https://github.com/ggml-org/whisper.cpp`,target:`_blank`,rel:`noopener noreferrer`,class:`text-indigo-4`},an={class:`q-mb-xs text-grey-4`},on={class:`q-mb-sm`},sn={class:`q-mb-xs text-grey-4`},cn={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ln={class:`text-subtitle2 q-mb-sm`},un={class:`row q-col-gutter-sm`},dn={class:`col-12 col-sm-6`},fn={class:`col-12 col-sm-6`},pn={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},mn={class:`text-subtitle2 q-mb-sm`},hn={key:0,class:`voice-models-dir row items-center q-gutter-sm q-mb-md`},gn={class:`text-caption text-grey-5 ellipsis-2-lines`,style:{flex:`1`,"min-width":`0`,"word-break":`break-all`}},_n={class:`column q-gutter-sm`},vn={class:`row items-center q-gutter-sm`},yn={class:`text-body2 text-grey-3`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},bn={class:`text-caption text-grey-6`},xn={key:0,class:`q-mt-sm`},Sn={class:`row items-center q-mt-xs`},Cn={class:`text-caption text-grey-6`},wn={class:`text-caption text-indigo-4`},Tn={key:1,class:`text-caption text-grey-7 q-mt-xs ellipsis`,style:{"font-family":`var(--kobo-font-mono, monospace)`,"word-break":`break-all`}},En={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dn={class:`text-subtitle2 q-mb-sm`},On={class:`q-pa-sm column q-gutter-sm`},kn={class:`row items-center q-gutter-sm`},An={class:`text-caption text-grey-5`},jn={class:`text-caption text-grey-5`,style:{"min-width":`40px`,"text-align":`right`}},Mn={class:`text-caption text-grey-7`},Nn={class:`text-caption text-grey-7`},Pn={class:`text-caption text-grey-7`},Fn={class:`text-caption text-grey-7`},In={class:`q-pa-sm column q-gutter-sm`},Ln={key:1,"data-tour":`settings-card-prompts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Rn={class:`row items-center q-mb-sm`},zn={class:`text-subtitle2`},Bn={class:`text-caption text-grey-7 q-mb-sm`},Vn={class:`q-mb-sm`},Hn={class:`row items-center q-mb-sm q-mt-md`},Un={class:`text-subtitle2`},Wn={class:`text-caption text-grey-7 q-mb-sm`},Gn={class:`row items-center q-mb-sm q-mt-md`},Kn={class:`text-subtitle2`},qn={class:`text-caption text-grey-7 q-mb-sm`},Jn={class:`row items-center q-mb-sm q-mt-md`},Yn={class:`text-subtitle2`},Xn={class:`text-caption text-grey-7 q-mb-sm`},Zn={class:`row items-center q-mb-sm q-mt-md`},Qn={class:`text-subtitle2`},$n={class:`text-caption text-grey-7 q-mb-sm`},er={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},tr={class:`text-subtitle2 q-mb-sm`},nr={class:`text-caption text-grey-7 q-mb-sm`},rr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ir={class:`text-subtitle2 q-mb-sm`},ar={class:`text-caption text-grey-7 q-mb-sm`},or={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},sr={class:`text-subtitle2 q-mb-sm`},cr={class:`text-caption text-grey-7 q-mb-sm`},lr={"data-tour":`settings-card-notion`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ur={class:`text-subtitle2 q-mb-sm`},dr={class:`text-caption text-grey-7 q-mb-sm`},fr={class:`q-mb-sm`},pr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},mr={class:`q-mb-sm`},hr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},gr={key:2,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},_r={class:`text-subtitle2 q-mb-sm`},vr={class:`text-caption text-grey-7 q-mb-sm`},yr={class:`q-mb-sm`},br={class:`field-label-sub text-caption q-mb-xs text-grey-7`},xr={class:`q-mb-sm`},Sr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},Cr={class:`row items-center q-mb-sm`},wr={class:`text-subtitle2`},Tr={class:`text-caption text-grey-7 q-mb-xs`},Er={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dr={class:`text-subtitle2 q-mb-sm`},Or={class:`text-caption text-grey-7 q-mb-sm`},kr={class:`q-mb-sm`},Ar={class:`field-label-sub text-caption q-mb-xs text-grey-7`},jr={class:`q-mb-sm`},Mr={class:`row items-center q-mb-xs`},Nr={class:`field-label-sub text-caption text-grey-7 col`},Pr=[`src`,`alt`],Fr={key:1,class:`text-caption text-grey-7 q-py-sm`},Ir={key:0,class:`text-caption text-orange-5 q-mb-xs`},Lr={key:3,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Rr={class:`text-subtitle2 q-mb-sm`},zr={class:`row items-center q-mb-sm`},Br={class:`text-subtitle2`},Vr={class:`text-caption text-grey-7 q-mb-xs`},Hr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ur={class:`text-subtitle2 q-mb-sm`},Wr={class:`text-caption text-grey-7 q-mb-sm`},Gr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Kr={class:`text-subtitle2 q-mb-sm`},qr={class:`text-caption text-grey-7 q-mb-sm`},Jr={class:`row items-center no-wrap`},Yr={key:1,class:`text-caption text-grey-7 q-mb-sm`},Xr={class:`row items-center q-gutter-sm`},Zr={"data-tour":`settings-card-scripts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Qr={class:`text-subtitle2 q-mb-sm`},$r={class:`text-caption text-grey-7 q-mb-sm`},ei={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ti={class:`text-subtitle2 q-mb-sm`},ni={class:`text-caption text-grey-7 q-mb-sm`},ri={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ii={class:`text-subtitle2 q-mb-sm`},ai={class:`text-caption text-grey-7 q-mb-sm`},oi={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},si={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ci={class:`text-subtitle2 q-mb-sm`},li={class:`text-caption text-grey-7 q-mb-sm`},ui={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},di={class:`row items-center justify-between q-mb-sm`},fi={class:`text-subtitle2`},pi={class:`text-caption text-grey-7 q-mb-xs`},mi={class:`text-caption text-grey-6 mono-guide q-mb-sm`},hi={"data-tour":`settings-card-worktrees`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},gi={class:`text-subtitle2 q-mb-sm`},_i={class:`text-caption text-grey-7 q-mb-sm`},vi={class:`text-caption text-grey-7 q-mt-xs`},yi={"data-tour":`settings-card-worktrees-purge`},bi={class:`text-caption text-grey-7 q-mt-xs`},xi={class:`q-pa-sm text-caption text-grey-5`,style:{"line-height":`1.55`}},Si={class:`text-weight-medium text-grey-3 q-mb-xs`},Ci={class:`q-mb-xs`},wi={class:`purge-docs-code`},Ti={class:`text-grey-7 q-mb-md`},Ei={class:`text-weight-medium text-grey-3 q-mb-xs`},Di={class:`q-mb-xs`},Oi={class:`q-pl-md q-my-xs`},ki={class:`purge-docs-code`},Ai={class:`text-grey-7 q-mb-md`},ji={class:`text-weight-medium text-grey-3 q-mb-xs`},Mi={class:`q-mb-xs`},Ni={class:`q-mb-xs text-grey-6`},Pi={class:`purge-docs-code`},Fi={class:`q-mb-xs text-grey-6`},Ii={class:`purge-docs-code`},Li={class:`text-grey-7`},Ri={"data-tour":`settings-card-export`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},zi={class:`text-subtitle2 q-mb-sm`},Bi={class:`text-caption text-grey-7 q-mb-sm`},Vi={class:`row q-gutter-sm`},Hi={class:`row justify-end settings-sticky-actions`},Ui={class:`q-pa-none`},Wi={class:`row q-gutter-md`,style:{"min-height":`500px`}},Gi={class:`project-list-col`},Ki={class:`settings-card rounded-borders`,style:{height:`100%`}},qi={class:`q-pa-sm`},Ji={class:`text-caption text-uppercase text-weight-bold q-px-sm q-py-xs text-grey-6`,style:{"letter-spacing":`0.05em`}},Yi={key:0,class:`q-pa-md text-center text-caption text-grey-8`},Xi={class:`q-pa-sm`},Zi={class:`project-form-col`},Qi={class:`settings-card rounded-borders q-pa-lg`,style:{height:`100%`}},$i={class:`row items-center q-mb-md`},ea={class:`text-subtitle1 text-weight-medium text-grey-3`},ta={key:0,class:`q-mb-md`},na={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ra={class:`text-caption text-grey-7 q-mt-xs`},ia={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},aa={class:`text-subtitle2 q-mb-md`},oa={class:`q-mb-md`},sa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ca={class:`q-mb-md`},la={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ua={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},da={class:`row items-center q-gutter-xs`},fa={class:`text-caption text-grey-6 q-mt-xs`},pa={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ma={class:`text-subtitle2 q-mb-md`},ha={class:`q-mb-md`},ga={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},_a={class:`q-mb-md`},va={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ya={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ba={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xa={class:`text-subtitle2 q-mb-md`},Sa={class:`q-mb-md`},Ca={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},wa={class:`text-caption text-grey-7 q-mb-xs`},Ta={class:`q-mb-md`},Ea={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Da={class:`text-caption text-grey-7 q-mb-xs`},Oa={class:`q-mb-md`},ka={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Aa={class:`text-caption text-grey-7 q-mb-xs`},ja={class:`q-mb-md`},Ma={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Na={class:`text-caption text-grey-7 q-mb-xs`},Pa={class:`q-mb-md`},Fa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Ia={class:`text-caption text-grey-7 q-mb-xs`},La={class:`q-mb-md`},Ra={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},za={class:`text-caption text-grey-7 q-mb-xs`},Ba={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Va={class:`text-caption text-grey-7 q-mt-xs`},Ha={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ua={class:`text-subtitle2 q-mb-md`},Wa={class:`q-mb-md`},Ga={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Ka={class:`text-caption text-grey-7 q-mb-xs`},qa={class:`text-caption text-grey-7 q-mt-xs`},Ja={class:`q-mb-md`},Ya={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Xa={class:`text-caption text-grey-7 q-mb-xs`},Za={class:`field-label-sub text-caption q-mt-sm q-mb-xs text-grey-7`},Qa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},$a={class:`text-caption text-grey-7 q-mb-xs`},eo={class:`row items-center justify-between q-mb-xs`},to={class:`field-label text-body2 text-weight-medium text-grey-6`},no={class:`text-caption text-grey-7 q-mb-xs`},ro={class:`text-caption text-grey-6 mono-guide q-mb-sm`},io={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ao={class:`text-subtitle2 q-mb-md`},oo={class:`q-mb-md`},so={class:`field-label-sub text-caption q-mb-xs text-grey-7`},co={class:`field-label-sub text-caption q-mb-xs text-grey-7`},lo={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},uo={class:`text-subtitle2 q-mb-xs`},fo={class:`text-caption text-grey-7 q-mb-sm`},po={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},mo={class:`text-subtitle2 q-mb-xs`},ho={class:`text-caption text-grey-7 q-mb-sm`},go={class:`row items-center q-gutter-sm settings-sticky-actions`},_o={key:1,class:`column items-center justify-center`,style:{height:`100%`,"min-height":`300px`}},vo={class:`text-body2 text-grey-8`},yo={class:`q-pa-none`},bo={"data-tour":`settings-card-templates`,class:`settings-card rounded-borders q-pa-lg`},xo={class:`row items-center justify-between q-mb-md`},So={class:`text-subtitle1 text-weight-medium text-grey-3`},Co={class:`row q-gutter-sm items-center`},wo={key:0,class:`text-grey-6 q-py-lg text-center`},To={key:1,class:`column q-gutter-sm`},Eo={class:`row items-start justify-between no-wrap`},Do={class:`col`},Oo={class:`text-body1 text-weight-medium`,style:{"font-family":`'Roboto Mono', monospace`}},ko={class:`text-caption text-grey-5 q-mt-xs`},Ao={class:`row no-wrap q-gutter-xs`},jo={class:`text-caption text-grey-7 q-mt-lg`,style:{"font-family":`'Roboto Mono', monospace`}},Mo={key:0,class:`settings-savebar`},No={class:`settings-savebar__label`},Po={class:`text-subtitle1`},Fo={class:`q-pl-md q-pt-xs`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,columns:`2`,"column-gap":`24px`}},Io={key:0,class:`text-negative text-caption`},Lo=Ie(c({__name:`SettingsPage`,setup(n){let o=Be(),c=be(),l=Ae(),{t:x,locale:ae}=we(),{startTour:oe}=qe(),T=e(`general`),se=C(()=>[{value:`general`,icon:`tune`,label:x(`settings.nav.general`)},{value:`agents`,icon:`smart_toy`,label:x(`settings.nav.agents`)},{value:`skills`,icon:`extension`,label:x(`settings.nav.skills`)},{value:`prompts`,icon:`text_snippet`,label:x(`settings.nav.prompts`)},{value:`scripts`,icon:`terminal`,label:x(`settings.nav.scripts`)},{value:`notion`,icon:`integration_instructions`,label:x(`settings.nav.notion`)},{value:`sentry`,icon:`bug_report`,label:x(`settings.nav.sentry`)},{value:`voice`,icon:`mic`,label:x(`settings.nav.voice`)},{value:`notifications`,icon:`notifications`,label:x(`settings.nav.notifications`)},{value:`worktrees`,icon:`account_tree`,label:x(`settings.nav.worktrees`)},{value:`projects`,icon:`folder`,label:x(`settings.projects`)},{value:`templates`,icon:`description`,label:x(`templates.title`)},{value:`export`,icon:`import_export`,label:x(`settings.nav.export`)}]),ce=C(()=>se.value.find(e=>e.value===T.value)?.label??``),le=C(()=>[`general`,`agents`,`skills`,`prompts`,`scripts`,`notion`,`sentry`,`voice`,`notifications`,`worktrees`,`export`].includes(T.value)),ue=e(`auto`),de=e(`auto`),pe=e(``),D=e(``),O=e(``),Te=e(``),A=e(``),Ee=e(``),I=e(``),Fe=e(``),Ie=e(!1),Re=e(!0),B=e(!0),Qe=e(ge),V=e(1),$e=e(``),et=e(``),tt=e(``),H=e(``),nt=e([]),rt=e(!1),U=e(``),ot=C(()=>nt.value.map(e=>({label:`${e.name} — ${e.email}`,value:e.id,name:e.name,email:e.email,avatarUrl:e.avatarUrl})));async function st(e=!1){if(!rt.value&&!(!e&&nt.value.length>0)){rt.value=!0,U.value=``;try{let e=await fetch(`/api/notion/users`),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);nt.value=Array.isArray(t.users)?t.users:[]}catch(e){U.value=e instanceof Error?e.message:String(e),nt.value=[]}finally{rt.value=!1}}}let ct=e(``),Lo=e(``),W=e(null),Ro=e(`bypass`),zo=e(`bypass`),Bo=e(``),Vo=e(``),Ho=e([]),G=e([]),Uo=e(``),Wo=e(``),Go=e(``),Ko=e(`no-tasks`),qo=e(!1),Jo=e(``),Yo=e(``),Xo=e(``),Zo=e(!1);function Qo(e){X.value.path=e}let $o=C(()=>[{label:x(`settings.cleanupScriptMode.inherit`),value:``},{label:x(`settings.cleanupScriptMode.idle`),value:`idle`},{label:x(`settings.cleanupScriptMode.noTasks`),value:`no-tasks`}]),es=e(he),ts=e(null),ns=e(!0);function rs(e){let t=e.trim().replace(/^\/+|\/+$/g,``);return t.length===0||t.length>50||!/^[A-Za-z0-9._/-]+$/.test(t)||t.includes(`..`)?``:t}function is(){let e=rs(Uo.value);!e||G.value.includes(e)||(G.value.push(e),Uo.value=``)}function as(e){G.value.splice(e,1)}function os(e,t){let n=rs(t);if(!n)return;let r=G.value.indexOf(n);r!==-1&&r!==e||(G.value[e]=n)}function ss(e,t){let n=e+t;if(n<0||n>=G.value.length)return;let r=G.value;[r[e],r[n]]=[r[n],r[e]]}let cs=e(!1),K=e(`superpowers`),ls=C(()=>{switch(K.value){case`gstack`:return`settings.skillSuite.gstackHint`;case`superpowers+gstack`:return`settings.skillSuite.superpowersGstackHint`;case`custom`:return`settings.skillSuite.customHint`;default:return`settings.skillSuite.superpowersHint`}}),us=e(``),ds=e(``),fs=e(``),ps=e(``),ms=e(``),hs=e(!1),gs=e(`alt`),_s=e(`auto`),q=e(null),vs=e(``),ys=e(``),bs=e(0),xs=e(``),Ss=e(!1),Cs=e(!0),ws=e(null),Ts=e(!1);function Es(){o.dialog({title:x(`settings.skillSuite.reloadDefaults`),message:x(`settings.skillSuite.reloadDefaultsConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{us.value=We,ds.value=Ge,fs.value=Ue,ps.value=Ve,ms.value=He})}function Ds(e){let t=e===`global`?Yo.value:X.value.changeSourceBranchScript,n=()=>{e===`global`?Yo.value=Xo.value:X.value.changeSourceBranchScript=Xo.value};if(!t.trim()||t===Xo.value){n();return}o.dialog({title:x(`settings.changeSourceBranchScript.replaceConfirmTitle`),message:x(`settings.changeSourceBranchScript.replaceConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(n)}function Os(e){return!e||e===`tiny`||e===`base`?.1:.2}let ks=[e=>e.trim().length>0||x(`settings.worktreesPathRequired`)],As=e(!1),J=e(-1),Y=e(!1),X=e({path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}}),js=[`defaultModel`,`forge`,`prPromptTemplate`,`reviewPromptTemplate`,`ciFixPromptTemplate`,`notionInitialPromptTemplate`,`sentryInitialPromptTemplate`,`gitConventions`,`setupScript`,`taskPromptTemplate`,`cleanupScript`,`cleanupScriptMode`,`archiveScript`,`changeSourceBranchScript`,`devServer`,`e2e`,`finalization`],Ms=e(null),Ns=e(null),Ps=C(()=>c.projects.map(e=>({value:e.path,label:Zc(e)||e.path})));function Fs(e){let t=c.projects.find(t=>t.path===e);t&&(X.value.defaultModel=t.defaultModel??``,X.value.forge=t.forge??`auto`,X.value.prPromptTemplate=t.prPromptTemplate??``,X.value.reviewPromptTemplate=t.reviewPromptTemplate??``,X.value.ciFixPromptTemplate=t.ciFixPromptTemplate??``,X.value.notionInitialPromptTemplate=t.notionInitialPromptTemplate??``,X.value.sentryInitialPromptTemplate=t.sentryInitialPromptTemplate??``,X.value.gitConventions=t.gitConventions??``,X.value.setupScript=t.setupScript??``,X.value.devServer={startCommand:t.devServer?.startCommand??``,stopCommand:t.devServer?.stopCommand??``},X.value.e2e={framework:t.e2e?.framework??``,skill:t.e2e?.skill??``,prompt:t.e2e?.prompt??``},X.value.finalization={prompt:t.finalization?.prompt??``})}function Is(){let e={defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}};return js.every(t=>JSON.stringify(X.value[t])===JSON.stringify(e[t]))}function Ls(e){if(e===null){Ms.value=null,Ns.value=null;return}if(Ns.value===null&&Is()){Fs(e),Ms.value=e,Ns.value=e;return}let t=c.projects.find(t=>t.path===e),n=t&&Zc(t)||e;o.dialog({title:x(`settings.copyFromConfirmTitle`),message:x(`settings.copyFromConfirm`,{project:n}),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{Fs(e),Ms.value=e,Ns.value=e}).onCancel(()=>{Ms.value=Ns.value})}let Rs=e([]),zs=e([]);async function Bs(){try{let e=await fetch(`/api/skills`);e.ok&&(Rs.value=await e.json())}catch{}}function Vs(e,t){t(()=>{let t=e.trim().toLowerCase();zs.value=t?Rs.value.filter(e=>e.toLowerCase().includes(t)):Rs.value.slice()})}let Hs=e([]),Us=e(!1),Ws=e(!1),Gs=e(!1),Ks=e(!1),Z=e(null),qs=e(``),Js=e(``),Ys=e(``),Q=e(``),Xs=e(!1),Zs=e(!1),Qs=C(()=>[...l.templates].sort((e,t)=>e.slug.localeCompare(t.slug))),$s=[`{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 ec(){Z.value=null,qs.value=``,Js.value=``,Ys.value=``,Q.value=``,Ks.value=!0}function tc(e){Z.value=e.slug,qs.value=e.slug,Js.value=e.description,Ys.value=e.content,Q.value=``,Ks.value=!0}async function nc(){Q.value=``;let e=qs.value.trim(),t=Js.value.trim();if(Z.value===null&&!/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)){Q.value=x(`templates.slugInvalid`);return}if(!t){Q.value=x(`templates.descriptionRequired`);return}if(!Ys.value.trim()){Q.value=x(`templates.contentRequired`);return}Xs.value=!0;try{Z.value===null?await l.createTemplate({slug:e,description:t,content:Ys.value}):await l.updateTemplate(Z.value,{description:t,content:Ys.value}),Ks.value=!1}catch(e){Q.value=e instanceof Error?e.message:x(`templates.createFailed`)}finally{Xs.value=!1}}function rc(){o.dialog({title:x(`templates.reloadDefaults`),message:x(`templates.reloadDefaultsConfirmMessage`),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.reloadDefaults`),color:`primary`}}).onOk(async()=>{Zs.value=!0;try{let e=await l.reloadDefaults();o.notify({type:`positive`,message:x(`templates.reloadDefaultsSuccess`,{added:e.added.length,kept:e.kept.length}),position:`top`,timeout:4e3})}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.reloadDefaultsFailed`),position:`top`})}finally{Zs.value=!1}})}async function ic(e){o.dialog({title:x(`templates.deleteTemplate`),message:`${x(`templates.deleteConfirm`,{slug:e.slug})}\n\n${x(`templates.deleteConfirmMessage`)}`,dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.deleteTemplate`),color:`red-5`}}).onOk(async()=>{try{await l.deleteTemplate(e.slug)}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.deleteFailed`),position:`top`})}})}function ac(e){o.dialog({title:x(`templates.resetConfirmTitle`),message:x(`templates.resetConfirmMessage`,{slug:e.slug}),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.resetToDefault`),color:`primary`}}).onOk(async()=>{try{await l.resetToDefault(e.slug),o.notify({type:`positive`,message:x(`templates.resetSuccess`,{slug:e.slug}),position:`top`})}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.resetFailed`),position:`top`})}})}let oc=[{label:`English`,value:`en`},{label:`Français`,value:`fr`},{label:`Deutsch`,value:`de`},{label:`Español`,value:`es`},{label:`Italiano`,value:`it`}];function sc(e){ae.value=e,localStorage.setItem(`kobo:locale`,e)}let cc=C(()=>[...Xe.map(e=>({label:x(e.i18nLabelKey),value:e.value}))]),lc=C(()=>[...Ye.map(e=>({label:x(e.i18nLabelKey),value:e.value}))]),uc=C(()=>[{label:x(`settings.useGlobal`),value:``},...cc.value]),dc=C(()=>[{label:x(`settings.forge.auto`),value:`auto`},{label:x(`settings.forge.github`),value:`github`},{label:x(`settings.forge.gitlab`),value:`gitlab`},{label:x(`settings.forge.none`),value:`none`}]),fc=C(()=>Ze[`claude-code`].map(e=>({label:x(`agentPermissionMode.${e}`),value:e}))),pc=C(()=>Ze.codex.map(e=>({label:x(`agentPermissionMode.${e}`),value:e}))),mc=C(()=>[{name:`{{pr_number}}`,description:x(`settings.var.prNumber`)},{name:`{{pr_url}}`,description:x(`settings.var.prUrl`)},{name:`{{branch_name}}`,description:x(`settings.var.branchName`)},{name:`{{source_branch}}`,description:x(`settings.var.sourceBranch`)},{name:`{{workspace_name}}`,description:x(`settings.var.workspaceName`)},{name:`{{project_name}}`,description:x(`settings.var.projectName`)},{name:`{{notion_url}}`,description:x(`settings.var.notionUrl`)},{name:`{{commits}}`,description:x(`settings.var.commits`)},{name:`{{diff_stats}}`,description:x(`settings.var.diffStats`)},{name:`{{tasks}}`,description:x(`settings.var.tasks`)},{name:`{{acceptance_criteria}}`,description:x(`settings.var.acceptanceCriteria`)}]),hc=C(()=>[{label:x(`settings.mcpAutoSelect`),value:``},...c.activeMcpServers.map(e=>({label:e.key,value:e.key}))]),gc=C(()=>me.map(e=>({label:x(e.labelKey),value:e.id}))),_c=C(()=>[{label:x(`voice.noneModel`),value:null}].concat(c.voiceModels.map(e=>({label:e.installed?`${e.name}`:`${e.name} (${x(`voice.notInstalled`)})`,value:e.name})))),vc=[{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 yc(){ve(Qe.value,V.value)}let $=C(()=>J.value<0||J.value>=c.projects.length?null:c.projects[J.value]??null),bc=e(``),xc=e(``);function Sc(){return JSON.stringify({claudeModel:ue.value,codexModel:de.value,prPrompt:pe.value,reviewPrompt:D.value,ciFixPrompt:O.value,finalizationPrompt:Te.value,gitConventions:A.value,editorCommand:Ee.value,fileManagerCommand:I.value,terminalCommand:Fe.value,autoPurgeOnPrMerged:Ie.value,browserNotifications:Re.value,audioNotifications:B.value,audioNotificationSound:Qe.value,audioNotificationVolume:V.value,notionStatusProperty:$e.value,notionStatus:et.value,notionAssigneeProperty:tt.value,notionUserId:H.value,notionInitialPrompt:ct.value,sentryInitialPrompt:Lo.value,claudePermissionMode:Ro.value,codexPermissionMode:zo.value,notionMcpKey:Bo.value,sentryMcpKey:Vo.value,tags:Ho.value,branchPrefixes:G.value,setupScript:Wo.value,cleanupScript:Go.value,cleanupScriptMode:Ko.value,cleanupScriptOnlyOnChanges:qo.value,archiveScript:Jo.value,changeSourceBranchScript:Yo.value,worktreesPath:es.value,worktreesPrefixByProject:ns.value,flattenWorkspaceList:cs.value,skillSuite:K.value,customReviewTemplate:us.value,customAutoLoopReviewGate:ds.value,customAutoLoopGroomingIntro:fs.value,customQaPromptTemplate:ps.value,customBrainstormingInstruction:ms.value,voiceEnabled:hs.value,voicePttKey:gs.value,voiceLanguage:_s.value,voiceModel:q.value,voiceCommandPath:vs.value,voiceFfmpegPath:ys.value,voiceTemperature:bs.value,voicePrompt:xs.value,voiceTranslateToEnglish:Ss.value,voiceSuppressNst:Cs.value})}function Cc(){return JSON.stringify(X.value)}let wc=C(()=>Sc()!==bc.value),Tc=C(()=>Cc()!==xc.value),Ec=C(()=>T.value===`projects`?Tc.value&&($.value!==null||Y.value):T.value===`templates`?!1:wc.value),Dc=C(()=>T.value===`projects`?Ws.value:Xs.value);function Oc(){T.value===`projects`?qc():Rc()}function kc(){Ts.value=!0;let e=c.global.defaultModelByEngine??{};ue.value=e[`claude-code`]??`auto`,de.value=e.codex??`auto`,pe.value=c.global.prPromptTemplate,D.value=c.global.reviewPromptTemplate??``,O.value=c.global.ciFixPromptTemplate??``,Te.value=c.global.finalizationPrompt??``,A.value=c.global.gitConventions,Ee.value=c.global.editorCommand??``,I.value=c.global.fileManagerCommand??``,Fe.value=c.global.terminalCommand??``,Ie.value=c.global.autoPurgeOnPrMerged??!1,Re.value=c.global.browserNotifications??!0,B.value=c.global.audioNotifications??!0,Qe.value=ye(c.global.audioNotificationSound);let t=c.global.audioNotificationVolume;V.value=typeof t==`number`&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):1,$e.value=c.global.notionStatusProperty??``,et.value=c.global.notionInProgressStatus??``,tt.value=c.global.notionAssigneeProperty??``,H.value=c.global.notionUserId??``,ct.value=c.global.notionInitialPromptTemplate??``,Lo.value=c.global.sentryInitialPromptTemplate??``;{let e=c.global.defaultPermissionModeByEngine??{},t=e=>e===`plan`||e===`bypass`||e===`strict`||e===`interactive`,n=e[`claude-code`];Ro.value=t(n)?n:`bypass`;let r=e.codex;zo.value=t(r)?r:`bypass`}Bo.value=c.global.notionMcpKey??``,Vo.value=c.global.sentryMcpKey??``,Ho.value=Array.isArray(c.global.tags)?[...c.global.tags]:[],G.value=Array.isArray(c.global.branchPrefixes)?[...c.global.branchPrefixes]:[],Wo.value=c.global.setupScript??``,Go.value=c.global.cleanupScript??``,Ko.value=c.global.cleanupScriptMode===`idle`?`idle`:`no-tasks`,qo.value=c.global.cleanupScriptOnlyOnChanges??!1,Jo.value=c.global.archiveScript??``,Yo.value=c.global.changeSourceBranchScript??``,es.value=c.global.worktreesPath??`.worktrees`,ns.value=c.global.worktreesPrefixByProject??!1,cs.value=c.global.flattenWorkspaceList??!1,K.value=c.global.skillSuite??`superpowers`,us.value=c.global.customReviewTemplate??``,ds.value=c.global.customAutoLoopReviewGate??``,fs.value=c.global.customAutoLoopGroomingIntro??``,ps.value=c.global.customQaPromptTemplate??``,ms.value=c.global.customBrainstormingInstruction??``,hs.value=c.global.voiceEnabled??!1,gs.value=c.global.voicePttKey===`ctrl+space`?`ctrl+space`:`alt`,_s.value=c.global.voiceLanguage??`auto`,q.value=c.global.voiceModel??null,vs.value=c.global.voiceCommandPath??``,ys.value=c.global.voiceFfmpegPath??``,bs.value=typeof c.global.voiceTemperature==`number`?c.global.voiceTemperature:0,xs.value=c.global.voicePrompt??``,Ss.value=c.global.voiceTranslateToEnglish??!1,Cs.value=c.global.voiceSuppressNonSpeechTokens??!0,Ts.value=!1,bc.value=Sc()}u(()=>q.value,(e,t)=>{Ts.value||e!==t&&(bs.value=Os(e))});function Ac(e){if(!e){X.value={path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}},Hs.value=[],xc.value=Cc();return}X.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??``,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??``}},xc.value=Cc(),e.path&&jc(e.path)}async function jc(e){if(!e.trim()){Hs.value=[];return}Us.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();Hs.value=n.local??n.branches??[]}catch{Hs.value=[]}finally{Us.value=!1}}let Mc=null;u(()=>X.value.path,e=>{Mc&&clearTimeout(Mc),Mc=setTimeout(()=>{jc(e)},500)}),u(J,()=>{Y.value=!1,Ac($.value)});let Nc=e(null);async function Pc(){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),o.notify({type:`positive`,message:x(`settings.exportSuccess`),position:`top`,timeout:3e3})}catch(e){o.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}function Fc(){Nc.value?.click()}async function Ic(e){let t=e.target,n=t.files?.[0];if(n)try{o.dialog({title:x(`settings.importConfirmTitle`),message:x(`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 c.fetchSettings(),kc(),o.notify({type:`positive`,message:x(`settings.importSuccess`),position:`top`,timeout:3e3})}catch(e){o.notify({type:`negative`,message:String(e),position:`top`,timeout:5e3})}})}finally{t.value=``}}async function Lc(e){if(W.value===null){W.value=e;try{let t=await c.fetchGlobalDefaults(),n={prPromptTemplate:pe,reviewPromptTemplate:D,ciFixPromptTemplate:O,finalizationPrompt:Te,gitConventions:A,notionInitialPromptTemplate:ct,sentryInitialPromptTemplate:Lo};n[e].value=t[e]}catch(e){console.error(`[SettingsPage] resetFieldToDefault failed:`,e),o.notify({type:`negative`,message:x(`settings.resetFailed`),position:`top`})}finally{W.value=null}}}async function Rc(){if(await ts.value?.validate()!==!1){As.value=!0;try{await c.updateGlobal({defaultModelByEngine:{"claude-code":ue.value,codex:de.value},prPromptTemplate:pe.value,reviewPromptTemplate:D.value,ciFixPromptTemplate:O.value,finalizationPrompt:Te.value,gitConventions:A.value,editorCommand:Ee.value,fileManagerCommand:I.value,terminalCommand:Fe.value,autoPurgeOnPrMerged:Ie.value,browserNotifications:Re.value,audioNotifications:B.value,audioNotificationSound:Qe.value,audioNotificationVolume:V.value,notionStatusProperty:$e.value,notionInProgressStatus:et.value,notionAssigneeProperty:tt.value,notionUserId:H.value,notionInitialPromptTemplate:ct.value,sentryInitialPromptTemplate:Lo.value,defaultPermissionModeByEngine:{"claude-code":Ro.value,codex:zo.value},notionMcpKey:Bo.value,sentryMcpKey:Vo.value,tags:Ho.value,branchPrefixes:G.value,setupScript:Wo.value,cleanupScript:Go.value,cleanupScriptMode:Ko.value,cleanupScriptOnlyOnChanges:qo.value,archiveScript:Jo.value,changeSourceBranchScript:Yo.value,worktreesPath:es.value,worktreesPrefixByProject:ns.value,flattenWorkspaceList:cs.value,skillSuite:K.value,customReviewTemplate:us.value,customAutoLoopReviewGate:ds.value,customAutoLoopGroomingIntro:fs.value,customQaPromptTemplate:ps.value,customBrainstormingInstruction:ms.value,voiceEnabled:hs.value,voicePttKey:gs.value,voiceLanguage:_s.value,voiceModel:q.value,voiceCommandPath:vs.value.trim(),voiceFfmpegPath:ys.value.trim(),voiceTemperature:bs.value,voicePrompt:xs.value,voiceTranslateToEnglish:Ss.value,voiceSuppressNonSpeechTokens:Cs.value}),bc.value=Sc(),o.notify({type:`positive`,message:x(`settings.saved`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.saveError`),position:`top`})}finally{As.value=!1}}}async function zc(e){ws.value=e,Wc();try{await c.downloadVoiceModel(e)}catch{o.notify({type:`negative`,message:x(`voice.downloadFailed`),position:`top`})}finally{ws.value=null,Gc()}}async function Bc(e){ws.value=e;try{await c.deleteVoiceModel(e),q.value===e&&(q.value=null)}catch{o.notify({type:`negative`,message:x(`voice.deleteFailed`),position:`top`})}finally{ws.value=null}}async function Vc(e){try{await c.cancelVoiceModelDownload(e)}catch{o.notify({type:`negative`,message:x(`voice.cancelFailed`),position:`top`})}}function Hc(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 Uc=null;function Wc(){Uc||=setInterval(()=>{c.fetchVoiceModels().catch(()=>{})},800)}function Gc(){Uc&&=(clearInterval(Uc),null)}async function Kc(e){try{await navigator.clipboard.writeText(e),o.notify({type:`positive`,message:x(`common.copied`),position:`top`,timeout:1200})}catch{o.notify({type:`negative`,message:x(`common.copyFailed`),position:`top`})}}async function qc(){if(!X.value.path.trim()){o.notify({type:`negative`,message:x(`settings.projectPathRequired`),position:`top`});return}Ws.value=!0;try{await c.upsertProject(X.value.path.trim(),{displayName:X.value.displayName,color:X.value.color,defaultSourceBranch:X.value.defaultSourceBranch,defaultModel:X.value.defaultModel,forge:X.value.forge,prPromptTemplate:X.value.prPromptTemplate,reviewPromptTemplate:X.value.reviewPromptTemplate,ciFixPromptTemplate:X.value.ciFixPromptTemplate,notionInitialPromptTemplate:X.value.notionInitialPromptTemplate,sentryInitialPromptTemplate:X.value.sentryInitialPromptTemplate,gitConventions:X.value.gitConventions,setupScript:X.value.setupScript,taskPromptTemplate:X.value.taskPromptTemplate,cleanupScript:X.value.cleanupScript,cleanupScriptMode:X.value.cleanupScriptMode,archiveScript:X.value.archiveScript,changeSourceBranchScript:X.value.changeSourceBranchScript,devServer:X.value.devServer,e2e:X.value.e2e,finalization:X.value.finalization}),Y.value=!1;let e=c.projects.findIndex(e=>e.path===X.value.path.trim());e>=0&&(J.value=e),xc.value=Cc(),o.notify({type:`positive`,message:x(`settings.projectSaved`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.projectSaveError`),position:`top`})}finally{Ws.value=!1}}function Jc(){if(!$.value)return;let e=$.value.displayName||$.value.path;o.dialog({title:x(`settings.deleteProjectConfirmTitle`),message:x(`settings.deleteProjectConfirmMessage`,{name:e}),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`common.delete`),color:`red-5`}}).onOk(async()=>{if($.value){Gs.value=!0;try{await c.deleteProject($.value.path),J.value=-1,Y.value=!1,Ac(null),o.notify({type:`positive`,message:x(`settings.projectDeleted`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.projectDeleteError`),position:`top`})}finally{Gs.value=!1}}})}function Yc(){J.value=-1,Y.value=!0,Ac(null),Ms.value=null,Ns.value=null}function Xc(e){Y.value=!1,J.value=e,Ms.value=null,Ns.value=null}function Zc(e){if(e.displayName)return e.displayName;let t=e.path.split(`/`);return t[t.length-1]??e.path}let Qc=e([]);function $c(e,t){t(()=>{Qc.value=e?Hs.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):Hs.value})}return r(async()=>{await Promise.all([c.fetchSettings(),c.fetchActiveMcpServers(),Bs()]);try{Xo.value=(await c.fetchGlobalDefaults()).changeSourceBranchScript??``}catch(e){console.error(`[SettingsPage] fetchGlobalDefaults failed:`,e)}await c.fetchVoiceModels(),await c.fetchVoiceRuntime(),kc(),st().catch(()=>{})}),a(()=>{Mc&&clearTimeout(Mc),Gc()}),(e,n)=>(s(),y(Je,{class:`settings-page`},{default:d(()=>[S(`div`,ut,[S(`aside`,dt,[S(`div`,ft,_(e.$t(`settings.title`)),1),h(R,{dense:``,class:`settings-nav__list`},{default:d(()=>[(s(!0),f(g,null,t(se.value,e=>i((s(),y(N,{key:e.value,clickable:``,"data-tour":`settings-nav-${e.value}`,class:m([`settings-nav__item`,{"settings-nav__item--active":T.value===e.value}]),onClick:t=>T.value=e.value},{default:d(()=>[h(P,{avatar:``,class:`settings-nav__icon`},{default:d(()=>[h(E,{name:e.icon,size:`16px`},null,8,[`name`])]),_:2},1024),h(P,{class:`settings-nav__label`},{default:d(()=>[w(_(e.label),1)]),_:2},1024)]),_:2},1032,[`data-tour`,`class`,`onClick`])),[[Ce,!1]])),128))]),_:1})]),S(`main`,pt,[S(`header`,mt,[S(`h2`,ht,_(ce.value),1)]),S(`div`,gt,[i(S(`div`,_t,[i(S(`div`,vt,[S(`div`,yt,_(e.$t(`settings.language`)),1),h(z,{"model-value":b(ae),options:oc,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`,"onUpdate:modelValue":sc},null,8,[`model-value`])],512),[[p,T.value===`general`]]),i(S(`div`,bt,[S(`div`,xt,_(e.$t(`settings.workspaceListSection`)),1),h(M,{modelValue:cs.value,"onUpdate:modelValue":n[0]||=e=>cs.value=e,label:e.$t(`settings.flattenWorkspaceList`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),S(`div`,St,_(e.$t(`settings.flattenWorkspaceListHint`)),1)],512),[[p,T.value===`general`]]),i(S(`div`,Ct,[S(`div`,wt,_(e.$t(`settings.skillSuite.section`)),1),h(je,{modelValue:K.value,"onUpdate:modelValue":n[1]||=e=>K.value=e,options:[{label:e.$t(`settings.skillSuite.superpowers`),value:`superpowers`},{label:e.$t(`settings.skillSuite.gstack`),value:`gstack`},{label:e.$t(`settings.skillSuite.superpowersGstack`),value:`superpowers+gstack`},{label:e.$t(`settings.skillSuite.custom`),value:`custom`}],type:`radio`,color:`indigo-4`,dense:``,dark:``,inline:``},null,8,[`modelValue`,`options`]),S(`div`,Tt,_(e.$t(ls.value)),1),h(k,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:e.$t(`settings.skillSuite.reloadDefaults`),disable:K.value!==`custom`,class:`q-mt-sm`,onClick:Es},null,8,[`label`,`disable`])],512),[[p,T.value===`skills`]]),T.value===`skills`&&K.value===`custom`?(s(),f(`div`,Et,[S(`div`,Dt,_(e.$t(`settings.skillSuite.customPrompts`)),1),S(`div`,Ot,_(e.$t(`settings.skillSuite.reviewTemplate`)),1),h(j,{modelValue:us.value,"onUpdate:modelValue":n[2]||=e=>us.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,kt,_(e.$t(`settings.skillSuite.autoLoopReviewGate`)),1),h(j,{modelValue:ds.value,"onUpdate:modelValue":n[3]||=e=>ds.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,At,_(e.$t(`settings.skillSuite.autoLoopGroomingIntro`)),1),h(j,{modelValue:fs.value,"onUpdate:modelValue":n[4]||=e=>fs.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,jt,_(e.$t(`settings.skillSuite.qaTemplate`)),1),h(j,{modelValue:ps.value,"onUpdate:modelValue":n[5]||=e=>ps.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,Mt,_(e.$t(`settings.skillSuite.brainstormingInstruction`)),1),h(j,{modelValue:ms.value,"onUpdate:modelValue":n[6]||=e=>ms.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])])):v(``,!0),i(S(`div`,Nt,[S(`div`,Pt,_(e.$t(`settings.defaultModelClaude`)),1),h(z,{modelValue:ue.value,"onUpdate:modelValue":n[7]||=e=>ue.value=e,options:cc.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,Ft,_(e.$t(`settings.defaultModelCodex`)),1),h(z,{modelValue:de.value,"onUpdate:modelValue":n[8]||=e=>de.value=e,options:lc.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,It,_(e.$t(`settings.defaultPermissionModeClaude`)),1),S(`div`,Lt,_(e.$t(`settings.defaultPermissionModeHint`)),1),h(z,{modelValue:Ro.value,"onUpdate:modelValue":n[9]||=e=>Ro.value=e,options:fc.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,Rt,_(e.$t(`settings.defaultPermissionModeCodex`)),1),h(z,{modelValue:zo.value,"onUpdate:modelValue":n[10]||=e=>zo.value=e,options:pc.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])],512),[[p,T.value===`agents`]]),i(S(`div`,zt,[S(`div`,Bt,_(e.$t(`settings.activityFeed`)),1),h(M,{"model-value":b(c).showVerboseSystemMessages,label:e.$t(`settings.verboseMessages`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`,"onUpdate:modelValue":n[11]||=e=>b(c).toggleVerboseSystemMessages()},null,8,[`model-value`,`label`])],512),[[p,T.value===`general`]]),i(S(`div`,Vt,[S(`div`,Ht,_(e.$t(`settings.notifications`)),1),S(`div`,Ut,[h(M,{modelValue:Re.value,"onUpdate:modelValue":n[12]||=e=>Re.value=e,label:e.$t(`settings.browserNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),h(M,{modelValue:B.value,"onUpdate:modelValue":n[13]||=e=>B.value=e,label:e.$t(`settings.audioNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`])]),S(`div`,Wt,[h(z,{modelValue:Qe.value,"onUpdate:modelValue":n[14]||=e=>Qe.value=e,options:gc.value,label:e.$t(`settings.notificationSound`),disable:!B.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),h(k,{flat:``,dense:``,color:`indigo-4`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!B.value,onClick:yc},null,8,[`label`,`disable`])]),S(`div`,Gt,[S(`div`,Kt,_(e.$t(`settings.notificationVolume`)),1),h(it,{modelValue:V.value,"onUpdate:modelValue":n[15]||=e=>V.value=e,min:0,max:1,step:.05,disable:!B.value,dark:``,dense:``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`disable`]),S(`div`,qt,_(Math.round(V.value*100))+`% `,1)])],512),[[p,T.value===`notifications`]]),i(S(`div`,Jt,[S(`div`,Yt,[S(`div`,Xt,_(e.$t(`voice.sectionRuntime`)),1),h(L),h(k,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,color:`grey-5`,label:b(x)(`common.refresh`),onClick:n[16]||=e=>b(c).fetchVoiceRuntime()},null,8,[`label`])]),S(`div`,Zt,[S(`div`,Qt,[h(E,{name:b(c).voiceRuntime?.available?`check_circle`:`cancel`,color:b(c).voiceRuntime?.available?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),S(`span`,{class:m([`text-caption`,b(c).voiceRuntime?.available?`text-green-5`:`text-red-5`])},_(b(c).voiceRuntime?.available?b(x)(`voice.runtimeReady`,{command:b(c).voiceRuntime?.command??`whisper-cli`}):b(x)(`voice.runtimeMissing`,{command:b(c).voiceRuntime?.command??`whisper-cli`})),3)]),S(`div`,$t,[h(E,{name:b(c).voiceRuntime?.ffmpegAvailable?`check_circle`:`cancel`,color:b(c).voiceRuntime?.ffmpegAvailable?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),S(`span`,{class:m([`text-caption`,b(c).voiceRuntime?.ffmpegAvailable?`text-green-5`:`text-red-5`])},_(b(c).voiceRuntime?.ffmpegAvailable?b(x)(`voice.ffmpegReady`):b(x)(`voice.ffmpegMissing`)),3)])]),h(Pe,{dense:``,dark:``,icon:`help_outline`,label:e.$t(`voice.installGuideTitle`),class:`variables-panel rounded-borders q-mt-sm`},{default:d(()=>[S(`div`,en,[S(`div`,tn,_(e.$t(`voice.installGuideIntro`)),1),S(`div`,nn,[S(`a`,rn,_(e.$t(`voice.installLink`)),1)]),S(`div`,an,_(e.$t(`voice.installGuideUbuntuTitle`)),1),n[96]||=S(`pre`,{class:`mono-guide q-mb-sm`},`sudo apt update
1
+ import{$ as e,B as t,C as n,F as r,G as i,I as a,M as o,R as s,S as c,T as l,U as u,W as d,_ as f,a as p,at as m,b as h,c as g,ct as _,g as v,h as y,it as b,k as x,m as S,n as ee,o as te,ot as ne,p as C,v as re,w as ie,y as w}from"./vue.runtime.esm-bundler-BAtKyT0Y.js";import{L as ae,N as oe,P as T,i as se,k as ce,l as le,n as ue,r as de,t as E}from"./QIcon-C6C3QeM4.js";import{r as fe}from"./use-id-By86THzm.js";import{B as pe,V as D,a as me,c as he,i as ge,l as _e,n as ve,o as ye,s as be,z as O}from"./notifications-C4MxuXC7.js";import{n as xe,r as Se}from"./QRadio-B_TurTzx.js";import{c as Ce,t as k}from"./QBtn-DwemGTZv.js";import{n as we}from"./vue-i18n-C5Tx4bGk.js";import{i as Te,o as A,r as Ee,t as j}from"./QInput-CLZtb8E0.js";import{t as De}from"./QCheckbox-o3UHW596.js";import{t as M}from"./QToggle-Dwr3hSLw.js";import{_ as Oe,b as ke,g as Ae,t as je,x as Me}from"./index-CyseQlfR.js";import{n as N,t as P}from"./QItemSection-O9WBXftL.js";import{t as F}from"./QItemLabel-BYSjzk-t.js";import{d as I,t as Ne}from"./QTooltip-CyRLTG6i.js";import{t as Pe}from"./QExpansionItem-C9vmJqEO.js";import{t as Fe}from"./TouchPan-BmfIMD00.js";import{t as Ie}from"./_plugin-vue_export-helper-BzmG9fMN.js";import{t as L}from"./QSpace-CrVsndpV.js";import{t as Le}from"./QChip-BpS8c1sW.js";import{t as R}from"./QList-DRW_oyZ4.js";import{t as Re}from"./QMenu-D_9kEp2i.js";import{t as ze}from"./ClosePopup-DD10nToj.js";import{t as Be}from"./use-quasar-DcJRs0ay.js";import{a as Ve,i as He,n as Ue,o as We,r as Ge,t as z}from"./QSelect-DgGpVy88.js";import{n as Ke,t as qe}from"./use-onboarding-Dy-3eSVP.js";import{t as Je}from"./QPage-C6xc9fOe.js";import{n as Ye,r as Xe,t as Ze}from"./permissionModes-CJN6Olox.js";import{t as B}from"./QBanner-BxBEdhfp.js";var Qe=`q-slider__marker-labels`,V=e=>({value:e}),$e=({marker:e})=>l(`div`,{key:e.value,style:e.style,class:e.classes},e.label),et=[34,37,40,33,39,38],tt={...de,...A,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`}},H=[`pan`,`update:modelValue`,`change`];function nt({updateValue:t,updatePosition:r,getDragging:i,formAttrs:a}){let{props:s,emit:c,slots:u,proxy:{$q:d}}=n(),f=ue(s,d),p=Te(a),m=e(!1),h=e(!1),g=e(!1),_=e(!1),v=C(()=>s.vertical?`--v`:`--h`),y=C(()=>`-`+(s.switchLabelSide?`switched`:`standard`)),b=C(()=>s.vertical?s.reverse:s.reverse!==(d.lang.rtl===!0)),x=C(()=>!Number.isFinite(s.innerMin)||s.innerMin<s.min?s.min:s.innerMin),S=C(()=>!Number.isFinite(s.innerMax)||s.innerMax>s.max?s.max:s.innerMax),ee=C(()=>!s.disable&&!s.readonly&&x.value<S.value),te=C(()=>{if(s.step===0)return e=>e;let e=(String(s.step).trim().split(`.`)[1]||``).length;return t=>Number.parseFloat(t.toFixed(e))}),ne=C(()=>s.step===0?1:s.step),re=C(()=>ee.value?s.tabindex||0:-1),ie=C(()=>s.max-s.min),w=C(()=>S.value-x.value),ae=C(()=>j(x.value)),oe=C(()=>j(S.value)),T=C(()=>s.vertical?b.value?`bottom`:`top`:b.value?`right`:`left`),le=C(()=>s.vertical?`height`:`width`),de=C(()=>s.vertical?`width`:`height`),E=C(()=>s.vertical?`vertical`:`horizontal`),fe=C(()=>{let e={role:`slider`,"aria-valuemin":x.value,"aria-valuemax":S.value,"aria-orientation":E.value,"data-step":s.step};return s.disable?e[`aria-disabled`]=`true`:s.readonly&&(e[`aria-readonly`]=`true`),e}),me=C(()=>`q-slider q-slider${v.value} q-slider--${m.value?``:`in`}active inline no-wrap `+(s.vertical?`row`:`column`)+(s.disable?` disabled`:` q-slider--enabled`+(ee.value?` q-slider--editable`:``))+(g.value===`both`?` q-slider--focus`:``)+(s.label||s.labelAlways?` q-slider--label`:``)+(s.labelAlways?` q-slider--label-always`:``)+(f.value?` q-slider--dark`:``)+(s.dense?` q-slider--dense q-slider--dense`+v.value:``));function he(e){let t=`q-slider__`+e;return`${t} ${t}${v.value} ${t}${v.value}${y.value}`}function ge(e){let t=`q-slider__`+e;return`${t} ${t}${v.value}`}let _e=C(()=>{let e=s.selectionColor||s.color;return`q-slider__selection absolute`+(e===void 0?``:` text-${e}`)}),ve=C(()=>ge(`markers`)+` absolute overflow-hidden`),ye=C(()=>ge(`track-container`)),be=C(()=>he(`pin`)),O=C(()=>he(`label`)),xe=C(()=>he(`text-container`)),Se=C(()=>he(`marker-labels-container`)+(s.markerLabelsClass===void 0?``:` ${s.markerLabelsClass}`)),Ce=C(()=>`q-slider__track relative-position no-outline`+(s.trackColor===void 0?``:` bg-${s.trackColor}`)),k=C(()=>{let e={[de.value]:s.trackSize};return s.trackImg!==void 0&&(e.backgroundImage=`url(${s.trackImg}) !important`),e}),we=C(()=>`q-slider__inner absolute`+(s.innerTrackColor===void 0?``:` bg-${s.innerTrackColor}`)),A=C(()=>{let e=oe.value-ae.value,t={[T.value]:`${100*ae.value}%`,[le.value]:e===0?`2px`:`${100*e}%`};return s.innerTrackImg!==void 0&&(t.backgroundImage=`url(${s.innerTrackImg}) !important`),t});function Ee(e){let{min:t,max:n,step:r}=s,i=t+e*(n-t);if(r>0){let e=(i-x.value)%r;i+=(Math.abs(e)>=r/2?(e<0?-1:1)*r:0)-e}return i=te.value(i),I(i,x.value,S.value)}function j(e){return ie.value===0?0:(e-s.min)/ie.value}function De(e,t){let n=ce(e),r=s.vertical?I((n.top-t.top)/t.height,0,1):I((n.left-t.left)/t.width,0,1);return I(b.value?1-r:r,ae.value,oe.value)}let M=C(()=>pe(s.markers)?s.markers:ne.value),Oe=C(()=>{let e=[],t=M.value,n=s.max,r=s.min;do e.push(r),r+=t;while(r<n);return e.push(n),e}),ke=C(()=>{let e=` ${Qe}${v.value}-`;return`q-slider__marker-labels${e}${s.switchMarkerLabelsSide?`switched`:`standard`}${e}${b.value?`rtl`:`ltr`}`}),Ae=C(()=>s.markerLabels===!1?null:N(s.markerLabels).map((e,t)=>({index:t,value:e.value,label:e.label||e.value,classes:ke.value+(e.classes===void 0?``:` `+e.classes),style:{...P(e.value),...e.style}}))),je=C(()=>({markerList:Ae.value,markerMap:F.value,classes:ke.value,getStyle:P})),Me=C(()=>{let e=w.value===0?`2px`:100*M.value/w.value;return{...A.value,backgroundSize:s.vertical?`2px ${e}%`:`${e}% 2px`}});function N(e){if(e===!1)return null;if(e===!0)return Oe.value.map(V);if(typeof e==`function`)return Oe.value.map(t=>{let n=e(t);return D(n)?{...n,value:t}:{value:t,label:n}});let t=({value:e})=>e>=s.min&&e<=s.max;return Array.isArray(e)?e.map(e=>D(e)?e:{value:e}).filter(t):Object.keys(e).map(t=>{let n=e[t],r=Number(t);return D(n)?{...n,value:r}:{value:r,label:n}}).filter(t)}function P(e){return{[T.value]:`${100*(e-s.min)/ie.value}%`}}let F=C(()=>{if(s.markerLabels===!1)return null;let e={};return Ae.value.forEach(t=>{e[t.value]=t}),e});function Ne(){if(u[`marker-label-group`]!==void 0)return u[`marker-label-group`](je.value);let e=u[`marker-label`]||$e;return Ae.value.map(t=>e({marker:t,...je.value}))}let Pe=C(()=>[[Fe,Ie,void 0,{[E.value]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]);function Ie(e){e.isFinal?(_.value!==void 0&&(r(e.evt),e.touch&&t(!0),_.value=void 0,c(`pan`,`end`)),m.value=!1,g.value=!1):e.isFirst?(_.value=i(e.evt),r(e.evt),t(),m.value=!0,c(`pan`,`start`)):(r(e.evt),t())}function L(){g.value=!1}function Le(e){r(e,i(e)),t(),h.value=!0,m.value=!0,document.addEventListener(`mouseup`,R,!0)}function R(){h.value=!1,m.value=!1,t(!0),L(),document.removeEventListener(`mouseup`,R,!0)}function Re(e){r(e,i(e)),t(!0)}function ze(e){et.includes(e.keyCode)&&t(!0)}function Be(e){if(s.vertical)return null;let t=d.lang.rtl===s.reverse?e:1-e;return{transform:`translateX(calc(${2*t-1} * ${s.thumbSize} / 2 + ${50-100*t}%))`}}function Ve(e){let t=C(()=>!h.value&&(g.value===e.focusValue||g.value===`both`)?` q-slider--focus`:``),n=C(()=>`q-slider__thumb q-slider__thumb${v.value} q-slider__thumb${v.value}-${b.value?`rtl`:`ltr`} absolute non-selectable`+t.value+(e.thumbColor.value===void 0?``:` text-${e.thumbColor.value}`)),r=C(()=>({width:s.thumbSize,height:s.thumbSize,[T.value]:`${100*e.ratio.value}%`,zIndex:g.value===e.focusValue?2:void 0})),i=C(()=>e.labelColor.value===void 0?``:` text-${e.labelColor.value}`),a=C(()=>Be(e.ratio.value)),o=C(()=>`q-slider__text`+(e.labelTextColor.value===void 0?``:` text-${e.labelTextColor.value}`));return()=>{let t=[l(`svg`,{class:`q-slider__thumb-shape absolute-full`,viewBox:`0 0 20 20`,"aria-hidden":`true`},[l(`path`,{d:s.thumbPath})]),l(`div`,{class:`q-slider__focus-ring fit`})];return(s.label||s.labelAlways)&&(t.push(l(`div`,{class:be.value+` absolute fit no-pointer-events`+i.value},[l(`div`,{class:O.value,style:{minWidth:s.thumbSize}},[l(`div`,{class:xe.value,style:a.value},[l(`span`,{class:o.value},e.label.value)])])])),s.name!==void 0&&!s.disable&&p(t,`push`)),l(`div`,{class:n.value,style:r.value,...e.getNodeData()},t)}}function He(e,t,n,r){let i=[];s.innerTrackColor!==`transparent`&&i.push(l(`div`,{key:`inner`,class:we.value,style:A.value})),s.selectionColor!==`transparent`&&i.push(l(`div`,{key:`selection`,class:_e.value,style:e.value})),s.markers!==!1&&i.push(l(`div`,{key:`marker`,class:ve.value,style:Me.value})),r(i);let a=[se(`div`,{key:`trackC`,class:ye.value,tabindex:t.value,...n.value},[l(`div`,{class:Ce.value,style:k.value},i)],`slide`,ee.value,()=>Pe.value)];return s.markerLabels!==!1&&a[s.switchMarkerLabelsSide?`unshift`:`push`](l(`div`,{key:`markerL`,class:Se.value},Ne())),a}return o(()=>{document.removeEventListener(`mouseup`,R,!0)}),{state:{active:m,focus:g,preventFocus:h,dragging:_,editable:ee,classes:me,tabindex:re,attributes:fe,roundValueFn:te,keyStep:ne,trackLen:ie,innerMin:x,innerMinRatio:ae,innerMax:S,innerMaxRatio:oe,positionProp:T,sizeProp:le,isReversed:b},methods:{onActivate:Le,onMobileClick:Re,onBlur:L,onKeyup:ze,getContent:He,getThumbRenderFn:Ve,convertRatioToModel:Ee,convertModelToRatio:j,getDraggingRatio:De}}}var rt=()=>({}),it=T({name:`QSlider`,props:{...tt,modelValue:{required:!0,default:null,validator:e=>typeof e==`number`||e===null},labelValue:[String,Number]},emits:H,setup(t,{emit:r}){let{proxy:{$q:i}}=n(),{state:a,methods:o}=nt({updateValue:v,updatePosition:b,getDragging:y,formAttrs:Ee(t)}),s=e(null),c=e(0),d=e(0);function f(){d.value=t.modelValue===null?a.innerMin.value:I(t.modelValue,a.innerMin.value,a.innerMax.value)}u(()=>`${t.modelValue}|${a.innerMin.value}|${a.innerMax.value}`,f,{immediate:!0});let p=C(()=>o.convertModelToRatio(d.value)),m=C(()=>a.active.value?c.value:p.value),h=C(()=>{let e={[a.positionProp.value]:`${100*a.innerMinRatio.value}%`,[a.sizeProp.value]:`${100*(m.value-a.innerMinRatio.value)}%`};return t.selectionImg!==void 0&&(e.backgroundImage=`url(${t.selectionImg}) !important`),e}),g=o.getThumbRenderFn({focusValue:!0,getNodeData:rt,ratio:m,label:C(()=>t.labelValue===void 0?d.value:t.labelValue),thumbColor:C(()=>t.thumbColor||t.color),labelColor:C(()=>t.labelColor),labelTextColor:C(()=>t.labelTextColor)}),_=C(()=>a.editable.value?i.platform.is.mobile?{onClick:o.onMobileClick}:{onMousedown:o.onActivate,onFocus:x,onBlur:o.onBlur,onKeydown:S,onKeyup:o.onKeyup}:{});function v(e){d.value!==t.modelValue&&r(`update:modelValue`,d.value),e&&r(`change`,d.value)}function y(){return s.value.getBoundingClientRect()}function b(e,n=a.dragging.value){let r=o.getDraggingRatio(e,n);d.value=o.convertRatioToModel(r),c.value=!t.snap||t.step===0?r:o.convertModelToRatio(d.value)}function x(){a.focus.value=!0}function S(e){if(!et.includes(e.keyCode))return;oe(e);let n=([34,33].includes(e.keyCode)?10:1)*a.keyStep.value,r=([34,37,40].includes(e.keyCode)?-1:1)*(a.isReversed.value?-1:1)*(t.vertical?-1:1)*n;d.value=I(a.roundValueFn.value(d.value+r),a.innerMin.value,a.innerMax.value),v()}return()=>{let e=o.getContent(h,a.tabindex,_,e=>{e.push(g())});return l(`div`,{ref:s,class:a.classes.value+(t.modelValue===null?` q-slider--no-value`:``),...a.attributes.value,"aria-valuenow":t.modelValue},e)}}});function U(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(U(e,t))}):e instanceof Map&&e.forEach((e,r)=>{n.set(r,U(e,t))}),Object.assign(n,...Object.keys(e).map(n=>({[n]:U(e[n],t)})))}var at=T({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(t,{slots:r,emit:i}){let{proxy:a}=n(),{$q:o}=a,s=e(null),c=e(``),u=e(``),d=!1,f=C(()=>ae({initialValue:c.value,validate:t.validate,set:p,cancel:m,updatePosition:h},`value`,()=>u.value,e=>{u.value=e}));function p(){t.validate(u.value)&&(g()&&(i(`save`,u.value,c.value),i(`update:modelValue`,u.value)),_())}function m(){g()&&i(`cancel`,u.value,c.value),_()}function h(){x(()=>{s.value.updatePosition()})}function g(){return!O(u.value,c.value)}function _(){d=!0,s.value.hide()}function v(){d=!1,c.value=U(t.modelValue),u.value=U(t.modelValue),i(`beforeShow`)}function y(){i(`show`)}function b(){!d&&g()&&(t.autoSave&&t.validate(u.value)?(i(`save`,u.value,c.value),i(`update:modelValue`,u.value)):i(`cancel`,u.value,c.value)),i(`beforeHide`)}function S(){i(`hide`)}function ee(){let e=r.default===void 0?[]:[r.default(f.value)].flat();return t.title&&e.unshift(l(`div`,{class:`q-dialog__title q-mt-sm q-mb-sm`},t.title)),t.buttons&&e.push(l(`div`,{class:`q-popup-edit__buttons row justify-center no-wrap`},[l(k,{flat:!0,color:t.color,label:t.labelCancel||o.lang.label.cancel,onClick:m}),l(k,{flat:!0,color:t.color,label:t.labelSet||o.lang.label.set,onClick:p})])),e}return Object.assign(a,{set:p,cancel:m,show(e){s.value?.show(e)},hide(e){s.value?.hide(e)},updatePosition:h}),()=>{if(!t.disable)return l(Re,{ref:s,class:`q-popup-edit`,cover:t.cover,onBeforeShow:v,onShow:y,onBeforeHide:b,onHide:S,onEscapeKey:m},ee)}}}),ot={class:`text-h6`},st=[`title`],ct={key:1,class:`row justify-center q-mt-sm`},lt=c({__name:`FolderPickerDialog`,props:{modelValue:{type:Boolean},initialPath:{}},emits:[`update:modelValue`,`select`],setup(n,{emit:r}){let a=n,o=r,c=e(``),l=e(null),p=e([]),m=e(!1),b=e(``);async function x(e){m.value=!0,b.value=``;try{let t=e?`?path=${encodeURIComponent(e)}`:``,n=await fetch(`/api/fs/list-dirs${t}`),r=await n.json();if(!n.ok){b.value=r?.error??`HTTP ${n.status}`;return}c.value=r.path??``,l.value=r.parent??null,p.value=Array.isArray(r.entries)?r.entries:[]}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{m.value=!1}}function ee(){c.value&&(o(`select`,c.value),o(`update:modelValue`,!1))}return u(()=>a.modelValue,e=>{e&&x(a.initialPath||void 0)}),(e,r)=>(s(),y(Oe,{"model-value":n.modelValue,"onUpdate:modelValue":r[1]||=t=>e.$emit(`update:modelValue`,t)},{default:d(()=>[h(ke,{class:`text-grey-3`,style:{"min-width":`480px`,"max-width":`90vw`,background:`#1e1e3a`}},{default:d(()=>[h(Me,{class:`row items-center q-pb-none`},{default:d(()=>[S(`div`,ot,_(e.$t(`folderPicker.title`)),1),h(L),i(h(k,{flat:``,dense:``,round:``,icon:`close`,color:`grey-5`},null,512),[[ze]])]),_:1}),h(Me,null,{default:d(()=>[S(`div`,{class:`text-caption text-grey-6 ellipsis q-mb-sm`,style:{"font-family":`monospace`},title:c.value},_(c.value||`…`),9,st),b.value?(s(),y(B,{key:0,dense:``,class:`bg-red-9 text-white q-mb-sm rounded-borders`},{default:d(()=>[w(_(b.value),1)]),_:1})):v(``,!0),h(R,{bordered:``,separator:``,class:`rounded-borders`,style:{"max-height":`320px`,"overflow-y":`auto`}},{default:d(()=>[l.value?i((s(),y(N,{key:0,clickable:``,onClick:r[0]||=e=>x(l.value)},{default:d(()=>[h(P,{avatar:``},{default:d(()=>[h(E,{name:`arrow_upward`,color:`grey-5`})]),_:1}),h(P,null,{default:d(()=>[w(_(e.$t(`folderPicker.parent`)),1)]),_:1})]),_:1})),[[Ce]]):v(``,!0),(s(!0),f(g,null,t(p.value,e=>i((s(),y(N,{key:e.path,clickable:``,onClick:t=>x(e.path)},{default:d(()=>[h(P,{avatar:``},{default:d(()=>[h(E,{name:`folder`,color:`amber-6`})]),_:1}),h(P,null,{default:d(()=>[w(_(e.name),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[Ce]])),128)),!m.value&&p.value.length===0?(s(),y(N,{key:1},{default:d(()=>[h(P,{class:`text-grey-7`},{default:d(()=>[w(_(e.$t(`folderPicker.empty`)),1)]),_:1})]),_:1})):v(``,!0)]),_:1}),m.value?(s(),f(`div`,ct,[h(le,{size:`20px`,color:`grey-5`})])):v(``,!0)]),_:1}),h(xe,{align:`right`},{default:d(()=>[i(h(k,{flat:``,label:e.$t(`common.cancel`),color:`grey-5`},null,8,[`label`]),[[ze]]),h(k,{flat:``,label:e.$t(`folderPicker.select`),color:`primary`,disable:!c.value||m.value,onClick:ee},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),ut={class:`settings-layout`},dt={class:`settings-nav`},ft={class:`settings-nav__title`},pt={class:`settings-content`},mt={class:`settings-content__header`},ht={class:`settings-content__title`},gt={class:`settings-panels`},_t={class:`settings-global-wrap`},vt={"data-tour":`settings-card-general`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},yt={class:`text-subtitle2 q-mb-sm`},bt={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xt={class:`text-subtitle2 q-mb-sm`},St={class:`text-caption text-grey-7 q-mt-xs`},Ct={"data-tour":`settings-card-skills`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},wt={class:`text-subtitle2 q-mb-sm`},Tt={class:`text-caption text-grey-6 q-mt-xs`},Et={key:0,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dt={class:`text-subtitle2 q-mb-sm`},Ot={class:`text-caption text-grey-6 q-mb-xs q-mt-sm`},kt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},At={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},jt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},Mt={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},Nt={"data-tour":`settings-card-agents`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Pt={class:`text-subtitle2 q-mb-sm`},Ft={class:`text-subtitle2 q-mb-sm q-mt-md`},It={class:`text-subtitle2 q-mb-sm q-mt-md`},Lt={class:`text-caption text-grey-7 q-mb-sm`},Rt={class:`text-subtitle2 q-mb-sm q-mt-md`},zt={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Bt={class:`text-subtitle2 q-mb-sm`},Vt={"data-tour":`settings-card-notifications`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ht={class:`text-subtitle2 q-mb-sm`},Ut={class:`column q-gutter-xs`},Wt={class:`row items-center q-gutter-sm q-mt-sm`},Gt={class:`row items-center q-gutter-sm q-mt-sm`},Kt={class:`text-grey-5 text-caption`,style:{"min-width":`80px`}},qt={class:`text-grey-5 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},Jt={"data-tour":`settings-card-voice`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Yt={class:`row items-center q-mb-sm`},Xt={class:`text-subtitle2`},Zt={class:`column q-gutter-xs`},Qt={class:`row items-center q-gutter-sm`},$t={class:`row items-center q-gutter-sm`},en={class:`q-pa-sm text-caption text-grey-5`},tn={class:`q-mb-sm`},nn={class:`q-mb-sm`},rn={href:`https://github.com/ggml-org/whisper.cpp`,target:`_blank`,rel:`noopener noreferrer`,class:`text-indigo-4`},an={class:`q-mb-xs text-grey-4`},on={class:`q-mb-sm`},sn={class:`q-mb-xs text-grey-4`},cn={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ln={class:`text-subtitle2 q-mb-sm`},un={class:`row q-col-gutter-sm`},dn={class:`col-12 col-sm-6`},fn={class:`col-12 col-sm-6`},pn={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},mn={class:`text-subtitle2 q-mb-sm`},hn={key:0,class:`voice-models-dir row items-center q-gutter-sm q-mb-md`},gn={class:`text-caption text-grey-5 ellipsis-2-lines`,style:{flex:`1`,"min-width":`0`,"word-break":`break-all`}},_n={class:`column q-gutter-sm`},vn={class:`row items-center q-gutter-sm`},yn={class:`text-body2 text-grey-3`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},bn={class:`text-caption text-grey-6`},xn={key:0,class:`q-mt-sm`},Sn={class:`row items-center q-mt-xs`},Cn={class:`text-caption text-grey-6`},wn={class:`text-caption text-indigo-4`},Tn={key:1,class:`text-caption text-grey-7 q-mt-xs ellipsis`,style:{"font-family":`var(--kobo-font-mono, monospace)`,"word-break":`break-all`}},En={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dn={class:`text-subtitle2 q-mb-sm`},On={class:`q-pa-sm column q-gutter-sm`},kn={class:`row items-center q-gutter-sm`},An={class:`text-caption text-grey-5`},jn={class:`text-caption text-grey-5`,style:{"min-width":`40px`,"text-align":`right`}},Mn={class:`text-caption text-grey-7`},Nn={class:`text-caption text-grey-7`},Pn={class:`text-caption text-grey-7`},Fn={class:`text-caption text-grey-7`},In={class:`q-pa-sm column q-gutter-sm`},Ln={key:1,"data-tour":`settings-card-prompts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Rn={class:`row items-center q-mb-sm`},zn={class:`text-subtitle2`},Bn={class:`text-caption text-grey-7 q-mb-sm`},Vn={class:`q-mb-sm`},Hn={class:`row items-center q-mb-sm q-mt-md`},Un={class:`text-subtitle2`},Wn={class:`text-caption text-grey-7 q-mb-sm`},Gn={class:`row items-center q-mb-sm q-mt-md`},Kn={class:`text-subtitle2`},qn={class:`text-caption text-grey-7 q-mb-sm`},Jn={class:`row items-center q-mb-sm q-mt-md`},Yn={class:`text-subtitle2`},Xn={class:`text-caption text-grey-7 q-mb-sm`},Zn={class:`row items-center q-mb-sm q-mt-md`},Qn={class:`text-subtitle2`},$n={class:`text-caption text-grey-7 q-mb-sm`},er={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},tr={class:`text-subtitle2 q-mb-sm`},nr={class:`text-caption text-grey-7 q-mb-sm`},rr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ir={class:`text-subtitle2 q-mb-sm`},ar={class:`text-caption text-grey-7 q-mb-sm`},or={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},sr={class:`text-subtitle2 q-mb-sm`},cr={class:`text-caption text-grey-7 q-mb-sm`},lr={"data-tour":`settings-card-notion`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ur={class:`text-subtitle2 q-mb-sm`},dr={class:`text-caption text-grey-7 q-mb-sm`},fr={class:`q-mb-sm`},pr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},mr={class:`q-mb-sm`},hr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},gr={key:2,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},_r={class:`text-subtitle2 q-mb-sm`},vr={class:`text-caption text-grey-7 q-mb-sm`},yr={class:`q-mb-sm`},br={class:`field-label-sub text-caption q-mb-xs text-grey-7`},xr={class:`q-mb-sm`},Sr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},Cr={class:`row items-center q-mb-sm`},wr={class:`text-subtitle2`},Tr={class:`text-caption text-grey-7 q-mb-xs`},Er={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Dr={class:`text-subtitle2 q-mb-sm`},Or={class:`text-caption text-grey-7 q-mb-sm`},kr={class:`q-mb-sm`},Ar={class:`field-label-sub text-caption q-mb-xs text-grey-7`},jr={class:`q-mb-sm`},Mr={class:`row items-center q-mb-xs`},Nr={class:`field-label-sub text-caption text-grey-7 col`},Pr=[`src`,`alt`],Fr={key:1,class:`text-caption text-grey-7 q-py-sm`},Ir={key:0,class:`text-caption text-orange-5 q-mb-xs`},Lr={key:3,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Rr={class:`text-subtitle2 q-mb-sm`},zr={class:`row items-center q-mb-sm`},Br={class:`text-subtitle2`},Vr={class:`text-caption text-grey-7 q-mb-xs`},Hr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ur={class:`text-subtitle2 q-mb-sm`},Wr={class:`text-caption text-grey-7 q-mb-sm`},Gr={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Kr={class:`text-subtitle2 q-mb-sm`},qr={class:`text-caption text-grey-7 q-mb-sm`},Jr={class:`row items-center no-wrap`},Yr={key:1,class:`text-caption text-grey-7 q-mb-sm`},Xr={class:`row items-center q-gutter-sm`},Zr={"data-tour":`settings-card-scripts`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Qr={class:`text-subtitle2 q-mb-sm`},$r={class:`text-caption text-grey-7 q-mb-sm`},ei={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ti={class:`text-subtitle2 q-mb-sm`},ni={class:`text-caption text-grey-7 q-mb-sm`},ri={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ii={class:`text-subtitle2 q-mb-sm`},ai={class:`text-caption text-grey-7 q-mb-sm`},oi={class:`text-caption text-grey-6 q-mt-md q-mb-xs`},si={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ci={class:`text-subtitle2 q-mb-sm`},li={class:`text-caption text-grey-7 q-mb-sm`},ui={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},di={class:`row items-center justify-between q-mb-sm`},fi={class:`text-subtitle2`},pi={class:`text-caption text-grey-7 q-mb-xs`},mi={class:`text-caption text-grey-6 mono-guide q-mb-sm`},hi={"data-tour":`settings-card-worktrees`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},gi={class:`text-subtitle2 q-mb-sm`},_i={class:`text-caption text-grey-7 q-mb-sm`},vi={class:`text-caption text-grey-7 q-mt-xs`},yi={"data-tour":`settings-card-worktrees-purge`},bi={class:`text-caption text-grey-7 q-mt-xs`},xi={class:`q-pa-sm text-caption text-grey-5`,style:{"line-height":`1.55`}},Si={class:`text-weight-medium text-grey-3 q-mb-xs`},Ci={class:`q-mb-xs`},wi={class:`purge-docs-code`},Ti={class:`text-grey-7 q-mb-md`},Ei={class:`text-weight-medium text-grey-3 q-mb-xs`},Di={class:`q-mb-xs`},Oi={class:`q-pl-md q-my-xs`},ki={class:`purge-docs-code`},Ai={class:`text-grey-7 q-mb-md`},ji={class:`text-weight-medium text-grey-3 q-mb-xs`},Mi={class:`q-mb-xs`},Ni={class:`q-mb-xs text-grey-6`},Pi={class:`purge-docs-code`},Fi={class:`q-mb-xs text-grey-6`},Ii={class:`purge-docs-code`},Li={class:`text-grey-7`},Ri={"data-tour":`settings-card-export`,class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},zi={class:`text-subtitle2 q-mb-sm`},Bi={class:`text-caption text-grey-7 q-mb-sm`},Vi={class:`row q-gutter-sm`},Hi={class:`row justify-end settings-sticky-actions`},Ui={class:`q-pa-none`},Wi={class:`row q-gutter-md`,style:{"min-height":`500px`}},Gi={class:`project-list-col`},Ki={class:`settings-card rounded-borders`,style:{height:`100%`}},qi={class:`q-pa-sm`},Ji={class:`text-caption text-uppercase text-weight-bold q-px-sm q-py-xs text-grey-6`,style:{"letter-spacing":`0.05em`}},Yi={key:0,class:`q-pa-md text-center text-caption text-grey-8`},Xi={class:`q-pa-sm`},Zi={class:`project-form-col`},Qi={class:`settings-card rounded-borders q-pa-lg`,style:{height:`100%`}},$i={class:`row items-center q-mb-md`},ea={class:`text-subtitle1 text-weight-medium text-grey-3`},ta={key:0,class:`q-mb-md`},na={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ra={class:`text-caption text-grey-7 q-mt-xs`},ia={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},aa={class:`text-subtitle2 q-mb-md`},oa={class:`q-mb-md`},sa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ca={class:`q-mb-md`},la={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ua={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},da={class:`row items-center q-gutter-xs`},fa={class:`text-caption text-grey-6 q-mt-xs`},pa={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ma={class:`text-subtitle2 q-mb-md`},ha={class:`q-mb-md`},ga={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},_a={class:`q-mb-md`},va={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ya={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ba={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},xa={class:`text-subtitle2 q-mb-md`},Sa={class:`q-mb-md`},Ca={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},wa={class:`text-caption text-grey-7 q-mb-xs`},Ta={class:`q-mb-md`},Ea={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Da={class:`text-caption text-grey-7 q-mb-xs`},Oa={class:`q-mb-md`},ka={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Aa={class:`text-caption text-grey-7 q-mb-xs`},ja={class:`q-mb-md`},Ma={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Na={class:`text-caption text-grey-7 q-mb-xs`},Pa={class:`q-mb-md`},Fa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Ia={class:`text-caption text-grey-7 q-mb-xs`},La={class:`q-mb-md`},Ra={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},za={class:`text-caption text-grey-7 q-mb-xs`},Ba={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Va={class:`text-caption text-grey-7 q-mt-xs`},Ha={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},Ua={class:`text-subtitle2 q-mb-md`},Wa={class:`q-mb-md`},Ga={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Ka={class:`text-caption text-grey-7 q-mb-xs`},qa={class:`text-caption text-grey-7 q-mt-xs`},Ja={class:`q-mb-md`},Ya={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Xa={class:`text-caption text-grey-7 q-mb-xs`},Za={class:`field-label-sub text-caption q-mt-sm q-mb-xs text-grey-7`},Qa={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},$a={class:`text-caption text-grey-7 q-mb-xs`},eo={class:`row items-center justify-between q-mb-xs`},to={class:`field-label text-body2 text-weight-medium text-grey-6`},no={class:`text-caption text-grey-7 q-mb-xs`},ro={class:`text-caption text-grey-6 mono-guide q-mb-sm`},io={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},ao={class:`text-subtitle2 q-mb-md`},oo={class:`q-mb-md`},so={class:`field-label-sub text-caption q-mb-xs text-grey-7`},co={class:`field-label-sub text-caption q-mb-xs text-grey-7`},lo={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},uo={class:`text-subtitle2 q-mb-xs`},fo={class:`text-caption text-grey-7 q-mb-sm`},po={class:`settings-subcard q-pa-md rounded-borders q-pb-sm q-mb-md`},mo={class:`text-subtitle2 q-mb-xs`},ho={class:`text-caption text-grey-7 q-mb-sm`},go={class:`row items-center q-gutter-sm settings-sticky-actions`},_o={key:1,class:`column items-center justify-center`,style:{height:`100%`,"min-height":`300px`}},vo={class:`text-body2 text-grey-8`},yo={class:`q-pa-none`},bo={"data-tour":`settings-card-templates`,class:`settings-card rounded-borders q-pa-lg`},xo={class:`row items-center justify-between q-mb-md`},So={class:`text-subtitle1 text-weight-medium text-grey-3`},Co={class:`row q-gutter-sm items-center`},wo={key:0,class:`text-grey-6 q-py-lg text-center`},To={key:1,class:`column q-gutter-sm`},Eo={class:`row items-start justify-between no-wrap`},Do={class:`col`},Oo={class:`text-body1 text-weight-medium`,style:{"font-family":`'Roboto Mono', monospace`}},ko={class:`text-caption text-grey-5 q-mt-xs`},Ao={class:`row no-wrap q-gutter-xs`},jo={class:`text-caption text-grey-7 q-mt-lg`,style:{"font-family":`'Roboto Mono', monospace`}},Mo={key:0,class:`settings-savebar`},No={class:`settings-savebar__label`},Po={class:`text-subtitle1`},Fo={class:`q-pl-md q-pt-xs`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,columns:`2`,"column-gap":`24px`}},Io={key:0,class:`text-negative text-caption`},Lo=Ie(c({__name:`SettingsPage`,setup(n){let o=Be(),c=be(),l=Ae(),{t:x,locale:ae}=we(),{startTour:oe}=qe(),T=e(`general`),se=C(()=>[{value:`general`,icon:`tune`,label:x(`settings.nav.general`)},{value:`agents`,icon:`smart_toy`,label:x(`settings.nav.agents`)},{value:`skills`,icon:`extension`,label:x(`settings.nav.skills`)},{value:`prompts`,icon:`text_snippet`,label:x(`settings.nav.prompts`)},{value:`scripts`,icon:`terminal`,label:x(`settings.nav.scripts`)},{value:`notion`,icon:`integration_instructions`,label:x(`settings.nav.notion`)},{value:`sentry`,icon:`bug_report`,label:x(`settings.nav.sentry`)},{value:`voice`,icon:`mic`,label:x(`settings.nav.voice`)},{value:`notifications`,icon:`notifications`,label:x(`settings.nav.notifications`)},{value:`worktrees`,icon:`account_tree`,label:x(`settings.nav.worktrees`)},{value:`projects`,icon:`folder`,label:x(`settings.projects`)},{value:`templates`,icon:`description`,label:x(`templates.title`)},{value:`export`,icon:`import_export`,label:x(`settings.nav.export`)}]),ce=C(()=>se.value.find(e=>e.value===T.value)?.label??``),le=C(()=>[`general`,`agents`,`skills`,`prompts`,`scripts`,`notion`,`sentry`,`voice`,`notifications`,`worktrees`,`export`].includes(T.value)),ue=e(`auto`),de=e(`auto`),pe=e(``),D=e(``),O=e(``),Te=e(``),A=e(``),Ee=e(``),I=e(``),Fe=e(``),Ie=e(!1),Re=e(!0),B=e(!0),Qe=e(ge),V=e(1),$e=e(``),et=e(``),tt=e(``),H=e(``),nt=e([]),rt=e(!1),U=e(``),ot=C(()=>nt.value.map(e=>({label:`${e.name} — ${e.email}`,value:e.id,name:e.name,email:e.email,avatarUrl:e.avatarUrl})));async function st(e=!1){if(!rt.value&&!(!e&&nt.value.length>0)){rt.value=!0,U.value=``;try{let e=await fetch(`/api/notion/users`),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);nt.value=Array.isArray(t.users)?t.users:[]}catch(e){U.value=e instanceof Error?e.message:String(e),nt.value=[]}finally{rt.value=!1}}}let ct=e(``),Lo=e(``),W=e(null),Ro=e(`bypass`),zo=e(`bypass`),Bo=e(``),Vo=e(``),Ho=e([]),G=e([]),Uo=e(``),Wo=e(``),Go=e(``),Ko=e(`no-tasks`),qo=e(!1),Jo=e(``),Yo=e(``),Xo=e(``),Zo=e(!1);function Qo(e){X.value.path=e}let $o=C(()=>[{label:x(`settings.cleanupScriptMode.inherit`),value:``},{label:x(`settings.cleanupScriptMode.idle`),value:`idle`},{label:x(`settings.cleanupScriptMode.noTasks`),value:`no-tasks`}]),es=e(he),ts=e(null),ns=e(!0);function rs(e){let t=e.trim().replace(/^\/+|\/+$/g,``);return t.length===0||t.length>50||!/^[A-Za-z0-9._/-]+$/.test(t)||t.includes(`..`)?``:t}function is(){let e=rs(Uo.value);!e||G.value.includes(e)||(G.value.push(e),Uo.value=``)}function as(e){G.value.splice(e,1)}function os(e,t){let n=rs(t);if(!n)return;let r=G.value.indexOf(n);r!==-1&&r!==e||(G.value[e]=n)}function ss(e,t){let n=e+t;if(n<0||n>=G.value.length)return;let r=G.value;[r[e],r[n]]=[r[n],r[e]]}let cs=e(!1),K=e(`superpowers`),ls=C(()=>{switch(K.value){case`gstack`:return`settings.skillSuite.gstackHint`;case`superpowers+gstack`:return`settings.skillSuite.superpowersGstackHint`;case`custom`:return`settings.skillSuite.customHint`;default:return`settings.skillSuite.superpowersHint`}}),us=e(``),ds=e(``),fs=e(``),ps=e(``),ms=e(``),hs=e(!1),gs=e(`alt`),_s=e(`auto`),q=e(null),vs=e(``),ys=e(``),bs=e(0),xs=e(``),Ss=e(!1),Cs=e(!0),ws=e(null),Ts=e(!1);function Es(){o.dialog({title:x(`settings.skillSuite.reloadDefaults`),message:x(`settings.skillSuite.reloadDefaultsConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{us.value=We,ds.value=Ge,fs.value=Ue,ps.value=Ve,ms.value=He})}function Ds(e){let t=e===`global`?Yo.value:X.value.changeSourceBranchScript,n=()=>{e===`global`?Yo.value=Xo.value:X.value.changeSourceBranchScript=Xo.value};if(!t.trim()||t===Xo.value){n();return}o.dialog({title:x(`settings.changeSourceBranchScript.replaceConfirmTitle`),message:x(`settings.changeSourceBranchScript.replaceConfirm`),cancel:!0,persistent:!0,dark:!0}).onOk(n)}function Os(e){return!e||e===`tiny`||e===`base`?.1:.2}let ks=[e=>e.trim().length>0||x(`settings.worktreesPathRequired`)],As=e(!1),J=e(-1),Y=e(!1),X=e({path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}}),js=[`defaultModel`,`forge`,`prPromptTemplate`,`reviewPromptTemplate`,`ciFixPromptTemplate`,`notionInitialPromptTemplate`,`sentryInitialPromptTemplate`,`gitConventions`,`setupScript`,`taskPromptTemplate`,`cleanupScript`,`cleanupScriptMode`,`archiveScript`,`changeSourceBranchScript`,`devServer`,`e2e`,`finalization`],Ms=e(null),Ns=e(null),Ps=C(()=>c.projects.map(e=>({value:e.path,label:Zc(e)||e.path})));function Fs(e){let t=c.projects.find(t=>t.path===e);t&&(X.value.defaultModel=t.defaultModel??``,X.value.forge=t.forge??`auto`,X.value.prPromptTemplate=t.prPromptTemplate??``,X.value.reviewPromptTemplate=t.reviewPromptTemplate??``,X.value.ciFixPromptTemplate=t.ciFixPromptTemplate??``,X.value.notionInitialPromptTemplate=t.notionInitialPromptTemplate??``,X.value.sentryInitialPromptTemplate=t.sentryInitialPromptTemplate??``,X.value.gitConventions=t.gitConventions??``,X.value.setupScript=t.setupScript??``,X.value.devServer={startCommand:t.devServer?.startCommand??``,stopCommand:t.devServer?.stopCommand??``},X.value.e2e={framework:t.e2e?.framework??``,skill:t.e2e?.skill??``,prompt:t.e2e?.prompt??``},X.value.finalization={prompt:t.finalization?.prompt??``})}function Is(){let e={defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}};return js.every(t=>JSON.stringify(X.value[t])===JSON.stringify(e[t]))}function Ls(e){if(e===null){Ms.value=null,Ns.value=null;return}if(Ns.value===null&&Is()){Fs(e),Ms.value=e,Ns.value=e;return}let t=c.projects.find(t=>t.path===e),n=t&&Zc(t)||e;o.dialog({title:x(`settings.copyFromConfirmTitle`),message:x(`settings.copyFromConfirm`,{project:n}),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{Fs(e),Ms.value=e,Ns.value=e}).onCancel(()=>{Ms.value=Ns.value})}let Rs=e([]),zs=e([]);async function Bs(){try{let e=await fetch(`/api/skills`);e.ok&&(Rs.value=await e.json())}catch{}}function Vs(e,t){t(()=>{let t=e.trim().toLowerCase();zs.value=t?Rs.value.filter(e=>e.toLowerCase().includes(t)):Rs.value.slice()})}let Hs=e([]),Us=e(!1),Ws=e(!1),Gs=e(!1),Ks=e(!1),Z=e(null),qs=e(``),Js=e(``),Ys=e(``),Q=e(``),Xs=e(!1),Zs=e(!1),Qs=C(()=>[...l.templates].sort((e,t)=>e.slug.localeCompare(t.slug))),$s=[`{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 ec(){Z.value=null,qs.value=``,Js.value=``,Ys.value=``,Q.value=``,Ks.value=!0}function tc(e){Z.value=e.slug,qs.value=e.slug,Js.value=e.description,Ys.value=e.content,Q.value=``,Ks.value=!0}async function nc(){Q.value=``;let e=qs.value.trim(),t=Js.value.trim();if(Z.value===null&&!/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)){Q.value=x(`templates.slugInvalid`);return}if(!t){Q.value=x(`templates.descriptionRequired`);return}if(!Ys.value.trim()){Q.value=x(`templates.contentRequired`);return}Xs.value=!0;try{Z.value===null?await l.createTemplate({slug:e,description:t,content:Ys.value}):await l.updateTemplate(Z.value,{description:t,content:Ys.value}),Ks.value=!1}catch(e){Q.value=e instanceof Error?e.message:x(`templates.createFailed`)}finally{Xs.value=!1}}function rc(){o.dialog({title:x(`templates.reloadDefaults`),message:x(`templates.reloadDefaultsConfirmMessage`),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.reloadDefaults`),color:`primary`}}).onOk(async()=>{Zs.value=!0;try{let e=await l.reloadDefaults();o.notify({type:`positive`,message:x(`templates.reloadDefaultsSuccess`,{added:e.added.length,kept:e.kept.length}),position:`top`,timeout:4e3})}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.reloadDefaultsFailed`),position:`top`})}finally{Zs.value=!1}})}async function ic(e){o.dialog({title:x(`templates.deleteTemplate`),message:`${x(`templates.deleteConfirm`,{slug:e.slug})}\n\n${x(`templates.deleteConfirmMessage`)}`,dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.deleteTemplate`),color:`red-5`}}).onOk(async()=>{try{await l.deleteTemplate(e.slug)}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.deleteFailed`),position:`top`})}})}function ac(e){o.dialog({title:x(`templates.resetConfirmTitle`),message:x(`templates.resetConfirmMessage`,{slug:e.slug}),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`templates.resetToDefault`),color:`primary`}}).onOk(async()=>{try{await l.resetToDefault(e.slug),o.notify({type:`positive`,message:x(`templates.resetSuccess`,{slug:e.slug}),position:`top`})}catch(e){o.notify({type:`negative`,message:e instanceof Error?e.message:x(`templates.resetFailed`),position:`top`})}})}let oc=[{label:`English`,value:`en`},{label:`Français`,value:`fr`},{label:`Deutsch`,value:`de`},{label:`Español`,value:`es`},{label:`Italiano`,value:`it`}];function sc(e){ae.value=e,localStorage.setItem(`kobo:locale`,e)}let cc=C(()=>[...Xe.map(e=>({label:x(e.i18nLabelKey),value:e.value}))]),lc=C(()=>[...Ye.map(e=>({label:x(e.i18nLabelKey),value:e.value}))]),uc=C(()=>[{label:x(`settings.useGlobal`),value:``},...cc.value]),dc=C(()=>[{label:x(`settings.forge.auto`),value:`auto`},{label:x(`settings.forge.github`),value:`github`},{label:x(`settings.forge.gitlab`),value:`gitlab`},{label:x(`settings.forge.none`),value:`none`}]),fc=C(()=>Ze[`claude-code`].map(e=>({label:x(`agentPermissionMode.${e}`),value:e}))),pc=C(()=>Ze.codex.map(e=>({label:x(`agentPermissionMode.${e}`),value:e}))),mc=C(()=>[{name:`{{pr_number}}`,description:x(`settings.var.prNumber`)},{name:`{{pr_url}}`,description:x(`settings.var.prUrl`)},{name:`{{branch_name}}`,description:x(`settings.var.branchName`)},{name:`{{source_branch}}`,description:x(`settings.var.sourceBranch`)},{name:`{{workspace_name}}`,description:x(`settings.var.workspaceName`)},{name:`{{project_name}}`,description:x(`settings.var.projectName`)},{name:`{{notion_url}}`,description:x(`settings.var.notionUrl`)},{name:`{{commits}}`,description:x(`settings.var.commits`)},{name:`{{diff_stats}}`,description:x(`settings.var.diffStats`)},{name:`{{tasks}}`,description:x(`settings.var.tasks`)},{name:`{{acceptance_criteria}}`,description:x(`settings.var.acceptanceCriteria`)}]),hc=C(()=>[{label:x(`settings.mcpAutoSelect`),value:``},...c.activeMcpServers.map(e=>({label:e.key,value:e.key}))]),gc=C(()=>me.map(e=>({label:x(e.labelKey),value:e.id}))),_c=C(()=>[{label:x(`voice.noneModel`),value:null}].concat(c.voiceModels.map(e=>({label:e.installed?`${e.name}`:`${e.name} (${x(`voice.notInstalled`)})`,value:e.name})))),vc=[{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 yc(){ve(Qe.value,V.value)}let $=C(()=>J.value<0||J.value>=c.projects.length?null:c.projects[J.value]??null),bc=e(``),xc=e(``);function Sc(){return JSON.stringify({claudeModel:ue.value,codexModel:de.value,prPrompt:pe.value,reviewPrompt:D.value,ciFixPrompt:O.value,finalizationPrompt:Te.value,gitConventions:A.value,editorCommand:Ee.value,fileManagerCommand:I.value,terminalCommand:Fe.value,autoPurgeOnPrMerged:Ie.value,browserNotifications:Re.value,audioNotifications:B.value,audioNotificationSound:Qe.value,audioNotificationVolume:V.value,notionStatusProperty:$e.value,notionStatus:et.value,notionAssigneeProperty:tt.value,notionUserId:H.value,notionInitialPrompt:ct.value,sentryInitialPrompt:Lo.value,claudePermissionMode:Ro.value,codexPermissionMode:zo.value,notionMcpKey:Bo.value,sentryMcpKey:Vo.value,tags:Ho.value,branchPrefixes:G.value,setupScript:Wo.value,cleanupScript:Go.value,cleanupScriptMode:Ko.value,cleanupScriptOnlyOnChanges:qo.value,archiveScript:Jo.value,changeSourceBranchScript:Yo.value,worktreesPath:es.value,worktreesPrefixByProject:ns.value,flattenWorkspaceList:cs.value,skillSuite:K.value,customReviewTemplate:us.value,customAutoLoopReviewGate:ds.value,customAutoLoopGroomingIntro:fs.value,customQaPromptTemplate:ps.value,customBrainstormingInstruction:ms.value,voiceEnabled:hs.value,voicePttKey:gs.value,voiceLanguage:_s.value,voiceModel:q.value,voiceCommandPath:vs.value,voiceFfmpegPath:ys.value,voiceTemperature:bs.value,voicePrompt:xs.value,voiceTranslateToEnglish:Ss.value,voiceSuppressNst:Cs.value})}function Cc(){return JSON.stringify(X.value)}let wc=C(()=>Sc()!==bc.value),Tc=C(()=>Cc()!==xc.value),Ec=C(()=>T.value===`projects`?Tc.value&&($.value!==null||Y.value):T.value===`templates`?!1:wc.value),Dc=C(()=>T.value===`projects`?Ws.value:Xs.value);function Oc(){T.value===`projects`?qc():Rc()}function kc(){Ts.value=!0;let e=c.global.defaultModelByEngine??{};ue.value=e[`claude-code`]??`auto`,de.value=e.codex??`auto`,pe.value=c.global.prPromptTemplate,D.value=c.global.reviewPromptTemplate??``,O.value=c.global.ciFixPromptTemplate??``,Te.value=c.global.finalizationPrompt??``,A.value=c.global.gitConventions,Ee.value=c.global.editorCommand??``,I.value=c.global.fileManagerCommand??``,Fe.value=c.global.terminalCommand??``,Ie.value=c.global.autoPurgeOnPrMerged??!1,Re.value=c.global.browserNotifications??!0,B.value=c.global.audioNotifications??!0,Qe.value=ye(c.global.audioNotificationSound);let t=c.global.audioNotificationVolume;V.value=typeof t==`number`&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):1,$e.value=c.global.notionStatusProperty??``,et.value=c.global.notionInProgressStatus??``,tt.value=c.global.notionAssigneeProperty??``,H.value=c.global.notionUserId??``,ct.value=c.global.notionInitialPromptTemplate??``,Lo.value=c.global.sentryInitialPromptTemplate??``;{let e=c.global.defaultPermissionModeByEngine??{},t=e=>e===`plan`||e===`bypass`||e===`strict`||e===`interactive`,n=e[`claude-code`];Ro.value=t(n)?n:`bypass`;let r=e.codex;zo.value=t(r)?r:`bypass`}Bo.value=c.global.notionMcpKey??``,Vo.value=c.global.sentryMcpKey??``,Ho.value=Array.isArray(c.global.tags)?[...c.global.tags]:[],G.value=Array.isArray(c.global.branchPrefixes)?[...c.global.branchPrefixes]:[],Wo.value=c.global.setupScript??``,Go.value=c.global.cleanupScript??``,Ko.value=c.global.cleanupScriptMode===`idle`?`idle`:`no-tasks`,qo.value=c.global.cleanupScriptOnlyOnChanges??!1,Jo.value=c.global.archiveScript??``,Yo.value=c.global.changeSourceBranchScript??``,es.value=c.global.worktreesPath??`.worktrees`,ns.value=c.global.worktreesPrefixByProject??!1,cs.value=c.global.flattenWorkspaceList??!1,K.value=c.global.skillSuite??`superpowers`,us.value=c.global.customReviewTemplate??``,ds.value=c.global.customAutoLoopReviewGate??``,fs.value=c.global.customAutoLoopGroomingIntro??``,ps.value=c.global.customQaPromptTemplate??``,ms.value=c.global.customBrainstormingInstruction??``,hs.value=c.global.voiceEnabled??!1,gs.value=c.global.voicePttKey===`ctrl+space`?`ctrl+space`:`alt`,_s.value=c.global.voiceLanguage??`auto`,q.value=c.global.voiceModel??null,vs.value=c.global.voiceCommandPath??``,ys.value=c.global.voiceFfmpegPath??``,bs.value=typeof c.global.voiceTemperature==`number`?c.global.voiceTemperature:0,xs.value=c.global.voicePrompt??``,Ss.value=c.global.voiceTranslateToEnglish??!1,Cs.value=c.global.voiceSuppressNonSpeechTokens??!0,Ts.value=!1,bc.value=Sc()}u(()=>q.value,(e,t)=>{Ts.value||e!==t&&(bs.value=Os(e))});function Ac(e){if(!e){X.value={path:``,displayName:``,color:null,defaultSourceBranch:``,defaultModel:``,forge:`auto`,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,taskPromptTemplate:``,cleanupScript:``,cleanupScriptMode:``,archiveScript:``,changeSourceBranchScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}},Hs.value=[],xc.value=Cc();return}X.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??``,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??``}},xc.value=Cc(),e.path&&jc(e.path)}async function jc(e){if(!e.trim()){Hs.value=[];return}Us.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();Hs.value=n.local??n.branches??[]}catch{Hs.value=[]}finally{Us.value=!1}}let Mc=null;u(()=>X.value.path,e=>{Mc&&clearTimeout(Mc),Mc=setTimeout(()=>{jc(e)},500)}),u(J,()=>{Y.value=!1,Ac($.value)});let Nc=e(null);async function Pc(){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),o.notify({type:`positive`,message:x(`settings.exportSuccess`),position:`top`,timeout:3e3})}catch(e){o.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}function Fc(){Nc.value?.click()}async function Ic(e){let t=e.target,n=t.files?.[0];if(n)try{o.dialog({title:x(`settings.importConfirmTitle`),message:x(`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 c.fetchSettings(),kc(),o.notify({type:`positive`,message:x(`settings.importSuccess`),position:`top`,timeout:3e3})}catch(e){o.notify({type:`negative`,message:String(e),position:`top`,timeout:5e3})}})}finally{t.value=``}}async function Lc(e){if(W.value===null){W.value=e;try{let t=await c.fetchGlobalDefaults(),n={prPromptTemplate:pe,reviewPromptTemplate:D,ciFixPromptTemplate:O,finalizationPrompt:Te,gitConventions:A,notionInitialPromptTemplate:ct,sentryInitialPromptTemplate:Lo};n[e].value=t[e]}catch(e){console.error(`[SettingsPage] resetFieldToDefault failed:`,e),o.notify({type:`negative`,message:x(`settings.resetFailed`),position:`top`})}finally{W.value=null}}}async function Rc(){if(await ts.value?.validate()!==!1){As.value=!0;try{await c.updateGlobal({defaultModelByEngine:{"claude-code":ue.value,codex:de.value},prPromptTemplate:pe.value,reviewPromptTemplate:D.value,ciFixPromptTemplate:O.value,finalizationPrompt:Te.value,gitConventions:A.value,editorCommand:Ee.value,fileManagerCommand:I.value,terminalCommand:Fe.value,autoPurgeOnPrMerged:Ie.value,browserNotifications:Re.value,audioNotifications:B.value,audioNotificationSound:Qe.value,audioNotificationVolume:V.value,notionStatusProperty:$e.value,notionInProgressStatus:et.value,notionAssigneeProperty:tt.value,notionUserId:H.value,notionInitialPromptTemplate:ct.value,sentryInitialPromptTemplate:Lo.value,defaultPermissionModeByEngine:{"claude-code":Ro.value,codex:zo.value},notionMcpKey:Bo.value,sentryMcpKey:Vo.value,tags:Ho.value,branchPrefixes:G.value,setupScript:Wo.value,cleanupScript:Go.value,cleanupScriptMode:Ko.value,cleanupScriptOnlyOnChanges:qo.value,archiveScript:Jo.value,changeSourceBranchScript:Yo.value,worktreesPath:es.value,worktreesPrefixByProject:ns.value,flattenWorkspaceList:cs.value,skillSuite:K.value,customReviewTemplate:us.value,customAutoLoopReviewGate:ds.value,customAutoLoopGroomingIntro:fs.value,customQaPromptTemplate:ps.value,customBrainstormingInstruction:ms.value,voiceEnabled:hs.value,voicePttKey:gs.value,voiceLanguage:_s.value,voiceModel:q.value,voiceCommandPath:vs.value.trim(),voiceFfmpegPath:ys.value.trim(),voiceTemperature:bs.value,voicePrompt:xs.value,voiceTranslateToEnglish:Ss.value,voiceSuppressNonSpeechTokens:Cs.value}),bc.value=Sc(),o.notify({type:`positive`,message:x(`settings.saved`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.saveError`),position:`top`})}finally{As.value=!1}}}async function zc(e){ws.value=e,Wc();try{await c.downloadVoiceModel(e)}catch{o.notify({type:`negative`,message:x(`voice.downloadFailed`),position:`top`})}finally{ws.value=null,Gc()}}async function Bc(e){ws.value=e;try{await c.deleteVoiceModel(e),q.value===e&&(q.value=null)}catch{o.notify({type:`negative`,message:x(`voice.deleteFailed`),position:`top`})}finally{ws.value=null}}async function Vc(e){try{await c.cancelVoiceModelDownload(e)}catch{o.notify({type:`negative`,message:x(`voice.cancelFailed`),position:`top`})}}function Hc(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 Uc=null;function Wc(){Uc||=setInterval(()=>{c.fetchVoiceModels().catch(()=>{})},800)}function Gc(){Uc&&=(clearInterval(Uc),null)}async function Kc(e){try{await navigator.clipboard.writeText(e),o.notify({type:`positive`,message:x(`common.copied`),position:`top`,timeout:1200})}catch{o.notify({type:`negative`,message:x(`common.copyFailed`),position:`top`})}}async function qc(){if(!X.value.path.trim()){o.notify({type:`negative`,message:x(`settings.projectPathRequired`),position:`top`});return}Ws.value=!0;try{await c.upsertProject(X.value.path.trim(),{displayName:X.value.displayName,color:X.value.color,defaultSourceBranch:X.value.defaultSourceBranch,defaultModel:X.value.defaultModel,forge:X.value.forge,prPromptTemplate:X.value.prPromptTemplate,reviewPromptTemplate:X.value.reviewPromptTemplate,ciFixPromptTemplate:X.value.ciFixPromptTemplate,notionInitialPromptTemplate:X.value.notionInitialPromptTemplate,sentryInitialPromptTemplate:X.value.sentryInitialPromptTemplate,gitConventions:X.value.gitConventions,setupScript:X.value.setupScript,taskPromptTemplate:X.value.taskPromptTemplate,cleanupScript:X.value.cleanupScript,cleanupScriptMode:X.value.cleanupScriptMode,archiveScript:X.value.archiveScript,changeSourceBranchScript:X.value.changeSourceBranchScript,devServer:X.value.devServer,e2e:X.value.e2e,finalization:X.value.finalization}),Y.value=!1;let e=c.projects.findIndex(e=>e.path===X.value.path.trim());e>=0&&(J.value=e),xc.value=Cc(),o.notify({type:`positive`,message:x(`settings.projectSaved`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.projectSaveError`),position:`top`})}finally{Ws.value=!1}}function Jc(){if(!$.value)return;let e=$.value.displayName||$.value.path;o.dialog({title:x(`settings.deleteProjectConfirmTitle`),message:x(`settings.deleteProjectConfirmMessage`,{name:e}),dark:!0,cancel:{flat:!0,label:x(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:x(`common.delete`),color:`red-5`}}).onOk(async()=>{if($.value){Gs.value=!0;try{await c.deleteProject($.value.path),J.value=-1,Y.value=!1,Ac(null),o.notify({type:`positive`,message:x(`settings.projectDeleted`),position:`top`})}catch{o.notify({type:`negative`,message:x(`settings.projectDeleteError`),position:`top`})}finally{Gs.value=!1}}})}function Yc(){J.value=-1,Y.value=!0,Ac(null),Ms.value=null,Ns.value=null}function Xc(e){Y.value=!1,J.value=e,Ms.value=null,Ns.value=null}function Zc(e){if(e.displayName)return e.displayName;let t=e.path.split(`/`);return t[t.length-1]??e.path}let Qc=e([]);function $c(e,t){t(()=>{Qc.value=e?Hs.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):Hs.value})}return r(async()=>{await Promise.all([c.fetchSettings(),c.fetchActiveMcpServers(),Bs()]);try{Xo.value=(await c.fetchGlobalDefaults()).changeSourceBranchScript??``}catch(e){console.error(`[SettingsPage] fetchGlobalDefaults failed:`,e)}await c.fetchVoiceModels(),await c.fetchVoiceRuntime(),kc(),st().catch(()=>{})}),a(()=>{Mc&&clearTimeout(Mc),Gc()}),(e,n)=>(s(),y(Je,{class:`settings-page`},{default:d(()=>[S(`div`,ut,[S(`aside`,dt,[S(`div`,ft,_(e.$t(`settings.title`)),1),h(R,{dense:``,class:`settings-nav__list`},{default:d(()=>[(s(!0),f(g,null,t(se.value,e=>i((s(),y(N,{key:e.value,clickable:``,"data-tour":`settings-nav-${e.value}`,class:m([`settings-nav__item`,{"settings-nav__item--active":T.value===e.value}]),onClick:t=>T.value=e.value},{default:d(()=>[h(P,{avatar:``,class:`settings-nav__icon`},{default:d(()=>[h(E,{name:e.icon,size:`16px`},null,8,[`name`])]),_:2},1024),h(P,{class:`settings-nav__label`},{default:d(()=>[w(_(e.label),1)]),_:2},1024)]),_:2},1032,[`data-tour`,`class`,`onClick`])),[[Ce,!1]])),128))]),_:1})]),S(`main`,pt,[S(`header`,mt,[S(`h2`,ht,_(ce.value),1)]),S(`div`,gt,[i(S(`div`,_t,[i(S(`div`,vt,[S(`div`,yt,_(e.$t(`settings.language`)),1),h(z,{"model-value":b(ae),options:oc,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`,"onUpdate:modelValue":sc},null,8,[`model-value`])],512),[[p,T.value===`general`]]),i(S(`div`,bt,[S(`div`,xt,_(e.$t(`settings.workspaceListSection`)),1),h(M,{modelValue:cs.value,"onUpdate:modelValue":n[0]||=e=>cs.value=e,label:e.$t(`settings.flattenWorkspaceList`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),S(`div`,St,_(e.$t(`settings.flattenWorkspaceListHint`)),1)],512),[[p,T.value===`general`]]),i(S(`div`,Ct,[S(`div`,wt,_(e.$t(`settings.skillSuite.section`)),1),h(je,{modelValue:K.value,"onUpdate:modelValue":n[1]||=e=>K.value=e,options:[{label:e.$t(`settings.skillSuite.superpowers`),value:`superpowers`},{label:e.$t(`settings.skillSuite.gstack`),value:`gstack`},{label:e.$t(`settings.skillSuite.superpowersGstack`),value:`superpowers+gstack`},{label:e.$t(`settings.skillSuite.custom`),value:`custom`}],type:`radio`,color:`indigo-4`,dense:``,dark:``,inline:``},null,8,[`modelValue`,`options`]),S(`div`,Tt,_(e.$t(ls.value)),1),h(k,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:e.$t(`settings.skillSuite.reloadDefaults`),disable:K.value!==`custom`,class:`q-mt-sm`,onClick:Es},null,8,[`label`,`disable`])],512),[[p,T.value===`skills`]]),T.value===`skills`&&K.value===`custom`?(s(),f(`div`,Et,[S(`div`,Dt,_(e.$t(`settings.skillSuite.customPrompts`)),1),S(`div`,Ot,_(e.$t(`settings.skillSuite.reviewTemplate`)),1),h(j,{modelValue:us.value,"onUpdate:modelValue":n[2]||=e=>us.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,kt,_(e.$t(`settings.skillSuite.autoLoopReviewGate`)),1),h(j,{modelValue:ds.value,"onUpdate:modelValue":n[3]||=e=>ds.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,At,_(e.$t(`settings.skillSuite.autoLoopGroomingIntro`)),1),h(j,{modelValue:fs.value,"onUpdate:modelValue":n[4]||=e=>fs.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,jt,_(e.$t(`settings.skillSuite.qaTemplate`)),1),h(j,{modelValue:ps.value,"onUpdate:modelValue":n[5]||=e=>ps.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`]),S(`div`,Mt,_(e.$t(`settings.skillSuite.brainstormingInstruction`)),1),h(j,{modelValue:ms.value,"onUpdate:modelValue":n[6]||=e=>ms.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])])):v(``,!0),i(S(`div`,Nt,[S(`div`,Pt,_(e.$t(`settings.defaultModelClaude`)),1),h(z,{modelValue:ue.value,"onUpdate:modelValue":n[7]||=e=>ue.value=e,options:cc.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,Ft,_(e.$t(`settings.defaultModelCodex`)),1),h(z,{modelValue:de.value,"onUpdate:modelValue":n[8]||=e=>de.value=e,options:lc.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,It,_(e.$t(`settings.defaultPermissionModeClaude`)),1),S(`div`,Lt,_(e.$t(`settings.defaultPermissionModeHint`)),1),h(z,{modelValue:Ro.value,"onUpdate:modelValue":n[9]||=e=>Ro.value=e,options:fc.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),S(`div`,Rt,_(e.$t(`settings.defaultPermissionModeCodex`)),1),h(z,{modelValue:zo.value,"onUpdate:modelValue":n[10]||=e=>zo.value=e,options:pc.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])],512),[[p,T.value===`agents`]]),i(S(`div`,zt,[S(`div`,Bt,_(e.$t(`settings.activityFeed`)),1),h(M,{"model-value":b(c).showVerboseSystemMessages,label:e.$t(`settings.verboseMessages`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`,"onUpdate:modelValue":n[11]||=e=>b(c).toggleVerboseSystemMessages()},null,8,[`model-value`,`label`])],512),[[p,T.value===`general`]]),i(S(`div`,Vt,[S(`div`,Ht,_(e.$t(`settings.notifications`)),1),S(`div`,Ut,[h(M,{modelValue:Re.value,"onUpdate:modelValue":n[12]||=e=>Re.value=e,label:e.$t(`settings.browserNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),h(M,{modelValue:B.value,"onUpdate:modelValue":n[13]||=e=>B.value=e,label:e.$t(`settings.audioNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`])]),S(`div`,Wt,[h(z,{modelValue:Qe.value,"onUpdate:modelValue":n[14]||=e=>Qe.value=e,options:gc.value,label:e.$t(`settings.notificationSound`),disable:!B.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),h(k,{flat:``,dense:``,color:`indigo-4`,icon:`play_arrow`,label:e.$t(`settings.notificationSoundPreview`),disable:!B.value,onClick:yc},null,8,[`label`,`disable`])]),S(`div`,Gt,[S(`div`,Kt,_(e.$t(`settings.notificationVolume`)),1),h(it,{modelValue:V.value,"onUpdate:modelValue":n[15]||=e=>V.value=e,min:0,max:1,step:.05,disable:!B.value,dark:``,dense:``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`disable`]),S(`div`,qt,_(Math.round(V.value*100))+`% `,1)])],512),[[p,T.value===`notifications`]]),i(S(`div`,Jt,[S(`div`,Yt,[S(`div`,Xt,_(e.$t(`voice.sectionRuntime`)),1),h(L),h(k,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,color:`grey-5`,label:b(x)(`common.refresh`),onClick:n[16]||=e=>b(c).fetchVoiceRuntime()},null,8,[`label`])]),S(`div`,Zt,[S(`div`,Qt,[h(E,{name:b(c).voiceRuntime?.available?`check_circle`:`cancel`,color:b(c).voiceRuntime?.available?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),S(`span`,{class:m([`text-caption`,b(c).voiceRuntime?.available?`text-green-5`:`text-red-5`])},_(b(c).voiceRuntime?.available?b(x)(`voice.runtimeReady`,{command:b(c).voiceRuntime?.command??`whisper-cli`}):b(x)(`voice.runtimeMissing`,{command:b(c).voiceRuntime?.command??`whisper-cli`})),3)]),S(`div`,$t,[h(E,{name:b(c).voiceRuntime?.ffmpegAvailable?`check_circle`:`cancel`,color:b(c).voiceRuntime?.ffmpegAvailable?`green-5`:`red-5`,size:`xs`},null,8,[`name`,`color`]),S(`span`,{class:m([`text-caption`,b(c).voiceRuntime?.ffmpegAvailable?`text-green-5`:`text-red-5`])},_(b(c).voiceRuntime?.ffmpegAvailable?b(x)(`voice.ffmpegReady`):b(x)(`voice.ffmpegMissing`)),3)])]),h(Pe,{dense:``,dark:``,icon:`help_outline`,label:e.$t(`voice.installGuideTitle`),class:`variables-panel rounded-borders q-mt-sm`},{default:d(()=>[S(`div`,en,[S(`div`,tn,_(e.$t(`voice.installGuideIntro`)),1),S(`div`,nn,[S(`a`,rn,_(e.$t(`voice.installLink`)),1)]),S(`div`,an,_(e.$t(`voice.installGuideUbuntuTitle`)),1),n[96]||=S(`pre`,{class:`mono-guide q-mb-sm`},`sudo apt update
2
2
  sudo apt install -y cmake build-essential ffmpeg
3
3
  git clone https://github.com/ggml-org/whisper.cpp.git
4
4
  cd whisper.cpp